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
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
var node_crypto = require('node:crypto');
|
|
4
4
|
var promises = require('node:fs/promises');
|
|
5
5
|
var path = require('node:path');
|
|
6
|
-
var attachmentLimits = require('./attachmentLimits-
|
|
7
|
-
var configuration = require('./configuration-
|
|
6
|
+
var attachmentLimits = require('./attachmentLimits-BEYEEBm8.cjs');
|
|
7
|
+
var configuration = require('./configuration-C3piBtxY.cjs');
|
|
8
8
|
|
|
9
9
|
const CLAUDE_ATTACHMENT_KINDS = [
|
|
10
10
|
"image/jpeg",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
2
|
import { writeFile, rename, unlink } from 'node:fs/promises';
|
|
3
3
|
import { join, basename } from 'node:path';
|
|
4
|
-
import { M as MAX_CHAT_ATTACHMENT_SOURCE_BYTES } from './attachmentLimits-
|
|
5
|
-
import { e as ensurePrivateDirectory,
|
|
4
|
+
import { M as MAX_CHAT_ATTACHMENT_SOURCE_BYTES } from './attachmentLimits-CxG3T18E.mjs';
|
|
5
|
+
import { e as ensurePrivateDirectory, h as hardenPrivateFile } from './configuration-WspKd2C2.mjs';
|
|
6
6
|
|
|
7
7
|
const CLAUDE_ATTACHMENT_KINDS = [
|
|
8
8
|
"image/jpeg",
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var z = require('zod');
|
|
4
|
-
var index = require('./index-
|
|
4
|
+
var index = require('./index-C9hI8a10.cjs');
|
|
5
5
|
|
|
6
6
|
z.z.object({
|
|
7
7
|
teamsVersion: z.z.number().int().positive().optional(),
|
|
8
8
|
teamLaunchVersion: z.z.number().int().positive().optional(),
|
|
9
|
+
/** B-586: daemon serves the `worktree-*` RPCs. Absent on old daemons. */
|
|
10
|
+
worktreeVersion: z.z.number().int().positive().optional(),
|
|
9
11
|
host: z.z.string(),
|
|
10
12
|
platform: z.z.string(),
|
|
11
13
|
happyCliVersion: z.z.string(),
|
|
@@ -115,6 +117,21 @@ const ClosedTerminalRecordSchema = z.z.object({
|
|
|
115
117
|
attachTmux: z.z.string().optional(),
|
|
116
118
|
closedAt: z.z.number()
|
|
117
119
|
});
|
|
120
|
+
const RateLimitsStateSchema = z.z.object({
|
|
121
|
+
v: z.z.literal(1),
|
|
122
|
+
updatedAt: z.z.number(),
|
|
123
|
+
providers: z.z.record(z.z.string(), z.z.object({
|
|
124
|
+
observedAt: z.z.number(),
|
|
125
|
+
status: z.z.string().optional(),
|
|
126
|
+
windows: z.z.array(z.z.object({
|
|
127
|
+
kind: z.z.string(),
|
|
128
|
+
usedPercent: z.z.number(),
|
|
129
|
+
resetsAt: z.z.number().nullable(),
|
|
130
|
+
windowMinutes: z.z.number().optional(),
|
|
131
|
+
observedAt: z.z.number()
|
|
132
|
+
}))
|
|
133
|
+
}))
|
|
134
|
+
});
|
|
118
135
|
z.z.object({
|
|
119
136
|
agentVersions: index.AgentVersionsSchema.optional(),
|
|
120
137
|
agentVersionEpoch: z.z.number().optional(),
|
|
@@ -198,6 +215,15 @@ z.z.object({
|
|
|
198
215
|
rpcAvailable: z.z.boolean(),
|
|
199
216
|
detectedAt: z.z.number()
|
|
200
217
|
}).optional(),
|
|
218
|
+
/**
|
|
219
|
+
* B-549 capability flag: this daemon answers `history-search` (full-text
|
|
220
|
+
* search over the machine's Claude Code / Codex history, indexed locally).
|
|
221
|
+
* Same trust rule (`detectedAt >= startedAt`); old webs ignore it.
|
|
222
|
+
*/
|
|
223
|
+
historySearch: z.z.object({
|
|
224
|
+
rpcAvailable: z.z.boolean(),
|
|
225
|
+
detectedAt: z.z.number()
|
|
226
|
+
}).optional(),
|
|
201
227
|
/**
|
|
202
228
|
* B-486: can web terminals on this machine be durable? `tmuxAvailable:
|
|
203
229
|
* false` ⇒ every new terminal is a direct shell that dies with the daemon,
|
|
@@ -218,7 +244,19 @@ z.z.object({
|
|
|
218
244
|
* restarts (the server returns the existing row and connect spreads it
|
|
219
245
|
* forward), so a downgraded daemon carries this field along unchanged.
|
|
220
246
|
*/
|
|
221
|
-
claudeAuth: ClaudeAuthStateSchema.optional()
|
|
247
|
+
claudeAuth: ClaudeAuthStateSchema.optional(),
|
|
248
|
+
/** B-555: see RateLimitsStateSchema. Old webs ignore it; old daemons carry it forward unchanged. */
|
|
249
|
+
rateLimits: RateLimitsStateSchema.optional(),
|
|
250
|
+
/**
|
|
251
|
+
* B-587 capability + setting: this daemon answers `agent-hibernation-set`
|
|
252
|
+
* and hibernates idle UI sessions after `idleMs` (0 = off). Same trust rule
|
|
253
|
+
* as the other capability flags (`detectedAt >= startedAt`).
|
|
254
|
+
*/
|
|
255
|
+
agentHibernation: z.z.object({
|
|
256
|
+
idleMs: z.z.number(),
|
|
257
|
+
rpcAvailable: z.z.boolean(),
|
|
258
|
+
detectedAt: z.z.number()
|
|
259
|
+
}).passthrough().optional()
|
|
222
260
|
});
|
|
223
261
|
const MessageMetaSchema = z.z.object({
|
|
224
262
|
sentFrom: z.z.string().optional(),
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import {
|
|
2
|
+
import { m as AgentVersionsSchema } from './index-B0HEEYGh.mjs';
|
|
3
3
|
|
|
4
4
|
z.object({
|
|
5
5
|
teamsVersion: z.number().int().positive().optional(),
|
|
6
6
|
teamLaunchVersion: z.number().int().positive().optional(),
|
|
7
|
+
/** B-586: daemon serves the `worktree-*` RPCs. Absent on old daemons. */
|
|
8
|
+
worktreeVersion: z.number().int().positive().optional(),
|
|
7
9
|
host: z.string(),
|
|
8
10
|
platform: z.string(),
|
|
9
11
|
happyCliVersion: z.string(),
|
|
@@ -113,6 +115,21 @@ const ClosedTerminalRecordSchema = z.object({
|
|
|
113
115
|
attachTmux: z.string().optional(),
|
|
114
116
|
closedAt: z.number()
|
|
115
117
|
});
|
|
118
|
+
const RateLimitsStateSchema = z.object({
|
|
119
|
+
v: z.literal(1),
|
|
120
|
+
updatedAt: z.number(),
|
|
121
|
+
providers: z.record(z.string(), z.object({
|
|
122
|
+
observedAt: z.number(),
|
|
123
|
+
status: z.string().optional(),
|
|
124
|
+
windows: z.array(z.object({
|
|
125
|
+
kind: z.string(),
|
|
126
|
+
usedPercent: z.number(),
|
|
127
|
+
resetsAt: z.number().nullable(),
|
|
128
|
+
windowMinutes: z.number().optional(),
|
|
129
|
+
observedAt: z.number()
|
|
130
|
+
}))
|
|
131
|
+
}))
|
|
132
|
+
});
|
|
116
133
|
z.object({
|
|
117
134
|
agentVersions: AgentVersionsSchema.optional(),
|
|
118
135
|
agentVersionEpoch: z.number().optional(),
|
|
@@ -196,6 +213,15 @@ z.object({
|
|
|
196
213
|
rpcAvailable: z.boolean(),
|
|
197
214
|
detectedAt: z.number()
|
|
198
215
|
}).optional(),
|
|
216
|
+
/**
|
|
217
|
+
* B-549 capability flag: this daemon answers `history-search` (full-text
|
|
218
|
+
* search over the machine's Claude Code / Codex history, indexed locally).
|
|
219
|
+
* Same trust rule (`detectedAt >= startedAt`); old webs ignore it.
|
|
220
|
+
*/
|
|
221
|
+
historySearch: z.object({
|
|
222
|
+
rpcAvailable: z.boolean(),
|
|
223
|
+
detectedAt: z.number()
|
|
224
|
+
}).optional(),
|
|
199
225
|
/**
|
|
200
226
|
* B-486: can web terminals on this machine be durable? `tmuxAvailable:
|
|
201
227
|
* false` ⇒ every new terminal is a direct shell that dies with the daemon,
|
|
@@ -216,7 +242,19 @@ z.object({
|
|
|
216
242
|
* restarts (the server returns the existing row and connect spreads it
|
|
217
243
|
* forward), so a downgraded daemon carries this field along unchanged.
|
|
218
244
|
*/
|
|
219
|
-
claudeAuth: ClaudeAuthStateSchema.optional()
|
|
245
|
+
claudeAuth: ClaudeAuthStateSchema.optional(),
|
|
246
|
+
/** B-555: see RateLimitsStateSchema. Old webs ignore it; old daemons carry it forward unchanged. */
|
|
247
|
+
rateLimits: RateLimitsStateSchema.optional(),
|
|
248
|
+
/**
|
|
249
|
+
* B-587 capability + setting: this daemon answers `agent-hibernation-set`
|
|
250
|
+
* and hibernates idle UI sessions after `idleMs` (0 = off). Same trust rule
|
|
251
|
+
* as the other capability flags (`detectedAt >= startedAt`).
|
|
252
|
+
*/
|
|
253
|
+
agentHibernation: z.object({
|
|
254
|
+
idleMs: z.number(),
|
|
255
|
+
rpcAvailable: z.boolean(),
|
|
256
|
+
detectedAt: z.number()
|
|
257
|
+
}).passthrough().optional()
|
|
220
258
|
});
|
|
221
259
|
const MessageMetaSchema = z.object({
|
|
222
260
|
sentFrom: z.string().optional(),
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
-
import { readCredentials, readSettings, clearCredentials, clearMachineId } from './persistence-
|
|
3
|
-
import { a as authAndSetupMachineIfNeeded } from './auth-
|
|
4
|
-
import { c as configuration } from './configuration-
|
|
2
|
+
import { g as readCredentials, r as readSettings, h as clearCredentials, i as clearMachineId } from './persistence-ON0zpHfb.mjs';
|
|
3
|
+
import { a as authAndSetupMachineIfNeeded } from './auth-CFS9Lfgv.mjs';
|
|
4
|
+
import { c as configuration } from './configuration-WspKd2C2.mjs';
|
|
5
5
|
import { existsSync, rmSync } from 'node:fs';
|
|
6
6
|
import { createInterface } from 'node:readline';
|
|
7
|
-
import {
|
|
8
|
-
import { l as logger } from './logger-
|
|
7
|
+
import { a as checkIfDaemonRunningAndCleanupStaleState, b as stopDaemon } from './controlClient-DTheOlvC.mjs';
|
|
8
|
+
import { l as logger } from './logger-CbBv3q_b.mjs';
|
|
9
9
|
import os from 'node:os';
|
|
10
10
|
import { c as credentialRelayProblem } from './authRelay-DSAvg1uv.mjs';
|
|
11
11
|
import 'node:fs/promises';
|
|
12
12
|
import 'zod';
|
|
13
|
-
import 'node:path';
|
|
14
|
-
import './package-VIUXrYZ1.mjs';
|
|
15
13
|
import 'node:crypto';
|
|
16
14
|
import 'tweetnacl';
|
|
17
|
-
import 'node:util';
|
|
18
15
|
import 'axios';
|
|
19
|
-
import './time-
|
|
20
|
-
import './browser-
|
|
16
|
+
import './time-PG5Dfwdv.mjs';
|
|
17
|
+
import './browser-BCFIHOvo.mjs';
|
|
21
18
|
import 'open';
|
|
19
|
+
import 'node:path';
|
|
20
|
+
import './package-DU1DxhH9.mjs';
|
|
21
|
+
import 'node:util';
|
|
22
22
|
|
|
23
23
|
function localMachineIdentityStatus(machineId) {
|
|
24
24
|
if (machineId) {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { e as encodeBase64, c as credentialRelayProblem, f as encodeBase64Url, d as decodeBase64 } from './authRelay-DSAvg1uv.mjs';
|
|
2
|
-
import { c as configuration } from './configuration-
|
|
2
|
+
import { c as configuration } from './configuration-WspKd2C2.mjs';
|
|
3
3
|
import { randomUUID, randomBytes } from 'node:crypto';
|
|
4
4
|
import tweetnacl from 'tweetnacl';
|
|
5
5
|
import axios from 'axios';
|
|
6
|
-
import { d as delay } from './time-
|
|
7
|
-
import { readCredentials, readSettingsOutcome, updateSettings, writeCredentialsLegacy, writeCredentialsDataKey } from './persistence-
|
|
8
|
-
import { o as openBrowser } from './browser-
|
|
9
|
-
import { l as logger } from './logger-
|
|
6
|
+
import { d as delay } from './time-PG5Dfwdv.mjs';
|
|
7
|
+
import { g as readCredentials, m as readSettingsOutcome, u as updateSettings, w as writeCredentialsLegacy, n as writeCredentialsDataKey } from './persistence-ON0zpHfb.mjs';
|
|
8
|
+
import { o as openBrowser } from './browser-BCFIHOvo.mjs';
|
|
9
|
+
import { l as logger } from './logger-CbBv3q_b.mjs';
|
|
10
10
|
|
|
11
11
|
function generateWebAuthUrl(publicKey) {
|
|
12
12
|
const publicKeyBase64 = encodeBase64(publicKey, "base64url");
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chalk = require('chalk');
|
|
4
|
-
var persistence = require('./persistence-
|
|
5
|
-
var auth = require('./auth-
|
|
6
|
-
var configuration = require('./configuration-
|
|
4
|
+
var persistence = require('./persistence-BYGl0QYw.cjs');
|
|
5
|
+
var auth = require('./auth-VzWpbo5P.cjs');
|
|
6
|
+
var configuration = require('./configuration-C3piBtxY.cjs');
|
|
7
7
|
var node_fs = require('node:fs');
|
|
8
8
|
var node_readline = require('node:readline');
|
|
9
|
-
var controlClient = require('./controlClient-
|
|
10
|
-
var logger = require('./logger-
|
|
9
|
+
var controlClient = require('./controlClient-BI6Fw3fQ.cjs');
|
|
10
|
+
var logger = require('./logger-B_MWPbZz.cjs');
|
|
11
11
|
var os = require('node:os');
|
|
12
12
|
var authRelay = require('./authRelay-BdYkC1Po.cjs');
|
|
13
13
|
require('node:fs/promises');
|
|
14
14
|
require('zod');
|
|
15
|
-
require('node:path');
|
|
16
|
-
require('./package-UkmvSFsg.cjs');
|
|
17
15
|
require('node:crypto');
|
|
18
16
|
require('tweetnacl');
|
|
19
|
-
require('node:util');
|
|
20
17
|
require('axios');
|
|
21
|
-
require('./time-
|
|
22
|
-
require('./browser-
|
|
18
|
+
require('./time-BXvtjhe9.cjs');
|
|
19
|
+
require('./browser-BoCV40yC.cjs');
|
|
23
20
|
require('open');
|
|
21
|
+
require('node:path');
|
|
22
|
+
require('./package-C9ZP9bpX.cjs');
|
|
23
|
+
require('node:util');
|
|
24
24
|
|
|
25
25
|
function localMachineIdentityStatus(machineId) {
|
|
26
26
|
if (machineId) {
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var authRelay = require('./authRelay-BdYkC1Po.cjs');
|
|
4
|
-
var configuration = require('./configuration-
|
|
4
|
+
var configuration = require('./configuration-C3piBtxY.cjs');
|
|
5
5
|
var node_crypto = require('node:crypto');
|
|
6
6
|
var tweetnacl = require('tweetnacl');
|
|
7
7
|
var axios = require('axios');
|
|
8
|
-
var time = require('./time-
|
|
9
|
-
var persistence = require('./persistence-
|
|
10
|
-
var browser = require('./browser-
|
|
11
|
-
var logger = require('./logger-
|
|
8
|
+
var time = require('./time-BXvtjhe9.cjs');
|
|
9
|
+
var persistence = require('./persistence-BYGl0QYw.cjs');
|
|
10
|
+
var browser = require('./browser-BoCV40yC.cjs');
|
|
11
|
+
var logger = require('./logger-B_MWPbZz.cjs');
|
|
12
12
|
|
|
13
13
|
function generateWebAuthUrl(publicKey) {
|
|
14
14
|
const publicKeyBase64 = authRelay.encodeBase64(publicKey, "base64url");
|
|
@@ -4,49 +4,51 @@ var chalk = require('chalk');
|
|
|
4
4
|
var os = require('node:os');
|
|
5
5
|
var node_fs = require('node:fs');
|
|
6
6
|
var path = require('node:path');
|
|
7
|
-
var index = require('./index-
|
|
8
|
-
var configuration = require('./configuration-
|
|
9
|
-
var client = require('./client-
|
|
7
|
+
var index = require('./index-C9hI8a10.cjs');
|
|
8
|
+
var configuration = require('./configuration-C3piBtxY.cjs');
|
|
9
|
+
var client = require('./client-D0T5-6Ds.cjs');
|
|
10
10
|
var template = require('./template-BaHAmH2K.cjs');
|
|
11
|
-
var install = require('./install-
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
var
|
|
15
|
-
var
|
|
11
|
+
var install = require('./install-Cf6AFSWC.cjs');
|
|
12
|
+
var precheckCompat = require('./precheckCompat-CWOi5c9L.cjs');
|
|
13
|
+
var sessionOps = require('./sessionOps-DzbZI3Eq.cjs');
|
|
14
|
+
var spawn = require('./spawn-GK_sXE8h.cjs');
|
|
15
|
+
var spawnAgents = require('./spawnAgents-vglexX9N.cjs');
|
|
16
|
+
var time = require('./time-BXvtjhe9.cjs');
|
|
16
17
|
require('zod');
|
|
17
18
|
require('@paralleldrive/cuid2');
|
|
18
|
-
require('./package-
|
|
19
|
+
require('./package-C9ZP9bpX.cjs');
|
|
19
20
|
require('node:fs/promises');
|
|
20
|
-
require('./persistence-
|
|
21
|
+
require('./persistence-BYGl0QYw.cjs');
|
|
21
22
|
require('./authRelay-BdYkC1Po.cjs');
|
|
22
23
|
require('node:crypto');
|
|
23
24
|
require('tweetnacl');
|
|
24
|
-
require('./logger-
|
|
25
|
+
require('./logger-B_MWPbZz.cjs');
|
|
25
26
|
require('node:util');
|
|
26
27
|
require('./resources-JDPugcDq.cjs');
|
|
27
28
|
require('axios');
|
|
28
|
-
require('./controlClient-
|
|
29
|
+
require('./controlClient-BI6Fw3fQ.cjs');
|
|
29
30
|
require('socket.io-client');
|
|
30
31
|
require('./backgroundTaskActivity-CBvUdj39.cjs');
|
|
31
32
|
require('./path-B7zW-WwE.cjs');
|
|
32
|
-
require('./claudeSessionFork-
|
|
33
|
+
require('./claudeSessionFork-Byd8zD1U.cjs');
|
|
33
34
|
require('node:readline');
|
|
34
|
-
require('./codexAppServerClient-
|
|
35
|
+
require('./codexAppServerClient-TiW9OBk4.cjs');
|
|
35
36
|
require('node:child_process');
|
|
36
37
|
require('cross-spawn');
|
|
37
38
|
require('./contentLogMetadata-ZSFk_NjQ.cjs');
|
|
38
|
-
require('./manager-
|
|
39
|
+
require('./manager-HrEj442o.cjs');
|
|
39
40
|
require('@anthropic-ai/sandbox-runtime');
|
|
41
|
+
require('./rateLimitWindows-CusGIqlq.cjs');
|
|
40
42
|
require('./codexThreadFork-DNekT4nQ.cjs');
|
|
41
|
-
require('./createSessionMetadata-
|
|
43
|
+
require('./createSessionMetadata-zQSz3hgk.cjs');
|
|
42
44
|
require('./projectPath-ChLhdOyt.cjs');
|
|
43
45
|
require('path');
|
|
44
46
|
require('url');
|
|
45
47
|
require('./forkBackfill-8eLDeS73.cjs');
|
|
46
48
|
|
|
47
49
|
const AUTO_ACTIONS = ["list", "show", "create", "edit", "pause", "resume", "rm", "run", "fire", "runs", "cancel", "ack", "report", "skill", "install", "uninstall", "help"];
|
|
48
|
-
const VALUE_FLAGS = ["--name", "--rename", "--description", "--machine", "--cron", "--tz", "--every", "--at", "--spawn-dir", "--prompt", "--prompt-file", "--agent", "--model", "--permission-mode", "--sticky-key", "--send-session", "--cwd", "--env", "--timeout", "--concurrency", "--max-runtime", "--payload", "--payload-json", "--payload-file", "--dedupe-key", "--status", "--limit", "--run", "--summary", "--error", "--attention", "--host", "--home"];
|
|
49
|
-
const BOOL_FLAGS = ["--manual", "--script", "--worktree", "--paused", "--wait", "--json", "--apply", "--all-machines", "--all", "--attention", "--help", "-h"];
|
|
50
|
+
const VALUE_FLAGS = ["--name", "--rename", "--description", "--machine", "--cron", "--tz", "--every", "--at", "--spawn-dir", "--prompt", "--prompt-file", "--agent", "--model", "--permission-mode", "--sticky-key", "--send-session", "--cwd", "--env", "--timeout", "--concurrency", "--max-runtime", "--payload", "--payload-json", "--payload-file", "--dedupe-key", "--status", "--limit", "--run", "--summary", "--error", "--attention", "--host", "--home", "--precheck-shell", "--precheck-argv", "--precheck-cwd", "--precheck-timeout"];
|
|
51
|
+
const BOOL_FLAGS = ["--manual", "--script", "--worktree", "--paused", "--wait", "--json", "--apply", "--all-machines", "--all", "--attention", "--precheck-output", "--no-precheck", "--help", "-h"];
|
|
50
52
|
function parseAutoArgs(args) {
|
|
51
53
|
const command = { action: "help", flags: {}, env: [], bools: /* @__PURE__ */ new Set(), argv: [] };
|
|
52
54
|
if (args.length === 0) return command;
|
|
@@ -141,6 +143,52 @@ function actionFromCommand(command, current) {
|
|
|
141
143
|
}
|
|
142
144
|
return { kind: "spawn", agent: flags["--agent"] ?? "claude", directory: path.resolve(flags["--spawn-dir"]), prompt, ...spawnDetails(command) };
|
|
143
145
|
}
|
|
146
|
+
function precheckFromCommand(command, current) {
|
|
147
|
+
const { flags, bools } = command;
|
|
148
|
+
const shell = flags["--precheck-shell"];
|
|
149
|
+
const argvJson = flags["--precheck-argv"];
|
|
150
|
+
const modifiers = ["--precheck-cwd", "--precheck-timeout"].filter((flag) => flags[flag] !== void 0).concat(bools.has("--precheck-output") ? ["--precheck-output"] : []);
|
|
151
|
+
if (bools.has("--no-precheck")) {
|
|
152
|
+
if (shell !== void 0 || argvJson !== void 0 || modifiers.length) throw new Error("--no-precheck cannot be combined with other --precheck-* options");
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
if (shell === void 0 && argvJson === void 0 && modifiers.length === 0) return void 0;
|
|
156
|
+
if (shell !== void 0 && argvJson !== void 0) throw new Error("Use only one of --precheck-shell and --precheck-argv");
|
|
157
|
+
let base;
|
|
158
|
+
if (shell !== void 0) base = { shell };
|
|
159
|
+
else if (argvJson !== void 0) {
|
|
160
|
+
let argv;
|
|
161
|
+
try {
|
|
162
|
+
argv = JSON.parse(argvJson);
|
|
163
|
+
} catch {
|
|
164
|
+
throw new Error(`--precheck-argv must be a JSON array of strings, e.g. '["./has-new.sh","--since","5m"]'`);
|
|
165
|
+
}
|
|
166
|
+
if (!Array.isArray(argv) || argv.length === 0 || !argv.every((part) => typeof part === "string" && part.length > 0)) throw new Error("--precheck-argv must be a non-empty JSON array of non-empty strings");
|
|
167
|
+
base = { command: argv };
|
|
168
|
+
} else {
|
|
169
|
+
if (!current) throw new Error(`${modifiers.join(", ")} need a precheck: give --precheck-shell <line> or --precheck-argv <json>`);
|
|
170
|
+
base = current;
|
|
171
|
+
}
|
|
172
|
+
let timeoutMs;
|
|
173
|
+
if (flags["--precheck-timeout"] !== void 0) {
|
|
174
|
+
timeoutMs = template.parseDuration(flags["--precheck-timeout"]);
|
|
175
|
+
if (timeoutMs < 1e3 || timeoutMs > index.AUTOMATION_PRECHECK_MAX_TIMEOUT_MS) throw new Error(`--precheck-timeout must be between 1s and ${index.AUTOMATION_PRECHECK_MAX_TIMEOUT_MS / 6e4}m`);
|
|
176
|
+
}
|
|
177
|
+
const precheck = {
|
|
178
|
+
...base,
|
|
179
|
+
...flags["--precheck-cwd"] !== void 0 ? { cwd: flags["--precheck-cwd"] } : {},
|
|
180
|
+
...timeoutMs !== void 0 ? { timeoutMs } : {},
|
|
181
|
+
...bools.has("--precheck-output") ? { includeOutput: true } : {}
|
|
182
|
+
};
|
|
183
|
+
const parsed = index.AutomationPrecheckSchema.safeParse(precheck);
|
|
184
|
+
if (!parsed.success) throw new Error(`Invalid precheck: ${parsed.error.issues[0]?.message ?? "check the --precheck-* options"}`);
|
|
185
|
+
return parsed.data;
|
|
186
|
+
}
|
|
187
|
+
function describePrecheck(precheck) {
|
|
188
|
+
const what = precheck.shell !== void 0 ? `sh: ${precheck.shell}` : `argv: ${JSON.stringify(precheck.command)}`;
|
|
189
|
+
const extras = [precheck.cwd ? `cwd ${precheck.cwd}` : null, precheck.timeoutMs ? `timeout ${Math.round(precheck.timeoutMs / 1e3)}s` : null, precheck.includeOutput ? "output \u2192 prompt" : null].filter(Boolean);
|
|
190
|
+
return extras.length ? `${what} (${extras.join(", ")})` : what;
|
|
191
|
+
}
|
|
144
192
|
function spawnDetails(command) {
|
|
145
193
|
const { flags, bools } = command;
|
|
146
194
|
if (flags["--agent"] !== void 0 && !spawnAgents.SPAWN_AGENTS.includes(flags["--agent"])) throw new Error(`--agent must be one of: ${spawnAgents.SPAWN_AGENTS.join(", ")}`);
|
|
@@ -182,6 +230,14 @@ ${chalk.bold("Action (one):")}
|
|
|
182
230
|
--send-session <id> --prompt <text>|--prompt-file <file>
|
|
183
231
|
--script -- <argv\u2026> [--cwd <dir>] [--env K=V]... [--timeout <dur>]
|
|
184
232
|
|
|
233
|
+
${chalk.bold("Precheck (optional, runs before the action; exit 0 runs it, anything else records a skip):")}
|
|
234
|
+
--precheck-shell '<command line>' | --precheck-argv '<json array>'
|
|
235
|
+
[--precheck-cwd <dir>] [--precheck-timeout <dur>] (default 60s, max 10m)
|
|
236
|
+
[--precheck-output] append the precheck's stdout to the spawn/send prompt
|
|
237
|
+
--no-precheck edit: remove the precheck
|
|
238
|
+
A shell line is not template-rendered; read the payload from $VH_AUTOMATION_PAYLOAD.
|
|
239
|
+
Consecutive scheduled skips for the same reason fold into one run shown as \xD7N.
|
|
240
|
+
|
|
185
241
|
${chalk.bold("Options:")}
|
|
186
242
|
--machine <id>|this Executing machine (default: this machine)
|
|
187
243
|
--description <text>
|
|
@@ -206,12 +262,14 @@ function printAutomation(a) {
|
|
|
206
262
|
if (a.description) console.log(` ${a.description}`);
|
|
207
263
|
console.log(` trigger: ${template.describeTrigger(a.trigger)} next: ${fmtTime(a.nextRunAt)}`);
|
|
208
264
|
console.log(` action: ${template.describeAction(a.action)}`);
|
|
265
|
+
if (a.precheck) console.log(` precheck: ${describePrecheck(a.precheck)}`);
|
|
209
266
|
console.log(` machine: ${a.machineId} concurrency: ${a.concurrency} max runtime: ${Math.round(a.maxRuntimeMs / 6e4)}m`);
|
|
210
267
|
console.log(` last run: ${fmtTime(a.lastRunAt)} ${a.lastRunStatus ?? ""}`);
|
|
211
268
|
}
|
|
212
269
|
function runLine(run) {
|
|
213
270
|
const status = run.status === "done" ? chalk.green(run.status) : ["failed", "expired"].includes(run.status) ? chalk.red(run.status) : run.status === "running" ? chalk.cyan(run.status) : run.status;
|
|
214
|
-
|
|
271
|
+
const folded = (run.occurrenceCount ?? 1) > 1 ? ` \xD7${run.occurrenceCount}` : "";
|
|
272
|
+
return `${fmtTime(run.createdAt)} ${status.padEnd(9)} ${run.automationName.padEnd(20)} ${run.source.padEnd(8)} ${run.id}${folded}${run.status === "skipped" && run.error ? chalk.dim(` ${run.error}`) : ""}${run.needsAttention ? chalk.yellow(` ! ${run.attentionReason ?? "attention"}`) : ""}`;
|
|
215
273
|
}
|
|
216
274
|
function printRun(run) {
|
|
217
275
|
console.log(runLine(run));
|
|
@@ -313,7 +371,9 @@ async function handleAutoCommand(args) {
|
|
|
313
371
|
...command.flags["--max-runtime"] !== void 0 ? { maxRuntimeMs: template.parseDuration(command.flags["--max-runtime"]) } : {},
|
|
314
372
|
...command.bools.has("--paused") ? { status: "paused" } : {}
|
|
315
373
|
};
|
|
316
|
-
const
|
|
374
|
+
const precheck = precheckFromCommand(command);
|
|
375
|
+
if (precheck) input.precheck = precheck;
|
|
376
|
+
const automation = await precheckCompat.createAutomationChecked(client$1, input);
|
|
317
377
|
if (json) {
|
|
318
378
|
console.log(JSON.stringify({ automation }));
|
|
319
379
|
return;
|
|
@@ -336,8 +396,10 @@ async function handleAutoCommand(args) {
|
|
|
336
396
|
...command.flags["--concurrency"] !== void 0 ? { concurrency: concurrency(command.flags["--concurrency"]) } : {},
|
|
337
397
|
...command.flags["--max-runtime"] !== void 0 ? { maxRuntimeMs: template.parseDuration(command.flags["--max-runtime"]) } : {}
|
|
338
398
|
};
|
|
399
|
+
const precheck = precheckFromCommand(command, current.precheck);
|
|
400
|
+
if (precheck !== void 0) input.precheck = precheck;
|
|
339
401
|
if (Object.keys(input).length === 1) throw new Error("Nothing to change");
|
|
340
|
-
const automation = await client$1
|
|
402
|
+
const automation = await precheckCompat.updateAutomationChecked(client$1, current.id, input);
|
|
341
403
|
if (json) {
|
|
342
404
|
console.log(JSON.stringify({ automation }));
|
|
343
405
|
return;
|
|
@@ -470,5 +532,7 @@ function concurrency(value) {
|
|
|
470
532
|
exports.AUTO_ACTIONS = AUTO_ACTIONS;
|
|
471
533
|
exports.AUTO_HELP = AUTO_HELP;
|
|
472
534
|
exports.actionFromCommand = actionFromCommand;
|
|
535
|
+
exports.describePrecheck = describePrecheck;
|
|
473
536
|
exports.handleAutoCommand = handleAutoCommand;
|
|
474
537
|
exports.parseAutoArgs = parseAutoArgs;
|
|
538
|
+
exports.precheckFromCommand = precheckFromCommand;
|