clanka 0.5.2 → 0.6.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/dist/Acp.d.ts.map +1 -1
- package/dist/Acp.js +195 -16
- package/dist/Acp.js.map +1 -1
- package/dist/AcpImage.test.d.ts +2 -0
- package/dist/AcpImage.test.d.ts.map +1 -0
- package/dist/AcpImage.test.js +470 -0
- package/dist/AcpImage.test.js.map +1 -0
- package/dist/Agent.d.ts +9 -2
- package/dist/Agent.d.ts.map +1 -1
- package/dist/Agent.js +43 -6
- package/dist/Agent.js.map +1 -1
- package/dist/AgentExecutor.d.ts +27 -5
- package/dist/AgentExecutor.d.ts.map +1 -1
- package/dist/AgentExecutor.js +29 -4
- package/dist/AgentExecutor.js.map +1 -1
- package/dist/AgentExecutorImage.test.d.ts +2 -0
- package/dist/AgentExecutorImage.test.d.ts.map +1 -0
- package/dist/AgentExecutorImage.test.js +63 -0
- package/dist/AgentExecutorImage.test.js.map +1 -0
- package/dist/AgentImage.test.d.ts +2 -0
- package/dist/AgentImage.test.d.ts.map +1 -0
- package/dist/AgentImage.test.js +176 -0
- package/dist/AgentImage.test.js.map +1 -0
- package/dist/AgentTools.d.ts +25 -5
- package/dist/AgentTools.d.ts.map +1 -1
- package/dist/AgentTools.js +40 -4
- package/dist/AgentTools.js.map +1 -1
- package/dist/AgentToolsImage.test.d.ts +2 -0
- package/dist/AgentToolsImage.test.d.ts.map +1 -0
- package/dist/AgentToolsImage.test.js +158 -0
- package/dist/AgentToolsImage.test.js.map +1 -0
- package/dist/Codex.js +6 -1
- package/dist/Codex.js.map +1 -1
- package/dist/Compaction.d.ts.map +1 -1
- package/dist/Compaction.js +16 -1
- package/dist/Compaction.js.map +1 -1
- package/dist/CompactionImage.test.d.ts +2 -0
- package/dist/CompactionImage.test.d.ts.map +1 -0
- package/dist/CompactionImage.test.js +105 -0
- package/dist/CompactionImage.test.js.map +1 -0
- package/dist/Copilot.d.ts.map +1 -1
- package/dist/Copilot.js +5 -1
- package/dist/Copilot.js.map +1 -1
- package/dist/Image.d.ts +192 -0
- package/dist/Image.d.ts.map +1 -0
- package/dist/Image.js +586 -0
- package/dist/Image.js.map +1 -0
- package/dist/Image.test.d.ts +2 -0
- package/dist/Image.test.d.ts.map +1 -0
- package/dist/Image.test.js +142 -0
- package/dist/Image.test.js.map +1 -0
- package/dist/cli.js +2 -1
- package/dist/cli.js.map +1 -1
- package/dist/fixtures/TestImages.d.ts +73 -0
- package/dist/fixtures/TestImages.d.ts.map +1 -0
- package/dist/fixtures/TestImages.js +263 -0
- package/dist/fixtures/TestImages.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
- package/src/Acp.ts +274 -21
- package/src/AcpImage.test.ts +676 -0
- package/src/Agent.ts +69 -7
- package/src/AgentExecutor.ts +51 -3
- package/src/AgentExecutorImage.test.ts +103 -0
- package/src/AgentImage.test.ts +295 -0
- package/src/AgentTools.ts +78 -7
- package/src/AgentToolsImage.test.ts +302 -0
- package/src/Codex.ts +6 -1
- package/src/Compaction.ts +16 -1
- package/src/CompactionImage.test.ts +142 -0
- package/src/Copilot.ts +5 -1
- package/src/Image.test.ts +220 -0
- package/src/Image.ts +704 -0
- package/src/cli.ts +2 -1
- package/src/fixtures/TestImages.ts +287 -0
- package/src/index.ts +5 -0
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { assert, describe, it } from "@effect/vitest";
|
|
2
|
+
import * as Duration from "effect/Duration";
|
|
3
|
+
import * as Deferred from "effect/Deferred";
|
|
4
|
+
import * as Effect from "effect/Effect";
|
|
5
|
+
import * as Exit from "effect/Exit";
|
|
6
|
+
import * as Layer from "effect/Layer";
|
|
7
|
+
import * as Option from "effect/Option";
|
|
8
|
+
import * as Stream from "effect/Stream";
|
|
9
|
+
import * as AiError from "effect/unstable/ai/AiError";
|
|
10
|
+
import * as LanguageModel from "effect/unstable/ai/LanguageModel";
|
|
11
|
+
import * as Model from "effect/unstable/ai/Model";
|
|
12
|
+
import * as Agent from "./Agent.js";
|
|
13
|
+
import * as AgentExecutor from "./AgentExecutor.js";
|
|
14
|
+
import { tinyPng } from "./fixtures/TestImages.js";
|
|
15
|
+
const capabilities = new AgentExecutor.Capabilities({
|
|
16
|
+
toolsDts: "",
|
|
17
|
+
agentsMd: Option.none(),
|
|
18
|
+
supportsSearch: false,
|
|
19
|
+
skills: [],
|
|
20
|
+
});
|
|
21
|
+
const makeExecutor = (execute = () => Stream.empty) => AgentExecutor.AgentExecutor.of({
|
|
22
|
+
capabilities: Effect.succeed(capabilities),
|
|
23
|
+
execute,
|
|
24
|
+
executeUnsafe: () => Effect.die("executeUnsafe not implemented"),
|
|
25
|
+
});
|
|
26
|
+
const runAgent = (options) => Effect.gen(function* () {
|
|
27
|
+
const calls = [];
|
|
28
|
+
const languageModel = yield* LanguageModel.make({
|
|
29
|
+
generateText: () => Effect.succeed([]),
|
|
30
|
+
streamText: (providerOptions) => {
|
|
31
|
+
const call = { prompt: providerOptions.prompt };
|
|
32
|
+
const index = calls.push(call) - 1;
|
|
33
|
+
return options.respond(call, index);
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
const modelLayer = Layer.mergeAll(Layer.succeed(LanguageModel.LanguageModel, languageModel), Layer.succeed(Model.ProviderName, "test-provider"), Layer.succeed(Model.ModelName, "test-model"));
|
|
37
|
+
const agent = yield* Agent.make.pipe(Effect.provideService(AgentExecutor.AgentExecutor, options.executor ?? makeExecutor()));
|
|
38
|
+
const exit = yield* agent.send({ prompt: options.prompt }).pipe(Effect.flatMap((stream) => stream.pipe(Stream.runDrain, Effect.as(""), Effect.catchTag("AgentFinished", (finished) => Effect.succeed(finished.summary)))), Effect.provide(Layer.mergeAll(modelLayer, Agent.ConversationMode.layer(true), Agent.layerSubagentModel(modelLayer), Agent.AgentModelConfig.layer(options.modelConfig ?? {}), Layer.succeed(Agent.TurnTimeout, Duration.minutes(5)))), Effect.exit);
|
|
39
|
+
return { exit, calls, history: agent.history.current };
|
|
40
|
+
}).pipe(Effect.scoped);
|
|
41
|
+
const text = (content) => [
|
|
42
|
+
{ type: "text-start", id: "t" },
|
|
43
|
+
{ type: "text-delta", id: "t", delta: content },
|
|
44
|
+
{ type: "text-end", id: "t" },
|
|
45
|
+
];
|
|
46
|
+
const toolCall = (id, script) => ({
|
|
47
|
+
type: "tool-call",
|
|
48
|
+
id,
|
|
49
|
+
name: "execute",
|
|
50
|
+
params: { script },
|
|
51
|
+
});
|
|
52
|
+
/** A user turn with a caption and a screenshot, as ACP ingest would build. */
|
|
53
|
+
const imagePrompt = [
|
|
54
|
+
{
|
|
55
|
+
role: "user",
|
|
56
|
+
content: [
|
|
57
|
+
{ type: "text", text: "what is in this screenshot?" },
|
|
58
|
+
{
|
|
59
|
+
type: "file",
|
|
60
|
+
mediaType: "image/png",
|
|
61
|
+
fileName: "shot.png",
|
|
62
|
+
data: tinyPng,
|
|
63
|
+
},
|
|
64
|
+
],
|
|
65
|
+
},
|
|
66
|
+
];
|
|
67
|
+
const fileParts = (prompt) => prompt.content.flatMap((message) => message.role === "user"
|
|
68
|
+
? message.content.filter((part) => part.type === "file")
|
|
69
|
+
: []);
|
|
70
|
+
const userText = (prompt) => prompt.content
|
|
71
|
+
.flatMap((message) => message.role === "user"
|
|
72
|
+
? message.content.flatMap((part) => part.type === "text" ? [part.text] : [])
|
|
73
|
+
: [])
|
|
74
|
+
.join("\n");
|
|
75
|
+
const omittedNote = /\[image: shot\.png omitted\]/;
|
|
76
|
+
/** Mirrors the OpenAI rejection for image input on a text-only model. */
|
|
77
|
+
const unsupportedImageError = AiError.make({
|
|
78
|
+
module: "OpenAiLanguageModel",
|
|
79
|
+
method: "streamText",
|
|
80
|
+
reason: new AiError.InvalidRequestError({
|
|
81
|
+
description: "Invalid content type. image_url is only supported by certain models. (POST https://api.openai.com/v1/responses) [code: invalid_value]",
|
|
82
|
+
}),
|
|
83
|
+
});
|
|
84
|
+
const unrelatedError = AiError.make({
|
|
85
|
+
module: "OpenAiLanguageModel",
|
|
86
|
+
method: "streamText",
|
|
87
|
+
reason: new AiError.InvalidRequestError({
|
|
88
|
+
description: "Unsupported parameter: 'temperature' is not supported with this model. (POST https://api.openai.com/v1/responses)",
|
|
89
|
+
}),
|
|
90
|
+
});
|
|
91
|
+
describe("Agent images", () => {
|
|
92
|
+
it.effect("strips images and leaves an omitted note for a model known not to take images", () => Effect.gen(function* () {
|
|
93
|
+
const { exit, calls } = yield* runAgent({
|
|
94
|
+
prompt: imagePrompt,
|
|
95
|
+
modelConfig: { supportsImages: false },
|
|
96
|
+
respond: () => Stream.fromIterable(text("I cannot see images.")),
|
|
97
|
+
});
|
|
98
|
+
assert.isTrue(Exit.isSuccess(exit));
|
|
99
|
+
assert.strictEqual(calls.length, 1);
|
|
100
|
+
assert.strictEqual(fileParts(calls[0].prompt).length, 0);
|
|
101
|
+
const prompt = userText(calls[0].prompt);
|
|
102
|
+
assert.include(prompt, "what is in this screenshot?");
|
|
103
|
+
assert.match(prompt, omittedNote);
|
|
104
|
+
}));
|
|
105
|
+
it.effect("retries without images and discards attachments from the failed attempt", () => Effect.gen(function* () {
|
|
106
|
+
const attached = yield* Deferred.make();
|
|
107
|
+
let executions = 0;
|
|
108
|
+
const executor = makeExecutor(({ onImage }) => Stream.fromEffect(Effect.gen(function* () {
|
|
109
|
+
executions++;
|
|
110
|
+
yield* onImage({
|
|
111
|
+
data: tinyPng,
|
|
112
|
+
mediaType: "image/png",
|
|
113
|
+
fileName: executions === 1 ? "discarded.png" : "shot.png",
|
|
114
|
+
});
|
|
115
|
+
yield* Deferred.succeed(attached, undefined);
|
|
116
|
+
return "Image attached";
|
|
117
|
+
})));
|
|
118
|
+
const { exit, calls, history } = yield* runAgent({
|
|
119
|
+
prompt: imagePrompt,
|
|
120
|
+
executor,
|
|
121
|
+
respond: (_, index) => index === 0
|
|
122
|
+
? Stream.make(toolCall("discarded", 'await readFile({ path: "shot.png" })')).pipe(
|
|
123
|
+
// Advance past the tool-call chunk so its handler starts.
|
|
124
|
+
Stream.concat(Stream.make({ type: "text-start", id: "failed" })), Stream.concat(Stream.fromEffect(Deferred.await(attached).pipe(Effect.andThen(Effect.fail(unsupportedImageError))))))
|
|
125
|
+
: index === 1
|
|
126
|
+
? Stream.make(toolCall("retried", 'await readFile({ path: "shot.png" })'))
|
|
127
|
+
: Stream.fromIterable(text("Text only, but I tried.")),
|
|
128
|
+
});
|
|
129
|
+
assert.isTrue(Exit.isSuccess(exit));
|
|
130
|
+
assert.strictEqual(calls.length, 3);
|
|
131
|
+
assert.strictEqual(executions, 2);
|
|
132
|
+
assert.deepStrictEqual(fileParts(history).map((part) => part.fileName), ["shot.png", "shot.png"]);
|
|
133
|
+
assert.strictEqual(fileParts(calls[0].prompt).length, 1);
|
|
134
|
+
assert.strictEqual(fileParts(calls[1].prompt).length, 0);
|
|
135
|
+
const retried = userText(calls[1].prompt);
|
|
136
|
+
assert.include(retried, "what is in this screenshot?");
|
|
137
|
+
assert.match(retried, omittedNote);
|
|
138
|
+
}));
|
|
139
|
+
it.effect("does not retry when the provider rejects it a second time", () => Effect.gen(function* () {
|
|
140
|
+
const { exit, calls } = yield* runAgent({
|
|
141
|
+
prompt: imagePrompt,
|
|
142
|
+
respond: () => Stream.fail(unsupportedImageError),
|
|
143
|
+
});
|
|
144
|
+
assert.isTrue(Exit.isFailure(exit));
|
|
145
|
+
assert.strictEqual(calls.length, 2);
|
|
146
|
+
}));
|
|
147
|
+
it.effect("does not treat other invalid-request errors as image rejections", () => Effect.gen(function* () {
|
|
148
|
+
const { exit, calls } = yield* runAgent({
|
|
149
|
+
prompt: imagePrompt,
|
|
150
|
+
respond: () => Stream.fail(unrelatedError),
|
|
151
|
+
});
|
|
152
|
+
assert.isTrue(Exit.isFailure(exit));
|
|
153
|
+
assert.strictEqual(calls.length, 1);
|
|
154
|
+
}));
|
|
155
|
+
it.effect("does not copy image bytes into a delegate prompt", () => Effect.gen(function* () {
|
|
156
|
+
const executor = makeExecutor(({ onSubagent }) => Stream.fromEffect(onSubagent("child task: describe the layout")));
|
|
157
|
+
const { exit, calls } = yield* runAgent({
|
|
158
|
+
prompt: imagePrompt,
|
|
159
|
+
executor,
|
|
160
|
+
respond: (call, index) => {
|
|
161
|
+
if (index === 0) {
|
|
162
|
+
return Stream.make(toolCall("call-1", 'await delegate("describe the layout")'));
|
|
163
|
+
}
|
|
164
|
+
const isChild = userText(call.prompt).includes("child task");
|
|
165
|
+
return Stream.fromIterable(text(isChild ? "child done" : "parent done"));
|
|
166
|
+
},
|
|
167
|
+
});
|
|
168
|
+
assert.isTrue(Exit.isSuccess(exit));
|
|
169
|
+
const child = calls.find((call) => userText(call.prompt).includes("child task"));
|
|
170
|
+
assert.isDefined(child, "the delegate call reached the model");
|
|
171
|
+
assert.strictEqual(fileParts(child.prompt).length, 0);
|
|
172
|
+
// The parent still has its image.
|
|
173
|
+
assert.strictEqual(fileParts(calls[0].prompt).length, 1);
|
|
174
|
+
}));
|
|
175
|
+
});
|
|
176
|
+
//# sourceMappingURL=AgentImage.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentImage.test.js","sourceRoot":"","sources":["../src/AgentImage.test.ts"],"names":[],"mappings":"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"}
|
package/dist/AgentTools.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ import * as FileSystem from "effect/FileSystem";
|
|
|
11
11
|
import * as Path from "effect/Path";
|
|
12
12
|
import * as Layer from "effect/Layer";
|
|
13
13
|
import * as SemanticSearch from "./SemanticSearch/Service.ts";
|
|
14
|
+
import * as Image from "./Image.ts";
|
|
14
15
|
declare const CurrentDirectory_base: Context.ServiceClass<CurrentDirectory, "clanka/AgentTools/CurrentDirectory", string>;
|
|
15
16
|
/**
|
|
16
17
|
* @since 1.0.0
|
|
@@ -39,11 +40,30 @@ declare const SubagentExecutor_base: Context.ServiceClass<SubagentExecutor, "cla
|
|
|
39
40
|
*/
|
|
40
41
|
export declare class SubagentExecutor extends SubagentExecutor_base {
|
|
41
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* An image read by `readFile`, handed to the Agent so it can be spliced onto
|
|
45
|
+
* the Prompt for the next model turn.
|
|
46
|
+
*
|
|
47
|
+
* @since 1.0.0
|
|
48
|
+
* @category Models
|
|
49
|
+
*/
|
|
50
|
+
export interface ImageAttachment {
|
|
51
|
+
readonly fileName: string;
|
|
52
|
+
readonly mediaType: Image.ImageMediaType;
|
|
53
|
+
readonly data: Uint8Array;
|
|
54
|
+
}
|
|
55
|
+
declare const ImageAttacher_base: Context.ServiceClass<ImageAttacher, "clanka/AgentTools/ImageAttacher", (image: ImageAttachment) => Effect.Effect<void>>;
|
|
42
56
|
/**
|
|
43
57
|
* @since 1.0.0
|
|
44
58
|
* @category Context
|
|
45
59
|
*/
|
|
46
|
-
export declare
|
|
60
|
+
export declare class ImageAttacher extends ImageAttacher_base {
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* @since 1.0.0
|
|
64
|
+
* @category Context
|
|
65
|
+
*/
|
|
66
|
+
export declare const makeContextNoop: (cwd?: string) => Context.Context<CurrentDirectory | DirectoryChanger | ImageAttacher | SubagentExecutor | TaskCompleter>;
|
|
47
67
|
declare const TodoItem_base: Schema.Opaque<TodoItem, Schema.Struct<{
|
|
48
68
|
readonly id: Schema.Number;
|
|
49
69
|
readonly text: Schema.String;
|
|
@@ -138,7 +158,7 @@ export declare const AgentTools: Toolkit.Toolkit<{
|
|
|
138
158
|
readonly success: Schema.NullOr<Schema.String>;
|
|
139
159
|
readonly failure: Schema.Never;
|
|
140
160
|
readonly failureMode: "error";
|
|
141
|
-
}, CurrentDirectory>;
|
|
161
|
+
}, CurrentDirectory | ImageAttacher>;
|
|
142
162
|
readonly removeFile: Tool.Tool<"removeFile", {
|
|
143
163
|
readonly parameters: Schema.String;
|
|
144
164
|
readonly success: Schema.Void;
|
|
@@ -289,7 +309,7 @@ export declare const AgentToolsWithSearch: Toolkit.Toolkit<{
|
|
|
289
309
|
readonly success: Schema.NullOr<Schema.String>;
|
|
290
310
|
readonly failure: Schema.Never;
|
|
291
311
|
readonly failureMode: "error";
|
|
292
|
-
}, CurrentDirectory>;
|
|
312
|
+
}, CurrentDirectory | ImageAttacher>;
|
|
293
313
|
readonly removeFile: Tool.Tool<"removeFile", {
|
|
294
314
|
readonly parameters: Schema.String;
|
|
295
315
|
readonly success: Schema.Void;
|
|
@@ -446,7 +466,7 @@ export declare const AgentToolHandlersNoDeps: Layer.Layer<Tool.HandlersFor<{
|
|
|
446
466
|
readonly success: Schema.NullOr<Schema.String>;
|
|
447
467
|
readonly failure: Schema.Never;
|
|
448
468
|
readonly failureMode: "error";
|
|
449
|
-
}, CurrentDirectory>;
|
|
469
|
+
}, CurrentDirectory | ImageAttacher>;
|
|
450
470
|
readonly removeFile: Tool.Tool<"removeFile", {
|
|
451
471
|
readonly parameters: Schema.String;
|
|
452
472
|
readonly success: Schema.Void;
|
|
@@ -608,7 +628,7 @@ export declare const AgentToolHandlersTest: Layer.Layer<Tool.HandlersFor<{
|
|
|
608
628
|
readonly success: Schema.NullOr<Schema.String>;
|
|
609
629
|
readonly failure: Schema.Never;
|
|
610
630
|
readonly failureMode: "error";
|
|
611
|
-
}, CurrentDirectory>;
|
|
631
|
+
}, CurrentDirectory | ImageAttacher>;
|
|
612
632
|
readonly removeFile: Tool.Tool<"removeFile", {
|
|
613
633
|
readonly parameters: Schema.String;
|
|
614
634
|
readonly success: Schema.Void;
|
package/dist/AgentTools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentTools.d.ts","sourceRoot":"","sources":["../src/AgentTools.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AACnD,OAAO,KAAK,KAAK,UAAU,MAAM,iCAAiC,CAAA;AAClE,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,OAAO,MAAM,4BAA4B,CAAA;AACrD,OAAO,KAAK,IAAI,MAAM,yBAAyB,CAAA;AAC/C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,mBAAmB,MAAM,6CAA6C,CAAA;AAClF,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AAMnC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"AgentTools.d.ts","sourceRoot":"","sources":["../src/AgentTools.ts"],"names":[],"mappings":"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"}
|
package/dist/AgentTools.js
CHANGED
|
@@ -20,7 +20,9 @@ import { pipe } from "effect/Function";
|
|
|
20
20
|
import * as Array from "effect/Array";
|
|
21
21
|
import * as Data from "effect/Data";
|
|
22
22
|
import * as Layer from "effect/Layer";
|
|
23
|
+
import * as Option from "effect/Option";
|
|
23
24
|
import * as SemanticSearch from "./SemanticSearch/Service.js";
|
|
25
|
+
import * as Image from "./Image.js";
|
|
24
26
|
/**
|
|
25
27
|
* @since 1.0.0
|
|
26
28
|
* @category Context
|
|
@@ -49,7 +51,13 @@ export class SubagentExecutor extends Context.Service()("clanka/AgentTools/Subag
|
|
|
49
51
|
* @since 1.0.0
|
|
50
52
|
* @category Context
|
|
51
53
|
*/
|
|
52
|
-
export
|
|
54
|
+
export class ImageAttacher extends Context.Service()("clanka/AgentTools/ImageAttacher") {
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* @since 1.0.0
|
|
58
|
+
* @category Context
|
|
59
|
+
*/
|
|
60
|
+
export const makeContextNoop = (cwd) => SubagentExecutor.context(() => Effect.die("Not implemented")).pipe(Context.add(CurrentDirectory, cwd ?? "/"), Context.add(DirectoryChanger, () => Effect.die("Not implemented")), Context.add(TaskCompleter, () => Effect.void), Context.add(ImageAttacher, () => Effect.void));
|
|
53
61
|
class TodoItem extends Schema.Opaque()(Schema.Struct({
|
|
54
62
|
id: Schema.Number,
|
|
55
63
|
text: Schema.String,
|
|
@@ -66,14 +74,14 @@ export const AgentTools = Toolkit.make(Tool.make("changeDirectory", {
|
|
|
66
74
|
success: Schema.String,
|
|
67
75
|
dependencies: [DirectoryChanger],
|
|
68
76
|
}), Tool.make("readFile", {
|
|
69
|
-
description: "Read a file and optionally filter the lines to return. Returns null if the file doesn't exist.",
|
|
77
|
+
description: "Read a file and optionally filter the lines to return. Returns null if the file doesn't exist. For png/jpeg/gif/webp files the image itself is attached to your next turn and a short marker is returned instead of the bytes; line ranges are not allowed on images.",
|
|
70
78
|
parameters: Schema.Struct({
|
|
71
79
|
path: Schema.String,
|
|
72
80
|
startLine: Schema.optional(Schema.Number),
|
|
73
81
|
endLine: Schema.optional(Schema.Number),
|
|
74
82
|
}),
|
|
75
83
|
success: Schema.NullOr(Schema.String),
|
|
76
|
-
dependencies: [CurrentDirectory],
|
|
84
|
+
dependencies: [CurrentDirectory, ImageAttacher],
|
|
77
85
|
}), Tool.make("rg", {
|
|
78
86
|
description: "Search for a pattern in files using ripgrep",
|
|
79
87
|
parameters: Schema.Struct({
|
|
@@ -232,6 +240,29 @@ export const AgentToolHandlersNoDeps = AgentToolsWithSearch.toLayer(Effect.gen(f
|
|
|
232
240
|
return yield* Effect.die(new Error(`Command failed with exit code ${exitCode}: ${output}`));
|
|
233
241
|
})));
|
|
234
242
|
}, Effect.scoped);
|
|
243
|
+
/**
|
|
244
|
+
* Image branch of `readFile`: the bytes go to the `ImageAttacher` for
|
|
245
|
+
* the next model turn and the script only sees a marker.
|
|
246
|
+
*/
|
|
247
|
+
const readImage = Effect.fnUntraced(function* (path, extensionType, options) {
|
|
248
|
+
if (options.startLine !== undefined || options.endLine !== undefined) {
|
|
249
|
+
return yield* Effect.die(new Error(`startLine / endLine are not supported for images: ${path}`));
|
|
250
|
+
}
|
|
251
|
+
const bytes = yield* Image.readBoundedFile(fs, path).pipe(Effect.catchReason("PlatformError", "NotFound", () => Effect.succeed(null)), Effect.orDie);
|
|
252
|
+
if (bytes === null)
|
|
253
|
+
return null;
|
|
254
|
+
// The extension picks the branch; the magic bytes pick the real type.
|
|
255
|
+
const mediaType = Option.getOrElse(Image.mediaTypeFromBytes(bytes), () => extensionType);
|
|
256
|
+
const prepared = yield* Image.prepare({ data: bytes, mediaType }).pipe(Effect.mapError((error) => new Error(`${error.message} (${path})`)), Effect.orDie);
|
|
257
|
+
const fileName = pathService.basename(path);
|
|
258
|
+
const attach = yield* ImageAttacher;
|
|
259
|
+
yield* attach({
|
|
260
|
+
fileName,
|
|
261
|
+
mediaType: prepared.mediaType,
|
|
262
|
+
data: prepared.data,
|
|
263
|
+
});
|
|
264
|
+
return `Image attached: ${fileName}`;
|
|
265
|
+
});
|
|
235
266
|
return AgentToolsWithSearch.of({
|
|
236
267
|
changeDirectory: Effect.fn("AgentTools.changeDirectory")(function* (directory) {
|
|
237
268
|
yield* Effect.logInfo(`Calling "changeDirectory"`).pipe(Effect.annotateLogs({ directory }));
|
|
@@ -241,7 +272,12 @@ export const AgentToolHandlersNoDeps = AgentToolsWithSearch.toLayer(Effect.gen(f
|
|
|
241
272
|
readFile: Effect.fn("AgentTools.readFile")(function* (options) {
|
|
242
273
|
yield* Effect.logInfo(`Calling "readFile"`).pipe(Effect.annotateLogs(options));
|
|
243
274
|
const cwd = yield* CurrentDirectory;
|
|
244
|
-
|
|
275
|
+
const path = pathService.resolve(cwd, options.path);
|
|
276
|
+
const imageType = Image.mediaTypeFromPath(path);
|
|
277
|
+
if (Option.isSome(imageType)) {
|
|
278
|
+
return yield* readImage(path, imageType.value, options);
|
|
279
|
+
}
|
|
280
|
+
let stream = pipe(fs.stream(path), Stream.decodeText, Stream.splitLines);
|
|
245
281
|
if (options.startLine) {
|
|
246
282
|
stream = Stream.drop(stream, options.startLine - 1);
|
|
247
283
|
}
|
package/dist/AgentTools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentTools.js","sourceRoot":"","sources":["../src/AgentTools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AgentTools.js","sourceRoot":"","sources":["../src/AgentTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentToolsImage.test.d.ts","sourceRoot":"","sources":["../src/AgentToolsImage.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import * as Photon from "@silvia-odwyer/photon-node";
|
|
2
|
+
import { assert, describe, it } from "@effect/vitest";
|
|
3
|
+
import { vi } from "vitest";
|
|
4
|
+
import * as NodeHttpClient from "@effect/platform-node/NodeHttpClient";
|
|
5
|
+
import * as NodeServices from "@effect/platform-node/NodeServices";
|
|
6
|
+
import * as Duration from "effect/Duration";
|
|
7
|
+
import * as Effect from "effect/Effect";
|
|
8
|
+
import * as Exit from "effect/Exit";
|
|
9
|
+
import * as FileSystem from "effect/FileSystem";
|
|
10
|
+
import * as Layer from "effect/Layer";
|
|
11
|
+
import * as Path from "effect/Path";
|
|
12
|
+
import * as Stream from "effect/Stream";
|
|
13
|
+
import * as LanguageModel from "effect/unstable/ai/LanguageModel";
|
|
14
|
+
import * as Model from "effect/unstable/ai/Model";
|
|
15
|
+
import * as Agent from "./Agent.js";
|
|
16
|
+
import * as AgentExecutor from "./AgentExecutor.js";
|
|
17
|
+
import { bytesOf, dimensions, encodePng, equalBytes, tinyPng, } from "./fixtures/TestImages.js";
|
|
18
|
+
const svgText = '<svg xmlns="http://www.w3.org/2000/svg"><rect width="1" height="1"/></svg>';
|
|
19
|
+
/**
|
|
20
|
+
* A temp project directory holding the image fixtures, with a real local
|
|
21
|
+
* executor rooted in it.
|
|
22
|
+
*/
|
|
23
|
+
const withProject = (f) => Effect.gen(function* () {
|
|
24
|
+
const fs = yield* FileSystem.FileSystem;
|
|
25
|
+
const path = yield* Path.Path;
|
|
26
|
+
const project = yield* fs.makeTempDirectoryScoped();
|
|
27
|
+
yield* fs.writeFile(path.join(project, "shot.png"), tinyPng);
|
|
28
|
+
yield* fs.writeFile(path.join(project, "wide.png"), encodePng({ width: 2500, height: 100 }));
|
|
29
|
+
yield* fs.writeFileString(path.join(project, "logo.svg"), svgText);
|
|
30
|
+
yield* fs.writeFile(path.join(project, "broken.png"), new TextEncoder().encode("this is not a png".repeat(20)));
|
|
31
|
+
return yield* f(project).pipe(Effect.provide(AgentExecutor.layerLocal({ directory: project }).pipe(Layer.provide(NodeHttpClient.layerUndici))));
|
|
32
|
+
}).pipe(Effect.provide(NodeServices.layer), Effect.scoped);
|
|
33
|
+
const readFile = (params) => Effect.gen(function* () {
|
|
34
|
+
const executor = yield* AgentExecutor.AgentExecutor;
|
|
35
|
+
return yield* executor.executeUnsafe({ tool: "readFile", params });
|
|
36
|
+
});
|
|
37
|
+
describe("readFile images", () => {
|
|
38
|
+
it.effect("rejects startLine / endLine on an image", () => withProject(() => Effect.gen(function* () {
|
|
39
|
+
const withStart = yield* Effect.exit(readFile({ path: "shot.png", startLine: 1 }));
|
|
40
|
+
assert.isTrue(Exit.isFailure(withStart));
|
|
41
|
+
const withEnd = yield* Effect.exit(readFile({ path: "shot.png", endLine: 5 }));
|
|
42
|
+
assert.isTrue(Exit.isFailure(withEnd));
|
|
43
|
+
})));
|
|
44
|
+
it.effect("rejects undecodable and over-ceiling images without decoding them", () => withProject((project) => Effect.gen(function* () {
|
|
45
|
+
const fs = yield* FileSystem.FileSystem;
|
|
46
|
+
const path = yield* Path.Path;
|
|
47
|
+
// Sparse file one byte over the shared 20 MiB input ceiling.
|
|
48
|
+
const huge = path.join(project, "huge.png");
|
|
49
|
+
yield* fs.writeFile(huge, tinyPng);
|
|
50
|
+
yield* fs.truncate(huge, 20 * 1024 * 1024 + 1);
|
|
51
|
+
const decoder = vi.spyOn(Photon.PhotonImage, "new_from_byteslice");
|
|
52
|
+
try {
|
|
53
|
+
const broken = yield* Effect.exit(readFile({ path: "broken.png" }));
|
|
54
|
+
assert.isTrue(Exit.isFailure(broken));
|
|
55
|
+
const oversized = yield* Effect.exit(readFile({ path: "huge.png" }));
|
|
56
|
+
assert.isTrue(Exit.isFailure(oversized));
|
|
57
|
+
assert.strictEqual(decoder.mock.calls.length, 0, "neither garbage nor an over-ceiling file may reach the decoder");
|
|
58
|
+
}
|
|
59
|
+
finally {
|
|
60
|
+
decoder.mockRestore();
|
|
61
|
+
}
|
|
62
|
+
})));
|
|
63
|
+
});
|
|
64
|
+
const runAgent = (options) => Effect.gen(function* () {
|
|
65
|
+
const calls = [];
|
|
66
|
+
const outputs = [];
|
|
67
|
+
const languageModel = yield* LanguageModel.make({
|
|
68
|
+
generateText: () => Effect.succeed([]),
|
|
69
|
+
streamText: (providerOptions) => {
|
|
70
|
+
const call = { prompt: providerOptions.prompt };
|
|
71
|
+
const index = calls.push(call) - 1;
|
|
72
|
+
return options.respond(call, index);
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
const modelLayer = Layer.mergeAll(Layer.succeed(LanguageModel.LanguageModel, languageModel), Layer.succeed(Model.ProviderName, "test-provider"), Layer.succeed(Model.ModelName, "test-model"));
|
|
76
|
+
const agent = yield* Agent.make;
|
|
77
|
+
const exit = yield* agent.send({ prompt: "read the screenshot" }).pipe(Effect.flatMap((stream) => stream.pipe(Stream.runForEach((output) => Effect.sync(() => {
|
|
78
|
+
outputs.push(output);
|
|
79
|
+
})), Effect.as(""), Effect.catchTag("AgentFinished", (finished) => Effect.succeed(finished.summary)))), Effect.provide(Layer.mergeAll(modelLayer, Agent.ConversationMode.layer(true), Agent.layerSubagentModel(modelLayer), Layer.succeed(Agent.TurnTimeout, Duration.minutes(5)))), Effect.exit);
|
|
80
|
+
return { exit, calls, outputs };
|
|
81
|
+
}).pipe(Effect.scoped);
|
|
82
|
+
const toolCall = (id, script) => ({
|
|
83
|
+
type: "tool-call",
|
|
84
|
+
id,
|
|
85
|
+
name: "execute",
|
|
86
|
+
params: { script },
|
|
87
|
+
});
|
|
88
|
+
const text = (content) => [
|
|
89
|
+
{ type: "text-start", id: "t" },
|
|
90
|
+
{ type: "text-delta", id: "t", delta: content },
|
|
91
|
+
{ type: "text-end", id: "t" },
|
|
92
|
+
];
|
|
93
|
+
const toolResultText = (message) => {
|
|
94
|
+
if (message.role !== "tool")
|
|
95
|
+
return undefined;
|
|
96
|
+
const part = message.content.find((p) => p.type === "tool-result");
|
|
97
|
+
return part && typeof part.result === "string" ? part.result : undefined;
|
|
98
|
+
};
|
|
99
|
+
const fileParts = (message) => message.role === "user"
|
|
100
|
+
? message.content.filter((part) => part.type === "file")
|
|
101
|
+
: [];
|
|
102
|
+
describe("readFile image injection", () => {
|
|
103
|
+
it.effect("injects an image as a file part after the execute result", () => withProject(() => Effect.gen(function* () {
|
|
104
|
+
const { exit, calls, outputs } = yield* runAgent({
|
|
105
|
+
respond: (_, index) => index === 0
|
|
106
|
+
? Stream.make(toolCall("call-1", 'console.log(await readFile({ path: "shot.png" }))'))
|
|
107
|
+
: Stream.fromIterable(text("It is a red rectangle.")),
|
|
108
|
+
});
|
|
109
|
+
assert.isTrue(Exit.isSuccess(exit));
|
|
110
|
+
assert.strictEqual(calls.length, 2);
|
|
111
|
+
const messages = calls[1].prompt.content;
|
|
112
|
+
const resultIndex = messages.findIndex((m) => toolResultText(m)?.includes("Image attached: shot.png"));
|
|
113
|
+
assert.notStrictEqual(resultIndex, -1, "script saw the marker");
|
|
114
|
+
const image = messages
|
|
115
|
+
.slice(resultIndex + 1)
|
|
116
|
+
.flatMap(fileParts)
|
|
117
|
+
.find((part) => part.mediaType === "image/png");
|
|
118
|
+
assert.isDefined(image, "a file part follows the tool result");
|
|
119
|
+
assert.strictEqual(calls[1].prompt.content.flatMap(fileParts).length, 1);
|
|
120
|
+
assert.strictEqual(image.fileName, "shot.png");
|
|
121
|
+
assert.isTrue(equalBytes(bytesOf(image.data), tinyPng));
|
|
122
|
+
// The first model call had no image: injection happens after the
|
|
123
|
+
// script runs, not before.
|
|
124
|
+
assert.strictEqual(calls[0].prompt.content.flatMap(fileParts).length, 0);
|
|
125
|
+
// The script output shown to the client is the marker, not bytes.
|
|
126
|
+
const scriptOutput = outputs.find((o) => o._tag === "ScriptOutput");
|
|
127
|
+
assert.isDefined(scriptOutput);
|
|
128
|
+
assert.include(scriptOutput.output, "Image attached: shot.png");
|
|
129
|
+
assert.isBelow(scriptOutput.output.length, 200);
|
|
130
|
+
})));
|
|
131
|
+
it.effect("applies the image limits to readFile images", () => withProject(() => Effect.gen(function* () {
|
|
132
|
+
const { exit, calls } = yield* runAgent({
|
|
133
|
+
respond: (_, index) => index === 0
|
|
134
|
+
? Stream.make(toolCall("call-1", 'console.log(await readFile({ path: "wide.png" }))'))
|
|
135
|
+
: Stream.fromIterable(text("done")),
|
|
136
|
+
});
|
|
137
|
+
assert.isTrue(Exit.isSuccess(exit));
|
|
138
|
+
const images = calls[1].prompt.content.flatMap(fileParts);
|
|
139
|
+
assert.strictEqual(images.length, 1);
|
|
140
|
+
const size = dimensions(bytesOf(images[0].data));
|
|
141
|
+
assert.isAtMost(size.width, 2000);
|
|
142
|
+
assert.isAtMost(size.height, 2000);
|
|
143
|
+
})));
|
|
144
|
+
it.effect("reads SVG as text without injecting an image", () => withProject(() => Effect.gen(function* () {
|
|
145
|
+
const { calls } = yield* runAgent({
|
|
146
|
+
respond: (_, index) => index === 0
|
|
147
|
+
? Stream.make(toolCall("call-1", 'console.log(await readFile({ path: "logo.svg" }))'))
|
|
148
|
+
: Stream.fromIterable(text("done")),
|
|
149
|
+
});
|
|
150
|
+
assert.strictEqual(calls.length, 2);
|
|
151
|
+
assert.strictEqual(calls[1].prompt.content.flatMap(fileParts).length, 0);
|
|
152
|
+
const result = calls[1].prompt.content
|
|
153
|
+
.map(toolResultText)
|
|
154
|
+
.find((r) => r !== undefined);
|
|
155
|
+
assert.include(result, "<svg");
|
|
156
|
+
})));
|
|
157
|
+
});
|
|
158
|
+
//# sourceMappingURL=AgentToolsImage.test.js.map
|