@agentick/sandbox 0.4.0 → 0.5.0
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/README.md +67 -11
- package/dist/edit.d.ts +28 -7
- package/dist/edit.d.ts.map +1 -1
- package/dist/edit.js +312 -72
- package/dist/edit.js.map +1 -1
- package/dist/tools.d.ts +7 -2
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +52 -5
- package/dist/tools.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -111,6 +111,14 @@ import { Shell, ReadFile, WriteFile, EditFile } from "@agentick/sandbox";
|
|
|
111
111
|
<ReadFile />
|
|
112
112
|
<MyAgent />
|
|
113
113
|
</Sandbox>
|
|
114
|
+
|
|
115
|
+
// Override descriptions via JSX props
|
|
116
|
+
<Sandbox provider={provider}>
|
|
117
|
+
<Shell description="Run commands. Prefer one-liners. Avoid interactive programs." />
|
|
118
|
+
<EditFile description="Apply surgical edits. Include enough surrounding context to uniquely match." />
|
|
119
|
+
<ReadFile />
|
|
120
|
+
<MyAgent />
|
|
121
|
+
</Sandbox>
|
|
114
122
|
```
|
|
115
123
|
|
|
116
124
|
### Tree Scoping
|
|
@@ -130,24 +138,52 @@ Multiple sandboxes in the same tree work naturally. Each tool accesses its neare
|
|
|
130
138
|
|
|
131
139
|
## Edit Utilities
|
|
132
140
|
|
|
133
|
-
Surgical code editing with 3-level matching that recovers from trailing whitespace, indentation mismatch, and CRLF/LF differences.
|
|
141
|
+
Surgical code editing with 3-level matching that recovers from trailing whitespace, indentation mismatch, and CRLF/LF differences. Supports replace, delete, insert, and range modes.
|
|
134
142
|
|
|
135
143
|
### `applyEdits(source, edits)`
|
|
136
144
|
|
|
137
|
-
Pure transform, no I/O.
|
|
145
|
+
Pure transform, no I/O.
|
|
146
|
+
|
|
147
|
+
**Modes** (detected by field presence, precedence: range > insert > delete > replace):
|
|
148
|
+
|
|
149
|
+
| Mode | Fields | Description |
|
|
150
|
+
| ------------------- | -------------------------- | ------------------------------------------------------------------------- |
|
|
151
|
+
| Replace | `old`, `new` | Find `old`, replace with `new` |
|
|
152
|
+
| Delete | `old`, `delete: true` | Find `old`, remove it (trailing newline auto-consumed for complete lines) |
|
|
153
|
+
| Insert before/after | `old`, `insert`, `content` | Insert `content` relative to anchor `old` |
|
|
154
|
+
| Insert start/end | `insert`, `content` | Prepend/append `content` to file |
|
|
155
|
+
| Range | `from`, `to`, `content` | Replace everything from `from` through `to` (inclusive) |
|
|
156
|
+
|
|
157
|
+
**Matching strategy** per anchor (in order):
|
|
138
158
|
|
|
139
159
|
1. Exact byte match
|
|
140
160
|
2. Line-normalized (trailing whitespace stripped)
|
|
141
|
-
3. Indent-adjusted (leading whitespace baseline stripped)
|
|
161
|
+
3. Indent-adjusted (leading whitespace baseline stripped, replacement re-indented)
|
|
142
162
|
|
|
143
163
|
```typescript
|
|
144
164
|
import { applyEdits } from "@agentick/sandbox";
|
|
145
165
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
166
|
+
// Replace
|
|
167
|
+
applyEdits(source, [{ old: "return 1;", new: "return 2;" }]);
|
|
168
|
+
|
|
169
|
+
// Rename (all occurrences)
|
|
170
|
+
applyEdits(source, [{ old: "oldName", new: "newName", all: true }]);
|
|
171
|
+
|
|
172
|
+
// Delete
|
|
173
|
+
applyEdits(source, [{ old: "// TODO: remove this\n", delete: true }]);
|
|
174
|
+
|
|
175
|
+
// Insert after anchor
|
|
176
|
+
applyEdits(source, [
|
|
177
|
+
{ old: "import { foo } from 'foo';", insert: "after", content: "import { bar } from 'bar';" },
|
|
178
|
+
]);
|
|
179
|
+
|
|
180
|
+
// Append to file
|
|
181
|
+
applyEdits(source, [{ insert: "end", content: "export default main;" }]);
|
|
182
|
+
|
|
183
|
+
// Range replacement (replace function body)
|
|
184
|
+
applyEdits(source, [
|
|
185
|
+
{ from: "function old() {", to: "} // old", content: "function new() {\n return 42;\n}" },
|
|
149
186
|
]);
|
|
150
|
-
// result.content, result.applied, result.changes
|
|
151
187
|
```
|
|
152
188
|
|
|
153
189
|
### `editFile(path, edits)`
|
|
@@ -157,7 +193,26 @@ File wrapper. Reads, applies edits, writes atomically (temp + rename).
|
|
|
157
193
|
```typescript
|
|
158
194
|
import { editFile } from "@agentick/sandbox";
|
|
159
195
|
|
|
160
|
-
await editFile("/path/to/file.ts", [
|
|
196
|
+
await editFile("/path/to/file.ts", [
|
|
197
|
+
{ old: "const x = 1;", new: "const x = 42;" },
|
|
198
|
+
{ old: "debugLog()", delete: true },
|
|
199
|
+
{ insert: "end", content: "\nexport default main;" },
|
|
200
|
+
]);
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### `Edit` interface
|
|
204
|
+
|
|
205
|
+
```typescript
|
|
206
|
+
interface Edit {
|
|
207
|
+
old?: string; // Text to find (replace, delete, insert before/after)
|
|
208
|
+
new?: string; // Replacement text (replace mode)
|
|
209
|
+
all?: boolean; // Apply to all occurrences (default: false)
|
|
210
|
+
delete?: boolean; // Delete matched text (sugar for new: "")
|
|
211
|
+
insert?: "before" | "after" | "start" | "end"; // Insert mode
|
|
212
|
+
content?: string; // Content to insert or range replacement
|
|
213
|
+
from?: string; // Range start boundary (inclusive)
|
|
214
|
+
to?: string; // Range end boundary (inclusive)
|
|
215
|
+
}
|
|
161
216
|
```
|
|
162
217
|
|
|
163
218
|
## Types
|
|
@@ -165,14 +220,14 @@ await editFile("/path/to/file.ts", [{ old: "const x = 1;", new: "const x = 42;"
|
|
|
165
220
|
```typescript
|
|
166
221
|
import type {
|
|
167
222
|
// Core types
|
|
168
|
-
|
|
223
|
+
Sandbox, // Runtime handle: exec, readFile, writeFile, editFile, destroy
|
|
169
224
|
SandboxProvider, // Factory: name, create, restore?, destroy?
|
|
170
225
|
SandboxCreateOptions, // Passed to provider.create()
|
|
171
226
|
SandboxConfig, // Component-level config
|
|
172
227
|
SandboxSnapshot, // Serializable state for persistence
|
|
173
228
|
|
|
174
229
|
// Execution
|
|
175
|
-
ExecOptions, // Per-command: cwd, env, timeout
|
|
230
|
+
ExecOptions, // Per-command: cwd, env, timeout, onOutput
|
|
176
231
|
ExecResult, // Output: stdout, stderr, exitCode
|
|
177
232
|
OutputChunk, // Streaming: stream, data
|
|
178
233
|
|
|
@@ -182,9 +237,10 @@ import type {
|
|
|
182
237
|
ResourceLimits, // Constraints: memory, cpu, timeout, disk, maxProcesses
|
|
183
238
|
|
|
184
239
|
// Edit
|
|
185
|
-
Edit, // { old
|
|
240
|
+
Edit, // { old?, new?, all?, delete?, insert?, content?, from?, to? }
|
|
186
241
|
EditResult, // { content, applied, changes }
|
|
187
242
|
EditChange, // { line, removed, added }
|
|
243
|
+
EditError, // Error with editIndex + diagnostic context
|
|
188
244
|
} from "@agentick/sandbox";
|
|
189
245
|
```
|
|
190
246
|
|
package/dist/edit.d.ts
CHANGED
|
@@ -4,15 +4,27 @@
|
|
|
4
4
|
* LLM-driven code editing with layered matching that recovers from
|
|
5
5
|
* trailing whitespace, indentation mismatch, and CRLF/LF differences.
|
|
6
6
|
*
|
|
7
|
+
* Supports replace, delete, insert (before/after/start/end), and range modes.
|
|
8
|
+
*
|
|
7
9
|
* Pure transform (`applyEdits`) + file wrapper (`editFile`) with atomic writes.
|
|
8
10
|
*/
|
|
9
11
|
export interface Edit {
|
|
10
|
-
/**
|
|
11
|
-
old
|
|
12
|
-
/** Replacement
|
|
13
|
-
new
|
|
14
|
-
/** Replace ALL occurrences. Default false
|
|
12
|
+
/** Text to find. Required for replace, delete, insert before/after. */
|
|
13
|
+
old?: string;
|
|
14
|
+
/** Replacement text. Required for replace mode. */
|
|
15
|
+
new?: string;
|
|
16
|
+
/** Replace/delete/insert ALL occurrences. Default false. */
|
|
15
17
|
all?: boolean;
|
|
18
|
+
/** Delete the matched text (sugar for new: ""). */
|
|
19
|
+
delete?: boolean;
|
|
20
|
+
/** Insert position. "before"/"after" use old as anchor. "start"/"end" target file boundaries. */
|
|
21
|
+
insert?: "before" | "after" | "start" | "end";
|
|
22
|
+
/** Content to insert or range replacement. Required for insert and range modes. */
|
|
23
|
+
content?: string;
|
|
24
|
+
/** Start boundary for range replacement (inclusive). */
|
|
25
|
+
from?: string;
|
|
26
|
+
/** End boundary for range replacement (inclusive). */
|
|
27
|
+
to?: string;
|
|
16
28
|
}
|
|
17
29
|
export interface EditChange {
|
|
18
30
|
/** 1-based line where the change starts. */
|
|
@@ -35,16 +47,25 @@ export declare class EditError extends Error {
|
|
|
35
47
|
readonly detail?: {
|
|
36
48
|
closest?: string;
|
|
37
49
|
line?: number;
|
|
50
|
+
context?: string[];
|
|
38
51
|
} | undefined;
|
|
39
52
|
constructor(message: string, editIndex: number, detail?: {
|
|
40
53
|
closest?: string;
|
|
41
54
|
line?: number;
|
|
55
|
+
context?: string[];
|
|
42
56
|
} | undefined);
|
|
43
57
|
}
|
|
44
58
|
/**
|
|
45
59
|
* Apply edits to a source string. Pure function, no I/O.
|
|
46
60
|
*
|
|
47
|
-
*
|
|
61
|
+
* Mode detection (by field presence, precedence: range > insert > delete > replace):
|
|
62
|
+
* - Range: `from` + `to` + `content` — replace block between markers (inclusive)
|
|
63
|
+
* - Insert before/after: `old` + `insert` + `content` — insert relative to anchor
|
|
64
|
+
* - Insert start/end: `insert` + `content` — prepend/append to file
|
|
65
|
+
* - Delete: `old` + `delete: true` — remove matched text
|
|
66
|
+
* - Replace: `old` + `new` — find and replace
|
|
67
|
+
*
|
|
68
|
+
* Matching strategy per anchor (in order):
|
|
48
69
|
* 1. Exact byte match
|
|
49
70
|
* 2. Line-normalized (trailing whitespace stripped)
|
|
50
71
|
* 3. Indent-adjusted (leading whitespace baseline stripped, new indentation adjusted)
|
|
@@ -52,7 +73,7 @@ export declare class EditError extends Error {
|
|
|
52
73
|
* Multi-edit: all matches resolved against original source,
|
|
53
74
|
* validated for overlap, applied bottom-to-top.
|
|
54
75
|
*
|
|
55
|
-
* @throws EditError on match failure or overlapping edits
|
|
76
|
+
* @throws EditError on match failure, validation error, or overlapping edits
|
|
56
77
|
*/
|
|
57
78
|
export declare function applyEdits(source: string, edits: Edit[]): EditResult;
|
|
58
79
|
/**
|
package/dist/edit.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../src/edit.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../src/edit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,MAAM,WAAW,IAAI;IAEnB,uEAAuE;IACvE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4DAA4D;IAC5D,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,mDAAmD;IACnD,MAAM,CAAC,EAAE,OAAO,CAAC;IAGjB,iGAAiG;IACjG,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC;IAC9C,mFAAmF;IACnF,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,UAAU;IACzB,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED,qBAAa,SAAU,SAAQ,KAAK;aAGhB,SAAS,EAAE,MAAM;aACjB,MAAM,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE;gBAFhF,OAAO,EAAE,MAAM,EACC,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,YAAA;CAKnF;AA8gBD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,UAAU,CAoGpE;AAID;;GAEG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAmB/E"}
|
package/dist/edit.js
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
* LLM-driven code editing with layered matching that recovers from
|
|
5
5
|
* trailing whitespace, indentation mismatch, and CRLF/LF differences.
|
|
6
6
|
*
|
|
7
|
+
* Supports replace, delete, insert (before/after/start/end), and range modes.
|
|
8
|
+
*
|
|
7
9
|
* Pure transform (`applyEdits`) + file wrapper (`editFile`) with atomic writes.
|
|
8
10
|
*/
|
|
9
11
|
import { readFile, writeFile, rename, unlink } from "node:fs/promises";
|
|
@@ -80,9 +82,9 @@ function findAll(source, needle) {
|
|
|
80
82
|
return positions;
|
|
81
83
|
}
|
|
82
84
|
/** Slide `needle` lines over `haystack` lines, comparing with `cmp`. */
|
|
83
|
-
function slideMatch(haystackLines, needleLines, cmp) {
|
|
85
|
+
function slideMatch(haystackLines, needleLines, cmp, startFrom = 0) {
|
|
84
86
|
const windowSize = needleLines.length;
|
|
85
|
-
for (let i =
|
|
87
|
+
for (let i = startFrom; i <= haystackLines.length - windowSize; i++) {
|
|
86
88
|
let match = true;
|
|
87
89
|
for (let j = 0; j < windowSize; j++) {
|
|
88
90
|
if (!cmp(haystackLines[i + j], needleLines[j])) {
|
|
@@ -117,11 +119,298 @@ function adjustIndent(oldStr, matchedStr, newStr) {
|
|
|
117
119
|
})
|
|
118
120
|
.join("\n");
|
|
119
121
|
}
|
|
122
|
+
/**
|
|
123
|
+
* Smart line deletion: when deleting text that occupies complete lines
|
|
124
|
+
* (starts at beginning of a line), also consume the line separator to
|
|
125
|
+
* avoid leaving blank lines behind.
|
|
126
|
+
*
|
|
127
|
+
* Only applies when the match starts at position 0 or right after a `\n`.
|
|
128
|
+
* Partial-line deletions (match starts mid-line) are not affected.
|
|
129
|
+
*/
|
|
130
|
+
function smartLineDeletion(source, start, end) {
|
|
131
|
+
// Skip if the matched text already includes its own line boundary
|
|
132
|
+
if (end > start && source[end - 1] === "\n")
|
|
133
|
+
return { start, end };
|
|
134
|
+
const startsAtLineBegin = start === 0 || source[start - 1] === "\n";
|
|
135
|
+
if (!startsAtLineBegin)
|
|
136
|
+
return { start, end };
|
|
137
|
+
// Prefer consuming trailing newline
|
|
138
|
+
if (end < source.length && source[end] === "\n") {
|
|
139
|
+
return { start, end: end + 1 };
|
|
140
|
+
}
|
|
141
|
+
// At end of file: consume preceding newline instead
|
|
142
|
+
if (start > 0 && source[start - 1] === "\n") {
|
|
143
|
+
return { start: start - 1, end };
|
|
144
|
+
}
|
|
145
|
+
return { start, end };
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Build context snippet around a source line for error diagnostics.
|
|
149
|
+
* Shows 2 lines before and after, with `>` marker on the target line.
|
|
150
|
+
*/
|
|
151
|
+
function buildContextSnippet(sourceLines, targetLine0) {
|
|
152
|
+
const contextLines = [];
|
|
153
|
+
const start = Math.max(0, targetLine0 - 2);
|
|
154
|
+
const end = Math.min(sourceLines.length - 1, targetLine0 + 2);
|
|
155
|
+
for (let i = start; i <= end; i++) {
|
|
156
|
+
const lineNum = (i + 1).toString().padStart(4);
|
|
157
|
+
const marker = i === targetLine0 ? " > " : " ";
|
|
158
|
+
contextLines.push(`${marker}${lineNum} | ${sourceLines[i]}`);
|
|
159
|
+
}
|
|
160
|
+
return contextLines;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Find anchor text using 3-strategy matching (exact -> line-normalized -> indent-adjusted).
|
|
164
|
+
* Returns array of matches. Callers validate uniqueness / all-mode.
|
|
165
|
+
*/
|
|
166
|
+
function findAnchor(source, sourceLines, starts, needle, editIndex, options) {
|
|
167
|
+
const searchFrom = options?.searchFrom ?? 0;
|
|
168
|
+
const useAll = options?.all ?? false;
|
|
169
|
+
// ── Strategy 1: Exact match ──
|
|
170
|
+
const positions = findAll(source, needle);
|
|
171
|
+
const filteredPositions = positions.filter((p) => p >= searchFrom);
|
|
172
|
+
if (filteredPositions.length > 0) {
|
|
173
|
+
if (useAll) {
|
|
174
|
+
return filteredPositions.map((pos) => ({
|
|
175
|
+
start: pos,
|
|
176
|
+
end: pos + needle.length,
|
|
177
|
+
matchedText: source.slice(pos, pos + needle.length),
|
|
178
|
+
}));
|
|
179
|
+
}
|
|
180
|
+
if (filteredPositions.length === 1) {
|
|
181
|
+
return [
|
|
182
|
+
{
|
|
183
|
+
start: filteredPositions[0],
|
|
184
|
+
end: filteredPositions[0] + needle.length,
|
|
185
|
+
matchedText: source.slice(filteredPositions[0], filteredPositions[0] + needle.length),
|
|
186
|
+
},
|
|
187
|
+
];
|
|
188
|
+
}
|
|
189
|
+
// Multiple matches, not all mode — error
|
|
190
|
+
const lines = filteredPositions.map((p) => lineAtOffset(starts, p));
|
|
191
|
+
throw new EditError(`Edit ${editIndex}: ${filteredPositions.length} matches found (lines ${lines.join(", ")}). ` +
|
|
192
|
+
`Include more surrounding context to disambiguate, or use all: true.`, editIndex);
|
|
193
|
+
}
|
|
194
|
+
// all: true edits only use exact match — skip fallbacks
|
|
195
|
+
if (useAll) {
|
|
196
|
+
return [];
|
|
197
|
+
}
|
|
198
|
+
const needleLines = needle.split("\n");
|
|
199
|
+
const startLineIdx = searchFrom === 0 ? 0 : Math.max(0, lineAtOffset(starts, searchFrom) - 1); // 0-indexed
|
|
200
|
+
// ── Strategy 2: Line-normalized (strip trailing WS) ──
|
|
201
|
+
const normSourceLines = sourceLines.map((l) => l.trimEnd());
|
|
202
|
+
const normNeedleLines = needleLines.map((l) => l.trimEnd());
|
|
203
|
+
const normHit = slideMatch(normSourceLines, normNeedleLines, (a, b) => a === b, startLineIdx);
|
|
204
|
+
if (normHit !== null) {
|
|
205
|
+
const { start, end } = lineRange(source, starts, sourceLines, normHit, normHit + needleLines.length - 1);
|
|
206
|
+
return [{ start, end, matchedText: source.slice(start, end) }];
|
|
207
|
+
}
|
|
208
|
+
// ── Strategy 3: Indent-adjusted (strip indent baseline, compare shapes) ──
|
|
209
|
+
const baseIndent = minIndent(needleLines);
|
|
210
|
+
const strippedNeedle = needleLines.map((l) => (l.trim() === "" ? "" : l.slice(baseIndent)));
|
|
211
|
+
for (let si = startLineIdx; si <= sourceLines.length - needleLines.length; si++) {
|
|
212
|
+
const window = sourceLines.slice(si, si + needleLines.length);
|
|
213
|
+
const windowIndent = minIndent(window);
|
|
214
|
+
const strippedWindow = window.map((l) => (l.trim() === "" ? "" : l.slice(windowIndent)));
|
|
215
|
+
if (strippedNeedle.every((line, j) => line === strippedWindow[j])) {
|
|
216
|
+
const { start, end } = lineRange(source, starts, sourceLines, si, si + needleLines.length - 1);
|
|
217
|
+
return [{ start, end, matchedText: source.slice(start, end) }];
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return [];
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Throw a diagnostic error when anchor text cannot be found.
|
|
224
|
+
*/
|
|
225
|
+
function throwNoMatch(needle, editIndex, sourceLines, label = "old") {
|
|
226
|
+
const needleLines = needle.split("\n");
|
|
227
|
+
const firstLine = needleLines[0].trim();
|
|
228
|
+
let closestLine0 = -1;
|
|
229
|
+
for (let j = 0; j < sourceLines.length; j++) {
|
|
230
|
+
if (sourceLines[j].includes(firstLine)) {
|
|
231
|
+
closestLine0 = j;
|
|
232
|
+
break;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
const context = closestLine0 >= 0 ? buildContextSnippet(sourceLines, closestLine0) : undefined;
|
|
236
|
+
const contextDisplay = context ? "\n Closest partial match:\n" + context.join("\n") : "";
|
|
237
|
+
const hint = "\n Hint: re-read the file to get current content.";
|
|
238
|
+
throw new EditError(`Edit ${editIndex}: no match found for ${label}.` +
|
|
239
|
+
(closestLine0 >= 0 ? ` First line appears near line ${closestLine0 + 1}.` : "") +
|
|
240
|
+
`\n Looking for: "${firstLine.slice(0, 80)}"` +
|
|
241
|
+
contextDisplay +
|
|
242
|
+
hint, editIndex, closestLine0 >= 0
|
|
243
|
+
? { closest: sourceLines[closestLine0], line: closestLine0 + 1, context }
|
|
244
|
+
: undefined);
|
|
245
|
+
}
|
|
246
|
+
// ── Mode Validation ─────────────────────────────────────────────────────────
|
|
247
|
+
function validateReplace(edit, i) {
|
|
248
|
+
if (edit.old === undefined || edit.old.length === 0) {
|
|
249
|
+
throw new EditError(`Edit ${i}: old string is required for replace mode and cannot be empty.`, i);
|
|
250
|
+
}
|
|
251
|
+
if (edit.new === undefined) {
|
|
252
|
+
throw new EditError(`Edit ${i}: new string is required for replace mode.`, i);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
function validateDelete(edit, i) {
|
|
256
|
+
if (edit.old === undefined || edit.old.length === 0) {
|
|
257
|
+
throw new EditError(`Edit ${i}: old string is required for delete mode and cannot be empty.`, i);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
function validateInsertAnchor(edit, i) {
|
|
261
|
+
if (edit.old === undefined || edit.old.length === 0) {
|
|
262
|
+
throw new EditError(`Edit ${i}: old string is required as anchor for insert ${edit.insert} mode.`, i);
|
|
263
|
+
}
|
|
264
|
+
if (edit.content === undefined) {
|
|
265
|
+
throw new EditError(`Edit ${i}: content is required for insert mode.`, i);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
function validateInsertBoundary(edit, i) {
|
|
269
|
+
if (edit.content === undefined) {
|
|
270
|
+
throw new EditError(`Edit ${i}: content is required for insert ${edit.insert} mode.`, i);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
function validateRange(edit, i) {
|
|
274
|
+
if (edit.from === undefined) {
|
|
275
|
+
throw new EditError(`Edit ${i}: from is required for range mode.`, i);
|
|
276
|
+
}
|
|
277
|
+
if (edit.to === undefined) {
|
|
278
|
+
throw new EditError(`Edit ${i}: to is required for range mode.`, i);
|
|
279
|
+
}
|
|
280
|
+
if (edit.content === undefined) {
|
|
281
|
+
throw new EditError(`Edit ${i}: content is required for range mode.`, i);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
// ── Mode Handlers ───────────────────────────────────────────────────────────
|
|
285
|
+
function handleReplace(edit, i, source, sourceLines, starts, replacements) {
|
|
286
|
+
const old = edit.old.replace(/\r\n/g, "\n");
|
|
287
|
+
const neu = edit.new.replace(/\r\n/g, "\n");
|
|
288
|
+
const matches = findAnchor(source, sourceLines, starts, old, i, { all: edit.all });
|
|
289
|
+
if (matches.length === 0) {
|
|
290
|
+
if (edit.all)
|
|
291
|
+
return; // no-op for all: true
|
|
292
|
+
throwNoMatch(old, i, sourceLines);
|
|
293
|
+
}
|
|
294
|
+
for (const match of matches) {
|
|
295
|
+
// For indent-adjusted matches, adjust the replacement indentation
|
|
296
|
+
const adjusted = match.matchedText !== old ? adjustIndent(old, match.matchedText, neu) : neu;
|
|
297
|
+
let { start, end } = { start: match.start, end: match.end };
|
|
298
|
+
// Smart line deletion when replacement is empty (delete via replace mode)
|
|
299
|
+
if (adjusted === "") {
|
|
300
|
+
({ start, end } = smartLineDeletion(source, start, end));
|
|
301
|
+
}
|
|
302
|
+
replacements.push({ start, end, content: adjusted, editIndex: i });
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
function handleDelete(edit, i, source, sourceLines, starts, replacements) {
|
|
306
|
+
const old = edit.old.replace(/\r\n/g, "\n");
|
|
307
|
+
const matches = findAnchor(source, sourceLines, starts, old, i, { all: edit.all });
|
|
308
|
+
if (matches.length === 0) {
|
|
309
|
+
if (edit.all)
|
|
310
|
+
return;
|
|
311
|
+
throwNoMatch(old, i, sourceLines);
|
|
312
|
+
}
|
|
313
|
+
for (const match of matches) {
|
|
314
|
+
const { start, end } = smartLineDeletion(source, match.start, match.end);
|
|
315
|
+
replacements.push({ start, end, content: "", editIndex: i });
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
function handleInsertAnchor(edit, i, source, sourceLines, starts, replacements) {
|
|
319
|
+
const old = edit.old.replace(/\r\n/g, "\n");
|
|
320
|
+
const content = edit.content.replace(/\r\n/g, "\n");
|
|
321
|
+
const matches = findAnchor(source, sourceLines, starts, old, i, { all: edit.all });
|
|
322
|
+
if (matches.length === 0) {
|
|
323
|
+
if (edit.all)
|
|
324
|
+
return;
|
|
325
|
+
throwNoMatch(old, i, sourceLines);
|
|
326
|
+
}
|
|
327
|
+
for (const match of matches) {
|
|
328
|
+
// Adjust content indentation to match anchor
|
|
329
|
+
const adjusted = match.matchedText !== old ? adjustIndent(old, match.matchedText, content) : content;
|
|
330
|
+
if (edit.insert === "before") {
|
|
331
|
+
replacements.push({
|
|
332
|
+
start: match.start,
|
|
333
|
+
end: match.end,
|
|
334
|
+
content: adjusted + "\n" + match.matchedText,
|
|
335
|
+
editIndex: i,
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
else {
|
|
339
|
+
replacements.push({
|
|
340
|
+
start: match.start,
|
|
341
|
+
end: match.end,
|
|
342
|
+
content: match.matchedText + "\n" + adjusted,
|
|
343
|
+
editIndex: i,
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
function handleInsertBoundary(edit, i, source, replacements) {
|
|
349
|
+
const content = edit.content.replace(/\r\n/g, "\n");
|
|
350
|
+
if (edit.insert === "start") {
|
|
351
|
+
if (source.length === 0) {
|
|
352
|
+
replacements.push({ start: 0, end: 0, content, editIndex: i });
|
|
353
|
+
}
|
|
354
|
+
else {
|
|
355
|
+
// Avoid double-newline: if content already ends with \n, don't add separator
|
|
356
|
+
const sep = content.endsWith("\n") ? "" : "\n";
|
|
357
|
+
replacements.push({ start: 0, end: 0, content: content + sep, editIndex: i });
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
else {
|
|
361
|
+
if (source.length === 0) {
|
|
362
|
+
replacements.push({ start: source.length, end: source.length, content, editIndex: i });
|
|
363
|
+
}
|
|
364
|
+
else {
|
|
365
|
+
// Avoid double-newline: if source already ends with \n, don't add separator
|
|
366
|
+
const sep = source.endsWith("\n") ? "" : "\n";
|
|
367
|
+
replacements.push({
|
|
368
|
+
start: source.length,
|
|
369
|
+
end: source.length,
|
|
370
|
+
content: sep + content,
|
|
371
|
+
editIndex: i,
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
function handleRange(edit, i, source, sourceLines, starts, replacements) {
|
|
377
|
+
const from = edit.from.replace(/\r\n/g, "\n");
|
|
378
|
+
const to = edit.to.replace(/\r\n/g, "\n");
|
|
379
|
+
const content = edit.content.replace(/\r\n/g, "\n");
|
|
380
|
+
const fromMatches = findAnchor(source, sourceLines, starts, from, i);
|
|
381
|
+
if (fromMatches.length === 0) {
|
|
382
|
+
throwNoMatch(from, i, sourceLines, "from");
|
|
383
|
+
}
|
|
384
|
+
const fromMatch = fromMatches[0];
|
|
385
|
+
const toMatches = findAnchor(source, sourceLines, starts, to, i, {
|
|
386
|
+
searchFrom: fromMatch.end,
|
|
387
|
+
});
|
|
388
|
+
if (toMatches.length === 0) {
|
|
389
|
+
const fromLine = lineAtOffset(starts, fromMatch.start);
|
|
390
|
+
throw new EditError(`Edit ${i}: 'to' marker not found after 'from' (matched at line ${fromLine}).` +
|
|
391
|
+
`\n Looking for: "${to.split("\n")[0].trim().slice(0, 80)}"` +
|
|
392
|
+
"\n Hint: re-read the file to get current content.", i);
|
|
393
|
+
}
|
|
394
|
+
const toMatch = toMatches[0];
|
|
395
|
+
replacements.push({
|
|
396
|
+
start: fromMatch.start,
|
|
397
|
+
end: toMatch.end,
|
|
398
|
+
content,
|
|
399
|
+
editIndex: i,
|
|
400
|
+
});
|
|
401
|
+
}
|
|
120
402
|
// ── Core: Pure Transform ─────────────────────────────────────────────────────
|
|
121
403
|
/**
|
|
122
404
|
* Apply edits to a source string. Pure function, no I/O.
|
|
123
405
|
*
|
|
124
|
-
*
|
|
406
|
+
* Mode detection (by field presence, precedence: range > insert > delete > replace):
|
|
407
|
+
* - Range: `from` + `to` + `content` — replace block between markers (inclusive)
|
|
408
|
+
* - Insert before/after: `old` + `insert` + `content` — insert relative to anchor
|
|
409
|
+
* - Insert start/end: `insert` + `content` — prepend/append to file
|
|
410
|
+
* - Delete: `old` + `delete: true` — remove matched text
|
|
411
|
+
* - Replace: `old` + `new` — find and replace
|
|
412
|
+
*
|
|
413
|
+
* Matching strategy per anchor (in order):
|
|
125
414
|
* 1. Exact byte match
|
|
126
415
|
* 2. Line-normalized (trailing whitespace stripped)
|
|
127
416
|
* 3. Indent-adjusted (leading whitespace baseline stripped, new indentation adjusted)
|
|
@@ -129,7 +418,7 @@ function adjustIndent(oldStr, matchedStr, newStr) {
|
|
|
129
418
|
* Multi-edit: all matches resolved against original source,
|
|
130
419
|
* validated for overlap, applied bottom-to-top.
|
|
131
420
|
*
|
|
132
|
-
* @throws EditError on match failure or overlapping edits
|
|
421
|
+
* @throws EditError on match failure, validation error, or overlapping edits
|
|
133
422
|
*/
|
|
134
423
|
export function applyEdits(source, edits) {
|
|
135
424
|
if (edits.length === 0)
|
|
@@ -141,82 +430,33 @@ export function applyEdits(source, edits) {
|
|
|
141
430
|
const replacements = [];
|
|
142
431
|
for (let i = 0; i < edits.length; i++) {
|
|
143
432
|
const edit = edits[i];
|
|
144
|
-
|
|
145
|
-
|
|
433
|
+
// ── Mode: Range ──
|
|
434
|
+
if (edit.from !== undefined || edit.to !== undefined) {
|
|
435
|
+
validateRange(edit, i);
|
|
436
|
+
handleRange(edit, i, source, sourceLines, starts, replacements);
|
|
437
|
+
continue;
|
|
146
438
|
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
if (edit.all) {
|
|
153
|
-
for (const pos of positions) {
|
|
154
|
-
replacements.push({ start: pos, end: pos + old.length, content: neu, editIndex: i });
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
else if (positions.length === 1) {
|
|
158
|
-
replacements.push({
|
|
159
|
-
start: positions[0],
|
|
160
|
-
end: positions[0] + old.length,
|
|
161
|
-
content: neu,
|
|
162
|
-
editIndex: i,
|
|
163
|
-
});
|
|
439
|
+
// ── Mode: Insert ──
|
|
440
|
+
if (edit.insert !== undefined) {
|
|
441
|
+
if (edit.insert === "start" || edit.insert === "end") {
|
|
442
|
+
validateInsertBoundary(edit, i);
|
|
443
|
+
handleInsertBoundary(edit, i, source, replacements);
|
|
164
444
|
}
|
|
165
445
|
else {
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
`Include more surrounding context to disambiguate, or use all: true.`, i);
|
|
446
|
+
validateInsertAnchor(edit, i);
|
|
447
|
+
handleInsertAnchor(edit, i, source, sourceLines, starts, replacements);
|
|
169
448
|
}
|
|
170
449
|
continue;
|
|
171
450
|
}
|
|
172
|
-
//
|
|
173
|
-
if (edit.
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
}
|
|
177
|
-
const oldLines = old.split("\n");
|
|
178
|
-
// ── Strategy 2: Line-normalized (strip trailing WS) ──────────────────
|
|
179
|
-
const normSourceLines = sourceLines.map((l) => l.trimEnd());
|
|
180
|
-
const normOldLines = oldLines.map((l) => l.trimEnd());
|
|
181
|
-
const normHit = slideMatch(normSourceLines, normOldLines, (a, b) => a === b);
|
|
182
|
-
if (normHit !== null) {
|
|
183
|
-
const { start, end } = lineRange(source, starts, sourceLines, normHit, normHit + oldLines.length - 1);
|
|
184
|
-
replacements.push({ start, end, content: neu, editIndex: i });
|
|
451
|
+
// ── Mode: Delete ──
|
|
452
|
+
if (edit.delete) {
|
|
453
|
+
validateDelete(edit, i);
|
|
454
|
+
handleDelete(edit, i, source, sourceLines, starts, replacements);
|
|
185
455
|
continue;
|
|
186
456
|
}
|
|
187
|
-
// ──
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
const strippedNeedle = oldLines.map((l) => (l.trim() === "" ? "" : l.slice(baseIndent)));
|
|
191
|
-
for (let si = 0; si <= sourceLines.length - oldLines.length; si++) {
|
|
192
|
-
const window = sourceLines.slice(si, si + oldLines.length);
|
|
193
|
-
const windowIndent = minIndent(window);
|
|
194
|
-
const strippedWindow = window.map((l) => (l.trim() === "" ? "" : l.slice(windowIndent)));
|
|
195
|
-
if (strippedNeedle.every((line, j) => line === strippedWindow[j])) {
|
|
196
|
-
return si;
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
return null;
|
|
200
|
-
})();
|
|
201
|
-
if (indentHit !== null) {
|
|
202
|
-
const { start, end } = lineRange(source, starts, sourceLines, indentHit, indentHit + oldLines.length - 1);
|
|
203
|
-
const matched = source.slice(start, end);
|
|
204
|
-
const adjusted = adjustIndent(old, matched, neu);
|
|
205
|
-
replacements.push({ start, end, content: adjusted, editIndex: i });
|
|
206
|
-
continue;
|
|
207
|
-
}
|
|
208
|
-
// ── No match — diagnostic error ──────────────────────────────────────
|
|
209
|
-
const firstLine = oldLines[0].trim();
|
|
210
|
-
let closestLine = -1;
|
|
211
|
-
for (let j = 0; j < sourceLines.length; j++) {
|
|
212
|
-
if (sourceLines[j].includes(firstLine)) {
|
|
213
|
-
closestLine = j + 1;
|
|
214
|
-
break;
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
throw new EditError(`Edit ${i}: no match found` +
|
|
218
|
-
(closestLine > 0 ? ` (first line appears near line ${closestLine})` : "") +
|
|
219
|
-
`. First line: "${firstLine.slice(0, 80)}"`, i, closestLine > 0 ? { closest: sourceLines[closestLine - 1], line: closestLine } : undefined);
|
|
457
|
+
// ── Mode: Replace (default) ──
|
|
458
|
+
validateReplace(edit, i);
|
|
459
|
+
handleReplace(edit, i, source, sourceLines, starts, replacements);
|
|
220
460
|
}
|
|
221
461
|
// ── Validate no overlaps ───────────────────────────────────────────────
|
|
222
462
|
const sorted = [...replacements].sort((a, b) => a.start - b.start);
|
package/dist/edit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../src/edit.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AA+B1C,MAAM,OAAO,SAAU,SAAQ,KAAK;IAGhB;IACA;IAHlB,YACE,OAAe,EACC,SAAiB,EACjB,MAA4C;QAE5D,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,cAAS,GAAT,SAAS,CAAQ;QACjB,WAAM,GAAN,MAAM,CAAsC;QAG5D,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AAWD,iDAAiD;AACjD,SAAS,UAAU,CAAC,MAAc;IAChC,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,0CAA0C;AAC1C,SAAS,YAAY,CAAC,MAAgB,EAAE,MAAc;IACpD,IAAI,EAAE,GAAG,CAAC,EACR,EAAE,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACzB,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM;YAAE,EAAE,GAAG,GAAG,CAAC;;YAC/B,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU;AAC3B,CAAC;AAED,6EAA6E;AAC7E,SAAS,SAAS,CAChB,MAAc,EACd,MAAgB,EAChB,WAAqB,EACrB,SAAiB,EACjB,OAAe;IAEf,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAChC,6DAA6D;IAC7D,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IAC1D,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,aAAa,CAAC,CAAS;IAC9B,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI;YAAE,CAAC,EAAE,CAAC;IACzB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,qDAAqD;AACrD,SAAS,SAAS,CAAC,KAAe;IAChC,IAAI,GAAG,GAAG,QAAQ,CAAC;IACnB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,SAAS;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC;QACrD,IAAI,MAAM,GAAG,GAAG;YAAE,GAAG,GAAG,MAAM,CAAC;IACjC,CAAC;IACD,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACpC,CAAC;AAED,4CAA4C;AAC5C,SAAS,OAAO,CAAC,MAAc,EAAE,MAAc;IAC7C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,OAAO,CAAC,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAClD,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC;IACvB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,wEAAwE;AACxE,SAAS,UAAU,CACjB,aAAuB,EACvB,WAAqB,EACrB,GAAsC;IAEtC,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC;IACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5D,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/C,KAAK,GAAG,KAAK,CAAC;gBACd,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,KAAK;YAAE,OAAO,CAAC,CAAC,CAAC,iBAAiB;IACxC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,MAAc,EAAE,UAAkB,EAAE,MAAc;IACtE,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IAE5D,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAE/B,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACxC,OAAO,MAAM;SACV,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC;QACpC,IAAI,KAAK,GAAG,CAAC;YAAE,OAAO,GAAG,GAAG,IAAI,CAAC;QACjC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1E,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,gFAAgF;AAEhF;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,UAAU,CAAC,MAAc,EAAE,KAAa;IACtD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAE5E,iDAAiD;IACjD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAEvC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,YAAY,GAAkB,EAAE,CAAC;IAEvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,+BAA+B,EAAE,CAAC,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAE5C,wEAAwE;QACxE,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAEvC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;oBAC5B,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;gBACvF,CAAC;YACH,CAAC;iBAAM,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,YAAY,CAAC,IAAI,CAAC;oBAChB,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;oBACnB,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM;oBAC9B,OAAO,EAAE,GAAG;oBACZ,SAAS,EAAE,CAAC;iBACb,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC5D,MAAM,IAAI,SAAS,CACjB,QAAQ,CAAC,KAAK,SAAS,CAAC,MAAM,yBAAyB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;oBAC1E,qEAAqE,EACvE,CAAC,CACF,CAAC;YACJ,CAAC;YACD,SAAS;QACX,CAAC;QAED,wDAAwD;QACxD,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,uDAAuD;YACvD,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEjC,wEAAwE;QACxE,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5D,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAEtD,MAAM,OAAO,GAAG,UAAU,CAAC,eAAe,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7E,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,SAAS,CAC9B,MAAM,EACN,MAAM,EACN,WAAW,EACX,OAAO,EACP,OAAO,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAC9B,CAAC;YACF,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9D,SAAS;QACX,CAAC;QAED,yEAAyE;QACzE,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE;YACtB,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;YACvC,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAEzF,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,WAAW,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;gBAClE,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC3D,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;gBACvC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAEzF,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAClE,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,EAAE,CAAC;QAEL,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,SAAS,CAC9B,MAAM,EACN,MAAM,EACN,WAAW,EACX,SAAS,EACT,SAAS,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAChC,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACzC,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;YACjD,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;YACnE,SAAS;QACX,CAAC;QAED,wEAAwE;QACxE,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBACvC,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC;gBACpB,MAAM;YACR,CAAC;QACH,CAAC;QAED,MAAM,IAAI,SAAS,CACjB,QAAQ,CAAC,kBAAkB;YACzB,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,kCAAkC,WAAW,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACzE,kBAAkB,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,EAC7C,CAAC,EACD,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAC3F,CAAC;IACJ,CAAC;IAED,0EAA0E;IAC1E,MAAM,MAAM,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACnE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;YACxC,MAAM,IAAI,SAAS,CACjB,SAAS,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,sBAAsB,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EACnG,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CACpB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAEzC,IAAI,MAAM,GAAG,MAAM,CAAC;IACpB,MAAM,OAAO,GAAiB,EAAE,CAAC;IAEjC,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;YACrC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC;YAClC,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;SACtC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,iBAAiB;IAEpC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;AACpE,CAAC;AAED,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAY,EAAE,KAAa;IACxD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACzC,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAExC,gEAAgE;IAChE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/E,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9C,MAAM,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../src/edit.ts"],"names":[],"mappings":"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"}
|
package/dist/tools.d.ts
CHANGED
|
@@ -29,9 +29,14 @@ export declare const WriteFile: import("@agentick/core/tool").RunnableToolClass<
|
|
|
29
29
|
export declare const EditFile: import("@agentick/core/tool").RunnableToolClass<{
|
|
30
30
|
path: string;
|
|
31
31
|
edits: {
|
|
32
|
-
old
|
|
33
|
-
new
|
|
32
|
+
old?: string | undefined;
|
|
33
|
+
new?: string | undefined;
|
|
34
34
|
all?: boolean | undefined;
|
|
35
|
+
delete?: boolean | undefined;
|
|
36
|
+
insert?: "start" | "end" | "before" | "after" | undefined;
|
|
37
|
+
content?: string | undefined;
|
|
38
|
+
from?: string | undefined;
|
|
39
|
+
to?: string | undefined;
|
|
35
40
|
}[];
|
|
36
41
|
}>;
|
|
37
42
|
//# sourceMappingURL=tools.d.ts.map
|
package/dist/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,eAAO,MAAM,KAAK;;EAehB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,QAAQ;;EAWnB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,SAAS;;;EAYpB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,QAAQ
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,eAAO,MAAM,KAAK;;EAehB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,QAAQ;;EAWnB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,SAAS;;;EAYpB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;EAqFnB,CAAC"}
|
package/dist/tools.js
CHANGED
|
@@ -65,19 +65,66 @@ export const WriteFile = createTool({
|
|
|
65
65
|
*/
|
|
66
66
|
export const EditFile = createTool({
|
|
67
67
|
name: "edit_file",
|
|
68
|
-
description:
|
|
68
|
+
description: `Apply surgical text edits to a file. Supports replace, delete, insert, and range operations.
|
|
69
|
+
|
|
70
|
+
MODES:
|
|
71
|
+
- Replace: { old: "target text", new: "replacement" } — find and replace
|
|
72
|
+
- Delete: { old: "text to remove", delete: true } — find and delete (trailing newline auto-consumed for complete lines)
|
|
73
|
+
- Insert: { old: "anchor", insert: "after", content: "new lines" } — insert before/after anchor
|
|
74
|
+
- Append: { insert: "end", content: "new content" } — append to end of file
|
|
75
|
+
- Prepend: { insert: "start", content: "new content" } — prepend to start of file
|
|
76
|
+
- Rename: { old: "name", new: "newName", all: true } — replace every occurrence
|
|
77
|
+
- Range: { from: "start marker", to: "end marker", content: "replacement" } — replace block between markers (inclusive)
|
|
78
|
+
|
|
79
|
+
MATCHING:
|
|
80
|
+
- old/from/to must uniquely match one location (unless all: true)
|
|
81
|
+
- Include 1-3 surrounding lines of context for unique identification
|
|
82
|
+
- Whitespace-tolerant: trailing whitespace and indentation differences handled automatically
|
|
83
|
+
- Multi-line matching supported — include complete lines for best results
|
|
84
|
+
- Copy exact text from the file — do not retype from memory
|
|
85
|
+
|
|
86
|
+
BEST PRACTICES:
|
|
87
|
+
- Prefer multiple small, focused edits over one large edit
|
|
88
|
+
- Use insert mode for adding imports, methods, config entries, or test cases
|
|
89
|
+
- Use range mode for replacing function bodies or large blocks — only match boundaries, not entire content
|
|
90
|
+
- Use all: true only for variable/function renames
|
|
91
|
+
- For text files only (code, config, markdown, JSON, YAML, TOML, HTML, CSV, etc.)
|
|
92
|
+
- NOT for binary files (images, audio, PDFs) — use write_file for full replacement or shell for transformations`,
|
|
69
93
|
input: z.object({
|
|
70
94
|
path: z.string().describe("Path to the file to edit."),
|
|
71
95
|
edits: z
|
|
72
96
|
.array(z.object({
|
|
73
|
-
old: z
|
|
74
|
-
|
|
97
|
+
old: z
|
|
98
|
+
.string()
|
|
99
|
+
.optional()
|
|
100
|
+
.describe("Text to find. Required for replace, delete, and insert before/after. In insert mode, this is the anchor (not replaced)."),
|
|
101
|
+
new: z
|
|
102
|
+
.string()
|
|
103
|
+
.optional()
|
|
104
|
+
.describe("Replacement text. Required for replace. Use delete: true instead of new: '' for clarity."),
|
|
75
105
|
all: z
|
|
76
106
|
.boolean()
|
|
77
107
|
.optional()
|
|
78
|
-
.describe("
|
|
108
|
+
.describe("Apply to all occurrences. Default: false (requires unique match)."),
|
|
109
|
+
delete: z.boolean().optional().describe("Delete the matched text. Sugar for new: ''."),
|
|
110
|
+
insert: z
|
|
111
|
+
.enum(["before", "after", "start", "end"])
|
|
112
|
+
.optional()
|
|
113
|
+
.describe("Insert mode. 'before'/'after' insert content relative to anchor (old). 'start'/'end' prepend/append to file."),
|
|
114
|
+
content: z
|
|
115
|
+
.string()
|
|
116
|
+
.optional()
|
|
117
|
+
.describe("Content to insert (insert mode) or replacement content (range mode)."),
|
|
118
|
+
from: z
|
|
119
|
+
.string()
|
|
120
|
+
.optional()
|
|
121
|
+
.describe("Start boundary for range replacement (inclusive). Used with 'to'."),
|
|
122
|
+
to: z
|
|
123
|
+
.string()
|
|
124
|
+
.optional()
|
|
125
|
+
.describe("End boundary for range replacement (inclusive). Everything from 'from' through 'to' is replaced with 'content'."),
|
|
79
126
|
}))
|
|
80
|
-
.describe("Array of edits to apply."),
|
|
127
|
+
.describe("Array of edits to apply. All edits resolved against original content, applied atomically."),
|
|
81
128
|
}),
|
|
82
129
|
use: () => ({ sandbox: useSandbox() }),
|
|
83
130
|
handler: async ({ path, edits }, deps) => {
|
package/dist/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentick/sandbox",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Sandbox primitive layer for Agentick — types, context, component, and pre-built tools",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agent",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"react": "^19.0.0",
|
|
37
37
|
"zod": "^4.3.6",
|
|
38
|
-
"@agentick/core": "0.
|
|
38
|
+
"@agentick/core": "0.5.0"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@types/react": "^19.2.13",
|