very-happy-cli 0.2.166 → 0.2.167
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-20VHOXwb.cjs → AcpBackend-D1IKJGz_.cjs} +3 -3
- package/dist/{AcpBackend-tRWk7yi7.mjs → AcpBackend-kFZlee5E.mjs} +3 -3
- package/dist/{BasePermissionHandler-COKc4pmt.cjs → BasePermissionHandler-DHxYAK5L.cjs} +1 -1
- package/dist/{BasePermissionHandler-CDCLIrZJ.mjs → BasePermissionHandler-DS0kRTNI.mjs} +1 -1
- package/dist/{BaseReasoningProcessor-BDVKvooR.mjs → BaseReasoningProcessor-BRtCCt7q.mjs} +1 -1
- package/dist/{BaseReasoningProcessor-DAGQdkNp.cjs → BaseReasoningProcessor-CsjVdt_H.cjs} +1 -1
- package/dist/{agentHome-2IbIjKCa.mjs → agentHome-Ct-VXFeG.mjs} +4 -4
- package/dist/{agentHome-KVWj6nCl.cjs → agentHome-DeAWzhSe.cjs} +4 -4
- package/dist/{api-DnNL5fLw.cjs → api-BZYLRDM9.cjs} +88 -10
- package/dist/{api-Cmz3XS4P.mjs → api-CReZazeT.mjs} +88 -10
- package/dist/{apiMachine-DeoQ8QbZ.cjs → apiMachine-BgMxGPsR.cjs} +50 -15
- package/dist/{apiMachine-B6ySCFe0.mjs → apiMachine-CWndf1Vn.mjs} +50 -15
- package/dist/{attachmentContent-DPWxHgX4.cjs → attachmentContent-HcJqFQW8.cjs} +2 -2
- package/dist/{attachmentContent-CTXapi-_.mjs → attachmentContent-j875mwU7.mjs} +2 -2
- package/dist/{attachmentLimits-BfgKV5iE.cjs → attachmentLimits-BEYEEBm8.cjs} +13 -1
- package/dist/{attachmentLimits-C1PCCM79.mjs → attachmentLimits-CxG3T18E.mjs} +13 -1
- package/dist/{auth-BMaBjRAj.mjs → auth-BIHuc7vY.mjs} +10 -10
- package/dist/{auth-pzWIFdOD.mjs → auth-CFS9Lfgv.mjs} +5 -5
- package/dist/{auth-D4-eQz85.cjs → auth-Myr2Q42x.cjs} +10 -10
- package/dist/{auth-ietHtvwu.cjs → auth-VzWpbo5P.cjs} +5 -5
- package/dist/{auto-DOWTQDPa.cjs → auto-Bf6Dr7_o.cjs} +14 -14
- package/dist/{auto-DL75Dx3I.mjs → auto-Df9-zmuN.mjs} +14 -14
- package/dist/{bootstrap-XE8A7Ut2.mjs → bootstrap-BSOxYpaP.mjs} +2 -2
- package/dist/{bootstrap-BpXIc2wn.cjs → bootstrap-Dj8WBiR2.cjs} +2 -2
- package/dist/{browser-DDFi1T8C.mjs → browser-BCFIHOvo.mjs} +1 -1
- package/dist/{browser-CcG8GLRV.cjs → browser-BoCV40yC.cjs} +1 -1
- package/dist/{claudeLocal-DXBXwIOG.cjs → claudeLocal-CGsq7Kul.cjs} +5 -5
- package/dist/{claudeLocal-DmM5Oyhv.mjs → claudeLocal-D5-eA9SC.mjs} +5 -5
- package/dist/{claudeLocalLauncher-Cs4eUC3P.mjs → claudeLocalLauncher-C9Cc438l.mjs} +10 -10
- package/dist/{claudeLocalLauncher-C41Y6Kp4.cjs → claudeLocalLauncher-Cf9QeYDT.cjs} +10 -10
- package/dist/{claudeSessionFork-Cs0I3eGI.cjs → claudeSessionFork-Byd8zD1U.cjs} +1 -1
- package/dist/{claudeSessionFork-BdLnc2Hv.mjs → claudeSessionFork-CMzAva8G.mjs} +1 -1
- package/dist/{client-JISJx2f-.cjs → client-BKnKRLSt.cjs} +3 -3
- package/dist/{client-GjTnsq6F.mjs → client-C7FYMer0.mjs} +2 -2
- package/dist/{client-DJ0kX_8M.cjs → client-D0T5-6Ds.cjs} +2 -2
- package/dist/{client-CbK33y_s.mjs → client-Dsfy_SAb.mjs} +3 -3
- package/dist/codex/happyMcpStdioBridge.cjs +14 -14
- package/dist/codex/happyMcpStdioBridge.mjs +14 -14
- package/dist/{codexAppServerClient-CldXEojt.mjs → codexAppServerClient-Dd_4TxHv.mjs} +4 -4
- package/dist/{codexAppServerClient-BTjn2ZCZ.cjs → codexAppServerClient-TiW9OBk4.cjs} +4 -4
- package/dist/{codexCommand-DjMU-Ijf.mjs → codexCommand-BZSr4MKI.mjs} +137 -56
- package/dist/{codexCommand-BpD0N1F7.cjs → codexCommand-Bxryqh90.cjs} +137 -56
- package/dist/{config-DjSJKatx.mjs → config-C_Pj7yxV.mjs} +3 -3
- package/dist/{config-DuLL0Ppe.cjs → config-DXPash-r.cjs} +3 -3
- package/dist/{configuration-B0cb3xA3.cjs → configuration-C3piBtxY.cjs} +1 -1
- package/dist/{configuration-D2v3puap.mjs → configuration-WspKd2C2.mjs} +2 -2
- package/dist/{connect-B7JWEzyg.cjs → connect-BN-IBElA.cjs} +13 -13
- package/dist/{connect-CnNNyM9I.mjs → connect-DGPZs5px.mjs} +13 -13
- package/dist/{context-DjfqLWzE.mjs → context-Cr6a3NTg.mjs} +1 -1
- package/dist/{context-BFUpYT39.cjs → context-Jrq4-eCZ.cjs} +1 -1
- package/dist/{controlClient-CmnHGcyl.cjs → controlClient-BI6Fw3fQ.cjs} +18 -3
- package/dist/{controlClient-BMUJfUeF.mjs → controlClient-DTheOlvC.mjs} +18 -4
- package/dist/{createSessionMetadata-DU0bCg2m.mjs → createSessionMetadata-BEZ4DIDA.mjs} +57 -5
- package/dist/{createSessionMetadata-DbfRBhRu.cjs → createSessionMetadata-zQSz3hgk.cjs} +56 -3
- package/dist/defaultPermissionMode-Cif_RHGb.mjs +191 -0
- package/dist/defaultPermissionMode-DNKNzk7l.cjs +197 -0
- package/dist/{deterministicJson-D-WPUrZb.mjs → deterministicJson-BMMifViN.mjs} +8 -8
- package/dist/{deterministicJson-Dp3TVyap.cjs → deterministicJson-C7O2ulKY.cjs} +8 -8
- package/dist/{doctor-CkJmdPbi.cjs → doctor-BykBaMTr.cjs} +6 -6
- package/dist/{doctor-BlXXyQ1L.mjs → doctor-D1KKyPzB.mjs} +6 -6
- package/dist/{downloadTarget-CiQqRIc-.cjs → downloadTarget-CWTb2-EM.cjs} +6 -6
- package/dist/{downloadTarget-DjSwMHun.mjs → downloadTarget-Cp48jrIP.mjs} +6 -6
- package/dist/{ensureDaemonRunning-CAQag1zE.mjs → ensureDaemonRunning-Ba5fYoxb.mjs} +5 -5
- package/dist/{ensureDaemonRunning-C_aIOhgG.cjs → ensureDaemonRunning-CCxX7MoP.cjs} +5 -5
- package/dist/{handleResumeCommand-Ci7wacT-.mjs → handleResumeCommand-BTUGlNjB.mjs} +5 -5
- package/dist/{handleResumeCommand-6KzBGDnl.cjs → handleResumeCommand-yPdDQHqz.cjs} +5 -5
- package/dist/{index-CaFCAlX8.cjs → index-BjhKqDa0.cjs} +3 -3
- package/dist/{index-HQsigW_J.mjs → index-C3_83bqS.mjs} +3 -3
- package/dist/{index-WGCT6SSV.mjs → index-CE2GgPbr.mjs} +34 -34
- package/dist/{index-DQplgo0W.mjs → index-D8m8Ripb.mjs} +4 -4
- package/dist/{index-DBmNwMX9.cjs → index-DifM62wX.cjs} +33 -33
- package/dist/{index-DEKIgZUo.cjs → index-PNMQPKhz.cjs} +4 -4
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{install-oJUvsFu9.mjs → install-C0-QFn9s.mjs} +3 -3
- package/dist/{install-CejEiRGW.cjs → install-CqZVeze8.cjs} +3 -3
- package/dist/lib.cjs +11 -11
- package/dist/lib.d.cts +61 -0
- package/dist/lib.d.mts +61 -0
- package/dist/lib.mjs +11 -11
- package/dist/{lidState-BfximpjX.mjs → lidState-B2ZxdREe.mjs} +1 -1
- package/dist/{lidState-D8BmnJV1.cjs → lidState-Bc2K9H9l.cjs} +1 -1
- package/dist/{localHappyAgentAuth-Ct1aXwqd.mjs → localHappyAgentAuth-B5XPEMwk.mjs} +1 -1
- package/dist/{localHappyAgentAuth-d7B6S_o7.cjs → localHappyAgentAuth-T5GOvRha.cjs} +1 -1
- package/dist/{logger-JTcJU-uL.cjs → logger-B_MWPbZz.cjs} +2 -2
- package/dist/{logger-BpQcwNnt.mjs → logger-CbBv3q_b.mjs} +2 -2
- package/dist/{machineMetadata-BBg_Njw3.cjs → machineMetadata-BafS4JY8.cjs} +4 -3
- package/dist/{machineMetadata-CBdxABeI.mjs → machineMetadata-DHg238U4.mjs} +4 -3
- package/dist/{main-C16fOGgn.cjs → main-DNrA0qBy.cjs} +45 -45
- package/dist/{main-B5b1gA3K.mjs → main-DXAK0n7x.mjs} +45 -45
- package/dist/{manager-BQ4flvQZ.mjs → manager-BEsI4qt3.mjs} +9 -3
- package/dist/{manager-Cly8xVIR.cjs → manager-HrEj442o.cjs} +8 -2
- package/dist/{mcp-BnNiBBax.cjs → mcp-AvPOhDXy.cjs} +14 -14
- package/dist/{mcp-DGNWgVdv.mjs → mcp-BotAjCdD.mjs} +14 -14
- package/dist/mirrorProtocol-BdcN6QlN.cjs +1270 -0
- package/dist/mirrorProtocol-BwHm8odn.mjs +1247 -0
- package/dist/{package-C1XvUQFy.cjs → package-C9ZP9bpX.cjs} +7 -7
- package/dist/{package-BqwrPxL0.mjs → package-DU1DxhH9.mjs} +7 -7
- package/dist/{peerTools-DPvbcs8V.cjs → peerTools-Dkbu7gag.cjs} +4 -4
- package/dist/{peerTools-CeCe-3lk.mjs → peerTools-os2DVjA0.mjs} +4 -4
- package/dist/{persistence-2Xp_o6x6.cjs → persistence-BYGl0QYw.cjs} +147 -25
- package/dist/{persistence-B9LmhAE2.mjs → persistence-ON0zpHfb.mjs} +123 -12
- package/dist/{piRunnerArgs-7FaTyNOq.mjs → piRunnerArgs-CYsnT9sV.mjs} +1 -1
- package/dist/{piRunnerArgs-DI29dDNo.cjs → piRunnerArgs-DpbvstUX.cjs} +1 -1
- package/dist/{piRuntime-R8XVChxK.cjs → piRuntime-CDnILlCd.cjs} +1 -1
- package/dist/{piRuntime-0qEK5AqE.mjs → piRuntime-CmEid-wu.mjs} +1 -1
- package/dist/{piTerminal-zcQKc8Sp.mjs → piTerminal-0eNlXSlL.mjs} +16 -16
- package/dist/{piTerminal-Ccj0KNPr.cjs → piTerminal-B57TgMON.cjs} +16 -16
- package/dist/{rateLimitWindows-C2Jk3Ih7.cjs → rateLimitWindows-CusGIqlq.cjs} +1 -1
- package/dist/{rateLimitWindows-Dhfhbtqu.mjs → rateLimitWindows-vZ9Bo7aT.mjs} +1 -1
- package/dist/{registerCommonHandlers-DdfGsFbM.mjs → registerCommonHandlers-B0PVff2U.mjs} +2 -2
- package/dist/{registerCommonHandlers-Aha_KfM3.cjs → registerCommonHandlers-DVYB3iVn.cjs} +2 -2
- package/dist/{registerKillSessionHandler-DboQlGcH.mjs → registerKillSessionHandler-BJMHJHXe.mjs} +14 -9
- package/dist/{registerKillSessionHandler-CjitOpUA.cjs → registerKillSessionHandler-BwXGKtg_.cjs} +14 -9
- package/dist/{remoteSessionClient-B2DtWuNP.mjs → remoteSessionClient-BzPXSC21.mjs} +5 -5
- package/dist/{remoteSessionClient-BwI8rpQw.cjs → remoteSessionClient-PyUAIhwK.cjs} +5 -5
- package/dist/{reportProgressTool-DnAD8wOa.mjs → reportProgressTool-BvB13EwC.mjs} +1 -1
- package/dist/{reportProgressTool-B-Rcy0s3.cjs → reportProgressTool-D4KB_4cP.cjs} +1 -1
- package/dist/{run-Bh66Xs40.cjs → run-BC8jzq_h.cjs} +323 -37
- package/dist/{run-DPEwJpQR.mjs → run-O2M8LsWf.mjs} +322 -36
- package/dist/{runClaude-C-lJdAKD.cjs → runClaude-C7jPa8VP.cjs} +87 -25
- package/dist/{runClaude-DLr_nBzw.mjs → runClaude-DGkr5E7s.mjs} +87 -25
- package/dist/{runClaudeDeps-vWWLod7J.cjs → runClaudeDeps-5kzncqME.cjs} +100 -31
- package/dist/{runClaudeDeps-C7JV7nXG.mjs → runClaudeDeps-CX_TxS78.mjs} +105 -36
- package/dist/{runGemini-o-CUSayc.cjs → runGemini-BfYA4Uqc.cjs} +32 -32
- package/dist/{runGemini-tH6sLw-G.mjs → runGemini-CwmGBH3L.mjs} +32 -32
- package/dist/{runOpenClaw-C5DZvVhn.mjs → runOpenClaw-BYAPYFyL.mjs} +16 -16
- package/dist/{runOpenClaw-D24f35l0.cjs → runOpenClaw-C72jut7v.cjs} +16 -16
- package/dist/{sandbox-TJZJ6ngw.cjs → sandbox-Bqkp8IT7.cjs} +4 -4
- package/dist/{sandbox-BaL1aslA.mjs → sandbox-DlVnK1Vi.mjs} +4 -4
- package/dist/{selfCheck-Dugi0Nk_.cjs → selfCheck-B4lLZplk.cjs} +34 -34
- package/dist/selfCheck-DYTGBdIO.mjs +84 -0
- package/dist/{send-DDcJ3ayi.mjs → send-B5bWW9Tl.mjs} +8 -8
- package/dist/{send-CkWOSYmU.cjs → send-BCwS6n_s.cjs} +8 -8
- package/dist/{server-CUjRvQSd.mjs → server-CEJfRQfj.mjs} +4 -4
- package/dist/{server-7qFQ8J2u.cjs → server-CFWZehnC.cjs} +6 -6
- package/dist/{sessionLock-DqVyHFAQ.mjs → sessionLock-AwOYsKT7.mjs} +12 -4
- package/dist/{sessionLock-DfhNICyS.cjs → sessionLock-LBWNjpHf.cjs} +12 -3
- package/dist/{sessionModeFile-CIznKD7O.cjs → sessionModeFile-CyPuZRIU.cjs} +1 -1
- package/dist/{sessionModeFile-M4OpiyrF.mjs → sessionModeFile-fvFn1JVG.mjs} +1 -1
- package/dist/{sessionOps-BnaEaOKs.mjs → sessionOps-DZRH4-hV.mjs} +4 -4
- package/dist/{sessionOps-DOyy4gkY.cjs → sessionOps-DzbZI3Eq.cjs} +4 -4
- package/dist/{sessionScanner-CcuOn9uU.mjs → sessionScanner-Q_Ei2flB.mjs} +3 -3
- package/dist/{sessionScanner-Cu1yKlj4.cjs → sessionScanner-i-cgwFVw.cjs} +3 -3
- package/dist/{sessions-C9O91rL1.mjs → sessions-DAmjMAZN.mjs} +9 -9
- package/dist/{sessions-BQgk5Kw8.cjs → sessions-DYK5hD4T.cjs} +9 -9
- package/dist/{setupOfflineReconnection-Byy8aeKT.mjs → setupOfflineReconnection-BfDBxNdo.mjs} +2 -2
- package/dist/{setupOfflineReconnection-DFmQ8s6I.cjs → setupOfflineReconnection-C2LO3hSP.cjs} +2 -2
- package/dist/{spawn-EZ2yrtWd.mjs → spawn-BmjG5j5Y.mjs} +13 -13
- package/dist/{spawn-BS7LPmSm.cjs → spawn-GK_sXE8h.cjs} +13 -13
- package/dist/{spawnHappyCLI-BAa49m0q.mjs → spawnHappyCLI-B2h0P4b5.mjs} +1 -1
- package/dist/{spawnHappyCLI-DyaldIe5.cjs → spawnHappyCLI-J4iEhfyZ.cjs} +1 -1
- package/dist/{specialCommands-CCWtwIGZ.mjs → specialCommands-DisVxagO.mjs} +3 -3
- package/dist/{specialCommands-DouFaJ_0.cjs → specialCommands-DmJMKspE.cjs} +3 -3
- package/dist/{startFileWatcher-Dfs4whzr.mjs → startFileWatcher-CeK1k5gt.mjs} +1 -1
- package/dist/{startFileWatcher-DQbbypJv.cjs → startFileWatcher-xKo8AoYl.cjs} +1 -1
- package/dist/{sync-x_lI_3j_.cjs → sync-Bvc-vh6C.cjs} +1 -1
- package/dist/{sync-BLpH13Kb.mjs → sync-CCwYpJMS.mjs} +1 -1
- package/dist/{systemPrompt-BanyDihy.mjs → systemPrompt-BNIkP3tR.mjs} +1 -1
- package/dist/{systemPrompt-4erwILTB.cjs → systemPrompt-DwOddbuG.cjs} +1 -1
- package/dist/{teams-D6BOT3lR.mjs → teams-DRrLBcys.mjs} +6 -6
- package/dist/{teams-DzetlGWC.cjs → teams-GHMCRZOw.cjs} +6 -6
- package/dist/{time-T0YmeOhS.cjs → time-BXvtjhe9.cjs} +1 -1
- package/dist/{time-CfDKj6Bx.mjs → time-PG5Dfwdv.mjs} +1 -1
- package/dist/{titleGenerator-CoMxqKfP.cjs → titleGenerator-B07bZA0V.cjs} +2 -2
- package/dist/{titleGenerator-ChImQ4q-.mjs → titleGenerator-CIzfpfZW.mjs} +1 -1
- package/dist/{todo-CZZebKZg.cjs → todo-B0aeoNu3.cjs} +5 -5
- package/dist/{todo-SVtYxGON.mjs → todo-CfL7SBFc.mjs} +5 -5
- package/dist/{tools-3X2z3YDe.mjs → tools-D91mq5Ib.mjs} +1 -1
- package/dist/{tools-IJ0TAcJs.cjs → tools-DJIANHSh.cjs} +1 -1
- package/dist/{uninstall-CypD-kr1.mjs → uninstall-5xz3Xvhf.mjs} +3 -3
- package/dist/{uninstall-CqqCWj7w.cjs → uninstall-AtzOfdrj.cjs} +3 -3
- package/package.json +7 -7
- package/dist/defaultPermissionMode-BnxJPVHT.mjs +0 -4
- package/dist/defaultPermissionMode-CxmTXUQR.cjs +0 -7
- package/dist/mirrorProtocol-BEGk2--0.cjs +0 -266
- package/dist/mirrorProtocol-h5WHpdhh.mjs +0 -248
- package/dist/selfCheck-DPi4lqme.mjs +0 -84
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
var node_child_process = require('node:child_process');
|
|
4
4
|
var sdk = require('@agentclientprotocol/sdk');
|
|
5
5
|
var node_crypto = require('node:crypto');
|
|
6
|
-
var logger = require('./logger-
|
|
7
|
-
var time = require('./time-
|
|
6
|
+
var logger = require('./logger-B_MWPbZz.cjs');
|
|
7
|
+
var time = require('./time-BXvtjhe9.cjs');
|
|
8
8
|
var contentLogMetadata = require('./contentLogMetadata-ZSFk_NjQ.cjs');
|
|
9
|
-
var _package = require('./package-
|
|
9
|
+
var _package = require('./package-C9ZP9bpX.cjs');
|
|
10
10
|
|
|
11
11
|
function acpImageBlocks(attachments, supportsImages) {
|
|
12
12
|
return attachments.filter((file) => ["image/jpeg", "image/png", "image/gif", "image/webp"].includes(file.mimeType)).map((file) => {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { spawn } from 'node:child_process';
|
|
2
2
|
import { ndJsonStream, ClientSideConnection } from '@agentclientprotocol/sdk';
|
|
3
3
|
import { randomUUID } from 'node:crypto';
|
|
4
|
-
import { l as logger } from './logger-
|
|
5
|
-
import { d as delay } from './time-
|
|
4
|
+
import { l as logger } from './logger-CbBv3q_b.mjs';
|
|
5
|
+
import { d as delay } from './time-PG5Dfwdv.mjs';
|
|
6
6
|
import { c as contentLogMetadata, e as errorLogMetadata } from './contentLogMetadata-BlWI0egu.mjs';
|
|
7
|
-
import { p as packageJson } from './package-
|
|
7
|
+
import { p as packageJson } from './package-DU1DxhH9.mjs';
|
|
8
8
|
|
|
9
9
|
function acpImageBlocks(attachments, supportsImages) {
|
|
10
10
|
return attachments.filter((file) => ["image/jpeg", "image/png", "image/gif", "image/webp"].includes(file.mimeType)).map((file) => {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import { homedir } from 'node:os';
|
|
3
|
-
import { readSettings, updateSettings } from './persistence-
|
|
3
|
+
import { r as readSettings, u as updateSettings } from './persistence-ON0zpHfb.mjs';
|
|
4
4
|
import 'node:fs';
|
|
5
|
-
import './logger-
|
|
5
|
+
import './logger-CbBv3q_b.mjs';
|
|
6
6
|
import { d as describeAgentHome, p as probeLoginShellEnv, r as resolveAgentHomes, e as expandHomePath, A as AGENT_HOME_ENV_NAMES } from './loginShellEnv-Dw8M7tkI.mjs';
|
|
7
7
|
import 'node:fs/promises';
|
|
8
|
-
import './configuration-
|
|
8
|
+
import './configuration-WspKd2C2.mjs';
|
|
9
9
|
import 'node:path';
|
|
10
|
-
import './package-
|
|
10
|
+
import './package-DU1DxhH9.mjs';
|
|
11
11
|
import 'zod';
|
|
12
12
|
import './authRelay-DSAvg1uv.mjs';
|
|
13
13
|
import 'node:crypto';
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
var chalk = require('chalk');
|
|
4
4
|
var os = require('node:os');
|
|
5
|
-
var persistence = require('./persistence-
|
|
5
|
+
var persistence = require('./persistence-BYGl0QYw.cjs');
|
|
6
6
|
require('node:fs');
|
|
7
|
-
require('./logger-
|
|
7
|
+
require('./logger-B_MWPbZz.cjs');
|
|
8
8
|
var loginShellEnv = require('./loginShellEnv-BkuYtExZ.cjs');
|
|
9
9
|
require('node:fs/promises');
|
|
10
|
-
require('./configuration-
|
|
10
|
+
require('./configuration-C3piBtxY.cjs');
|
|
11
11
|
require('node:path');
|
|
12
|
-
require('./package-
|
|
12
|
+
require('./package-C9ZP9bpX.cjs');
|
|
13
13
|
require('zod');
|
|
14
14
|
require('./authRelay-BdYkC1Po.cjs');
|
|
15
15
|
require('node:crypto');
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var axios = require('axios');
|
|
4
|
-
var logger = require('./logger-
|
|
5
|
-
var lidState = require('./lidState-
|
|
4
|
+
var logger = require('./logger-B_MWPbZz.cjs');
|
|
5
|
+
var lidState = require('./lidState-Bc2K9H9l.cjs');
|
|
6
6
|
var node_events = require('node:events');
|
|
7
7
|
var socket_ioClient = require('socket.io-client');
|
|
8
|
-
var attachmentLimits = require('./attachmentLimits-
|
|
8
|
+
var attachmentLimits = require('./attachmentLimits-BEYEEBm8.cjs');
|
|
9
9
|
var authRelay = require('./authRelay-BdYkC1Po.cjs');
|
|
10
10
|
var limits = require('./limits-C-a7gr04.cjs');
|
|
11
|
-
var time = require('./time-
|
|
12
|
-
var configuration = require('./configuration-
|
|
11
|
+
var time = require('./time-BXvtjhe9.cjs');
|
|
12
|
+
var configuration = require('./configuration-C3piBtxY.cjs');
|
|
13
13
|
var node_crypto = require('node:crypto');
|
|
14
14
|
var index = require('./index-C9hI8a10.cjs');
|
|
15
|
-
var registerCommonHandlers = require('./registerCommonHandlers-
|
|
15
|
+
var registerCommonHandlers = require('./registerCommonHandlers-DVYB3iVn.cjs');
|
|
16
16
|
var cuid2 = require('@paralleldrive/cuid2');
|
|
17
|
-
var sync = require('./sync-
|
|
17
|
+
var sync = require('./sync-Bvc-vh6C.cjs');
|
|
18
18
|
var backgroundTaskActivity = require('./backgroundTaskActivity-CBvUdj39.cjs');
|
|
19
|
-
var controlClient = require('./controlClient-
|
|
19
|
+
var controlClient = require('./controlClient-BI6Fw3fQ.cjs');
|
|
20
20
|
var contentLogMetadata = require('./contentLogMetadata-ZSFk_NjQ.cjs');
|
|
21
21
|
var chalk = require('chalk');
|
|
22
22
|
|
|
@@ -1590,6 +1590,14 @@ class ApiSessionClient extends node_events.EventEmitter {
|
|
|
1590
1590
|
}
|
|
1591
1591
|
}
|
|
1592
1592
|
routeIncomingMessage(message, sourceLocalId) {
|
|
1593
|
+
if (this.inboundFrozen) {
|
|
1594
|
+
logger.logger.debug(`[API] Hibernating: holding inbound ${sourceLocalId ?? "(no localId)"}`);
|
|
1595
|
+
this.frozenInbound.push({ message, sourceLocalId });
|
|
1596
|
+
this.inboundRoutedDuringCommit = true;
|
|
1597
|
+
return;
|
|
1598
|
+
}
|
|
1599
|
+
this.inboundRoutedDuringCommit = true;
|
|
1600
|
+
this.noteActivity();
|
|
1593
1601
|
if (sourceLocalId) this.promptQueueDrain?.onInbound(sourceLocalId);
|
|
1594
1602
|
const messageWithSource = sourceLocalId && typeof message === "object" && message !== null ? { ...message, localKey: message.localKey ?? sourceLocalId } : message;
|
|
1595
1603
|
const userResult = attachmentLimits.UserMessageSchema.safeParse(messageWithSource);
|
|
@@ -1835,6 +1843,7 @@ class ApiSessionClient extends node_events.EventEmitter {
|
|
|
1835
1843
|
}
|
|
1836
1844
|
}
|
|
1837
1845
|
enqueueMessage(content, invalidate = true, localId) {
|
|
1846
|
+
this.noteActivity();
|
|
1838
1847
|
const encrypted = authRelay.encodeBase64(authRelay.encrypt(this.encryptionKey, this.encryptionVariant, content));
|
|
1839
1848
|
this.pendingOutbox.push({
|
|
1840
1849
|
content: encrypted,
|
|
@@ -2011,6 +2020,52 @@ class ApiSessionClient extends node_events.EventEmitter {
|
|
|
2011
2020
|
};
|
|
2012
2021
|
this.enqueueMessage(content);
|
|
2013
2022
|
}
|
|
2023
|
+
// ── B-587 hibernation support ──────────────────────────────────────────
|
|
2024
|
+
/** Last user/agent activity this wrapper saw (spec §2.1). */
|
|
2025
|
+
lastActivity = Date.now();
|
|
2026
|
+
inboundFrozen = false;
|
|
2027
|
+
frozenInbound = [];
|
|
2028
|
+
heartbeatsMuted = false;
|
|
2029
|
+
lastHeartbeat = 0;
|
|
2030
|
+
get lastHeartbeatAt() {
|
|
2031
|
+
return this.lastHeartbeat;
|
|
2032
|
+
}
|
|
2033
|
+
muteHeartbeats() {
|
|
2034
|
+
this.heartbeatsMuted = true;
|
|
2035
|
+
}
|
|
2036
|
+
unmuteHeartbeats() {
|
|
2037
|
+
this.heartbeatsMuted = false;
|
|
2038
|
+
}
|
|
2039
|
+
inboundRoutedDuringCommit = false;
|
|
2040
|
+
noteActivity(now = Date.now()) {
|
|
2041
|
+
if (now > this.lastActivity) this.lastActivity = now;
|
|
2042
|
+
}
|
|
2043
|
+
get lastActivityAt() {
|
|
2044
|
+
return this.lastActivity;
|
|
2045
|
+
}
|
|
2046
|
+
/** The message cursor (highest seq this wrapper has seen). */
|
|
2047
|
+
get messageCursor() {
|
|
2048
|
+
return this.lastSeq;
|
|
2049
|
+
}
|
|
2050
|
+
/** Start watching for inbound routed during the hibernation commit window. */
|
|
2051
|
+
beginHibernationCommit() {
|
|
2052
|
+
this.inboundRoutedDuringCommit = false;
|
|
2053
|
+
}
|
|
2054
|
+
/** Was any inbound message routed since beginHibernationCommit()? */
|
|
2055
|
+
inboundRoutedSinceCommit() {
|
|
2056
|
+
return this.inboundRoutedDuringCommit;
|
|
2057
|
+
}
|
|
2058
|
+
/** Stop routing inbound messages; the next wrapper replays them (spec §3/§4). */
|
|
2059
|
+
freezeInbound() {
|
|
2060
|
+
this.inboundFrozen = true;
|
|
2061
|
+
}
|
|
2062
|
+
/** An aborted hibernation: route whatever arrived while frozen, in order. */
|
|
2063
|
+
unfreezeInbound() {
|
|
2064
|
+
this.inboundFrozen = false;
|
|
2065
|
+
const held = this.frozenInbound;
|
|
2066
|
+
this.frozenInbound = [];
|
|
2067
|
+
for (const item of held) this.routeIncomingMessage(item.message, item.sourceLocalId);
|
|
2068
|
+
}
|
|
2014
2069
|
/**
|
|
2015
2070
|
* Send a ping message to keep the connection alive
|
|
2016
2071
|
*/
|
|
@@ -2029,11 +2084,14 @@ class ApiSessionClient extends node_events.EventEmitter {
|
|
|
2029
2084
|
}));
|
|
2030
2085
|
});
|
|
2031
2086
|
keepAlive(thinking, mode, backgroundTasks) {
|
|
2087
|
+
if (this.heartbeatsMuted) return;
|
|
2088
|
+
this.lastHeartbeat = Date.now();
|
|
2032
2089
|
if (process.env.DEBUG) {
|
|
2033
2090
|
logger.logger.debug(`[API] Sending keep alive message: ${thinking}`);
|
|
2034
2091
|
}
|
|
2035
2092
|
this.turnReporter.observe(thinking);
|
|
2036
2093
|
if (backgroundTasks) this.backgroundTaskReporter.observe(backgroundTasks);
|
|
2094
|
+
if (thinking || (backgroundTasks?.length ?? 0) > 0) this.noteActivity();
|
|
2037
2095
|
this.socket.volatile.emit("session-alive", {
|
|
2038
2096
|
sid: this.sessionId,
|
|
2039
2097
|
time: Date.now(),
|
|
@@ -2226,7 +2284,26 @@ class ApiSessionClient extends node_events.EventEmitter {
|
|
|
2226
2284
|
});
|
|
2227
2285
|
}
|
|
2228
2286
|
updateMetadata(handler) {
|
|
2229
|
-
this.
|
|
2287
|
+
void this.writeMetadata(handler);
|
|
2288
|
+
}
|
|
2289
|
+
/**
|
|
2290
|
+
* B-587: the same write, awaitable with a ceiling — the hibernation stamp
|
|
2291
|
+
* must land before `session-end`. Resolves false on timeout (the write
|
|
2292
|
+
* itself keeps retrying in the background, exactly like updateMetadata).
|
|
2293
|
+
*/
|
|
2294
|
+
async updateMetadataAndWait(handler, timeoutMs = 1e4) {
|
|
2295
|
+
let timer;
|
|
2296
|
+
const timeout = new Promise((resolve) => {
|
|
2297
|
+
timer = setTimeout(() => resolve(false), timeoutMs);
|
|
2298
|
+
});
|
|
2299
|
+
try {
|
|
2300
|
+
return await Promise.race([this.writeMetadata(handler).then(() => true), timeout]);
|
|
2301
|
+
} finally {
|
|
2302
|
+
if (timer) clearTimeout(timer);
|
|
2303
|
+
}
|
|
2304
|
+
}
|
|
2305
|
+
writeMetadata(handler) {
|
|
2306
|
+
return this.metadataLock.inLock(async () => {
|
|
2230
2307
|
let rateRefusals = 0;
|
|
2231
2308
|
await time.backoff(async () => {
|
|
2232
2309
|
let updated = handler(this.metadata);
|
|
@@ -2272,6 +2349,7 @@ class ApiSessionClient extends node_events.EventEmitter {
|
|
|
2272
2349
|
this.agentState = answer.agentState ? authRelay.decrypt(this.encryptionKey, this.encryptionVariant, authRelay.decodeBase64(answer.agentState)) : null;
|
|
2273
2350
|
this.agentStateVersion = answer.version;
|
|
2274
2351
|
rateRefusals = 0;
|
|
2352
|
+
if (Object.keys(this.agentState?.requests ?? {}).length > 0) this.noteActivity();
|
|
2275
2353
|
logger.logger.debug("Agent state updated", this.agentState);
|
|
2276
2354
|
} else if (answer.result === "version-mismatch") {
|
|
2277
2355
|
if (answer.version > this.agentStateVersion) {
|
|
@@ -3088,7 +3166,7 @@ class ApiClient {
|
|
|
3088
3166
|
return new ApiSessionClient(this.credential.token, session, opts);
|
|
3089
3167
|
}
|
|
3090
3168
|
async machineSyncClient(machine) {
|
|
3091
|
-
const { ApiMachineClient } = await Promise.resolve().then(function () { return require('./apiMachine-
|
|
3169
|
+
const { ApiMachineClient } = await Promise.resolve().then(function () { return require('./apiMachine-BgMxGPsR.cjs'); });
|
|
3092
3170
|
return new ApiMachineClient(this.credential.token, machine);
|
|
3093
3171
|
}
|
|
3094
3172
|
push() {
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
|
-
import { l as logger, r as redactLogValue } from './logger-
|
|
3
|
-
import { R as RpcHandlerManager, a as answerSocketRequest, c as connectGuarded, s as socketConnectGuard, d as describeSocketAckDrop, b as safeAck, i as isRateQuotaCode, p as pauseForRateQuota, e as shouldReconnect } from './lidState-
|
|
2
|
+
import { l as logger, r as redactLogValue } from './logger-CbBv3q_b.mjs';
|
|
3
|
+
import { R as RpcHandlerManager, a as answerSocketRequest, c as connectGuarded, s as socketConnectGuard, d as describeSocketAckDrop, b as safeAck, i as isRateQuotaCode, p as pauseForRateQuota, e as shouldReconnect } from './lidState-B2ZxdREe.mjs';
|
|
4
4
|
import { EventEmitter } from 'node:events';
|
|
5
5
|
import { io } from 'socket.io-client';
|
|
6
|
-
import { A as AsyncLock, a as MAX_CHAT_ATTACHMENT_ENCRYPTED_BYTES, U as UserMessageSchema, F as FileEventMessageSchema } from './attachmentLimits-
|
|
6
|
+
import { A as AsyncLock, a as MAX_CHAT_ATTACHMENT_ENCRYPTED_BYTES, U as UserMessageSchema, F as FileEventMessageSchema } from './attachmentLimits-CxG3T18E.mjs';
|
|
7
7
|
import { h as decrypt, d as decodeBase64, i as decryptBlob, e as encodeBase64, g as encrypt, l as libsodiumEncryptForPublicKey, j as libsodiumPublicKeyFromSecretKey, k as getRandomBytes } from './authRelay-DSAvg1uv.mjs';
|
|
8
8
|
import { p as prepareClipboardText, d as prepareClipboardHistoryText } from './limits-DIo7rEBR.mjs';
|
|
9
|
-
import { b as backoff, d as delay, e as exponentialBackoffDelay } from './time-
|
|
10
|
-
import { c as configuration } from './configuration-
|
|
9
|
+
import { b as backoff, d as delay, e as exponentialBackoffDelay } from './time-PG5Dfwdv.mjs';
|
|
10
|
+
import { c as configuration } from './configuration-WspKd2C2.mjs';
|
|
11
11
|
import { createHmac, randomUUID } from 'node:crypto';
|
|
12
12
|
import { c as createEnvelope, s as streamKeyOf, R as ReleaseDrainNoticeSchema, q as RelayAssignmentResponseSchema } from './index-B0HEEYGh.mjs';
|
|
13
|
-
import { r as registerCommonHandlers } from './registerCommonHandlers-
|
|
13
|
+
import { r as registerCommonHandlers } from './registerCommonHandlers-B0PVff2U.mjs';
|
|
14
14
|
import { createId } from '@paralleldrive/cuid2';
|
|
15
|
-
import { I as InvalidateSync } from './sync-
|
|
15
|
+
import { I as InvalidateSync } from './sync-CCwYpJMS.mjs';
|
|
16
16
|
import { B as BackgroundTaskReporter } from './backgroundTaskActivity-8PdPxrvy.mjs';
|
|
17
|
-
import {
|
|
17
|
+
import { k as notifyDaemonTurnEvent, m as notifyDaemonBackgroundTasks } from './controlClient-DTheOlvC.mjs';
|
|
18
18
|
import { c as contentLogMetadata } from './contentLogMetadata-BlWI0egu.mjs';
|
|
19
19
|
import chalk from 'chalk';
|
|
20
20
|
|
|
@@ -1588,6 +1588,14 @@ class ApiSessionClient extends EventEmitter {
|
|
|
1588
1588
|
}
|
|
1589
1589
|
}
|
|
1590
1590
|
routeIncomingMessage(message, sourceLocalId) {
|
|
1591
|
+
if (this.inboundFrozen) {
|
|
1592
|
+
logger.debug(`[API] Hibernating: holding inbound ${sourceLocalId ?? "(no localId)"}`);
|
|
1593
|
+
this.frozenInbound.push({ message, sourceLocalId });
|
|
1594
|
+
this.inboundRoutedDuringCommit = true;
|
|
1595
|
+
return;
|
|
1596
|
+
}
|
|
1597
|
+
this.inboundRoutedDuringCommit = true;
|
|
1598
|
+
this.noteActivity();
|
|
1591
1599
|
if (sourceLocalId) this.promptQueueDrain?.onInbound(sourceLocalId);
|
|
1592
1600
|
const messageWithSource = sourceLocalId && typeof message === "object" && message !== null ? { ...message, localKey: message.localKey ?? sourceLocalId } : message;
|
|
1593
1601
|
const userResult = UserMessageSchema.safeParse(messageWithSource);
|
|
@@ -1833,6 +1841,7 @@ class ApiSessionClient extends EventEmitter {
|
|
|
1833
1841
|
}
|
|
1834
1842
|
}
|
|
1835
1843
|
enqueueMessage(content, invalidate = true, localId) {
|
|
1844
|
+
this.noteActivity();
|
|
1836
1845
|
const encrypted = encodeBase64(encrypt(this.encryptionKey, this.encryptionVariant, content));
|
|
1837
1846
|
this.pendingOutbox.push({
|
|
1838
1847
|
content: encrypted,
|
|
@@ -2009,6 +2018,52 @@ class ApiSessionClient extends EventEmitter {
|
|
|
2009
2018
|
};
|
|
2010
2019
|
this.enqueueMessage(content);
|
|
2011
2020
|
}
|
|
2021
|
+
// ── B-587 hibernation support ──────────────────────────────────────────
|
|
2022
|
+
/** Last user/agent activity this wrapper saw (spec §2.1). */
|
|
2023
|
+
lastActivity = Date.now();
|
|
2024
|
+
inboundFrozen = false;
|
|
2025
|
+
frozenInbound = [];
|
|
2026
|
+
heartbeatsMuted = false;
|
|
2027
|
+
lastHeartbeat = 0;
|
|
2028
|
+
get lastHeartbeatAt() {
|
|
2029
|
+
return this.lastHeartbeat;
|
|
2030
|
+
}
|
|
2031
|
+
muteHeartbeats() {
|
|
2032
|
+
this.heartbeatsMuted = true;
|
|
2033
|
+
}
|
|
2034
|
+
unmuteHeartbeats() {
|
|
2035
|
+
this.heartbeatsMuted = false;
|
|
2036
|
+
}
|
|
2037
|
+
inboundRoutedDuringCommit = false;
|
|
2038
|
+
noteActivity(now = Date.now()) {
|
|
2039
|
+
if (now > this.lastActivity) this.lastActivity = now;
|
|
2040
|
+
}
|
|
2041
|
+
get lastActivityAt() {
|
|
2042
|
+
return this.lastActivity;
|
|
2043
|
+
}
|
|
2044
|
+
/** The message cursor (highest seq this wrapper has seen). */
|
|
2045
|
+
get messageCursor() {
|
|
2046
|
+
return this.lastSeq;
|
|
2047
|
+
}
|
|
2048
|
+
/** Start watching for inbound routed during the hibernation commit window. */
|
|
2049
|
+
beginHibernationCommit() {
|
|
2050
|
+
this.inboundRoutedDuringCommit = false;
|
|
2051
|
+
}
|
|
2052
|
+
/** Was any inbound message routed since beginHibernationCommit()? */
|
|
2053
|
+
inboundRoutedSinceCommit() {
|
|
2054
|
+
return this.inboundRoutedDuringCommit;
|
|
2055
|
+
}
|
|
2056
|
+
/** Stop routing inbound messages; the next wrapper replays them (spec §3/§4). */
|
|
2057
|
+
freezeInbound() {
|
|
2058
|
+
this.inboundFrozen = true;
|
|
2059
|
+
}
|
|
2060
|
+
/** An aborted hibernation: route whatever arrived while frozen, in order. */
|
|
2061
|
+
unfreezeInbound() {
|
|
2062
|
+
this.inboundFrozen = false;
|
|
2063
|
+
const held = this.frozenInbound;
|
|
2064
|
+
this.frozenInbound = [];
|
|
2065
|
+
for (const item of held) this.routeIncomingMessage(item.message, item.sourceLocalId);
|
|
2066
|
+
}
|
|
2012
2067
|
/**
|
|
2013
2068
|
* Send a ping message to keep the connection alive
|
|
2014
2069
|
*/
|
|
@@ -2027,11 +2082,14 @@ class ApiSessionClient extends EventEmitter {
|
|
|
2027
2082
|
}));
|
|
2028
2083
|
});
|
|
2029
2084
|
keepAlive(thinking, mode, backgroundTasks) {
|
|
2085
|
+
if (this.heartbeatsMuted) return;
|
|
2086
|
+
this.lastHeartbeat = Date.now();
|
|
2030
2087
|
if (process.env.DEBUG) {
|
|
2031
2088
|
logger.debug(`[API] Sending keep alive message: ${thinking}`);
|
|
2032
2089
|
}
|
|
2033
2090
|
this.turnReporter.observe(thinking);
|
|
2034
2091
|
if (backgroundTasks) this.backgroundTaskReporter.observe(backgroundTasks);
|
|
2092
|
+
if (thinking || (backgroundTasks?.length ?? 0) > 0) this.noteActivity();
|
|
2035
2093
|
this.socket.volatile.emit("session-alive", {
|
|
2036
2094
|
sid: this.sessionId,
|
|
2037
2095
|
time: Date.now(),
|
|
@@ -2224,7 +2282,26 @@ class ApiSessionClient extends EventEmitter {
|
|
|
2224
2282
|
});
|
|
2225
2283
|
}
|
|
2226
2284
|
updateMetadata(handler) {
|
|
2227
|
-
this.
|
|
2285
|
+
void this.writeMetadata(handler);
|
|
2286
|
+
}
|
|
2287
|
+
/**
|
|
2288
|
+
* B-587: the same write, awaitable with a ceiling — the hibernation stamp
|
|
2289
|
+
* must land before `session-end`. Resolves false on timeout (the write
|
|
2290
|
+
* itself keeps retrying in the background, exactly like updateMetadata).
|
|
2291
|
+
*/
|
|
2292
|
+
async updateMetadataAndWait(handler, timeoutMs = 1e4) {
|
|
2293
|
+
let timer;
|
|
2294
|
+
const timeout = new Promise((resolve) => {
|
|
2295
|
+
timer = setTimeout(() => resolve(false), timeoutMs);
|
|
2296
|
+
});
|
|
2297
|
+
try {
|
|
2298
|
+
return await Promise.race([this.writeMetadata(handler).then(() => true), timeout]);
|
|
2299
|
+
} finally {
|
|
2300
|
+
if (timer) clearTimeout(timer);
|
|
2301
|
+
}
|
|
2302
|
+
}
|
|
2303
|
+
writeMetadata(handler) {
|
|
2304
|
+
return this.metadataLock.inLock(async () => {
|
|
2228
2305
|
let rateRefusals = 0;
|
|
2229
2306
|
await backoff(async () => {
|
|
2230
2307
|
let updated = handler(this.metadata);
|
|
@@ -2270,6 +2347,7 @@ class ApiSessionClient extends EventEmitter {
|
|
|
2270
2347
|
this.agentState = answer.agentState ? decrypt(this.encryptionKey, this.encryptionVariant, decodeBase64(answer.agentState)) : null;
|
|
2271
2348
|
this.agentStateVersion = answer.version;
|
|
2272
2349
|
rateRefusals = 0;
|
|
2350
|
+
if (Object.keys(this.agentState?.requests ?? {}).length > 0) this.noteActivity();
|
|
2273
2351
|
logger.debug("Agent state updated", this.agentState);
|
|
2274
2352
|
} else if (answer.result === "version-mismatch") {
|
|
2275
2353
|
if (answer.version > this.agentStateVersion) {
|
|
@@ -3086,7 +3164,7 @@ class ApiClient {
|
|
|
3086
3164
|
return new ApiSessionClient(this.credential.token, session, opts);
|
|
3087
3165
|
}
|
|
3088
3166
|
async machineSyncClient(machine) {
|
|
3089
|
-
const { ApiMachineClient } = await import('./apiMachine-
|
|
3167
|
+
const { ApiMachineClient } = await import('./apiMachine-CWndf1Vn.mjs');
|
|
3090
3168
|
return new ApiMachineClient(this.credential.token, machine);
|
|
3091
3169
|
}
|
|
3092
3170
|
push() {
|
|
@@ -1,43 +1,43 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var socket_ioClient = require('socket.io-client');
|
|
4
|
-
var logger = require('./logger-
|
|
5
|
-
var lidState = require('./lidState-
|
|
6
|
-
var mirrorProtocol = require('./mirrorProtocol-
|
|
7
|
-
var configuration = require('./configuration-
|
|
4
|
+
var logger = require('./logger-B_MWPbZz.cjs');
|
|
5
|
+
var lidState = require('./lidState-Bc2K9H9l.cjs');
|
|
6
|
+
var mirrorProtocol = require('./mirrorProtocol-BdcN6QlN.cjs');
|
|
7
|
+
var configuration = require('./configuration-C3piBtxY.cjs');
|
|
8
8
|
var cliUpdate = require('./cliUpdate-DsKXPFYp.cjs');
|
|
9
|
-
var registerCommonHandlers = require('./registerCommonHandlers-
|
|
9
|
+
var registerCommonHandlers = require('./registerCommonHandlers-DVYB3iVn.cjs');
|
|
10
10
|
var promises = require('node:fs/promises');
|
|
11
11
|
var path = require('node:path');
|
|
12
12
|
var os = require('node:os');
|
|
13
13
|
var node_child_process = require('node:child_process');
|
|
14
|
-
var persistence = require('./persistence-
|
|
14
|
+
var persistence = require('./persistence-BYGl0QYw.cjs');
|
|
15
15
|
var authRelay = require('./authRelay-BdYkC1Po.cjs');
|
|
16
16
|
var limits = require('./limits-C-a7gr04.cjs');
|
|
17
|
-
var time = require('./time-
|
|
17
|
+
var time = require('./time-BXvtjhe9.cjs');
|
|
18
18
|
var pty = require('node-pty');
|
|
19
19
|
var terminals = require('./terminals-B_bfC9c2.cjs');
|
|
20
20
|
var tmuxSocket = require('./tmuxSocket-D-Xt6Vn-.cjs');
|
|
21
|
-
var index = require('./index-
|
|
21
|
+
var index = require('./index-PNMQPKhz.cjs');
|
|
22
22
|
var node_crypto = require('node:crypto');
|
|
23
23
|
var node_fs = require('node:fs');
|
|
24
24
|
var axios = require('axios');
|
|
25
25
|
var projectPath = require('./projectPath-ChLhdOyt.cjs');
|
|
26
26
|
var ids = require('./ids-B6ZC0HGt.cjs');
|
|
27
27
|
var detectCLI = require('./detectCLI-DR9ZaN6B.cjs');
|
|
28
|
-
var localHappyAgentAuth = require('./localHappyAgentAuth-
|
|
28
|
+
var localHappyAgentAuth = require('./localHappyAgentAuth-T5GOvRha.cjs');
|
|
29
29
|
var path$1 = require('./path-B7zW-WwE.cjs');
|
|
30
30
|
var oneShotPrompts = require('./oneShotPrompts-CL0dip9C.cjs');
|
|
31
|
-
var claudeSessionFork = require('./claudeSessionFork-
|
|
32
|
-
var codexAppServerClient = require('./codexAppServerClient-
|
|
31
|
+
var claudeSessionFork = require('./claudeSessionFork-Byd8zD1U.cjs');
|
|
32
|
+
var codexAppServerClient = require('./codexAppServerClient-TiW9OBk4.cjs');
|
|
33
33
|
var index$1 = require('./index-C9hI8a10.cjs');
|
|
34
34
|
var codexThreadFork = require('./codexThreadFork-DNekT4nQ.cjs');
|
|
35
|
-
var rateLimitWindows = require('./rateLimitWindows-
|
|
35
|
+
var rateLimitWindows = require('./rateLimitWindows-CusGIqlq.cjs');
|
|
36
36
|
require('chalk');
|
|
37
37
|
require('node:util');
|
|
38
38
|
require('os');
|
|
39
39
|
require('child_process');
|
|
40
|
-
require('./package-
|
|
40
|
+
require('./package-C9ZP9bpX.cjs');
|
|
41
41
|
require('util');
|
|
42
42
|
require('fs/promises');
|
|
43
43
|
require('crypto');
|
|
@@ -51,7 +51,7 @@ require('url');
|
|
|
51
51
|
require('fs');
|
|
52
52
|
require('node:readline');
|
|
53
53
|
require('./contentLogMetadata-ZSFk_NjQ.cjs');
|
|
54
|
-
require('./manager-
|
|
54
|
+
require('./manager-HrEj442o.cjs');
|
|
55
55
|
require('@anthropic-ai/sandbox-runtime');
|
|
56
56
|
require('@paralleldrive/cuid2');
|
|
57
57
|
|
|
@@ -10462,6 +10462,9 @@ class ApiMachineClient {
|
|
|
10462
10462
|
registerCommonHandlers.registerCommonHandlers(this.rpcHandlerManager, process.cwd());
|
|
10463
10463
|
registerFsHandlers(this.rpcHandlerManager);
|
|
10464
10464
|
registerTodoHandlers(this.rpcHandlerManager);
|
|
10465
|
+
if (typeof configuration.configuration.happyHomeDir === "string") {
|
|
10466
|
+
mirrorProtocol.registerWorktreeHandlers(this.rpcHandlerManager, mirrorProtocol.configureWorktreeService({ home: configuration.configuration.happyHomeDir, machineId: this.machine.id, log: (msg, err) => logger.logger.debug(msg, err) }));
|
|
10467
|
+
}
|
|
10465
10468
|
this.wireAutoRestoreReport();
|
|
10466
10469
|
}
|
|
10467
10470
|
socket;
|
|
@@ -10483,6 +10486,8 @@ class ApiMachineClient {
|
|
|
10483
10486
|
cliUpdateState = null;
|
|
10484
10487
|
cliUpdatePushChain = Promise.resolve();
|
|
10485
10488
|
claudeAuthState = null;
|
|
10489
|
+
/** B-587: the machine's hibernation threshold, published as a capability. */
|
|
10490
|
+
agentHibernationIdleMs = null;
|
|
10486
10491
|
rateLimitPushChain = Promise.resolve();
|
|
10487
10492
|
rateLimitPublisher = new RateLimitPublisher({
|
|
10488
10493
|
getCurrent: () => this.machine.daemonState?.rateLimits,
|
|
@@ -10647,6 +10652,34 @@ class ApiMachineClient {
|
|
|
10647
10652
|
this.cliUpdatePushChain = attempt.then(() => void 0);
|
|
10648
10653
|
return attempt;
|
|
10649
10654
|
}
|
|
10655
|
+
/**
|
|
10656
|
+
* B-587: `agent-hibernation-set {idleMs}` (0 = off) and the
|
|
10657
|
+
* `daemonState.agentHibernation` capability. Call before connect().
|
|
10658
|
+
*/
|
|
10659
|
+
setAgentHibernationHandlers(initialIdleMs, set) {
|
|
10660
|
+
this.agentHibernationIdleMs = initialIdleMs;
|
|
10661
|
+
this.rpcHandlerManager.registerHandler("agent-hibernation-set", async (params) => {
|
|
10662
|
+
const raw = params?.idleMs;
|
|
10663
|
+
if (typeof raw !== "number" || !Number.isFinite(raw) || raw < 0) return { error: "invalid-idle-ms" };
|
|
10664
|
+
const idleMs = await set(raw);
|
|
10665
|
+
this.agentHibernationIdleMs = idleMs;
|
|
10666
|
+
await this.publishAgentHibernation();
|
|
10667
|
+
return { agentHibernation: { idleMs } };
|
|
10668
|
+
});
|
|
10669
|
+
}
|
|
10670
|
+
publishAgentHibernation() {
|
|
10671
|
+
const idleMs = this.agentHibernationIdleMs;
|
|
10672
|
+
if (idleMs === null || !this.socket?.connected) return Promise.resolve();
|
|
10673
|
+
const attempt = this.cliUpdatePushChain.then(() => this.updateDaemonState((current) => ({
|
|
10674
|
+
...current ?? {},
|
|
10675
|
+
status: current?.status ?? "running",
|
|
10676
|
+
agentHibernation: { idleMs, rpcAvailable: true, detectedAt: Date.now() }
|
|
10677
|
+
}))).catch((error) => {
|
|
10678
|
+
logger.logger.debug("[API MACHINE] Failed to publish agent hibernation:", error);
|
|
10679
|
+
});
|
|
10680
|
+
this.cliUpdatePushChain = attempt.then(() => void 0);
|
|
10681
|
+
return attempt;
|
|
10682
|
+
}
|
|
10650
10683
|
/** B-276 machine RPCs. Responses always carry `claudeAuth` so the web can refresh in place. */
|
|
10651
10684
|
setClaudeAuthHandlers(handlers) {
|
|
10652
10685
|
this.rpcHandlerManager.registerHandler("claude-auth-probe", async () => {
|
|
@@ -11366,7 +11399,9 @@ class ApiMachineClient {
|
|
|
11366
11399
|
closedTerminals: this.webTerminal.getClosedTerminals(),
|
|
11367
11400
|
// B-276: re-ship the last preflight so a reconnect never
|
|
11368
11401
|
// leaves a stale-pid value visible longer than needed.
|
|
11369
|
-
...this.claudeAuthState ? { claudeAuth: this.claudeAuthState } : {}
|
|
11402
|
+
...this.claudeAuthState ? { claudeAuth: this.claudeAuthState } : {},
|
|
11403
|
+
// B-587 capability + setting (same restamp discipline).
|
|
11404
|
+
...this.agentHibernationIdleMs !== null ? { agentHibernation: { idleMs: this.agentHibernationIdleMs, rpcAvailable: true, detectedAt: now } } : {}
|
|
11370
11405
|
};
|
|
11371
11406
|
});
|
|
11372
11407
|
this.webTerminal.startListTracking((terminals) => this.pushTerminalList(terminals));
|