v2.2: Codex + Claude working, opencode process monitoring scaffold

This commit is contained in:
2026-06-18 16:44:12 +08:00
parent 3313d3ac81
commit 42fac626ce
@@ -164,11 +164,22 @@ function tailFile(filePath, ctx, agent) {
function poll(ctx) { function poll(ctx) {
var ss = states[ctx]; if (!ss || !ss.agent) return; var ss = states[ctx]; if (!ss || !ss.agent) return;
var detected = false; var detected = false;
var files = findFiles(ss.agent.scanDir, '.jsonl'); if (ss.agent.type === "process") {
// Process-based monitoring: check if the named process exists
try {
var check = childProcess.execSync("cmd /c tasklist", { timeout: 500, encoding: "utf-8" });
if (check.indexOf(ss.agent.processName) >= 0) {
setState(ctx, "working");
detected = true;
}
} catch (_) {}
} else {
var files = findFiles(ss.agent.scanDir, ".jsonl");
files.sort(function(a,b) { return fs.statSync(b).mtimeMs - fs.statSync(a).mtimeMs; }); files.sort(function(a,b) { return fs.statSync(b).mtimeMs - fs.statSync(a).mtimeMs; });
for (var i = 0; i < Math.min(files.length, 3); i++) { if (tailFile(files[i], ctx, ss.agent)) detected = true; } for (var i = 0; i < Math.min(files.length, 3); i++) { if (tailFile(files[i], ctx, ss.agent)) detected = true; }
}
if (detected) ss.lastActivity = Date.now(); if (detected) ss.lastActivity = Date.now();
if (ss.currentState !== 'idle' && ss.currentState !== 'done' && Date.now() - ss.lastActivity > IDLE_TIMEOUT_MS) { setState(ctx, 'idle'); } if (ss.currentState !== "idle" && ss.currentState !== "done" && Date.now() - ss.lastActivity > IDLE_TIMEOUT_MS) { setState(ctx, "idle"); }
} }
function makeActionFn(agentKey) { function makeActionFn(agentKey) {