clanka 0.0.1
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 +3 -0
- package/dist/Agent.d.ts +119 -0
- package/dist/Agent.d.ts.map +1 -0
- package/dist/Agent.js +240 -0
- package/dist/Agent.js.map +1 -0
- package/dist/AgentTools.d.ts +246 -0
- package/dist/AgentTools.d.ts.map +1 -0
- package/dist/AgentTools.js +374 -0
- package/dist/AgentTools.js.map +1 -0
- package/dist/AgentTools.test.d.ts +2 -0
- package/dist/AgentTools.test.d.ts.map +1 -0
- package/dist/AgentTools.test.js +147 -0
- package/dist/AgentTools.test.js.map +1 -0
- package/dist/ApplyPatch.d.ts +27 -0
- package/dist/ApplyPatch.d.ts.map +1 -0
- package/dist/ApplyPatch.js +343 -0
- package/dist/ApplyPatch.js.map +1 -0
- package/dist/ApplyPatch.test.d.ts +2 -0
- package/dist/ApplyPatch.test.d.ts.map +1 -0
- package/dist/ApplyPatch.test.js +99 -0
- package/dist/ApplyPatch.test.js.map +1 -0
- package/dist/Codex.d.ts +11 -0
- package/dist/Codex.d.ts.map +1 -0
- package/dist/Codex.js +14 -0
- package/dist/Codex.js.map +1 -0
- package/dist/CodexAuth.d.ts +68 -0
- package/dist/CodexAuth.d.ts.map +1 -0
- package/dist/CodexAuth.js +270 -0
- package/dist/CodexAuth.js.map +1 -0
- package/dist/CodexAuth.test.d.ts +2 -0
- package/dist/CodexAuth.test.d.ts.map +1 -0
- package/dist/CodexAuth.test.js +425 -0
- package/dist/CodexAuth.test.js.map +1 -0
- package/dist/Executor.d.ts +20 -0
- package/dist/Executor.d.ts.map +1 -0
- package/dist/Executor.js +76 -0
- package/dist/Executor.js.map +1 -0
- package/dist/OutputFormatter.d.ts +11 -0
- package/dist/OutputFormatter.d.ts.map +1 -0
- package/dist/OutputFormatter.js +5 -0
- package/dist/OutputFormatter.js.map +1 -0
- package/dist/ToolkitRenderer.d.ts +17 -0
- package/dist/ToolkitRenderer.d.ts.map +1 -0
- package/dist/ToolkitRenderer.js +25 -0
- package/dist/ToolkitRenderer.js.map +1 -0
- package/dist/TypeBuilder.d.ts +11 -0
- package/dist/TypeBuilder.d.ts.map +1 -0
- package/dist/TypeBuilder.js +383 -0
- package/dist/TypeBuilder.js.map +1 -0
- package/dist/TypeBuilder.test.d.ts +2 -0
- package/dist/TypeBuilder.test.d.ts.map +1 -0
- package/dist/TypeBuilder.test.js +243 -0
- package/dist/TypeBuilder.test.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/package.json +72 -0
- package/src/Agent.ts +398 -0
- package/src/AgentTools.test.ts +215 -0
- package/src/AgentTools.ts +507 -0
- package/src/ApplyPatch.test.ts +154 -0
- package/src/ApplyPatch.ts +473 -0
- package/src/Codex.ts +14 -0
- package/src/CodexAuth.test.ts +729 -0
- package/src/CodexAuth.ts +571 -0
- package/src/Executor.ts +129 -0
- package/src/OutputFormatter.ts +17 -0
- package/src/ToolkitRenderer.ts +39 -0
- package/src/TypeBuilder.test.ts +508 -0
- package/src/TypeBuilder.ts +670 -0
- package/src/index.ts +29 -0
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import { Array, Data, Deferred, Effect, FileSystem, Path, pipe, Schema, ServiceMap, Stream, } from "effect";
|
|
5
|
+
import { Tool, Toolkit } from "effect/unstable/ai";
|
|
6
|
+
import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";
|
|
7
|
+
import * as Glob from "glob";
|
|
8
|
+
import * as Rg from "@vscode/ripgrep";
|
|
9
|
+
import { parsePatch, patchChunks } from "./ApplyPatch.js";
|
|
10
|
+
/**
|
|
11
|
+
* @since 1.0.0
|
|
12
|
+
* @category Context
|
|
13
|
+
*/
|
|
14
|
+
export class CurrentDirectory extends ServiceMap.Service()("clanka/AgentTools/CurrentDirectory") {
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* @since 1.0.0
|
|
18
|
+
* @category Context
|
|
19
|
+
*/
|
|
20
|
+
export class TaskCompleteDeferred extends ServiceMap.Service()("clanka/AgentTools/TaskCompleteDeferred") {
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* @since 1.0.0
|
|
24
|
+
* @category Context
|
|
25
|
+
*/
|
|
26
|
+
export class SubagentContext extends ServiceMap.Service()("clanka/AgentTools/SubagentContext") {
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* @since 1.0.0
|
|
30
|
+
* @category Context
|
|
31
|
+
*/
|
|
32
|
+
export const makeContextNoop = (cwd) => SubagentContext.serviceMap({
|
|
33
|
+
spawn: () => Effect.die("Not implemented"),
|
|
34
|
+
}).pipe(ServiceMap.add(CurrentDirectory, cwd ?? "/"), ServiceMap.add(TaskCompleteDeferred, Deferred.makeUnsafe()));
|
|
35
|
+
/**
|
|
36
|
+
* @since 1.0.0
|
|
37
|
+
* @category Toolkit
|
|
38
|
+
*/
|
|
39
|
+
export const AgentTools = Toolkit.make(Tool.make("readFile", {
|
|
40
|
+
description: "Read a file and optionally filter the lines to return. Returns null if the file doesn't exist.",
|
|
41
|
+
parameters: Schema.Struct({
|
|
42
|
+
path: Schema.String,
|
|
43
|
+
startLine: Schema.optional(Schema.Number),
|
|
44
|
+
endLine: Schema.optional(Schema.Number),
|
|
45
|
+
}),
|
|
46
|
+
success: Schema.NullOr(Schema.String),
|
|
47
|
+
dependencies: [CurrentDirectory],
|
|
48
|
+
}), Tool.make("createFile", {
|
|
49
|
+
description: "Write content to a file, creating parent directories if needed.",
|
|
50
|
+
parameters: Schema.Struct({
|
|
51
|
+
path: Schema.String,
|
|
52
|
+
content: Schema.String,
|
|
53
|
+
}),
|
|
54
|
+
dependencies: [CurrentDirectory],
|
|
55
|
+
}), Tool.make("applyPatch", {
|
|
56
|
+
description: "Apply a wrapped patch with Add/Delete/Update sections.",
|
|
57
|
+
parameters: Schema.String.annotate({
|
|
58
|
+
identifier: "patch",
|
|
59
|
+
}),
|
|
60
|
+
success: Schema.String,
|
|
61
|
+
dependencies: [CurrentDirectory],
|
|
62
|
+
}), Tool.make("removeFile", {
|
|
63
|
+
description: "Remove a file.",
|
|
64
|
+
parameters: Schema.String.annotate({
|
|
65
|
+
identifier: "path",
|
|
66
|
+
}),
|
|
67
|
+
dependencies: [CurrentDirectory],
|
|
68
|
+
}), Tool.make("renameFile", {
|
|
69
|
+
description: "Rename or move a file, creating parent directories if needed.",
|
|
70
|
+
parameters: Schema.Struct({
|
|
71
|
+
from: Schema.String,
|
|
72
|
+
to: Schema.String,
|
|
73
|
+
}),
|
|
74
|
+
dependencies: [CurrentDirectory],
|
|
75
|
+
}), Tool.make("mkdir", {
|
|
76
|
+
description: "Make a directory, creating parent directories if needed.",
|
|
77
|
+
parameters: Schema.String.annotate({
|
|
78
|
+
identifier: "path",
|
|
79
|
+
}),
|
|
80
|
+
dependencies: [CurrentDirectory],
|
|
81
|
+
}), Tool.make("ls", {
|
|
82
|
+
description: "List the contents of a directory",
|
|
83
|
+
parameters: Schema.String.annotate({
|
|
84
|
+
identifier: "directory",
|
|
85
|
+
}),
|
|
86
|
+
success: Schema.Array(Schema.String),
|
|
87
|
+
dependencies: [CurrentDirectory],
|
|
88
|
+
}), Tool.make("rg", {
|
|
89
|
+
description: "Search for a pattern in files using ripgrep.",
|
|
90
|
+
parameters: Schema.Struct({
|
|
91
|
+
pattern: Schema.String,
|
|
92
|
+
glob: Schema.optional(Schema.String).annotate({
|
|
93
|
+
documentation: "--glob",
|
|
94
|
+
}),
|
|
95
|
+
maxLines: Schema.optional(Schema.Finite).annotate({
|
|
96
|
+
documentation: "The total maximum number of lines to return across all files (default: 500)",
|
|
97
|
+
}),
|
|
98
|
+
}),
|
|
99
|
+
success: Schema.String,
|
|
100
|
+
dependencies: [CurrentDirectory],
|
|
101
|
+
}), Tool.make("glob", {
|
|
102
|
+
description: "Find files matching a glob pattern.",
|
|
103
|
+
parameters: Schema.String.annotate({
|
|
104
|
+
identifier: "pattern",
|
|
105
|
+
}),
|
|
106
|
+
success: Schema.Array(Schema.String),
|
|
107
|
+
dependencies: [CurrentDirectory],
|
|
108
|
+
}), Tool.make("bash", {
|
|
109
|
+
description: "Run a bash command and return the output",
|
|
110
|
+
parameters: Schema.String.annotate({
|
|
111
|
+
identifier: "command",
|
|
112
|
+
}),
|
|
113
|
+
success: Schema.String,
|
|
114
|
+
dependencies: [CurrentDirectory],
|
|
115
|
+
}), Tool.make("gh", {
|
|
116
|
+
description: "Use the GitHub CLI to run a command and return the output",
|
|
117
|
+
parameters: Schema.Array(Schema.String).annotate({
|
|
118
|
+
identifier: "args",
|
|
119
|
+
}),
|
|
120
|
+
success: Schema.String,
|
|
121
|
+
dependencies: [CurrentDirectory],
|
|
122
|
+
}), Tool.make("subagent", {
|
|
123
|
+
description: "Prompt another agent with the same tools to assist with a subtask. The subagent will return a markdown summary of the work it did.",
|
|
124
|
+
parameters: Schema.String.annotate({
|
|
125
|
+
identifier: "prompt",
|
|
126
|
+
}),
|
|
127
|
+
success: Schema.String,
|
|
128
|
+
dependencies: [SubagentContext],
|
|
129
|
+
}), Tool.make("sleep", {
|
|
130
|
+
description: "Sleep for a specified number of milliseconds",
|
|
131
|
+
parameters: Schema.Finite.annotate({
|
|
132
|
+
identifier: "ms",
|
|
133
|
+
}),
|
|
134
|
+
}), Tool.make("taskComplete", {
|
|
135
|
+
description: "Only call this when you have fully completed the user's task. Provide a markdown summary of the work you have done.",
|
|
136
|
+
parameters: Schema.String.annotate({
|
|
137
|
+
identifier: "summary",
|
|
138
|
+
}),
|
|
139
|
+
dependencies: [TaskCompleteDeferred],
|
|
140
|
+
}));
|
|
141
|
+
/**
|
|
142
|
+
* @since 1.0.0
|
|
143
|
+
* @category Toolkit
|
|
144
|
+
*/
|
|
145
|
+
export const AgentToolHandlers = AgentTools.toLayer(Effect.gen(function* () {
|
|
146
|
+
const spawner = yield* ChildProcessSpawner.ChildProcessSpawner;
|
|
147
|
+
const fs = yield* FileSystem.FileSystem;
|
|
148
|
+
const pathService = yield* Path.Path;
|
|
149
|
+
const execute = Effect.fn(function* (command) {
|
|
150
|
+
const handle = yield* spawner.spawn(command);
|
|
151
|
+
return yield* handle.all.pipe(Stream.decodeText, Stream.mkString, Effect.flatMap(Effect.fnUntraced(function* (output) {
|
|
152
|
+
const exitCode = yield* handle.exitCode;
|
|
153
|
+
if (exitCode === 0)
|
|
154
|
+
return output;
|
|
155
|
+
return yield* Effect.die(new Error(`Command failed with exit code ${exitCode}: ${output}`));
|
|
156
|
+
})));
|
|
157
|
+
}, Effect.scoped);
|
|
158
|
+
return AgentTools.of({
|
|
159
|
+
readFile: Effect.fn("AgentTools.readFile")(function* (options) {
|
|
160
|
+
yield* Effect.logInfo(`Calling "readFile"`).pipe(Effect.annotateLogs(options));
|
|
161
|
+
const cwd = yield* CurrentDirectory;
|
|
162
|
+
let stream = pipe(fs.stream(pathService.resolve(cwd, options.path)), Stream.decodeText, Stream.splitLines);
|
|
163
|
+
if (options.startLine) {
|
|
164
|
+
stream = Stream.drop(stream, options.startLine - 1);
|
|
165
|
+
}
|
|
166
|
+
if (options.endLine) {
|
|
167
|
+
stream = Stream.take(stream, options.endLine - (options.startLine ?? 1) + 1);
|
|
168
|
+
}
|
|
169
|
+
return yield* Stream.runCollect(stream).pipe(Effect.map(Array.join("\n")), Effect.catchReason("PlatformError", "NotFound", () => Effect.succeed(null)), Effect.orDie);
|
|
170
|
+
}),
|
|
171
|
+
createFile: Effect.fn("AgentTools.createFile")(function* (options) {
|
|
172
|
+
yield* Effect.logInfo(`Calling "createFile"`).pipe(Effect.annotateLogs({ path: options.path }));
|
|
173
|
+
const cwd = yield* CurrentDirectory;
|
|
174
|
+
const path = pathService.resolve(cwd, options.path);
|
|
175
|
+
if (yield* fs.exists(path)) {
|
|
176
|
+
return yield* Effect.die("File already exists");
|
|
177
|
+
}
|
|
178
|
+
yield* fs.makeDirectory(pathService.dirname(path), {
|
|
179
|
+
recursive: true,
|
|
180
|
+
});
|
|
181
|
+
yield* fs.writeFileString(path, options.content);
|
|
182
|
+
}, Effect.orDie),
|
|
183
|
+
removeFile: Effect.fn("AgentTools.removeFile")(function* (path) {
|
|
184
|
+
yield* Effect.logInfo(`Calling "removeFile"`).pipe(Effect.annotateLogs({ path }));
|
|
185
|
+
const cwd = yield* CurrentDirectory;
|
|
186
|
+
return yield* fs.remove(pathService.resolve(cwd, path), { force: true });
|
|
187
|
+
}, Effect.orDie),
|
|
188
|
+
renameFile: Effect.fn("AgentTools.renameFile")(function* (options) {
|
|
189
|
+
yield* Effect.logInfo(`Calling "renameFile"`).pipe(Effect.annotateLogs(options));
|
|
190
|
+
const cwd = yield* CurrentDirectory;
|
|
191
|
+
const from = pathService.resolve(cwd, options.from);
|
|
192
|
+
const to = pathService.resolve(cwd, options.to);
|
|
193
|
+
yield* fs.makeDirectory(pathService.dirname(to), {
|
|
194
|
+
recursive: true,
|
|
195
|
+
});
|
|
196
|
+
return yield* fs.rename(from, to);
|
|
197
|
+
}, Effect.orDie),
|
|
198
|
+
mkdir: Effect.fn("AgentTools.mkdir")(function* (path) {
|
|
199
|
+
yield* Effect.logInfo(`Calling "mkdir"`).pipe(Effect.annotateLogs({ path }));
|
|
200
|
+
const cwd = yield* CurrentDirectory;
|
|
201
|
+
return yield* fs.makeDirectory(pathService.resolve(cwd, path), {
|
|
202
|
+
recursive: true,
|
|
203
|
+
});
|
|
204
|
+
}, Effect.orDie),
|
|
205
|
+
ls: Effect.fn("AgentTools.ls")(function* (path) {
|
|
206
|
+
yield* Effect.logInfo(`Calling "ls"`).pipe(Effect.annotateLogs({ path }));
|
|
207
|
+
const cwd = yield* CurrentDirectory;
|
|
208
|
+
return yield* fs
|
|
209
|
+
.readDirectory(pathService.resolve(cwd, path))
|
|
210
|
+
.pipe(Effect.orDie);
|
|
211
|
+
}),
|
|
212
|
+
rg: Effect.fn("AgentTools.rg")(function* (options) {
|
|
213
|
+
yield* Effect.logInfo(`Calling "rg"`).pipe(Effect.annotateLogs(options));
|
|
214
|
+
const cwd = yield* CurrentDirectory;
|
|
215
|
+
const args = ["--max-filesize", "1M", "--line-number"];
|
|
216
|
+
if (options.glob) {
|
|
217
|
+
args.push("--glob", options.glob);
|
|
218
|
+
}
|
|
219
|
+
args.push(options.pattern);
|
|
220
|
+
let stream = pipe(spawner.streamLines(ChildProcess.make(Rg.rgPath, args, {
|
|
221
|
+
cwd,
|
|
222
|
+
stdin: "ignore",
|
|
223
|
+
})), Stream.map((line) => {
|
|
224
|
+
if (line.length <= 500)
|
|
225
|
+
return line;
|
|
226
|
+
return line.slice(0, 500) + "...[truncated]";
|
|
227
|
+
}));
|
|
228
|
+
stream = Stream.take(stream, options.maxLines ?? 500);
|
|
229
|
+
return yield* Stream.runCollect(stream).pipe(Effect.map(Array.join("\n")), Effect.orDie);
|
|
230
|
+
}),
|
|
231
|
+
glob: Effect.fn("AgentTools.glob")(function* (pattern) {
|
|
232
|
+
yield* Effect.logInfo(`Calling "glob"`).pipe(Effect.annotateLogs({ pattern }));
|
|
233
|
+
const cwd = yield* CurrentDirectory;
|
|
234
|
+
return yield* Effect.promise(() => Glob.glob(pattern, { cwd }));
|
|
235
|
+
}),
|
|
236
|
+
bash: Effect.fn("AgentTools.bash")(function* (command) {
|
|
237
|
+
yield* Effect.logInfo(`Calling "bash"`).pipe(Effect.annotateLogs({ command }));
|
|
238
|
+
const cwd = yield* CurrentDirectory;
|
|
239
|
+
const cmd = ChildProcess.make("bash", ["-c", command], {
|
|
240
|
+
cwd,
|
|
241
|
+
stdin: "ignore",
|
|
242
|
+
});
|
|
243
|
+
return yield* execute(cmd);
|
|
244
|
+
}, Effect.orDie),
|
|
245
|
+
gh: Effect.fn("AgentTools.gh")(function* (args) {
|
|
246
|
+
yield* Effect.logInfo(`Calling "gh"`).pipe(Effect.annotateLogs({ args }));
|
|
247
|
+
const cwd = yield* CurrentDirectory;
|
|
248
|
+
const cmd = ChildProcess.make("gh", args, {
|
|
249
|
+
cwd,
|
|
250
|
+
stdin: "ignore",
|
|
251
|
+
});
|
|
252
|
+
return yield* execute(cmd);
|
|
253
|
+
}, Effect.orDie),
|
|
254
|
+
sleep: Effect.fn("AgentTools.sleep")(function* (ms) {
|
|
255
|
+
yield* Effect.logInfo(`Calling "sleep" for ${ms}ms`);
|
|
256
|
+
return yield* Effect.sleep(ms);
|
|
257
|
+
}),
|
|
258
|
+
applyPatch: Effect.fn("AgentTools.applyPatch")(function* (patchText) {
|
|
259
|
+
yield* Effect.logInfo(`Calling "applyPatch"`);
|
|
260
|
+
const cwd = yield* CurrentDirectory;
|
|
261
|
+
const fail = (path, reason) => Effect.fail(new ApplyPatchError({
|
|
262
|
+
message: `verification failed: Failed to read file to ${reason}: ${path}`,
|
|
263
|
+
}));
|
|
264
|
+
const state = new Map();
|
|
265
|
+
const steps = [];
|
|
266
|
+
const out = [];
|
|
267
|
+
const rel = (path) => pathService.relative(cwd, path).replaceAll("\\", "/");
|
|
268
|
+
const load = Effect.fn("AgentTools.applyPatch.load")(function* (path, reason) {
|
|
269
|
+
if (state.has(path)) {
|
|
270
|
+
const input = state.get(path);
|
|
271
|
+
if (input === null) {
|
|
272
|
+
return yield* fail(path, reason);
|
|
273
|
+
}
|
|
274
|
+
return input;
|
|
275
|
+
}
|
|
276
|
+
const input = yield* fs.readFileString(path);
|
|
277
|
+
state.set(path, input);
|
|
278
|
+
return input;
|
|
279
|
+
});
|
|
280
|
+
for (const patch of parsePatch(patchText)) {
|
|
281
|
+
const path = pathService.resolve(cwd, patch.path);
|
|
282
|
+
switch (patch.type) {
|
|
283
|
+
case "add": {
|
|
284
|
+
const next = patch.content.length === 0 || patch.content.endsWith("\n")
|
|
285
|
+
? patch.content
|
|
286
|
+
: `${patch.content}\n`;
|
|
287
|
+
state.set(path, next);
|
|
288
|
+
steps.push({
|
|
289
|
+
type: "add",
|
|
290
|
+
path,
|
|
291
|
+
next,
|
|
292
|
+
});
|
|
293
|
+
out.push(`A ${rel(path)}`);
|
|
294
|
+
break;
|
|
295
|
+
}
|
|
296
|
+
case "delete": {
|
|
297
|
+
yield* load(path, "delete");
|
|
298
|
+
state.set(path, null);
|
|
299
|
+
steps.push({
|
|
300
|
+
type: "delete",
|
|
301
|
+
path,
|
|
302
|
+
});
|
|
303
|
+
out.push(`D ${rel(path)}`);
|
|
304
|
+
break;
|
|
305
|
+
}
|
|
306
|
+
case "update": {
|
|
307
|
+
const input = yield* load(path, "update");
|
|
308
|
+
const next = patchChunks(path, input, patch.chunks);
|
|
309
|
+
const movePath = patch.movePath === undefined
|
|
310
|
+
? undefined
|
|
311
|
+
: pathService.resolve(cwd, patch.movePath);
|
|
312
|
+
if (movePath === undefined || movePath === path) {
|
|
313
|
+
state.set(path, next);
|
|
314
|
+
steps.push({
|
|
315
|
+
type: "update",
|
|
316
|
+
path,
|
|
317
|
+
next,
|
|
318
|
+
});
|
|
319
|
+
out.push(`M ${rel(path)}`);
|
|
320
|
+
break;
|
|
321
|
+
}
|
|
322
|
+
state.set(path, null);
|
|
323
|
+
state.set(movePath, next);
|
|
324
|
+
steps.push({
|
|
325
|
+
type: "move",
|
|
326
|
+
path,
|
|
327
|
+
movePath,
|
|
328
|
+
next,
|
|
329
|
+
});
|
|
330
|
+
out.push(`M ${rel(movePath)}`);
|
|
331
|
+
break;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
for (const step of steps) {
|
|
336
|
+
switch (step.type) {
|
|
337
|
+
case "add":
|
|
338
|
+
case "update": {
|
|
339
|
+
yield* fs.makeDirectory(pathService.dirname(step.path), {
|
|
340
|
+
recursive: true,
|
|
341
|
+
});
|
|
342
|
+
yield* fs.writeFileString(step.path, step.next);
|
|
343
|
+
break;
|
|
344
|
+
}
|
|
345
|
+
case "move": {
|
|
346
|
+
yield* fs.makeDirectory(pathService.dirname(step.movePath), {
|
|
347
|
+
recursive: true,
|
|
348
|
+
});
|
|
349
|
+
yield* fs.writeFileString(step.movePath, step.next);
|
|
350
|
+
yield* fs.remove(step.path);
|
|
351
|
+
break;
|
|
352
|
+
}
|
|
353
|
+
case "delete": {
|
|
354
|
+
yield* fs.remove(step.path);
|
|
355
|
+
break;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
return `Success. Updated the following files:\n${out.join("\n")}`;
|
|
360
|
+
}, Effect.orDie),
|
|
361
|
+
subagent: Effect.fn("AgentTools.subagent")(function* (prompt) {
|
|
362
|
+
yield* Effect.logInfo(`Calling "subagent"`).pipe(Effect.annotateLogs({ prompt }));
|
|
363
|
+
const context = yield* SubagentContext;
|
|
364
|
+
return yield* context.spawn({ prompt });
|
|
365
|
+
}, Effect.orDie),
|
|
366
|
+
taskComplete: Effect.fn("AgentTools.taskComplete")(function* (message) {
|
|
367
|
+
const deferred = yield* TaskCompleteDeferred;
|
|
368
|
+
yield* Deferred.succeed(deferred, message);
|
|
369
|
+
}),
|
|
370
|
+
});
|
|
371
|
+
}));
|
|
372
|
+
class ApplyPatchError extends Data.TaggedClass("ApplyPatchError") {
|
|
373
|
+
}
|
|
374
|
+
//# sourceMappingURL=AgentTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentTools.js","sourceRoot":"","sources":["../src/AgentTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentTools.test.d.ts","sourceRoot":"","sources":["../src/AgentTools.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { tmpdir } from "node:os";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { NodeFileSystem, NodeServices } from "@effect/platform-node";
|
|
4
|
+
import { Deferred, Effect, FileSystem, Stream } from "effect";
|
|
5
|
+
import { describe, it } from "@effect/vitest";
|
|
6
|
+
import { expect } from "vitest";
|
|
7
|
+
import { AgentToolHandlers, AgentTools, CurrentDirectory, makeContextNoop, TaskCompleteDeferred, } from "./AgentTools.js";
|
|
8
|
+
import { Executor } from "./Executor.js";
|
|
9
|
+
import { ToolkitRenderer } from "./ToolkitRenderer.js";
|
|
10
|
+
const makeTempRoot = (prefix) => Effect.gen(function* () {
|
|
11
|
+
const fs = yield* FileSystem.FileSystem;
|
|
12
|
+
return yield* fs.makeTempDirectoryScoped({
|
|
13
|
+
directory: tmpdir(),
|
|
14
|
+
prefix,
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
describe("AgentTools", () => {
|
|
18
|
+
it.effect("renders the tool signatures", () => Effect.gen(function* () {
|
|
19
|
+
const renderer = yield* ToolkitRenderer;
|
|
20
|
+
const output = renderer.render(AgentTools);
|
|
21
|
+
expect(output).toContain("/** Read a file and optionally filter the lines to return. Returns null if the file doesn't exist. */");
|
|
22
|
+
expect(output).toContain("declare function readFile(options: {");
|
|
23
|
+
expect(output).toContain("readonly path: string;");
|
|
24
|
+
expect(output).toContain("readonly startLine?: number | undefined;");
|
|
25
|
+
expect(output).toContain("readonly endLine?: number | undefined;");
|
|
26
|
+
expect(output).toContain("/** Apply a wrapped patch with Add/Delete/Update sections. */");
|
|
27
|
+
expect(output).toContain("declare function applyPatch(patch: string): Promise<string>");
|
|
28
|
+
expect(output).not.toContain("declare function python(");
|
|
29
|
+
}).pipe(Effect.provide([
|
|
30
|
+
AgentToolHandlers,
|
|
31
|
+
Executor.layer,
|
|
32
|
+
ToolkitRenderer.layer,
|
|
33
|
+
]), Effect.provide(NodeServices.layer), Effect.provideService(CurrentDirectory, process.cwd()), Effect.provideServiceEffect(TaskCompleteDeferred, Deferred.make())));
|
|
34
|
+
it.effect("applies multi-file patches with add, move, and delete", () => Effect.gen(function* () {
|
|
35
|
+
const fs = yield* FileSystem.FileSystem;
|
|
36
|
+
const tempRoot = yield* makeTempRoot("clanka-apply-patch-");
|
|
37
|
+
yield* fs.makeDirectory(join(tempRoot, "src"), { recursive: true });
|
|
38
|
+
yield* fs.writeFileString(join(tempRoot, "src", "app.txt"), "old\n");
|
|
39
|
+
yield* fs.writeFileString(join(tempRoot, "obsolete.txt"), "remove me\n");
|
|
40
|
+
const executor = yield* Executor;
|
|
41
|
+
const tools = yield* AgentTools;
|
|
42
|
+
const output = yield* executor
|
|
43
|
+
.execute({
|
|
44
|
+
tools,
|
|
45
|
+
script: [
|
|
46
|
+
"const output = await applyPatch(`",
|
|
47
|
+
"*** Begin Patch",
|
|
48
|
+
"*** Add File: notes/hello.txt",
|
|
49
|
+
"+hello",
|
|
50
|
+
"*** Update File: src/app.txt",
|
|
51
|
+
"*** Move to: src/main.txt",
|
|
52
|
+
"@@",
|
|
53
|
+
"-old",
|
|
54
|
+
"+new",
|
|
55
|
+
"*** Delete File: obsolete.txt",
|
|
56
|
+
"*** End Patch",
|
|
57
|
+
"`)",
|
|
58
|
+
"console.log(output)",
|
|
59
|
+
].join("\n"),
|
|
60
|
+
})
|
|
61
|
+
.pipe(Stream.mkString, Effect.provideServices(makeContextNoop(tempRoot)));
|
|
62
|
+
expect(output).toContain("A notes/hello.txt");
|
|
63
|
+
expect(output).toContain("M src/main.txt");
|
|
64
|
+
expect(output).toContain("D obsolete.txt");
|
|
65
|
+
expect(yield* fs.readFileString(join(tempRoot, "notes", "hello.txt"))).toBe("hello\n");
|
|
66
|
+
expect(yield* fs.readFileString(join(tempRoot, "src", "main.txt"))).toBe("new\n");
|
|
67
|
+
yield* Effect.flip(fs.readFileString(join(tempRoot, "obsolete.txt")));
|
|
68
|
+
yield* Effect.flip(fs.readFileString(join(tempRoot, "src", "app.txt")));
|
|
69
|
+
}).pipe(Effect.provide([
|
|
70
|
+
AgentToolHandlers,
|
|
71
|
+
Executor.layer,
|
|
72
|
+
ToolkitRenderer.layer,
|
|
73
|
+
]), Effect.provide(NodeServices.layer)));
|
|
74
|
+
it.effect("plans later hunks against in-memory file state", () => Effect.gen(function* () {
|
|
75
|
+
const fs = yield* FileSystem.FileSystem;
|
|
76
|
+
const tempRoot = yield* makeTempRoot("clanka-apply-patch-state-");
|
|
77
|
+
yield* fs.makeDirectory(join(tempRoot, "src"), { recursive: true });
|
|
78
|
+
yield* fs.writeFileString(join(tempRoot, "src", "app.txt"), "old\n");
|
|
79
|
+
const executor = yield* Executor;
|
|
80
|
+
const tools = yield* AgentTools;
|
|
81
|
+
const output = yield* executor
|
|
82
|
+
.execute({
|
|
83
|
+
tools,
|
|
84
|
+
script: [
|
|
85
|
+
"const output = await applyPatch(`",
|
|
86
|
+
"*** Begin Patch",
|
|
87
|
+
"*** Add File: notes/hello.txt",
|
|
88
|
+
"+hello",
|
|
89
|
+
"*** Update File: notes/hello.txt",
|
|
90
|
+
"@@",
|
|
91
|
+
"-hello",
|
|
92
|
+
"+hello again",
|
|
93
|
+
"*** Update File: src/app.txt",
|
|
94
|
+
"*** Move to: src/main.txt",
|
|
95
|
+
"@@",
|
|
96
|
+
"-old",
|
|
97
|
+
"+new",
|
|
98
|
+
"*** Update File: src/main.txt",
|
|
99
|
+
"@@",
|
|
100
|
+
"-new",
|
|
101
|
+
"+newer",
|
|
102
|
+
"*** End Patch",
|
|
103
|
+
"`)",
|
|
104
|
+
"console.log(output)",
|
|
105
|
+
].join("\n"),
|
|
106
|
+
})
|
|
107
|
+
.pipe(Stream.mkString, Effect.provideServices(makeContextNoop(tempRoot)));
|
|
108
|
+
expect(output).toContain("A notes/hello.txt");
|
|
109
|
+
expect(output).toContain("M notes/hello.txt");
|
|
110
|
+
expect(output).toContain("M src/main.txt");
|
|
111
|
+
expect(yield* fs.readFileString(join(tempRoot, "notes", "hello.txt"))).toBe("hello again\n");
|
|
112
|
+
expect(yield* fs.readFileString(join(tempRoot, "src", "main.txt"))).toBe("newer\n");
|
|
113
|
+
yield* Effect.flip(fs.readFileString(join(tempRoot, "src", "app.txt")));
|
|
114
|
+
}).pipe(Effect.provide([
|
|
115
|
+
AgentToolHandlers,
|
|
116
|
+
Executor.layer,
|
|
117
|
+
ToolkitRenderer.layer,
|
|
118
|
+
]), Effect.provide(NodeServices.layer)));
|
|
119
|
+
it.effect("renames a file", () => Effect.gen(function* () {
|
|
120
|
+
const fs = yield* FileSystem.FileSystem;
|
|
121
|
+
const tempRoot = yield* makeTempRoot("clanka-rename-file-");
|
|
122
|
+
yield* fs.makeDirectory(join(tempRoot, "src"), { recursive: true });
|
|
123
|
+
yield* fs.writeFileString(join(tempRoot, "src", "app.txt"), "hello\n");
|
|
124
|
+
const executor = yield* Executor;
|
|
125
|
+
const tools = yield* AgentTools;
|
|
126
|
+
yield* executor
|
|
127
|
+
.execute({
|
|
128
|
+
tools,
|
|
129
|
+
script: [
|
|
130
|
+
"await renameFile({",
|
|
131
|
+
' from: "src/app.txt",',
|
|
132
|
+
' to: "src/main.txt",',
|
|
133
|
+
"})",
|
|
134
|
+
'console.log("renamed")',
|
|
135
|
+
].join("\n"),
|
|
136
|
+
})
|
|
137
|
+
.pipe(Stream.mkString, Effect.provideServices(makeContextNoop(tempRoot)));
|
|
138
|
+
expect(yield* fs.readFileString(join(tempRoot, "src", "main.txt"))).toBe("hello\n");
|
|
139
|
+
yield* Effect.flip(fs.readFileString(join(tempRoot, "src", "app.txt")));
|
|
140
|
+
}).pipe(Effect.provide([
|
|
141
|
+
AgentToolHandlers,
|
|
142
|
+
Executor.layer,
|
|
143
|
+
ToolkitRenderer.layer,
|
|
144
|
+
NodeFileSystem.layer,
|
|
145
|
+
]), Effect.provide(NodeServices.layer)));
|
|
146
|
+
});
|
|
147
|
+
//# sourceMappingURL=AgentTools.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentTools.test.js","sourceRoot":"","sources":["../src/AgentTools.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
export type Chunk = {
|
|
5
|
+
readonly old: ReadonlyArray<string>;
|
|
6
|
+
readonly next: ReadonlyArray<string>;
|
|
7
|
+
readonly ctx?: string;
|
|
8
|
+
readonly eof?: boolean;
|
|
9
|
+
};
|
|
10
|
+
export type FilePatch = {
|
|
11
|
+
readonly type: "add";
|
|
12
|
+
readonly path: string;
|
|
13
|
+
readonly content: string;
|
|
14
|
+
} | {
|
|
15
|
+
readonly type: "delete";
|
|
16
|
+
readonly path: string;
|
|
17
|
+
} | {
|
|
18
|
+
readonly type: "update";
|
|
19
|
+
readonly path: string;
|
|
20
|
+
readonly chunks: ReadonlyArray<Chunk>;
|
|
21
|
+
readonly movePath?: string;
|
|
22
|
+
};
|
|
23
|
+
export declare const parsePatch: (input: string) => ReadonlyArray<FilePatch>;
|
|
24
|
+
export declare const wrappedPath: (input: string) => string | undefined;
|
|
25
|
+
export declare const patchChunks: (file: string, input: string, chunks: ReadonlyArray<Chunk>) => string;
|
|
26
|
+
export declare const patchContent: (file: string, input: string, patchText: string) => string;
|
|
27
|
+
//# sourceMappingURL=ApplyPatch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApplyPatch.d.ts","sourceRoot":"","sources":["../src/ApplyPatch.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACnC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACpC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA;AAOD,MAAM,MAAM,SAAS,GACjB;IACE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,CAAA;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA;AAgKL,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,aAAa,CAAC,SAAS,CAuFjE,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,MAAM,GAAG,SAMpD,CAAA;AA8JD,eAAO,MAAM,WAAW,GACtB,MAAM,MAAM,EACZ,OAAO,MAAM,EACb,QAAQ,aAAa,CAAC,KAAK,CAAC,KAC3B,MAkBF,CAAA;AAED,eAAO,MAAM,YAAY,GACvB,MAAM,MAAM,EACZ,OAAO,MAAM,EACb,WAAW,MAAM,KAChB,MAAoD,CAAA"}
|