@mclawnet/mcp-server 0.1.7 → 0.1.9

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.
@@ -1,9 +1,43 @@
1
1
  import { randomUUID } from "node:crypto";
2
+ import { isAbsolute } from "node:path";
3
+ import { homedir } from "node:os";
2
4
  import { createLogger } from "@mclawnet/logger";
3
5
  import { InboxStore } from "@mclawnet/swarm";
4
6
  import { TaskStore } from "@mclawnet/task";
5
7
  const log = createLogger({ module: "mcp-server/tools/inbox" });
6
- export const INBOX_TOOL_NAMES = new Set(["message_send"]);
8
+ /**
9
+ * Defence-in-depth: an LLM-supplied workDir flows into many filesystem APIs
10
+ * (InboxStore path joins, fs.watch projectRoot). Reject obvious abuse —
11
+ * non-absolute paths, root `/`, and the user's home directory — before the
12
+ * value reaches any FS call. swarmId / instanceId are validated by
13
+ * InboxStore itself.
14
+ */
15
+ function validateWorkDir(workDir) {
16
+ if (!workDir || typeof workDir !== "string" || !isAbsolute(workDir)) {
17
+ return "workDir must be an absolute path";
18
+ }
19
+ if (workDir === "/" || workDir === homedir()) {
20
+ return "workDir cannot be / or homedir";
21
+ }
22
+ return undefined;
23
+ }
24
+ function errorResult(message) {
25
+ return {
26
+ content: [{ type: "text", text: JSON.stringify({ error: message }) }],
27
+ isError: true,
28
+ };
29
+ }
30
+ export const INBOX_TOOL_NAMES = new Set(["message_send", "wakeup_after", "watch_path"]);
31
+ const DEFAULT_WATCH_IGNORES = [".git/**", "node_modules/**", "dist/**", ".clawnet/**"];
32
+ // M5 hotfix I4: caps to bound DoS by adversarial LLM tool spam. Enforced at
33
+ // the cheapest point (this handler) so over-quota calls are rejected before
34
+ // hitting the WatchManager / WakeupScheduler. Per-instance caps are also
35
+ // enforced in the server.ts wrapper (countForInstance) because the agent
36
+ // process owns the registry.
37
+ const MAX_GLOBS = 32;
38
+ const MAX_GLOB_LEN = 256;
39
+ const MAX_WATCHES_PER_INSTANCE = 64;
40
+ const MAX_WAKEUPS_PER_INSTANCE = 256;
7
41
  export function getInboxToolDefinitions() {
8
42
  return [
9
43
  {
@@ -31,14 +65,76 @@ export function getInboxToolDefinitions() {
31
65
  required: ["workDir", "swarmId", "from", "to", "type", "data"],
32
66
  },
33
67
  },
68
+ {
69
+ name: "wakeup_after",
70
+ description: "Schedule a self-wakeup: append an inbox message to the target instance that becomes deliverable only after `seconds`. Use to defer work without external triggers — e.g. 'check build in 30s', 'retry in 5m'. Persisted to disk; the agent process re-scans inboxes and re-registers timers on startup, so wakeups survive MCP server / agent restart. Max 86400 seconds (24h).",
71
+ inputSchema: {
72
+ type: "object",
73
+ properties: {
74
+ workDir: { type: "string", description: "Absolute path of the project working directory" },
75
+ swarmId: { type: "string", description: "Swarm id the recipient lives in" },
76
+ instanceId: { type: "string", description: "Target instance — usually caller's own id for self-wakeup" },
77
+ seconds: { type: "number", exclusiveMinimum: 0, maximum: 86_400, description: "Delay in seconds, 0 < n <= 86400" },
78
+ payload: { type: "string", description: "Message body delivered when timer fires" },
79
+ type: { type: "string", description: "Message type, default 'wakeup'" },
80
+ from: { type: "string", description: "Sender label, default 'self'" },
81
+ },
82
+ required: ["workDir", "swarmId", "instanceId", "seconds", "payload"],
83
+ },
84
+ },
85
+ {
86
+ name: "watch_path",
87
+ description: "Register a filesystem watch under the project workDir. When any file matching includeGlobs (but not ignoreGlobs) changes, after debounceMs of quiet, an inbox message is delivered to the target instance with the matched relative path appended to payload on a new line as `[matched-path] <path>`. Use to wait for external work — e.g. 'tell me when build/ updates', 'wake me when src/**/*.ts changes'. Returns a watchId for future unwatch (v1: no explicit unwatch tool; cleared automatically when role stops).",
88
+ inputSchema: {
89
+ type: "object",
90
+ properties: {
91
+ workDir: { type: "string", description: "Absolute path of the project working directory" },
92
+ swarmId: { type: "string" },
93
+ instanceId: { type: "string", description: "Target instance — usually caller's own id" },
94
+ includeGlobs: {
95
+ type: "array",
96
+ items: { type: "string" },
97
+ minItems: 1,
98
+ description: "gitignore-style globs, e.g. ['src/**/*.ts', 'build/**']",
99
+ },
100
+ payload: {
101
+ type: "string",
102
+ description: "Message body delivered when trigger fires; the matched relative path is appended on a new line as `[matched-path] <path>`",
103
+ },
104
+ ignoreGlobs: {
105
+ type: "array",
106
+ items: { type: "string" },
107
+ description: "default: ['.git/**','node_modules/**','dist/**','.clawnet/**']",
108
+ },
109
+ debounceMs: { type: "number", minimum: 0, description: "default 1000" },
110
+ type: { type: "string", description: "default 'path_change'" },
111
+ from: { type: "string", description: "default 'watcher'" },
112
+ watchId: { type: "string", description: "optional client-supplied id; if absent a UUID is generated" },
113
+ },
114
+ required: ["workDir", "swarmId", "instanceId", "includeGlobs", "payload"],
115
+ },
116
+ },
34
117
  ];
35
118
  }
36
119
  export async function handleInboxToolCall(name, args, context) {
37
120
  try {
38
121
  log.info({ tool: name }, "MCP inbox tool called");
122
+ // M6 T7: when the caller (LLM) omits workDir, fall back to the
123
+ // CLAWNET_PROJECT_ROOT env var injected by SwarmCoordinator at role
124
+ // spawn. This keeps inbox / wakeup / watch routing pinned to the
125
+ // original project namespace even when the role's cwd is a worktree.
126
+ if ((args.workDir === undefined || args.workDir === null || args.workDir === "") &&
127
+ typeof process.env.CLAWNET_PROJECT_ROOT === "string" &&
128
+ process.env.CLAWNET_PROJECT_ROOT.length > 0) {
129
+ args = { ...args, workDir: process.env.CLAWNET_PROJECT_ROOT };
130
+ }
39
131
  switch (name) {
40
132
  case "message_send":
41
133
  return await handleMessageSend(args, context);
134
+ case "wakeup_after":
135
+ return await handleWakeupAfter(args, context);
136
+ case "watch_path":
137
+ return await handleWatchPath(args, context);
42
138
  default:
43
139
  return {
44
140
  content: [{ type: "text", text: JSON.stringify({ error: `Unknown tool: ${name}` }) }],
@@ -74,7 +170,7 @@ async function handleMessageSend(args, context) {
74
170
  const type = args.type;
75
171
  const data = args.data;
76
172
  if (!workDir)
77
- throw new Error("workDir is required");
173
+ throw new Error("workDir is required (or set CLAWNET_PROJECT_ROOT env var)");
78
174
  if (!swarmId)
79
175
  throw new Error("swarmId is required");
80
176
  if (!from)
@@ -85,6 +181,9 @@ async function handleMessageSend(args, context) {
85
181
  throw new Error("type is required");
86
182
  if (data === undefined || data === null)
87
183
  throw new Error("data is required");
184
+ const wdErr = validateWorkDir(workDir);
185
+ if (wdErr)
186
+ return errorResult(wdErr);
88
187
  const taskId = args.taskId;
89
188
  const hasExpectedStatus = "expectedStatus" in args && args.expectedStatus !== undefined;
90
189
  const hasExpectedOwner = "expectedOwner" in args && args.expectedOwner !== undefined;
@@ -165,4 +264,159 @@ async function handleMessageSend(args, context) {
165
264
  content: [{ type: "text", text: JSON.stringify({ messageId }) }],
166
265
  };
167
266
  }
267
+ async function handleWakeupAfter(args, context) {
268
+ const workDir = args.workDir;
269
+ const swarmId = args.swarmId;
270
+ const instanceId = args.instanceId;
271
+ const seconds = args.seconds;
272
+ const payload = args.payload;
273
+ const type = args.type ?? "wakeup";
274
+ const from = args.from ?? "self";
275
+ if (!workDir)
276
+ throw new Error("workDir is required (or set CLAWNET_PROJECT_ROOT env var)");
277
+ if (!swarmId)
278
+ throw new Error("swarmId is required");
279
+ if (!instanceId)
280
+ throw new Error("instanceId is required");
281
+ {
282
+ const wdErr = validateWorkDir(workDir);
283
+ if (wdErr)
284
+ return errorResult(wdErr);
285
+ }
286
+ if (typeof seconds !== "number" ||
287
+ !Number.isFinite(seconds) ||
288
+ seconds <= 0 ||
289
+ seconds > 86_400) {
290
+ return errorResult("seconds must be a finite number in (0, 86400]");
291
+ }
292
+ if (typeof payload !== "string")
293
+ throw new Error("payload must be a string");
294
+ // I4 cap: refuse before write so we don't pile up dead-letter inbox entries.
295
+ if (context.scheduler?.countForInstance &&
296
+ context.scheduler.countForInstance(swarmId, instanceId) >= MAX_WAKEUPS_PER_INSTANCE) {
297
+ return errorResult(`max wakeups per instance (${MAX_WAKEUPS_PER_INSTANCE}) exceeded`);
298
+ }
299
+ const messageId = randomUUID();
300
+ const notBefore = Date.now() + Math.floor(seconds * 1000);
301
+ const msg = {
302
+ id: messageId,
303
+ from,
304
+ type,
305
+ data: payload,
306
+ timestamp: Date.now(),
307
+ delivered: false,
308
+ notBefore,
309
+ };
310
+ const store = new InboxStore(workDir, swarmId, context.rootDir);
311
+ await store.append(instanceId, msg);
312
+ if (context.scheduler) {
313
+ try {
314
+ context.scheduler.register(swarmId, instanceId, notBefore, workDir);
315
+ }
316
+ catch (err) {
317
+ log.warn({ err, swarmId, instanceId }, "scheduler register failed (best-effort)");
318
+ }
319
+ }
320
+ return {
321
+ content: [{ type: "text", text: JSON.stringify({ messageId, notBefore }) }],
322
+ };
323
+ }
324
+ async function handleWatchPath(args, context) {
325
+ const workDir = args.workDir;
326
+ const swarmId = args.swarmId;
327
+ const instanceId = args.instanceId;
328
+ const includeGlobs = args.includeGlobs;
329
+ const payload = args.payload;
330
+ const ignoreGlobs = args.ignoreGlobs ?? DEFAULT_WATCH_IGNORES;
331
+ const debounceMs = args.debounceMs ?? 1000;
332
+ const type = args.type ?? "path_change";
333
+ const from = args.from ?? "watcher";
334
+ const watchId = args.watchId ?? randomUUID();
335
+ if (!workDir)
336
+ throw new Error("workDir is required (or set CLAWNET_PROJECT_ROOT env var)");
337
+ if (!swarmId)
338
+ throw new Error("swarmId is required");
339
+ if (!instanceId)
340
+ throw new Error("instanceId is required");
341
+ {
342
+ const wdErr = validateWorkDir(workDir);
343
+ if (wdErr)
344
+ return errorResult(wdErr);
345
+ }
346
+ if (!Array.isArray(includeGlobs) ||
347
+ includeGlobs.length === 0 ||
348
+ !includeGlobs.every((g) => typeof g === "string")) {
349
+ return errorResult("includeGlobs must be a non-empty array of strings");
350
+ }
351
+ // I4: bound glob list size / individual glob length so an LLM can't
352
+ // construct a O(N*M) regex storm or megabyte-long patterns.
353
+ if (includeGlobs.length > MAX_GLOBS) {
354
+ return errorResult(`includeGlobs exceeds max ${MAX_GLOBS}`);
355
+ }
356
+ if (!Array.isArray(ignoreGlobs)) {
357
+ return errorResult("ignoreGlobs must be an array of strings");
358
+ }
359
+ if (ignoreGlobs.length > MAX_GLOBS) {
360
+ return errorResult(`ignoreGlobs exceeds max ${MAX_GLOBS}`);
361
+ }
362
+ for (const g of includeGlobs) {
363
+ if (typeof g !== "string" || g.length > MAX_GLOB_LEN) {
364
+ return errorResult(`includeGlob too long or non-string (max ${MAX_GLOB_LEN} chars)`);
365
+ }
366
+ }
367
+ for (const g of ignoreGlobs) {
368
+ if (typeof g !== "string" || g.length > MAX_GLOB_LEN) {
369
+ return errorResult(`ignoreGlob too long or non-string (max ${MAX_GLOB_LEN} chars)`);
370
+ }
371
+ }
372
+ if (typeof payload !== "string")
373
+ throw new Error("payload must be a string");
374
+ if (typeof debounceMs !== "number" || debounceMs < 0 || !Number.isFinite(debounceMs)) {
375
+ return errorResult("debounceMs must be a finite non-negative number");
376
+ }
377
+ if (!context.watchManager) {
378
+ return errorResult("watchManager not wired in this MCP server");
379
+ }
380
+ // I4 cap: refuse before register so an over-quota call doesn't allocate
381
+ // an FSWatcher we'd just have to tear down.
382
+ if (context.watchManager.countForInstance &&
383
+ context.watchManager.countForInstance(swarmId, instanceId) >= MAX_WATCHES_PER_INSTANCE) {
384
+ return errorResult(`max watches per instance (${MAX_WATCHES_PER_INSTANCE}) exceeded`);
385
+ }
386
+ context.watchManager.register({
387
+ swarmId,
388
+ instanceId,
389
+ watchId,
390
+ projectRoot: workDir,
391
+ includeGlobs,
392
+ ignoreGlobs,
393
+ debounceMs,
394
+ onTrigger: async (matchedPath) => {
395
+ try {
396
+ // Use a non-XML marker so the envelope's XML escape (single source of
397
+ // truth for `<` and `&`) won't clobber it. Pre-escaping here would
398
+ // double-encode (foo&bar → foo&amp;amp;bar) and `<matched>` itself
399
+ // would become `&lt;matched>` — unparseable by the LLM as a tag.
400
+ const msg = {
401
+ id: randomUUID(),
402
+ from,
403
+ type,
404
+ data: `${payload}\n[matched-path] ${matchedPath}`,
405
+ timestamp: Date.now(),
406
+ delivered: false,
407
+ };
408
+ await new InboxStore(workDir, swarmId, context.rootDir).append(instanceId, msg);
409
+ if (context.relay) {
410
+ await context.relay.deliver(swarmId, instanceId);
411
+ }
412
+ }
413
+ catch (err) {
414
+ log.warn({ err, swarmId, instanceId }, "watch trigger inbox write failed");
415
+ }
416
+ },
417
+ });
418
+ return {
419
+ content: [{ type: "text", text: JSON.stringify({ watchId }) }],
420
+ };
421
+ }
168
422
  //# sourceMappingURL=inbox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../src/tools/inbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../src/tools/inbox.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,10 @@ import { type EvolutionToolContext } from "./evolution.js";
4
4
  import { type TaskToolContext } from "./task.js";
5
5
  import { type InboxToolContext } from "./inbox.js";
6
6
  import { type PlanReviewToolContext } from "./plan-review.js";
7
+ import { type SwarmToolContext } from "./swarm.js";
7
8
  export type { InboxRelayLike, InboxToolContext } from "./inbox.js";
8
9
  export type { PlanReviewToolContext } from "./plan-review.js";
10
+ export type { SwarmToolContext } from "./swarm.js";
9
11
  export interface ToolContext {
10
12
  memory: MemoryToolContext;
11
13
  skill: SkillToolContext;
@@ -13,6 +15,7 @@ export interface ToolContext {
13
15
  task: TaskToolContext;
14
16
  inbox: InboxToolContext;
15
17
  planReview: PlanReviewToolContext;
18
+ swarm: SwarmToolContext;
16
19
  }
17
20
  export declare function getAllToolDefinitions(): ({
18
21
  name: string;
@@ -573,6 +576,124 @@ export declare function getAllToolDefinitions(): ({
573
576
  type: string[];
574
577
  description: string;
575
578
  };
579
+ instanceId?: undefined;
580
+ seconds?: undefined;
581
+ payload?: undefined;
582
+ includeGlobs?: undefined;
583
+ ignoreGlobs?: undefined;
584
+ debounceMs?: undefined;
585
+ watchId?: undefined;
586
+ };
587
+ required: string[];
588
+ };
589
+ } | {
590
+ name: string;
591
+ description: string;
592
+ inputSchema: {
593
+ type: "object";
594
+ properties: {
595
+ workDir: {
596
+ type: string;
597
+ description: string;
598
+ };
599
+ swarmId: {
600
+ type: string;
601
+ description: string;
602
+ };
603
+ instanceId: {
604
+ type: string;
605
+ description: string;
606
+ };
607
+ seconds: {
608
+ type: string;
609
+ exclusiveMinimum: number;
610
+ maximum: number;
611
+ description: string;
612
+ };
613
+ payload: {
614
+ type: string;
615
+ description: string;
616
+ };
617
+ type: {
618
+ type: string;
619
+ description: string;
620
+ };
621
+ from: {
622
+ type: string;
623
+ description: string;
624
+ };
625
+ to?: undefined;
626
+ data?: undefined;
627
+ taskId?: undefined;
628
+ expectedStatus?: undefined;
629
+ expectedOwner?: undefined;
630
+ includeGlobs?: undefined;
631
+ ignoreGlobs?: undefined;
632
+ debounceMs?: undefined;
633
+ watchId?: undefined;
634
+ };
635
+ required: string[];
636
+ };
637
+ } | {
638
+ name: string;
639
+ description: string;
640
+ inputSchema: {
641
+ type: "object";
642
+ properties: {
643
+ workDir: {
644
+ type: string;
645
+ description: string;
646
+ };
647
+ swarmId: {
648
+ type: string;
649
+ description?: undefined;
650
+ };
651
+ instanceId: {
652
+ type: string;
653
+ description: string;
654
+ };
655
+ includeGlobs: {
656
+ type: string;
657
+ items: {
658
+ type: string;
659
+ };
660
+ minItems: number;
661
+ description: string;
662
+ };
663
+ payload: {
664
+ type: string;
665
+ description: string;
666
+ };
667
+ ignoreGlobs: {
668
+ type: string;
669
+ items: {
670
+ type: string;
671
+ };
672
+ description: string;
673
+ };
674
+ debounceMs: {
675
+ type: string;
676
+ minimum: number;
677
+ description: string;
678
+ };
679
+ type: {
680
+ type: string;
681
+ description: string;
682
+ };
683
+ from: {
684
+ type: string;
685
+ description: string;
686
+ };
687
+ watchId: {
688
+ type: string;
689
+ description: string;
690
+ };
691
+ to?: undefined;
692
+ data?: undefined;
693
+ taskId?: undefined;
694
+ expectedStatus?: undefined;
695
+ expectedOwner?: undefined;
696
+ seconds?: undefined;
576
697
  };
577
698
  required: string[];
578
699
  };
@@ -606,6 +727,31 @@ export declare function getAllToolDefinitions(): ({
606
727
  };
607
728
  required: string[];
608
729
  };
730
+ } | {
731
+ name: string;
732
+ description: string;
733
+ inputSchema: {
734
+ type: "object";
735
+ properties: {
736
+ workDir: {
737
+ type: string;
738
+ description: string;
739
+ };
740
+ swarmId: {
741
+ type: string;
742
+ description: string;
743
+ };
744
+ from: {
745
+ type: string;
746
+ description: string;
747
+ };
748
+ summary: {
749
+ type: string;
750
+ description: string;
751
+ };
752
+ };
753
+ required: string[];
754
+ };
609
755
  } | {
610
756
  name: string;
611
757
  description: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkD,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrG,OAAO,EAAgD,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACjG,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,WAAW,CAAC;AACnB,OAAO,EAIL,KAAK,gBAAgB,EAEtB,MAAM,YAAY,CAAC;AACpB,OAAO,EAIL,KAAK,qBAAqB,EAC3B,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnE,YAAY,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAE9D,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,KAAK,EAAE,gBAAgB,CAAC;IACxB,SAAS,EAAE,oBAAoB,CAAC;IAChC,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,gBAAgB,CAAC;IACxB,UAAU,EAAE,qBAAqB,CAAC;CACnC;AAED,wBAAgB,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KASpC;AAED,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CA0BhF;AAED,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,YAAY,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { getEvolutionToolDefinitions, handleEvolutionToolCall, } from "./evoluti
4
4
  import { getTaskToolDefinitions, handleTaskToolCall, TASK_TOOL_NAMES, } from "./task.js";
5
5
  import { getInboxToolDefinitions, handleInboxToolCall, INBOX_TOOL_NAMES, } from "./inbox.js";
6
6
  import { getPlanReviewToolDefinitions, handlePlanReviewToolCall, PLAN_REVIEW_TOOL_NAMES, } from "./plan-review.js";
7
+ import { getSwarmToolDefinitions, handleSwarmToolCall, SWARM_TOOL_NAMES, } from "./swarm.js";
7
8
  export function getAllToolDefinitions() {
8
9
  return [
9
10
  ...getMemoryToolDefinitions(),
@@ -12,6 +13,7 @@ export function getAllToolDefinitions() {
12
13
  ...getTaskToolDefinitions(),
13
14
  ...getInboxToolDefinitions(),
14
15
  ...getPlanReviewToolDefinitions(),
16
+ ...getSwarmToolDefinitions(),
15
17
  ];
16
18
  }
17
19
  export async function routeToolCall(name, args, context) {
@@ -35,6 +37,9 @@ export async function routeToolCall(name, args, context) {
35
37
  if (PLAN_REVIEW_TOOL_NAMES.has(name)) {
36
38
  return handlePlanReviewToolCall(name, args, context.planReview);
37
39
  }
40
+ if (SWARM_TOOL_NAMES.has(name)) {
41
+ return handleSwarmToolCall(name, args, context.swarm);
42
+ }
38
43
  return {
39
44
  content: [{ type: "text", text: JSON.stringify({ error: `Unknown tool: ${name}` }) }],
40
45
  isError: true,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,oBAAoB,EAA0B,MAAM,aAAa,CAAC;AACrG,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAyB,MAAM,YAAY,CAAC;AACjG,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,GAExB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,GAEhB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,GAGjB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,sBAAsB,GAEvB,MAAM,kBAAkB,CAAC;AAc1B,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL,GAAG,wBAAwB,EAAE;QAC7B,GAAG,uBAAuB,EAAE;QAC5B,GAAG,2BAA2B,EAAE;QAChC,GAAG,sBAAsB,EAAE;QAC3B,GAAG,uBAAuB,EAAE;QAC5B,GAAG,4BAA4B,EAAE;KAClC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAY,EACZ,IAA6B,EAC7B,OAAoB;IAEpB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,OAAO,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAChE,OAAO,uBAAuB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,OAAO,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,OAAO,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACnF,CAAC;IACD,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,wEAAwE;QACxE,4EAA4E;QAC5E,OAAO,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAClG,CAAC;IACD,IAAI,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,OAAO,wBAAwB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAClE,CAAC;IAED,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,iBAAiB,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;QACrF,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,oBAAoB,EAA0B,MAAM,aAAa,CAAC;AACrG,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAyB,MAAM,YAAY,CAAC;AACjG,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,GAExB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,GAEhB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,GAGjB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,sBAAsB,GAEvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,GAEjB,MAAM,YAAY,CAAC;AAgBpB,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL,GAAG,wBAAwB,EAAE;QAC7B,GAAG,uBAAuB,EAAE;QAC5B,GAAG,2BAA2B,EAAE;QAChC,GAAG,sBAAsB,EAAE;QAC3B,GAAG,uBAAuB,EAAE;QAC5B,GAAG,4BAA4B,EAAE;QACjC,GAAG,uBAAuB,EAAE;KAC7B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAY,EACZ,IAA6B,EAC7B,OAAoB;IAEpB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,OAAO,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAChE,OAAO,uBAAuB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,OAAO,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,OAAO,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACnF,CAAC;IACD,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,wEAAwE;QACxE,4EAA4E;QAC5E,OAAO,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAClG,CAAC;IACD,IAAI,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,OAAO,wBAAwB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC;IAED,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,iBAAiB,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;QACrF,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}
@@ -0,0 +1,66 @@
1
+ import type { InboxRelayLike } from "./inbox.js";
2
+ /**
3
+ * PR-B Sub-PR-B2 — `swarm_complete` MCP tool. Out-of-process queen calls
4
+ * this when she's decided the cycle's work is done. The tool writes a
5
+ * `swarm_complete_request` message to the queen's own inbox; the agent-
6
+ * side `SwarmCoordinator.handleInterceptedMessage` interceptor consumes
7
+ * it and invokes `coordinator.complete(swarmId)`, which runs the full
8
+ * cleanup chain (runRetroAndCleanup → closeSession → workspace dispose
9
+ * → shipment).
10
+ *
11
+ * Mirrors `plan_review_submit` — that one is reviewer→queen, this is
12
+ * queen→self. The two-hop indirection (MCP tool → inbox file → coordinator
13
+ * interceptor) lets the MCP server stay out-of-process from the agent.
14
+ *
15
+ * Restricted to queen instances: caller must pass `from` starting with
16
+ * "queen-". The coordinator-side interceptor enforces this again at the
17
+ * trust boundary.
18
+ */
19
+ export interface SwarmToolContext {
20
+ /**
21
+ * Optional override for the clawnet root. Falls back to CLAWNET_HOME env
22
+ * then homedir(). Tests use this to keep InboxStore writes on temp dirs.
23
+ */
24
+ rootDir?: string;
25
+ /**
26
+ * Optional in-process relay so the coordinator interceptor wakes
27
+ * immediately. Cross-process MCP servers leave this undefined and rely
28
+ * on the agent-side InboxWatcher to pick up the file change.
29
+ */
30
+ relay?: InboxRelayLike;
31
+ }
32
+ export declare const SWARM_TOOL_NAMES: Set<string>;
33
+ export declare function getSwarmToolDefinitions(): {
34
+ name: string;
35
+ description: string;
36
+ inputSchema: {
37
+ type: "object";
38
+ properties: {
39
+ workDir: {
40
+ type: string;
41
+ description: string;
42
+ };
43
+ swarmId: {
44
+ type: string;
45
+ description: string;
46
+ };
47
+ from: {
48
+ type: string;
49
+ description: string;
50
+ };
51
+ summary: {
52
+ type: string;
53
+ description: string;
54
+ };
55
+ };
56
+ required: string[];
57
+ };
58
+ }[];
59
+ export declare function handleSwarmToolCall(name: string, args: Record<string, unknown>, context: SwarmToolContext): Promise<{
60
+ content: Array<{
61
+ type: "text";
62
+ text: string;
63
+ }>;
64
+ isError?: boolean;
65
+ }>;
66
+ //# sourceMappingURL=swarm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swarm.d.ts","sourceRoot":"","sources":["../../src/tools/swarm.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIjD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,KAAK,CAAC,EAAE,cAAc,CAAC;CACxB;AAED,eAAO,MAAM,gBAAgB,aAA8B,CAAC;AAE5D,wBAAgB,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;IA0BtC;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAoBhF"}