@mclawnet/mcp-server 0.1.6 → 0.1.8

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,6 +65,55 @@ 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) {
@@ -39,6 +122,10 @@ export async function handleInboxToolCall(name, args, context) {
39
122
  switch (name) {
40
123
  case "message_send":
41
124
  return await handleMessageSend(args, context);
125
+ case "wakeup_after":
126
+ return await handleWakeupAfter(args, context);
127
+ case "watch_path":
128
+ return await handleWatchPath(args, context);
42
129
  default:
43
130
  return {
44
131
  content: [{ type: "text", text: JSON.stringify({ error: `Unknown tool: ${name}` }) }],
@@ -85,6 +172,9 @@ async function handleMessageSend(args, context) {
85
172
  throw new Error("type is required");
86
173
  if (data === undefined || data === null)
87
174
  throw new Error("data is required");
175
+ const wdErr = validateWorkDir(workDir);
176
+ if (wdErr)
177
+ return errorResult(wdErr);
88
178
  const taskId = args.taskId;
89
179
  const hasExpectedStatus = "expectedStatus" in args && args.expectedStatus !== undefined;
90
180
  const hasExpectedOwner = "expectedOwner" in args && args.expectedOwner !== undefined;
@@ -165,4 +255,159 @@ async function handleMessageSend(args, context) {
165
255
  content: [{ type: "text", text: JSON.stringify({ messageId }) }],
166
256
  };
167
257
  }
258
+ async function handleWakeupAfter(args, context) {
259
+ const workDir = args.workDir;
260
+ const swarmId = args.swarmId;
261
+ const instanceId = args.instanceId;
262
+ const seconds = args.seconds;
263
+ const payload = args.payload;
264
+ const type = args.type ?? "wakeup";
265
+ const from = args.from ?? "self";
266
+ if (!workDir)
267
+ throw new Error("workDir is required");
268
+ if (!swarmId)
269
+ throw new Error("swarmId is required");
270
+ if (!instanceId)
271
+ throw new Error("instanceId is required");
272
+ {
273
+ const wdErr = validateWorkDir(workDir);
274
+ if (wdErr)
275
+ return errorResult(wdErr);
276
+ }
277
+ if (typeof seconds !== "number" ||
278
+ !Number.isFinite(seconds) ||
279
+ seconds <= 0 ||
280
+ seconds > 86_400) {
281
+ return errorResult("seconds must be a finite number in (0, 86400]");
282
+ }
283
+ if (typeof payload !== "string")
284
+ throw new Error("payload must be a string");
285
+ // I4 cap: refuse before write so we don't pile up dead-letter inbox entries.
286
+ if (context.scheduler?.countForInstance &&
287
+ context.scheduler.countForInstance(swarmId, instanceId) >= MAX_WAKEUPS_PER_INSTANCE) {
288
+ return errorResult(`max wakeups per instance (${MAX_WAKEUPS_PER_INSTANCE}) exceeded`);
289
+ }
290
+ const messageId = randomUUID();
291
+ const notBefore = Date.now() + Math.floor(seconds * 1000);
292
+ const msg = {
293
+ id: messageId,
294
+ from,
295
+ type,
296
+ data: payload,
297
+ timestamp: Date.now(),
298
+ delivered: false,
299
+ notBefore,
300
+ };
301
+ const store = new InboxStore(workDir, swarmId, context.rootDir);
302
+ await store.append(instanceId, msg);
303
+ if (context.scheduler) {
304
+ try {
305
+ context.scheduler.register(swarmId, instanceId, notBefore, workDir);
306
+ }
307
+ catch (err) {
308
+ log.warn({ err, swarmId, instanceId }, "scheduler register failed (best-effort)");
309
+ }
310
+ }
311
+ return {
312
+ content: [{ type: "text", text: JSON.stringify({ messageId, notBefore }) }],
313
+ };
314
+ }
315
+ async function handleWatchPath(args, context) {
316
+ const workDir = args.workDir;
317
+ const swarmId = args.swarmId;
318
+ const instanceId = args.instanceId;
319
+ const includeGlobs = args.includeGlobs;
320
+ const payload = args.payload;
321
+ const ignoreGlobs = args.ignoreGlobs ?? DEFAULT_WATCH_IGNORES;
322
+ const debounceMs = args.debounceMs ?? 1000;
323
+ const type = args.type ?? "path_change";
324
+ const from = args.from ?? "watcher";
325
+ const watchId = args.watchId ?? randomUUID();
326
+ if (!workDir)
327
+ throw new Error("workDir is required");
328
+ if (!swarmId)
329
+ throw new Error("swarmId is required");
330
+ if (!instanceId)
331
+ throw new Error("instanceId is required");
332
+ {
333
+ const wdErr = validateWorkDir(workDir);
334
+ if (wdErr)
335
+ return errorResult(wdErr);
336
+ }
337
+ if (!Array.isArray(includeGlobs) ||
338
+ includeGlobs.length === 0 ||
339
+ !includeGlobs.every((g) => typeof g === "string")) {
340
+ return errorResult("includeGlobs must be a non-empty array of strings");
341
+ }
342
+ // I4: bound glob list size / individual glob length so an LLM can't
343
+ // construct a O(N*M) regex storm or megabyte-long patterns.
344
+ if (includeGlobs.length > MAX_GLOBS) {
345
+ return errorResult(`includeGlobs exceeds max ${MAX_GLOBS}`);
346
+ }
347
+ if (!Array.isArray(ignoreGlobs)) {
348
+ return errorResult("ignoreGlobs must be an array of strings");
349
+ }
350
+ if (ignoreGlobs.length > MAX_GLOBS) {
351
+ return errorResult(`ignoreGlobs exceeds max ${MAX_GLOBS}`);
352
+ }
353
+ for (const g of includeGlobs) {
354
+ if (typeof g !== "string" || g.length > MAX_GLOB_LEN) {
355
+ return errorResult(`includeGlob too long or non-string (max ${MAX_GLOB_LEN} chars)`);
356
+ }
357
+ }
358
+ for (const g of ignoreGlobs) {
359
+ if (typeof g !== "string" || g.length > MAX_GLOB_LEN) {
360
+ return errorResult(`ignoreGlob too long or non-string (max ${MAX_GLOB_LEN} chars)`);
361
+ }
362
+ }
363
+ if (typeof payload !== "string")
364
+ throw new Error("payload must be a string");
365
+ if (typeof debounceMs !== "number" || debounceMs < 0 || !Number.isFinite(debounceMs)) {
366
+ return errorResult("debounceMs must be a finite non-negative number");
367
+ }
368
+ if (!context.watchManager) {
369
+ return errorResult("watchManager not wired in this MCP server");
370
+ }
371
+ // I4 cap: refuse before register so an over-quota call doesn't allocate
372
+ // an FSWatcher we'd just have to tear down.
373
+ if (context.watchManager.countForInstance &&
374
+ context.watchManager.countForInstance(swarmId, instanceId) >= MAX_WATCHES_PER_INSTANCE) {
375
+ return errorResult(`max watches per instance (${MAX_WATCHES_PER_INSTANCE}) exceeded`);
376
+ }
377
+ context.watchManager.register({
378
+ swarmId,
379
+ instanceId,
380
+ watchId,
381
+ projectRoot: workDir,
382
+ includeGlobs,
383
+ ignoreGlobs,
384
+ debounceMs,
385
+ onTrigger: async (matchedPath) => {
386
+ try {
387
+ // Use a non-XML marker so the envelope's XML escape (single source of
388
+ // truth for `<` and `&`) won't clobber it. Pre-escaping here would
389
+ // double-encode (foo&bar → foo&amp;amp;bar) and `<matched>` itself
390
+ // would become `&lt;matched>` — unparseable by the LLM as a tag.
391
+ const msg = {
392
+ id: randomUUID(),
393
+ from,
394
+ type,
395
+ data: `${payload}\n[matched-path] ${matchedPath}`,
396
+ timestamp: Date.now(),
397
+ delivered: false,
398
+ };
399
+ await new InboxStore(workDir, swarmId, context.rootDir).append(instanceId, msg);
400
+ if (context.relay) {
401
+ await context.relay.deliver(swarmId, instanceId);
402
+ }
403
+ }
404
+ catch (err) {
405
+ log.warn({ err, swarmId, instanceId }, "watch trigger inbox write failed");
406
+ }
407
+ },
408
+ });
409
+ return {
410
+ content: [{ type: "text", text: JSON.stringify({ watchId }) }],
411
+ };
412
+ }
168
413
  //# 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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"}
@@ -15,6 +15,169 @@ export interface ToolContext {
15
15
  planReview: PlanReviewToolContext;
16
16
  }
17
17
  export declare function getAllToolDefinitions(): ({
18
+ name: string;
19
+ description: string;
20
+ inputSchema: {
21
+ type: "object";
22
+ properties: {
23
+ workDir: {
24
+ type: string;
25
+ description: string;
26
+ };
27
+ swarmId: {
28
+ type: string;
29
+ description: string;
30
+ };
31
+ from: {
32
+ type: string;
33
+ description: string;
34
+ };
35
+ to: {
36
+ type: string;
37
+ description: string;
38
+ };
39
+ type: {
40
+ type: string;
41
+ description: string;
42
+ };
43
+ data: {
44
+ type: string;
45
+ description: string;
46
+ };
47
+ taskId: {
48
+ type: string;
49
+ description: string;
50
+ };
51
+ expectedStatus: {
52
+ type: string;
53
+ description: string;
54
+ };
55
+ expectedOwner: {
56
+ type: string[];
57
+ description: string;
58
+ };
59
+ instanceId?: undefined;
60
+ seconds?: undefined;
61
+ payload?: undefined;
62
+ includeGlobs?: undefined;
63
+ ignoreGlobs?: undefined;
64
+ debounceMs?: undefined;
65
+ watchId?: undefined;
66
+ };
67
+ required: string[];
68
+ };
69
+ } | {
70
+ name: string;
71
+ description: string;
72
+ inputSchema: {
73
+ type: "object";
74
+ properties: {
75
+ workDir: {
76
+ type: string;
77
+ description: string;
78
+ };
79
+ swarmId: {
80
+ type: string;
81
+ description: string;
82
+ };
83
+ instanceId: {
84
+ type: string;
85
+ description: string;
86
+ };
87
+ seconds: {
88
+ type: string;
89
+ exclusiveMinimum: number;
90
+ maximum: number;
91
+ description: string;
92
+ };
93
+ payload: {
94
+ type: string;
95
+ description: string;
96
+ };
97
+ type: {
98
+ type: string;
99
+ description: string;
100
+ };
101
+ from: {
102
+ type: string;
103
+ description: string;
104
+ };
105
+ to?: undefined;
106
+ data?: undefined;
107
+ taskId?: undefined;
108
+ expectedStatus?: undefined;
109
+ expectedOwner?: undefined;
110
+ includeGlobs?: undefined;
111
+ ignoreGlobs?: undefined;
112
+ debounceMs?: undefined;
113
+ watchId?: undefined;
114
+ };
115
+ required: string[];
116
+ };
117
+ } | {
118
+ name: string;
119
+ description: string;
120
+ inputSchema: {
121
+ type: "object";
122
+ properties: {
123
+ workDir: {
124
+ type: string;
125
+ description: string;
126
+ };
127
+ swarmId: {
128
+ type: string;
129
+ description?: undefined;
130
+ };
131
+ instanceId: {
132
+ type: string;
133
+ description: string;
134
+ };
135
+ includeGlobs: {
136
+ type: string;
137
+ items: {
138
+ type: string;
139
+ };
140
+ minItems: number;
141
+ description: string;
142
+ };
143
+ payload: {
144
+ type: string;
145
+ description: string;
146
+ };
147
+ ignoreGlobs: {
148
+ type: string;
149
+ items: {
150
+ type: string;
151
+ };
152
+ description: string;
153
+ };
154
+ debounceMs: {
155
+ type: string;
156
+ minimum: number;
157
+ description: string;
158
+ };
159
+ type: {
160
+ type: string;
161
+ description: string;
162
+ };
163
+ from: {
164
+ type: string;
165
+ description: string;
166
+ };
167
+ watchId: {
168
+ type: string;
169
+ description: string;
170
+ };
171
+ to?: undefined;
172
+ data?: undefined;
173
+ taskId?: undefined;
174
+ expectedStatus?: undefined;
175
+ expectedOwner?: undefined;
176
+ seconds?: undefined;
177
+ };
178
+ required: string[];
179
+ };
180
+ } | {
18
181
  name: string;
19
182
  description: string;
20
183
  inputSchema: {
@@ -264,6 +427,10 @@ export declare function getAllToolDefinitions(): ({
264
427
  };
265
428
  description: string;
266
429
  };
430
+ planTaskId: {
431
+ type: string;
432
+ description: string;
433
+ };
267
434
  sourceMessageId?: undefined;
268
435
  sourceInstanceId?: undefined;
269
436
  taskId?: undefined;
@@ -321,6 +488,10 @@ export declare function getAllToolDefinitions(): ({
321
488
  };
322
489
  description: string;
323
490
  };
491
+ planTaskId: {
492
+ type: string;
493
+ description: string;
494
+ };
324
495
  sourceMessageId: {
325
496
  type: string;
326
497
  description: string;
@@ -364,6 +535,7 @@ export declare function getAllToolDefinitions(): ({
364
535
  owner?: undefined;
365
536
  from?: undefined;
366
537
  blockedBy?: undefined;
538
+ planTaskId?: undefined;
367
539
  sourceMessageId?: undefined;
368
540
  sourceInstanceId?: undefined;
369
541
  status?: undefined;
@@ -407,6 +579,7 @@ export declare function getAllToolDefinitions(): ({
407
579
  description?: undefined;
408
580
  from?: undefined;
409
581
  blockedBy?: undefined;
582
+ planTaskId?: undefined;
410
583
  sourceMessageId?: undefined;
411
584
  sourceInstanceId?: undefined;
412
585
  taskId?: undefined;
@@ -448,6 +621,7 @@ export declare function getAllToolDefinitions(): ({
448
621
  owner?: undefined;
449
622
  from?: undefined;
450
623
  blockedBy?: undefined;
624
+ planTaskId?: undefined;
451
625
  sourceMessageId?: undefined;
452
626
  sourceInstanceId?: undefined;
453
627
  author?: undefined;
@@ -489,6 +663,7 @@ export declare function getAllToolDefinitions(): ({
489
663
  description?: undefined;
490
664
  swarmId?: undefined;
491
665
  blockedBy?: undefined;
666
+ planTaskId?: undefined;
492
667
  sourceMessageId?: undefined;
493
668
  sourceInstanceId?: undefined;
494
669
  status?: undefined;
@@ -541,6 +716,7 @@ export declare function getAllToolDefinitions(): ({
541
716
  owner?: undefined;
542
717
  from?: undefined;
543
718
  blockedBy?: undefined;
719
+ planTaskId?: undefined;
544
720
  sourceMessageId?: undefined;
545
721
  sourceInstanceId?: undefined;
546
722
  status?: undefined;
@@ -577,6 +753,7 @@ export declare function getAllToolDefinitions(): ({
577
753
  owner?: undefined;
578
754
  from?: undefined;
579
755
  blockedBy?: undefined;
756
+ planTaskId?: undefined;
580
757
  sourceMessageId?: undefined;
581
758
  sourceInstanceId?: undefined;
582
759
  taskId?: undefined;
@@ -621,6 +798,7 @@ export declare function getAllToolDefinitions(): ({
621
798
  owner?: undefined;
622
799
  from?: undefined;
623
800
  blockedBy?: undefined;
801
+ planTaskId?: undefined;
624
802
  sourceMessageId?: undefined;
625
803
  sourceInstanceId?: undefined;
626
804
  taskId?: undefined;
@@ -661,6 +839,7 @@ export declare function getAllToolDefinitions(): ({
661
839
  owner?: undefined;
662
840
  from?: undefined;
663
841
  blockedBy?: undefined;
842
+ planTaskId?: undefined;
664
843
  sourceMessageId?: undefined;
665
844
  sourceInstanceId?: undefined;
666
845
  taskId?: undefined;
@@ -710,6 +889,7 @@ export declare function getAllToolDefinitions(): ({
710
889
  owner?: undefined;
711
890
  from?: undefined;
712
891
  blockedBy?: undefined;
892
+ planTaskId?: undefined;
713
893
  sourceMessageId?: undefined;
714
894
  sourceInstanceId?: undefined;
715
895
  taskId?: undefined;
@@ -723,51 +903,6 @@ export declare function getAllToolDefinitions(): ({
723
903
  };
724
904
  required: string[];
725
905
  };
726
- } | {
727
- name: string;
728
- description: string;
729
- inputSchema: {
730
- type: "object";
731
- properties: {
732
- workDir: {
733
- type: string;
734
- description: string;
735
- };
736
- swarmId: {
737
- type: string;
738
- description: string;
739
- };
740
- from: {
741
- type: string;
742
- description: string;
743
- };
744
- to: {
745
- type: string;
746
- description: string;
747
- };
748
- type: {
749
- type: string;
750
- description: string;
751
- };
752
- data: {
753
- type: string;
754
- description: string;
755
- };
756
- taskId: {
757
- type: string;
758
- description: string;
759
- };
760
- expectedStatus: {
761
- type: string;
762
- description: string;
763
- };
764
- expectedOwner: {
765
- type: string[];
766
- description: string;
767
- };
768
- };
769
- required: string[];
770
- };
771
906
  } | {
772
907
  name: string;
773
908
  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":"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"}