very-happy-cli 0.2.166 → 0.2.168
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-tRWk7yi7.mjs → AcpBackend-BoLDLYNT.mjs} +3 -3
- package/dist/{AcpBackend-20VHOXwb.cjs → AcpBackend-r83MMm-i.cjs} +3 -3
- package/dist/{BasePermissionHandler-COKc4pmt.cjs → BasePermissionHandler-CS0eRtT-.cjs} +1 -1
- package/dist/{BasePermissionHandler-CDCLIrZJ.mjs → BasePermissionHandler-DTcVlmKi.mjs} +1 -1
- package/dist/{BaseReasoningProcessor-BDVKvooR.mjs → BaseReasoningProcessor-BddnNlXQ.mjs} +1 -1
- package/dist/{BaseReasoningProcessor-DAGQdkNp.cjs → BaseReasoningProcessor-RJiBhA8h.cjs} +1 -1
- package/dist/{agentHome-2IbIjKCa.mjs → agentHome--LRsdUx6.mjs} +4 -4
- package/dist/{agentHome-KVWj6nCl.cjs → agentHome-D-e_j9hK.cjs} +4 -4
- package/dist/{api-DnNL5fLw.cjs → api-COSJ3Yb7.cjs} +88 -10
- package/dist/{api-Cmz3XS4P.mjs → api-hXLwtgMi.mjs} +88 -10
- package/dist/{apiMachine-DeoQ8QbZ.cjs → apiMachine-BTCUUGC6.cjs} +50 -15
- package/dist/{apiMachine-B6ySCFe0.mjs → apiMachine-BauSXWNd.mjs} +50 -15
- package/dist/{attachmentContent-DPWxHgX4.cjs → attachmentContent-BCK0AxDS.cjs} +2 -2
- package/dist/{attachmentContent-CTXapi-_.mjs → attachmentContent-CS0B2N0Q.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-pzWIFdOD.mjs → auth-BFeFguVs.mjs} +5 -5
- package/dist/{auth-BMaBjRAj.mjs → auth-BUXH1L2k.mjs} +10 -10
- package/dist/{auth-D4-eQz85.cjs → auth-CCj5KlYS.cjs} +10 -10
- package/dist/{auth-ietHtvwu.cjs → auth-CfB2XcAW.cjs} +5 -5
- package/dist/{auto-DL75Dx3I.mjs → auto-D5BYdAoT.mjs} +14 -14
- package/dist/{auto-DOWTQDPa.cjs → auto-ZCHKb4jo.cjs} +14 -14
- package/dist/{bootstrap-BpXIc2wn.cjs → bootstrap-DSX64t23.cjs} +2 -2
- package/dist/{bootstrap-XE8A7Ut2.mjs → bootstrap-DklT121U.mjs} +2 -2
- package/dist/{browser-CcG8GLRV.cjs → browser-CeekQeKt.cjs} +1 -1
- package/dist/{browser-DDFi1T8C.mjs → browser-DUf1dth8.mjs} +1 -1
- package/dist/{claudeLocal-DmM5Oyhv.mjs → claudeLocal-C8pXtb8q.mjs} +5 -5
- package/dist/{claudeLocal-DXBXwIOG.cjs → claudeLocal-hH0YYex3.cjs} +5 -5
- package/dist/{claudeLocalLauncher-Cs4eUC3P.mjs → claudeLocalLauncher-AtUe2tM-.mjs} +10 -10
- package/dist/{claudeLocalLauncher-C41Y6Kp4.cjs → claudeLocalLauncher-B-ta13pT.cjs} +10 -10
- package/dist/{claudeSessionFork-BdLnc2Hv.mjs → claudeSessionFork-BQPBKEHk.mjs} +1 -1
- package/dist/{claudeSessionFork-Cs0I3eGI.cjs → claudeSessionFork-Cq9FBfjD.cjs} +1 -1
- package/dist/{client-CbK33y_s.mjs → client-Bg6-mQKO.mjs} +3 -3
- package/dist/{client-GjTnsq6F.mjs → client-Cbl3ejoq.mjs} +2 -2
- package/dist/{client-JISJx2f-.cjs → client-DZpkmS5l.cjs} +3 -3
- package/dist/{client-DJ0kX_8M.cjs → client-EnFomCjx.cjs} +2 -2
- package/dist/codex/happyMcpStdioBridge.cjs +14 -14
- package/dist/codex/happyMcpStdioBridge.mjs +14 -14
- package/dist/{codexAppServerClient-BTjn2ZCZ.cjs → codexAppServerClient-pllsN90-.cjs} +4 -4
- package/dist/{codexAppServerClient-CldXEojt.mjs → codexAppServerClient-sWuwtddZ.mjs} +4 -4
- package/dist/{codexCommand-DjMU-Ijf.mjs → codexCommand-DbTkMlW4.mjs} +137 -56
- package/dist/{codexCommand-BpD0N1F7.cjs → codexCommand-_jkx59gI.cjs} +137 -56
- package/dist/{config-DuLL0Ppe.cjs → config-BuIIZPZK.cjs} +3 -3
- package/dist/{config-DjSJKatx.mjs → config-FCOoREKj.mjs} +3 -3
- package/dist/{configuration-D2v3puap.mjs → configuration-BZo1JWNV.mjs} +2 -2
- package/dist/{configuration-B0cb3xA3.cjs → configuration-DeuGrnej.cjs} +1 -1
- package/dist/{connect-CnNNyM9I.mjs → connect-C2yHh85e.mjs} +13 -13
- package/dist/{connect-B7JWEzyg.cjs → connect-CjDdF12U.cjs} +13 -13
- package/dist/{context-BFUpYT39.cjs → context-BhvZtm3j.cjs} +1 -1
- package/dist/{context-DjfqLWzE.mjs → context-DZIIcfld.mjs} +1 -1
- package/dist/{controlClient-BMUJfUeF.mjs → controlClient-CXD-Xdny.mjs} +18 -4
- package/dist/{controlClient-CmnHGcyl.cjs → controlClient-IDE3se23.cjs} +18 -3
- package/dist/{createSessionMetadata-DbfRBhRu.cjs → createSessionMetadata-BCHFLSLk.cjs} +56 -3
- package/dist/{createSessionMetadata-DU0bCg2m.mjs → createSessionMetadata-DoLFya-Q.mjs} +57 -5
- package/dist/defaultPermissionMode-BtZtLdQz.cjs +197 -0
- package/dist/defaultPermissionMode-Dxfv-5Ud.mjs +191 -0
- package/dist/{deterministicJson-Dp3TVyap.cjs → deterministicJson-BqQKrUzw.cjs} +8 -8
- package/dist/{deterministicJson-D-WPUrZb.mjs → deterministicJson-CF1fJMaM.mjs} +8 -8
- package/dist/{doctor-BlXXyQ1L.mjs → doctor-C98yYhYr.mjs} +6 -6
- package/dist/{doctor-CkJmdPbi.cjs → doctor-D61ncaeL.cjs} +6 -6
- package/dist/{downloadTarget-DjSwMHun.mjs → downloadTarget-CaISZbNy.mjs} +6 -6
- package/dist/{downloadTarget-CiQqRIc-.cjs → downloadTarget-Dist9t2e.cjs} +6 -6
- package/dist/{ensureDaemonRunning-C_aIOhgG.cjs → ensureDaemonRunning-BB0hnWY_.cjs} +5 -5
- package/dist/{ensureDaemonRunning-CAQag1zE.mjs → ensureDaemonRunning-CNiqOarI.mjs} +5 -5
- package/dist/{handleResumeCommand-Ci7wacT-.mjs → handleResumeCommand-BzcANj0i.mjs} +5 -5
- package/dist/{handleResumeCommand-6KzBGDnl.cjs → handleResumeCommand-CkzW-T_f.cjs} +5 -5
- package/dist/{index-DEKIgZUo.cjs → index-BQU1sS9K.cjs} +4 -4
- package/dist/{index-DBmNwMX9.cjs → index-BeeWN9Et.cjs} +33 -33
- package/dist/{index-WGCT6SSV.mjs → index-CdmIOFwG.mjs} +34 -34
- package/dist/{index-HQsigW_J.mjs → index-D2hg_u5i.mjs} +3 -3
- package/dist/{index-DQplgo0W.mjs → index-Dgqk3lfG.mjs} +4 -4
- package/dist/{index-CaFCAlX8.cjs → index-DipBfs9w.cjs} +3 -3
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{install-oJUvsFu9.mjs → install-CK1FvmYQ.mjs} +3 -3
- package/dist/{install-CejEiRGW.cjs → install-VtuffPLu.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-D8BmnJV1.cjs → lidState-2IT0tas7.cjs} +1 -1
- package/dist/{lidState-BfximpjX.mjs → lidState-CJ3XkJRn.mjs} +1 -1
- package/dist/{localHappyAgentAuth-d7B6S_o7.cjs → localHappyAgentAuth-CPMh61Su.cjs} +1 -1
- package/dist/{localHappyAgentAuth-Ct1aXwqd.mjs → localHappyAgentAuth-DkLbntlf.mjs} +1 -1
- package/dist/{logger-BpQcwNnt.mjs → logger-C6zzu57a.mjs} +2 -2
- package/dist/{logger-JTcJU-uL.cjs → logger-Ockf1cjN.cjs} +2 -2
- package/dist/{machineMetadata-BBg_Njw3.cjs → machineMetadata-CoMYwSlG.cjs} +4 -3
- package/dist/{machineMetadata-CBdxABeI.mjs → machineMetadata-DmTGIZAV.mjs} +4 -3
- package/dist/{main-B5b1gA3K.mjs → main-B8TX9xPq.mjs} +45 -45
- package/dist/{main-C16fOGgn.cjs → main-CThJ9JQb.cjs} +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-Dwku1p2I.cjs} +14 -14
- package/dist/{mcp-DGNWgVdv.mjs → mcp-Yw93dOiW.mjs} +14 -14
- package/dist/mirrorProtocol-CQ5fAUgq.mjs +1247 -0
- package/dist/mirrorProtocol-CdPhEBSh.cjs +1270 -0
- package/dist/{package-BqwrPxL0.mjs → package-5xAdq5fu.mjs} +7 -7
- package/dist/{package-C1XvUQFy.cjs → package-DfoyJe1O.cjs} +7 -7
- package/dist/{peerTools-DPvbcs8V.cjs → peerTools-BEnBvEcU.cjs} +4 -4
- package/dist/{peerTools-CeCe-3lk.mjs → peerTools-uDR6MG0-.mjs} +4 -4
- package/dist/{persistence-2Xp_o6x6.cjs → persistence-B5oT6oQ9.cjs} +147 -25
- package/dist/{persistence-B9LmhAE2.mjs → persistence-B6M_W5iC.mjs} +123 -12
- package/dist/{piRunnerArgs-DI29dDNo.cjs → piRunnerArgs-MLN46-nK.cjs} +1 -1
- package/dist/{piRunnerArgs-7FaTyNOq.mjs → piRunnerArgs-vNIUWHqo.mjs} +1 -1
- package/dist/{piRuntime-R8XVChxK.cjs → piRuntime-DkUg8_5q.cjs} +1 -1
- package/dist/{piRuntime-0qEK5AqE.mjs → piRuntime-WMuI7f4q.mjs} +1 -1
- package/dist/{piTerminal-zcQKc8Sp.mjs → piTerminal-4NBSZVxd.mjs} +16 -16
- package/dist/{piTerminal-Ccj0KNPr.cjs → piTerminal-Bskvs69Z.cjs} +16 -16
- package/dist/{rateLimitWindows-C2Jk3Ih7.cjs → rateLimitWindows-C2-Ky86q.cjs} +1 -1
- package/dist/{rateLimitWindows-Dhfhbtqu.mjs → rateLimitWindows-CJ1xDAxa.mjs} +1 -1
- package/dist/{registerCommonHandlers-DdfGsFbM.mjs → registerCommonHandlers-BLHKlk5Z.mjs} +2 -2
- package/dist/{registerCommonHandlers-Aha_KfM3.cjs → registerCommonHandlers-COSTo15G.cjs} +2 -2
- package/dist/{registerKillSessionHandler-DboQlGcH.mjs → registerKillSessionHandler-BVQfhSgm.mjs} +14 -9
- package/dist/{registerKillSessionHandler-CjitOpUA.cjs → registerKillSessionHandler-DDZISNzu.cjs} +14 -9
- package/dist/{remoteSessionClient-BwI8rpQw.cjs → remoteSessionClient-B2pOMZRw.cjs} +5 -5
- package/dist/{remoteSessionClient-B2DtWuNP.mjs → remoteSessionClient-Dx0M2MXV.mjs} +5 -5
- package/dist/{reportProgressTool-B-Rcy0s3.cjs → reportProgressTool-C5vDEv9Y.cjs} +1 -1
- package/dist/{reportProgressTool-DnAD8wOa.mjs → reportProgressTool-CcwFr0ek.mjs} +1 -1
- package/dist/{run-Bh66Xs40.cjs → run-BKTv1E-D.cjs} +323 -37
- package/dist/{run-DPEwJpQR.mjs → run-BZjIDOGM.mjs} +322 -36
- package/dist/{runClaude-DLr_nBzw.mjs → runClaude-DFa77Ffl.mjs} +87 -25
- package/dist/{runClaude-C-lJdAKD.cjs → runClaude-DUlFZWiK.cjs} +87 -25
- package/dist/{runClaudeDeps-vWWLod7J.cjs → runClaudeDeps--TnER0c3.cjs} +100 -31
- package/dist/{runClaudeDeps-C7JV7nXG.mjs → runClaudeDeps-BYohagQU.mjs} +105 -36
- package/dist/{runGemini-o-CUSayc.cjs → runGemini-BSBejXek.cjs} +32 -32
- package/dist/{runGemini-tH6sLw-G.mjs → runGemini-CUiq1Zei.mjs} +32 -32
- package/dist/{runOpenClaw-C5DZvVhn.mjs → runOpenClaw-CgwRP4gR.mjs} +16 -16
- package/dist/{runOpenClaw-D24f35l0.cjs → runOpenClaw-DQFEi3E1.cjs} +16 -16
- package/dist/{sandbox-BaL1aslA.mjs → sandbox-BTwAN7Yi.mjs} +4 -4
- package/dist/{sandbox-TJZJ6ngw.cjs → sandbox-DuLRfMY3.cjs} +4 -4
- package/dist/selfCheck-DF26lf1b.mjs +84 -0
- package/dist/{selfCheck-Dugi0Nk_.cjs → selfCheck-DuOLndWl.cjs} +34 -34
- package/dist/{send-DDcJ3ayi.mjs → send-ComZSvT5.mjs} +8 -8
- package/dist/{send-CkWOSYmU.cjs → send-Dl4TJ0Ia.cjs} +8 -8
- package/dist/{server-7qFQ8J2u.cjs → server-CWmamKcS.cjs} +6 -6
- package/dist/{server-CUjRvQSd.mjs → server-CXFSsyZx.mjs} +4 -4
- package/dist/{sessionLock-DfhNICyS.cjs → sessionLock-BFD8cFNP.cjs} +12 -3
- package/dist/{sessionLock-DqVyHFAQ.mjs → sessionLock-DCKf-gjd.mjs} +12 -4
- package/dist/{sessionModeFile-M4OpiyrF.mjs → sessionModeFile-BYxsFSvc.mjs} +1 -1
- package/dist/{sessionModeFile-CIznKD7O.cjs → sessionModeFile-i-MVQRcU.cjs} +1 -1
- package/dist/{sessionOps-DOyy4gkY.cjs → sessionOps-BAQ_80Rg.cjs} +4 -4
- package/dist/{sessionOps-BnaEaOKs.mjs → sessionOps-CBXsQGV5.mjs} +4 -4
- package/dist/{sessionScanner-CcuOn9uU.mjs → sessionScanner-CwPBvQK2.mjs} +3 -3
- package/dist/{sessionScanner-Cu1yKlj4.cjs → sessionScanner-Dth3iDCi.cjs} +3 -3
- package/dist/{sessions-BQgk5Kw8.cjs → sessions-BULd_RQt.cjs} +9 -9
- package/dist/{sessions-C9O91rL1.mjs → sessions-DYAqiUS0.mjs} +9 -9
- package/dist/{setupOfflineReconnection-Byy8aeKT.mjs → setupOfflineReconnection-Bo9xb30l.mjs} +2 -2
- package/dist/{setupOfflineReconnection-DFmQ8s6I.cjs → setupOfflineReconnection-DI8BQf_g.cjs} +2 -2
- package/dist/{spawn-EZ2yrtWd.mjs → spawn-DmXpKIOT.mjs} +13 -13
- package/dist/{spawn-BS7LPmSm.cjs → spawn-oikb5mUh.cjs} +13 -13
- package/dist/{spawnHappyCLI-BAa49m0q.mjs → spawnHappyCLI-BCnZfffk.mjs} +1 -1
- package/dist/{spawnHappyCLI-DyaldIe5.cjs → spawnHappyCLI-Cs177BB4.cjs} +1 -1
- package/dist/{specialCommands-DouFaJ_0.cjs → specialCommands-CmrwEh71.cjs} +3 -3
- package/dist/{specialCommands-CCWtwIGZ.mjs → specialCommands-xD4uOtdG.mjs} +3 -3
- package/dist/{startFileWatcher-Dfs4whzr.mjs → startFileWatcher-De7rN8QW.mjs} +1 -1
- package/dist/{startFileWatcher-DQbbypJv.cjs → startFileWatcher-S_Af_QPR.cjs} +1 -1
- package/dist/{sync-x_lI_3j_.cjs → sync-BS9_zSQ2.cjs} +1 -1
- package/dist/{sync-BLpH13Kb.mjs → sync-CHOB3Org.mjs} +1 -1
- package/dist/{systemPrompt-4erwILTB.cjs → systemPrompt-D2ICcIsu.cjs} +1 -1
- package/dist/{systemPrompt-BanyDihy.mjs → systemPrompt-DNLUUejs.mjs} +1 -1
- package/dist/{teams-DzetlGWC.cjs → teams-BUbESH6L.cjs} +6 -6
- package/dist/{teams-D6BOT3lR.mjs → teams-By3oBC7r.mjs} +6 -6
- package/dist/{time-CfDKj6Bx.mjs → time-CN0jVVir.mjs} +1 -1
- package/dist/{time-T0YmeOhS.cjs → time-uSKpEhew.cjs} +1 -1
- package/dist/{titleGenerator-CoMxqKfP.cjs → titleGenerator-CLIXjn9b.cjs} +2 -2
- package/dist/{titleGenerator-ChImQ4q-.mjs → titleGenerator-CegRJ47n.mjs} +1 -1
- package/dist/{todo-CZZebKZg.cjs → todo-Bg1vurv9.cjs} +5 -5
- package/dist/{todo-SVtYxGON.mjs → todo-Bl3abqvy.mjs} +5 -5
- package/dist/{tools-3X2z3YDe.mjs → tools-BcLUrC57.mjs} +1 -1
- package/dist/{tools-IJ0TAcJs.cjs → tools-DuWKlc0k.cjs} +1 -1
- package/dist/{uninstall-CypD-kr1.mjs → uninstall-BlpZlM9U.mjs} +3 -3
- package/dist/{uninstall-CqqCWj7w.cjs → uninstall-DWnj2XVT.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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var name = "very-happy-cli";
|
|
2
|
-
var version = "0.2.
|
|
2
|
+
var version = "0.2.168";
|
|
3
3
|
var description = "Remote multi-agent workspace CLI with deep Claude integration, native terminal streaming, and self-hosting.";
|
|
4
4
|
var author = "Kirill Dubovitskiy";
|
|
5
5
|
var contributors = [
|
|
@@ -116,12 +116,12 @@ var dependencies = {
|
|
|
116
116
|
zod: "^4.0.0"
|
|
117
117
|
};
|
|
118
118
|
var optionalDependencies = {
|
|
119
|
-
"very-happy-tools-arm64-darwin": "0.2.
|
|
120
|
-
"very-happy-tools-x64-darwin": "0.2.
|
|
121
|
-
"very-happy-tools-arm64-linux": "0.2.
|
|
122
|
-
"very-happy-tools-x64-linux": "0.2.
|
|
123
|
-
"very-happy-tools-arm64-win32": "0.2.
|
|
124
|
-
"very-happy-tools-x64-win32": "0.2.
|
|
119
|
+
"very-happy-tools-arm64-darwin": "0.2.168",
|
|
120
|
+
"very-happy-tools-x64-darwin": "0.2.168",
|
|
121
|
+
"very-happy-tools-arm64-linux": "0.2.168",
|
|
122
|
+
"very-happy-tools-x64-linux": "0.2.168",
|
|
123
|
+
"very-happy-tools-arm64-win32": "0.2.168",
|
|
124
|
+
"very-happy-tools-x64-win32": "0.2.168"
|
|
125
125
|
};
|
|
126
126
|
var devDependencies = {
|
|
127
127
|
"@slopus/happy-wire": "workspace:*",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var name = "very-happy-cli";
|
|
4
|
-
var version = "0.2.
|
|
4
|
+
var version = "0.2.168";
|
|
5
5
|
var description = "Remote multi-agent workspace CLI with deep Claude integration, native terminal streaming, and self-hosting.";
|
|
6
6
|
var author = "Kirill Dubovitskiy";
|
|
7
7
|
var contributors = [
|
|
@@ -118,12 +118,12 @@ var dependencies = {
|
|
|
118
118
|
zod: "^4.0.0"
|
|
119
119
|
};
|
|
120
120
|
var optionalDependencies = {
|
|
121
|
-
"very-happy-tools-arm64-darwin": "0.2.
|
|
122
|
-
"very-happy-tools-x64-darwin": "0.2.
|
|
123
|
-
"very-happy-tools-arm64-linux": "0.2.
|
|
124
|
-
"very-happy-tools-x64-linux": "0.2.
|
|
125
|
-
"very-happy-tools-arm64-win32": "0.2.
|
|
126
|
-
"very-happy-tools-x64-win32": "0.2.
|
|
121
|
+
"very-happy-tools-arm64-darwin": "0.2.168",
|
|
122
|
+
"very-happy-tools-x64-darwin": "0.2.168",
|
|
123
|
+
"very-happy-tools-arm64-linux": "0.2.168",
|
|
124
|
+
"very-happy-tools-x64-linux": "0.2.168",
|
|
125
|
+
"very-happy-tools-arm64-win32": "0.2.168",
|
|
126
|
+
"very-happy-tools-x64-win32": "0.2.168"
|
|
127
127
|
};
|
|
128
128
|
var devDependencies = {
|
|
129
129
|
"@slopus/happy-wire": "workspace:*",
|
|
@@ -4,10 +4,10 @@ var node_crypto = require('node:crypto');
|
|
|
4
4
|
var os = require('node:os');
|
|
5
5
|
var z = require('zod');
|
|
6
6
|
var ids = require('./ids-B6ZC0HGt.cjs');
|
|
7
|
-
var controlClient = require('./controlClient-
|
|
8
|
-
var persistence = require('./persistence-
|
|
9
|
-
var sessionOps = require('./sessionOps-
|
|
10
|
-
var remoteSessionClient = require('./remoteSessionClient-
|
|
7
|
+
var controlClient = require('./controlClient-IDE3se23.cjs');
|
|
8
|
+
var persistence = require('./persistence-B5oT6oQ9.cjs');
|
|
9
|
+
var sessionOps = require('./sessionOps-BAQ_80Rg.cjs');
|
|
10
|
+
var remoteSessionClient = require('./remoteSessionClient-B2pOMZRw.cjs');
|
|
11
11
|
var node_fs = require('node:fs');
|
|
12
12
|
var path = require('node:path');
|
|
13
13
|
|
|
@@ -2,10 +2,10 @@ import { randomUUID } from 'node:crypto';
|
|
|
2
2
|
import { userInfo, hostname } from 'node:os';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { i as isValidSessionId } from './ids-DU6sLx4C.mjs';
|
|
5
|
-
import {
|
|
6
|
-
import { readPersistedSessions } from './persistence-
|
|
7
|
-
import { s as sessionWebUrl, e as sendUserMessage } from './sessionOps-
|
|
8
|
-
import { b as sendRemotePeerMessage, d as deliverToSession, a as listRemotePeers } from './remoteSessionClient-
|
|
5
|
+
import { g as listDaemonPeers } from './controlClient-CXD-Xdny.mjs';
|
|
6
|
+
import { b as readPersistedSessions } from './persistence-B6M_W5iC.mjs';
|
|
7
|
+
import { s as sessionWebUrl, e as sendUserMessage } from './sessionOps-CBXsQGV5.mjs';
|
|
8
|
+
import { b as sendRemotePeerMessage, d as deliverToSession, a as listRemotePeers } from './remoteSessionClient-Dx0M2MXV.mjs';
|
|
9
9
|
import { existsSync, readFileSync, statSync } from 'node:fs';
|
|
10
10
|
import { resolve, isAbsolute, dirname } from 'node:path';
|
|
11
11
|
|
|
@@ -2,37 +2,120 @@
|
|
|
2
2
|
|
|
3
3
|
var promises = require('node:fs/promises');
|
|
4
4
|
var node_fs = require('node:fs');
|
|
5
|
-
var configuration = require('./configuration-
|
|
5
|
+
var configuration = require('./configuration-DeuGrnej.cjs');
|
|
6
6
|
var z = require('zod');
|
|
7
7
|
var authRelay = require('./authRelay-BdYkC1Po.cjs');
|
|
8
|
-
var logger = require('./logger-
|
|
9
|
-
require('node:os');
|
|
10
|
-
require('node:path');
|
|
11
|
-
require('./package-C1XvUQFy.cjs');
|
|
12
|
-
require('node:crypto');
|
|
13
|
-
require('tweetnacl');
|
|
14
|
-
require('chalk');
|
|
15
|
-
require('node:util');
|
|
8
|
+
var logger = require('./logger-Ockf1cjN.cjs');
|
|
16
9
|
|
|
17
10
|
function _interopNamespaceDefault(e) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
11
|
+
var n = Object.create(null);
|
|
12
|
+
if (e) {
|
|
13
|
+
Object.keys(e).forEach(function (k) {
|
|
14
|
+
if (k !== 'default') {
|
|
15
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
16
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
get: function () { return e[k]; }
|
|
19
|
+
});
|
|
20
|
+
}
|
|
26
21
|
});
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
n.default = e;
|
|
31
|
-
return Object.freeze(n);
|
|
22
|
+
}
|
|
23
|
+
n.default = e;
|
|
24
|
+
return Object.freeze(n);
|
|
32
25
|
}
|
|
33
26
|
|
|
34
27
|
var z__namespace = /*#__PURE__*/_interopNamespaceDefault(z);
|
|
35
28
|
|
|
29
|
+
const HIBERNATION_CAPABILITY = "agent-hibernation-v1";
|
|
30
|
+
const HOUR_MS = 60 * 60 * 1e3;
|
|
31
|
+
const DEFAULT_HIBERNATION_IDLE_MS = 6 * HOUR_MS;
|
|
32
|
+
const MIN_SETTING_IDLE_MS = HOUR_MS;
|
|
33
|
+
const MAX_SETTING_IDLE_MS = 24 * HOUR_MS;
|
|
34
|
+
const DEFAULT_HIBERNATION_CHECK_MS = 5 * 60 * 1e3;
|
|
35
|
+
const HIBERNATION_UNSUPPORTED_BACKOFF_MS = 30 * 60 * 1e3;
|
|
36
|
+
const HIBERNATED_RECORD_MAX_AGE_MS = 90 * 24 * HOUR_MS;
|
|
37
|
+
const HIBERNATABLE_FLAVORS = ["claude", "codex"];
|
|
38
|
+
const NON_UI_ORIGIN_TAGS = ["teams", "automation", "assistant"];
|
|
39
|
+
function settingIdleMs(setting) {
|
|
40
|
+
if (setting === void 0 || setting === null) return DEFAULT_HIBERNATION_IDLE_MS;
|
|
41
|
+
if (typeof setting !== "number" || !Number.isFinite(setting)) return DEFAULT_HIBERNATION_IDLE_MS;
|
|
42
|
+
if (setting <= 0) return 0;
|
|
43
|
+
return Math.min(MAX_SETTING_IDLE_MS, Math.max(MIN_SETTING_IDLE_MS, Math.round(setting)));
|
|
44
|
+
}
|
|
45
|
+
function resolveIdleMs(setting, env = process.env) {
|
|
46
|
+
const raw = env.HAPPY_HIBERNATE_IDLE_MS;
|
|
47
|
+
if (raw !== void 0 && raw.trim() !== "") {
|
|
48
|
+
const value = Number(raw);
|
|
49
|
+
if (Number.isFinite(value) && value >= 0) return Math.round(value);
|
|
50
|
+
}
|
|
51
|
+
return settingIdleMs(setting);
|
|
52
|
+
}
|
|
53
|
+
function resolveCheckMs(env = process.env) {
|
|
54
|
+
const value = Number(env.HAPPY_HIBERNATE_CHECK_MS);
|
|
55
|
+
if (Number.isFinite(value) && value >= 1e3) return Math.round(value);
|
|
56
|
+
return DEFAULT_HIBERNATION_CHECK_MS;
|
|
57
|
+
}
|
|
58
|
+
function evaluateWrapperIdle(snapshot, idleMs, now) {
|
|
59
|
+
if (!(idleMs > 0)) return { ok: false, reason: "disabled" };
|
|
60
|
+
if (snapshot.exiting) return { ok: false, reason: "exiting" };
|
|
61
|
+
if (!snapshot.uiSession || snapshot.variant) return { ok: false, reason: "not-ui-session" };
|
|
62
|
+
if (!HIBERNATABLE_FLAVORS.includes(snapshot.flavor)) return { ok: false, reason: "unsupported-flavor" };
|
|
63
|
+
if (!snapshot.resumable) return { ok: false, reason: "not-resumable" };
|
|
64
|
+
if (snapshot.spawnedBy && snapshot.spawnedBy.trim()) return { ok: false, reason: "spawn-origin" };
|
|
65
|
+
if ((snapshot.tags ?? []).some((tag) => NON_UI_ORIGIN_TAGS.includes(tag))) return { ok: false, reason: "spawn-origin" };
|
|
66
|
+
if (snapshot.keepAwake) return { ok: false, reason: "keep-awake" };
|
|
67
|
+
if (snapshot.thinking) return { ok: false, reason: "turn-active" };
|
|
68
|
+
if (snapshot.queuedInputs > 0 || !snapshot.waitingForInput) return { ok: false, reason: "queued-input" };
|
|
69
|
+
if (snapshot.pendingRequests > 0) return { ok: false, reason: "pending-request" };
|
|
70
|
+
if (snapshot.backgroundTasks > 0) return { ok: false, reason: "background-tasks" };
|
|
71
|
+
if ((snapshot.scheduledWakeups ?? 0) > 0) return { ok: false, reason: "scheduled-wakeup" };
|
|
72
|
+
if (!(now - snapshot.lastActivityAt >= idleMs)) return { ok: false, reason: "recent-activity" };
|
|
73
|
+
return { ok: true };
|
|
74
|
+
}
|
|
75
|
+
function latchKeepAwake(raw, latched) {
|
|
76
|
+
if (raw === true) return true;
|
|
77
|
+
if (raw === false) return false;
|
|
78
|
+
return latched;
|
|
79
|
+
}
|
|
80
|
+
function reportSignature(report) {
|
|
81
|
+
return [report.flavor, report.lastActivityAt, report.keepAwake ? 1 : 0, report.pendingRequests, report.backgroundTasks].join("|");
|
|
82
|
+
}
|
|
83
|
+
function decideDaemonHibernation(input) {
|
|
84
|
+
const { report } = input;
|
|
85
|
+
if (!(input.idleMs > 0)) return { ok: false, reason: "disabled" };
|
|
86
|
+
if (!input.trackedLive) return { ok: false, reason: "not-tracked" };
|
|
87
|
+
if (input.teamsMember || input.trackedSpawnedBy === "teams") return { ok: false, reason: "teams" };
|
|
88
|
+
if (input.trackedSpawnedBy && input.trackedSpawnedBy.trim()) return { ok: false, reason: "spawn-origin" };
|
|
89
|
+
const local = evaluateWrapperIdle(report, input.idleMs, input.now);
|
|
90
|
+
if (!local.ok) return local;
|
|
91
|
+
if (input.turnActive) return { ok: false, reason: "turn-active" };
|
|
92
|
+
if (input.backgroundTasks > 0) return { ok: false, reason: "background-tasks" };
|
|
93
|
+
if (input.automationBound === null) return { ok: false, reason: "automations-unknown" };
|
|
94
|
+
if (input.automationBound.has(input.sessionId)) return { ok: false, reason: "automation-bound" };
|
|
95
|
+
if (input.previousSignature !== reportSignature(report)) return { ok: false, reason: "unconfirmed" };
|
|
96
|
+
if (input.hibernationInFlight) return { ok: false, reason: "busy" };
|
|
97
|
+
return { ok: true };
|
|
98
|
+
}
|
|
99
|
+
function nextCheckDelay(verdict, report, idleMs, checkMs, now) {
|
|
100
|
+
if (verdict.ok) return checkMs;
|
|
101
|
+
if (verdict.reason === "disabled") return Math.max(checkMs, HIBERNATION_UNSUPPORTED_BACKOFF_MS);
|
|
102
|
+
if (verdict.reason === "recent-activity") return Math.max(checkMs, report.lastActivityAt + idleMs - now);
|
|
103
|
+
return checkMs;
|
|
104
|
+
}
|
|
105
|
+
function readHibernationStamp(metadata) {
|
|
106
|
+
const raw = metadata?.hibernation;
|
|
107
|
+
if (!raw || typeof raw !== "object") return null;
|
|
108
|
+
const stamp = raw;
|
|
109
|
+
if (typeof stamp.at !== "number" || typeof stamp.seq !== "number" || !Number.isInteger(stamp.seq) || stamp.seq < 0) return null;
|
|
110
|
+
return { at: stamp.at, seq: stamp.seq, idleMs: typeof stamp.idleMs === "number" ? stamp.idleMs : 0, v: 1 };
|
|
111
|
+
}
|
|
112
|
+
function hibernationReplaySeq(metadata, serverSeq) {
|
|
113
|
+
const stamp = readHibernationStamp(metadata);
|
|
114
|
+
if (!stamp) return null;
|
|
115
|
+
if (stamp.seq >= serverSeq) return null;
|
|
116
|
+
return stamp.seq;
|
|
117
|
+
}
|
|
118
|
+
|
|
36
119
|
const SandboxConfigSchema = z__namespace.object({
|
|
37
120
|
enabled: z__namespace.boolean().default(false),
|
|
38
121
|
workspaceRoot: z__namespace.string().optional(),
|
|
@@ -315,7 +398,8 @@ function readPersistedSessions() {
|
|
|
315
398
|
const now = Date.now();
|
|
316
399
|
const sessions = {};
|
|
317
400
|
for (const [id, session] of Object.entries(data.sessions)) {
|
|
318
|
-
|
|
401
|
+
const maxAge = typeof session.hibernatedAt === "number" && session.hibernatedAt >= session.savedAt ? HIBERNATED_RECORD_MAX_AGE_MS : SESSION_MAX_AGE_MS;
|
|
402
|
+
if (now - session.savedAt < maxAge) {
|
|
319
403
|
sessions[id] = session;
|
|
320
404
|
}
|
|
321
405
|
}
|
|
@@ -361,7 +445,8 @@ function readTrackedCodexThreadIds() {
|
|
|
361
445
|
function persistSession(sessionId, session) {
|
|
362
446
|
try {
|
|
363
447
|
const existing = readPersistedSessions();
|
|
364
|
-
existing[sessionId]
|
|
448
|
+
const prior = existing[sessionId];
|
|
449
|
+
existing[sessionId] = !("keepAwake" in session) && prior?.keepAwake ? { ...session, keepAwake: true } : session;
|
|
365
450
|
const tmpFile = configuration.configuration.sessionsFile + ".tmp";
|
|
366
451
|
configuration.writePrivateFileSync(tmpFile, JSON.stringify({ sessions: existing }, null, 2));
|
|
367
452
|
node_fs.renameSync(tmpFile, configuration.configuration.sessionsFile);
|
|
@@ -390,14 +475,47 @@ function deletePersistedSessions(sessionIds) {
|
|
|
390
475
|
}
|
|
391
476
|
}
|
|
392
477
|
|
|
393
|
-
|
|
478
|
+
var persistence = /*#__PURE__*/Object.freeze({
|
|
479
|
+
__proto__: null,
|
|
480
|
+
SUPPORTED_SCHEMA_VERSION: SUPPORTED_SCHEMA_VERSION,
|
|
481
|
+
SandboxConfigSchema: SandboxConfigSchema,
|
|
482
|
+
acquireDaemonLock: acquireDaemonLock,
|
|
483
|
+
clearCredentials: clearCredentials,
|
|
484
|
+
clearDaemonState: clearDaemonState,
|
|
485
|
+
clearMachineId: clearMachineId,
|
|
486
|
+
deletePersistedSessions: deletePersistedSessions,
|
|
487
|
+
persistSession: persistSession,
|
|
488
|
+
readCredentials: readCredentials,
|
|
489
|
+
readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay,
|
|
490
|
+
readDaemonState: readDaemonState,
|
|
491
|
+
readPersistedSessions: readPersistedSessions,
|
|
492
|
+
readSettings: readSettings,
|
|
493
|
+
readSettingsOutcome: readSettingsOutcome,
|
|
494
|
+
readTrackedClaudeSessionIds: readTrackedClaudeSessionIds,
|
|
495
|
+
readTrackedCodexThreadIds: readTrackedCodexThreadIds,
|
|
496
|
+
releaseDaemonLock: releaseDaemonLock,
|
|
497
|
+
updateSettings: updateSettings,
|
|
498
|
+
writeCredentialsDataKey: writeCredentialsDataKey,
|
|
499
|
+
writeCredentialsLegacy: writeCredentialsLegacy,
|
|
500
|
+
writeDaemonState: writeDaemonState,
|
|
501
|
+
writeSettings: writeSettings
|
|
502
|
+
});
|
|
503
|
+
|
|
504
|
+
exports.HIBERNATION_CAPABILITY = HIBERNATION_CAPABILITY;
|
|
505
|
+
exports.HIBERNATION_UNSUPPORTED_BACKOFF_MS = HIBERNATION_UNSUPPORTED_BACKOFF_MS;
|
|
394
506
|
exports.SandboxConfigSchema = SandboxConfigSchema;
|
|
395
507
|
exports.acquireDaemonLock = acquireDaemonLock;
|
|
396
508
|
exports.clearCredentials = clearCredentials;
|
|
397
509
|
exports.clearDaemonState = clearDaemonState;
|
|
398
510
|
exports.clearMachineId = clearMachineId;
|
|
511
|
+
exports.decideDaemonHibernation = decideDaemonHibernation;
|
|
399
512
|
exports.deletePersistedSessions = deletePersistedSessions;
|
|
513
|
+
exports.evaluateWrapperIdle = evaluateWrapperIdle;
|
|
514
|
+
exports.hibernationReplaySeq = hibernationReplaySeq;
|
|
515
|
+
exports.latchKeepAwake = latchKeepAwake;
|
|
516
|
+
exports.nextCheckDelay = nextCheckDelay;
|
|
400
517
|
exports.persistSession = persistSession;
|
|
518
|
+
exports.persistence = persistence;
|
|
401
519
|
exports.readCredentials = readCredentials;
|
|
402
520
|
exports.readCredentialsForConfiguredRelay = readCredentialsForConfiguredRelay;
|
|
403
521
|
exports.readDaemonState = readDaemonState;
|
|
@@ -407,6 +525,10 @@ exports.readSettingsOutcome = readSettingsOutcome;
|
|
|
407
525
|
exports.readTrackedClaudeSessionIds = readTrackedClaudeSessionIds;
|
|
408
526
|
exports.readTrackedCodexThreadIds = readTrackedCodexThreadIds;
|
|
409
527
|
exports.releaseDaemonLock = releaseDaemonLock;
|
|
528
|
+
exports.reportSignature = reportSignature;
|
|
529
|
+
exports.resolveCheckMs = resolveCheckMs;
|
|
530
|
+
exports.resolveIdleMs = resolveIdleMs;
|
|
531
|
+
exports.settingIdleMs = settingIdleMs;
|
|
410
532
|
exports.updateSettings = updateSettings;
|
|
411
533
|
exports.writeCredentialsDataKey = writeCredentialsDataKey;
|
|
412
534
|
exports.writeCredentialsLegacy = writeCredentialsLegacy;
|
|
@@ -1,16 +1,99 @@
|
|
|
1
1
|
import { readFile, open, unlink, stat, rename } from 'node:fs/promises';
|
|
2
2
|
import { existsSync, constants, readFileSync, unlinkSync, renameSync } from 'node:fs';
|
|
3
|
-
import { c as configuration, P as PRIVATE_FILE_MODE, w as writePrivateFileSync,
|
|
3
|
+
import { c as configuration, P as PRIVATE_FILE_MODE, w as writePrivateFileSync, a as hardenPrivateFileSync, e as ensurePrivateDirectory, b as writePrivateFile, h as hardenPrivateFile } from './configuration-BZo1JWNV.mjs';
|
|
4
4
|
import * as z from 'zod';
|
|
5
5
|
import { c as credentialRelayProblem, e as encodeBase64 } from './authRelay-DSAvg1uv.mjs';
|
|
6
|
-
import { l as logger } from './logger-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
6
|
+
import { l as logger } from './logger-C6zzu57a.mjs';
|
|
7
|
+
|
|
8
|
+
const HIBERNATION_CAPABILITY = "agent-hibernation-v1";
|
|
9
|
+
const HOUR_MS = 60 * 60 * 1e3;
|
|
10
|
+
const DEFAULT_HIBERNATION_IDLE_MS = 6 * HOUR_MS;
|
|
11
|
+
const MIN_SETTING_IDLE_MS = HOUR_MS;
|
|
12
|
+
const MAX_SETTING_IDLE_MS = 24 * HOUR_MS;
|
|
13
|
+
const DEFAULT_HIBERNATION_CHECK_MS = 5 * 60 * 1e3;
|
|
14
|
+
const HIBERNATION_UNSUPPORTED_BACKOFF_MS = 30 * 60 * 1e3;
|
|
15
|
+
const HIBERNATED_RECORD_MAX_AGE_MS = 90 * 24 * HOUR_MS;
|
|
16
|
+
const HIBERNATABLE_FLAVORS = ["claude", "codex"];
|
|
17
|
+
const NON_UI_ORIGIN_TAGS = ["teams", "automation", "assistant"];
|
|
18
|
+
function settingIdleMs(setting) {
|
|
19
|
+
if (setting === void 0 || setting === null) return DEFAULT_HIBERNATION_IDLE_MS;
|
|
20
|
+
if (typeof setting !== "number" || !Number.isFinite(setting)) return DEFAULT_HIBERNATION_IDLE_MS;
|
|
21
|
+
if (setting <= 0) return 0;
|
|
22
|
+
return Math.min(MAX_SETTING_IDLE_MS, Math.max(MIN_SETTING_IDLE_MS, Math.round(setting)));
|
|
23
|
+
}
|
|
24
|
+
function resolveIdleMs(setting, env = process.env) {
|
|
25
|
+
const raw = env.HAPPY_HIBERNATE_IDLE_MS;
|
|
26
|
+
if (raw !== void 0 && raw.trim() !== "") {
|
|
27
|
+
const value = Number(raw);
|
|
28
|
+
if (Number.isFinite(value) && value >= 0) return Math.round(value);
|
|
29
|
+
}
|
|
30
|
+
return settingIdleMs(setting);
|
|
31
|
+
}
|
|
32
|
+
function resolveCheckMs(env = process.env) {
|
|
33
|
+
const value = Number(env.HAPPY_HIBERNATE_CHECK_MS);
|
|
34
|
+
if (Number.isFinite(value) && value >= 1e3) return Math.round(value);
|
|
35
|
+
return DEFAULT_HIBERNATION_CHECK_MS;
|
|
36
|
+
}
|
|
37
|
+
function evaluateWrapperIdle(snapshot, idleMs, now) {
|
|
38
|
+
if (!(idleMs > 0)) return { ok: false, reason: "disabled" };
|
|
39
|
+
if (snapshot.exiting) return { ok: false, reason: "exiting" };
|
|
40
|
+
if (!snapshot.uiSession || snapshot.variant) return { ok: false, reason: "not-ui-session" };
|
|
41
|
+
if (!HIBERNATABLE_FLAVORS.includes(snapshot.flavor)) return { ok: false, reason: "unsupported-flavor" };
|
|
42
|
+
if (!snapshot.resumable) return { ok: false, reason: "not-resumable" };
|
|
43
|
+
if (snapshot.spawnedBy && snapshot.spawnedBy.trim()) return { ok: false, reason: "spawn-origin" };
|
|
44
|
+
if ((snapshot.tags ?? []).some((tag) => NON_UI_ORIGIN_TAGS.includes(tag))) return { ok: false, reason: "spawn-origin" };
|
|
45
|
+
if (snapshot.keepAwake) return { ok: false, reason: "keep-awake" };
|
|
46
|
+
if (snapshot.thinking) return { ok: false, reason: "turn-active" };
|
|
47
|
+
if (snapshot.queuedInputs > 0 || !snapshot.waitingForInput) return { ok: false, reason: "queued-input" };
|
|
48
|
+
if (snapshot.pendingRequests > 0) return { ok: false, reason: "pending-request" };
|
|
49
|
+
if (snapshot.backgroundTasks > 0) return { ok: false, reason: "background-tasks" };
|
|
50
|
+
if ((snapshot.scheduledWakeups ?? 0) > 0) return { ok: false, reason: "scheduled-wakeup" };
|
|
51
|
+
if (!(now - snapshot.lastActivityAt >= idleMs)) return { ok: false, reason: "recent-activity" };
|
|
52
|
+
return { ok: true };
|
|
53
|
+
}
|
|
54
|
+
function latchKeepAwake(raw, latched) {
|
|
55
|
+
if (raw === true) return true;
|
|
56
|
+
if (raw === false) return false;
|
|
57
|
+
return latched;
|
|
58
|
+
}
|
|
59
|
+
function reportSignature(report) {
|
|
60
|
+
return [report.flavor, report.lastActivityAt, report.keepAwake ? 1 : 0, report.pendingRequests, report.backgroundTasks].join("|");
|
|
61
|
+
}
|
|
62
|
+
function decideDaemonHibernation(input) {
|
|
63
|
+
const { report } = input;
|
|
64
|
+
if (!(input.idleMs > 0)) return { ok: false, reason: "disabled" };
|
|
65
|
+
if (!input.trackedLive) return { ok: false, reason: "not-tracked" };
|
|
66
|
+
if (input.teamsMember || input.trackedSpawnedBy === "teams") return { ok: false, reason: "teams" };
|
|
67
|
+
if (input.trackedSpawnedBy && input.trackedSpawnedBy.trim()) return { ok: false, reason: "spawn-origin" };
|
|
68
|
+
const local = evaluateWrapperIdle(report, input.idleMs, input.now);
|
|
69
|
+
if (!local.ok) return local;
|
|
70
|
+
if (input.turnActive) return { ok: false, reason: "turn-active" };
|
|
71
|
+
if (input.backgroundTasks > 0) return { ok: false, reason: "background-tasks" };
|
|
72
|
+
if (input.automationBound === null) return { ok: false, reason: "automations-unknown" };
|
|
73
|
+
if (input.automationBound.has(input.sessionId)) return { ok: false, reason: "automation-bound" };
|
|
74
|
+
if (input.previousSignature !== reportSignature(report)) return { ok: false, reason: "unconfirmed" };
|
|
75
|
+
if (input.hibernationInFlight) return { ok: false, reason: "busy" };
|
|
76
|
+
return { ok: true };
|
|
77
|
+
}
|
|
78
|
+
function nextCheckDelay(verdict, report, idleMs, checkMs, now) {
|
|
79
|
+
if (verdict.ok) return checkMs;
|
|
80
|
+
if (verdict.reason === "disabled") return Math.max(checkMs, HIBERNATION_UNSUPPORTED_BACKOFF_MS);
|
|
81
|
+
if (verdict.reason === "recent-activity") return Math.max(checkMs, report.lastActivityAt + idleMs - now);
|
|
82
|
+
return checkMs;
|
|
83
|
+
}
|
|
84
|
+
function readHibernationStamp(metadata) {
|
|
85
|
+
const raw = metadata?.hibernation;
|
|
86
|
+
if (!raw || typeof raw !== "object") return null;
|
|
87
|
+
const stamp = raw;
|
|
88
|
+
if (typeof stamp.at !== "number" || typeof stamp.seq !== "number" || !Number.isInteger(stamp.seq) || stamp.seq < 0) return null;
|
|
89
|
+
return { at: stamp.at, seq: stamp.seq, idleMs: typeof stamp.idleMs === "number" ? stamp.idleMs : 0, v: 1 };
|
|
90
|
+
}
|
|
91
|
+
function hibernationReplaySeq(metadata, serverSeq) {
|
|
92
|
+
const stamp = readHibernationStamp(metadata);
|
|
93
|
+
if (!stamp) return null;
|
|
94
|
+
if (stamp.seq >= serverSeq) return null;
|
|
95
|
+
return stamp.seq;
|
|
96
|
+
}
|
|
14
97
|
|
|
15
98
|
const SandboxConfigSchema = z.object({
|
|
16
99
|
enabled: z.boolean().default(false),
|
|
@@ -294,7 +377,8 @@ function readPersistedSessions() {
|
|
|
294
377
|
const now = Date.now();
|
|
295
378
|
const sessions = {};
|
|
296
379
|
for (const [id, session] of Object.entries(data.sessions)) {
|
|
297
|
-
|
|
380
|
+
const maxAge = typeof session.hibernatedAt === "number" && session.hibernatedAt >= session.savedAt ? HIBERNATED_RECORD_MAX_AGE_MS : SESSION_MAX_AGE_MS;
|
|
381
|
+
if (now - session.savedAt < maxAge) {
|
|
298
382
|
sessions[id] = session;
|
|
299
383
|
}
|
|
300
384
|
}
|
|
@@ -340,7 +424,8 @@ function readTrackedCodexThreadIds() {
|
|
|
340
424
|
function persistSession(sessionId, session) {
|
|
341
425
|
try {
|
|
342
426
|
const existing = readPersistedSessions();
|
|
343
|
-
existing[sessionId]
|
|
427
|
+
const prior = existing[sessionId];
|
|
428
|
+
existing[sessionId] = !("keepAwake" in session) && prior?.keepAwake ? { ...session, keepAwake: true } : session;
|
|
344
429
|
const tmpFile = configuration.sessionsFile + ".tmp";
|
|
345
430
|
writePrivateFileSync(tmpFile, JSON.stringify({ sessions: existing }, null, 2));
|
|
346
431
|
renameSync(tmpFile, configuration.sessionsFile);
|
|
@@ -369,4 +454,30 @@ function deletePersistedSessions(sessionIds) {
|
|
|
369
454
|
}
|
|
370
455
|
}
|
|
371
456
|
|
|
372
|
-
|
|
457
|
+
var persistence = /*#__PURE__*/Object.freeze({
|
|
458
|
+
__proto__: null,
|
|
459
|
+
SUPPORTED_SCHEMA_VERSION: SUPPORTED_SCHEMA_VERSION,
|
|
460
|
+
SandboxConfigSchema: SandboxConfigSchema,
|
|
461
|
+
acquireDaemonLock: acquireDaemonLock,
|
|
462
|
+
clearCredentials: clearCredentials,
|
|
463
|
+
clearDaemonState: clearDaemonState,
|
|
464
|
+
clearMachineId: clearMachineId,
|
|
465
|
+
deletePersistedSessions: deletePersistedSessions,
|
|
466
|
+
persistSession: persistSession,
|
|
467
|
+
readCredentials: readCredentials,
|
|
468
|
+
readCredentialsForConfiguredRelay: readCredentialsForConfiguredRelay,
|
|
469
|
+
readDaemonState: readDaemonState,
|
|
470
|
+
readPersistedSessions: readPersistedSessions,
|
|
471
|
+
readSettings: readSettings,
|
|
472
|
+
readSettingsOutcome: readSettingsOutcome,
|
|
473
|
+
readTrackedClaudeSessionIds: readTrackedClaudeSessionIds,
|
|
474
|
+
readTrackedCodexThreadIds: readTrackedCodexThreadIds,
|
|
475
|
+
releaseDaemonLock: releaseDaemonLock,
|
|
476
|
+
updateSettings: updateSettings,
|
|
477
|
+
writeCredentialsDataKey: writeCredentialsDataKey,
|
|
478
|
+
writeCredentialsLegacy: writeCredentialsLegacy,
|
|
479
|
+
writeDaemonState: writeDaemonState,
|
|
480
|
+
writeSettings: writeSettings
|
|
481
|
+
});
|
|
482
|
+
|
|
483
|
+
export { writeDaemonState as A, writeSettings as B, settingIdleMs as C, releaseDaemonLock as D, persistence as E, HIBERNATION_CAPABILITY as H, SandboxConfigSchema as S, resolveCheckMs as a, readPersistedSessions as b, readCredentialsForConfiguredRelay as c, readDaemonState as d, evaluateWrapperIdle as e, clearDaemonState as f, readCredentials as g, clearCredentials as h, clearMachineId as i, HIBERNATION_UNSUPPORTED_BACKOFF_MS as j, hibernationReplaySeq as k, latchKeepAwake as l, readSettingsOutcome as m, writeCredentialsDataKey as n, readTrackedClaudeSessionIds as o, readTrackedCodexThreadIds as p, reportSignature as q, readSettings as r, decideDaemonHibernation as s, nextCheckDelay as t, updateSettings as u, persistSession as v, writeCredentialsLegacy as w, acquireDaemonLock as x, resolveIdleMs as y, deletePersistedSessions as z };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var sessionModeFile = require('./sessionModeFile-
|
|
3
|
+
var sessionModeFile = require('./sessionModeFile-i-MVQRcU.cjs');
|
|
4
4
|
|
|
5
5
|
function detectDaemonSupervisor(env, platform = process.platform) {
|
|
6
6
|
const explicit = env.HAPPY_DAEMON_SUPERVISOR?.trim().toLowerCase();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as normalizeAcpPermissionMode } from './sessionModeFile-
|
|
1
|
+
import { n as normalizeAcpPermissionMode } from './sessionModeFile-BYxsFSvc.mjs';
|
|
2
2
|
|
|
3
3
|
function detectDaemonSupervisor(env, platform = process.platform) {
|
|
4
4
|
const explicit = env.HAPPY_DAEMON_SUPERVISOR?.trim().toLowerCase();
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var promises = require('node:fs/promises');
|
|
4
4
|
var node_crypto = require('node:crypto');
|
|
5
5
|
var path = require('node:path');
|
|
6
|
-
var configuration = require('./configuration-
|
|
6
|
+
var configuration = require('./configuration-DeuGrnej.cjs');
|
|
7
7
|
var resources = require('./resources-JDPugcDq.cjs');
|
|
8
8
|
|
|
9
9
|
async function publish(path, content, mode) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { mkdir, chmod, writeFile, rename } from 'node:fs/promises';
|
|
2
2
|
import { randomUUID } from 'node:crypto';
|
|
3
3
|
import { join } from 'node:path';
|
|
4
|
-
import { c as configuration } from './configuration-
|
|
4
|
+
import { c as configuration } from './configuration-BZo1JWNV.mjs';
|
|
5
5
|
import { P as PI_TEAMS_EXTENSION } from './resources-BdFBQi8r.mjs';
|
|
6
6
|
|
|
7
7
|
async function publish(path, content, mode) {
|
|
@@ -3,15 +3,15 @@ import { randomUUID } from 'node:crypto';
|
|
|
3
3
|
import { createServer } from 'node:http';
|
|
4
4
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
5
5
|
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
6
|
-
import { p as preparePiTeamsRuntime } from './piRuntime-
|
|
7
|
-
import { registerMcpTools, registerTerminalTitleSuggest } from './mcp-
|
|
6
|
+
import { p as preparePiTeamsRuntime } from './piRuntime-WMuI7f4q.mjs';
|
|
7
|
+
import { registerMcpTools, registerTerminalTitleSuggest } from './mcp-Yw93dOiW.mjs';
|
|
8
8
|
import './agentGuidance-BDYt2Qy2.mjs';
|
|
9
9
|
import 'node:fs/promises';
|
|
10
10
|
import 'node:os';
|
|
11
11
|
import 'zod';
|
|
12
|
-
import './logger-
|
|
13
|
-
import './persistence-
|
|
14
|
-
import './configuration-
|
|
12
|
+
import './logger-C6zzu57a.mjs';
|
|
13
|
+
import './persistence-B6M_W5iC.mjs';
|
|
14
|
+
import './configuration-BZo1JWNV.mjs';
|
|
15
15
|
import 'axios';
|
|
16
16
|
import 'tweetnacl';
|
|
17
17
|
import 'socket.io-client';
|
|
@@ -20,23 +20,23 @@ import 'node:fs';
|
|
|
20
20
|
import 'node:path';
|
|
21
21
|
import { r as resolveMcpTerminalId } from './terminalToolContext-CFeGeaNm.mjs';
|
|
22
22
|
import './resources-BdFBQi8r.mjs';
|
|
23
|
-
import './tools-
|
|
24
|
-
import './client-
|
|
25
|
-
import './context-
|
|
23
|
+
import './tools-BcLUrC57.mjs';
|
|
24
|
+
import './client-Bg6-mQKO.mjs';
|
|
25
|
+
import './context-DZIIcfld.mjs';
|
|
26
26
|
import '@modelcontextprotocol/sdk/server/stdio.js';
|
|
27
|
-
import './controlClient-
|
|
27
|
+
import './controlClient-CXD-Xdny.mjs';
|
|
28
28
|
import './limits-DIo7rEBR.mjs';
|
|
29
|
-
import './downloadTarget-
|
|
30
|
-
import './sessionOps-
|
|
29
|
+
import './downloadTarget-CaISZbNy.mjs';
|
|
30
|
+
import './sessionOps-CBXsQGV5.mjs';
|
|
31
31
|
import './authRelay-DSAvg1uv.mjs';
|
|
32
|
-
import './time-
|
|
32
|
+
import './time-CN0jVVir.mjs';
|
|
33
33
|
import './backgroundTaskActivity-8PdPxrvy.mjs';
|
|
34
|
-
import './remoteSessionClient-
|
|
34
|
+
import './remoteSessionClient-Dx0M2MXV.mjs';
|
|
35
35
|
import './ids-DU6sLx4C.mjs';
|
|
36
|
-
import './bootstrap-
|
|
36
|
+
import './bootstrap-DklT121U.mjs';
|
|
37
37
|
import './previewPath-CXN4Vag0.mjs';
|
|
38
38
|
import './terminalTitleSuggest-CeKsX_V6.mjs';
|
|
39
|
-
import './titleGenerator-
|
|
39
|
+
import './titleGenerator-CegRJ47n.mjs';
|
|
40
40
|
import 'node:module';
|
|
41
41
|
import './oneShotPrompts-DT4p6RNd.mjs';
|
|
42
42
|
import './projectPath-BTBIMB57.mjs';
|
|
@@ -45,7 +45,7 @@ import 'url';
|
|
|
45
45
|
import './trimIdent-BAjmv_TG.mjs';
|
|
46
46
|
import 'chalk';
|
|
47
47
|
import 'node:util';
|
|
48
|
-
import './package-
|
|
48
|
+
import './package-5xAdq5fu.mjs';
|
|
49
49
|
import './tmuxSocket-B8Yx20sT.mjs';
|
|
50
50
|
|
|
51
51
|
async function startPiTerminalTools(terminalId) {
|
|
@@ -5,15 +5,15 @@ var node_crypto = require('node:crypto');
|
|
|
5
5
|
var node_http = require('node:http');
|
|
6
6
|
var mcp_js = require('@modelcontextprotocol/sdk/server/mcp.js');
|
|
7
7
|
var streamableHttp_js = require('@modelcontextprotocol/sdk/server/streamableHttp.js');
|
|
8
|
-
var piRuntime = require('./piRuntime-
|
|
9
|
-
var mcp = require('./mcp-
|
|
8
|
+
var piRuntime = require('./piRuntime-DkUg8_5q.cjs');
|
|
9
|
+
var mcp = require('./mcp-Dwku1p2I.cjs');
|
|
10
10
|
require('./agentGuidance-BtBx2xxE.cjs');
|
|
11
11
|
require('node:fs/promises');
|
|
12
12
|
require('node:os');
|
|
13
13
|
require('zod');
|
|
14
|
-
require('./logger-
|
|
15
|
-
require('./persistence-
|
|
16
|
-
require('./configuration-
|
|
14
|
+
require('./logger-Ockf1cjN.cjs');
|
|
15
|
+
require('./persistence-B5oT6oQ9.cjs');
|
|
16
|
+
require('./configuration-DeuGrnej.cjs');
|
|
17
17
|
require('axios');
|
|
18
18
|
require('tweetnacl');
|
|
19
19
|
require('socket.io-client');
|
|
@@ -22,23 +22,23 @@ require('node:fs');
|
|
|
22
22
|
require('node:path');
|
|
23
23
|
var terminalToolContext = require('./terminalToolContext-DoV9Gs7K.cjs');
|
|
24
24
|
require('./resources-JDPugcDq.cjs');
|
|
25
|
-
require('./tools-
|
|
26
|
-
require('./client-
|
|
27
|
-
require('./context-
|
|
25
|
+
require('./tools-DuWKlc0k.cjs');
|
|
26
|
+
require('./client-DZpkmS5l.cjs');
|
|
27
|
+
require('./context-BhvZtm3j.cjs');
|
|
28
28
|
require('@modelcontextprotocol/sdk/server/stdio.js');
|
|
29
|
-
require('./controlClient-
|
|
29
|
+
require('./controlClient-IDE3se23.cjs');
|
|
30
30
|
require('./limits-C-a7gr04.cjs');
|
|
31
|
-
require('./downloadTarget-
|
|
32
|
-
require('./sessionOps-
|
|
31
|
+
require('./downloadTarget-Dist9t2e.cjs');
|
|
32
|
+
require('./sessionOps-BAQ_80Rg.cjs');
|
|
33
33
|
require('./authRelay-BdYkC1Po.cjs');
|
|
34
|
-
require('./time-
|
|
34
|
+
require('./time-uSKpEhew.cjs');
|
|
35
35
|
require('./backgroundTaskActivity-CBvUdj39.cjs');
|
|
36
|
-
require('./remoteSessionClient-
|
|
36
|
+
require('./remoteSessionClient-B2pOMZRw.cjs');
|
|
37
37
|
require('./ids-B6ZC0HGt.cjs');
|
|
38
|
-
require('./bootstrap-
|
|
38
|
+
require('./bootstrap-DSX64t23.cjs');
|
|
39
39
|
require('./previewPath-B0rBdhy1.cjs');
|
|
40
40
|
require('./terminalTitleSuggest-DhvRFX3H.cjs');
|
|
41
|
-
require('./titleGenerator-
|
|
41
|
+
require('./titleGenerator-CLIXjn9b.cjs');
|
|
42
42
|
require('node:module');
|
|
43
43
|
require('./oneShotPrompts-CL0dip9C.cjs');
|
|
44
44
|
require('./projectPath-ChLhdOyt.cjs');
|
|
@@ -47,7 +47,7 @@ require('url');
|
|
|
47
47
|
require('./trimIdent-4gvk9Wk6.cjs');
|
|
48
48
|
require('chalk');
|
|
49
49
|
require('node:util');
|
|
50
|
-
require('./package-
|
|
50
|
+
require('./package-DfoyJe1O.cjs');
|
|
51
51
|
require('./tmuxSocket-D-Xt6Vn-.cjs');
|
|
52
52
|
|
|
53
53
|
async function startPiTerminalTools(terminalId) {
|