@agentmeshhq/agent 0.4.10 → 0.4.11

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/cli/start.js CHANGED
@@ -19,6 +19,12 @@ export async function start(options) {
19
19
  const resolvedCommand = options.command || persistedAgent?.command || config.defaults.command;
20
20
  const resolvedModel = options.model || persistedAgent?.model || config.defaults.model;
21
21
  const resolvedWorkdir = options.workdir || persistedAgent?.workdir;
22
+ const resolvedTeamId = options.teamId || persistedAgent?.teamId;
23
+ // Validate: worker agents require a team-id (hub will reject without one)
24
+ if (options.worker && !resolvedTeamId) {
25
+ console.error(pc.red("Error: --worker requires --team-id <id>. Create a team in the hub first, then pass its ID."));
26
+ process.exit(1);
27
+ }
22
28
  // Keep a canonical per-agent config so restart reliably preserves workdir/model/command.
23
29
  upsertAgentConfig({
24
30
  ...(persistedAgent || {}),
@@ -26,6 +32,7 @@ export async function start(options) {
26
32
  command: resolvedCommand,
27
33
  model: resolvedModel,
28
34
  ...(resolvedWorkdir ? { workdir: resolvedWorkdir } : {}),
35
+ ...(resolvedTeamId ? { teamId: resolvedTeamId } : {}),
29
36
  });
30
37
  // Check if already running
31
38
  const existingState = getAgentState(options.name);
@@ -50,6 +57,7 @@ export async function start(options) {
50
57
  project: options.project,
51
58
  role: options.role,
52
59
  autonomous: options.autonomous,
60
+ teamId: resolvedTeamId,
53
61
  });
54
62
  await daemon.start();
55
63
  // Keep process alive
@@ -65,14 +73,39 @@ export async function start(options) {
65
73
  console.log(`Starting agent "${options.name}" in background...`);
66
74
  // Get the path to this CLI
67
75
  const cliPath = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../cli/index.js");
68
- // Build args for the background process
76
+ const args = buildSpawnArgs(options, {
77
+ resolvedCommand,
78
+ resolvedWorkdir,
79
+ resolvedModel,
80
+ resolvedTeamId,
81
+ });
82
+ // Spawn detached background process
83
+ const child = spawn("node", [cliPath, ...args], {
84
+ detached: true,
85
+ stdio: "ignore",
86
+ env: process.env,
87
+ });
88
+ child.unref();
89
+ console.log(pc.green(`Agent "${options.name}" started in background (PID: ${child.pid})`));
90
+ console.log();
91
+ console.log(`Attach to session:`);
92
+ console.log(` ${pc.cyan(`agentmesh attach ${options.name}`)}`);
93
+ console.log();
94
+ console.log(`Stop agent:`);
95
+ console.log(` ${pc.cyan(`agentmesh stop ${options.name}`)}`);
96
+ console.log();
97
+ console.log(`List agents:`);
98
+ console.log(` ${pc.cyan(`agentmesh list`)}`);
99
+ }
100
+ /** Pure helper — builds the background spawn arg list. Exported for testing. */
101
+ export function buildSpawnArgs(options, resolved) {
69
102
  const args = ["start", "--name", options.name, "--foreground"];
70
- if (resolvedCommand)
71
- args.push("--command", resolvedCommand);
72
- if (resolvedWorkdir)
73
- args.push("--workdir", resolvedWorkdir);
74
- if (resolvedModel)
75
- args.push("--model", resolvedModel);
103
+ if (resolved.resolvedCommand)
104
+ args.push("--command", resolved.resolvedCommand);
105
+ if (resolved.resolvedWorkdir)
106
+ args.push("--workdir", resolved.resolvedWorkdir);
107
+ if (resolved.resolvedModel)
108
+ args.push("--model", resolved.resolvedModel);
76
109
  if (options.restoreContext)
77
110
  args.push("--restore-context");
78
111
  if (options.worker)
@@ -101,22 +134,8 @@ export async function start(options) {
101
134
  args.push("--role", options.role);
102
135
  if (options.autonomous)
103
136
  args.push("--autonomous");
104
- // Spawn detached background process
105
- const child = spawn("node", [cliPath, ...args], {
106
- detached: true,
107
- stdio: "ignore",
108
- env: process.env,
109
- });
110
- child.unref();
111
- console.log(pc.green(`Agent "${options.name}" started in background (PID: ${child.pid})`));
112
- console.log();
113
- console.log(`Attach to session:`);
114
- console.log(` ${pc.cyan(`agentmesh attach ${options.name}`)}`);
115
- console.log();
116
- console.log(`Stop agent:`);
117
- console.log(` ${pc.cyan(`agentmesh stop ${options.name}`)}`);
118
- console.log();
119
- console.log(`List agents:`);
120
- console.log(` ${pc.cyan(`agentmesh list`)}`);
137
+ if (resolved.resolvedTeamId)
138
+ args.push("--team-id", resolved.resolvedTeamId);
139
+ return args;
121
140
  }
122
141
  //# sourceMappingURL=start.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/cli/start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/cli/start.ts"],"names":[],"mappings":"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"}
package/dist/cli/test.js CHANGED
@@ -29,6 +29,9 @@ function isLocalStackRunning(slot = 0) {
29
29
  return false;
30
30
  }
31
31
  }
32
+ function localTestDatabaseUrl(slot) {
33
+ return `postgresql://postgres:postgres@localhost:${slotPort(5432, slot)}/agentmesh_test`;
34
+ }
32
35
  export async function test(options = {}) {
33
36
  const projectRoot = findProjectRoot();
34
37
  if (options.e2e) {
@@ -44,7 +47,7 @@ async function runUnitTests(projectRoot, options) {
44
47
  const slot = options.slot ?? 0;
45
48
  const localStackUp = isLocalStackRunning(slot);
46
49
  if (localStackUp) {
47
- console.log(pc.dim("Local stack detected - integration tests will use local services"));
50
+ console.log(pc.dim("Local stack detected - tests will use dedicated test database/services"));
48
51
  }
49
52
  const args = ["pnpm"];
50
53
  if (options.package) {
@@ -68,7 +71,9 @@ async function runUnitTests(projectRoot, options) {
68
71
  ...process.env,
69
72
  // If local stack is running, use it for tests
70
73
  ...(localStackUp && {
71
- DATABASE_URL: `postgresql://postgres:postgres@localhost:${slotPort(5432, slot)}/agentmesh`,
74
+ DATABASE_URL: localTestDatabaseUrl(slot),
75
+ TEST_DATABASE_URL: localTestDatabaseUrl(slot),
76
+ AGENTMESH_TEST_DATABASE_URL: localTestDatabaseUrl(slot),
72
77
  REDIS_URL: `redis://localhost:${slotPort(6380, slot)}/0`,
73
78
  }),
74
79
  },
@@ -1 +1 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/cli/test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/cli/test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ type WatcherStartOptions = {
2
+ teamId: string;
3
+ name?: string;
4
+ foreground?: boolean;
5
+ intervalSeconds?: number;
6
+ heartbeatSeconds?: number;
7
+ ttlSeconds?: number;
8
+ };
9
+ type WatcherStopOptions = {
10
+ teamId: string;
11
+ };
12
+ type WatcherStatusOptions = {
13
+ teamId: string;
14
+ name?: string;
15
+ json?: boolean;
16
+ staleAfterSeconds?: number;
17
+ };
18
+ type WatcherPullOptions = {
19
+ teamId: string;
20
+ name?: string;
21
+ json?: boolean;
22
+ };
23
+ export declare function startWatcher(options: WatcherStartOptions): Promise<void>;
24
+ export declare function stopWatcher(options: WatcherStopOptions): Promise<void>;
25
+ export declare function watcherStatus(options: WatcherStatusOptions): Promise<void>;
26
+ export declare function pullWatcher(options: WatcherPullOptions): Promise<void>;
27
+ export {};
@@ -0,0 +1,365 @@
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
+ const WATCHER_STATE_PATH = path.join(process.env.HOME || ".", ".agentmesh", "watcher-state.json");
8
+ function ensureConfigDir() {
9
+ const dir = path.dirname(WATCHER_STATE_PATH);
10
+ if (!fs.existsSync(dir))
11
+ fs.mkdirSync(dir, { recursive: true });
12
+ }
13
+ function loadWatcherState() {
14
+ try {
15
+ if (!fs.existsSync(WATCHER_STATE_PATH))
16
+ return { watchers: [] };
17
+ return JSON.parse(fs.readFileSync(WATCHER_STATE_PATH, "utf-8"));
18
+ }
19
+ catch {
20
+ return { watchers: [] };
21
+ }
22
+ }
23
+ function saveWatcherState(state) {
24
+ ensureConfigDir();
25
+ fs.writeFileSync(WATCHER_STATE_PATH, JSON.stringify(state, null, 2));
26
+ }
27
+ function upsertWatcherState(entry) {
28
+ const state = loadWatcherState();
29
+ state.watchers = state.watchers.filter((w) => w.teamId !== entry.teamId);
30
+ state.watchers.push(entry);
31
+ saveWatcherState(state);
32
+ }
33
+ function patchWatcherState(teamId, updates) {
34
+ const state = loadWatcherState();
35
+ const idx = state.watchers.findIndex((w) => w.teamId === teamId);
36
+ if (idx === -1)
37
+ return;
38
+ state.watchers[idx] = { ...state.watchers[idx], ...updates };
39
+ saveWatcherState(state);
40
+ }
41
+ function resolveAuthContext(agentName) {
42
+ const config = loadConfig();
43
+ if (!config)
44
+ throw new Error("No config found. Run 'agentmesh init' first.");
45
+ const envToken = process.env.AGENT_TOKEN;
46
+ const envAgentId = process.env.AGENTMESH_AGENT_ID;
47
+ if (envToken && !agentName) {
48
+ return {
49
+ hubUrl: config.hubUrl,
50
+ workspace: config.workspace,
51
+ token: envToken,
52
+ agentId: envAgentId,
53
+ };
54
+ }
55
+ const state = loadState();
56
+ let agent = agentName ? state.agents.find((a) => a.name === agentName) : undefined;
57
+ if (!agent && !agentName && envAgentId) {
58
+ agent = state.agents.find((a) => a.agentId === envAgentId);
59
+ }
60
+ if (!agent && !agentName) {
61
+ if (state.agents.length === 1) {
62
+ agent = state.agents[0];
63
+ }
64
+ else if (state.agents.length > 1) {
65
+ throw new Error("Multiple agents found. Pass --name to select which agent token to use.");
66
+ }
67
+ }
68
+ if (!agent) {
69
+ if (agentName)
70
+ throw new Error(`Agent "${agentName}" not found.`);
71
+ throw new Error("No agent token available. Start an agent or run inside an agent session.");
72
+ }
73
+ if (!agent.token) {
74
+ throw new Error(`No token found for agent "${agent.name}". Run 'agentmesh token refresh --name ${agent.name}'.`);
75
+ }
76
+ return {
77
+ hubUrl: config.hubUrl,
78
+ workspace: config.workspace,
79
+ token: agent.token,
80
+ agentName: agent.name,
81
+ agentId: agent.agentId,
82
+ };
83
+ }
84
+ async function meshRequest(context, pathName, init = {}) {
85
+ const response = await fetch(`${context.hubUrl}${pathName}`, {
86
+ ...init,
87
+ headers: {
88
+ Authorization: `Bearer ${context.token}`,
89
+ ...(init.headers ?? {}),
90
+ },
91
+ });
92
+ if (!response.ok) {
93
+ const text = await response.text();
94
+ throw new Error(`Hub request failed (${response.status}): ${text}`);
95
+ }
96
+ if (response.status === 204)
97
+ return {};
98
+ return (await response.json());
99
+ }
100
+ function getWatcherState(teamId) {
101
+ return loadWatcherState().watchers.find((w) => w.teamId === teamId);
102
+ }
103
+ function validateIntervals(options) {
104
+ const intervalSeconds = options.intervalSeconds ?? 15;
105
+ const heartbeatSeconds = options.heartbeatSeconds ?? 10;
106
+ const ttlSeconds = options.ttlSeconds ?? 30;
107
+ if (!Number.isInteger(intervalSeconds) || intervalSeconds < 5 || intervalSeconds > 300) {
108
+ throw new Error("interval-seconds must be an integer between 5 and 300.");
109
+ }
110
+ if (!Number.isInteger(heartbeatSeconds) || heartbeatSeconds < 5 || heartbeatSeconds > 120) {
111
+ throw new Error("heartbeat-seconds must be an integer between 5 and 120.");
112
+ }
113
+ if (!Number.isInteger(ttlSeconds) || ttlSeconds < 10 || ttlSeconds > 300) {
114
+ throw new Error("ttl-seconds must be an integer between 10 and 300.");
115
+ }
116
+ return { intervalSeconds, heartbeatSeconds, ttlSeconds };
117
+ }
118
+ export async function startWatcher(options) {
119
+ if (!options.teamId?.trim())
120
+ throw new Error("team-id is required.");
121
+ const existing = getWatcherState(options.teamId);
122
+ if (existing && existing.pid > 0) {
123
+ try {
124
+ process.kill(existing.pid, 0);
125
+ throw new Error(`Watcher for team ${options.teamId} is already running (pid ${existing.pid}).`);
126
+ }
127
+ catch {
128
+ // stale pid, continue
129
+ }
130
+ }
131
+ const timings = validateIntervals(options);
132
+ if (!options.foreground) {
133
+ const cliPath = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../cli/index.js");
134
+ const args = [
135
+ "watcher",
136
+ "start",
137
+ "--team-id",
138
+ options.teamId,
139
+ "--foreground",
140
+ "--interval-seconds",
141
+ String(timings.intervalSeconds),
142
+ "--heartbeat-seconds",
143
+ String(timings.heartbeatSeconds),
144
+ "--ttl-seconds",
145
+ String(timings.ttlSeconds),
146
+ ];
147
+ if (options.name)
148
+ args.push("--name", options.name);
149
+ const child = spawn("node", [cliPath, ...args], {
150
+ detached: true,
151
+ stdio: "ignore",
152
+ env: process.env,
153
+ });
154
+ child.unref();
155
+ upsertWatcherState({
156
+ teamId: options.teamId,
157
+ pid: child.pid ?? 0,
158
+ startedAt: new Date().toISOString(),
159
+ status: "starting",
160
+ agentName: options.name,
161
+ });
162
+ console.log(pc.green(`Watcher starting for team ${options.teamId} (PID: ${child.pid}).`));
163
+ return;
164
+ }
165
+ const context = resolveAuthContext(options.name);
166
+ const holderName = context.agentName ?? "watcher";
167
+ const holderId = context.agentId ?? holderName;
168
+ const acquire = await meshRequest(context, `/api/v1/teams/${options.teamId}/watcher/acquire`, {
169
+ method: "POST",
170
+ headers: { "Content-Type": "application/json" },
171
+ body: JSON.stringify({
172
+ holder_id: holderId,
173
+ holder_name: holderName,
174
+ ttl_seconds: timings.ttlSeconds,
175
+ }),
176
+ });
177
+ if (!acquire.acquired || !acquire.lease_token) {
178
+ throw new Error(`Failed to acquire watcher lease for team ${options.teamId}${acquire.reason_code ? `: ${acquire.reason_code}` : ""}.`);
179
+ }
180
+ const leaseToken = acquire.lease_token;
181
+ const latest = await fetch(`${context.hubUrl}/api/v1/teams/${options.teamId}/watcher/snapshot/latest`, {
182
+ headers: { Authorization: `Bearer ${context.token}` },
183
+ });
184
+ let seq = 1;
185
+ if (latest.ok) {
186
+ const latestBody = (await latest.json());
187
+ if (typeof latestBody.seq === "number" && Number.isInteger(latestBody.seq)) {
188
+ seq = latestBody.seq + 1;
189
+ }
190
+ }
191
+ let stopping = false;
192
+ const shutdown = async () => {
193
+ if (stopping)
194
+ return;
195
+ stopping = true;
196
+ clearInterval(heartbeatTimer);
197
+ clearInterval(snapshotTimer);
198
+ try {
199
+ await meshRequest(context, `/api/v1/teams/${options.teamId}/watcher/snapshots`, {
200
+ method: "POST",
201
+ headers: { "Content-Type": "application/json" },
202
+ body: JSON.stringify({
203
+ seq,
204
+ status: "degraded",
205
+ reason_code: "watcher_stopped",
206
+ payload: {
207
+ holder_id: holderId,
208
+ stopped_at: new Date().toISOString(),
209
+ },
210
+ }),
211
+ });
212
+ seq += 1;
213
+ }
214
+ catch {
215
+ // best effort only
216
+ }
217
+ try {
218
+ await meshRequest(context, `/api/v1/teams/${options.teamId}/watcher/release`, {
219
+ method: "POST",
220
+ headers: { "Content-Type": "application/json" },
221
+ body: JSON.stringify({ lease_token: leaseToken }),
222
+ });
223
+ }
224
+ catch {
225
+ // best effort only
226
+ }
227
+ patchWatcherState(options.teamId, { status: "stopped" });
228
+ process.exit(0);
229
+ };
230
+ process.on("SIGINT", shutdown);
231
+ process.on("SIGTERM", shutdown);
232
+ upsertWatcherState({
233
+ teamId: options.teamId,
234
+ pid: process.pid,
235
+ startedAt: new Date().toISOString(),
236
+ status: "starting",
237
+ leaseToken,
238
+ agentName: options.name,
239
+ });
240
+ const heartbeatTimer = setInterval(async () => {
241
+ if (stopping)
242
+ return;
243
+ try {
244
+ const renewed = await meshRequest(context, `/api/v1/teams/${options.teamId}/watcher/renew`, {
245
+ method: "POST",
246
+ headers: { "Content-Type": "application/json" },
247
+ body: JSON.stringify({
248
+ lease_token: leaseToken,
249
+ ttl_seconds: timings.ttlSeconds,
250
+ }),
251
+ });
252
+ if (!renewed.ok) {
253
+ throw new Error(renewed.reason_code ?? "lease_renew_failed");
254
+ }
255
+ patchWatcherState(options.teamId, {
256
+ status: "running",
257
+ lastHeartbeatAt: new Date().toISOString(),
258
+ leaseToken,
259
+ });
260
+ }
261
+ catch (error) {
262
+ patchWatcherState(options.teamId, { status: "failed" });
263
+ console.error(pc.red(`Watcher lease renewal failed: ${error.message}`));
264
+ await shutdown();
265
+ }
266
+ }, timings.heartbeatSeconds * 1000);
267
+ const snapshotTimer = setInterval(async () => {
268
+ if (stopping)
269
+ return;
270
+ try {
271
+ await meshRequest(context, `/api/v1/teams/${options.teamId}/watcher/snapshots`, {
272
+ method: "POST",
273
+ headers: { "Content-Type": "application/json" },
274
+ body: JSON.stringify({
275
+ seq,
276
+ status: "ok",
277
+ payload: {
278
+ holder_id: holderId,
279
+ heartbeat_seconds: timings.heartbeatSeconds,
280
+ interval_seconds: timings.intervalSeconds,
281
+ uptime_seconds: Math.floor(process.uptime()),
282
+ },
283
+ }),
284
+ });
285
+ seq += 1;
286
+ }
287
+ catch (error) {
288
+ console.error(pc.yellow(`Snapshot publish skipped: ${error.message}`));
289
+ }
290
+ }, timings.intervalSeconds * 1000);
291
+ await meshRequest(context, `/api/v1/teams/${options.teamId}/watcher/snapshots`, {
292
+ method: "POST",
293
+ headers: { "Content-Type": "application/json" },
294
+ body: JSON.stringify({
295
+ seq,
296
+ status: "ok",
297
+ payload: {
298
+ holder_id: holderId,
299
+ started_at: new Date().toISOString(),
300
+ },
301
+ }),
302
+ });
303
+ seq += 1;
304
+ patchWatcherState(options.teamId, { leaseToken, status: "running" });
305
+ console.log(pc.green(`Watcher loop running for team ${options.teamId}. Lease token: ${leaseToken}`));
306
+ await new Promise(() => { });
307
+ }
308
+ export async function stopWatcher(options) {
309
+ const watcher = getWatcherState(options.teamId);
310
+ if (!watcher || watcher.pid <= 0) {
311
+ console.log(pc.yellow(`No local watcher process found for team ${options.teamId}.`));
312
+ return;
313
+ }
314
+ try {
315
+ process.kill(watcher.pid, "SIGTERM");
316
+ }
317
+ catch {
318
+ // process already gone
319
+ }
320
+ patchWatcherState(options.teamId, { status: "stopped" });
321
+ console.log(pc.green(`Stop signal sent to watcher for team ${options.teamId} (PID: ${watcher.pid}).`));
322
+ }
323
+ export async function watcherStatus(options) {
324
+ const context = resolveAuthContext(options.name);
325
+ const stale = options.staleAfterSeconds && Number.isInteger(options.staleAfterSeconds)
326
+ ? `?stale_after_seconds=${options.staleAfterSeconds}`
327
+ : "";
328
+ const remote = await meshRequest(context, `/api/v1/teams/${options.teamId}/watcher/status${stale}`);
329
+ const local = getWatcherState(options.teamId) ?? null;
330
+ if (options.json) {
331
+ console.log(JSON.stringify({ local, remote }, null, 2));
332
+ return;
333
+ }
334
+ console.log(pc.bold(`Watcher status for team ${options.teamId}`));
335
+ console.log(`Remote status: ${String(remote.status)}`);
336
+ console.log(`Remote seq: ${String(remote.seq)}`);
337
+ const reasons = Array.isArray(remote.reason_codes) ? remote.reason_codes : [];
338
+ console.log(`Reason codes: ${reasons.length > 0 ? reasons.join(", ") : "-"}`);
339
+ if (local) {
340
+ console.log(`Local process: PID ${local.pid} (${local.status})`);
341
+ console.log(`Started at: ${local.startedAt}`);
342
+ if (local.lastHeartbeatAt)
343
+ console.log(`Last heartbeat: ${local.lastHeartbeatAt}`);
344
+ }
345
+ else {
346
+ console.log("Local process: not found");
347
+ }
348
+ }
349
+ export async function pullWatcher(options) {
350
+ const context = resolveAuthContext(options.name);
351
+ const snapshot = await meshRequest(context, `/api/v1/teams/${options.teamId}/watcher/snapshot/latest`);
352
+ if (options.json) {
353
+ console.log(JSON.stringify(snapshot, null, 2));
354
+ return;
355
+ }
356
+ console.log(pc.bold(`Latest watcher snapshot for team ${options.teamId}`));
357
+ console.log(`Seq: ${String(snapshot.seq)}`);
358
+ console.log(`Status: ${String(snapshot.status)}`);
359
+ console.log(`Reason: ${snapshot.reason_code ? String(snapshot.reason_code) : "-"}`);
360
+ console.log(`Generated at: ${String(snapshot.generated_at)}`);
361
+ if (snapshot.payload && typeof snapshot.payload === "object") {
362
+ console.log(`Payload: ${JSON.stringify(snapshot.payload)}`);
363
+ }
364
+ }
365
+ //# 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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"}
@@ -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":"AAsBA,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"}
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"}
@@ -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;