svamp-cli 0.2.13 → 0.2.15
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/{agentCommands-Cy1676fh.mjs → agentCommands-D4XiJm_b.mjs} +2 -2
- package/dist/cli.mjs +29 -29
- package/dist/{commands-CUIMdAqM.mjs → commands-Cz_vOiXH.mjs} +2 -2
- package/dist/{commands-8ZF7ClgV.mjs → commands-DES_w83K.mjs} +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{package-CqP3TZT8.mjs → package-DV64demd.mjs} +1 -1
- package/dist/{run-CPph8_9U.mjs → run-B_l3eR99.mjs} +37 -0
- package/dist/{run-BLQXjuUi.mjs → run-CU6XPo6Z.mjs} +1 -1
- package/dist/{serveCommands-D4N5g4Ra.mjs → serveCommands-DUkTdmvH.mjs} +4 -4
- package/package.json +1 -1
|
@@ -148,7 +148,7 @@ async function sessionBroadcast(action, args) {
|
|
|
148
148
|
console.log(`Broadcast sent: ${action}`);
|
|
149
149
|
}
|
|
150
150
|
async function connectToMachineService() {
|
|
151
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
151
|
+
const { connectAndGetMachine } = await import('./commands-DES_w83K.mjs');
|
|
152
152
|
return connectAndGetMachine();
|
|
153
153
|
}
|
|
154
154
|
async function inboxSend(targetSessionId, opts) {
|
|
@@ -165,7 +165,7 @@ async function inboxSend(targetSessionId, opts) {
|
|
|
165
165
|
}
|
|
166
166
|
const { server, machine } = await connectToMachineService();
|
|
167
167
|
try {
|
|
168
|
-
const { resolveSessionId } = await import('./commands-
|
|
168
|
+
const { resolveSessionId } = await import('./commands-DES_w83K.mjs');
|
|
169
169
|
const sessions = await machine.listSessions();
|
|
170
170
|
const match = resolveSessionId(sessions, targetSessionId);
|
|
171
171
|
const fullTargetId = match.sessionId;
|
package/dist/cli.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { s as startDaemon, b as stopDaemon, d as daemonStatus } from './run-
|
|
1
|
+
import { s as startDaemon, b as stopDaemon, d as daemonStatus } from './run-B_l3eR99.mjs';
|
|
2
2
|
import 'os';
|
|
3
3
|
import 'fs/promises';
|
|
4
4
|
import 'fs';
|
|
@@ -36,7 +36,7 @@ async function main() {
|
|
|
36
36
|
await logoutFromHypha();
|
|
37
37
|
} else if (subcommand === "daemon") {
|
|
38
38
|
if (daemonSubcommand === "restart") {
|
|
39
|
-
const { restartDaemon } = await import('./run-
|
|
39
|
+
const { restartDaemon } = await import('./run-B_l3eR99.mjs').then(function (n) { return n.k; });
|
|
40
40
|
await restartDaemon();
|
|
41
41
|
process.exit(0);
|
|
42
42
|
}
|
|
@@ -246,7 +246,7 @@ async function main() {
|
|
|
246
246
|
console.error("svamp serve: Serve commands are not available in sandboxed sessions.");
|
|
247
247
|
process.exit(1);
|
|
248
248
|
}
|
|
249
|
-
const { handleServeCommand } = await import('./serveCommands-
|
|
249
|
+
const { handleServeCommand } = await import('./serveCommands-DUkTdmvH.mjs');
|
|
250
250
|
await handleServeCommand();
|
|
251
251
|
process.exit(0);
|
|
252
252
|
} else if (subcommand === "process" || subcommand === "proc") {
|
|
@@ -255,7 +255,7 @@ async function main() {
|
|
|
255
255
|
console.error("svamp process: Process commands are not available in sandboxed sessions.");
|
|
256
256
|
process.exit(1);
|
|
257
257
|
}
|
|
258
|
-
const { processCommand } = await import('./commands-
|
|
258
|
+
const { processCommand } = await import('./commands-Cz_vOiXH.mjs');
|
|
259
259
|
let machineId;
|
|
260
260
|
const processArgs = args.slice(1);
|
|
261
261
|
const mIdx = processArgs.findIndex((a) => a === "--machine" || a === "-m");
|
|
@@ -273,7 +273,7 @@ async function main() {
|
|
|
273
273
|
} else if (!subcommand || subcommand === "start") {
|
|
274
274
|
await handleInteractiveCommand();
|
|
275
275
|
} else if (subcommand === "--version" || subcommand === "-v") {
|
|
276
|
-
const pkg = await import('./package-
|
|
276
|
+
const pkg = await import('./package-DV64demd.mjs').catch(() => ({ default: { version: "unknown" } }));
|
|
277
277
|
console.log(`svamp version: ${pkg.default.version}`);
|
|
278
278
|
} else {
|
|
279
279
|
console.error(`Unknown command: ${subcommand}`);
|
|
@@ -282,7 +282,7 @@ async function main() {
|
|
|
282
282
|
}
|
|
283
283
|
}
|
|
284
284
|
async function handleInteractiveCommand() {
|
|
285
|
-
const { runInteractive } = await import('./run-
|
|
285
|
+
const { runInteractive } = await import('./run-CU6XPo6Z.mjs');
|
|
286
286
|
const interactiveArgs = subcommand === "start" ? args.slice(1) : args;
|
|
287
287
|
let directory = process.cwd();
|
|
288
288
|
let resumeSessionId;
|
|
@@ -327,7 +327,7 @@ async function handleAgentCommand() {
|
|
|
327
327
|
return;
|
|
328
328
|
}
|
|
329
329
|
if (agentArgs[0] === "list") {
|
|
330
|
-
const { KNOWN_ACP_AGENTS, KNOWN_MCP_AGENTS: KNOWN_MCP_AGENTS2 } = await import('./run-
|
|
330
|
+
const { KNOWN_ACP_AGENTS, KNOWN_MCP_AGENTS: KNOWN_MCP_AGENTS2 } = await import('./run-B_l3eR99.mjs').then(function (n) { return n.i; });
|
|
331
331
|
console.log("Known agents:");
|
|
332
332
|
for (const [name, config2] of Object.entries(KNOWN_ACP_AGENTS)) {
|
|
333
333
|
console.log(` ${name.padEnd(12)} ${config2.command} ${config2.args.join(" ")} (ACP)`);
|
|
@@ -339,7 +339,7 @@ async function handleAgentCommand() {
|
|
|
339
339
|
console.log('Use "svamp agent -- <command> [args]" for a custom ACP agent.');
|
|
340
340
|
return;
|
|
341
341
|
}
|
|
342
|
-
const { resolveAcpAgentConfig, KNOWN_MCP_AGENTS } = await import('./run-
|
|
342
|
+
const { resolveAcpAgentConfig, KNOWN_MCP_AGENTS } = await import('./run-B_l3eR99.mjs').then(function (n) { return n.i; });
|
|
343
343
|
let cwd = process.cwd();
|
|
344
344
|
const filteredArgs = [];
|
|
345
345
|
for (let i = 0; i < agentArgs.length; i++) {
|
|
@@ -363,12 +363,12 @@ async function handleAgentCommand() {
|
|
|
363
363
|
console.log(`Starting ${config.agentName} agent in ${cwd}...`);
|
|
364
364
|
let backend;
|
|
365
365
|
if (KNOWN_MCP_AGENTS[config.agentName]) {
|
|
366
|
-
const { CodexMcpBackend } = await import('./run-
|
|
366
|
+
const { CodexMcpBackend } = await import('./run-B_l3eR99.mjs').then(function (n) { return n.j; });
|
|
367
367
|
backend = new CodexMcpBackend({ cwd, log: logFn });
|
|
368
368
|
} else {
|
|
369
|
-
const { AcpBackend } = await import('./run-
|
|
370
|
-
const { GeminiTransport } = await import('./run-
|
|
371
|
-
const { DefaultTransport } = await import('./run-
|
|
369
|
+
const { AcpBackend } = await import('./run-B_l3eR99.mjs').then(function (n) { return n.h; });
|
|
370
|
+
const { GeminiTransport } = await import('./run-B_l3eR99.mjs').then(function (n) { return n.G; });
|
|
371
|
+
const { DefaultTransport } = await import('./run-B_l3eR99.mjs').then(function (n) { return n.D; });
|
|
372
372
|
const transportHandler = config.agentName === "gemini" ? new GeminiTransport() : new DefaultTransport(config.agentName);
|
|
373
373
|
backend = new AcpBackend({
|
|
374
374
|
agentName: config.agentName,
|
|
@@ -495,7 +495,7 @@ async function handleSessionCommand() {
|
|
|
495
495
|
process.exit(1);
|
|
496
496
|
}
|
|
497
497
|
}
|
|
498
|
-
const { sessionList, sessionSpawn, sessionStop, sessionInfo, sessionMessages, sessionAttach, sessionMachines, sessionSend, sessionWait, sessionShare, sessionRalphStart, sessionRalphCancel, sessionRalphStatus, sessionInboxSend, sessionInboxList, sessionInboxRead, sessionInboxReply, sessionInboxClear } = await import('./commands-
|
|
498
|
+
const { sessionList, sessionSpawn, sessionStop, sessionInfo, sessionMessages, sessionAttach, sessionMachines, sessionSend, sessionWait, sessionShare, sessionRalphStart, sessionRalphCancel, sessionRalphStatus, sessionInboxSend, sessionInboxList, sessionInboxRead, sessionInboxReply, sessionInboxClear } = await import('./commands-DES_w83K.mjs');
|
|
499
499
|
const parseFlagStr = (flag, shortFlag) => {
|
|
500
500
|
for (let i = 1; i < sessionArgs.length; i++) {
|
|
501
501
|
if ((sessionArgs[i] === flag || shortFlag) && i + 1 < sessionArgs.length) {
|
|
@@ -555,7 +555,7 @@ async function handleSessionCommand() {
|
|
|
555
555
|
allowDomain.push(sessionArgs[++i]);
|
|
556
556
|
}
|
|
557
557
|
}
|
|
558
|
-
const { parseShareArg } = await import('./commands-
|
|
558
|
+
const { parseShareArg } = await import('./commands-DES_w83K.mjs');
|
|
559
559
|
const shareEntries = share.map((s) => parseShareArg(s));
|
|
560
560
|
await sessionSpawn(agent, dir, targetMachineId, {
|
|
561
561
|
message,
|
|
@@ -641,7 +641,7 @@ async function handleSessionCommand() {
|
|
|
641
641
|
console.error("Usage: svamp session approve <session-id> [request-id] [--json]");
|
|
642
642
|
process.exit(1);
|
|
643
643
|
}
|
|
644
|
-
const { sessionApprove } = await import('./commands-
|
|
644
|
+
const { sessionApprove } = await import('./commands-DES_w83K.mjs');
|
|
645
645
|
const approveReqId = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
|
|
646
646
|
await sessionApprove(sessionArgs[1], approveReqId, targetMachineId, {
|
|
647
647
|
json: hasFlag("--json")
|
|
@@ -651,7 +651,7 @@ async function handleSessionCommand() {
|
|
|
651
651
|
console.error("Usage: svamp session deny <session-id> [request-id] [--json]");
|
|
652
652
|
process.exit(1);
|
|
653
653
|
}
|
|
654
|
-
const { sessionDeny } = await import('./commands-
|
|
654
|
+
const { sessionDeny } = await import('./commands-DES_w83K.mjs');
|
|
655
655
|
const denyReqId = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
|
|
656
656
|
await sessionDeny(sessionArgs[1], denyReqId, targetMachineId, {
|
|
657
657
|
json: hasFlag("--json")
|
|
@@ -687,7 +687,7 @@ async function handleSessionCommand() {
|
|
|
687
687
|
console.error("Usage: svamp session set-title <title>");
|
|
688
688
|
process.exit(1);
|
|
689
689
|
}
|
|
690
|
-
const { sessionSetTitle } = await import('./agentCommands-
|
|
690
|
+
const { sessionSetTitle } = await import('./agentCommands-D4XiJm_b.mjs');
|
|
691
691
|
await sessionSetTitle(title);
|
|
692
692
|
} else if (sessionSubcommand === "set-link") {
|
|
693
693
|
const url = sessionArgs[1];
|
|
@@ -696,7 +696,7 @@ async function handleSessionCommand() {
|
|
|
696
696
|
process.exit(1);
|
|
697
697
|
}
|
|
698
698
|
const label = sessionArgs[2] && !sessionArgs[2].startsWith("--") ? sessionArgs[2] : void 0;
|
|
699
|
-
const { sessionSetLink } = await import('./agentCommands-
|
|
699
|
+
const { sessionSetLink } = await import('./agentCommands-D4XiJm_b.mjs');
|
|
700
700
|
await sessionSetLink(url, label);
|
|
701
701
|
} else if (sessionSubcommand === "notify") {
|
|
702
702
|
const message = sessionArgs[1];
|
|
@@ -705,7 +705,7 @@ async function handleSessionCommand() {
|
|
|
705
705
|
process.exit(1);
|
|
706
706
|
}
|
|
707
707
|
const level = parseFlagStr("--level") || "info";
|
|
708
|
-
const { sessionNotify } = await import('./agentCommands-
|
|
708
|
+
const { sessionNotify } = await import('./agentCommands-D4XiJm_b.mjs');
|
|
709
709
|
await sessionNotify(message, level);
|
|
710
710
|
} else if (sessionSubcommand === "broadcast") {
|
|
711
711
|
const action = sessionArgs[1];
|
|
@@ -713,7 +713,7 @@ async function handleSessionCommand() {
|
|
|
713
713
|
console.error("Usage: svamp session broadcast <action> [args...]\nActions: open-canvas <url> [label], close-canvas, toast <message>");
|
|
714
714
|
process.exit(1);
|
|
715
715
|
}
|
|
716
|
-
const { sessionBroadcast } = await import('./agentCommands-
|
|
716
|
+
const { sessionBroadcast } = await import('./agentCommands-D4XiJm_b.mjs');
|
|
717
717
|
await sessionBroadcast(action, sessionArgs.slice(2).filter((a) => !a.startsWith("--")));
|
|
718
718
|
} else if (sessionSubcommand === "inbox") {
|
|
719
719
|
const inboxSubcmd = sessionArgs[1];
|
|
@@ -724,7 +724,7 @@ async function handleSessionCommand() {
|
|
|
724
724
|
process.exit(1);
|
|
725
725
|
}
|
|
726
726
|
if (agentSessionId) {
|
|
727
|
-
const { inboxSend } = await import('./agentCommands-
|
|
727
|
+
const { inboxSend } = await import('./agentCommands-D4XiJm_b.mjs');
|
|
728
728
|
await inboxSend(sessionArgs[2], {
|
|
729
729
|
body: sessionArgs[3],
|
|
730
730
|
subject: parseFlagStr("--subject"),
|
|
@@ -739,7 +739,7 @@ async function handleSessionCommand() {
|
|
|
739
739
|
}
|
|
740
740
|
} else if (inboxSubcmd === "list" || inboxSubcmd === "ls") {
|
|
741
741
|
if (agentSessionId && !sessionArgs[2]) {
|
|
742
|
-
const { inboxList } = await import('./agentCommands-
|
|
742
|
+
const { inboxList } = await import('./agentCommands-D4XiJm_b.mjs');
|
|
743
743
|
await inboxList({
|
|
744
744
|
unread: hasFlag("--unread"),
|
|
745
745
|
limit: parseFlagInt("--limit"),
|
|
@@ -761,7 +761,7 @@ async function handleSessionCommand() {
|
|
|
761
761
|
process.exit(1);
|
|
762
762
|
}
|
|
763
763
|
if (agentSessionId && !sessionArgs[3]) {
|
|
764
|
-
const { inboxList } = await import('./agentCommands-
|
|
764
|
+
const { inboxList } = await import('./agentCommands-D4XiJm_b.mjs');
|
|
765
765
|
await sessionInboxRead(agentSessionId, sessionArgs[2], targetMachineId);
|
|
766
766
|
} else if (sessionArgs[3]) {
|
|
767
767
|
await sessionInboxRead(sessionArgs[2], sessionArgs[3], targetMachineId);
|
|
@@ -771,7 +771,7 @@ async function handleSessionCommand() {
|
|
|
771
771
|
}
|
|
772
772
|
} else if (inboxSubcmd === "reply") {
|
|
773
773
|
if (agentSessionId && sessionArgs[2] && sessionArgs[3] && !sessionArgs[4]) {
|
|
774
|
-
const { inboxReply } = await import('./agentCommands-
|
|
774
|
+
const { inboxReply } = await import('./agentCommands-D4XiJm_b.mjs');
|
|
775
775
|
await inboxReply(sessionArgs[2], sessionArgs[3]);
|
|
776
776
|
} else if (sessionArgs[2] && sessionArgs[3] && sessionArgs[4]) {
|
|
777
777
|
await sessionInboxReply(sessionArgs[2], sessionArgs[3], sessionArgs[4], targetMachineId);
|
|
@@ -807,7 +807,7 @@ async function handleMachineCommand() {
|
|
|
807
807
|
return;
|
|
808
808
|
}
|
|
809
809
|
if (machineSubcommand === "share") {
|
|
810
|
-
const { machineShare } = await import('./commands-
|
|
810
|
+
const { machineShare } = await import('./commands-DES_w83K.mjs');
|
|
811
811
|
let machineId;
|
|
812
812
|
const shareArgs = [];
|
|
813
813
|
for (let i = 1; i < machineArgs.length; i++) {
|
|
@@ -837,7 +837,7 @@ async function handleMachineCommand() {
|
|
|
837
837
|
}
|
|
838
838
|
await machineShare(machineId, { add, remove, list, configPath, showConfig });
|
|
839
839
|
} else if (machineSubcommand === "exec") {
|
|
840
|
-
const { machineExec } = await import('./commands-
|
|
840
|
+
const { machineExec } = await import('./commands-DES_w83K.mjs');
|
|
841
841
|
let machineId;
|
|
842
842
|
let cwd;
|
|
843
843
|
const cmdParts = [];
|
|
@@ -857,7 +857,7 @@ async function handleMachineCommand() {
|
|
|
857
857
|
}
|
|
858
858
|
await machineExec(machineId, command, cwd);
|
|
859
859
|
} else if (machineSubcommand === "info") {
|
|
860
|
-
const { machineInfo } = await import('./commands-
|
|
860
|
+
const { machineInfo } = await import('./commands-DES_w83K.mjs');
|
|
861
861
|
let machineId;
|
|
862
862
|
for (let i = 1; i < machineArgs.length; i++) {
|
|
863
863
|
if ((machineArgs[i] === "--machine" || machineArgs[i] === "-m") && i + 1 < machineArgs.length) {
|
|
@@ -877,10 +877,10 @@ async function handleMachineCommand() {
|
|
|
877
877
|
level = machineArgs[++i];
|
|
878
878
|
}
|
|
879
879
|
}
|
|
880
|
-
const { machineNotify } = await import('./agentCommands-
|
|
880
|
+
const { machineNotify } = await import('./agentCommands-D4XiJm_b.mjs');
|
|
881
881
|
await machineNotify(message, level);
|
|
882
882
|
} else if (machineSubcommand === "ls") {
|
|
883
|
-
const { machineLs } = await import('./commands-
|
|
883
|
+
const { machineLs } = await import('./commands-DES_w83K.mjs');
|
|
884
884
|
let machineId;
|
|
885
885
|
let showHidden = false;
|
|
886
886
|
let path;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { writeFileSync, readFileSync } from 'fs';
|
|
2
2
|
import { resolve } from 'path';
|
|
3
|
-
import { connectAndGetMachine } from './commands-
|
|
3
|
+
import { connectAndGetMachine } from './commands-DES_w83K.mjs';
|
|
4
4
|
import 'node:fs';
|
|
5
5
|
import 'node:child_process';
|
|
6
6
|
import 'node:path';
|
|
7
7
|
import 'node:os';
|
|
8
|
-
import './run-
|
|
8
|
+
import './run-B_l3eR99.mjs';
|
|
9
9
|
import 'os';
|
|
10
10
|
import 'fs/promises';
|
|
11
11
|
import 'url';
|
|
@@ -2,7 +2,7 @@ import { existsSync, readFileSync } from 'node:fs';
|
|
|
2
2
|
import { execSync } from 'node:child_process';
|
|
3
3
|
import { resolve, join } from 'node:path';
|
|
4
4
|
import os from 'node:os';
|
|
5
|
-
import { l as loadSecurityContextConfig, e as resolveSecurityContext, f as buildSecurityContextFromFlags, m as mergeSecurityContexts, c as connectToHypha } from './run-
|
|
5
|
+
import { l as loadSecurityContextConfig, e as resolveSecurityContext, f as buildSecurityContextFromFlags, m as mergeSecurityContexts, c as connectToHypha } from './run-B_l3eR99.mjs';
|
|
6
6
|
import 'os';
|
|
7
7
|
import 'fs/promises';
|
|
8
8
|
import 'fs';
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { c as connectToHypha, d as daemonStatus, g as getHyphaServerUrl, r as registerMachineService, a as registerSessionService, s as startDaemon, b as stopDaemon } from './run-
|
|
1
|
+
export { c as connectToHypha, d as daemonStatus, g as getHyphaServerUrl, r as registerMachineService, a as registerSessionService, s as startDaemon, b as stopDaemon } from './run-B_l3eR99.mjs';
|
|
2
2
|
import 'os';
|
|
3
3
|
import 'fs/promises';
|
|
4
4
|
import 'fs';
|
|
@@ -6437,6 +6437,39 @@ async function startDaemon(options) {
|
|
|
6437
6437
|
let startupFailureRetryPending = false;
|
|
6438
6438
|
let startupRetryMessage;
|
|
6439
6439
|
let startupNonJsonLines = [];
|
|
6440
|
+
const STUCK_PROCESS_TIMEOUT_MS = 30 * 60 * 1e3;
|
|
6441
|
+
const STUCK_CHECK_INTERVAL_MS = 2 * 60 * 1e3;
|
|
6442
|
+
let lastOutputTime = Date.now();
|
|
6443
|
+
let stuckWatchdogTimer = null;
|
|
6444
|
+
const startStuckWatchdog = () => {
|
|
6445
|
+
if (stuckWatchdogTimer) return;
|
|
6446
|
+
stuckWatchdogTimer = setInterval(() => {
|
|
6447
|
+
if (!claudeProcess || claudeProcess.exitCode !== null) return;
|
|
6448
|
+
if (!sessionWasProcessing) return;
|
|
6449
|
+
const elapsed = Date.now() - lastOutputTime;
|
|
6450
|
+
if (elapsed > STUCK_PROCESS_TIMEOUT_MS) {
|
|
6451
|
+
logger.log(`[Session ${sessionId}] Stuck process detected: mid-turn with no output for ${Math.round(elapsed / 1e3)}s \u2014 killing`);
|
|
6452
|
+
sessionService.pushMessage(
|
|
6453
|
+
{ type: "message", message: `Agent process appears stuck (no output for ${Math.round(elapsed / 6e4)} minutes during active turn). Restarting...`, level: "warning" },
|
|
6454
|
+
"event"
|
|
6455
|
+
);
|
|
6456
|
+
claudeProcess.kill("SIGTERM");
|
|
6457
|
+
setTimeout(() => {
|
|
6458
|
+
const ralphState = readRalphState(getRalphStateFilePath(directory, sessionId));
|
|
6459
|
+
if (ralphState && !trackedSession.stopped) {
|
|
6460
|
+
logger.log(`[Session ${sessionId}] Stuck watchdog: Ralph loop active, sending nudge to resume`);
|
|
6461
|
+
processMessageQueueRef?.();
|
|
6462
|
+
}
|
|
6463
|
+
}, 3e3);
|
|
6464
|
+
}
|
|
6465
|
+
}, STUCK_CHECK_INTERVAL_MS);
|
|
6466
|
+
};
|
|
6467
|
+
const stopStuckWatchdog = () => {
|
|
6468
|
+
if (stuckWatchdogTimer) {
|
|
6469
|
+
clearInterval(stuckWatchdogTimer);
|
|
6470
|
+
stuckWatchdogTimer = null;
|
|
6471
|
+
}
|
|
6472
|
+
};
|
|
6440
6473
|
const signalProcessing = (processing) => {
|
|
6441
6474
|
sessionService.sendKeepAlive(processing);
|
|
6442
6475
|
const newState = processing ? "running" : "idle";
|
|
@@ -6559,6 +6592,7 @@ async function startDaemon(options) {
|
|
|
6559
6592
|
});
|
|
6560
6593
|
claudeProcess = child;
|
|
6561
6594
|
spawnHasReceivedInit = false;
|
|
6595
|
+
lastOutputTime = Date.now();
|
|
6562
6596
|
logger.log(`[Session ${sessionId}] Claude PID: ${child.pid}, stdin: ${!!child.stdin}, stdout: ${!!child.stdout}, stderr: ${!!child.stderr}`);
|
|
6563
6597
|
child.stdin?.on("error", (err) => {
|
|
6564
6598
|
logger.log(`[Session ${sessionId}] Claude stdin error: ${err.message}`);
|
|
@@ -6576,7 +6610,9 @@ async function startDaemon(options) {
|
|
|
6576
6610
|
});
|
|
6577
6611
|
let stdoutBuffer = "";
|
|
6578
6612
|
let lastErrorMessagePushed = false;
|
|
6613
|
+
startStuckWatchdog();
|
|
6579
6614
|
child.stdout?.on("data", (chunk) => {
|
|
6615
|
+
lastOutputTime = Date.now();
|
|
6580
6616
|
stdoutBuffer += chunk.toString();
|
|
6581
6617
|
const lines = stdoutBuffer.split("\n");
|
|
6582
6618
|
stdoutBuffer = lines.pop() || "";
|
|
@@ -7064,6 +7100,7 @@ The automated loop has finished. Review the progress above and let me know if yo
|
|
|
7064
7100
|
child.on("exit", (code, signal) => {
|
|
7065
7101
|
logger.log(`[Session ${sessionId}] Claude exited: code=${code}, signal=${signal}`);
|
|
7066
7102
|
claudeProcess = null;
|
|
7103
|
+
stopStuckWatchdog();
|
|
7067
7104
|
for (const f of isolationCleanupFiles) {
|
|
7068
7105
|
fs.rm(f, { force: true }).catch(() => {
|
|
7069
7106
|
});
|
|
@@ -2,7 +2,7 @@ import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(im
|
|
|
2
2
|
import os from 'node:os';
|
|
3
3
|
import { join, resolve } from 'node:path';
|
|
4
4
|
import { mkdirSync, writeFileSync, existsSync, unlinkSync, readFileSync, watch } from 'node:fs';
|
|
5
|
-
import { c as connectToHypha, a as registerSessionService } from './run-
|
|
5
|
+
import { c as connectToHypha, a as registerSessionService } from './run-B_l3eR99.mjs';
|
|
6
6
|
import { createServer } from 'node:http';
|
|
7
7
|
import { spawn } from 'node:child_process';
|
|
8
8
|
import { createInterface } from 'node:readline';
|
|
@@ -52,7 +52,7 @@ async function handleServeCommand() {
|
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
async function serveAdd(args, machineId) {
|
|
55
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
55
|
+
const { connectAndGetMachine } = await import('./commands-DES_w83K.mjs');
|
|
56
56
|
const pos = positionalArgs(args);
|
|
57
57
|
const name = pos[0];
|
|
58
58
|
if (!name) {
|
|
@@ -84,7 +84,7 @@ async function serveAdd(args, machineId) {
|
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
86
|
async function serveRemove(args, machineId) {
|
|
87
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
87
|
+
const { connectAndGetMachine } = await import('./commands-DES_w83K.mjs');
|
|
88
88
|
const pos = positionalArgs(args);
|
|
89
89
|
const name = pos[0];
|
|
90
90
|
if (!name) {
|
|
@@ -104,7 +104,7 @@ async function serveRemove(args, machineId) {
|
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
106
|
async function serveList(args, machineId) {
|
|
107
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
107
|
+
const { connectAndGetMachine } = await import('./commands-DES_w83K.mjs');
|
|
108
108
|
const all = hasFlag(args, "--all", "-a");
|
|
109
109
|
const json = hasFlag(args, "--json");
|
|
110
110
|
const sessionId = getFlag(args, "--session");
|
|
@@ -137,7 +137,7 @@ async function serveList(args, machineId) {
|
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
139
|
async function serveInfo(machineId) {
|
|
140
|
-
const { connectAndGetMachine } = await import('./commands-
|
|
140
|
+
const { connectAndGetMachine } = await import('./commands-DES_w83K.mjs');
|
|
141
141
|
const { machine, server } = await connectAndGetMachine(machineId);
|
|
142
142
|
try {
|
|
143
143
|
const info = await machine.serveInfo({ _rkwargs: true });
|