maestro-agent-sdk 0.1.8 → 0.1.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.
Files changed (51) hide show
  1. package/dist/core/is-abort-error.d.ts +8 -0
  2. package/dist/core/is-abort-error.d.ts.map +1 -0
  3. package/dist/core/is-abort-error.js +17 -0
  4. package/dist/core/is-abort-error.js.map +1 -0
  5. package/dist/core/loop.d.ts.map +1 -1
  6. package/dist/core/loop.js +37 -1
  7. package/dist/core/loop.js.map +1 -1
  8. package/dist/platform/version.d.ts +1 -1
  9. package/dist/platform/version.d.ts.map +1 -1
  10. package/dist/platform/version.js +1 -1
  11. package/dist/platform/version.js.map +1 -1
  12. package/dist/provider.d.ts +2 -1
  13. package/dist/provider.d.ts.map +1 -1
  14. package/dist/provider.js +7 -10
  15. package/dist/provider.js.map +1 -1
  16. package/dist/registry.js +6 -6
  17. package/dist/registry.js.map +1 -1
  18. package/dist/sub-agent/runner.d.ts +1 -1
  19. package/dist/sub-agent/runner.d.ts.map +1 -1
  20. package/dist/sub-agent/runner.js +34 -23
  21. package/dist/sub-agent/runner.js.map +1 -1
  22. package/dist/tools/builtin/agent.d.ts +19 -7
  23. package/dist/tools/builtin/agent.d.ts.map +1 -1
  24. package/dist/tools/builtin/agent.js +13 -4
  25. package/dist/tools/builtin/agent.js.map +1 -1
  26. package/dist/tools/builtin/bash.d.ts +68 -3
  27. package/dist/tools/builtin/bash.d.ts.map +1 -1
  28. package/dist/tools/builtin/bash.js +224 -94
  29. package/dist/tools/builtin/bash.js.map +1 -1
  30. package/dist/tools/builtin/edit.d.ts.map +1 -1
  31. package/dist/tools/builtin/edit.js +8 -2
  32. package/dist/tools/builtin/edit.js.map +1 -1
  33. package/dist/tools/builtin/glob.d.ts +8 -4
  34. package/dist/tools/builtin/glob.d.ts.map +1 -1
  35. package/dist/tools/builtin/glob.js +105 -17
  36. package/dist/tools/builtin/glob.js.map +1 -1
  37. package/dist/tools/builtin/multi_edit.d.ts +16 -0
  38. package/dist/tools/builtin/multi_edit.d.ts.map +1 -0
  39. package/dist/tools/builtin/multi_edit.js +292 -0
  40. package/dist/tools/builtin/multi_edit.js.map +1 -0
  41. package/dist/tools/builtin/write.d.ts.map +1 -1
  42. package/dist/tools/builtin/write.js +8 -2
  43. package/dist/tools/builtin/write.js.map +1 -1
  44. package/dist/tools/file-state.d.ts +1 -1
  45. package/dist/tools/file-state.d.ts.map +1 -1
  46. package/dist/tools/file-state.js.map +1 -1
  47. package/dist/tools/path-guard.d.ts +23 -0
  48. package/dist/tools/path-guard.d.ts.map +1 -0
  49. package/dist/tools/path-guard.js +52 -0
  50. package/dist/tools/path-guard.js.map +1 -0
  51. package/package.json +1 -1
@@ -1,18 +1,83 @@
1
1
  import type { ToolHandler } from "../../tools/registry.js";
2
+ export declare function createBashTool(opts?: {
3
+ signal?: AbortSignal;
4
+ }): ToolHandler;
2
5
  /**
3
6
  * Bash tool — built-in subprocess executor.
4
7
  *
5
8
  * Minimal: shell out, capture stdout/stderr, enforce a wall-clock timeout
6
- * (30s default, model-overridable up to 10min) and a 16KB output cap. Not a
7
- * permission-gated execution layer hosts that need one should register an
8
- * MCP terminal tool (or replace this with their own adapter via
9
+ * (30s default, model-overridable up to 10min) and an output cap per stream
10
+ * (50KB default, model-overridable up to 100KB). Not a permission-gated
11
+ * execution layer hosts that need one should register an MCP terminal
12
+ * tool (or replace this with their own adapter via
9
13
  * `ToolRegistry.register`) so subprocess calls flow through the host's
10
14
  * existing permission system instead of an unguarded `spawn`.
11
15
  *
16
+ * Truncation policy (NEW in v0.1.9):
17
+ * When a stream exceeds the cap we keep BOTH the head (first half) AND the
18
+ * tail (last half), with a `[truncated N bytes]` marker between them.
19
+ * Previous behaviour kept only the head and destroyed the stream — which
20
+ * lost the bottom of `bun install` / `pytest` / `cargo build` output where
21
+ * the actual error message lives. The ring buffer below keeps the cap
22
+ * bounded (head_cap + tail_cap = max) while letting unlimited bytes flow
23
+ * through.
24
+ *
12
25
  * The `description` input field is accepted for claude-SDK parity. We don't
13
26
  * store it anywhere — its presence in the schema is what matters: the model's
14
27
  * pretrained instinct to emit a short rationale per Bash call survives the
15
28
  * agent switch, which is what permission UIs / audit logs want to render.
16
29
  */
17
30
  export declare const bashTool: ToolHandler;
31
+ /** Named schema export so the provider can reference it
32
+ * without instantiating a full tool registry. */
33
+ export declare const bashToolSchema: {
34
+ readonly name: "Bash";
35
+ readonly description: string;
36
+ readonly input_schema: {
37
+ readonly type: "object";
38
+ readonly properties: {
39
+ readonly command: {
40
+ readonly type: "string";
41
+ readonly description: "Bash command to execute.";
42
+ };
43
+ readonly description: {
44
+ readonly type: "string";
45
+ readonly description: string;
46
+ };
47
+ readonly timeout: {
48
+ readonly type: "number";
49
+ readonly description: string;
50
+ };
51
+ readonly max_output_bytes: {
52
+ readonly type: "number";
53
+ readonly description: string;
54
+ };
55
+ readonly cwd: {
56
+ readonly type: "string";
57
+ readonly description: "Working directory (optional).";
58
+ };
59
+ };
60
+ readonly required: readonly ["command"];
61
+ };
62
+ };
63
+ /**
64
+ * Two-ended output buffer that keeps the first `headCap` bytes and the last
65
+ * `tailCap` bytes of an unbounded stream. Bytes between those two windows
66
+ * are counted (so we can report `truncated N bytes`) but not stored.
67
+ *
68
+ * Total bytes resident in memory are bounded by `cap` regardless of how
69
+ * much stream data flows through. The buffer accepts incremental `append`
70
+ * calls (matching the `data` event shape of a Node readable stream).
71
+ */
72
+ interface OutputRing {
73
+ append(text: string): void;
74
+ render(): string;
75
+ truncated(): boolean;
76
+ }
77
+ export declare function createOutputRing(cap: number): OutputRing;
78
+ export declare const __BASH_MAX_OUTPUT_DEFAULT = 50000;
79
+ export declare const __BASH_MAX_OUTPUT_HARD = 100000;
80
+ export declare const __BASH_TIMEOUT_MS = 30000;
81
+ export declare const __BASH_TIMEOUT_MAX_MS: number;
82
+ export {};
18
83
  //# sourceMappingURL=bash.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bash.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/bash.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAapD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,QAAQ,EAAE,WA2GtB,CAAC"}
1
+ {"version":3,"file":"bash.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/bash.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AA4DpD,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAAG,WAAW,CAW3E;AAwGD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,QAAQ,EAAE,WAA8B,CAAC;AAEtD;kDACkD;AAClD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAa,CAAC;AAEzC;;;;;;;;GAQG;AACH,UAAU,UAAU;IAClB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,IAAI,MAAM,CAAC;IACjB,SAAS,IAAI,OAAO,CAAC;CACtB;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CA8DxD;AAQD,eAAO,MAAM,yBAAyB,QAA0B,CAAC;AACjE,eAAO,MAAM,sBAAsB,SAAuB,CAAC;AAC3D,eAAO,MAAM,iBAAiB,QAAkB,CAAC;AACjD,eAAO,MAAM,qBAAqB,QAAsB,CAAC"}
@@ -1,124 +1,254 @@
1
1
  import { spawn } from "node:child_process";
2
- /** Default wall-clock cap. The model can override via the `timeout` input
3
- * fielduseful for slow tests, builds, installs capped at `BASH_TIMEOUT_MAX_MS`
4
- * so a runaway can't pin the runtime indefinitely. */
5
- const BASH_TIMEOUT_MS = 30_000;
6
- /** Hard ceiling on caller-supplied `timeout`. 10 minutes matches claude SDK's
7
- * documented cap and is plenty for `npm install` / `bun install` / test runs. */
8
- const BASH_TIMEOUT_MAX_MS = 10 * 60_000;
9
- const BASH_MAX_OUTPUT = 16_000;
10
- /**
11
- * Bash tool built-in subprocess executor.
12
- *
13
- * Minimal: shell out, capture stdout/stderr, enforce a wall-clock timeout
14
- * (30s default, model-overridable up to 10min) and a 16KB output cap. Not a
15
- * permission-gated execution layer — hosts that need one should register an
16
- * MCP terminal tool (or replace this with their own adapter via
17
- * `ToolRegistry.register`) so subprocess calls flow through the host's
18
- * existing permission system instead of an unguarded `spawn`.
19
- *
20
- * The `description` input field is accepted for claude-SDK parity. We don't
21
- * store it anywhere — its presence in the schema is what matters: the model's
22
- * pretrained instinct to emit a short rationale per Bash call survives the
23
- * agent switch, which is what permission UIs / audit logs want to render.
24
- */
25
- export const bashTool = {
26
- schema: {
27
- name: "Bash",
28
- description: "Execute a bash command and return stdout/stderr. Default 30s timeout " +
29
- "(override via `timeout`, max 10min). 16KB output cap. Optional `description` " +
30
- "is recorded for audit/UI and otherwise ignored.",
31
- input_schema: {
32
- type: "object",
33
- properties: {
34
- command: {
35
- type: "string",
36
- description: "Bash command to execute.",
37
- },
38
- description: {
39
- type: "string",
40
- description: "Short human-readable rationale for the command (~5-10 words). " +
41
- "Accepted for claude-SDK parity — surfaces in permission UIs / " +
42
- "audit logs. Ignored by execution.",
43
- },
44
- timeout: {
45
- type: "number",
46
- description: "Wall-clock timeout in milliseconds. Defaults to 30000 (30s). " +
47
- "Clamped to a hard ceiling of 600000 (10min). Use a higher value " +
48
- "for slow tests, installs, or builds.",
49
- },
50
- cwd: {
51
- type: "string",
52
- description: "Working directory (optional).",
53
- },
2
+ import { isAbsolute, normalize } from "node:path";
3
+ /** Shared Bash schema extracted as a named constant so both the bare
4
+ * export (`bashTool`) and the factory (`createBashTool`) reference the
5
+ * same object without a forward-reference problem. */
6
+ const bashSchema = {
7
+ name: "Bash",
8
+ description: "Execute a bash command and return stdout/stderr. Default 30s timeout " +
9
+ "(override via `timeout`, max 10min). 50KB output cap per stream by default " +
10
+ "(override via `max_output_bytes`, max 100KB). When a stream exceeds the " +
11
+ "cap both head and tail are preserved with a `[truncated N bytes]` marker " +
12
+ "between them — keeps the trailing error/summary visible. Optional " +
13
+ "`description` is recorded for audit/UI and otherwise ignored.",
14
+ input_schema: {
15
+ type: "object",
16
+ properties: {
17
+ command: {
18
+ type: "string",
19
+ description: "Bash command to execute.",
20
+ },
21
+ description: {
22
+ type: "string",
23
+ description: "Short human-readable rationale for the command (~5-10 words). " +
24
+ "Accepted for claude-SDK parity — surfaces in permission UIs / " +
25
+ "audit logs. Ignored by execution.",
26
+ },
27
+ timeout: {
28
+ type: "number",
29
+ description: "Wall-clock timeout in milliseconds. Defaults to 30000 (30s). " +
30
+ "Clamped to a hard ceiling of 600000 (10min). Use a higher value " +
31
+ "for slow tests, installs, or builds.",
32
+ },
33
+ max_output_bytes: {
34
+ type: "number",
35
+ description: "Per-stream output cap in bytes. Defaults to 50000 (50KB). Clamped " +
36
+ "to a hard ceiling of 100000 (100KB). Exceeding bytes are dropped " +
37
+ "from the middle — head and tail are preserved with a " +
38
+ "`[truncated N bytes]` marker between them.",
39
+ },
40
+ cwd: {
41
+ type: "string",
42
+ description: "Working directory (optional).",
54
43
  },
55
- required: ["command"],
56
44
  },
45
+ required: ["command"],
57
46
  },
58
- async execute(input) {
59
- const command = String(input.command ?? "");
60
- if (!command.trim()) {
61
- return JSON.stringify({ error: "empty command" });
47
+ };
48
+ // ───────────────────────────────────────────────
49
+ // Factory — wraps the shared shell-out logic with
50
+ // an AbortSignal so the sub-agent runner can wire
51
+ // parent abort through to `spawn({ signal })`.
52
+ //
53
+ // Usage in runner.ts:
54
+ // tools.register(createBashTool({ signal: abortSignal }));
55
+ // ───────────────────────────────────────────────
56
+ export function createBashTool(opts) {
57
+ const parentSignal = opts?.signal;
58
+ return {
59
+ schema: bashSchema,
60
+ async execute(input) {
61
+ if (parentSignal?.aborted) {
62
+ return JSON.stringify({ error: "aborted" });
63
+ }
64
+ return executeBash(input, parentSignal);
65
+ },
66
+ };
67
+ }
68
+ /** Shared execute logic — used by both the factory wrapper and the bare export. */
69
+ async function executeBash(input, abortSignal) {
70
+ const command = String(input.command ?? "");
71
+ if (!command.trim()) {
72
+ return JSON.stringify({ error: "empty command" });
73
+ }
74
+ let cwd = typeof input.cwd === "string" ? input.cwd : undefined;
75
+ if (cwd !== undefined) {
76
+ cwd = normalize(cwd);
77
+ if (!isAbsolute(cwd)) {
78
+ return JSON.stringify({
79
+ error: `Bash: 'cwd' must be an absolute path, got '${cwd}'`,
80
+ });
62
81
  }
63
- const cwd = typeof input.cwd === "string" ? input.cwd : undefined;
64
- // Resolve the effective timeout. Non-numeric / non-finite / non-positive
65
- // falls back to the 30s default. Positive values are clamped to 10min.
66
- const rawTimeout = input.timeout;
67
- const timeoutMs = typeof rawTimeout === "number" && Number.isFinite(rawTimeout) && rawTimeout > 0
68
- ? Math.min(Math.floor(rawTimeout), BASH_TIMEOUT_MAX_MS)
69
- : BASH_TIMEOUT_MS;
70
- return new Promise((resolve) => {
82
+ }
83
+ const rawTimeout = input.timeout;
84
+ const timeoutMs = typeof rawTimeout === "number" && Number.isFinite(rawTimeout) && rawTimeout > 0
85
+ ? Math.min(Math.floor(rawTimeout), BASH_TIMEOUT_MAX_MS)
86
+ : BASH_TIMEOUT_MS;
87
+ const rawMaxOutput = input.max_output_bytes;
88
+ const maxOutputBytes = typeof rawMaxOutput === "number" && Number.isFinite(rawMaxOutput) && rawMaxOutput > 0
89
+ ? Math.min(Math.floor(rawMaxOutput), BASH_MAX_OUTPUT_HARD)
90
+ : BASH_MAX_OUTPUT_DEFAULT;
91
+ const stdoutRing = createOutputRing(maxOutputBytes);
92
+ const stderrRing = createOutputRing(maxOutputBytes);
93
+ return new Promise((resolve, reject) => {
94
+ try {
71
95
  const child = spawn("bash", ["-c", command], {
72
96
  ...(cwd ? { cwd } : {}),
97
+ ...(abortSignal ? { signal: abortSignal } : {}),
73
98
  env: process.env,
74
99
  });
75
- let stdout = "";
76
- let stderr = "";
77
- let truncated = false;
78
100
  const timer = setTimeout(() => {
79
101
  child.kill("SIGKILL");
80
102
  resolve(JSON.stringify({
81
103
  error: `timeout after ${timeoutMs}ms`,
82
- stdout,
83
- stderr,
104
+ stdout: stdoutRing.render(),
105
+ stderr: stderrRing.render(),
106
+ ...truncatedFlag(stdoutRing, stderrRing),
84
107
  }));
85
108
  }, timeoutMs);
86
109
  child.stdout?.on("data", (chunk) => {
87
- const text = chunk.toString("utf-8");
88
- if (stdout.length + text.length > BASH_MAX_OUTPUT) {
89
- stdout += text.slice(0, BASH_MAX_OUTPUT - stdout.length);
90
- truncated = true;
91
- child.stdout?.destroy();
92
- }
93
- else {
94
- stdout += text;
95
- }
110
+ stdoutRing.append(chunk.toString("utf-8"));
96
111
  });
97
112
  child.stderr?.on("data", (chunk) => {
98
- const text = chunk.toString("utf-8");
99
- if (stderr.length + text.length > BASH_MAX_OUTPUT) {
100
- stderr += text.slice(0, BASH_MAX_OUTPUT - stderr.length);
101
- truncated = true;
102
- child.stderr?.destroy();
103
- }
104
- else {
105
- stderr += text;
106
- }
113
+ stderrRing.append(chunk.toString("utf-8"));
107
114
  });
108
115
  child.on("close", (code) => {
109
116
  clearTimeout(timer);
110
117
  resolve(JSON.stringify({
111
118
  exitCode: code,
112
- stdout,
113
- stderr,
114
- ...(truncated ? { truncated: true } : {}),
119
+ stdout: stdoutRing.render(),
120
+ stderr: stderrRing.render(),
121
+ ...truncatedFlag(stdoutRing, stderrRing),
115
122
  }));
116
123
  });
117
124
  child.on("error", (err) => {
118
125
  clearTimeout(timer);
119
126
  resolve(JSON.stringify({ error: err.message }));
120
127
  });
121
- });
122
- },
123
- };
128
+ }
129
+ catch (err) {
130
+ // Synchronous throw from spawn (e.g. invalid options) — reject
131
+ // rather than letting the Promise hang unresolved.
132
+ reject(err instanceof Error ? err : new Error(String(err)));
133
+ }
134
+ });
135
+ }
136
+ /** Default wall-clock cap. The model can override via the `timeout` input
137
+ * field — useful for slow tests, builds, installs — capped at `BASH_TIMEOUT_MAX_MS`
138
+ * so a runaway can't pin the runtime indefinitely. */
139
+ const BASH_TIMEOUT_MS = 30_000;
140
+ /** Hard ceiling on caller-supplied `timeout`. 10 minutes matches claude SDK's
141
+ * documented cap and is plenty for `npm install` / `bun install` / test runs. */
142
+ const BASH_TIMEOUT_MAX_MS = 10 * 60_000;
143
+ /** Default output cap per stream (stdout & stderr each). Up from v0.1.8's
144
+ * 16KB so ordinary `npm install` / build logs fit in one shot. Most real
145
+ * installs land between 20–35KB, so 50KB covers ~90% of cases without
146
+ * truncation. */
147
+ const BASH_MAX_OUTPUT_DEFAULT = 50_000;
148
+ /** Absolute ceiling on caller-supplied `max_output_bytes`. 100KB is enough
149
+ * for any reasonable build log; pathological output past this point should
150
+ * be redirected to a file and Read'd in slices anyway. */
151
+ const BASH_MAX_OUTPUT_HARD = 100_000;
152
+ /**
153
+ * Bash tool — built-in subprocess executor.
154
+ *
155
+ * Minimal: shell out, capture stdout/stderr, enforce a wall-clock timeout
156
+ * (30s default, model-overridable up to 10min) and an output cap per stream
157
+ * (50KB default, model-overridable up to 100KB). Not a permission-gated
158
+ * execution layer — hosts that need one should register an MCP terminal
159
+ * tool (or replace this with their own adapter via
160
+ * `ToolRegistry.register`) so subprocess calls flow through the host's
161
+ * existing permission system instead of an unguarded `spawn`.
162
+ *
163
+ * Truncation policy (NEW in v0.1.9):
164
+ * When a stream exceeds the cap we keep BOTH the head (first half) AND the
165
+ * tail (last half), with a `[truncated N bytes]` marker between them.
166
+ * Previous behaviour kept only the head and destroyed the stream — which
167
+ * lost the bottom of `bun install` / `pytest` / `cargo build` output where
168
+ * the actual error message lives. The ring buffer below keeps the cap
169
+ * bounded (head_cap + tail_cap = max) while letting unlimited bytes flow
170
+ * through.
171
+ *
172
+ * The `description` input field is accepted for claude-SDK parity. We don't
173
+ * store it anywhere — its presence in the schema is what matters: the model's
174
+ * pretrained instinct to emit a short rationale per Bash call survives the
175
+ * agent switch, which is what permission UIs / audit logs want to render.
176
+ */
177
+ export const bashTool = createBashTool();
178
+ /** Named schema export so the provider can reference it
179
+ * without instantiating a full tool registry. */
180
+ export const bashToolSchema = bashSchema;
181
+ export function createOutputRing(cap) {
182
+ if (cap <= 0) {
183
+ return {
184
+ append() { },
185
+ render: () => "",
186
+ truncated: () => false,
187
+ };
188
+ }
189
+ // Split the cap roughly in half. With an odd cap the head gets the extra
190
+ // byte — head context (command echo, startup banner) tends to be slightly
191
+ // more diagnostic than the tail of "Done." messages.
192
+ const headCap = Math.ceil(cap / 2);
193
+ const tailCap = cap - headCap;
194
+ let head = "";
195
+ // The tail is maintained as a sliding window — we keep at most `tailCap`
196
+ // bytes of the most-recent output regardless of how many bytes streamed
197
+ // past. `dropped` tracks the count of middle bytes we ejected so the
198
+ // truncation marker can quote a real number.
199
+ let tail = "";
200
+ let dropped = 0;
201
+ // total bytes observed — sum of head, tail, and dropped. Useful for
202
+ // future telemetry; not exposed yet.
203
+ let total = 0;
204
+ return {
205
+ append(text) {
206
+ if (text.length === 0)
207
+ return;
208
+ total += text.length;
209
+ // Phase 1: while the head buffer has room, fill it first.
210
+ if (head.length < headCap) {
211
+ const take = Math.min(text.length, headCap - head.length);
212
+ head += text.slice(0, take);
213
+ text = text.slice(take);
214
+ if (text.length === 0)
215
+ return;
216
+ }
217
+ // Phase 2: tail-only path. Append, then evict the oldest bytes if
218
+ // we exceed `tailCap`. Bytes evicted from the tail count toward
219
+ // `dropped` because they passed through but are no longer visible.
220
+ if (tailCap === 0) {
221
+ // Degenerate: head took the whole cap. Drop everything after.
222
+ dropped += text.length;
223
+ return;
224
+ }
225
+ tail += text;
226
+ if (tail.length > tailCap) {
227
+ const over = tail.length - tailCap;
228
+ dropped += over;
229
+ tail = tail.slice(over);
230
+ }
231
+ },
232
+ render() {
233
+ if (dropped === 0)
234
+ return head + tail;
235
+ // The middle marker is emitted on its own line so the model — and any
236
+ // human reading the trace — can see where the gap is. We keep the
237
+ // marker terse (no ANSI, no decoration) so it survives downstream
238
+ // serialisation.
239
+ return `${head}\n...[truncated ${dropped} bytes]...\n${tail}`;
240
+ },
241
+ truncated: () => dropped > 0,
242
+ };
243
+ }
244
+ function truncatedFlag(stdout, stderr) {
245
+ if (stdout.truncated() || stderr.truncated())
246
+ return { truncated: true };
247
+ return {};
248
+ }
249
+ // Internal exports for tests.
250
+ export const __BASH_MAX_OUTPUT_DEFAULT = BASH_MAX_OUTPUT_DEFAULT;
251
+ export const __BASH_MAX_OUTPUT_HARD = BASH_MAX_OUTPUT_HARD;
252
+ export const __BASH_TIMEOUT_MS = BASH_TIMEOUT_MS;
253
+ export const __BASH_TIMEOUT_MAX_MS = BASH_TIMEOUT_MAX_MS;
124
254
  //# sourceMappingURL=bash.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bash.js","sourceRoot":"","sources":["../../../src/tools/builtin/bash.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bash.js","sourceRoot":"","sources":["../../../src/tools/builtin/bash.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/edit.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAgCpD,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B;AAED,wBAAgB,cAAc,CAAC,IAAI,GAAE,eAAoB,GAAG,WAAW,CA4JtE;AAED,+EAA+E;AAC/E,eAAO,MAAM,QAAQ,EAAE,WAA8B,CAAC;AAEtD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAUzE;AAqCD,eAAO,MAAM,gBAAgB,QAAiB,CAAC"}
1
+ {"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/edit.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAgCpD,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B;AAED,wBAAgB,cAAc,CAAC,IAAI,GAAE,eAAoB,GAAG,WAAW,CAgKtE;AAED,+EAA+E;AAC/E,eAAO,MAAM,QAAQ,EAAE,WAA8B,CAAC;AAEtD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAUzE;AAqCD,eAAO,MAAM,gBAAgB,QAAiB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { existsSync, readFileSync, statSync, writeFileSync } from "node:fs";
2
- import { isAbsolute } from "node:path";
2
+ import { isAbsolute, normalize } from "node:path";
3
+ import { checkBlockedPath } from "../../tools/path-guard.js";
3
4
  /**
4
5
  * Edit builtin — claude SDK `Edit` tool parity for maestro.
5
6
  *
@@ -62,7 +63,9 @@ export function createEditTool(opts = {}) {
62
63
  },
63
64
  },
64
65
  async execute(input) {
65
- const filePath = typeof input.file_path === "string" ? input.file_path : "";
66
+ // normalize() collapses `..` segments (e.g. /safe/../etc /etc) so
67
+ // that the isAbsolute check cannot be bypassed by path traversal.
68
+ const filePath = normalize(typeof input.file_path === "string" ? input.file_path : "");
66
69
  if (!filePath) {
67
70
  return JSON.stringify({ error: "Edit: missing 'file_path' argument" });
68
71
  }
@@ -71,6 +74,9 @@ export function createEditTool(opts = {}) {
71
74
  error: `Edit: file_path must be absolute, got '${filePath}'`,
72
75
  });
73
76
  }
77
+ const blockErr = checkBlockedPath("Edit", filePath);
78
+ if (blockErr)
79
+ return JSON.stringify({ error: blockErr });
74
80
  // Read-before-Edit gate. No-op when no tracker is wired (standalone use).
75
81
  if (tracker) {
76
82
  const gateErr = tracker.checkBeforeMutate(filePath, "Edit");
@@ -1 +1 @@
1
- {"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../src/tools/builtin/edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAc,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxF,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAIvC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,0BAA0B;AACnE,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAW/B,MAAM,UAAU,cAAc,CAAC,OAAwB,EAAE;IACvD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACzB,OAAO;QACL,MAAM,EAAE;YACN,IAAI,EAAE,MAAM;YACZ,WAAW,EACT,yCAAyC;gBACzC,6DAA6D;gBAC7D,yEAAyE;gBACzE,uEAAuE;gBACvE,yEAAyE;YAC3E,YAAY,EAAE;gBACZ,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,SAAS,EAAE;wBACT,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,0DAA0D;qBACxE;oBACD,UAAU,EAAE;wBACV,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,+DAA+D;qBAC7E;oBACD,UAAU,EAAE;wBACV,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,kDAAkD;qBAChE;oBACD,WAAW,EAAE;wBACX,IAAI,EAAE,SAAS;wBACf,WAAW,EACT,6EAA6E;qBAChF;iBACF;gBACD,QAAQ,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC;aACpD;SACF;QACD,KAAK,CAAC,OAAO,CAAC,KAAK;YACjB,MAAM,QAAQ,GAAG,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5E,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,oCAAoC,EAAE,CAAC,CAAC;YACzE,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC,SAAS,CAAC;oBACpB,KAAK,EAAE,0CAA0C,QAAQ,GAAG;iBAC7D,CAAC,CAAC;YACL,CAAC;YACD,0EAA0E;YAC1E,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAC5D,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC;YACD,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;gBACzC,OAAO,IAAI,CAAC,SAAS,CAAC;oBACpB,KAAK,EAAE,4CAA4C,OAAO,KAAK,CAAC,UAAU,EAAE;iBAC7E,CAAC,CAAC;YACL,CAAC;YACD,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;gBACzC,OAAO,IAAI,CAAC,SAAS,CAAC;oBACpB,KAAK,EAAE,4CAA4C,OAAO,KAAK,CAAC,UAAU,EAAE;iBAC7E,CAAC,CAAC;YACL,CAAC;YACD,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC;YAChC,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC;YAChC,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAE9C,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,OAAO,IAAI,CAAC,SAAS,CAAC;oBACpB,KAAK,EAAE,wEAAwE;iBAChF,CAAC,CAAC;YACL,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO,IAAI,CAAC,SAAS,CAAC;oBACpB,KAAK,EAAE,oCAAoC;iBAC5C,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC,SAAS,CAAC;oBACpB,KAAK,EAAE,8BAA8B,QAAQ,kCAAkC;iBAChF,CAAC,CAAC;YACL,CAAC;YACD,IAAI,IAAW,CAAC;YAChB,IAAI,CAAC;gBACH,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC5B,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,IAAI,CAAC,SAAS,CAAC;oBACpB,KAAK,EAAE,sBAAsB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;iBAC1E,CAAC,CAAC;YACL,CAAC;YACD,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACvB,OAAO,IAAI,CAAC,SAAS,CAAC;oBACpB,KAAK,EAAE,UAAU,QAAQ,+BAA+B;iBACzD,CAAC,CAAC;YACL,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,GAAG,cAAc,EAAE,CAAC;gBAC/B,OAAO,IAAI,CAAC,SAAS,CAAC;oBACpB,KAAK,EAAE,mBAAmB,IAAI,CAAC,IAAI,sDAAsD;iBAC1F,CAAC,CAAC;YACL,CAAC;YAED,IAAI,GAAW,CAAC;YAChB,IAAI,CAAC;gBACH,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACxC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,IAAI,CAAC,SAAS,CAAC;oBACpB,KAAK,EAAE,sBAAsB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;iBAC1E,CAAC,CAAC;YACL,CAAC;YAED,MAAM,WAAW,GAAG,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAClD,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;gBACtB,OAAO,IAAI,CAAC,SAAS,CAAC;oBACpB,KAAK,EAAE,iCAAiC,QAAQ,+EAA+E;iBAChI,CAAC,CAAC;YACL,CAAC;YACD,IAAI,CAAC,UAAU,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;gBACnC,OAAO,IAAI,CAAC,SAAS,CAAC;oBACpB,KAAK,EAAE,4BAA4B,WAAW,aAAa,QAAQ,mGAAmG;oBACtK,WAAW;iBACZ,CAAC,CAAC;YACL,CAAC;YAED,2BAA2B;YAC3B,IAAI,OAAe,CAAC;YACpB,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAChC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YACxE,CAAC;YAED,IAAI,CAAC;gBACH,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC5C,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,IAAI,CAAC,SAAS,CAAC;oBACpB,KAAK,EAAE,uBAAuB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;iBAC3E,CAAC,CAAC;YACL,CAAC;YAED,qEAAqE;YACrE,4DAA4D;YAC5D,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YAE1B,yEAAyE;YACzE,0EAA0E;YAC1E,gCAAgC;YAChC,MAAM,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC/D,OAAO;gBACL,gBAAgB,QAAQ,KAAK,aAAa,eAAe,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG;gBAC1F,EAAE;gBACF,OAAO;aACR,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACf,CAAC;KACF,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,MAAM,QAAQ,GAAgB,cAAc,EAAE,CAAC;AAEtD;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB,EAAE,MAAc;IAC/D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAClC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,SAAS,CAAC;QACR,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC3C,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAC7B,KAAK,EAAE,CAAC;QACR,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CACvB,SAAiB,EACjB,OAAe,EACf,OAAe,EACf,MAAc;IAEd,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,oDAAoD,CAAC;IACrF,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,gDAAgD;IAChD,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,wBAAwB;QACnE,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;YACf,WAAW,GAAG,CAAC,CAAC;YAChB,MAAM;QACR,CAAC;QACD,GAAG,GAAG,IAAI,CAAC;IACb,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,oBAAoB,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,oBAAoB,GAAG,CAAC,CAAC,CAAC;IAC9E,OAAO,QAAQ;SACZ,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;SACjB,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;SACtE,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,8BAA8B;AAC9B,MAAM,CAAC,MAAM,gBAAgB,GAAG,cAAc,CAAC"}
1
+ {"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../src/tools/builtin/edit.ts"],"names":[],"mappings":"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"}
@@ -5,10 +5,14 @@ export declare const globTool: ToolHandler;
5
5
  * path (anchored at both ends).
6
6
  *
7
7
  * Handled tokens:
8
- * `**\/` → `(?:.*\/)?` — zero or more path segments (greedy across `/`)
9
- * `**` → `.*` — anything including `/`
10
- * `*` → `[^/]*` — anything except `/` within one segment
11
- * `?` → `[^/]` — single char within one segment
8
+ * `**\/` → `(?:.*\/)?` — zero or more path segments (greedy across `/`)
9
+ * `**` → `.*` — anything including `/`
10
+ * `*` → `[^/]*` — anything except `/` within one segment
11
+ * `?` → `[^/]` — single char within one segment
12
+ * `[abc]` → `[abc]` — character class (POSIX `[!abc]` → `[^abc]`)
13
+ * `{a,b}` → `(?:a|b)` — brace expansion (nestable, body recursively
14
+ * compiled so wildcards / classes inside each
15
+ * alternative still work)
12
16
  *
13
17
  * Other regex metacharacters are escaped so literals like `.` in `foo.ts`
14
18
  * don't accidentally turn into "any char".
@@ -1 +1 @@
1
- {"version":3,"file":"glob.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/glob.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAuCpD,eAAO,MAAM,QAAQ,EAAE,WAoKtB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA+BnD;AAID;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAsBjF"}
1
+ {"version":3,"file":"glob.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/glob.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAuCpD,eAAO,MAAM,QAAQ,EAAE,WAwKtB,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnD;AA2GD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAsBjF"}