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
|
@@ -1,83 +1,83 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var logger = require('./logger-
|
|
4
|
-
var controlClient = require('./controlClient-
|
|
3
|
+
var logger = require('./logger-B_MWPbZz.cjs');
|
|
4
|
+
var controlClient = require('./controlClient-BI6Fw3fQ.cjs');
|
|
5
5
|
var backgroundTaskActivity = require('./backgroundTaskActivity-CBvUdj39.cjs');
|
|
6
6
|
var node_crypto = require('node:crypto');
|
|
7
7
|
var messageBuffer = require('./messageBuffer-fJMH6uY8.cjs');
|
|
8
8
|
var index = require('./index-D3kI0hDR.cjs');
|
|
9
9
|
var claudeAgentSdk = require('@anthropic-ai/claude-agent-sdk');
|
|
10
10
|
var permissionMode = require('./permissionMode-CrV-XuMs.cjs');
|
|
11
|
-
var systemPrompt = require('./systemPrompt-
|
|
11
|
+
var systemPrompt = require('./systemPrompt-DwOddbuG.cjs');
|
|
12
12
|
var path$1 = require('node:path');
|
|
13
|
-
var specialCommands = require('./specialCommands-
|
|
13
|
+
var specialCommands = require('./specialCommands-DmJMKspE.cjs');
|
|
14
14
|
require('axios');
|
|
15
15
|
require('node:events');
|
|
16
16
|
require('socket.io-client');
|
|
17
|
-
var attachmentLimits = require('./attachmentLimits-
|
|
17
|
+
var attachmentLimits = require('./attachmentLimits-BEYEEBm8.cjs');
|
|
18
18
|
require('tweetnacl');
|
|
19
|
-
var configuration = require('./configuration-
|
|
19
|
+
var configuration = require('./configuration-C3piBtxY.cjs');
|
|
20
20
|
require('./index-C9hI8a10.cjs');
|
|
21
|
-
require('./registerCommonHandlers-
|
|
21
|
+
require('./registerCommonHandlers-DVYB3iVn.cjs');
|
|
22
22
|
require('os');
|
|
23
23
|
require('child_process');
|
|
24
24
|
require('@paralleldrive/cuid2');
|
|
25
|
-
require('./persistence-
|
|
25
|
+
require('./persistence-BYGl0QYw.cjs');
|
|
26
26
|
var contentLogMetadata = require('./contentLogMetadata-ZSFk_NjQ.cjs');
|
|
27
27
|
require('chalk');
|
|
28
28
|
var types = require('./types-CRS-srZK.cjs');
|
|
29
29
|
var path = require('./path-B7zW-WwE.cjs');
|
|
30
30
|
var fs = require('fs/promises');
|
|
31
|
-
var time = require('./time-
|
|
31
|
+
var time = require('./time-BXvtjhe9.cjs');
|
|
32
32
|
var node_fs = require('node:fs');
|
|
33
|
-
var deterministicJson = require('./deterministicJson-
|
|
34
|
-
var sessionScanner = require('./sessionScanner-
|
|
33
|
+
var deterministicJson = require('./deterministicJson-C7O2ulKY.cjs');
|
|
34
|
+
var sessionScanner = require('./sessionScanner-i-cgwFVw.cjs');
|
|
35
35
|
var node_child_process = require('node:child_process');
|
|
36
36
|
var streamRelay = require('./streamRelay-Ce9sgcOV.cjs');
|
|
37
|
-
var attachmentContent = require('./attachmentContent-
|
|
37
|
+
var attachmentContent = require('./attachmentContent-HcJqFQW8.cjs');
|
|
38
38
|
var promises = require('node:fs/promises');
|
|
39
|
-
var claudeSessionFork = require('./claudeSessionFork-
|
|
40
|
-
var registerKillSessionHandler = require('./registerKillSessionHandler-
|
|
41
|
-
var doctor = require('./doctor-
|
|
39
|
+
var claudeSessionFork = require('./claudeSessionFork-Byd8zD1U.cjs');
|
|
40
|
+
var registerKillSessionHandler = require('./registerKillSessionHandler-BwXGKtg_.cjs');
|
|
41
|
+
var doctor = require('./doctor-BykBaMTr.cjs');
|
|
42
42
|
var node_http = require('node:http');
|
|
43
43
|
var editPaths = require('./editPaths-Bqp4OFPw.cjs');
|
|
44
44
|
var projectPath = require('./projectPath-ChLhdOyt.cjs');
|
|
45
|
-
var titleGenerator = require('./titleGenerator-
|
|
45
|
+
var titleGenerator = require('./titleGenerator-B07bZA0V.cjs');
|
|
46
46
|
var oneShotPrompts = require('./oneShotPrompts-CL0dip9C.cjs');
|
|
47
|
-
var reportProgressTool = require('./reportProgressTool-
|
|
47
|
+
var reportProgressTool = require('./reportProgressTool-D4KB_4cP.cjs');
|
|
48
48
|
require('node:util');
|
|
49
49
|
require('./smallFastModel-D_uxGMo3.cjs');
|
|
50
50
|
require('./trimIdent-4gvk9Wk6.cjs');
|
|
51
51
|
require('node:os');
|
|
52
52
|
require('./agentGuidance-BtBx2xxE.cjs');
|
|
53
|
-
require('./rateLimitWindows-
|
|
53
|
+
require('./rateLimitWindows-CusGIqlq.cjs');
|
|
54
54
|
require('zod');
|
|
55
|
-
require('./package-
|
|
55
|
+
require('./package-C9ZP9bpX.cjs');
|
|
56
56
|
require('util');
|
|
57
57
|
require('crypto');
|
|
58
58
|
require('path');
|
|
59
59
|
require('cross-spawn');
|
|
60
60
|
require('./authRelay-BdYkC1Po.cjs');
|
|
61
|
-
require('./client-
|
|
62
|
-
require('./context-
|
|
63
|
-
require('./sessionOps-
|
|
61
|
+
require('./client-BKnKRLSt.cjs');
|
|
62
|
+
require('./context-Jrq4-eCZ.cjs');
|
|
63
|
+
require('./sessionOps-DzbZI3Eq.cjs');
|
|
64
64
|
require('./resources-JDPugcDq.cjs');
|
|
65
|
-
require('./tools-
|
|
66
|
-
require('./peerTools-
|
|
65
|
+
require('./tools-DJIANHSh.cjs');
|
|
66
|
+
require('./peerTools-Dkbu7gag.cjs');
|
|
67
67
|
require('./ids-B6ZC0HGt.cjs');
|
|
68
|
-
require('./remoteSessionClient-
|
|
68
|
+
require('./remoteSessionClient-PyUAIhwK.cjs');
|
|
69
69
|
require('@modelcontextprotocol/sdk/server/mcp.js');
|
|
70
70
|
require('@modelcontextprotocol/sdk/server/streamableHttp.js');
|
|
71
71
|
require('./limits-C-a7gr04.cjs');
|
|
72
|
-
require('./downloadTarget-
|
|
72
|
+
require('./downloadTarget-CWTb2-EM.cjs');
|
|
73
73
|
require('./terminals-B_bfC9c2.cjs');
|
|
74
74
|
require('./terminalTitleSuggest-DhvRFX3H.cjs');
|
|
75
75
|
require('./tmuxSocket-D-Xt6Vn-.cjs');
|
|
76
|
-
require('./bootstrap-
|
|
76
|
+
require('./bootstrap-Dj8WBiR2.cjs');
|
|
77
77
|
require('./previewPath-B0rBdhy1.cjs');
|
|
78
|
-
require('./sync-
|
|
78
|
+
require('./sync-Bvc-vh6C.cjs');
|
|
79
79
|
require('./transcriptCursor-DcXGLeSc.cjs');
|
|
80
|
-
require('./startFileWatcher-
|
|
80
|
+
require('./startFileWatcher-xKo8AoYl.cjs');
|
|
81
81
|
require('node:readline');
|
|
82
82
|
require('./doctor-u46qYYKX.cjs');
|
|
83
83
|
require('ps-list');
|
|
@@ -87,9 +87,44 @@ require('fs');
|
|
|
87
87
|
require('./cliUpdate-DsKXPFYp.cjs');
|
|
88
88
|
require('url');
|
|
89
89
|
require('node:module');
|
|
90
|
-
require('./client-
|
|
90
|
+
require('./client-D0T5-6Ds.cjs');
|
|
91
91
|
require('./precheckCompat-CWOi5c9L.cjs');
|
|
92
92
|
|
|
93
|
+
const SCHEDULE_WAKEUP_GRACE_MS = 6e4;
|
|
94
|
+
function createScheduledWakeupTracker() {
|
|
95
|
+
const crons = /* @__PURE__ */ new Set();
|
|
96
|
+
const wakeups = /* @__PURE__ */ new Map();
|
|
97
|
+
let cronDeletes = 0;
|
|
98
|
+
function observe(message, now = Date.now()) {
|
|
99
|
+
const m = message;
|
|
100
|
+
const content = Array.isArray(m?.message?.content) ? m.message.content : [];
|
|
101
|
+
if (m?.type === "assistant") {
|
|
102
|
+
for (const block of content) {
|
|
103
|
+
if (block?.type !== "tool_use" || typeof block.id !== "string") continue;
|
|
104
|
+
if (block.name === "CronCreate") crons.add(block.id);
|
|
105
|
+
if (block.name === "CronDelete") cronDeletes += 1;
|
|
106
|
+
if (block.name === "ScheduleWakeup") {
|
|
107
|
+
const delay = Number(block.input?.delaySeconds);
|
|
108
|
+
wakeups.set(block.id, now + (Number.isFinite(delay) && delay > 0 ? delay * 1e3 : 0) + SCHEDULE_WAKEUP_GRACE_MS);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (m?.type === "user") {
|
|
113
|
+
for (const block of content) {
|
|
114
|
+
if (block?.type === "tool_result" && block.is_error === true && typeof block.tool_use_id === "string") {
|
|
115
|
+
crons.delete(block.tool_use_id);
|
|
116
|
+
wakeups.delete(block.tool_use_id);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
function pending(now = Date.now()) {
|
|
122
|
+
for (const [id, until] of wakeups) if (until <= now) wakeups.delete(id);
|
|
123
|
+
return Math.max(0, crons.size - cronDeletes) + wakeups.size;
|
|
124
|
+
}
|
|
125
|
+
return { observe, pending };
|
|
126
|
+
}
|
|
127
|
+
|
|
93
128
|
class Session {
|
|
94
129
|
path;
|
|
95
130
|
logPath;
|
|
@@ -116,6 +151,8 @@ class Session {
|
|
|
116
151
|
* for the Claude runner: an empty one says "nothing running", which is a
|
|
117
152
|
* different statement from a runner that has no such notion (undefined). */
|
|
118
153
|
backgroundTasks = [];
|
|
154
|
+
/** B-587 review P3-4: CronCreate / ScheduleWakeup pending in this Claude process. */
|
|
155
|
+
scheduledWakeups = createScheduledWakeupTracker();
|
|
119
156
|
/**
|
|
120
157
|
* Window after a user-initiated abort during which stray promise rejections
|
|
121
158
|
* from tearing down the SDK query (MCP transports, in-flight tool calls,
|
|
@@ -3505,6 +3542,7 @@ async function claudeRemoteLauncher(session, onPermissionModeChange, onEffective
|
|
|
3505
3542
|
runtimeControls.observe(message);
|
|
3506
3543
|
backgroundTasks.observe(message);
|
|
3507
3544
|
session.setBackgroundTasks(backgroundTasks.list());
|
|
3545
|
+
session.scheduledWakeups.observe(message);
|
|
3508
3546
|
if (isRuntimeCheckpointReplay(message)) return;
|
|
3509
3547
|
if (message.type === "user" && isClaudeInterruptSentinelContent(message.message.content)) {
|
|
3510
3548
|
sdkToLogConverter.convert(message);
|
|
@@ -3925,7 +3963,7 @@ async function loop(opts) {
|
|
|
3925
3963
|
logger.logger.debug(`[loop] Iteration with mode: ${mode}`);
|
|
3926
3964
|
switch (mode) {
|
|
3927
3965
|
case "local": {
|
|
3928
|
-
const { claudeLocalLauncher } = await Promise.resolve().then(function () { return require('./claudeLocalLauncher-
|
|
3966
|
+
const { claudeLocalLauncher } = await Promise.resolve().then(function () { return require('./claudeLocalLauncher-Cf9QeYDT.cjs'); });
|
|
3929
3967
|
const result = await claudeLocalLauncher(session);
|
|
3930
3968
|
switch (result.type) {
|
|
3931
3969
|
case "switch":
|
|
@@ -4100,6 +4138,12 @@ async function settleSessionOnExit(sessionId, intent, deps) {
|
|
|
4100
4138
|
archiveReason: "User terminated"
|
|
4101
4139
|
}));
|
|
4102
4140
|
}
|
|
4141
|
+
if (intent === "hibernate" && deps.hibernation) {
|
|
4142
|
+
const stamp = deps.hibernation;
|
|
4143
|
+
const handler = (currentMetadata) => ({ ...currentMetadata, hibernation: stamp });
|
|
4144
|
+
const landed = deps.updateMetadataAndWait ? await deps.updateMetadataAndWait(handler) : (deps.updateMetadata(handler), false);
|
|
4145
|
+
if (!landed) deps.log?.("[START] hibernation stamp not confirmed before going offline");
|
|
4146
|
+
}
|
|
4103
4147
|
deps.sendSessionDeath();
|
|
4104
4148
|
try {
|
|
4105
4149
|
if (intent === "archive") await deps.archiveSession(sessionId);
|
|
@@ -4110,8 +4154,14 @@ async function settleSessionOnExit(sessionId, intent, deps) {
|
|
|
4110
4154
|
}
|
|
4111
4155
|
class SessionExitGate {
|
|
4112
4156
|
decided = null;
|
|
4157
|
+
hibernateCommitted = false;
|
|
4158
|
+
deferred = null;
|
|
4113
4159
|
/** Returns the intent to act on, or null when cleanup already started. */
|
|
4114
4160
|
claim(intent) {
|
|
4161
|
+
if (this.decided === "hibernate" && !this.hibernateCommitted && intent !== "hibernate") {
|
|
4162
|
+
if (this.deferred !== "archive") this.deferred = intent;
|
|
4163
|
+
return null;
|
|
4164
|
+
}
|
|
4115
4165
|
if (this.decided !== null) return null;
|
|
4116
4166
|
this.decided = intent;
|
|
4117
4167
|
return intent;
|
|
@@ -4119,6 +4169,25 @@ class SessionExitGate {
|
|
|
4119
4169
|
get current() {
|
|
4120
4170
|
return this.decided;
|
|
4121
4171
|
}
|
|
4172
|
+
/** B-587: an exit was requested while the hibernation was deciding. */
|
|
4173
|
+
get exitRequested() {
|
|
4174
|
+
return this.deferred !== null;
|
|
4175
|
+
}
|
|
4176
|
+
/** B-587: the hibernation passed its last check — no more deferral. */
|
|
4177
|
+
commitHibernate() {
|
|
4178
|
+
if (this.decided === "hibernate") this.hibernateCommitted = true;
|
|
4179
|
+
}
|
|
4180
|
+
/**
|
|
4181
|
+
* B-587: a hibernation that aborted hands the exit back. Returns the exit
|
|
4182
|
+
* deferred meanwhile (the caller must run it now), or null.
|
|
4183
|
+
*/
|
|
4184
|
+
release(intent) {
|
|
4185
|
+
if (this.decided !== intent || intent === "hibernate" && this.hibernateCommitted) return null;
|
|
4186
|
+
this.decided = null;
|
|
4187
|
+
const deferred = this.deferred;
|
|
4188
|
+
this.deferred = null;
|
|
4189
|
+
return deferred;
|
|
4190
|
+
}
|
|
4122
4191
|
}
|
|
4123
4192
|
function exitIntentFromArchiveFlag(archive) {
|
|
4124
4193
|
return archive ?? true ? "archive" : "offline";
|
|
@@ -1,86 +1,86 @@
|
|
|
1
|
-
import { l as logger } from './logger-
|
|
2
|
-
import {
|
|
3
|
-
export {
|
|
1
|
+
import { l as logger } from './logger-CbBv3q_b.mjs';
|
|
2
|
+
import { o as notifyDaemonSessionEvent, q as notifyDaemonClaudeAuthFailed } from './controlClient-DTheOlvC.mjs';
|
|
3
|
+
export { j as reportSessionEditToDaemon } from './controlClient-DTheOlvC.mjs';
|
|
4
4
|
import { s as sameBackgroundTasks, c as createBackgroundTaskTracker } from './backgroundTaskActivity-8PdPxrvy.mjs';
|
|
5
5
|
import { randomInt, randomUUID, createHash } from 'node:crypto';
|
|
6
6
|
import { M as MessageBuffer } from './messageBuffer-BWlGgR3A.mjs';
|
|
7
7
|
import { query } from './index-B6UGRQ7h.mjs';
|
|
8
8
|
import { AbortError } from '@anthropic-ai/claude-agent-sdk';
|
|
9
9
|
import { m as mapToClaudeMode, p as parseClaudePermissionMode, c as resolveRemoteClaudePermissionMode } from './permissionMode-CH4FoZfU.mjs';
|
|
10
|
-
import { c as claudeCheckSession, s as systemPrompt } from './systemPrompt-
|
|
10
|
+
import { c as claudeCheckSession, s as systemPrompt } from './systemPrompt-BNIkP3tR.mjs';
|
|
11
11
|
import { join, resolve, dirname } from 'node:path';
|
|
12
|
-
import { p as parseSpecialCommand, w as wrapperRateLimitReporter } from './specialCommands-
|
|
12
|
+
import { p as parseSpecialCommand, w as wrapperRateLimitReporter } from './specialCommands-DisVxagO.mjs';
|
|
13
13
|
import 'axios';
|
|
14
14
|
import 'node:events';
|
|
15
15
|
import 'socket.io-client';
|
|
16
|
-
import { A as AsyncLock } from './attachmentLimits-
|
|
16
|
+
import { A as AsyncLock } from './attachmentLimits-CxG3T18E.mjs';
|
|
17
17
|
import 'tweetnacl';
|
|
18
|
-
import { c as configuration, e as ensurePrivateDirectory } from './configuration-
|
|
18
|
+
import { c as configuration, e as ensurePrivateDirectory } from './configuration-WspKd2C2.mjs';
|
|
19
19
|
import './index-B0HEEYGh.mjs';
|
|
20
|
-
import './registerCommonHandlers-
|
|
20
|
+
import './registerCommonHandlers-B0PVff2U.mjs';
|
|
21
21
|
import 'os';
|
|
22
22
|
import 'child_process';
|
|
23
23
|
import '@paralleldrive/cuid2';
|
|
24
|
-
import './persistence-
|
|
24
|
+
import './persistence-ON0zpHfb.mjs';
|
|
25
25
|
import { c as contentLogMetadata } from './contentLogMetadata-BlWI0egu.mjs';
|
|
26
26
|
import 'chalk';
|
|
27
27
|
export { R as RawJSONLinesSchema } from './types-CkqAACXx.mjs';
|
|
28
28
|
import { g as getProjectPath } from './path-D2wdaNSk.mjs';
|
|
29
29
|
import { access } from 'fs/promises';
|
|
30
|
-
import { d as delay } from './time-
|
|
30
|
+
import { d as delay } from './time-PG5Dfwdv.mjs';
|
|
31
31
|
import { mkdirSync, writeFileSync, readFileSync, unlinkSync, renameSync, statSync, existsSync } from 'node:fs';
|
|
32
|
-
import { h as hashObject } from './deterministicJson-
|
|
33
|
-
export { s as startHappyServer } from './deterministicJson-
|
|
34
|
-
import { F as Future } from './sessionScanner-
|
|
35
|
-
export { c as createSessionScanner } from './sessionScanner-
|
|
32
|
+
import { h as hashObject } from './deterministicJson-BMMifViN.mjs';
|
|
33
|
+
export { s as startHappyServer } from './deterministicJson-BMMifViN.mjs';
|
|
34
|
+
import { F as Future } from './sessionScanner-Q_Ei2flB.mjs';
|
|
35
|
+
export { c as createSessionScanner } from './sessionScanner-Q_Ei2flB.mjs';
|
|
36
36
|
import { execSync } from 'node:child_process';
|
|
37
37
|
import { S as StreamRelay } from './streamRelay-Iogsh51a.mjs';
|
|
38
|
-
import { C as CLAUDE_ATTACHMENT_KINDS, c as chatAttachmentDirectory, a as stageClaudeAttachments, b as appendStagedAttachmentsToPrompt } from './attachmentContent-
|
|
38
|
+
import { C as CLAUDE_ATTACHMENT_KINDS, c as chatAttachmentDirectory, a as stageClaudeAttachments, b as appendStagedAttachmentsToPrompt } from './attachmentContent-j875mwU7.mjs';
|
|
39
39
|
import { writeFile, rename, unlink, readFile } from 'node:fs/promises';
|
|
40
|
-
import { F as ForkSourceMissingError } from './claudeSessionFork-
|
|
41
|
-
export { M as MessageQueue2, r as registerKillSessionHandler } from './registerKillSessionHandler-
|
|
42
|
-
export { g as getEnvironmentInfo } from './doctor-
|
|
40
|
+
import { F as ForkSourceMissingError } from './claudeSessionFork-CMzAva8G.mjs';
|
|
41
|
+
export { M as MessageQueue2, r as registerKillSessionHandler } from './registerKillSessionHandler-BJMHJHXe.mjs';
|
|
42
|
+
export { g as getEnvironmentInfo } from './doctor-D1KKyPzB.mjs';
|
|
43
43
|
import { createServer } from 'node:http';
|
|
44
44
|
export { E as EditReportThrottle, b as extractClaudeEditPaths } from './editPaths-BVfS_FFL.mjs';
|
|
45
45
|
import { p as projectPath } from './projectPath-BTBIMB57.mjs';
|
|
46
|
-
import { r as resolveClaudeBinary, a as runClaudeOneShot } from './titleGenerator-
|
|
47
|
-
export { T as TitleGenerator } from './titleGenerator-
|
|
46
|
+
import { r as resolveClaudeBinary, a as runClaudeOneShot } from './titleGenerator-CIzfpfZW.mjs';
|
|
47
|
+
export { T as TitleGenerator } from './titleGenerator-CIzfpfZW.mjs';
|
|
48
48
|
import { B as BOARD_ANALYZER_PROMPT_PREFIX } from './oneShotPrompts-DT4p6RNd.mjs';
|
|
49
|
-
import { i as isSelfReportFresh } from './reportProgressTool-
|
|
50
|
-
export { c as createSelfReportState } from './reportProgressTool-
|
|
49
|
+
import { i as isSelfReportFresh } from './reportProgressTool-BvB13EwC.mjs';
|
|
50
|
+
export { c as createSelfReportState } from './reportProgressTool-BvB13EwC.mjs';
|
|
51
51
|
import 'node:util';
|
|
52
52
|
import './smallFastModel-BLNgMrwR.mjs';
|
|
53
53
|
import './trimIdent-BAjmv_TG.mjs';
|
|
54
54
|
import 'node:os';
|
|
55
55
|
import './agentGuidance-BDYt2Qy2.mjs';
|
|
56
|
-
import './rateLimitWindows-
|
|
56
|
+
import './rateLimitWindows-vZ9Bo7aT.mjs';
|
|
57
57
|
import 'zod';
|
|
58
|
-
import './package-
|
|
58
|
+
import './package-DU1DxhH9.mjs';
|
|
59
59
|
import 'util';
|
|
60
60
|
import 'crypto';
|
|
61
61
|
import 'path';
|
|
62
62
|
import 'cross-spawn';
|
|
63
63
|
import './authRelay-DSAvg1uv.mjs';
|
|
64
|
-
import './client-
|
|
65
|
-
import './context-
|
|
66
|
-
import './sessionOps-
|
|
64
|
+
import './client-Dsfy_SAb.mjs';
|
|
65
|
+
import './context-Cr6a3NTg.mjs';
|
|
66
|
+
import './sessionOps-DZRH4-hV.mjs';
|
|
67
67
|
import './resources-BdFBQi8r.mjs';
|
|
68
|
-
import './tools-
|
|
69
|
-
import './peerTools-
|
|
68
|
+
import './tools-D91mq5Ib.mjs';
|
|
69
|
+
import './peerTools-os2DVjA0.mjs';
|
|
70
70
|
import './ids-DU6sLx4C.mjs';
|
|
71
|
-
import './remoteSessionClient-
|
|
71
|
+
import './remoteSessionClient-BzPXSC21.mjs';
|
|
72
72
|
import '@modelcontextprotocol/sdk/server/mcp.js';
|
|
73
73
|
import '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
74
74
|
import './limits-DIo7rEBR.mjs';
|
|
75
|
-
import './downloadTarget-
|
|
75
|
+
import './downloadTarget-Cp48jrIP.mjs';
|
|
76
76
|
import './terminals-Dlg0x3nY.mjs';
|
|
77
77
|
import './terminalTitleSuggest-CeKsX_V6.mjs';
|
|
78
78
|
import './tmuxSocket-B8Yx20sT.mjs';
|
|
79
|
-
import './bootstrap-
|
|
79
|
+
import './bootstrap-BSOxYpaP.mjs';
|
|
80
80
|
import './previewPath-CXN4Vag0.mjs';
|
|
81
|
-
import './sync-
|
|
81
|
+
import './sync-CCwYpJMS.mjs';
|
|
82
82
|
import './transcriptCursor-B7T_gkQ0.mjs';
|
|
83
|
-
import './startFileWatcher-
|
|
83
|
+
import './startFileWatcher-CeK1k5gt.mjs';
|
|
84
84
|
import 'node:readline';
|
|
85
85
|
import './doctor-BPkYWSuq.mjs';
|
|
86
86
|
import 'ps-list';
|
|
@@ -90,9 +90,44 @@ import 'fs';
|
|
|
90
90
|
import './cliUpdate-Y34VGe9Y.mjs';
|
|
91
91
|
import 'url';
|
|
92
92
|
import 'node:module';
|
|
93
|
-
import './client-
|
|
93
|
+
import './client-C7FYMer0.mjs';
|
|
94
94
|
import './precheckCompat-DeEbilbr.mjs';
|
|
95
95
|
|
|
96
|
+
const SCHEDULE_WAKEUP_GRACE_MS = 6e4;
|
|
97
|
+
function createScheduledWakeupTracker() {
|
|
98
|
+
const crons = /* @__PURE__ */ new Set();
|
|
99
|
+
const wakeups = /* @__PURE__ */ new Map();
|
|
100
|
+
let cronDeletes = 0;
|
|
101
|
+
function observe(message, now = Date.now()) {
|
|
102
|
+
const m = message;
|
|
103
|
+
const content = Array.isArray(m?.message?.content) ? m.message.content : [];
|
|
104
|
+
if (m?.type === "assistant") {
|
|
105
|
+
for (const block of content) {
|
|
106
|
+
if (block?.type !== "tool_use" || typeof block.id !== "string") continue;
|
|
107
|
+
if (block.name === "CronCreate") crons.add(block.id);
|
|
108
|
+
if (block.name === "CronDelete") cronDeletes += 1;
|
|
109
|
+
if (block.name === "ScheduleWakeup") {
|
|
110
|
+
const delay = Number(block.input?.delaySeconds);
|
|
111
|
+
wakeups.set(block.id, now + (Number.isFinite(delay) && delay > 0 ? delay * 1e3 : 0) + SCHEDULE_WAKEUP_GRACE_MS);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
if (m?.type === "user") {
|
|
116
|
+
for (const block of content) {
|
|
117
|
+
if (block?.type === "tool_result" && block.is_error === true && typeof block.tool_use_id === "string") {
|
|
118
|
+
crons.delete(block.tool_use_id);
|
|
119
|
+
wakeups.delete(block.tool_use_id);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
function pending(now = Date.now()) {
|
|
125
|
+
for (const [id, until] of wakeups) if (until <= now) wakeups.delete(id);
|
|
126
|
+
return Math.max(0, crons.size - cronDeletes) + wakeups.size;
|
|
127
|
+
}
|
|
128
|
+
return { observe, pending };
|
|
129
|
+
}
|
|
130
|
+
|
|
96
131
|
class Session {
|
|
97
132
|
path;
|
|
98
133
|
logPath;
|
|
@@ -119,6 +154,8 @@ class Session {
|
|
|
119
154
|
* for the Claude runner: an empty one says "nothing running", which is a
|
|
120
155
|
* different statement from a runner that has no such notion (undefined). */
|
|
121
156
|
backgroundTasks = [];
|
|
157
|
+
/** B-587 review P3-4: CronCreate / ScheduleWakeup pending in this Claude process. */
|
|
158
|
+
scheduledWakeups = createScheduledWakeupTracker();
|
|
122
159
|
/**
|
|
123
160
|
* Window after a user-initiated abort during which stray promise rejections
|
|
124
161
|
* from tearing down the SDK query (MCP transports, in-flight tool calls,
|
|
@@ -3508,6 +3545,7 @@ async function claudeRemoteLauncher(session, onPermissionModeChange, onEffective
|
|
|
3508
3545
|
runtimeControls.observe(message);
|
|
3509
3546
|
backgroundTasks.observe(message);
|
|
3510
3547
|
session.setBackgroundTasks(backgroundTasks.list());
|
|
3548
|
+
session.scheduledWakeups.observe(message);
|
|
3511
3549
|
if (isRuntimeCheckpointReplay(message)) return;
|
|
3512
3550
|
if (message.type === "user" && isClaudeInterruptSentinelContent(message.message.content)) {
|
|
3513
3551
|
sdkToLogConverter.convert(message);
|
|
@@ -3928,7 +3966,7 @@ async function loop(opts) {
|
|
|
3928
3966
|
logger.debug(`[loop] Iteration with mode: ${mode}`);
|
|
3929
3967
|
switch (mode) {
|
|
3930
3968
|
case "local": {
|
|
3931
|
-
const { claudeLocalLauncher } = await import('./claudeLocalLauncher-
|
|
3969
|
+
const { claudeLocalLauncher } = await import('./claudeLocalLauncher-C9Cc438l.mjs');
|
|
3932
3970
|
const result = await claudeLocalLauncher(session);
|
|
3933
3971
|
switch (result.type) {
|
|
3934
3972
|
case "switch":
|
|
@@ -4103,6 +4141,12 @@ async function settleSessionOnExit(sessionId, intent, deps) {
|
|
|
4103
4141
|
archiveReason: "User terminated"
|
|
4104
4142
|
}));
|
|
4105
4143
|
}
|
|
4144
|
+
if (intent === "hibernate" && deps.hibernation) {
|
|
4145
|
+
const stamp = deps.hibernation;
|
|
4146
|
+
const handler = (currentMetadata) => ({ ...currentMetadata, hibernation: stamp });
|
|
4147
|
+
const landed = deps.updateMetadataAndWait ? await deps.updateMetadataAndWait(handler) : (deps.updateMetadata(handler), false);
|
|
4148
|
+
if (!landed) deps.log?.("[START] hibernation stamp not confirmed before going offline");
|
|
4149
|
+
}
|
|
4106
4150
|
deps.sendSessionDeath();
|
|
4107
4151
|
try {
|
|
4108
4152
|
if (intent === "archive") await deps.archiveSession(sessionId);
|
|
@@ -4113,8 +4157,14 @@ async function settleSessionOnExit(sessionId, intent, deps) {
|
|
|
4113
4157
|
}
|
|
4114
4158
|
class SessionExitGate {
|
|
4115
4159
|
decided = null;
|
|
4160
|
+
hibernateCommitted = false;
|
|
4161
|
+
deferred = null;
|
|
4116
4162
|
/** Returns the intent to act on, or null when cleanup already started. */
|
|
4117
4163
|
claim(intent) {
|
|
4164
|
+
if (this.decided === "hibernate" && !this.hibernateCommitted && intent !== "hibernate") {
|
|
4165
|
+
if (this.deferred !== "archive") this.deferred = intent;
|
|
4166
|
+
return null;
|
|
4167
|
+
}
|
|
4118
4168
|
if (this.decided !== null) return null;
|
|
4119
4169
|
this.decided = intent;
|
|
4120
4170
|
return intent;
|
|
@@ -4122,6 +4172,25 @@ class SessionExitGate {
|
|
|
4122
4172
|
get current() {
|
|
4123
4173
|
return this.decided;
|
|
4124
4174
|
}
|
|
4175
|
+
/** B-587: an exit was requested while the hibernation was deciding. */
|
|
4176
|
+
get exitRequested() {
|
|
4177
|
+
return this.deferred !== null;
|
|
4178
|
+
}
|
|
4179
|
+
/** B-587: the hibernation passed its last check — no more deferral. */
|
|
4180
|
+
commitHibernate() {
|
|
4181
|
+
if (this.decided === "hibernate") this.hibernateCommitted = true;
|
|
4182
|
+
}
|
|
4183
|
+
/**
|
|
4184
|
+
* B-587: a hibernation that aborted hands the exit back. Returns the exit
|
|
4185
|
+
* deferred meanwhile (the caller must run it now), or null.
|
|
4186
|
+
*/
|
|
4187
|
+
release(intent) {
|
|
4188
|
+
if (this.decided !== intent || intent === "hibernate" && this.hibernateCommitted) return null;
|
|
4189
|
+
this.decided = null;
|
|
4190
|
+
const deferred = this.deferred;
|
|
4191
|
+
this.deferred = null;
|
|
4192
|
+
return deferred;
|
|
4193
|
+
}
|
|
4125
4194
|
}
|
|
4126
4195
|
function exitIntentFromArchiveFlag(archive) {
|
|
4127
4196
|
return archive ?? true ? "archive" : "offline";
|
|
@@ -4,78 +4,78 @@ var ink = require('ink');
|
|
|
4
4
|
var React = require('react');
|
|
5
5
|
var node_crypto = require('node:crypto');
|
|
6
6
|
var path = require('node:path');
|
|
7
|
-
var api = require('./api-
|
|
8
|
-
var logger = require('./logger-
|
|
9
|
-
var persistence = require('./persistence-
|
|
10
|
-
var createSessionMetadata = require('./createSessionMetadata-
|
|
7
|
+
var api = require('./api-BZYLRDM9.cjs');
|
|
8
|
+
var logger = require('./logger-B_MWPbZz.cjs');
|
|
9
|
+
var persistence = require('./persistence-BYGl0QYw.cjs');
|
|
10
|
+
var createSessionMetadata = require('./createSessionMetadata-zQSz3hgk.cjs');
|
|
11
11
|
var contentLogMetadata = require('./contentLogMetadata-ZSFk_NjQ.cjs');
|
|
12
|
-
var machineMetadata = require('./machineMetadata-
|
|
13
|
-
var registerKillSessionHandler = require('./registerKillSessionHandler-
|
|
14
|
-
var deterministicJson = require('./deterministicJson-
|
|
12
|
+
var machineMetadata = require('./machineMetadata-BafS4JY8.cjs');
|
|
13
|
+
var registerKillSessionHandler = require('./registerKillSessionHandler-BwXGKtg_.cjs');
|
|
14
|
+
var deterministicJson = require('./deterministicJson-C7O2ulKY.cjs');
|
|
15
15
|
var projectPath = require('./projectPath-ChLhdOyt.cjs');
|
|
16
16
|
var messageBuffer = require('./messageBuffer-fJMH6uY8.cjs');
|
|
17
|
-
var controlClient = require('./controlClient-
|
|
17
|
+
var controlClient = require('./controlClient-BI6Fw3fQ.cjs');
|
|
18
18
|
var authRelay = require('./authRelay-BdYkC1Po.cjs');
|
|
19
|
-
var setupOfflineReconnection = require('./setupOfflineReconnection-
|
|
20
|
-
var AcpBackend = require('./AcpBackend-
|
|
19
|
+
var setupOfflineReconnection = require('./setupOfflineReconnection-C2LO3hSP.cjs');
|
|
20
|
+
var AcpBackend = require('./AcpBackend-D1IKJGz_.cjs');
|
|
21
21
|
var constants = require('./constants-VJ0N6WuG.cjs');
|
|
22
|
-
var config = require('./config-
|
|
23
|
-
var BasePermissionHandler = require('./BasePermissionHandler-
|
|
24
|
-
var BaseReasoningProcessor = require('./BaseReasoningProcessor-
|
|
22
|
+
var config = require('./config-DXPash-r.cjs');
|
|
23
|
+
var BasePermissionHandler = require('./BasePermissionHandler-DHxYAK5L.cjs');
|
|
24
|
+
var BaseReasoningProcessor = require('./BaseReasoningProcessor-CsjVdt_H.cjs');
|
|
25
25
|
require('axios');
|
|
26
|
-
require('./lidState-
|
|
26
|
+
require('./lidState-Bc2K9H9l.cjs');
|
|
27
27
|
require('os');
|
|
28
28
|
require('child_process');
|
|
29
29
|
require('node:events');
|
|
30
30
|
require('socket.io-client');
|
|
31
|
-
require('./attachmentLimits-
|
|
31
|
+
require('./attachmentLimits-BEYEEBm8.cjs');
|
|
32
32
|
require('zod');
|
|
33
33
|
require('./index-C9hI8a10.cjs');
|
|
34
34
|
require('@paralleldrive/cuid2');
|
|
35
35
|
require('./limits-C-a7gr04.cjs');
|
|
36
|
-
require('./time-
|
|
37
|
-
require('./configuration-
|
|
36
|
+
require('./time-BXvtjhe9.cjs');
|
|
37
|
+
require('./configuration-C3piBtxY.cjs');
|
|
38
38
|
require('node:fs');
|
|
39
39
|
require('node:os');
|
|
40
|
-
require('./package-
|
|
40
|
+
require('./package-C9ZP9bpX.cjs');
|
|
41
41
|
require('node:fs/promises');
|
|
42
|
-
require('./registerCommonHandlers-
|
|
42
|
+
require('./registerCommonHandlers-DVYB3iVn.cjs');
|
|
43
43
|
require('util');
|
|
44
44
|
require('fs/promises');
|
|
45
45
|
require('crypto');
|
|
46
46
|
require('path');
|
|
47
47
|
require('cross-spawn');
|
|
48
|
-
require('./sync-
|
|
48
|
+
require('./sync-Bvc-vh6C.cjs');
|
|
49
49
|
require('./backgroundTaskActivity-CBvUdj39.cjs');
|
|
50
50
|
require('chalk');
|
|
51
51
|
require('node:util');
|
|
52
|
-
require('tweetnacl');
|
|
53
52
|
require('./detectCLI-DR9ZaN6B.cjs');
|
|
54
53
|
require('fs');
|
|
55
|
-
require('./localHappyAgentAuth-
|
|
54
|
+
require('./localHappyAgentAuth-T5GOvRha.cjs');
|
|
55
|
+
require('tweetnacl');
|
|
56
56
|
require('./types-CRS-srZK.cjs');
|
|
57
|
-
require('./client-
|
|
58
|
-
require('./context-
|
|
59
|
-
require('./sessionOps-
|
|
57
|
+
require('./client-BKnKRLSt.cjs');
|
|
58
|
+
require('./context-Jrq4-eCZ.cjs');
|
|
59
|
+
require('./sessionOps-DzbZI3Eq.cjs');
|
|
60
60
|
require('./resources-JDPugcDq.cjs');
|
|
61
|
-
require('./tools-
|
|
62
|
-
require('./reportProgressTool-
|
|
63
|
-
require('./client-
|
|
61
|
+
require('./tools-DJIANHSh.cjs');
|
|
62
|
+
require('./reportProgressTool-D4KB_4cP.cjs');
|
|
63
|
+
require('./client-D0T5-6Ds.cjs');
|
|
64
64
|
require('./precheckCompat-CWOi5c9L.cjs');
|
|
65
65
|
require('./agentGuidance-BtBx2xxE.cjs');
|
|
66
66
|
require('./trimIdent-4gvk9Wk6.cjs');
|
|
67
|
-
require('./peerTools-
|
|
67
|
+
require('./peerTools-Dkbu7gag.cjs');
|
|
68
68
|
require('./ids-B6ZC0HGt.cjs');
|
|
69
|
-
require('./remoteSessionClient-
|
|
69
|
+
require('./remoteSessionClient-PyUAIhwK.cjs');
|
|
70
70
|
require('@modelcontextprotocol/sdk/server/mcp.js');
|
|
71
71
|
require('node:http');
|
|
72
72
|
require('@modelcontextprotocol/sdk/server/streamableHttp.js');
|
|
73
|
-
require('./downloadTarget-
|
|
73
|
+
require('./downloadTarget-CWTb2-EM.cjs');
|
|
74
74
|
require('./terminals-B_bfC9c2.cjs');
|
|
75
75
|
require('node:child_process');
|
|
76
76
|
require('./terminalTitleSuggest-DhvRFX3H.cjs');
|
|
77
77
|
require('./tmuxSocket-D-Xt6Vn-.cjs');
|
|
78
|
-
require('./bootstrap-
|
|
78
|
+
require('./bootstrap-Dj8WBiR2.cjs');
|
|
79
79
|
require('./previewPath-B0rBdhy1.cjs');
|
|
80
80
|
require('url');
|
|
81
81
|
require('@agentclientprotocol/sdk');
|