@agentmeshhq/agent 0.4.10 → 0.4.12
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/LICENSE +21 -0
- package/dist/__tests__/registry.register.test.d.ts +8 -0
- package/dist/__tests__/registry.register.test.js +109 -0
- package/dist/__tests__/registry.register.test.js.map +1 -0
- package/dist/__tests__/start-team-id.test.d.ts +9 -0
- package/dist/__tests__/start-team-id.test.js +160 -0
- package/dist/__tests__/start-team-id.test.js.map +1 -0
- package/dist/__tests__/watcher-runtime.test.d.ts +1 -0
- package/dist/__tests__/watcher-runtime.test.js +162 -0
- package/dist/__tests__/watcher-runtime.test.js.map +1 -0
- package/dist/cli/index.js +103 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/start.d.ts +9 -0
- package/dist/cli/start.js +43 -24
- package/dist/cli/start.js.map +1 -1
- package/dist/cli/test.js +7 -2
- package/dist/cli/test.js.map +1 -1
- package/dist/cli/watcher.d.ts +36 -0
- package/dist/cli/watcher.js +487 -0
- package/dist/cli/watcher.js.map +1 -0
- package/dist/config/schema.d.ts +2 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/core/daemon.d.ts +3 -0
- package/dist/core/daemon.js +3 -0
- package/dist/core/daemon.js.map +1 -1
- package/dist/core/project-watcher-loop.d.ts +25 -0
- package/dist/core/project-watcher-loop.js +43 -0
- package/dist/core/project-watcher-loop.js.map +1 -0
- package/dist/core/registry.d.ts +2 -0
- package/dist/core/registry.js +4 -0
- package/dist/core/registry.js.map +1 -1
- package/package.json +11 -12
|
@@ -0,0 +1,487 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import * as fs from "node:fs";
|
|
3
|
+
import * as path from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
import pc from "picocolors";
|
|
6
|
+
import { loadConfig, loadState } from "../config/loader.js";
|
|
7
|
+
import { startProjectWatcherLoop } from "../core/project-watcher-loop.js";
|
|
8
|
+
const WATCHER_STATE_PATH = path.join(process.env.HOME || ".", ".agentmesh", "watcher-state.json");
|
|
9
|
+
function ensureConfigDir() {
|
|
10
|
+
const dir = path.dirname(WATCHER_STATE_PATH);
|
|
11
|
+
if (!fs.existsSync(dir))
|
|
12
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
13
|
+
}
|
|
14
|
+
function loadWatcherState() {
|
|
15
|
+
try {
|
|
16
|
+
if (!fs.existsSync(WATCHER_STATE_PATH))
|
|
17
|
+
return { watchers: [] };
|
|
18
|
+
return JSON.parse(fs.readFileSync(WATCHER_STATE_PATH, "utf-8"));
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return { watchers: [] };
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function saveWatcherState(state) {
|
|
25
|
+
ensureConfigDir();
|
|
26
|
+
fs.writeFileSync(WATCHER_STATE_PATH, JSON.stringify(state, null, 2));
|
|
27
|
+
}
|
|
28
|
+
function upsertWatcherState(entry) {
|
|
29
|
+
const state = loadWatcherState();
|
|
30
|
+
state.watchers = state.watchers.filter((w) => {
|
|
31
|
+
if (entry.projectId)
|
|
32
|
+
return w.projectId !== entry.projectId;
|
|
33
|
+
return w.teamId !== entry.teamId;
|
|
34
|
+
});
|
|
35
|
+
state.watchers.push(entry);
|
|
36
|
+
saveWatcherState(state);
|
|
37
|
+
}
|
|
38
|
+
function patchWatcherState(teamId, updates) {
|
|
39
|
+
const state = loadWatcherState();
|
|
40
|
+
const idx = state.watchers.findIndex((w) => w.teamId === teamId);
|
|
41
|
+
if (idx === -1)
|
|
42
|
+
return;
|
|
43
|
+
state.watchers[idx] = { ...state.watchers[idx], ...updates };
|
|
44
|
+
saveWatcherState(state);
|
|
45
|
+
}
|
|
46
|
+
function patchProjectWatcherState(projectId, updates) {
|
|
47
|
+
const state = loadWatcherState();
|
|
48
|
+
const idx = state.watchers.findIndex((w) => w.projectId === projectId);
|
|
49
|
+
if (idx === -1)
|
|
50
|
+
return;
|
|
51
|
+
state.watchers[idx] = { ...state.watchers[idx], ...updates };
|
|
52
|
+
saveWatcherState(state);
|
|
53
|
+
}
|
|
54
|
+
function resolveAuthContext(agentName) {
|
|
55
|
+
const config = loadConfig();
|
|
56
|
+
if (!config)
|
|
57
|
+
throw new Error("No config found. Run 'agentmesh init' first.");
|
|
58
|
+
const envToken = process.env.AGENT_TOKEN;
|
|
59
|
+
const envAgentId = process.env.AGENTMESH_AGENT_ID;
|
|
60
|
+
if (envToken && !agentName) {
|
|
61
|
+
return {
|
|
62
|
+
hubUrl: config.hubUrl,
|
|
63
|
+
workspace: config.workspace,
|
|
64
|
+
token: envToken,
|
|
65
|
+
agentId: envAgentId,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
const state = loadState();
|
|
69
|
+
let agent = agentName ? state.agents.find((a) => a.name === agentName) : undefined;
|
|
70
|
+
if (!agent && !agentName && envAgentId) {
|
|
71
|
+
agent = state.agents.find((a) => a.agentId === envAgentId);
|
|
72
|
+
}
|
|
73
|
+
if (!agent && !agentName) {
|
|
74
|
+
if (state.agents.length === 1) {
|
|
75
|
+
agent = state.agents[0];
|
|
76
|
+
}
|
|
77
|
+
else if (state.agents.length > 1) {
|
|
78
|
+
throw new Error("Multiple agents found. Pass --name to select which agent token to use.");
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
if (!agent) {
|
|
82
|
+
if (agentName)
|
|
83
|
+
throw new Error(`Agent "${agentName}" not found.`);
|
|
84
|
+
throw new Error("No agent token available. Start an agent or run inside an agent session.");
|
|
85
|
+
}
|
|
86
|
+
if (!agent.token) {
|
|
87
|
+
throw new Error(`No token found for agent "${agent.name}". Run 'agentmesh token refresh --name ${agent.name}'.`);
|
|
88
|
+
}
|
|
89
|
+
return {
|
|
90
|
+
hubUrl: config.hubUrl,
|
|
91
|
+
workspace: config.workspace,
|
|
92
|
+
token: agent.token,
|
|
93
|
+
agentName: agent.name,
|
|
94
|
+
agentId: agent.agentId,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
async function meshRequest(context, pathName, init = {}) {
|
|
98
|
+
const response = await fetch(`${context.hubUrl}${pathName}`, {
|
|
99
|
+
...init,
|
|
100
|
+
headers: {
|
|
101
|
+
Authorization: `Bearer ${context.token}`,
|
|
102
|
+
...(init.headers ?? {}),
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
if (!response.ok) {
|
|
106
|
+
const text = await response.text();
|
|
107
|
+
throw new Error(`Hub request failed (${response.status}): ${text}`);
|
|
108
|
+
}
|
|
109
|
+
if (response.status === 204)
|
|
110
|
+
return {};
|
|
111
|
+
return (await response.json());
|
|
112
|
+
}
|
|
113
|
+
function getWatcherState(teamId) {
|
|
114
|
+
return loadWatcherState().watchers.find((w) => w.teamId === teamId);
|
|
115
|
+
}
|
|
116
|
+
function validateIntervals(options) {
|
|
117
|
+
const intervalSeconds = options.intervalSeconds ?? 15;
|
|
118
|
+
const heartbeatSeconds = options.heartbeatSeconds ?? 10;
|
|
119
|
+
const ttlSeconds = options.ttlSeconds ?? 30;
|
|
120
|
+
if (!Number.isInteger(intervalSeconds) || intervalSeconds < 5 || intervalSeconds > 300) {
|
|
121
|
+
throw new Error("interval-seconds must be an integer between 5 and 300.");
|
|
122
|
+
}
|
|
123
|
+
if (!Number.isInteger(heartbeatSeconds) || heartbeatSeconds < 5 || heartbeatSeconds > 120) {
|
|
124
|
+
throw new Error("heartbeat-seconds must be an integer between 5 and 120.");
|
|
125
|
+
}
|
|
126
|
+
if (!Number.isInteger(ttlSeconds) || ttlSeconds < 10 || ttlSeconds > 300) {
|
|
127
|
+
throw new Error("ttl-seconds must be an integer between 10 and 300.");
|
|
128
|
+
}
|
|
129
|
+
return { intervalSeconds, heartbeatSeconds, ttlSeconds };
|
|
130
|
+
}
|
|
131
|
+
export async function startWatcher(options) {
|
|
132
|
+
if (!options.teamId?.trim())
|
|
133
|
+
throw new Error("team-id is required.");
|
|
134
|
+
const existing = getWatcherState(options.teamId);
|
|
135
|
+
if (existing && existing.pid > 0) {
|
|
136
|
+
try {
|
|
137
|
+
process.kill(existing.pid, 0);
|
|
138
|
+
throw new Error(`Watcher for team ${options.teamId} is already running (pid ${existing.pid}).`);
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
// stale pid, continue
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
const timings = validateIntervals(options);
|
|
145
|
+
if (!options.foreground) {
|
|
146
|
+
const cliPath = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../cli/index.js");
|
|
147
|
+
const args = [
|
|
148
|
+
"watcher",
|
|
149
|
+
"start",
|
|
150
|
+
"--team-id",
|
|
151
|
+
options.teamId,
|
|
152
|
+
"--foreground",
|
|
153
|
+
"--interval-seconds",
|
|
154
|
+
String(timings.intervalSeconds),
|
|
155
|
+
"--heartbeat-seconds",
|
|
156
|
+
String(timings.heartbeatSeconds),
|
|
157
|
+
"--ttl-seconds",
|
|
158
|
+
String(timings.ttlSeconds),
|
|
159
|
+
];
|
|
160
|
+
if (options.name)
|
|
161
|
+
args.push("--name", options.name);
|
|
162
|
+
const child = spawn("node", [cliPath, ...args], {
|
|
163
|
+
detached: true,
|
|
164
|
+
stdio: "ignore",
|
|
165
|
+
env: process.env,
|
|
166
|
+
});
|
|
167
|
+
child.unref();
|
|
168
|
+
upsertWatcherState({
|
|
169
|
+
teamId: options.teamId,
|
|
170
|
+
pid: child.pid ?? 0,
|
|
171
|
+
startedAt: new Date().toISOString(),
|
|
172
|
+
status: "starting",
|
|
173
|
+
agentName: options.name,
|
|
174
|
+
});
|
|
175
|
+
console.log(pc.green(`Watcher starting for team ${options.teamId} (PID: ${child.pid}).`));
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
const context = resolveAuthContext(options.name);
|
|
179
|
+
const holderName = context.agentName ?? "watcher";
|
|
180
|
+
const holderId = context.agentId ?? holderName;
|
|
181
|
+
const acquire = await meshRequest(context, `/api/v1/teams/${options.teamId}/watcher/acquire`, {
|
|
182
|
+
method: "POST",
|
|
183
|
+
headers: { "Content-Type": "application/json" },
|
|
184
|
+
body: JSON.stringify({
|
|
185
|
+
holder_id: holderId,
|
|
186
|
+
holder_name: holderName,
|
|
187
|
+
ttl_seconds: timings.ttlSeconds,
|
|
188
|
+
}),
|
|
189
|
+
});
|
|
190
|
+
if (!acquire.acquired || !acquire.lease_token) {
|
|
191
|
+
throw new Error(`Failed to acquire watcher lease for team ${options.teamId}${acquire.reason_code ? `: ${acquire.reason_code}` : ""}.`);
|
|
192
|
+
}
|
|
193
|
+
const leaseToken = acquire.lease_token;
|
|
194
|
+
const latest = await fetch(`${context.hubUrl}/api/v1/teams/${options.teamId}/watcher/snapshot/latest`, {
|
|
195
|
+
headers: { Authorization: `Bearer ${context.token}` },
|
|
196
|
+
});
|
|
197
|
+
let seq = 1;
|
|
198
|
+
if (latest.ok) {
|
|
199
|
+
const latestBody = (await latest.json());
|
|
200
|
+
if (typeof latestBody.seq === "number" && Number.isInteger(latestBody.seq)) {
|
|
201
|
+
seq = latestBody.seq + 1;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
let stopping = false;
|
|
205
|
+
const shutdown = async () => {
|
|
206
|
+
if (stopping)
|
|
207
|
+
return;
|
|
208
|
+
stopping = true;
|
|
209
|
+
clearInterval(heartbeatTimer);
|
|
210
|
+
clearInterval(snapshotTimer);
|
|
211
|
+
try {
|
|
212
|
+
await meshRequest(context, `/api/v1/teams/${options.teamId}/watcher/snapshots`, {
|
|
213
|
+
method: "POST",
|
|
214
|
+
headers: { "Content-Type": "application/json" },
|
|
215
|
+
body: JSON.stringify({
|
|
216
|
+
seq,
|
|
217
|
+
status: "degraded",
|
|
218
|
+
reason_code: "watcher_stopped",
|
|
219
|
+
payload: {
|
|
220
|
+
holder_id: holderId,
|
|
221
|
+
stopped_at: new Date().toISOString(),
|
|
222
|
+
},
|
|
223
|
+
}),
|
|
224
|
+
});
|
|
225
|
+
seq += 1;
|
|
226
|
+
}
|
|
227
|
+
catch {
|
|
228
|
+
// best effort only
|
|
229
|
+
}
|
|
230
|
+
try {
|
|
231
|
+
await meshRequest(context, `/api/v1/teams/${options.teamId}/watcher/release`, {
|
|
232
|
+
method: "POST",
|
|
233
|
+
headers: { "Content-Type": "application/json" },
|
|
234
|
+
body: JSON.stringify({ lease_token: leaseToken }),
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
catch {
|
|
238
|
+
// best effort only
|
|
239
|
+
}
|
|
240
|
+
patchWatcherState(options.teamId, { status: "stopped" });
|
|
241
|
+
process.exit(0);
|
|
242
|
+
};
|
|
243
|
+
process.on("SIGINT", shutdown);
|
|
244
|
+
process.on("SIGTERM", shutdown);
|
|
245
|
+
upsertWatcherState({
|
|
246
|
+
teamId: options.teamId,
|
|
247
|
+
pid: process.pid,
|
|
248
|
+
startedAt: new Date().toISOString(),
|
|
249
|
+
status: "starting",
|
|
250
|
+
leaseToken,
|
|
251
|
+
agentName: options.name,
|
|
252
|
+
});
|
|
253
|
+
const heartbeatTimer = setInterval(async () => {
|
|
254
|
+
if (stopping)
|
|
255
|
+
return;
|
|
256
|
+
try {
|
|
257
|
+
const renewed = await meshRequest(context, `/api/v1/teams/${options.teamId}/watcher/renew`, {
|
|
258
|
+
method: "POST",
|
|
259
|
+
headers: { "Content-Type": "application/json" },
|
|
260
|
+
body: JSON.stringify({
|
|
261
|
+
lease_token: leaseToken,
|
|
262
|
+
ttl_seconds: timings.ttlSeconds,
|
|
263
|
+
}),
|
|
264
|
+
});
|
|
265
|
+
if (!renewed.ok) {
|
|
266
|
+
throw new Error(renewed.reason_code ?? "lease_renew_failed");
|
|
267
|
+
}
|
|
268
|
+
patchWatcherState(options.teamId, {
|
|
269
|
+
status: "running",
|
|
270
|
+
lastHeartbeatAt: new Date().toISOString(),
|
|
271
|
+
leaseToken,
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
catch (error) {
|
|
275
|
+
patchWatcherState(options.teamId, { status: "failed" });
|
|
276
|
+
console.error(pc.red(`Watcher lease renewal failed: ${error.message}`));
|
|
277
|
+
await shutdown();
|
|
278
|
+
}
|
|
279
|
+
}, timings.heartbeatSeconds * 1000);
|
|
280
|
+
const snapshotTimer = setInterval(async () => {
|
|
281
|
+
if (stopping)
|
|
282
|
+
return;
|
|
283
|
+
try {
|
|
284
|
+
await meshRequest(context, `/api/v1/teams/${options.teamId}/watcher/snapshots`, {
|
|
285
|
+
method: "POST",
|
|
286
|
+
headers: { "Content-Type": "application/json" },
|
|
287
|
+
body: JSON.stringify({
|
|
288
|
+
seq,
|
|
289
|
+
status: "ok",
|
|
290
|
+
payload: {
|
|
291
|
+
holder_id: holderId,
|
|
292
|
+
heartbeat_seconds: timings.heartbeatSeconds,
|
|
293
|
+
interval_seconds: timings.intervalSeconds,
|
|
294
|
+
uptime_seconds: Math.floor(process.uptime()),
|
|
295
|
+
},
|
|
296
|
+
}),
|
|
297
|
+
});
|
|
298
|
+
seq += 1;
|
|
299
|
+
}
|
|
300
|
+
catch (error) {
|
|
301
|
+
console.error(pc.yellow(`Snapshot publish skipped: ${error.message}`));
|
|
302
|
+
}
|
|
303
|
+
}, timings.intervalSeconds * 1000);
|
|
304
|
+
await meshRequest(context, `/api/v1/teams/${options.teamId}/watcher/snapshots`, {
|
|
305
|
+
method: "POST",
|
|
306
|
+
headers: { "Content-Type": "application/json" },
|
|
307
|
+
body: JSON.stringify({
|
|
308
|
+
seq,
|
|
309
|
+
status: "ok",
|
|
310
|
+
payload: {
|
|
311
|
+
holder_id: holderId,
|
|
312
|
+
started_at: new Date().toISOString(),
|
|
313
|
+
},
|
|
314
|
+
}),
|
|
315
|
+
});
|
|
316
|
+
seq += 1;
|
|
317
|
+
patchWatcherState(options.teamId, { leaseToken, status: "running" });
|
|
318
|
+
console.log(pc.green(`Watcher loop running for team ${options.teamId}. Lease token: ${leaseToken}`));
|
|
319
|
+
await new Promise(() => { });
|
|
320
|
+
}
|
|
321
|
+
export async function stopWatcher(options) {
|
|
322
|
+
const watcher = getWatcherState(options.teamId);
|
|
323
|
+
if (!watcher || watcher.pid <= 0) {
|
|
324
|
+
console.log(pc.yellow(`No local watcher process found for team ${options.teamId}.`));
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
try {
|
|
328
|
+
process.kill(watcher.pid, "SIGTERM");
|
|
329
|
+
}
|
|
330
|
+
catch {
|
|
331
|
+
// process already gone
|
|
332
|
+
}
|
|
333
|
+
patchWatcherState(options.teamId, { status: "stopped" });
|
|
334
|
+
console.log(pc.green(`Stop signal sent to watcher for team ${options.teamId} (PID: ${watcher.pid}).`));
|
|
335
|
+
}
|
|
336
|
+
export async function watcherStatus(options) {
|
|
337
|
+
const context = resolveAuthContext(options.name);
|
|
338
|
+
const stale = options.staleAfterSeconds && Number.isInteger(options.staleAfterSeconds)
|
|
339
|
+
? `?stale_after_seconds=${options.staleAfterSeconds}`
|
|
340
|
+
: "";
|
|
341
|
+
const remote = await meshRequest(context, `/api/v1/teams/${options.teamId}/watcher/status${stale}`);
|
|
342
|
+
const local = getWatcherState(options.teamId) ?? null;
|
|
343
|
+
if (options.json) {
|
|
344
|
+
console.log(JSON.stringify({ local, remote }, null, 2));
|
|
345
|
+
return;
|
|
346
|
+
}
|
|
347
|
+
console.log(pc.bold(`Watcher status for team ${options.teamId}`));
|
|
348
|
+
console.log(`Remote status: ${String(remote.status)}`);
|
|
349
|
+
console.log(`Remote seq: ${String(remote.seq)}`);
|
|
350
|
+
const reasons = Array.isArray(remote.reason_codes) ? remote.reason_codes : [];
|
|
351
|
+
console.log(`Reason codes: ${reasons.length > 0 ? reasons.join(", ") : "-"}`);
|
|
352
|
+
if (local) {
|
|
353
|
+
console.log(`Local process: PID ${local.pid} (${local.status})`);
|
|
354
|
+
console.log(`Started at: ${local.startedAt}`);
|
|
355
|
+
if (local.lastHeartbeatAt)
|
|
356
|
+
console.log(`Last heartbeat: ${local.lastHeartbeatAt}`);
|
|
357
|
+
}
|
|
358
|
+
else {
|
|
359
|
+
console.log("Local process: not found");
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
export async function pullWatcher(options) {
|
|
363
|
+
const context = resolveAuthContext(options.name);
|
|
364
|
+
const snapshot = await meshRequest(context, `/api/v1/teams/${options.teamId}/watcher/snapshot/latest`);
|
|
365
|
+
if (options.json) {
|
|
366
|
+
console.log(JSON.stringify(snapshot, null, 2));
|
|
367
|
+
return;
|
|
368
|
+
}
|
|
369
|
+
console.log(pc.bold(`Latest watcher snapshot for team ${options.teamId}`));
|
|
370
|
+
console.log(`Seq: ${String(snapshot.seq)}`);
|
|
371
|
+
console.log(`Status: ${String(snapshot.status)}`);
|
|
372
|
+
console.log(`Reason: ${snapshot.reason_code ? String(snapshot.reason_code) : "-"}`);
|
|
373
|
+
console.log(`Generated at: ${String(snapshot.generated_at)}`);
|
|
374
|
+
if (snapshot.payload && typeof snapshot.payload === "object") {
|
|
375
|
+
console.log(`Payload: ${JSON.stringify(snapshot.payload)}`);
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
/** Lease TTL for project watchers (matches hub PROJECT_WATCHER_LEASE_TTL_SECONDS). */
|
|
379
|
+
const PROJECT_WATCHER_LEASE_TTL_SECONDS = 300;
|
|
380
|
+
/** Renewal interval: renew at 60% of TTL. */
|
|
381
|
+
export const PROJECT_WATCHER_RENEWAL_INTERVAL_SECONDS = Math.floor(PROJECT_WATCHER_LEASE_TTL_SECONDS * 0.6); // 180s
|
|
382
|
+
export async function startProjectWatcher(options) {
|
|
383
|
+
if (!options.projectId?.trim())
|
|
384
|
+
throw new Error("project-id is required.");
|
|
385
|
+
const intervalSeconds = options.intervalSeconds ?? 60;
|
|
386
|
+
if (!Number.isInteger(intervalSeconds) || intervalSeconds < 10 || intervalSeconds > 300) {
|
|
387
|
+
throw new Error("interval must be an integer between 10 and 300.");
|
|
388
|
+
}
|
|
389
|
+
// Background mode: re-spawn self in foreground
|
|
390
|
+
if (!options.foreground) {
|
|
391
|
+
const cliPath = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../cli/index.js");
|
|
392
|
+
const args = [
|
|
393
|
+
"watcher",
|
|
394
|
+
"start",
|
|
395
|
+
"--project-id",
|
|
396
|
+
options.projectId,
|
|
397
|
+
"--foreground",
|
|
398
|
+
"--interval",
|
|
399
|
+
String(intervalSeconds),
|
|
400
|
+
];
|
|
401
|
+
if (options.name)
|
|
402
|
+
args.push("--name", options.name);
|
|
403
|
+
const child = spawn("node", [cliPath, ...args], {
|
|
404
|
+
detached: true,
|
|
405
|
+
stdio: "ignore",
|
|
406
|
+
env: process.env,
|
|
407
|
+
});
|
|
408
|
+
child.unref();
|
|
409
|
+
upsertWatcherState({
|
|
410
|
+
projectId: options.projectId,
|
|
411
|
+
pid: child.pid ?? 0,
|
|
412
|
+
startedAt: new Date().toISOString(),
|
|
413
|
+
status: "starting",
|
|
414
|
+
agentName: options.name,
|
|
415
|
+
});
|
|
416
|
+
console.log(pc.green(`Project watcher starting for ${options.projectId} (PID: ${child.pid}).`));
|
|
417
|
+
return;
|
|
418
|
+
}
|
|
419
|
+
const context = resolveAuthContext(options.name);
|
|
420
|
+
// Provision / re-attach lease
|
|
421
|
+
const provision = await meshRequest(context, `/api/v1/projects/${options.projectId}/watcher/provision`, {
|
|
422
|
+
method: "POST",
|
|
423
|
+
headers: { "Content-Type": "application/json" },
|
|
424
|
+
body: "{}",
|
|
425
|
+
});
|
|
426
|
+
const watcherId = provision.watcher_id;
|
|
427
|
+
if (provision.status === "already_running") {
|
|
428
|
+
console.log(pc.yellow(`Project watcher already provisioned for ${options.projectId} (watcher_id: ${watcherId}). Attaching to existing lease.`));
|
|
429
|
+
}
|
|
430
|
+
else {
|
|
431
|
+
console.log(pc.green(`Project watcher provisioned for ${options.projectId} (watcher_id: ${watcherId}).`));
|
|
432
|
+
}
|
|
433
|
+
upsertWatcherState({
|
|
434
|
+
projectId: options.projectId,
|
|
435
|
+
watcherId,
|
|
436
|
+
pid: process.pid,
|
|
437
|
+
startedAt: new Date().toISOString(),
|
|
438
|
+
status: "running",
|
|
439
|
+
agentName: options.name,
|
|
440
|
+
});
|
|
441
|
+
const shutdown = async () => {
|
|
442
|
+
try {
|
|
443
|
+
await meshRequest(context, `/api/v1/projects/${options.projectId}/watcher/lease/release`, {
|
|
444
|
+
method: "POST",
|
|
445
|
+
headers: { "Content-Type": "application/json" },
|
|
446
|
+
body: "{}",
|
|
447
|
+
});
|
|
448
|
+
console.log(pc.green("[shutdown] Project watcher lease released."));
|
|
449
|
+
}
|
|
450
|
+
catch {
|
|
451
|
+
// best effort
|
|
452
|
+
}
|
|
453
|
+
patchProjectWatcherState(options.projectId, { status: "stopped" });
|
|
454
|
+
process.exit(0);
|
|
455
|
+
};
|
|
456
|
+
process.on("SIGINT", shutdown);
|
|
457
|
+
process.on("SIGTERM", shutdown);
|
|
458
|
+
startProjectWatcherLoop({
|
|
459
|
+
intervalSeconds,
|
|
460
|
+
renewalIntervalSeconds: PROJECT_WATCHER_RENEWAL_INTERVAL_SECONDS,
|
|
461
|
+
async onTick() {
|
|
462
|
+
return meshRequest(context, `/api/v1/projects/${options.projectId}/watcher/tick`, {
|
|
463
|
+
method: "POST",
|
|
464
|
+
headers: { "Content-Type": "application/json" },
|
|
465
|
+
body: JSON.stringify({ dry_run: false }),
|
|
466
|
+
});
|
|
467
|
+
},
|
|
468
|
+
async onRenew() {
|
|
469
|
+
const result = await meshRequest(context, `/api/v1/projects/${options.projectId}/watcher/lease/renew`, {
|
|
470
|
+
method: "POST",
|
|
471
|
+
headers: { "Content-Type": "application/json" },
|
|
472
|
+
body: JSON.stringify({ watcher_id: watcherId }),
|
|
473
|
+
});
|
|
474
|
+
if (result.renewed) {
|
|
475
|
+
patchProjectWatcherState(options.projectId, { lastHeartbeatAt: new Date().toISOString() });
|
|
476
|
+
}
|
|
477
|
+
return result;
|
|
478
|
+
},
|
|
479
|
+
onLog: (msg) => console.log(pc.cyan(msg)),
|
|
480
|
+
onError: (msg) => console.error(pc.red(msg)),
|
|
481
|
+
onShutdown: shutdown,
|
|
482
|
+
});
|
|
483
|
+
console.log(pc.green(`Project watcher loop running for ${options.projectId}. Tick every ${intervalSeconds}s, lease renewal every ${PROJECT_WATCHER_RENEWAL_INTERVAL_SECONDS}s.`));
|
|
484
|
+
// Keep process alive
|
|
485
|
+
await new Promise(() => { });
|
|
486
|
+
}
|
|
487
|
+
//# sourceMappingURL=watcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/cli/watcher.ts"],"names":[],"mappings":"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"}
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -5,6 +5,8 @@ export interface AgentConfig {
|
|
|
5
5
|
workdir?: string;
|
|
6
6
|
model?: string;
|
|
7
7
|
teams?: string[];
|
|
8
|
+
/** Team ID to assign this worker agent to on registration. Required for worker agents. */
|
|
9
|
+
teamId?: string;
|
|
8
10
|
/** agent_type sent to hub on registration. Defaults to "worker". */
|
|
9
11
|
agentType?: "worker" | "system" | "autonomous";
|
|
10
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAwBA,MAAM,CAAC,MAAM,cAAc,GAAoB;IAC7C,MAAM,EAAE,yBAAyB;IACjC,QAAQ,EAAE;QACR,OAAO,EAAE,UAAU;QACnB,KAAK,EAAE,iBAAiB;KACzB;IACD,MAAM,EAAE,EAAE;CACX,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,yBAAyB,CAAC;AACxE,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,wBAAwB,CAAC"}
|
package/dist/core/daemon.d.ts
CHANGED
|
@@ -30,6 +30,8 @@ export interface DaemonOptions {
|
|
|
30
30
|
autoAcceptHandoffs?: boolean;
|
|
31
31
|
/** Run agent in fully autonomous mode — injects runtime-specific non-interactive flags */
|
|
32
32
|
autonomous?: boolean;
|
|
33
|
+
/** Team ID to register this worker agent with (required for --worker) */
|
|
34
|
+
teamId?: string;
|
|
33
35
|
}
|
|
34
36
|
export declare class AgentDaemon {
|
|
35
37
|
private agentName;
|
|
@@ -67,6 +69,7 @@ export declare class AgentDaemon {
|
|
|
67
69
|
private lastPendingHandoffAlertAt;
|
|
68
70
|
private remoteAutomationPaused;
|
|
69
71
|
private lastAutonomyPolicyFetchAt;
|
|
72
|
+
private teamId;
|
|
70
73
|
private pendingClaimCreations;
|
|
71
74
|
private sessionRecoveryAttempts;
|
|
72
75
|
private lastSessionRecoveryAt;
|
package/dist/core/daemon.js
CHANGED
|
@@ -81,6 +81,7 @@ export class AgentDaemon {
|
|
|
81
81
|
lastPendingHandoffAlertAt = null;
|
|
82
82
|
remoteAutomationPaused = false;
|
|
83
83
|
lastAutonomyPolicyFetchAt = null;
|
|
84
|
+
teamId;
|
|
84
85
|
pendingClaimCreations = new Set();
|
|
85
86
|
sessionRecoveryAttempts = 0;
|
|
86
87
|
lastSessionRecoveryAt = null;
|
|
@@ -103,6 +104,7 @@ export class AgentDaemon {
|
|
|
103
104
|
this.projectRole = boot.projectRole;
|
|
104
105
|
this.autoAcceptHandoffs = boot.autoAcceptHandoffs;
|
|
105
106
|
this.autonomous = options.autonomous ?? false;
|
|
107
|
+
this.teamId = options.teamId || boot.agentConfig.teamId;
|
|
106
108
|
this.runnerConfig = boot.runnerConfig;
|
|
107
109
|
const runnerName = getRunnerDisplayName(this.runnerConfig.type);
|
|
108
110
|
console.log(`Runner: ${runnerName}`);
|
|
@@ -155,6 +157,7 @@ export class AgentDaemon {
|
|
|
155
157
|
model: this.agentConfig.model || this.config.defaults.model,
|
|
156
158
|
restoreContext: this.shouldRestoreContext,
|
|
157
159
|
agentType: effectiveAgentType,
|
|
160
|
+
teamId: this.teamId,
|
|
158
161
|
});
|
|
159
162
|
this.agentId = registration.agentId;
|
|
160
163
|
this.token = registration.token;
|