overmind-mcp 2.7.0 → 2.8.1
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/.mcp.json.example +21 -21
- package/README.md +179 -187
- package/bin/README.md +44 -34
- package/bin/install-overmind-windows.bat +51 -7
- package/bin/overmind-pool.mjs +248 -0
- package/dist/bin/cli.js +115 -24
- package/dist/bin/cli.js.map +1 -1
- package/dist/bin/overmind-client.d.ts +77 -0
- package/dist/bin/overmind-client.d.ts.map +1 -0
- package/dist/bin/overmind-client.js +221 -0
- package/dist/bin/overmind-client.js.map +1 -0
- package/dist/lib/agent_lifecycle.d.ts +91 -0
- package/dist/lib/agent_lifecycle.d.ts.map +1 -0
- package/dist/lib/agent_lifecycle.js +155 -0
- package/dist/lib/agent_lifecycle.js.map +1 -0
- package/dist/lib/config.d.ts +5 -26
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +33 -12
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/envUtils.d.ts +1 -1
- package/dist/lib/envUtils.d.ts.map +1 -1
- package/dist/lib/envUtils.js +11 -4
- package/dist/lib/envUtils.js.map +1 -1
- package/dist/lib/loadEnv.d.ts.map +1 -1
- package/dist/lib/loadEnv.js +9 -4
- package/dist/lib/loadEnv.js.map +1 -1
- package/dist/lib/logger.d.ts.map +1 -1
- package/dist/lib/logger.js +20 -4
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/orchestration/dispatcher.d.ts.map +1 -1
- package/dist/lib/orchestration/dispatcher.js +10 -1
- package/dist/lib/orchestration/dispatcher.js.map +1 -1
- package/dist/lib/orchestration/swarm.d.ts +1 -0
- package/dist/lib/orchestration/swarm.d.ts.map +1 -1
- package/dist/lib/orchestration/swarm.js +11 -8
- package/dist/lib/orchestration/swarm.js.map +1 -1
- package/dist/lib/processRegistry.d.ts +2 -40
- package/dist/lib/processRegistry.d.ts.map +1 -1
- package/dist/lib/processRegistry.js +191 -230
- package/dist/lib/processRegistry.js.map +1 -1
- package/dist/memory/MemoryFactory.d.ts.map +1 -1
- package/dist/memory/MemoryFactory.js +2 -1
- package/dist/memory/MemoryFactory.js.map +1 -1
- package/dist/memory/PostgresMemoryProvider.d.ts +1 -0
- package/dist/memory/PostgresMemoryProvider.d.ts.map +1 -1
- package/dist/memory/PostgresMemoryProvider.js +11 -4
- package/dist/memory/PostgresMemoryProvider.js.map +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +84 -80
- package/dist/server.js.map +1 -1
- package/dist/services/AgentManager.d.ts +1 -0
- package/dist/services/AgentManager.d.ts.map +1 -1
- package/dist/services/AgentManager.js +17 -0
- package/dist/services/AgentManager.js.map +1 -1
- package/dist/services/ClaudeRunner.d.ts.map +1 -1
- package/dist/services/ClaudeRunner.js +25 -6
- package/dist/services/ClaudeRunner.js.map +1 -1
- package/dist/services/ClineRunner.d.ts.map +1 -1
- package/dist/services/ClineRunner.js +16 -7
- package/dist/services/ClineRunner.js.map +1 -1
- package/dist/services/GeminiRunner.d.ts.map +1 -1
- package/dist/services/GeminiRunner.js +13 -6
- package/dist/services/GeminiRunner.js.map +1 -1
- package/dist/services/KiloRunner.d.ts.map +1 -1
- package/dist/services/KiloRunner.js +7 -4
- package/dist/services/KiloRunner.js.map +1 -1
- package/dist/services/OpenClawRunner.d.ts.map +1 -1
- package/dist/services/OpenClawRunner.js +16 -7
- package/dist/services/OpenClawRunner.js.map +1 -1
- package/dist/services/OpenCodeRunner.d.ts.map +1 -1
- package/dist/services/OpenCodeRunner.js +16 -7
- package/dist/services/OpenCodeRunner.js.map +1 -1
- package/dist/services/PromptManager.d.ts.map +1 -1
- package/dist/services/PromptManager.js +4 -0
- package/dist/services/PromptManager.js.map +1 -1
- package/dist/services/QwenCliRunner.d.ts.map +1 -1
- package/dist/services/QwenCliRunner.js +16 -7
- package/dist/services/QwenCliRunner.js.map +1 -1
- package/dist/tools/agent_control.d.ts +2 -69
- package/dist/tools/agent_control.d.ts.map +1 -1
- package/dist/tools/agent_control.js +186 -241
- package/dist/tools/agent_control.js.map +1 -1
- package/dist/tools/config_example.d.ts +2 -2
- package/dist/tools/config_example.d.ts.map +1 -1
- package/dist/tools/config_example.js +2 -4
- package/dist/tools/config_example.js.map +1 -1
- package/dist/tools/create_agent.d.ts.map +1 -1
- package/dist/tools/create_agent.js +11 -0
- package/dist/tools/create_agent.js.map +1 -1
- package/dist/tools/manage_agents.d.ts.map +1 -1
- package/dist/tools/manage_agents.js +3 -2
- package/dist/tools/manage_agents.js.map +1 -1
- package/dist/tools/run_agent.d.ts +1 -1
- package/dist/tools/run_agent.d.ts.map +1 -1
- package/dist/tools/run_agent.js +1 -2
- package/dist/tools/run_agent.js.map +1 -1
- package/dist/tools/run_agent_cli.d.ts +4 -10
- package/dist/tools/run_agent_cli.d.ts.map +1 -1
- package/dist/tools/run_agent_cli.js +10 -82
- package/dist/tools/run_agent_cli.js.map +1 -1
- package/dist/tools/run_agents_parallel.d.ts +1 -1
- package/docs/agent-http-tutorial.md +524 -0
- package/package.json +3 -3
|
@@ -1,294 +1,255 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* processRegistry.ts — Persistence layer (disk) + OS-level kill helpers
|
|
3
|
+
* =====================================================================
|
|
4
|
+
*
|
|
5
|
+
* ONLY handles:
|
|
6
|
+
* - Read/write ProcessEntry to .claude/process-registry.json
|
|
7
|
+
* - Background sweeper (cleanupRegistry every 5min)
|
|
8
|
+
* - OS-level killProcessTree + isPidAlive (Windows tasklist / Unix kill -0)
|
|
9
|
+
*
|
|
10
|
+
* Hot-path state (outputBuffer, live status) lives in agent_lifecycle.
|
|
11
|
+
*/
|
|
1
12
|
import fs from 'fs/promises';
|
|
2
13
|
import path from 'path';
|
|
3
|
-
import {
|
|
4
|
-
import { promisify } from 'util';
|
|
5
|
-
import { Mutex } from 'async-mutex';
|
|
14
|
+
import { spawn } from 'child_process';
|
|
6
15
|
import { getWorkspaceDir } from './config.js';
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
function
|
|
12
|
-
return path.resolve(workspaceDir || getWorkspaceDir(),
|
|
16
|
+
const REGISTRY_FILE = '.claude/process-registry.json';
|
|
17
|
+
const PROCESS_TTL_MS = 60 * 60 * 1000;
|
|
18
|
+
const CLEANUP_INTERVAL_MS = 5 * 60 * 1000;
|
|
19
|
+
// ─── Path helpers ─────────────────────────────────────────────────────────────
|
|
20
|
+
function getRegistryPath(workspaceDir) {
|
|
21
|
+
return path.resolve(workspaceDir || getWorkspaceDir(), REGISTRY_FILE);
|
|
13
22
|
}
|
|
14
23
|
function buildKey(runner, agentName) {
|
|
15
24
|
return runner ? `${runner}:${agentName}` : agentName;
|
|
16
25
|
}
|
|
26
|
+
// ─── Disk persistence ──────────────────────────────────────────────────────────
|
|
17
27
|
async function readStore(workspaceDir) {
|
|
18
|
-
const filePath =
|
|
28
|
+
const filePath = getRegistryPath(workspaceDir);
|
|
19
29
|
try {
|
|
20
30
|
const content = await fs.readFile(filePath, 'utf-8');
|
|
21
31
|
return { store: JSON.parse(content), path: filePath };
|
|
22
32
|
}
|
|
23
33
|
catch {
|
|
24
|
-
return { store: {}, path: filePath };
|
|
34
|
+
return { store: { processes: {}, version: 2 }, path: filePath };
|
|
25
35
|
}
|
|
26
36
|
}
|
|
37
|
+
let writeTimer = null;
|
|
38
|
+
let writePending = false;
|
|
39
|
+
const pendingWrites = new Map();
|
|
27
40
|
async function writeStore(store, filePath) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
41
|
+
pendingWrites.set(filePath, store);
|
|
42
|
+
if (writePending)
|
|
43
|
+
return;
|
|
44
|
+
writePending = true;
|
|
45
|
+
await new Promise((resolve) => {
|
|
46
|
+
writeTimer = setTimeout(async () => {
|
|
47
|
+
writePending = false;
|
|
48
|
+
writeTimer = null;
|
|
49
|
+
const entries = new Map(pendingWrites);
|
|
50
|
+
pendingWrites.clear();
|
|
51
|
+
for (const [fPath, s] of entries) {
|
|
52
|
+
try {
|
|
53
|
+
await fs.mkdir(path.dirname(fPath), { recursive: true });
|
|
54
|
+
const tmp = fPath + '.tmp.' + Math.random().toString(36).slice(2);
|
|
55
|
+
await fs.writeFile(tmp, JSON.stringify(s, null, 2), 'utf-8');
|
|
56
|
+
await fs.rename(tmp, fPath);
|
|
57
|
+
}
|
|
58
|
+
catch (e) {
|
|
59
|
+
console.error(`[ProcessRegistry] Write failed for ${fPath}:`, e);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
resolve();
|
|
63
|
+
}, 250);
|
|
64
|
+
});
|
|
31
65
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
* On Unix: use `kill -0` which returns error if process doesn't exist.
|
|
36
|
-
*/
|
|
66
|
+
// ─── OS-level process utilities ───────────────────────────────────────────────
|
|
67
|
+
const pidCache = new Map();
|
|
68
|
+
const PID_CACHE_TTL = 2000;
|
|
37
69
|
export async function isPidAlive(pid) {
|
|
70
|
+
if (!Number.isFinite(pid) || pid <= 0)
|
|
71
|
+
return false;
|
|
72
|
+
const cached = pidCache.get(pid);
|
|
73
|
+
if (cached && Date.now() - cached.ts < PID_CACHE_TTL)
|
|
74
|
+
return cached.alive;
|
|
38
75
|
try {
|
|
39
76
|
if (process.platform === 'win32') {
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
return false;
|
|
77
|
+
const result = await new Promise((resolve) => {
|
|
78
|
+
const child = spawn('tasklist', ['/FI', `PID eq ${pid}`, '/FO', 'CSV', '/NH'], {
|
|
79
|
+
windowsHide: true,
|
|
80
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
81
|
+
});
|
|
82
|
+
let out = '';
|
|
83
|
+
child.stdout.on('data', (d) => { out += d.toString(); });
|
|
84
|
+
child.on('close', () => {
|
|
85
|
+
const trimmed = out.trim();
|
|
86
|
+
resolve(!trimmed.includes('No tasks are running') && trimmed.includes(String(pid)));
|
|
87
|
+
});
|
|
88
|
+
child.on('error', () => resolve(false));
|
|
89
|
+
});
|
|
90
|
+
pidCache.set(pid, { alive: result, ts: Date.now() });
|
|
91
|
+
return result;
|
|
59
92
|
}
|
|
60
93
|
else {
|
|
61
|
-
|
|
62
|
-
|
|
94
|
+
const { execFileSync } = await import('child_process');
|
|
95
|
+
try {
|
|
96
|
+
execFileSync('kill', ['-0', String(pid)], { timeout: 2000 });
|
|
97
|
+
pidCache.set(pid, { alive: true, ts: Date.now() });
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
pidCache.set(pid, { alive: false, ts: Date.now() });
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
63
104
|
}
|
|
64
105
|
}
|
|
65
106
|
catch {
|
|
66
107
|
return false;
|
|
67
108
|
}
|
|
68
109
|
}
|
|
69
|
-
/**
|
|
70
|
-
* Kill a process tree (PID + all children) — Windows or Unix.
|
|
71
|
-
*/
|
|
72
110
|
export async function killProcessTree(pid) {
|
|
111
|
+
if (!Number.isFinite(pid) || pid <= 0)
|
|
112
|
+
return;
|
|
73
113
|
try {
|
|
74
114
|
if (process.platform === 'win32') {
|
|
75
|
-
await
|
|
115
|
+
await new Promise((resolve) => {
|
|
116
|
+
const child = spawn('taskkill', ['/F', '/T', '/PID', String(pid)], {
|
|
117
|
+
windowsHide: true,
|
|
118
|
+
stdio: 'pipe',
|
|
119
|
+
});
|
|
120
|
+
child.on('close', () => resolve());
|
|
121
|
+
child.on('error', () => resolve());
|
|
122
|
+
});
|
|
76
123
|
}
|
|
77
124
|
else {
|
|
78
|
-
await
|
|
125
|
+
await new Promise((resolve) => {
|
|
126
|
+
const child = spawn('kill', ['-9', String(pid)], { stdio: 'pipe' });
|
|
127
|
+
child.on('close', () => resolve());
|
|
128
|
+
child.on('error', () => resolve());
|
|
129
|
+
});
|
|
79
130
|
}
|
|
131
|
+
pidCache.delete(pid);
|
|
80
132
|
}
|
|
81
133
|
catch {
|
|
82
|
-
//
|
|
134
|
+
// Already dead — fine
|
|
83
135
|
}
|
|
84
136
|
}
|
|
85
|
-
|
|
86
|
-
* Register a new running process. Called immediately after spawn(),
|
|
87
|
-
* before sessionId is known.
|
|
88
|
-
*/
|
|
137
|
+
// ─── Registry operations ──────────────────────────────────────────────────────
|
|
89
138
|
export async function registerProcess(pid, meta) {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
agentName: meta.agentName,
|
|
103
|
-
status: 'running',
|
|
104
|
-
outputBuffer: '',
|
|
105
|
-
};
|
|
106
|
-
store[key] = entry;
|
|
107
|
-
await writeStore(store, filePath);
|
|
108
|
-
});
|
|
139
|
+
const { store, path: filePath } = await readStore(meta.configPath);
|
|
140
|
+
const key = buildKey(meta.runner, meta.agentName);
|
|
141
|
+
store.processes[key] = {
|
|
142
|
+
id: '',
|
|
143
|
+
ts: Date.now(),
|
|
144
|
+
pid,
|
|
145
|
+
runner: meta.runner,
|
|
146
|
+
agentName: meta.agentName,
|
|
147
|
+
status: 'running',
|
|
148
|
+
exitCode: null,
|
|
149
|
+
};
|
|
150
|
+
await writeStore(store, filePath);
|
|
109
151
|
}
|
|
110
|
-
/**
|
|
111
|
-
* Link a sessionId to an already-registered PID.
|
|
112
|
-
* Called when the runner emits a sessionId for the first time.
|
|
113
|
-
*/
|
|
114
152
|
export async function linkSessionToPid(sessionId, pid, configPath) {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
await writeStore(store, filePath);
|
|
125
|
-
return;
|
|
126
|
-
}
|
|
153
|
+
const { store, path: filePath } = await readStore(configPath);
|
|
154
|
+
for (const key of Object.keys(store.processes)) {
|
|
155
|
+
const entry = store.processes[key];
|
|
156
|
+
if (entry.pid === pid) {
|
|
157
|
+
entry.id = sessionId;
|
|
158
|
+
entry.ts = Date.now();
|
|
159
|
+
store.processes[key] = entry;
|
|
160
|
+
await writeStore(store, filePath);
|
|
161
|
+
return;
|
|
127
162
|
}
|
|
128
|
-
}
|
|
163
|
+
}
|
|
129
164
|
}
|
|
130
|
-
/**
|
|
131
|
-
* Update output buffer for a running process.
|
|
132
|
-
* Called in stdout 'data' handler to enable live streaming.
|
|
133
|
-
*/
|
|
165
|
+
/** appendOutput — NO-OP: agent_lifecycle handles output in RAM */
|
|
134
166
|
export async function appendOutput(pid, chunk, configPath) {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
const entry = store[key];
|
|
139
|
-
if (typeof entry === 'object' && entry !== null && entry.pid === pid) {
|
|
140
|
-
entry.outputBuffer += chunk;
|
|
141
|
-
entry.lastOutputAt = Date.now();
|
|
142
|
-
store[key] = entry;
|
|
143
|
-
await writeStore(store, filePath);
|
|
144
|
-
return;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
});
|
|
167
|
+
void pid;
|
|
168
|
+
void chunk;
|
|
169
|
+
void configPath;
|
|
148
170
|
}
|
|
149
|
-
/**
|
|
150
|
-
* Mark a process as done/failed/orphaned.
|
|
151
|
-
*/
|
|
152
171
|
export async function updateProcessStatus(pid, status, exitCode, configPath) {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
return;
|
|
164
|
-
}
|
|
172
|
+
const { store, path: filePath } = await readStore(configPath);
|
|
173
|
+
for (const key of Object.keys(store.processes)) {
|
|
174
|
+
const entry = store.processes[key];
|
|
175
|
+
if (entry.pid === pid) {
|
|
176
|
+
entry.status = status;
|
|
177
|
+
entry.exitCode = exitCode ?? null;
|
|
178
|
+
entry.lastOutputAt = Date.now();
|
|
179
|
+
store.processes[key] = entry;
|
|
180
|
+
await writeStore(store, filePath);
|
|
181
|
+
return;
|
|
165
182
|
}
|
|
166
|
-
}
|
|
183
|
+
}
|
|
167
184
|
}
|
|
168
|
-
/**
|
|
169
|
-
* Get current status + output for an agent.
|
|
170
|
-
*/
|
|
171
185
|
export async function getProcessStatus(agentName, runner, configPath) {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
const entry = store[key];
|
|
176
|
-
if (!entry)
|
|
177
|
-
return null;
|
|
178
|
-
if (typeof entry === 'string') {
|
|
179
|
-
return { id: entry, ts: Date.now(), agentName, status: 'done', outputBuffer: '' };
|
|
180
|
-
}
|
|
181
|
-
// Check if running process is actually dead
|
|
182
|
-
if (entry.status === 'running' && entry.pid) {
|
|
183
|
-
const alive = await isPidAlive(entry.pid);
|
|
184
|
-
if (!alive) {
|
|
185
|
-
entry.status = 'orphaned';
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
return entry;
|
|
189
|
-
});
|
|
186
|
+
const { store } = await readStore(configPath);
|
|
187
|
+
const key = buildKey(runner, agentName);
|
|
188
|
+
return store.processes[key] ?? null;
|
|
190
189
|
}
|
|
191
|
-
/**
|
|
192
|
-
* Kill a running agent by PID.
|
|
193
|
-
*/
|
|
194
190
|
export async function killAgent(agentName, runner, configPath) {
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
const pid = entry.pid;
|
|
203
|
-
if (!pid)
|
|
204
|
-
return { killed: false };
|
|
191
|
+
const { store, path: filePath } = await readStore(configPath);
|
|
192
|
+
const key = buildKey(runner, agentName);
|
|
193
|
+
const entry = store.processes[key];
|
|
194
|
+
if (!entry || entry.status !== 'running')
|
|
195
|
+
return { killed: false };
|
|
196
|
+
const pid = entry.pid;
|
|
197
|
+
if (pid)
|
|
205
198
|
await killProcessTree(pid);
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
});
|
|
199
|
+
entry.status = 'failed';
|
|
200
|
+
entry.exitCode = null;
|
|
201
|
+
entry.lastOutputAt = Date.now();
|
|
202
|
+
store.processes[key] = entry;
|
|
203
|
+
await writeStore(store, filePath);
|
|
204
|
+
return { killed: true, pid };
|
|
213
205
|
}
|
|
214
|
-
/**
|
|
215
|
-
* Unregister (remove) a process entry. Call after TTL expires.
|
|
216
|
-
*/
|
|
217
206
|
export async function unregisterProcess(pid, configPath) {
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
delete store[key];
|
|
225
|
-
changed = true;
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
if (changed) {
|
|
229
|
-
await writeStore(store, filePath);
|
|
207
|
+
const { store, path: filePath } = await readStore(configPath);
|
|
208
|
+
let changed = false;
|
|
209
|
+
for (const key of Object.keys(store.processes)) {
|
|
210
|
+
if (store.processes[key].pid === pid) {
|
|
211
|
+
delete store.processes[key];
|
|
212
|
+
changed = true;
|
|
230
213
|
}
|
|
231
|
-
}
|
|
214
|
+
}
|
|
215
|
+
if (changed)
|
|
216
|
+
await writeStore(store, filePath);
|
|
232
217
|
}
|
|
233
|
-
/**
|
|
234
|
-
* Scan all entries and clean up dead processes and old entries.
|
|
235
|
-
* Called on startup and periodically.
|
|
236
|
-
*/
|
|
237
218
|
export async function cleanupRegistry(configPath) {
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
if (!alive) {
|
|
252
|
-
entry.status = 'orphaned';
|
|
253
|
-
orphaned++;
|
|
254
|
-
changed = true;
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
// TTL cleanup for done/failed/orphaned
|
|
258
|
-
if (entry.status !== 'running') {
|
|
259
|
-
const age = now - (entry.lastOutputAt || entry.ts);
|
|
260
|
-
if (age > PROCESS_TTL_MS) {
|
|
261
|
-
delete store[key];
|
|
262
|
-
expired++;
|
|
263
|
-
changed = true;
|
|
264
|
-
}
|
|
219
|
+
const { store, path: filePath } = await readStore(configPath);
|
|
220
|
+
const now = Date.now();
|
|
221
|
+
let orphaned = 0;
|
|
222
|
+
let expired = 0;
|
|
223
|
+
let changed = false;
|
|
224
|
+
for (const key of Object.keys(store.processes)) {
|
|
225
|
+
const entry = store.processes[key];
|
|
226
|
+
if (entry.status === 'running' && entry.pid) {
|
|
227
|
+
const alive = await isPidAlive(entry.pid);
|
|
228
|
+
if (!alive) {
|
|
229
|
+
entry.status = 'orphaned';
|
|
230
|
+
orphaned++;
|
|
231
|
+
changed = true;
|
|
265
232
|
}
|
|
266
233
|
}
|
|
267
|
-
if (
|
|
268
|
-
|
|
234
|
+
if (entry.status !== 'running') {
|
|
235
|
+
const age = now - (entry.lastOutputAt || entry.ts);
|
|
236
|
+
if (age > PROCESS_TTL_MS) {
|
|
237
|
+
delete store.processes[key];
|
|
238
|
+
expired++;
|
|
239
|
+
changed = true;
|
|
240
|
+
}
|
|
269
241
|
}
|
|
270
|
-
|
|
271
|
-
|
|
242
|
+
}
|
|
243
|
+
if (changed)
|
|
244
|
+
await writeStore(store, filePath);
|
|
245
|
+
return { orphaned, expired };
|
|
272
246
|
}
|
|
273
|
-
/**
|
|
274
|
-
* Get all running processes.
|
|
275
|
-
*/
|
|
276
247
|
export async function getRunningProcesses(configPath) {
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
const alive = await isPidAlive(entry.pid);
|
|
284
|
-
if (!alive) {
|
|
285
|
-
entry.status = 'orphaned';
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
result.push(entry);
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
return result;
|
|
292
|
-
});
|
|
248
|
+
const { store } = await readStore(configPath);
|
|
249
|
+
return Object.values(store.processes).filter((e) => e.status === 'running');
|
|
250
|
+
}
|
|
251
|
+
export function startAutoCleanup(configPath) {
|
|
252
|
+
cleanupRegistry(configPath).catch(() => { });
|
|
253
|
+
setInterval(() => { cleanupRegistry(configPath).catch(() => { }); }, CLEANUP_INTERVAL_MS);
|
|
293
254
|
}
|
|
294
255
|
//# sourceMappingURL=processRegistry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processRegistry.js","sourceRoot":"","sources":["../../src/lib/processRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"processRegistry.js","sourceRoot":"","sources":["../../src/lib/processRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryFactory.d.ts","sourceRoot":"","sources":["../../src/memory/MemoryFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAc5D,OAAO,EAAE,2BAA2B,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAEzG;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,CAIlD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAElD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CASxC;AAKD;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"MemoryFactory.d.ts","sourceRoot":"","sources":["../../src/memory/MemoryFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAc5D,OAAO,EAAE,2BAA2B,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAEzG;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,CAIlD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAElD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CASxC;AAKD;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAoBtE"}
|
|
@@ -63,7 +63,8 @@ export async function storeRun(params) {
|
|
|
63
63
|
agentName: params.agentName,
|
|
64
64
|
}, 'CRITICAL: Failed to store run in memory - database may be unavailable!');
|
|
65
65
|
// Re-throw so the runner can report this to the user
|
|
66
|
-
|
|
66
|
+
// Don't leak connection details — keep error generic, details in logs
|
|
67
|
+
throw new Error('MEMORY_UNAVAILABLE: Database operation failed — check server logs', { cause: error });
|
|
67
68
|
}
|
|
68
69
|
}
|
|
69
70
|
//# sourceMappingURL=MemoryFactory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryFactory.js","sourceRoot":"","sources":["../../src/memory/MemoryFactory.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;AACrC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;AAE/C,IAAI,SAAS,GAA0B,IAAI,CAAC;AAC5C,IAAI,cAAc,GAAG,IAAI,CAAC;AAC1B,IAAI,YAAY,GAAkB,IAAI,CAAC;AAEvC,6BAA6B;AAC7B,OAAO,EAAE,2BAA2B,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAEzG;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAChC,SAAS,GAAG,IAAI,sBAAsB,EAAE,CAAC;IACzC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,2BAA2B,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QAC7C,cAAc,GAAG,KAAK,CAAC;QACvB,YAAY,GAAG,KAAK,EAAE,OAAO,IAAI,OAAO,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,qCAAqC,CAAC,CAAC;QAExF,uEAAuE;IACzE,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;AAChE,CAAC;AAED,4BAA4B;AAC5B,iBAAiB,EAAE,CAAC;AAEpB;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,MAAsB;IACnD,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC;IACrC,IAAI,CAAC;QACH,cAAc,GAAG,IAAI,CAAC;QACtB,YAAY,GAAG,IAAI,CAAC;QACpB,OAAO,MAAM,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,cAAc,GAAG,KAAK,CAAC;QACvB,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC;QAC3B,MAAM,CAAC,KAAK,CAAC;YACX,KAAK,EAAE,GAAG,CAAC,OAAO;YAClB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,EAAE,wEAAwE,CAAC,CAAC;QAE7E,qDAAqD;QACrD,MAAM,IAAI,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"MemoryFactory.js","sourceRoot":"","sources":["../../src/memory/MemoryFactory.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;AACrC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;AAE/C,IAAI,SAAS,GAA0B,IAAI,CAAC;AAC5C,IAAI,cAAc,GAAG,IAAI,CAAC;AAC1B,IAAI,YAAY,GAAkB,IAAI,CAAC;AAEvC,6BAA6B;AAC7B,OAAO,EAAE,2BAA2B,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAEzG;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAChC,SAAS,GAAG,IAAI,sBAAsB,EAAE,CAAC;IACzC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,2BAA2B,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QAC7C,cAAc,GAAG,KAAK,CAAC;QACvB,YAAY,GAAG,KAAK,EAAE,OAAO,IAAI,OAAO,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,qCAAqC,CAAC,CAAC;QAExF,uEAAuE;IACzE,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;AAChE,CAAC;AAED,4BAA4B;AAC5B,iBAAiB,EAAE,CAAC;AAEpB;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,MAAsB;IACnD,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC;IACrC,IAAI,CAAC;QACH,cAAc,GAAG,IAAI,CAAC;QACtB,YAAY,GAAG,IAAI,CAAC;QACpB,OAAO,MAAM,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,cAAc,GAAG,KAAK,CAAC;QACvB,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC;QAC3B,MAAM,CAAC,KAAK,CAAC;YACX,KAAK,EAAE,GAAG,CAAC,OAAO;YAClB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,EAAE,wEAAwE,CAAC,CAAC;QAE7E,qDAAqD;QACrD,sEAAsE;QACtE,MAAM,IAAI,KAAK,CAAC,mEAAmE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACzG,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostgresMemoryProvider.d.ts","sourceRoot":"","sources":["../../src/memory/PostgresMemoryProvider.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,cAAc,EACd,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAgBpB,UAAU,aAAa;IACrB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;CACxC;AAMD,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAGzE;AAED,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAE3E;AA6BD,qBAAa,sBAAuB,YAAW,cAAc;IAC3D,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,eAAe,CAAO;IAC9B,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,oBAAoB,CAAqB;;
|
|
1
|
+
{"version":3,"file":"PostgresMemoryProvider.d.ts","sourceRoot":"","sources":["../../src/memory/PostgresMemoryProvider.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,cAAc,EACd,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAgBpB,UAAU,aAAa;IACrB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;CACxC;AAMD,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAGzE;AAED,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAE3E;AA6BD,qBAAa,sBAAuB,YAAW,cAAc;IAC3D,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,eAAe,CAAO;IAC9B,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,oBAAoB,CAAqB;IACjD,OAAO,CAAC,mBAAmB,CAAiC;;IAO5D,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,SAAS;YAKH,UAAU;YAqFV,oBAAoB;YAmGpB,YAAY;IAoGpB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IA8CjD,cAAc,CAAC,MAAM,EAAE;QAC3B,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,MAAM,CAAC;IA4Bb,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAkEjE,aAAa,CAAC,MAAM,EAAE;QAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAsBjB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAuBzD"}
|