maestro-agent-sdk 0.1.8 → 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.
- package/dist/platform/version.d.ts +1 -1
- package/dist/platform/version.js +1 -1
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +5 -0
- package/dist/provider.js.map +1 -1
- package/dist/tools/builtin/agent.d.ts +12 -3
- package/dist/tools/builtin/agent.d.ts.map +1 -1
- package/dist/tools/builtin/agent.js +6 -0
- package/dist/tools/builtin/agent.js.map +1 -1
- package/dist/tools/builtin/bash.d.ts +33 -3
- package/dist/tools/builtin/bash.d.ts.map +1 -1
- package/dist/tools/builtin/bash.js +124 -32
- package/dist/tools/builtin/bash.js.map +1 -1
- package/dist/tools/builtin/glob.d.ts +8 -4
- package/dist/tools/builtin/glob.d.ts.map +1 -1
- package/dist/tools/builtin/glob.js +100 -14
- package/dist/tools/builtin/glob.js.map +1 -1
- package/dist/tools/builtin/multi_edit.d.ts +16 -0
- package/dist/tools/builtin/multi_edit.d.ts.map +1 -0
- package/dist/tools/builtin/multi_edit.js +286 -0
- package/dist/tools/builtin/multi_edit.js.map +1 -0
- package/dist/tools/file-state.d.ts +1 -1
- package/dist/tools/file-state.d.ts.map +1 -1
- package/dist/tools/file-state.js.map +1 -1
- package/package.json +1 -1
package/dist/platform/version.js
CHANGED
package/dist/provider.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,QAAQ,EAAyC,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,QAAQ,EAAyC,MAAM,kBAAkB,CAAC;AAgCxF,OAAO,KAAK,EAAE,iBAAiB,EAAc,YAAY,EAAE,MAAM,SAAS,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAuB,eAAe,CAAC,IAAI,EAAE,iBAAiB,GAAG,cAAc,CAAC,YAAY,CAAC,CA+Z5F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAY1E;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,yBAAyB,EAAG,SAAkB,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAEjF;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAC5D,MAAM,EAAE,CAAC,EAAE,EACX,aAAa,CAAC,EAAE,MAAM,EAAE,GACvB,CAAC,EAAE,CAGL;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,QAAQ,CAKhE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAMlD"}
|
package/dist/provider.js
CHANGED
|
@@ -27,6 +27,7 @@ import { bashTool } from "./tools/builtin/bash.js";
|
|
|
27
27
|
import { createEditTool } from "./tools/builtin/edit.js";
|
|
28
28
|
import { globTool } from "./tools/builtin/glob.js";
|
|
29
29
|
import { grepTool } from "./tools/builtin/grep.js";
|
|
30
|
+
import { createMultiEditTool } from "./tools/builtin/multi_edit.js";
|
|
30
31
|
import { createReadTool } from "./tools/builtin/read.js";
|
|
31
32
|
import { createSkillViewTool } from "./tools/builtin/skill_view.js";
|
|
32
33
|
import { createSkillWriteTool } from "./tools/builtin/skill_write.js";
|
|
@@ -96,6 +97,10 @@ export async function* maestroProvider(opts) {
|
|
|
96
97
|
tools.register(createReadTool({ tracker: fileTracker }));
|
|
97
98
|
tools.register(createWriteTool({ tracker: fileTracker }));
|
|
98
99
|
tools.register(createEditTool({ tracker: fileTracker }));
|
|
100
|
+
// MultiEdit: same Read-before-Edit gate as Edit, but batches N replacements
|
|
101
|
+
// atomically in a single pass — halves round-trips for the "fix many spots
|
|
102
|
+
// in one file" refactor.
|
|
103
|
+
tools.register(createMultiEditTool({ tracker: fileTracker }));
|
|
99
104
|
tools.register(globTool);
|
|
100
105
|
tools.register(grepTool);
|
|
101
106
|
tools.register(webFetchTool);
|
package/dist/provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,9 +19,18 @@ import type { ToolHandler } from "../../tools/registry.js";
|
|
|
19
19
|
* for both). Running two in parallel would race the API rate limits + the
|
|
20
20
|
* shared file-state tracker registry.
|
|
21
21
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
22
|
+
* Schema parity (v0.1.9):
|
|
23
|
+
* - `description` is accepted (3-5 word label). Surfaces to logs / UI;
|
|
24
|
+
* execution doesn't depend on it. The earlier "advisor: don't expose
|
|
25
|
+
* description" call was reversed for claude-SDK parity — the field is
|
|
26
|
+
* part of the model's pretrained Agent-call shape and dropping it
|
|
27
|
+
* just adds friction. We still derive an internal log label from the
|
|
28
|
+
* prompt when the model omits it.
|
|
29
|
+
* - `model` (override) and `isolation` / `run_in_background` (claude-SDK
|
|
30
|
+
* extras) remain deliberately absent. The first invites the model to
|
|
31
|
+
* downgrade itself to "save cost" and miss things; the second two
|
|
32
|
+
* need worktree + process-registry plumbing that hasn't paid for
|
|
33
|
+
* itself yet. Reconsider if real workloads ask for them.
|
|
25
34
|
*/
|
|
26
35
|
export interface AgentToolFactoryOptions {
|
|
27
36
|
/** Parent context the sub-agent inherits from. The runner uses these to
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAkC,MAAM,oBAAoB,CAAC;AAC7F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAkC,MAAM,oBAAoB,CAAC;AAC7F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,MAAM,WAAW,uBAAuB;IACtC;;uEAEmE;IACnE,MAAM,EAAE,IAAI,CACV,kBAAkB,EAChB,iBAAiB,GACjB,oBAAoB,GACpB,aAAa,GACb,cAAc,GACd,mBAAmB,GACnB,QAAQ,CACX,CAAC;CACH;AAID,wBAAgB,eAAe,CAAC,IAAI,EAAE,uBAAuB,GAAG,WAAW,CAwF1E"}
|
|
@@ -14,6 +14,12 @@ export function createAgentTool(opts) {
|
|
|
14
14
|
input_schema: {
|
|
15
15
|
type: "object",
|
|
16
16
|
properties: {
|
|
17
|
+
description: {
|
|
18
|
+
type: "string",
|
|
19
|
+
description: "3-5 word label for the delegated task. Surfaces to logs and any " +
|
|
20
|
+
"permission UI. Accepted for claude-SDK parity — execution doesn't " +
|
|
21
|
+
"depend on it. If omitted, an internal label is derived from `prompt`.",
|
|
22
|
+
},
|
|
17
23
|
subagent_type: {
|
|
18
24
|
type: "string",
|
|
19
25
|
description: "Sub-agent role. 'general' = full builtin toolkit. 'explore' = read-only " +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/tools/builtin/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,WAAW,EAAqB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/tools/builtin/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,WAAW,EAAqB,MAAM,oBAAoB,CAAC;AAmD7F,MAAM,WAAW,GAAG,IAAI,GAAG,CAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AAElE,MAAM,UAAU,eAAe,CAAC,IAA6B;IAC3D,OAAO;QACL,YAAY,EAAE,KAAK;QACnB,MAAM,EAAE;YACN,IAAI,EAAE,OAAO;YACb,WAAW,EACT,gFAAgF;gBAChF,uFAAuF;gBACvF,+FAA+F;gBAC/F,uEAAuE;gBACvE,sFAAsF;gBACtF,gFAAgF;YAClF,YAAY,EAAE;gBACZ,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,WAAW,EACT,kEAAkE;4BAClE,oEAAoE;4BACpE,uEAAuE;qBAC1E;oBACD,aAAa,EAAE;wBACb,IAAI,EAAE,QAAQ;wBACd,WAAW,EACT,0EAA0E;4BAC1E,+DAA+D;qBAClE;oBACD,MAAM,EAAE;wBACN,IAAI,EAAE,QAAQ;wBACd,WAAW,EACT,8EAA8E;4BAC9E,4EAA4E;qBAC/E;iBACF;gBACD,QAAQ,EAAE,CAAC,eAAe,EAAE,QAAQ,CAAC;aACtC;SACF;QACD,KAAK,CAAC,OAAO,CAAC,KAAK;YACjB,MAAM,eAAe,GAAG,KAAK,CAAC,aAAa,CAAC;YAC5C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC5B,IACE,OAAO,eAAe,KAAK,QAAQ;gBACnC,CAAC,WAAW,CAAC,GAAG,CAAC,eAA+B,CAAC,EACjD,CAAC;gBACD,OAAO,IAAI,CAAC,SAAS,CAAC;oBACpB,KAAK,EAAE,uCAAuC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,eAAe,GAAG;iBAC7G,CAAC,CAAC;YACL,CAAC;YACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7D,OAAO,IAAI,CAAC,SAAS,CAAC;oBACpB,KAAK,EAAE,0CAA0C;iBAClD,CAAC,CAAC;YACL,CAAC;YACD,MAAM,YAAY,GAAG,eAA+B,CAAC;YAErD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;gBAC/B,YAAY;gBACZ,MAAM;gBACN,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe;gBAC5C,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB;gBAClD,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;gBACpC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/E,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB;oBAC/B,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE;oBACtD,CAAC,CAAC,EAAE,CAAC;gBACP,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;aAC3B,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,+DAA+D;gBAC/D,uDAAuD;gBACvD,OAAO,IAAI,CAAC,SAAS,CAAC;oBACpB,KAAK,EAAE,0DAA0D;oBACjE,YAAY,EAAE,MAAM,CAAC,YAAY;iBAClC,CAAC,CAAC;YACL,CAAC;YAED,iEAAiE;YACjE,iEAAiE;YACjE,kEAAkE;YAClE,gEAAgE;YAChE,MAAM,MAAM,GACV,gBAAgB,YAAY,eAAe,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM;gBAChF,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,SAAS,MAAM,CAAC,KAAK,CAAC,YAAY,MAAM,CAAC;YACtE,OAAO,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,EAAE,CAAC;QACnC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -3,16 +3,46 @@ import type { ToolHandler } from "../../tools/registry.js";
|
|
|
3
3
|
* Bash tool — built-in subprocess executor.
|
|
4
4
|
*
|
|
5
5
|
* Minimal: shell out, capture stdout/stderr, enforce a wall-clock timeout
|
|
6
|
-
* (30s default, model-overridable up to 10min) and
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* (30s default, model-overridable up to 10min) and an output cap per stream
|
|
7
|
+
* (50KB default, model-overridable up to 100KB). Not a permission-gated
|
|
8
|
+
* execution layer — hosts that need one should register an MCP terminal
|
|
9
|
+
* tool (or replace this with their own adapter via
|
|
9
10
|
* `ToolRegistry.register`) so subprocess calls flow through the host's
|
|
10
11
|
* existing permission system instead of an unguarded `spawn`.
|
|
11
12
|
*
|
|
13
|
+
* Truncation policy (NEW in v0.1.9):
|
|
14
|
+
* When a stream exceeds the cap we keep BOTH the head (first half) AND the
|
|
15
|
+
* tail (last half), with a `[truncated N bytes]` marker between them.
|
|
16
|
+
* Previous behaviour kept only the head and destroyed the stream — which
|
|
17
|
+
* lost the bottom of `bun install` / `pytest` / `cargo build` output where
|
|
18
|
+
* the actual error message lives. The ring buffer below keeps the cap
|
|
19
|
+
* bounded (head_cap + tail_cap = max) while letting unlimited bytes flow
|
|
20
|
+
* through.
|
|
21
|
+
*
|
|
12
22
|
* The `description` input field is accepted for claude-SDK parity. We don't
|
|
13
23
|
* store it anywhere — its presence in the schema is what matters: the model's
|
|
14
24
|
* pretrained instinct to emit a short rationale per Bash call survives the
|
|
15
25
|
* agent switch, which is what permission UIs / audit logs want to render.
|
|
16
26
|
*/
|
|
17
27
|
export declare const bashTool: ToolHandler;
|
|
28
|
+
/**
|
|
29
|
+
* Two-ended output buffer that keeps the first `headCap` bytes and the last
|
|
30
|
+
* `tailCap` bytes of an unbounded stream. Bytes between those two windows
|
|
31
|
+
* are counted (so we can report `truncated N bytes`) but not stored.
|
|
32
|
+
*
|
|
33
|
+
* Total bytes resident in memory are bounded by `cap` regardless of how
|
|
34
|
+
* much stream data flows through. The buffer accepts incremental `append`
|
|
35
|
+
* calls (matching the `data` event shape of a Node readable stream).
|
|
36
|
+
*/
|
|
37
|
+
interface OutputRing {
|
|
38
|
+
append(text: string): void;
|
|
39
|
+
render(): string;
|
|
40
|
+
truncated(): boolean;
|
|
41
|
+
}
|
|
42
|
+
export declare function createOutputRing(cap: number): OutputRing;
|
|
43
|
+
export declare const __BASH_MAX_OUTPUT_DEFAULT = 50000;
|
|
44
|
+
export declare const __BASH_MAX_OUTPUT_HARD = 100000;
|
|
45
|
+
export declare const __BASH_TIMEOUT_MS = 30000;
|
|
46
|
+
export declare const __BASH_TIMEOUT_MAX_MS: number;
|
|
47
|
+
export {};
|
|
18
48
|
//# 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;
|
|
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;AAsBpD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,QAAQ,EAAE,WAiHtB,CAAC;AAEF;;;;;;;;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"}
|
|
@@ -6,17 +6,35 @@ const BASH_TIMEOUT_MS = 30_000;
|
|
|
6
6
|
/** Hard ceiling on caller-supplied `timeout`. 10 minutes matches claude SDK's
|
|
7
7
|
* documented cap and is plenty for `npm install` / `bun install` / test runs. */
|
|
8
8
|
const BASH_TIMEOUT_MAX_MS = 10 * 60_000;
|
|
9
|
-
|
|
9
|
+
/** Default output cap per stream (stdout & stderr each). Up from v0.1.8's
|
|
10
|
+
* 16KB so ordinary `npm install` / build logs fit in one shot. Most real
|
|
11
|
+
* installs land between 20–35KB, so 50KB covers ~90% of cases without
|
|
12
|
+
* truncation. */
|
|
13
|
+
const BASH_MAX_OUTPUT_DEFAULT = 50_000;
|
|
14
|
+
/** Absolute ceiling on caller-supplied `max_output_bytes`. 100KB is enough
|
|
15
|
+
* for any reasonable build log; pathological output past this point should
|
|
16
|
+
* be redirected to a file and Read'd in slices anyway. */
|
|
17
|
+
const BASH_MAX_OUTPUT_HARD = 100_000;
|
|
10
18
|
/**
|
|
11
19
|
* Bash tool — built-in subprocess executor.
|
|
12
20
|
*
|
|
13
21
|
* Minimal: shell out, capture stdout/stderr, enforce a wall-clock timeout
|
|
14
|
-
* (30s default, model-overridable up to 10min) and
|
|
15
|
-
*
|
|
16
|
-
*
|
|
22
|
+
* (30s default, model-overridable up to 10min) and an output cap per stream
|
|
23
|
+
* (50KB default, model-overridable up to 100KB). Not a permission-gated
|
|
24
|
+
* execution layer — hosts that need one should register an MCP terminal
|
|
25
|
+
* tool (or replace this with their own adapter via
|
|
17
26
|
* `ToolRegistry.register`) so subprocess calls flow through the host's
|
|
18
27
|
* existing permission system instead of an unguarded `spawn`.
|
|
19
28
|
*
|
|
29
|
+
* Truncation policy (NEW in v0.1.9):
|
|
30
|
+
* When a stream exceeds the cap we keep BOTH the head (first half) AND the
|
|
31
|
+
* tail (last half), with a `[truncated N bytes]` marker between them.
|
|
32
|
+
* Previous behaviour kept only the head and destroyed the stream — which
|
|
33
|
+
* lost the bottom of `bun install` / `pytest` / `cargo build` output where
|
|
34
|
+
* the actual error message lives. The ring buffer below keeps the cap
|
|
35
|
+
* bounded (head_cap + tail_cap = max) while letting unlimited bytes flow
|
|
36
|
+
* through.
|
|
37
|
+
*
|
|
20
38
|
* The `description` input field is accepted for claude-SDK parity. We don't
|
|
21
39
|
* store it anywhere — its presence in the schema is what matters: the model's
|
|
22
40
|
* pretrained instinct to emit a short rationale per Bash call survives the
|
|
@@ -26,8 +44,11 @@ export const bashTool = {
|
|
|
26
44
|
schema: {
|
|
27
45
|
name: "Bash",
|
|
28
46
|
description: "Execute a bash command and return stdout/stderr. Default 30s timeout " +
|
|
29
|
-
"(override via `timeout`, max 10min).
|
|
30
|
-
"
|
|
47
|
+
"(override via `timeout`, max 10min). 50KB output cap per stream by default " +
|
|
48
|
+
"(override via `max_output_bytes`, max 100KB). When a stream exceeds the " +
|
|
49
|
+
"cap both head and tail are preserved with a `[truncated N bytes]` marker " +
|
|
50
|
+
"between them — keeps the trailing error/summary visible. Optional " +
|
|
51
|
+
"`description` is recorded for audit/UI and otherwise ignored.",
|
|
31
52
|
input_schema: {
|
|
32
53
|
type: "object",
|
|
33
54
|
properties: {
|
|
@@ -47,6 +68,13 @@ export const bashTool = {
|
|
|
47
68
|
"Clamped to a hard ceiling of 600000 (10min). Use a higher value " +
|
|
48
69
|
"for slow tests, installs, or builds.",
|
|
49
70
|
},
|
|
71
|
+
max_output_bytes: {
|
|
72
|
+
type: "number",
|
|
73
|
+
description: "Per-stream output cap in bytes. Defaults to 50000 (50KB). Clamped " +
|
|
74
|
+
"to a hard ceiling of 100000 (100KB). Exceeding bytes are dropped " +
|
|
75
|
+
"from the middle — head and tail are preserved with a " +
|
|
76
|
+
"`[truncated N bytes]` marker between them.",
|
|
77
|
+
},
|
|
50
78
|
cwd: {
|
|
51
79
|
type: "string",
|
|
52
80
|
description: "Working directory (optional).",
|
|
@@ -67,51 +95,42 @@ export const bashTool = {
|
|
|
67
95
|
const timeoutMs = typeof rawTimeout === "number" && Number.isFinite(rawTimeout) && rawTimeout > 0
|
|
68
96
|
? Math.min(Math.floor(rawTimeout), BASH_TIMEOUT_MAX_MS)
|
|
69
97
|
: BASH_TIMEOUT_MS;
|
|
98
|
+
// Same shape for the output cap. The model often picks an explicit value
|
|
99
|
+
// when it knows the command will be noisy (`bun install`, `pytest -v`),
|
|
100
|
+
// and we want to honour that without giving away an unbounded buffer.
|
|
101
|
+
const rawMaxOutput = input.max_output_bytes;
|
|
102
|
+
const maxOutputBytes = typeof rawMaxOutput === "number" && Number.isFinite(rawMaxOutput) && rawMaxOutput > 0
|
|
103
|
+
? Math.min(Math.floor(rawMaxOutput), BASH_MAX_OUTPUT_HARD)
|
|
104
|
+
: BASH_MAX_OUTPUT_DEFAULT;
|
|
105
|
+
const stdoutRing = createOutputRing(maxOutputBytes);
|
|
106
|
+
const stderrRing = createOutputRing(maxOutputBytes);
|
|
70
107
|
return new Promise((resolve) => {
|
|
71
108
|
const child = spawn("bash", ["-c", command], {
|
|
72
109
|
...(cwd ? { cwd } : {}),
|
|
73
110
|
env: process.env,
|
|
74
111
|
});
|
|
75
|
-
let stdout = "";
|
|
76
|
-
let stderr = "";
|
|
77
|
-
let truncated = false;
|
|
78
112
|
const timer = setTimeout(() => {
|
|
79
113
|
child.kill("SIGKILL");
|
|
80
114
|
resolve(JSON.stringify({
|
|
81
115
|
error: `timeout after ${timeoutMs}ms`,
|
|
82
|
-
stdout,
|
|
83
|
-
stderr,
|
|
116
|
+
stdout: stdoutRing.render(),
|
|
117
|
+
stderr: stderrRing.render(),
|
|
118
|
+
...truncatedFlag(stdoutRing, stderrRing),
|
|
84
119
|
}));
|
|
85
120
|
}, timeoutMs);
|
|
86
121
|
child.stdout?.on("data", (chunk) => {
|
|
87
|
-
|
|
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
|
-
}
|
|
122
|
+
stdoutRing.append(chunk.toString("utf-8"));
|
|
96
123
|
});
|
|
97
124
|
child.stderr?.on("data", (chunk) => {
|
|
98
|
-
|
|
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
|
-
}
|
|
125
|
+
stderrRing.append(chunk.toString("utf-8"));
|
|
107
126
|
});
|
|
108
127
|
child.on("close", (code) => {
|
|
109
128
|
clearTimeout(timer);
|
|
110
129
|
resolve(JSON.stringify({
|
|
111
130
|
exitCode: code,
|
|
112
|
-
stdout,
|
|
113
|
-
stderr,
|
|
114
|
-
...(
|
|
131
|
+
stdout: stdoutRing.render(),
|
|
132
|
+
stderr: stderrRing.render(),
|
|
133
|
+
...truncatedFlag(stdoutRing, stderrRing),
|
|
115
134
|
}));
|
|
116
135
|
});
|
|
117
136
|
child.on("error", (err) => {
|
|
@@ -121,4 +140,77 @@ export const bashTool = {
|
|
|
121
140
|
});
|
|
122
141
|
},
|
|
123
142
|
};
|
|
143
|
+
export function createOutputRing(cap) {
|
|
144
|
+
if (cap <= 0) {
|
|
145
|
+
return {
|
|
146
|
+
append() { },
|
|
147
|
+
render: () => "",
|
|
148
|
+
truncated: () => false,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
// Split the cap roughly in half. With an odd cap the head gets the extra
|
|
152
|
+
// byte — head context (command echo, startup banner) tends to be slightly
|
|
153
|
+
// more diagnostic than the tail of "Done." messages.
|
|
154
|
+
const headCap = Math.ceil(cap / 2);
|
|
155
|
+
const tailCap = cap - headCap;
|
|
156
|
+
let head = "";
|
|
157
|
+
// The tail is maintained as a sliding window — we keep at most `tailCap`
|
|
158
|
+
// bytes of the most-recent output regardless of how many bytes streamed
|
|
159
|
+
// past. `dropped` tracks the count of middle bytes we ejected so the
|
|
160
|
+
// truncation marker can quote a real number.
|
|
161
|
+
let tail = "";
|
|
162
|
+
let dropped = 0;
|
|
163
|
+
// total bytes observed — sum of head, tail, and dropped. Useful for
|
|
164
|
+
// future telemetry; not exposed yet.
|
|
165
|
+
let total = 0;
|
|
166
|
+
return {
|
|
167
|
+
append(text) {
|
|
168
|
+
if (text.length === 0)
|
|
169
|
+
return;
|
|
170
|
+
total += text.length;
|
|
171
|
+
// Phase 1: while the head buffer has room, fill it first.
|
|
172
|
+
if (head.length < headCap) {
|
|
173
|
+
const take = Math.min(text.length, headCap - head.length);
|
|
174
|
+
head += text.slice(0, take);
|
|
175
|
+
text = text.slice(take);
|
|
176
|
+
if (text.length === 0)
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
// Phase 2: tail-only path. Append, then evict the oldest bytes if
|
|
180
|
+
// we exceed `tailCap`. Bytes evicted from the tail count toward
|
|
181
|
+
// `dropped` because they passed through but are no longer visible.
|
|
182
|
+
if (tailCap === 0) {
|
|
183
|
+
// Degenerate: head took the whole cap. Drop everything after.
|
|
184
|
+
dropped += text.length;
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
tail += text;
|
|
188
|
+
if (tail.length > tailCap) {
|
|
189
|
+
const over = tail.length - tailCap;
|
|
190
|
+
dropped += over;
|
|
191
|
+
tail = tail.slice(over);
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
render() {
|
|
195
|
+
if (dropped === 0)
|
|
196
|
+
return head + tail;
|
|
197
|
+
// The middle marker is emitted on its own line so the model — and any
|
|
198
|
+
// human reading the trace — can see where the gap is. We keep the
|
|
199
|
+
// marker terse (no ANSI, no decoration) so it survives downstream
|
|
200
|
+
// serialisation.
|
|
201
|
+
return `${head}\n...[truncated ${dropped} bytes]...\n${tail}`;
|
|
202
|
+
},
|
|
203
|
+
truncated: () => dropped > 0,
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
function truncatedFlag(stdout, stderr) {
|
|
207
|
+
if (stdout.truncated() || stderr.truncated())
|
|
208
|
+
return { truncated: true };
|
|
209
|
+
return {};
|
|
210
|
+
}
|
|
211
|
+
// Internal exports for tests.
|
|
212
|
+
export const __BASH_MAX_OUTPUT_DEFAULT = BASH_MAX_OUTPUT_DEFAULT;
|
|
213
|
+
export const __BASH_MAX_OUTPUT_HARD = BASH_MAX_OUTPUT_HARD;
|
|
214
|
+
export const __BASH_TIMEOUT_MS = BASH_TIMEOUT_MS;
|
|
215
|
+
export const __BASH_TIMEOUT_MAX_MS = BASH_TIMEOUT_MAX_MS;
|
|
124
216
|
//# sourceMappingURL=bash.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bash.js","sourceRoot":"","sources":["../../../src/tools/builtin/bash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAG3C;;uDAEuD;AACvD,MAAM,eAAe,GAAG,MAAM,CAAC;AAE/B;kFACkF;AAClF,MAAM,mBAAmB,GAAG,EAAE,GAAG,MAAM,CAAC;AAExC,MAAM,
|
|
1
|
+
{"version":3,"file":"bash.js","sourceRoot":"","sources":["../../../src/tools/builtin/bash.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
|
-
* `**\/`
|
|
9
|
-
* `**`
|
|
10
|
-
* `*`
|
|
11
|
-
* `?`
|
|
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,
|
|
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,WAsKtB,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"}
|
|
@@ -41,19 +41,21 @@ export const globTool = {
|
|
|
41
41
|
schema: {
|
|
42
42
|
name: "Glob",
|
|
43
43
|
description: "Fast file pattern matching. Supports `*` (within-segment wildcard), " +
|
|
44
|
-
"`**` (cross-segment wildcard), `?` (one char)
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"
|
|
44
|
+
"`**` (cross-segment wildcard), `?` (one char), `[abc]` / `[a-z]` / `[!abc]` " +
|
|
45
|
+
"character classes, and `{a,b}` brace expansion (nestable). Returns " +
|
|
46
|
+
"absolute paths sorted by modification time descending — recently-touched " +
|
|
47
|
+
"files first. Does NOT skip dotfiles or build dirs; the model's pattern is " +
|
|
48
|
+
"authoritative. Caps results at 10,000 entries (truncates with a note when exceeded).",
|
|
48
49
|
input_schema: {
|
|
49
50
|
type: "object",
|
|
50
51
|
properties: {
|
|
51
52
|
pattern: {
|
|
52
53
|
type: "string",
|
|
53
|
-
description: "Glob pattern. Examples: `**/*.ts`, `src/**/*.tsx`,
|
|
54
|
-
"`config/*.json`. May also embed
|
|
55
|
-
"`/abs/path/**/*.ts`) — in that case
|
|
56
|
-
"the fixed prefix and the trailing
|
|
54
|
+
description: "Glob pattern. Examples: `**/*.ts`, `src/**/*.{js,ts,tsx}`, " +
|
|
55
|
+
"`file[0-9].log`, `README.md`, `config/*.json`. May also embed " +
|
|
56
|
+
"the absolute root (e.g. `/abs/path/**/*.ts`) — in that case " +
|
|
57
|
+
"`path` is auto-derived from the fixed prefix and the trailing " +
|
|
58
|
+
"portion becomes the matcher.",
|
|
57
59
|
},
|
|
58
60
|
path: {
|
|
59
61
|
type: "string",
|
|
@@ -203,15 +205,23 @@ export const globTool = {
|
|
|
203
205
|
* path (anchored at both ends).
|
|
204
206
|
*
|
|
205
207
|
* Handled tokens:
|
|
206
|
-
* `**\/`
|
|
207
|
-
* `**`
|
|
208
|
-
* `*`
|
|
209
|
-
* `?`
|
|
208
|
+
* `**\/` → `(?:.*\/)?` — zero or more path segments (greedy across `/`)
|
|
209
|
+
* `**` → `.*` — anything including `/`
|
|
210
|
+
* `*` → `[^/]*` — anything except `/` within one segment
|
|
211
|
+
* `?` → `[^/]` — single char within one segment
|
|
212
|
+
* `[abc]` → `[abc]` — character class (POSIX `[!abc]` → `[^abc]`)
|
|
213
|
+
* `{a,b}` → `(?:a|b)` — brace expansion (nestable, body recursively
|
|
214
|
+
* compiled so wildcards / classes inside each
|
|
215
|
+
* alternative still work)
|
|
210
216
|
*
|
|
211
217
|
* Other regex metacharacters are escaped so literals like `.` in `foo.ts`
|
|
212
218
|
* don't accidentally turn into "any char".
|
|
213
219
|
*/
|
|
214
220
|
export function compileGlob(pattern) {
|
|
221
|
+
return new RegExp(`^${compileGlobBody(pattern)}$`);
|
|
222
|
+
}
|
|
223
|
+
/** Build the regex body (no anchors) so brace alternatives can recurse. */
|
|
224
|
+
function compileGlobBody(pattern) {
|
|
215
225
|
let s = "";
|
|
216
226
|
let i = 0;
|
|
217
227
|
while (i < pattern.length) {
|
|
@@ -237,6 +247,41 @@ export function compileGlob(pattern) {
|
|
|
237
247
|
s += "[^/]";
|
|
238
248
|
i += 1;
|
|
239
249
|
}
|
|
250
|
+
else if (c === "[") {
|
|
251
|
+
// Character class `[abc]`, `[a-z]`, `[!abc]`. Find the closing `]`;
|
|
252
|
+
// if missing, treat the `[` as a literal (matches bash defensively).
|
|
253
|
+
const end = pattern.indexOf("]", i + 1);
|
|
254
|
+
if (end === -1) {
|
|
255
|
+
s += "\\[";
|
|
256
|
+
i += 1;
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
let cls = pattern.slice(i + 1, end);
|
|
260
|
+
if (cls.startsWith("!"))
|
|
261
|
+
cls = `^${cls.slice(1)}`; // POSIX negation
|
|
262
|
+
s += `[${cls}]`;
|
|
263
|
+
i = end + 1;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
else if (c === "{") {
|
|
267
|
+
// Brace expansion `{a,b,c}`. Find the matching `}` accounting for
|
|
268
|
+
// nesting (`{a,{b,c}}`). On unbalanced braces we treat the `{` as a
|
|
269
|
+
// literal — bash does the same.
|
|
270
|
+
const close = matchingBraceClose(pattern, i);
|
|
271
|
+
if (close === -1) {
|
|
272
|
+
s += "\\{";
|
|
273
|
+
i += 1;
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
const body = pattern.slice(i + 1, close);
|
|
277
|
+
const parts = splitTopLevel(body, ",");
|
|
278
|
+
// Recursively compile each alternative so a brace can carry full
|
|
279
|
+
// glob syntax inside (`{*.ts,src/**/*.tsx}` works).
|
|
280
|
+
const alts = parts.map((p) => compileGlobBody(p));
|
|
281
|
+
s += `(?:${alts.join("|")})`;
|
|
282
|
+
i = close + 1;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
240
285
|
else if (REGEX_META.includes(c)) {
|
|
241
286
|
s += `\\${c}`;
|
|
242
287
|
i += 1;
|
|
@@ -246,9 +291,50 @@ export function compileGlob(pattern) {
|
|
|
246
291
|
i += 1;
|
|
247
292
|
}
|
|
248
293
|
}
|
|
249
|
-
return
|
|
294
|
+
return s;
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Locate the `}` that closes the `{` at `openIdx`, respecting nesting.
|
|
298
|
+
* Returns -1 if the brace is unbalanced (caller falls back to literal).
|
|
299
|
+
*/
|
|
300
|
+
function matchingBraceClose(pattern, openIdx) {
|
|
301
|
+
let depth = 1;
|
|
302
|
+
for (let j = openIdx + 1; j < pattern.length; j++) {
|
|
303
|
+
const ch = pattern[j];
|
|
304
|
+
if (ch === "{")
|
|
305
|
+
depth++;
|
|
306
|
+
else if (ch === "}") {
|
|
307
|
+
depth--;
|
|
308
|
+
if (depth === 0)
|
|
309
|
+
return j;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
return -1;
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Split `body` by `sep` only when the separator appears at the top level
|
|
316
|
+
* (depth-0 with respect to `{}` nesting). `{a,{b,c}}` splits into
|
|
317
|
+
* `["a", "{b,c}"]` — not `["a", "{b", "c}"]`.
|
|
318
|
+
*/
|
|
319
|
+
function splitTopLevel(body, sep) {
|
|
320
|
+
const parts = [];
|
|
321
|
+
let depth = 0;
|
|
322
|
+
let start = 0;
|
|
323
|
+
for (let k = 0; k < body.length; k++) {
|
|
324
|
+
const ch = body[k];
|
|
325
|
+
if (ch === "{")
|
|
326
|
+
depth++;
|
|
327
|
+
else if (ch === "}")
|
|
328
|
+
depth--;
|
|
329
|
+
else if (ch === sep && depth === 0) {
|
|
330
|
+
parts.push(body.slice(start, k));
|
|
331
|
+
start = k + 1;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
parts.push(body.slice(start));
|
|
335
|
+
return parts;
|
|
250
336
|
}
|
|
251
|
-
const REGEX_META = ".+^$()
|
|
337
|
+
const REGEX_META = ".+^$()|\\";
|
|
252
338
|
/**
|
|
253
339
|
* Split an absolute glob pattern into (root, relativePattern).
|
|
254
340
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glob.js","sourceRoot":"","sources":["../../../src/tools/builtin/glob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAc,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAG5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,8EAA8E;AAC9E,MAAM,WAAW,GAAG,MAAM,CAAC;AAE3B;+BAC+B;AAC/B,MAAM,eAAe,GAAG,MAAM,CAAC;AAE/B,MAAM,CAAC,MAAM,QAAQ,GAAgB;IACnC,sEAAsE;IACtE,oCAAoC;IACpC,YAAY,EAAE,IAAI;IAClB,MAAM,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,WAAW,EACT,sEAAsE;YACtE,
|
|
1
|
+
{"version":3,"file":"glob.js","sourceRoot":"","sources":["../../../src/tools/builtin/glob.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { FileStateTracker } from "../../tools/file-state.js";
|
|
2
|
+
import type { ToolHandler } from "../../tools/registry.js";
|
|
3
|
+
export interface MultiEditToolOptions {
|
|
4
|
+
/**
|
|
5
|
+
* Per-session file-state tracker. When provided, MultiEdit enforces the
|
|
6
|
+
* Read-before-Edit invariant: the path must have been Read in this session
|
|
7
|
+
* AND its mtime/size must still match the recorded values.
|
|
8
|
+
*/
|
|
9
|
+
tracker?: FileStateTracker;
|
|
10
|
+
}
|
|
11
|
+
export declare function createMultiEditTool(opts?: MultiEditToolOptions): ToolHandler;
|
|
12
|
+
/** Backwards-compatible singleton (no tracker — Read-before-Edit gate off). */
|
|
13
|
+
export declare const multiEditTool: ToolHandler;
|
|
14
|
+
export declare const __MAX_FILE_BYTES: number;
|
|
15
|
+
export declare const __MAX_EDITS = 64;
|
|
16
|
+
//# sourceMappingURL=multi_edit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi_edit.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/multi_edit.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAqDpD,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B;AAED,wBAAgB,mBAAmB,CAAC,IAAI,GAAE,oBAAyB,GAAG,WAAW,CAsNhF;AAED,+EAA+E;AAC/E,eAAO,MAAM,aAAa,EAAE,WAAmC,CAAC;AA8BhE,eAAO,MAAM,gBAAgB,QAAiB,CAAC;AAC/C,eAAO,MAAM,WAAW,KAAY,CAAC"}
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
import { existsSync, readFileSync, statSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { isAbsolute } from "node:path";
|
|
3
|
+
import { countOccurrences } from "../../tools/builtin/edit.js";
|
|
4
|
+
/**
|
|
5
|
+
* MultiEdit builtin — claude SDK `MultiEdit` tool parity for maestro.
|
|
6
|
+
*
|
|
7
|
+
* Applies an ordered list of (old_string, new_string) replacements to a
|
|
8
|
+
* single file **atomically**. The contract that makes this tool valuable:
|
|
9
|
+
*
|
|
10
|
+
* 1. Read the file once.
|
|
11
|
+
* 2. Apply edits sequentially to the in-memory buffer — each edit sees
|
|
12
|
+
* the state left by the previous one (so a follow-up edit can target
|
|
13
|
+
* text inserted by the previous step).
|
|
14
|
+
* 3. If ANY edit fails (`old_string` not found, ambiguous match without
|
|
15
|
+
* `replace_all`, no-op replacement) we abort BEFORE writing. The
|
|
16
|
+
* file on disk is left untouched. The model then sees a structured
|
|
17
|
+
* `failedAt: <index>` payload it can react to without having to
|
|
18
|
+
* reason about which earlier edits did or didn't land.
|
|
19
|
+
* 4. Only after all edits succeed do we write once.
|
|
20
|
+
*
|
|
21
|
+
* Why a separate tool (rather than have the model call `Edit` in a loop):
|
|
22
|
+
*
|
|
23
|
+
* - Halves API round-trips for the common "fix N spots in one file"
|
|
24
|
+
* refactor — the model emits one tool call instead of N.
|
|
25
|
+
* - Atomic-by-default eliminates a real class of bug where edit #3 of
|
|
26
|
+
* 5 fails and the file is left with edits 1–2 applied but the model
|
|
27
|
+
* thinks the whole batch is done.
|
|
28
|
+
* - The Read-before-Edit gate fires once for the whole batch instead
|
|
29
|
+
* of forcing a re-Read between each step.
|
|
30
|
+
*
|
|
31
|
+
* Same constraints as Edit:
|
|
32
|
+
* - file_path must be absolute.
|
|
33
|
+
* - File must exist (MultiEdit never creates — use Write for that).
|
|
34
|
+
* - Each edit's `old_string` must occur exactly once in the current
|
|
35
|
+
* buffer unless `replace_all: true` is passed for that edit.
|
|
36
|
+
* - `old_string === new_string` is rejected as a no-op.
|
|
37
|
+
* - 10MB cap on file size (matches Edit / Read).
|
|
38
|
+
*
|
|
39
|
+
* Returns a short summary (`File edited: <path> (N edits, M total replacements)`)
|
|
40
|
+
* followed by a line-numbered preview of the region around the first edit's
|
|
41
|
+
* new_string — same shape Edit returns post-edit, kept consistent so the
|
|
42
|
+
* model's verification instinct transfers.
|
|
43
|
+
*/
|
|
44
|
+
const MAX_FILE_BYTES = 10 * 1024 * 1024; // 10MB — same cap as Read / Edit
|
|
45
|
+
const MAX_EDITS = 64; // ceiling on edits per call; prevents pathological batches
|
|
46
|
+
const PREVIEW_LINES_AROUND = 3;
|
|
47
|
+
export function createMultiEditTool(opts = {}) {
|
|
48
|
+
const { tracker } = opts;
|
|
49
|
+
return {
|
|
50
|
+
schema: {
|
|
51
|
+
name: "MultiEdit",
|
|
52
|
+
description: "Apply multiple find-and-replace edits to a single file atomically. " +
|
|
53
|
+
"Each `edits[i].old_string` is matched against the buffer state left " +
|
|
54
|
+
"by the previous edit, so chained edits can target inserted text. " +
|
|
55
|
+
"If any edit fails (not found, ambiguous, or no-op) the file is left " +
|
|
56
|
+
"untouched and a `failedAt` index is returned. file_path must be " +
|
|
57
|
+
"absolute and the file must already exist (use Write for new files).",
|
|
58
|
+
input_schema: {
|
|
59
|
+
type: "object",
|
|
60
|
+
properties: {
|
|
61
|
+
file_path: {
|
|
62
|
+
type: "string",
|
|
63
|
+
description: "Absolute path to the file. MultiEdit never creates new files.",
|
|
64
|
+
},
|
|
65
|
+
edits: {
|
|
66
|
+
type: "array",
|
|
67
|
+
description: "Ordered list of edits to apply. Capped at 64 entries per call. " +
|
|
68
|
+
"Each edit obeys the same uniqueness contract as the single-Edit tool " +
|
|
69
|
+
"unless its own `replace_all: true` is set.",
|
|
70
|
+
items: {
|
|
71
|
+
type: "object",
|
|
72
|
+
properties: {
|
|
73
|
+
old_string: {
|
|
74
|
+
type: "string",
|
|
75
|
+
description: "Exact text to find in the current buffer. Must be non-empty.",
|
|
76
|
+
},
|
|
77
|
+
new_string: {
|
|
78
|
+
type: "string",
|
|
79
|
+
description: "Replacement text. Must differ from old_string.",
|
|
80
|
+
},
|
|
81
|
+
replace_all: {
|
|
82
|
+
type: "boolean",
|
|
83
|
+
description: "When true, replace every occurrence in the current buffer. " +
|
|
84
|
+
"Default false (unique-match required).",
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
required: ["old_string", "new_string"],
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
required: ["file_path", "edits"],
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
async execute(input) {
|
|
95
|
+
const filePath = typeof input.file_path === "string" ? input.file_path : "";
|
|
96
|
+
if (!filePath) {
|
|
97
|
+
return JSON.stringify({ error: "MultiEdit: missing 'file_path' argument" });
|
|
98
|
+
}
|
|
99
|
+
if (!isAbsolute(filePath)) {
|
|
100
|
+
return JSON.stringify({
|
|
101
|
+
error: `MultiEdit: file_path must be absolute, got '${filePath}'`,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
// Read-before-Edit gate. Fires once for the whole batch.
|
|
105
|
+
if (tracker) {
|
|
106
|
+
const gateErr = tracker.checkBeforeMutate(filePath, "MultiEdit");
|
|
107
|
+
if (gateErr) {
|
|
108
|
+
return JSON.stringify({ error: gateErr });
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
const rawEdits = input.edits;
|
|
112
|
+
if (!Array.isArray(rawEdits) || rawEdits.length === 0) {
|
|
113
|
+
return JSON.stringify({
|
|
114
|
+
error: "MultiEdit: 'edits' must be a non-empty array",
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
if (rawEdits.length > MAX_EDITS) {
|
|
118
|
+
return JSON.stringify({
|
|
119
|
+
error: `MultiEdit: 'edits' length ${rawEdits.length} exceeds cap of ${MAX_EDITS}. Split into multiple calls.`,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
// Validate every edit up-front so we don't perform a partial dry-run
|
|
123
|
+
// before realising one edit is malformed. The validation block only
|
|
124
|
+
// checks shape — the per-edit `old_string` existence check happens
|
|
125
|
+
// during the apply loop because it depends on prior edits.
|
|
126
|
+
const edits = [];
|
|
127
|
+
for (let i = 0; i < rawEdits.length; i++) {
|
|
128
|
+
const e = rawEdits[i];
|
|
129
|
+
if (e === null || typeof e !== "object" || Array.isArray(e)) {
|
|
130
|
+
return JSON.stringify({
|
|
131
|
+
error: `MultiEdit: edit[${i}] must be an object`,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
const rec = e;
|
|
135
|
+
if (typeof rec.old_string !== "string") {
|
|
136
|
+
return JSON.stringify({
|
|
137
|
+
error: `MultiEdit: edit[${i}].old_string must be a string, got ${typeof rec.old_string}`,
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
if (typeof rec.new_string !== "string") {
|
|
141
|
+
return JSON.stringify({
|
|
142
|
+
error: `MultiEdit: edit[${i}].new_string must be a string, got ${typeof rec.new_string}`,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
if (rec.old_string.length === 0) {
|
|
146
|
+
return JSON.stringify({
|
|
147
|
+
error: `MultiEdit: edit[${i}].old_string must be non-empty`,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
if (rec.old_string === rec.new_string) {
|
|
151
|
+
return JSON.stringify({
|
|
152
|
+
error: `MultiEdit: edit[${i}] is a no-op (old_string === new_string)`,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
edits.push({
|
|
156
|
+
old_string: rec.old_string,
|
|
157
|
+
new_string: rec.new_string,
|
|
158
|
+
replace_all: Boolean(rec.replace_all),
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
if (!existsSync(filePath)) {
|
|
162
|
+
return JSON.stringify({
|
|
163
|
+
error: `MultiEdit: file does not exist: ${filePath}. Use Write to create new files.`,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
let stat;
|
|
167
|
+
try {
|
|
168
|
+
stat = statSync(filePath);
|
|
169
|
+
}
|
|
170
|
+
catch (e) {
|
|
171
|
+
return JSON.stringify({
|
|
172
|
+
error: `MultiEdit: stat failed: ${e instanceof Error ? e.message : String(e)}`,
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
if (stat.isDirectory()) {
|
|
176
|
+
return JSON.stringify({
|
|
177
|
+
error: `MultiEdit: '${filePath}' is a directory, not a file.`,
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
if (stat.size > MAX_FILE_BYTES) {
|
|
181
|
+
return JSON.stringify({
|
|
182
|
+
error: `MultiEdit: file size ${stat.size} exceeds 10MB cap. Use bash sed/awk for large files.`,
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
let raw;
|
|
186
|
+
try {
|
|
187
|
+
raw = readFileSync(filePath, "utf-8");
|
|
188
|
+
}
|
|
189
|
+
catch (e) {
|
|
190
|
+
return JSON.stringify({
|
|
191
|
+
error: `MultiEdit: read failed: ${e instanceof Error ? e.message : String(e)}`,
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
// Apply edits sequentially to an in-memory buffer. Each edit sees the
|
|
195
|
+
// state left by the previous one. Any failure aborts the whole batch —
|
|
196
|
+
// the file on disk is untouched and we return `failedAt: <index>` so
|
|
197
|
+
// the model can pinpoint where the cascade broke.
|
|
198
|
+
let buffer = raw;
|
|
199
|
+
let totalReplacements = 0;
|
|
200
|
+
let firstEditNewString = null;
|
|
201
|
+
for (let i = 0; i < edits.length; i++) {
|
|
202
|
+
const { old_string, new_string, replace_all } = edits[i];
|
|
203
|
+
const occurrences = countOccurrences(buffer, old_string);
|
|
204
|
+
if (occurrences === 0) {
|
|
205
|
+
return JSON.stringify({
|
|
206
|
+
error: `MultiEdit: edit[${i}].old_string not found in current buffer ` +
|
|
207
|
+
"(may have been consumed by an earlier edit, or never present).",
|
|
208
|
+
failedAt: i,
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
if (!replace_all && occurrences > 1) {
|
|
212
|
+
return JSON.stringify({
|
|
213
|
+
error: `MultiEdit: edit[${i}].old_string appears ${occurrences} times. ` +
|
|
214
|
+
"Enlarge old_string for uniqueness, or set replace_all=true on this edit.",
|
|
215
|
+
failedAt: i,
|
|
216
|
+
occurrences,
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
if (replace_all) {
|
|
220
|
+
buffer = buffer.split(old_string).join(new_string);
|
|
221
|
+
totalReplacements += occurrences;
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
const idx = buffer.indexOf(old_string);
|
|
225
|
+
buffer = buffer.slice(0, idx) + new_string + buffer.slice(idx + old_string.length);
|
|
226
|
+
totalReplacements += 1;
|
|
227
|
+
}
|
|
228
|
+
if (firstEditNewString === null && new_string.length > 0) {
|
|
229
|
+
firstEditNewString = new_string;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
try {
|
|
233
|
+
writeFileSync(filePath, buffer, "utf-8");
|
|
234
|
+
}
|
|
235
|
+
catch (e) {
|
|
236
|
+
return JSON.stringify({
|
|
237
|
+
error: `MultiEdit: write failed: ${e instanceof Error ? e.message : String(e)}`,
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
tracker?.forget(filePath);
|
|
241
|
+
const preview = firstEditNewString
|
|
242
|
+
? buildPreview(buffer, firstEditNewString)
|
|
243
|
+
: "[change preview unavailable]";
|
|
244
|
+
const editCount = edits.length;
|
|
245
|
+
return [
|
|
246
|
+
`File edited: ${filePath} (${editCount} edit${editCount === 1 ? "" : "s"}, ` +
|
|
247
|
+
`${totalReplacements} total replacement${totalReplacements === 1 ? "" : "s"})`,
|
|
248
|
+
"",
|
|
249
|
+
preview,
|
|
250
|
+
].join("\n");
|
|
251
|
+
},
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
/** Backwards-compatible singleton (no tracker — Read-before-Edit gate off). */
|
|
255
|
+
export const multiEditTool = createMultiEditTool();
|
|
256
|
+
/**
|
|
257
|
+
* Build a line-numbered preview of the buffer around the first occurrence
|
|
258
|
+
* of `marker`. Same shape as Edit's post-edit preview so the model's
|
|
259
|
+
* verification habit transfers.
|
|
260
|
+
*/
|
|
261
|
+
function buildPreview(buffer, marker) {
|
|
262
|
+
const idx = buffer.indexOf(marker);
|
|
263
|
+
if (idx < 0)
|
|
264
|
+
return "";
|
|
265
|
+
const allLines = buffer.split("\n");
|
|
266
|
+
let acc = 0;
|
|
267
|
+
let changedLine = 0;
|
|
268
|
+
for (let i = 0; i < allLines.length; i++) {
|
|
269
|
+
const next = acc + allLines[i].length + 1; // +1 for the dropped \n
|
|
270
|
+
if (next > idx) {
|
|
271
|
+
changedLine = i;
|
|
272
|
+
break;
|
|
273
|
+
}
|
|
274
|
+
acc = next;
|
|
275
|
+
}
|
|
276
|
+
const start = Math.max(0, changedLine - PREVIEW_LINES_AROUND);
|
|
277
|
+
const end = Math.min(allLines.length, changedLine + PREVIEW_LINES_AROUND + 1);
|
|
278
|
+
return allLines
|
|
279
|
+
.slice(start, end)
|
|
280
|
+
.map((line, i) => `${String(start + i + 1).padStart(6, " ")}\t${line}`)
|
|
281
|
+
.join("\n");
|
|
282
|
+
}
|
|
283
|
+
// Internal exports for tests.
|
|
284
|
+
export const __MAX_FILE_BYTES = MAX_FILE_BYTES;
|
|
285
|
+
export const __MAX_EDITS = MAX_EDITS;
|
|
286
|
+
//# sourceMappingURL=multi_edit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi_edit.js","sourceRoot":"","sources":["../../../src/tools/builtin/multi_edit.ts"],"names":[],"mappings":"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"}
|
|
@@ -78,7 +78,7 @@ export declare class FileStateTracker {
|
|
|
78
78
|
* "file does not exist, use Write to create". Read-before-Mutate is about
|
|
79
79
|
* content drift, not existence.
|
|
80
80
|
*/
|
|
81
|
-
checkBeforeMutate(absPath: string, tool: "Edit" | "Write"): string | null;
|
|
81
|
+
checkBeforeMutate(absPath: string, tool: "Edit" | "Write" | "MultiEdit"): string | null;
|
|
82
82
|
/** Used by tests + diagnostics. Not part of the per-turn contract. */
|
|
83
83
|
has(absPath: string): boolean;
|
|
84
84
|
/** Total number of tracked paths. Diagnostic. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-state.d.ts","sourceRoot":"","sources":["../../src/tools/file-state.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,MAAM,WAAW,cAAc;IAC7B,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAE7D;;;;;OAKG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAI9D;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI7B;;;;;;;;;;;;;;;;;OAiBG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"file-state.d.ts","sourceRoot":"","sources":["../../src/tools/file-state.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,MAAM,WAAW,cAAc;IAC7B,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAE7D;;;;;OAKG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAI9D;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI7B;;;;;;;;;;;;;;;;;OAiBG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,MAAM,GAAG,IAAI;IAiDvF,sEAAsE;IACtE,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI7B,iDAAiD;IACjD,IAAI,IAAI,MAAM;CAGf;AAiBD,+CAA+C;AAC/C,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAOvE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAE5D;AAED,sCAAsC;AACtC,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED,sEAAsE;AACtE,wBAAgB,cAAc,IAAI,MAAM,CAEvC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-state.js","sourceRoot":"","sources":["../../src/tools/file-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AA2C/C;;;;;GAKG;AACH,MAAM,OAAO,gBAAgB;IACV,OAAO,GAAG,IAAI,GAAG,EAA0B,CAAC;IAE7D;;;;;OAKG;IACH,UAAU,CAAC,OAAe,EAAE,KAAa,EAAE,IAAY;QACrD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACjE,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,OAAe;QACpB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,iBAAiB,CAAC,OAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"file-state.js","sourceRoot":"","sources":["../../src/tools/file-state.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "maestro-agent-sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.9",
|
|
4
4
|
"description": "Embeddable, provider-agnostic TypeScript agent SDK — pluggable providers, built-in tools, skills, memory, and MCP.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Yeonwoo Jeong <aadd4020@gmail.com>",
|