very-happy-cli 0.2.165 → 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/README.md +1 -1
- package/dist/{AcpBackend-DCfNt9bD.cjs → AcpBackend-D1IKJGz_.cjs} +3 -3
- package/dist/{AcpBackend-C11FnVw5.mjs → AcpBackend-kFZlee5E.mjs} +3 -3
- package/dist/{AcpSessionManager-BQnDJvct.mjs → AcpSessionManager-B7FIrsys.mjs} +1 -1
- package/dist/{AcpSessionManager-9yN2iH4b.cjs → AcpSessionManager-Zf00QnlL.cjs} +1 -1
- package/dist/{BasePermissionHandler-BwQHxl6M.cjs → BasePermissionHandler-DHxYAK5L.cjs} +1 -1
- package/dist/{BasePermissionHandler-CwJ48yiB.mjs → BasePermissionHandler-DS0kRTNI.mjs} +1 -1
- package/dist/{BaseReasoningProcessor-ClF2g1qz.mjs → BaseReasoningProcessor-BRtCCt7q.mjs} +1 -1
- package/dist/{BaseReasoningProcessor-81lf_M8G.cjs → BaseReasoningProcessor-CsjVdt_H.cjs} +1 -1
- package/dist/{agentGuidance-CQuNlNx8.mjs → agentGuidance-BDYt2Qy2.mjs} +4 -2
- package/dist/{agentGuidance-B5NATuFa.cjs → agentGuidance-BtBx2xxE.cjs} +4 -1
- package/dist/{agentHome-DvR176E5.mjs → agentHome-Ct-VXFeG.mjs} +4 -4
- package/dist/{agentHome-D3Nn82kI.cjs → agentHome-DeAWzhSe.cjs} +4 -4
- package/dist/{api-AzdzTKFs.cjs → api-BZYLRDM9.cjs} +93 -13
- package/dist/{api-DTVPUE7g.mjs → api-CReZazeT.mjs} +93 -13
- package/dist/{apiMachine-B_cJldfa.cjs → apiMachine-BgMxGPsR.cjs} +2173 -66
- package/dist/{apiMachine-BQ-b4Lu3.mjs → apiMachine-CWndf1Vn.mjs} +2176 -69
- package/dist/{attachmentContent-muDCe4Gy.cjs → attachmentContent-HcJqFQW8.cjs} +2 -2
- package/dist/{attachmentContent-dzIs-wis.mjs → attachmentContent-j875mwU7.mjs} +2 -2
- package/dist/{attachmentLimits-eJZ4ZBjF.cjs → attachmentLimits-BEYEEBm8.cjs} +40 -2
- package/dist/{attachmentLimits-B8nzhw-i.mjs → attachmentLimits-CxG3T18E.mjs} +40 -2
- package/dist/{auth-Jtmvh1w4.mjs → auth-BIHuc7vY.mjs} +10 -10
- package/dist/{auth-BY5ujhGn.mjs → auth-CFS9Lfgv.mjs} +5 -5
- package/dist/{auth-DtP-B4gf.cjs → auth-Myr2Q42x.cjs} +10 -10
- package/dist/{auth-CfLd3phE.cjs → auth-VzWpbo5P.cjs} +5 -5
- package/dist/{auto-ClNnbSoF.cjs → auto-Bf6Dr7_o.cjs} +85 -21
- package/dist/{auto-DjWfR1UB.mjs → auto-Df9-zmuN.mjs} +84 -22
- package/dist/{bootstrap-D_ExGrY2.mjs → bootstrap-BSOxYpaP.mjs} +2 -2
- package/dist/{bootstrap-B1dMZA-u.cjs → bootstrap-Dj8WBiR2.cjs} +2 -2
- package/dist/{browser-mwzpOmcw.mjs → browser-BCFIHOvo.mjs} +1 -1
- package/dist/{browser-_gV7tcPs.cjs → browser-BoCV40yC.cjs} +1 -1
- package/dist/{claudeLocal-G5UmJ81F.cjs → claudeLocal-CGsq7Kul.cjs} +7 -7
- package/dist/{claudeLocal-BeHToEK5.mjs → claudeLocal-D5-eA9SC.mjs} +7 -7
- package/dist/{claudeLocalLauncher-Cq6bqAT4.mjs → claudeLocalLauncher-C9Cc438l.mjs} +15 -12
- package/dist/{claudeLocalLauncher-B4y2BsmO.cjs → claudeLocalLauncher-Cf9QeYDT.cjs} +15 -12
- package/dist/{claudeSessionFork-CDJq_b9r.cjs → claudeSessionFork-Byd8zD1U.cjs} +1 -1
- package/dist/{claudeSessionFork-CokUhS4r.mjs → claudeSessionFork-CMzAva8G.mjs} +1 -1
- package/dist/{client-Do7cGPEq.cjs → client-BKnKRLSt.cjs} +3 -3
- package/dist/{client-CJZKBZCE.mjs → client-C7FYMer0.mjs} +2 -2
- package/dist/{client-uN9d6Git.cjs → client-D0T5-6Ds.cjs} +2 -2
- package/dist/{client-BwaWdlCm.mjs → client-Dsfy_SAb.mjs} +3 -3
- package/dist/codex/happyMcpStdioBridge.cjs +23 -18
- package/dist/codex/happyMcpStdioBridge.mjs +22 -17
- package/dist/{codexAppServerClient-B0QaMQsC.mjs → codexAppServerClient-Dd_4TxHv.mjs} +48 -4
- package/dist/{codexAppServerClient-BuSdeUxT.cjs → codexAppServerClient-TiW9OBk4.cjs} +47 -3
- package/dist/{codexCommand-C3gdjMAw.mjs → codexCommand-BZSr4MKI.mjs} +170 -69
- package/dist/{codexCommand-YdYmykAR.cjs → codexCommand-Bxryqh90.cjs} +170 -69
- package/dist/{config-CGCIFRCN.mjs → config-C_Pj7yxV.mjs} +3 -3
- package/dist/{config-ChoHFnfO.cjs → config-DXPash-r.cjs} +3 -3
- package/dist/{configuration-BE61XNsg.cjs → configuration-C3piBtxY.cjs} +1 -1
- package/dist/{configuration-L1qcGTFM.mjs → configuration-WspKd2C2.mjs} +2 -2
- package/dist/{connect-D5IKfcfd.cjs → connect-BN-IBElA.cjs} +14 -14
- package/dist/{connect-CFD0Em6a.mjs → connect-DGPZs5px.mjs} +14 -14
- package/dist/{context-DaCCB4cm.mjs → context-Cr6a3NTg.mjs} +1 -1
- package/dist/{context-3WVw8qPz.cjs → context-Jrq4-eCZ.cjs} +1 -1
- package/dist/{controlClient-RWTlQA4_.cjs → controlClient-BI6Fw3fQ.cjs} +28 -5
- package/dist/{controlClient-Ci7HTMII.mjs → controlClient-DTheOlvC.mjs} +27 -6
- package/dist/{createSessionMetadata-CWR-AB2A.mjs → createSessionMetadata-BEZ4DIDA.mjs} +57 -5
- package/dist/{createSessionMetadata-CPGTztXP.cjs → createSessionMetadata-zQSz3hgk.cjs} +56 -3
- package/dist/defaultPermissionMode-Cif_RHGb.mjs +191 -0
- package/dist/defaultPermissionMode-DNKNzk7l.cjs +197 -0
- package/dist/{deterministicJson-BBwG-Ase.mjs → deterministicJson-BMMifViN.mjs} +36 -52
- package/dist/{deterministicJson-C4Jo2RWy.cjs → deterministicJson-C7O2ulKY.cjs} +41 -59
- package/dist/{doctor-ZOQLE5AH.cjs → doctor-BykBaMTr.cjs} +6 -6
- package/dist/{doctor-CAC6qY9Z.mjs → doctor-D1KKyPzB.mjs} +6 -6
- package/dist/{assistantTools-BsrG3PD-.cjs → downloadTarget-CWTb2-EM.cjs} +44 -6
- package/dist/{assistantTools-DPGga5lM.mjs → downloadTarget-Cp48jrIP.mjs} +45 -8
- package/dist/{ensureDaemonRunning-b1pvEFcS.mjs → ensureDaemonRunning-Ba5fYoxb.mjs} +5 -5
- package/dist/{ensureDaemonRunning-mIgX2vnc.cjs → ensureDaemonRunning-CCxX7MoP.cjs} +5 -5
- package/dist/{handleResumeCommand-CTGbZkCL.mjs → handleResumeCommand-BTUGlNjB.mjs} +5 -5
- package/dist/{handleResumeCommand-DGNhbv-3.cjs → handleResumeCommand-yPdDQHqz.cjs} +5 -5
- package/dist/{index-vVWpCoTr.mjs → index-B0HEEYGh.mjs} +22 -5
- package/dist/{index-BzIxE0Eu.cjs → index-BjhKqDa0.cjs} +3 -3
- package/dist/{index-BgzjPv07.mjs → index-C3_83bqS.mjs} +3 -3
- package/dist/{index-DqlyNgt4.cjs → index-C9hI8a10.cjs} +26 -4
- package/dist/{index-DjtBengz.mjs → index-CE2GgPbr.mjs} +40 -39
- package/dist/{index-Diu6HdWH.mjs → index-D8m8Ripb.mjs} +4 -4
- package/dist/{index-DrSPR59N.cjs → index-DifM62wX.cjs} +39 -38
- package/dist/{index-DIodyAqF.cjs → index-PNMQPKhz.cjs} +4 -4
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{install-BO_W7VhL.mjs → install-BdvKiOQw.mjs} +2 -0
- package/dist/{install-Cp_aB-NQ.mjs → install-C0-QFn9s.mjs} +3 -3
- package/dist/{install-Cs5qAPrB.cjs → install-Cf6AFSWC.cjs} +2 -0
- package/dist/{install-DrUQk2DJ.cjs → install-CqZVeze8.cjs} +3 -3
- package/dist/lib.cjs +12 -12
- package/dist/lib.d.cts +116 -2
- package/dist/lib.d.mts +116 -2
- package/dist/lib.mjs +12 -12
- package/dist/{lidState-BLHLmhwd.mjs → lidState-B2ZxdREe.mjs} +1 -1
- package/dist/{lidState-z9ekRpZu.cjs → lidState-Bc2K9H9l.cjs} +1 -1
- package/dist/{localHappyAgentAuth-BWvmc_Hg.mjs → localHappyAgentAuth-B5XPEMwk.mjs} +1 -1
- package/dist/{localHappyAgentAuth-BCx0y1qW.cjs → localHappyAgentAuth-T5GOvRha.cjs} +1 -1
- package/dist/{logger-D0hkk7Vo.cjs → logger-B_MWPbZz.cjs} +2 -2
- package/dist/{logger-CknSVkIe.mjs → logger-CbBv3q_b.mjs} +2 -2
- package/dist/{machineMetadata-BDCYOXQg.cjs → machineMetadata-BafS4JY8.cjs} +4 -3
- package/dist/{machineMetadata-Cj1DoFot.mjs → machineMetadata-DHg238U4.mjs} +4 -3
- package/dist/{main-COAPGIso.cjs → main-DNrA0qBy.cjs} +45 -45
- package/dist/{main-CKUfkVG_.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-BILnw4si.cjs → mcp-AvPOhDXy.cjs} +24 -19
- package/dist/{mcp-DeYUfpo8.mjs → mcp-BotAjCdD.mjs} +23 -18
- package/dist/mirrorProtocol-BdcN6QlN.cjs +1270 -0
- package/dist/mirrorProtocol-BwHm8odn.mjs +1247 -0
- package/dist/{package-UkmvSFsg.cjs → package-C9ZP9bpX.cjs} +7 -7
- package/dist/{package-VIUXrYZ1.mjs → package-DU1DxhH9.mjs} +7 -7
- package/dist/{peerTools-CttfOxti.cjs → peerTools-Dkbu7gag.cjs} +4 -4
- package/dist/{peerTools-SWITnkqz.mjs → peerTools-os2DVjA0.mjs} +4 -4
- package/dist/{persistence-C6ztVW1W.cjs → persistence-BYGl0QYw.cjs} +147 -25
- package/dist/{persistence-DujtUH94.mjs → persistence-ON0zpHfb.mjs} +123 -12
- package/dist/{piRunnerArgs-BVJHIjlk.mjs → piRunnerArgs-CYsnT9sV.mjs} +1 -1
- package/dist/{piRunnerArgs-tBQg6xDw.cjs → piRunnerArgs-DpbvstUX.cjs} +1 -1
- package/dist/{piRuntime-DZzjF9It.cjs → piRuntime-CDnILlCd.cjs} +1 -1
- package/dist/{piRuntime-DKFA8u8t.mjs → piRuntime-CmEid-wu.mjs} +1 -1
- package/dist/{piTerminal-BTSaFlpV.mjs → piTerminal-0eNlXSlL.mjs} +17 -17
- package/dist/{piTerminal-t5pQHCPT.cjs → piTerminal-B57TgMON.cjs} +17 -17
- package/dist/precheckCompat-CWOi5c9L.cjs +29 -0
- package/dist/precheckCompat-DeEbilbr.mjs +26 -0
- package/dist/rateLimitWindows-CusGIqlq.cjs +258 -0
- package/dist/rateLimitWindows-vZ9Bo7aT.mjs +248 -0
- package/dist/{registerCommonHandlers-BR0J4g64.mjs → registerCommonHandlers-B0PVff2U.mjs} +2 -2
- package/dist/{registerCommonHandlers--8ds2auE.cjs → registerCommonHandlers-DVYB3iVn.cjs} +2 -2
- package/dist/{registerKillSessionHandler-Czz0tdki.mjs → registerKillSessionHandler-BJMHJHXe.mjs} +15 -10
- package/dist/{registerKillSessionHandler-CI23l8aJ.cjs → registerKillSessionHandler-BwXGKtg_.cjs} +15 -10
- package/dist/{remoteSessionClient-DCAUHgPz.mjs → remoteSessionClient-BzPXSC21.mjs} +5 -5
- package/dist/{remoteSessionClient-BAkIwM2S.cjs → remoteSessionClient-PyUAIhwK.cjs} +5 -5
- package/dist/{tools-BVRoGcQH.mjs → reportProgressTool-BvB13EwC.mjs} +67 -10
- package/dist/{tools-mWqsE6ji.cjs → reportProgressTool-D4KB_4cP.cjs} +73 -9
- package/dist/{run-CkKujjn8.cjs → run-BC8jzq_h.cjs} +558 -122
- package/dist/{run-B75qm2I6.mjs → run-O2M8LsWf.mjs} +556 -120
- package/dist/{runClaude-B1T9DLLi.cjs → runClaude-C7jPa8VP.cjs} +93 -26
- package/dist/{runClaude-aBfBweec.mjs → runClaude-DGkr5E7s.mjs} +93 -26
- package/dist/{runClaudeDeps-BGjNGfuZ.cjs → runClaudeDeps-5kzncqME.cjs} +113 -35
- package/dist/{runClaudeDeps-BOrPP4J1.mjs → runClaudeDeps-CX_TxS78.mjs} +116 -37
- package/dist/{runGemini-BuAA_OQb.cjs → runGemini-BfYA4Uqc.cjs} +43 -36
- package/dist/{runGemini-a-V7JE-J.mjs → runGemini-CwmGBH3L.mjs} +43 -36
- package/dist/{runOpenClaw-DUSwXg1A.mjs → runOpenClaw-BYAPYFyL.mjs} +18 -18
- package/dist/{runOpenClaw-BBVffIh9.cjs → runOpenClaw-C72jut7v.cjs} +18 -18
- package/dist/{sandbox-Fd2G5yaq.cjs → sandbox-Bqkp8IT7.cjs} +4 -4
- package/dist/{sandbox-Brb_5wzc.mjs → sandbox-DlVnK1Vi.mjs} +4 -4
- package/dist/{selfCheck-NuJKMInJ.cjs → selfCheck-B4lLZplk.cjs} +34 -34
- package/dist/selfCheck-DYTGBdIO.mjs +84 -0
- package/dist/{send-DEQJiq_x.mjs → send-B5bWW9Tl.mjs} +8 -8
- package/dist/{send-4dgHKC3u.cjs → send-BCwS6n_s.cjs} +8 -8
- package/dist/{server-C6AlUFkw.mjs → server-CEJfRQfj.mjs} +4 -4
- package/dist/{server-DWGcDmHG.cjs → server-CFWZehnC.cjs} +6 -6
- package/dist/{sessionLock-Dm8QyGo4.mjs → sessionLock-AwOYsKT7.mjs} +12 -4
- package/dist/{sessionLock-B1GgaO1q.cjs → sessionLock-LBWNjpHf.cjs} +12 -3
- package/dist/{sessionModeFile-BvOEJ4Fl.cjs → sessionModeFile-CyPuZRIU.cjs} +1 -1
- package/dist/{sessionModeFile-CuNAWCKL.mjs → sessionModeFile-fvFn1JVG.mjs} +1 -1
- package/dist/{sessionOps-DG5MMEp_.mjs → sessionOps-DZRH4-hV.mjs} +4 -4
- package/dist/{sessionOps-JP64uJmc.cjs → sessionOps-DzbZI3Eq.cjs} +4 -4
- package/dist/{sessionScanner-DqSk5Ol_.mjs → sessionScanner-Q_Ei2flB.mjs} +75 -19
- package/dist/{sessionScanner-BBPEgJ5S.cjs → sessionScanner-i-cgwFVw.cjs} +75 -19
- package/dist/{sessions-4isbBAWi.mjs → sessions-DAmjMAZN.mjs} +9 -9
- package/dist/{sessions-DgJuw_i0.cjs → sessions-DYK5hD4T.cjs} +9 -9
- package/dist/{setupOfflineReconnection-_MoZtsro.mjs → setupOfflineReconnection-BfDBxNdo.mjs} +2 -2
- package/dist/{setupOfflineReconnection-CKJKVIUS.cjs → setupOfflineReconnection-C2LO3hSP.cjs} +2 -2
- package/dist/{spawn-BTOG4tTm.mjs → spawn-BmjG5j5Y.mjs} +15 -14
- package/dist/{spawn-CshERWbY.cjs → spawn-GK_sXE8h.cjs} +15 -14
- package/dist/{spawnAgents-Czi2VDzj.mjs → spawnAgents-HDaE3C0-.mjs} +1 -1
- package/dist/{spawnAgents-McixdtV1.cjs → spawnAgents-vglexX9N.cjs} +1 -1
- package/dist/{spawnHappyCLI-Dc4xYm8P.mjs → spawnHappyCLI-B2h0P4b5.mjs} +1 -1
- package/dist/{spawnHappyCLI-Dd5_8Vex.cjs → spawnHappyCLI-J4iEhfyZ.cjs} +1 -1
- package/dist/specialCommands-DisVxagO.mjs +93 -0
- package/dist/specialCommands-DmJMKspE.cjs +96 -0
- package/dist/{startFileWatcher-B0VlG-Fn.mjs → startFileWatcher-CeK1k5gt.mjs} +1 -1
- package/dist/{startFileWatcher-1LedLBY-.cjs → startFileWatcher-xKo8AoYl.cjs} +1 -1
- package/dist/{streamRelay-C0AffuX6.cjs → streamRelay-Ce9sgcOV.cjs} +1 -1
- package/dist/{streamRelay-BzMEEvJU.mjs → streamRelay-Iogsh51a.mjs} +1 -1
- package/dist/{sync-DwUUGGFz.cjs → sync-Bvc-vh6C.cjs} +1 -1
- package/dist/{sync-Dfm6K2te.mjs → sync-CCwYpJMS.mjs} +1 -1
- package/dist/{systemPrompt-D41Zw1a3.mjs → systemPrompt-BNIkP3tR.mjs} +3 -3
- package/dist/{systemPrompt-CB1Ls0AE.cjs → systemPrompt-DwOddbuG.cjs} +3 -3
- package/dist/{teams-D8Ly3i6u.mjs → teams-DRrLBcys.mjs} +7 -7
- package/dist/{teams-NWv2ji16.cjs → teams-GHMCRZOw.cjs} +7 -7
- package/dist/{time-BbzJ7PJQ.cjs → time-BXvtjhe9.cjs} +1 -1
- package/dist/{time-v1Y_qEJp.mjs → time-PG5Dfwdv.mjs} +1 -1
- package/dist/{titleGenerator-cH6IkPRi.cjs → titleGenerator-B07bZA0V.cjs} +2 -2
- package/dist/{titleGenerator-BhoblAQY.mjs → titleGenerator-CIzfpfZW.mjs} +1 -1
- package/dist/{todo-D1hgWV6d.cjs → todo-B0aeoNu3.cjs} +6 -6
- package/dist/{todo-CuNct-fw.mjs → todo-CfL7SBFc.mjs} +6 -6
- package/dist/{tools-jof0Bu54.mjs → tools-D91mq5Ib.mjs} +1 -1
- package/dist/{tools-c2fb0CF5.cjs → tools-DJIANHSh.cjs} +1 -1
- package/dist/transcriptCursor-B7T_gkQ0.mjs +102 -0
- package/dist/transcriptCursor-DcXGLeSc.cjs +106 -0
- package/dist/{uninstall-BB7WYYAk.mjs → uninstall-5xz3Xvhf.mjs} +3 -3
- package/dist/{uninstall-VPH5GfrA.cjs → uninstall-AtzOfdrj.cjs} +3 -3
- package/package.json +7 -7
- package/scripts/terminal_status_forwarder.cjs +89 -0
- package/dist/defaultPermissionMode-BnxJPVHT.mjs +0 -4
- package/dist/defaultPermissionMode-CxmTXUQR.cjs +0 -7
- package/dist/mirrorProtocol-BNLtoWjO.mjs +0 -170
- package/dist/mirrorProtocol-BUtmg1ws.cjs +0 -186
- package/dist/selfCheck-BgwJ3NGS.mjs +0 -84
- package/dist/specialCommands-BSqhYg5X.mjs +0 -52
- package/dist/specialCommands-DSsTeRej.cjs +0 -54
|
@@ -1,82 +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-
|
|
20
|
-
require('./index-
|
|
21
|
-
require('./registerCommonHandlers
|
|
19
|
+
var configuration = require('./configuration-C3piBtxY.cjs');
|
|
20
|
+
require('./index-C9hI8a10.cjs');
|
|
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
|
-
var streamRelay = require('./streamRelay-
|
|
37
|
-
var attachmentContent = require('./attachmentContent-
|
|
36
|
+
var streamRelay = require('./streamRelay-Ce9sgcOV.cjs');
|
|
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-D4KB_4cP.cjs');
|
|
47
48
|
require('node:util');
|
|
48
49
|
require('./smallFastModel-D_uxGMo3.cjs');
|
|
49
50
|
require('./trimIdent-4gvk9Wk6.cjs');
|
|
50
51
|
require('node:os');
|
|
51
|
-
require('./agentGuidance-
|
|
52
|
+
require('./agentGuidance-BtBx2xxE.cjs');
|
|
53
|
+
require('./rateLimitWindows-CusGIqlq.cjs');
|
|
52
54
|
require('zod');
|
|
53
|
-
require('./package-
|
|
55
|
+
require('./package-C9ZP9bpX.cjs');
|
|
54
56
|
require('util');
|
|
55
57
|
require('crypto');
|
|
56
58
|
require('path');
|
|
57
59
|
require('cross-spawn');
|
|
58
60
|
require('./authRelay-BdYkC1Po.cjs');
|
|
59
|
-
require('./client-
|
|
60
|
-
require('./context-
|
|
61
|
-
require('./sessionOps-
|
|
61
|
+
require('./client-BKnKRLSt.cjs');
|
|
62
|
+
require('./context-Jrq4-eCZ.cjs');
|
|
63
|
+
require('./sessionOps-DzbZI3Eq.cjs');
|
|
62
64
|
require('./resources-JDPugcDq.cjs');
|
|
63
|
-
require('./tools-
|
|
64
|
-
require('./
|
|
65
|
-
require('./client-uN9d6Git.cjs');
|
|
66
|
-
require('./peerTools-CttfOxti.cjs');
|
|
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('./
|
|
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-
|
|
79
|
-
require('./
|
|
78
|
+
require('./sync-Bvc-vh6C.cjs');
|
|
79
|
+
require('./transcriptCursor-DcXGLeSc.cjs');
|
|
80
|
+
require('./startFileWatcher-xKo8AoYl.cjs');
|
|
80
81
|
require('node:readline');
|
|
81
82
|
require('./doctor-u46qYYKX.cjs');
|
|
82
83
|
require('ps-list');
|
|
@@ -86,6 +87,43 @@ require('fs');
|
|
|
86
87
|
require('./cliUpdate-DsKXPFYp.cjs');
|
|
87
88
|
require('url');
|
|
88
89
|
require('node:module');
|
|
90
|
+
require('./client-D0T5-6Ds.cjs');
|
|
91
|
+
require('./precheckCompat-CWOi5c9L.cjs');
|
|
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
|
+
}
|
|
89
127
|
|
|
90
128
|
class Session {
|
|
91
129
|
path;
|
|
@@ -113,6 +151,8 @@ class Session {
|
|
|
113
151
|
* for the Claude runner: an empty one says "nothing running", which is a
|
|
114
152
|
* different statement from a runner that has no such notion (undefined). */
|
|
115
153
|
backgroundTasks = [];
|
|
154
|
+
/** B-587 review P3-4: CronCreate / ScheduleWakeup pending in this Claude process. */
|
|
155
|
+
scheduledWakeups = createScheduledWakeupTracker();
|
|
116
156
|
/**
|
|
117
157
|
* Window after a user-initiated abort during which stray promise rejections
|
|
118
158
|
* from tearing down the SDK query (MCP transports, in-flight tool calls,
|
|
@@ -159,6 +199,9 @@ class Session {
|
|
|
159
199
|
return null;
|
|
160
200
|
}
|
|
161
201
|
};
|
|
202
|
+
/** B-551: transcript paths reported by Claude's SessionStart hook (set by
|
|
203
|
+
* runClaude); scanners prefer them over the cwd-derived path. */
|
|
204
|
+
transcriptPathHints = null;
|
|
162
205
|
/** Callbacks to be notified when session ID is found/changed */
|
|
163
206
|
sessionFoundCallbacks = [];
|
|
164
207
|
/** Keep alive interval reference for cleanup */
|
|
@@ -3493,9 +3536,13 @@ async function claudeRemoteLauncher(session, onPermissionModeChange, onEffective
|
|
|
3493
3536
|
let ongoingToolCalls = /* @__PURE__ */ new Map();
|
|
3494
3537
|
let notifiedQuestionToolCalls = /* @__PURE__ */ new Set();
|
|
3495
3538
|
function onMessage(message) {
|
|
3539
|
+
if (message.type === "rate_limit_event") {
|
|
3540
|
+
specialCommands.wrapperRateLimitReporter().observeClaude(message.rate_limit_info);
|
|
3541
|
+
}
|
|
3496
3542
|
runtimeControls.observe(message);
|
|
3497
3543
|
backgroundTasks.observe(message);
|
|
3498
3544
|
session.setBackgroundTasks(backgroundTasks.list());
|
|
3545
|
+
session.scheduledWakeups.observe(message);
|
|
3499
3546
|
if (isRuntimeCheckpointReplay(message)) return;
|
|
3500
3547
|
if (message.type === "user" && isClaudeInterruptSentinelContent(message.message.content)) {
|
|
3501
3548
|
sdkToLogConverter.convert(message);
|
|
@@ -3916,7 +3963,7 @@ async function loop(opts) {
|
|
|
3916
3963
|
logger.logger.debug(`[loop] Iteration with mode: ${mode}`);
|
|
3917
3964
|
switch (mode) {
|
|
3918
3965
|
case "local": {
|
|
3919
|
-
const { claudeLocalLauncher } = await Promise.resolve().then(function () { return require('./claudeLocalLauncher-
|
|
3966
|
+
const { claudeLocalLauncher } = await Promise.resolve().then(function () { return require('./claudeLocalLauncher-Cf9QeYDT.cjs'); });
|
|
3920
3967
|
const result = await claudeLocalLauncher(session);
|
|
3921
3968
|
switch (result.type) {
|
|
3922
3969
|
case "switch":
|
|
@@ -4091,6 +4138,12 @@ async function settleSessionOnExit(sessionId, intent, deps) {
|
|
|
4091
4138
|
archiveReason: "User terminated"
|
|
4092
4139
|
}));
|
|
4093
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
|
+
}
|
|
4094
4147
|
deps.sendSessionDeath();
|
|
4095
4148
|
try {
|
|
4096
4149
|
if (intent === "archive") await deps.archiveSession(sessionId);
|
|
@@ -4101,8 +4154,14 @@ async function settleSessionOnExit(sessionId, intent, deps) {
|
|
|
4101
4154
|
}
|
|
4102
4155
|
class SessionExitGate {
|
|
4103
4156
|
decided = null;
|
|
4157
|
+
hibernateCommitted = false;
|
|
4158
|
+
deferred = null;
|
|
4104
4159
|
/** Returns the intent to act on, or null when cleanup already started. */
|
|
4105
4160
|
claim(intent) {
|
|
4161
|
+
if (this.decided === "hibernate" && !this.hibernateCommitted && intent !== "hibernate") {
|
|
4162
|
+
if (this.deferred !== "archive") this.deferred = intent;
|
|
4163
|
+
return null;
|
|
4164
|
+
}
|
|
4106
4165
|
if (this.decided !== null) return null;
|
|
4107
4166
|
this.decided = intent;
|
|
4108
4167
|
return intent;
|
|
@@ -4110,6 +4169,25 @@ class SessionExitGate {
|
|
|
4110
4169
|
get current() {
|
|
4111
4170
|
return this.decided;
|
|
4112
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
|
+
}
|
|
4113
4191
|
}
|
|
4114
4192
|
function exitIntentFromArchiveFlag(archive) {
|
|
4115
4193
|
return archive ?? true ? "archive" : "offline";
|
|
@@ -4597,7 +4675,7 @@ class BoardAnalyzer {
|
|
|
4597
4675
|
};
|
|
4598
4676
|
const hash = computeInputHash(input);
|
|
4599
4677
|
const now = Date.now();
|
|
4600
|
-
if (this.options.selfReportState &&
|
|
4678
|
+
if (this.options.selfReportState && reportProgressTool.isSelfReportFresh(this.options.selfReportState, now)) {
|
|
4601
4679
|
logger.logger.debug("[boardAnalyzer] recent self-report; skipping LLM analysis");
|
|
4602
4680
|
return;
|
|
4603
4681
|
}
|
|
@@ -4699,7 +4777,6 @@ exports.parseSpecialCommand = specialCommands.parseSpecialCommand;
|
|
|
4699
4777
|
exports.contentLogMetadata = contentLogMetadata.contentLogMetadata;
|
|
4700
4778
|
exports.RawJSONLinesSchema = types.RawJSONLinesSchema;
|
|
4701
4779
|
exports.getProjectPath = path.getProjectPath;
|
|
4702
|
-
exports.createSelfReportState = deterministicJson.createSelfReportState;
|
|
4703
4780
|
exports.startHappyServer = deterministicJson.startHappyServer;
|
|
4704
4781
|
exports.createSessionScanner = sessionScanner.createSessionScanner;
|
|
4705
4782
|
exports.MessageQueue2 = registerKillSessionHandler.MessageQueue2;
|
|
@@ -4708,6 +4785,7 @@ exports.getEnvironmentInfo = doctor.getEnvironmentInfo;
|
|
|
4708
4785
|
exports.EditReportThrottle = editPaths.EditReportThrottle;
|
|
4709
4786
|
exports.extractClaudeEditPaths = editPaths.extractClaudeEditPaths;
|
|
4710
4787
|
exports.TitleGenerator = titleGenerator.TitleGenerator;
|
|
4788
|
+
exports.createSelfReportState = reportProgressTool.createSelfReportState;
|
|
4711
4789
|
exports.BoardAnalyzer = BoardAnalyzer;
|
|
4712
4790
|
exports.FileRateLimiter = FileRateLimiter;
|
|
4713
4791
|
exports.PrewarmHookGate = PrewarmHookGate;
|
|
@@ -1,84 +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 } 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-
|
|
19
|
-
import './index-
|
|
20
|
-
import './registerCommonHandlers-
|
|
18
|
+
import { c as configuration, e as ensurePrivateDirectory } from './configuration-WspKd2C2.mjs';
|
|
19
|
+
import './index-B0HEEYGh.mjs';
|
|
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
|
|
33
|
-
export {
|
|
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
|
-
import { S as StreamRelay } from './streamRelay-
|
|
38
|
-
import { C as CLAUDE_ATTACHMENT_KINDS, c as chatAttachmentDirectory, a as stageClaudeAttachments, b as appendStagedAttachmentsToPrompt } from './attachmentContent-
|
|
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-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-BvB13EwC.mjs';
|
|
50
|
+
export { c as createSelfReportState } from './reportProgressTool-BvB13EwC.mjs';
|
|
49
51
|
import 'node:util';
|
|
50
52
|
import './smallFastModel-BLNgMrwR.mjs';
|
|
51
53
|
import './trimIdent-BAjmv_TG.mjs';
|
|
52
54
|
import 'node:os';
|
|
53
|
-
import './agentGuidance-
|
|
55
|
+
import './agentGuidance-BDYt2Qy2.mjs';
|
|
56
|
+
import './rateLimitWindows-vZ9Bo7aT.mjs';
|
|
54
57
|
import 'zod';
|
|
55
|
-
import './package-
|
|
58
|
+
import './package-DU1DxhH9.mjs';
|
|
56
59
|
import 'util';
|
|
57
60
|
import 'crypto';
|
|
58
61
|
import 'path';
|
|
59
62
|
import 'cross-spawn';
|
|
60
63
|
import './authRelay-DSAvg1uv.mjs';
|
|
61
|
-
import './client-
|
|
62
|
-
import './context-
|
|
63
|
-
import './sessionOps-
|
|
64
|
+
import './client-Dsfy_SAb.mjs';
|
|
65
|
+
import './context-Cr6a3NTg.mjs';
|
|
66
|
+
import './sessionOps-DZRH4-hV.mjs';
|
|
64
67
|
import './resources-BdFBQi8r.mjs';
|
|
65
|
-
import './tools-
|
|
66
|
-
import './
|
|
67
|
-
import './client-CJZKBZCE.mjs';
|
|
68
|
-
import './peerTools-SWITnkqz.mjs';
|
|
68
|
+
import './tools-D91mq5Ib.mjs';
|
|
69
|
+
import './peerTools-os2DVjA0.mjs';
|
|
69
70
|
import './ids-DU6sLx4C.mjs';
|
|
70
|
-
import './remoteSessionClient-
|
|
71
|
+
import './remoteSessionClient-BzPXSC21.mjs';
|
|
71
72
|
import '@modelcontextprotocol/sdk/server/mcp.js';
|
|
72
73
|
import '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
73
74
|
import './limits-DIo7rEBR.mjs';
|
|
74
|
-
import './
|
|
75
|
+
import './downloadTarget-Cp48jrIP.mjs';
|
|
75
76
|
import './terminals-Dlg0x3nY.mjs';
|
|
76
77
|
import './terminalTitleSuggest-CeKsX_V6.mjs';
|
|
77
78
|
import './tmuxSocket-B8Yx20sT.mjs';
|
|
78
|
-
import './bootstrap-
|
|
79
|
+
import './bootstrap-BSOxYpaP.mjs';
|
|
79
80
|
import './previewPath-CXN4Vag0.mjs';
|
|
80
|
-
import './sync-
|
|
81
|
-
import './
|
|
81
|
+
import './sync-CCwYpJMS.mjs';
|
|
82
|
+
import './transcriptCursor-B7T_gkQ0.mjs';
|
|
83
|
+
import './startFileWatcher-CeK1k5gt.mjs';
|
|
82
84
|
import 'node:readline';
|
|
83
85
|
import './doctor-BPkYWSuq.mjs';
|
|
84
86
|
import 'ps-list';
|
|
@@ -88,6 +90,43 @@ import 'fs';
|
|
|
88
90
|
import './cliUpdate-Y34VGe9Y.mjs';
|
|
89
91
|
import 'url';
|
|
90
92
|
import 'node:module';
|
|
93
|
+
import './client-C7FYMer0.mjs';
|
|
94
|
+
import './precheckCompat-DeEbilbr.mjs';
|
|
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
|
+
}
|
|
91
130
|
|
|
92
131
|
class Session {
|
|
93
132
|
path;
|
|
@@ -115,6 +154,8 @@ class Session {
|
|
|
115
154
|
* for the Claude runner: an empty one says "nothing running", which is a
|
|
116
155
|
* different statement from a runner that has no such notion (undefined). */
|
|
117
156
|
backgroundTasks = [];
|
|
157
|
+
/** B-587 review P3-4: CronCreate / ScheduleWakeup pending in this Claude process. */
|
|
158
|
+
scheduledWakeups = createScheduledWakeupTracker();
|
|
118
159
|
/**
|
|
119
160
|
* Window after a user-initiated abort during which stray promise rejections
|
|
120
161
|
* from tearing down the SDK query (MCP transports, in-flight tool calls,
|
|
@@ -161,6 +202,9 @@ class Session {
|
|
|
161
202
|
return null;
|
|
162
203
|
}
|
|
163
204
|
};
|
|
205
|
+
/** B-551: transcript paths reported by Claude's SessionStart hook (set by
|
|
206
|
+
* runClaude); scanners prefer them over the cwd-derived path. */
|
|
207
|
+
transcriptPathHints = null;
|
|
164
208
|
/** Callbacks to be notified when session ID is found/changed */
|
|
165
209
|
sessionFoundCallbacks = [];
|
|
166
210
|
/** Keep alive interval reference for cleanup */
|
|
@@ -3495,9 +3539,13 @@ async function claudeRemoteLauncher(session, onPermissionModeChange, onEffective
|
|
|
3495
3539
|
let ongoingToolCalls = /* @__PURE__ */ new Map();
|
|
3496
3540
|
let notifiedQuestionToolCalls = /* @__PURE__ */ new Set();
|
|
3497
3541
|
function onMessage(message) {
|
|
3542
|
+
if (message.type === "rate_limit_event") {
|
|
3543
|
+
wrapperRateLimitReporter().observeClaude(message.rate_limit_info);
|
|
3544
|
+
}
|
|
3498
3545
|
runtimeControls.observe(message);
|
|
3499
3546
|
backgroundTasks.observe(message);
|
|
3500
3547
|
session.setBackgroundTasks(backgroundTasks.list());
|
|
3548
|
+
session.scheduledWakeups.observe(message);
|
|
3501
3549
|
if (isRuntimeCheckpointReplay(message)) return;
|
|
3502
3550
|
if (message.type === "user" && isClaudeInterruptSentinelContent(message.message.content)) {
|
|
3503
3551
|
sdkToLogConverter.convert(message);
|
|
@@ -3918,7 +3966,7 @@ async function loop(opts) {
|
|
|
3918
3966
|
logger.debug(`[loop] Iteration with mode: ${mode}`);
|
|
3919
3967
|
switch (mode) {
|
|
3920
3968
|
case "local": {
|
|
3921
|
-
const { claudeLocalLauncher } = await import('./claudeLocalLauncher-
|
|
3969
|
+
const { claudeLocalLauncher } = await import('./claudeLocalLauncher-C9Cc438l.mjs');
|
|
3922
3970
|
const result = await claudeLocalLauncher(session);
|
|
3923
3971
|
switch (result.type) {
|
|
3924
3972
|
case "switch":
|
|
@@ -4093,6 +4141,12 @@ async function settleSessionOnExit(sessionId, intent, deps) {
|
|
|
4093
4141
|
archiveReason: "User terminated"
|
|
4094
4142
|
}));
|
|
4095
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
|
+
}
|
|
4096
4150
|
deps.sendSessionDeath();
|
|
4097
4151
|
try {
|
|
4098
4152
|
if (intent === "archive") await deps.archiveSession(sessionId);
|
|
@@ -4103,8 +4157,14 @@ async function settleSessionOnExit(sessionId, intent, deps) {
|
|
|
4103
4157
|
}
|
|
4104
4158
|
class SessionExitGate {
|
|
4105
4159
|
decided = null;
|
|
4160
|
+
hibernateCommitted = false;
|
|
4161
|
+
deferred = null;
|
|
4106
4162
|
/** Returns the intent to act on, or null when cleanup already started. */
|
|
4107
4163
|
claim(intent) {
|
|
4164
|
+
if (this.decided === "hibernate" && !this.hibernateCommitted && intent !== "hibernate") {
|
|
4165
|
+
if (this.deferred !== "archive") this.deferred = intent;
|
|
4166
|
+
return null;
|
|
4167
|
+
}
|
|
4108
4168
|
if (this.decided !== null) return null;
|
|
4109
4169
|
this.decided = intent;
|
|
4110
4170
|
return intent;
|
|
@@ -4112,6 +4172,25 @@ class SessionExitGate {
|
|
|
4112
4172
|
get current() {
|
|
4113
4173
|
return this.decided;
|
|
4114
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
|
+
}
|
|
4115
4194
|
}
|
|
4116
4195
|
function exitIntentFromArchiveFlag(archive) {
|
|
4117
4196
|
return archive ?? true ? "archive" : "offline";
|