clanka 0.8.0 → 0.8.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 +4 -4
- package/dist/Acp.d.ts.map +1 -1
- package/dist/Acp.js +6 -6
- package/dist/Acp.js.map +1 -1
- package/dist/Acp.test.js +4 -4
- package/dist/Acp.test.js.map +1 -1
- package/dist/AcpImage.test.js +7 -7
- package/dist/AcpImage.test.js.map +1 -1
- package/dist/Agent.d.ts +8 -8
- package/dist/Agent.d.ts.map +1 -1
- package/dist/Agent.js +7 -7
- package/dist/Agent.js.map +1 -1
- package/dist/Agent.test.js +6 -6
- package/dist/Agent.test.js.map +1 -1
- package/dist/AgentExecutor.d.ts +9 -9
- package/dist/AgentExecutor.d.ts.map +1 -1
- package/dist/AgentExecutor.js +5 -5
- package/dist/AgentExecutor.js.map +1 -1
- package/dist/AgentExecutorImage.test.js +6 -6
- package/dist/AgentExecutorImage.test.js.map +1 -1
- package/dist/AgentImage.test.js +3 -3
- package/dist/AgentImage.test.js.map +1 -1
- package/dist/AgentOutput.d.ts +2 -2
- package/dist/AgentOutput.d.ts.map +1 -1
- package/dist/AgentOutput.js +2 -2
- package/dist/AgentOutput.js.map +1 -1
- package/dist/AgentSkills.d.ts.map +1 -1
- package/dist/AgentSkills.js +6 -1
- package/dist/AgentSkills.js.map +1 -1
- package/dist/AgentSkills.test.js +21 -4
- package/dist/AgentSkills.test.js.map +1 -1
- package/dist/AgentTools.d.ts +4 -4
- package/dist/AgentTools.d.ts.map +1 -1
- package/dist/AgentTools.js +4 -4
- package/dist/AgentTools.js.map +1 -1
- package/dist/AgentToolsImage.test.js +2 -2
- package/dist/AgentToolsImage.test.js.map +1 -1
- package/dist/ChunkRepo.d.ts +10 -10
- package/dist/ChunkRepo.d.ts.map +1 -1
- package/dist/ChunkRepo.js +7 -7
- package/dist/ChunkRepo.js.map +1 -1
- package/dist/ChunkRepo.test.js +2 -2
- package/dist/ChunkRepo.test.js.map +1 -1
- package/dist/CodeChunker.d.ts +1 -1
- package/dist/CodeChunker.d.ts.map +1 -1
- package/dist/CodeChunker.js +2 -2
- package/dist/CodeChunker.js.map +1 -1
- package/dist/Codex.d.ts +5 -5
- package/dist/Codex.d.ts.map +1 -1
- package/dist/Codex.js +1 -1
- package/dist/Codex.js.map +1 -1
- package/dist/CodexAuth.d.ts +2 -2
- package/dist/CodexAuth.d.ts.map +1 -1
- package/dist/CodexAuth.js +6 -6
- package/dist/CodexAuth.js.map +1 -1
- package/dist/CodexAuth.test.js +3 -3
- package/dist/CodexAuth.test.js.map +1 -1
- package/dist/Compaction.d.ts +3 -3
- package/dist/Compaction.d.ts.map +1 -1
- package/dist/Compaction.js +3 -3
- package/dist/Compaction.js.map +1 -1
- package/dist/Compaction.test.js +3 -3
- package/dist/Compaction.test.js.map +1 -1
- package/dist/CompactionImage.test.js +4 -4
- package/dist/CompactionImage.test.js.map +1 -1
- package/dist/CompactionTokens.test.js +3 -3
- package/dist/CompactionTokens.test.js.map +1 -1
- package/dist/CompactionTransport.test.js +5 -5
- package/dist/CompactionTransport.test.js.map +1 -1
- package/dist/Copilot.d.ts +3 -3
- package/dist/Copilot.d.ts.map +1 -1
- package/dist/Copilot.js +1 -1
- package/dist/Copilot.js.map +1 -1
- package/dist/CopilotAuth.d.ts +2 -2
- package/dist/CopilotAuth.d.ts.map +1 -1
- package/dist/CopilotAuth.js +4 -4
- package/dist/CopilotAuth.js.map +1 -1
- package/dist/CopilotAuth.test.js +2 -2
- package/dist/CopilotAuth.test.js.map +1 -1
- package/dist/GlobalWebSocket.d.ts +1 -1
- package/dist/GlobalWebSocket.d.ts.map +1 -1
- package/dist/GlobalWebSocket.js +1 -1
- package/dist/GlobalWebSocket.js.map +1 -1
- package/dist/Image.d.ts +2 -2
- package/dist/Image.d.ts.map +1 -1
- package/dist/Image.js +3 -3
- package/dist/Image.js.map +1 -1
- package/dist/Image.test.js +2 -2
- package/dist/Image.test.js.map +1 -1
- package/dist/SemanticSearch.d.ts +3 -3
- package/dist/SemanticSearch.d.ts.map +1 -1
- package/dist/SemanticSearch.js +1 -1
- package/dist/SemanticSearch.js.map +1 -1
- package/dist/Sqlite.d.ts +2 -2
- package/dist/Sqlite.d.ts.map +1 -1
- package/dist/Sqlite.js +1 -1
- package/dist/Sqlite.js.map +1 -1
- package/dist/ToolkitRenderer.d.ts +2 -2
- package/dist/ToolkitRenderer.d.ts.map +1 -1
- package/dist/WebToMarkdown.d.ts +2 -2
- package/dist/WebToMarkdown.d.ts.map +1 -1
- package/dist/WebToMarkdown.js +1 -1
- package/dist/WebToMarkdown.js.map +1 -1
- package/dist/WebToMarkdown.test.js +1 -1
- package/dist/WebToMarkdown.test.js.map +1 -1
- package/dist/Xai.d.ts +10 -3
- package/dist/Xai.d.ts.map +1 -1
- package/dist/Xai.js +26 -2
- package/dist/Xai.js.map +1 -1
- package/dist/Xai.test.js +38 -4
- package/dist/Xai.test.js.map +1 -1
- package/dist/XaiAuth.d.ts +2 -2
- package/dist/XaiAuth.d.ts.map +1 -1
- package/dist/XaiAuth.js +4 -4
- package/dist/XaiAuth.js.map +1 -1
- package/dist/XaiAuth.test.js +2 -2
- package/dist/XaiAuth.test.js.map +1 -1
- package/dist/bin/{Effect-CeAMoJlg.mjs → Effect-DvI8YVcR.mjs} +81 -387
- package/dist/bin/Effect-DvI8YVcR.mjs.map +1 -0
- package/dist/bin/{McpClient-zQibhsnA.mjs → McpClient-CM7u8ZVd.mjs} +3 -3
- package/dist/bin/{McpClient-zQibhsnA.mjs.map → McpClient-CM7u8ZVd.mjs.map} +1 -1
- package/dist/bin/{OutputFormatter-C7Awn0DS.mjs → OutputFormatter-BpggeGvI.mjs} +3 -3
- package/dist/bin/{OutputFormatter-C7Awn0DS.mjs.map → OutputFormatter-BpggeGvI.mjs.map} +1 -1
- package/dist/bin/{Schema-Bc06DxcV.mjs → Schema-DyJ738Wp.mjs} +1979 -1663
- package/dist/bin/Schema-DyJ738Wp.mjs.map +1 -0
- package/dist/bin/{SemanticSearch-BPxQoRSC.mjs → SemanticSearch-BHUGFT1y.mjs} +46 -42
- package/dist/bin/SemanticSearch-BHUGFT1y.mjs.map +1 -0
- package/dist/bin/{Stream-DlGXvw0L.mjs → Stream-Dg7AGCgJ.mjs} +60 -61
- package/dist/bin/Stream-Dg7AGCgJ.mjs.map +1 -0
- package/dist/bin/cli.mjs +601 -368
- package/dist/bin/cli.mjs.map +1 -1
- package/dist/cli.js +7 -5
- package/dist/cli.js.map +1 -1
- package/dist/fixtures/TestImages.js +2 -2
- package/dist/fixtures/TestImages.js.map +1 -1
- package/package.json +7 -7
- package/src/Acp.test.ts +5 -5
- package/src/Acp.ts +8 -8
- package/src/AcpImage.test.ts +9 -9
- package/src/Agent.test.ts +7 -7
- package/src/Agent.ts +10 -10
- package/src/AgentExecutor.ts +8 -8
- package/src/AgentExecutorImage.test.ts +6 -6
- package/src/AgentImage.test.ts +5 -5
- package/src/AgentOutput.ts +2 -2
- package/src/AgentSkills.test.ts +81 -37
- package/src/AgentSkills.ts +5 -1
- package/src/AgentTools.ts +5 -5
- package/src/AgentToolsImage.test.ts +4 -4
- package/src/ChunkRepo.test.ts +2 -2
- package/src/ChunkRepo.ts +7 -7
- package/src/CodeChunker.ts +2 -2
- package/src/Codex.ts +4 -4
- package/src/CodexAuth.test.ts +3 -3
- package/src/CodexAuth.ts +6 -6
- package/src/Compaction.test.ts +3 -3
- package/src/Compaction.ts +3 -3
- package/src/CompactionImage.test.ts +4 -4
- package/src/CompactionTokens.test.ts +3 -3
- package/src/CompactionTransport.test.ts +6 -6
- package/src/Copilot.ts +2 -2
- package/src/CopilotAuth.test.ts +2 -6
- package/src/CopilotAuth.ts +4 -4
- package/src/GlobalWebSocket.ts +1 -1
- package/src/Image.test.ts +2 -2
- package/src/Image.ts +4 -4
- package/src/OutputFormatter.ts +1 -1
- package/src/SemanticSearch.test.ts +1 -1
- package/src/SemanticSearch.ts +3 -3
- package/src/Sqlite.ts +1 -1
- package/src/ToolkitRenderer.ts +2 -2
- package/src/WebToMarkdown.test.ts +1 -1
- package/src/WebToMarkdown.ts +2 -2
- package/src/Xai.test.ts +67 -8
- package/src/Xai.ts +52 -3
- package/src/XaiAuth.test.ts +2 -2
- package/src/XaiAuth.ts +4 -4
- package/src/cli.ts +9 -7
- package/src/fixtures/TestImages.ts +2 -2
- package/src/fixtures/patch13-broken.txt +4 -4
- package/src/fixtures/patch13-fixed.txt +4 -4
- package/dist/bin/Effect-CeAMoJlg.mjs.map +0 -1
- package/dist/bin/Schema-Bc06DxcV.mjs.map +0 -1
- package/dist/bin/SemanticSearch-BPxQoRSC.mjs.map +0 -1
- package/dist/bin/Stream-DlGXvw0L.mjs.map +0 -1
package/dist/cli.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env -S node --optimize-for-size
|
|
2
2
|
import * as Effect from "effect/Effect";
|
|
3
|
-
import * as Prompt from "effect/
|
|
3
|
+
import * as Prompt from "effect/cli/Prompt";
|
|
4
4
|
import * as NodeHttpClient from "@effect/platform-node/NodeHttpClient";
|
|
5
|
-
import * as Command from "effect/
|
|
6
|
-
import * as Flag from "effect/
|
|
5
|
+
import * as Command from "effect/cli/Command";
|
|
6
|
+
import * as Flag from "effect/cli/Flag";
|
|
7
7
|
import * as NodeServices from "@effect/platform-node/NodeServices";
|
|
8
8
|
import * as NodeRuntime from "@effect/platform-node/NodeRuntime";
|
|
9
9
|
import * as GlobalWebSocket from "./GlobalWebSocket.js";
|
|
@@ -22,7 +22,7 @@ import * as Logger from "effect/Logger";
|
|
|
22
22
|
import * as Path from "effect/Path";
|
|
23
23
|
import * as Schema from "effect/Schema";
|
|
24
24
|
import * as Config from "effect/Config";
|
|
25
|
-
import * as KeyValueStore from "effect/
|
|
25
|
+
import * as KeyValueStore from "effect/persistence/KeyValueStore";
|
|
26
26
|
import * as Option from "effect/Option";
|
|
27
27
|
import { OpenAiClient, OpenAiEmbeddingModel } from "@effect/ai-openai";
|
|
28
28
|
import * as DeviceCodeHandler from "./DeviceCodeHandler.js";
|
|
@@ -37,7 +37,9 @@ const withSubagentModel = (model) => Layer.merge(model, Agent.layerSubagentModel
|
|
|
37
37
|
const modelLayer = (provider, model, effort) => provider === "openai"
|
|
38
38
|
? withSubagentModel(Codex.modelWebSocket(model, { reasoning: { effort: effort } })).pipe(Layer.provide(Codex.layerClient))
|
|
39
39
|
: provider === "xai"
|
|
40
|
-
? withSubagentModel(Xai.
|
|
40
|
+
? withSubagentModel(Xai.modelWebSocket(model, {
|
|
41
|
+
reasoning: { effort: effort },
|
|
42
|
+
})).pipe(Layer.provide(Xai.layerClient))
|
|
41
43
|
: withSubagentModel(Copilot.model(model, { reasoning: { effort } })).pipe(Layer.provide(Copilot.layerClient));
|
|
42
44
|
const isProvider = (provider) => providers.includes(provider);
|
|
43
45
|
// `<provider>/<model>/<effort>` as accepted by the `acp` --model flag.
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as Photon from "@silvia-odwyer/photon-node";
|
|
2
2
|
import * as Zlib from "node:zlib";
|
|
3
|
-
import * as
|
|
3
|
+
import * as Base64 from "effect/encoding/Base64";
|
|
4
4
|
export const encodePng = (options) => {
|
|
5
5
|
const { width, height } = options;
|
|
6
6
|
const pixels = new Uint8Array(width * height * 4);
|
|
@@ -254,7 +254,7 @@ export const bytesOf = (data) => {
|
|
|
254
254
|
const base64 = data.startsWith("data:")
|
|
255
255
|
? data.slice(data.indexOf(",") + 1)
|
|
256
256
|
: data;
|
|
257
|
-
const decoded =
|
|
257
|
+
const decoded = Base64.decode(base64);
|
|
258
258
|
if (decoded._tag === "Failure")
|
|
259
259
|
throw new Error("Invalid base64 image data");
|
|
260
260
|
return decoded.success;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestImages.js","sourceRoot":"","sources":["../../src/fixtures/TestImages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAA;AACpD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"TestImages.js","sourceRoot":"","sources":["../../src/fixtures/TestImages.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "clanka",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.8.
|
|
4
|
+
"version": "0.8.1",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -46,15 +46,15 @@
|
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@changesets/changelog-github": "^1.0.1",
|
|
48
48
|
"@changesets/cli": "^3.0.3",
|
|
49
|
-
"@effect/ai-openai": "
|
|
50
|
-
"@effect/ai-openai-compat": "
|
|
51
|
-
"@effect/platform-node": "
|
|
52
|
-
"@effect/sql-sqlite-node": "
|
|
49
|
+
"@effect/ai-openai": "https://pkg.pr.new/Effect-TS/effect/@effect/ai-openai@24fa0ab",
|
|
50
|
+
"@effect/ai-openai-compat": "https://pkg.pr.new/Effect-TS/effect/@effect/ai-openai-compat@24fa0ab",
|
|
51
|
+
"@effect/platform-node": "https://pkg.pr.new/Effect-TS/effect/@effect/platform-node@24fa0ab",
|
|
52
|
+
"@effect/sql-sqlite-node": "https://pkg.pr.new/Effect-TS/effect/@effect/sql-sqlite-node@24fa0ab",
|
|
53
53
|
"@effect/tsgo": "0.45.0",
|
|
54
|
-
"@effect/vitest": "
|
|
54
|
+
"@effect/vitest": "https://pkg.pr.new/Effect-TS/effect/@effect/vitest@24fa0ab",
|
|
55
55
|
"@types/node": "^26.1.1",
|
|
56
56
|
"@types/turndown": "^5.0.6",
|
|
57
|
-
"effect": "
|
|
57
|
+
"effect": "https://pkg.pr.new/Effect-TS/effect/effect@24fa0ab",
|
|
58
58
|
"husky": "^9.1.7",
|
|
59
59
|
"lint-staged": "^17.5.1",
|
|
60
60
|
"oxlint": "^1.83.0",
|
package/src/Acp.test.ts
CHANGED
|
@@ -4,11 +4,11 @@ import * as Fiber from "effect/Fiber"
|
|
|
4
4
|
import * as Layer from "effect/Layer"
|
|
5
5
|
import * as Option from "effect/Option"
|
|
6
6
|
import * as Stream from "effect/Stream"
|
|
7
|
-
import * as Prompt from "effect/
|
|
8
|
-
import * as KeyValueStore from "effect/
|
|
9
|
-
import * as LanguageModel from "effect/
|
|
10
|
-
import * as Model from "effect/
|
|
11
|
-
import type * as Response from "effect/
|
|
7
|
+
import * as Prompt from "effect/ai/Prompt"
|
|
8
|
+
import * as KeyValueStore from "effect/persistence/KeyValueStore"
|
|
9
|
+
import * as LanguageModel from "effect/ai/LanguageModel"
|
|
10
|
+
import * as Model from "effect/ai/Model"
|
|
11
|
+
import type * as Response from "effect/ai/Response"
|
|
12
12
|
import * as Acp from "./Acp.ts"
|
|
13
13
|
import * as Agent from "./Agent.ts"
|
|
14
14
|
import * as AgentExecutor from "./AgentExecutor.ts"
|
package/src/Acp.ts
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import * as Cause from "effect/Cause"
|
|
12
12
|
import * as Effect from "effect/Effect"
|
|
13
|
-
import * as
|
|
13
|
+
import * as Base64 from "effect/encoding/Base64"
|
|
14
14
|
import * as Exit from "effect/Exit"
|
|
15
15
|
import * as Fiber from "effect/Fiber"
|
|
16
16
|
import * as FileSystem from "effect/FileSystem"
|
|
@@ -24,11 +24,11 @@ import * as Schema from "effect/Schema"
|
|
|
24
24
|
import * as Scope from "effect/Scope"
|
|
25
25
|
import * as Stdio from "effect/Stdio"
|
|
26
26
|
import * as Stream from "effect/Stream"
|
|
27
|
-
import type * as LanguageModel from "effect/
|
|
28
|
-
import type * as Model from "effect/
|
|
29
|
-
import * as Prompt from "effect/
|
|
30
|
-
import * as HttpClient from "effect/
|
|
31
|
-
import * as KeyValueStore from "effect/
|
|
27
|
+
import type * as LanguageModel from "effect/ai/LanguageModel"
|
|
28
|
+
import type * as Model from "effect/ai/Model"
|
|
29
|
+
import * as Prompt from "effect/ai/Prompt"
|
|
30
|
+
import * as HttpClient from "effect/http/HttpClient"
|
|
31
|
+
import * as KeyValueStore from "effect/persistence/KeyValueStore"
|
|
32
32
|
import type * as Agent from "./Agent.ts"
|
|
33
33
|
import type * as AgentOutput from "./AgentOutput.ts"
|
|
34
34
|
import * as Compaction from "./Compaction.ts"
|
|
@@ -248,7 +248,7 @@ const decodeBase64 = (data: string, what: string) => {
|
|
|
248
248
|
),
|
|
249
249
|
)
|
|
250
250
|
}
|
|
251
|
-
const decoded =
|
|
251
|
+
const decoded = Base64.decode(data)
|
|
252
252
|
return decoded._tag === "Success"
|
|
253
253
|
? Effect.succeed(decoded.success)
|
|
254
254
|
: Effect.fail(invalidParams(`Invalid base64 image data in ${what}`))
|
|
@@ -264,7 +264,7 @@ const textContent = (text: string) => ({ type: "text", text })
|
|
|
264
264
|
const imageContent = (part: Prompt.FilePart) =>
|
|
265
265
|
Option.map(Image.partBytes(part), (bytes) => ({
|
|
266
266
|
type: "image",
|
|
267
|
-
data:
|
|
267
|
+
data: Base64.encode(bytes),
|
|
268
268
|
mimeType: part.mediaType,
|
|
269
269
|
}))
|
|
270
270
|
|
package/src/AcpImage.test.ts
CHANGED
|
@@ -6,19 +6,19 @@ import * as NodePath from "@effect/platform-node/NodePath"
|
|
|
6
6
|
import * as Effect from "effect/Effect"
|
|
7
7
|
import * as Fiber from "effect/Fiber"
|
|
8
8
|
import { TestClock } from "effect/testing"
|
|
9
|
-
import * as
|
|
9
|
+
import * as Base64 from "effect/encoding/Base64"
|
|
10
10
|
import * as FileSystem from "effect/FileSystem"
|
|
11
11
|
import * as Layer from "effect/Layer"
|
|
12
12
|
import * as Option from "effect/Option"
|
|
13
13
|
import * as Path from "effect/Path"
|
|
14
14
|
import * as Stream from "effect/Stream"
|
|
15
|
-
import * as LanguageModel from "effect/
|
|
16
|
-
import * as Model from "effect/
|
|
17
|
-
import type * as Prompt from "effect/
|
|
18
|
-
import type * as AiResponse from "effect/
|
|
19
|
-
import * as HttpClient from "effect/
|
|
20
|
-
import * as HttpClientResponse from "effect/
|
|
21
|
-
import * as KeyValueStore from "effect/
|
|
15
|
+
import * as LanguageModel from "effect/ai/LanguageModel"
|
|
16
|
+
import * as Model from "effect/ai/Model"
|
|
17
|
+
import type * as Prompt from "effect/ai/Prompt"
|
|
18
|
+
import type * as AiResponse from "effect/ai/Response"
|
|
19
|
+
import * as HttpClient from "effect/http/HttpClient"
|
|
20
|
+
import * as HttpClientResponse from "effect/http/HttpClientResponse"
|
|
21
|
+
import * as KeyValueStore from "effect/persistence/KeyValueStore"
|
|
22
22
|
import * as Acp from "./Acp.ts"
|
|
23
23
|
import * as Agent from "./Agent.ts"
|
|
24
24
|
import * as AgentExecutor from "./AgentExecutor.ts"
|
|
@@ -167,7 +167,7 @@ const withTempDir = <A, E, R>(f: (cwd: string) => Effect.Effect<A, E, R>) =>
|
|
|
167
167
|
return yield* f(cwd)
|
|
168
168
|
})
|
|
169
169
|
|
|
170
|
-
const base64 = (bytes: Uint8Array) =>
|
|
170
|
+
const base64 = (bytes: Uint8Array) => Base64.encode(bytes)
|
|
171
171
|
|
|
172
172
|
describe("Acp images", () => {
|
|
173
173
|
it.effect("maps an image block onto a file part instead of text", () =>
|
package/src/Agent.test.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { assert, describe, it } from "@effect/vitest"
|
|
2
2
|
import * as NodeServices from "@effect/platform-node/NodeServices"
|
|
3
3
|
import * as FileSystem from "effect/FileSystem"
|
|
4
|
-
import * as FetchHttpClient from "effect/
|
|
4
|
+
import * as FetchHttpClient from "effect/http/FetchHttpClient"
|
|
5
5
|
import * as Effect from "effect/Effect"
|
|
6
6
|
import * as Duration from "effect/Duration"
|
|
7
7
|
import * as Exit from "effect/Exit"
|
|
@@ -10,12 +10,12 @@ import * as MutableRef from "effect/MutableRef"
|
|
|
10
10
|
import * as Option from "effect/Option"
|
|
11
11
|
import * as Schema from "effect/Schema"
|
|
12
12
|
import * as Stream from "effect/Stream"
|
|
13
|
-
import * as AiError from "effect/
|
|
14
|
-
import * as LanguageModel from "effect/
|
|
15
|
-
import * as Model from "effect/
|
|
16
|
-
import * as Prompt from "effect/
|
|
17
|
-
import type * as Response from "effect/
|
|
18
|
-
import * as ResponseIdTracker from "effect/
|
|
13
|
+
import * as AiError from "effect/ai/AiError"
|
|
14
|
+
import * as LanguageModel from "effect/ai/LanguageModel"
|
|
15
|
+
import * as Model from "effect/ai/Model"
|
|
16
|
+
import * as Prompt from "effect/ai/Prompt"
|
|
17
|
+
import type * as Response from "effect/ai/Response"
|
|
18
|
+
import * as ResponseIdTracker from "effect/ai/ResponseIdTracker"
|
|
19
19
|
import * as Agent from "./Agent.ts"
|
|
20
20
|
import * as AgentExecutor from "./AgentExecutor.ts"
|
|
21
21
|
import * as AgentOutput from "./AgentOutput.ts"
|
package/src/Agent.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
|
-
import * as Model from "effect/
|
|
5
|
-
import type * as Response from "effect/
|
|
4
|
+
import * as Model from "effect/ai/Model"
|
|
5
|
+
import type * as Response from "effect/ai/Response"
|
|
6
6
|
import * as AgentExecutor from "./AgentExecutor.ts"
|
|
7
7
|
import * as AgentSkills from "./AgentSkills.ts"
|
|
8
8
|
import { stripWrappingCodeFence } from "./ScriptExtraction.ts"
|
|
9
9
|
import type * as Path from "effect/Path"
|
|
10
|
-
import type * as ChildProcessSpawner from "effect/
|
|
11
|
-
import type * as HttpClient from "effect/
|
|
10
|
+
import type * as ChildProcessSpawner from "effect/process/ChildProcessSpawner"
|
|
11
|
+
import type * as HttpClient from "effect/http/HttpClient"
|
|
12
12
|
import type {
|
|
13
13
|
CurrentDirectory,
|
|
14
14
|
DirectoryChanger,
|
|
@@ -19,12 +19,12 @@ import type {
|
|
|
19
19
|
} from "./AgentTools.ts"
|
|
20
20
|
import * as Image from "./Image.ts"
|
|
21
21
|
import type * as FileSystem from "effect/FileSystem"
|
|
22
|
-
import * as Prompt from "effect/
|
|
22
|
+
import * as Prompt from "effect/ai/Prompt"
|
|
23
23
|
import * as Effect from "effect/Effect"
|
|
24
24
|
import * as Stream from "effect/Stream"
|
|
25
25
|
import type * as Scope from "effect/Scope"
|
|
26
|
-
import * as LanguageModel from "effect/
|
|
27
|
-
import * as AiError from "effect/
|
|
26
|
+
import * as LanguageModel from "effect/ai/LanguageModel"
|
|
27
|
+
import * as AiError from "effect/ai/AiError"
|
|
28
28
|
import * as Context from "effect/Context"
|
|
29
29
|
import * as Option from "effect/Option"
|
|
30
30
|
import { identity, pipe } from "effect/Function"
|
|
@@ -33,8 +33,8 @@ import * as Queue from "effect/Queue"
|
|
|
33
33
|
import * as Array from "effect/Array"
|
|
34
34
|
import * as Schema from "effect/Schema"
|
|
35
35
|
import * as Layer from "effect/Layer"
|
|
36
|
-
import * as Tool from "effect/
|
|
37
|
-
import * as Toolkit from "effect/
|
|
36
|
+
import * as Tool from "effect/ai/Tool"
|
|
37
|
+
import * as Toolkit from "effect/ai/Toolkit"
|
|
38
38
|
import * as Semaphore from "effect/Semaphore"
|
|
39
39
|
import * as Schedule from "effect/Schedule"
|
|
40
40
|
import * as Duration from "effect/Duration"
|
|
@@ -574,7 +574,7 @@ ${content}
|
|
|
574
574
|
runModel,
|
|
575
575
|
Effect.raceFirst(turnTimeoutEffect),
|
|
576
576
|
Effect.retry({
|
|
577
|
-
while
|
|
577
|
+
while(err) {
|
|
578
578
|
if (err._tag === "TimeoutError") {
|
|
579
579
|
maybeSend({
|
|
580
580
|
agentId,
|
package/src/AgentExecutor.ts
CHANGED
|
@@ -19,16 +19,16 @@ import {
|
|
|
19
19
|
import * as Image from "./Image.ts"
|
|
20
20
|
import { ToolkitRenderer } from "./ToolkitRenderer.ts"
|
|
21
21
|
import * as AgentSkills from "./AgentSkills.ts"
|
|
22
|
-
import type * as ChildProcessSpawner from "effect/
|
|
23
|
-
import type * as HttpClient from "effect/
|
|
22
|
+
import type * as ChildProcessSpawner from "effect/process/ChildProcessSpawner"
|
|
23
|
+
import type * as HttpClient from "effect/http/HttpClient"
|
|
24
24
|
import * as Context from "effect/Context"
|
|
25
25
|
import * as Effect from "effect/Effect"
|
|
26
26
|
import * as Option from "effect/Option"
|
|
27
27
|
import * as Stream from "effect/Stream"
|
|
28
28
|
import * as FileSystem from "effect/FileSystem"
|
|
29
|
-
import * as Toolkit from "effect/
|
|
29
|
+
import * as Toolkit from "effect/ai/Toolkit"
|
|
30
30
|
import * as Path from "effect/Path"
|
|
31
|
-
import type * as Tool from "effect/
|
|
31
|
+
import type * as Tool from "effect/ai/Tool"
|
|
32
32
|
import * as Queue from "effect/Queue"
|
|
33
33
|
import * as Cause from "effect/Cause"
|
|
34
34
|
import * as Scope from "effect/Scope"
|
|
@@ -36,12 +36,12 @@ import * as Fiber from "effect/Fiber"
|
|
|
36
36
|
import * as Console from "effect/Console"
|
|
37
37
|
import * as Exit from "effect/Exit"
|
|
38
38
|
import { pipe, identity } from "effect/Function"
|
|
39
|
-
import * as RpcClient from "effect/
|
|
39
|
+
import * as RpcClient from "effect/rpc/RpcClient"
|
|
40
40
|
import * as Layer from "effect/Layer"
|
|
41
|
-
import * as RpcServer from "effect/
|
|
41
|
+
import * as RpcServer from "effect/rpc/RpcServer"
|
|
42
42
|
import * as Schema from "effect/Schema"
|
|
43
|
-
import * as RpcGroup from "effect/
|
|
44
|
-
import * as Rpc from "effect/
|
|
43
|
+
import * as RpcGroup from "effect/rpc/RpcGroup"
|
|
44
|
+
import * as Rpc from "effect/rpc/Rpc"
|
|
45
45
|
import * as Result from "effect/Result"
|
|
46
46
|
import { SemanticSearch } from "./SemanticSearch/Service.ts"
|
|
47
47
|
import { preprocessScript } from "./ScriptPreprocessing.ts"
|
|
@@ -2,15 +2,15 @@ import { assert, describe, it } from "@effect/vitest"
|
|
|
2
2
|
import * as NodeHttpServer from "@effect/platform-node/NodeHttpServer"
|
|
3
3
|
import * as NodeServices from "@effect/platform-node/NodeServices"
|
|
4
4
|
import * as Effect from "effect/Effect"
|
|
5
|
-
import * as
|
|
5
|
+
import * as Base64 from "effect/encoding/Base64"
|
|
6
6
|
import * as FileSystem from "effect/FileSystem"
|
|
7
7
|
import * as Layer from "effect/Layer"
|
|
8
8
|
import * as Path from "effect/Path"
|
|
9
9
|
import * as Stream from "effect/Stream"
|
|
10
|
-
import * as HttpServer from "effect/
|
|
11
|
-
import * as RpcClient from "effect/
|
|
12
|
-
import * as RpcSerialization from "effect/
|
|
13
|
-
import * as RpcServer from "effect/
|
|
10
|
+
import * as HttpServer from "effect/http/HttpServer"
|
|
11
|
+
import * as RpcClient from "effect/rpc/RpcClient"
|
|
12
|
+
import * as RpcSerialization from "effect/rpc/RpcSerialization"
|
|
13
|
+
import * as RpcServer from "effect/rpc/RpcServer"
|
|
14
14
|
import * as AgentExecutor from "./AgentExecutor.ts"
|
|
15
15
|
import type { ImageAttachment } from "./AgentTools.ts"
|
|
16
16
|
import { equalBytes, supportedImages } from "./fixtures/TestImages.ts"
|
|
@@ -94,7 +94,7 @@ describe("RPC image executor", () => {
|
|
|
94
94
|
assert.instanceOf(image.data, Uint8Array)
|
|
95
95
|
assert.isTrue(equalBytes(image.data, bytes))
|
|
96
96
|
assert.include(output.join(""), "Image attached: " + name)
|
|
97
|
-
assert.notInclude(output.join(""),
|
|
97
|
+
assert.notInclude(output.join(""), Base64.encode(bytes))
|
|
98
98
|
}
|
|
99
99
|
assert.notInclude(output.join(""), "data:image/")
|
|
100
100
|
}),
|
package/src/AgentImage.test.ts
CHANGED
|
@@ -6,11 +6,11 @@ import * as Exit from "effect/Exit"
|
|
|
6
6
|
import * as Layer from "effect/Layer"
|
|
7
7
|
import * as Option from "effect/Option"
|
|
8
8
|
import * as Stream from "effect/Stream"
|
|
9
|
-
import * as AiError from "effect/
|
|
10
|
-
import * as LanguageModel from "effect/
|
|
11
|
-
import * as Model from "effect/
|
|
12
|
-
import type * as Prompt from "effect/
|
|
13
|
-
import type * as Response from "effect/
|
|
9
|
+
import * as AiError from "effect/ai/AiError"
|
|
10
|
+
import * as LanguageModel from "effect/ai/LanguageModel"
|
|
11
|
+
import * as Model from "effect/ai/Model"
|
|
12
|
+
import type * as Prompt from "effect/ai/Prompt"
|
|
13
|
+
import type * as Response from "effect/ai/Response"
|
|
14
14
|
import * as Agent from "./Agent.ts"
|
|
15
15
|
import * as AgentExecutor from "./AgentExecutor.ts"
|
|
16
16
|
import { tinyPng } from "./fixtures/TestImages.ts"
|
package/src/AgentOutput.ts
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
4
|
/** @effect-diagnostics schemaNumber:off */
|
|
5
|
-
import * as Prompt from "effect/
|
|
6
|
-
import * as AiError from "effect/
|
|
5
|
+
import * as Prompt from "effect/ai/Prompt"
|
|
6
|
+
import * as AiError from "effect/ai/AiError"
|
|
7
7
|
import * as Schema from "effect/Schema"
|
|
8
8
|
|
|
9
9
|
/**
|
package/src/AgentSkills.test.ts
CHANGED
|
@@ -7,8 +7,8 @@ import * as Layer from "effect/Layer"
|
|
|
7
7
|
import * as Option from "effect/Option"
|
|
8
8
|
import * as Path from "effect/Path"
|
|
9
9
|
import * as Stream from "effect/Stream"
|
|
10
|
-
import * as LanguageModel from "effect/
|
|
11
|
-
import * as Model from "effect/
|
|
10
|
+
import * as LanguageModel from "effect/ai/LanguageModel"
|
|
11
|
+
import * as Model from "effect/ai/Model"
|
|
12
12
|
import * as Agent from "./Agent.ts"
|
|
13
13
|
import * as AgentExecutor from "./AgentExecutor.ts"
|
|
14
14
|
import * as AgentSkills from "./AgentSkills.ts"
|
|
@@ -219,7 +219,9 @@ describe("AgentSkills", () => {
|
|
|
219
219
|
if (mode !== "missing skills")
|
|
220
220
|
assert.deepStrictEqual(reads, [
|
|
221
221
|
path.join(roots.project, ".agents", "skills"),
|
|
222
|
+
path.join(roots.project, ".agents", "skills", "proj"),
|
|
222
223
|
path.join(roots.home, ".agents", "skills"),
|
|
224
|
+
path.join(roots.home, ".agents", "skills", "usr"),
|
|
223
225
|
])
|
|
224
226
|
}),
|
|
225
227
|
).pipe(Effect.provide(NodeServices.layer)),
|
|
@@ -601,58 +603,65 @@ describe("AgentSkills", () => {
|
|
|
601
603
|
).pipe(Effect.provide(NodeServices.layer)),
|
|
602
604
|
)
|
|
603
605
|
|
|
604
|
-
it.effect(
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
606
|
+
it.effect(
|
|
607
|
+
"skips skills without a description or with invalid frontmatter",
|
|
608
|
+
() =>
|
|
609
|
+
withRoots(
|
|
610
|
+
Effect.fnUntraced(function* (roots) {
|
|
611
|
+
yield* writeSkill(
|
|
612
|
+
roots.project,
|
|
613
|
+
"no-description",
|
|
614
|
+
`---
|
|
611
615
|
name: no-description
|
|
612
616
|
---
|
|
613
617
|
body`,
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
618
|
+
)
|
|
619
|
+
yield* writeSkill(
|
|
620
|
+
roots.project,
|
|
621
|
+
"empty-description",
|
|
622
|
+
`---
|
|
619
623
|
name: empty-description
|
|
620
624
|
description: ""
|
|
621
625
|
---
|
|
622
626
|
body`,
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
627
|
+
)
|
|
628
|
+
yield* writeSkill(
|
|
629
|
+
roots.project,
|
|
630
|
+
"broken",
|
|
631
|
+
`---
|
|
628
632
|
this is not yaml at all
|
|
629
633
|
---
|
|
630
634
|
body`,
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
635
|
+
)
|
|
636
|
+
yield* writeSkill(roots.project, "no-frontmatter", "# Just markdown")
|
|
637
|
+
yield* writeSkill(
|
|
638
|
+
roots.project,
|
|
639
|
+
"unquoted-colon",
|
|
640
|
+
"---\nname: unquoted-colon\ndescription: Use when: deploying\n---\nbody",
|
|
641
|
+
)
|
|
642
|
+
yield* writeSkill(
|
|
643
|
+
roots.project,
|
|
644
|
+
"messy",
|
|
645
|
+
`---
|
|
637
646
|
name: messy-name-differs
|
|
638
|
-
description: Use when: the task mentions colons, "quotes" or other messy things
|
|
647
|
+
description: 'Use when: the task mentions colons, "quotes" or other messy things'
|
|
639
648
|
metadata:
|
|
640
649
|
author: someone
|
|
641
650
|
---
|
|
642
651
|
body`,
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
[
|
|
652
|
+
)
|
|
653
|
+
const skills = yield* discover(roots)
|
|
654
|
+
assert.deepStrictEqual(
|
|
655
|
+
skills.map((skill) => [skill.name, skill.description]),
|
|
648
656
|
[
|
|
649
|
-
|
|
650
|
-
|
|
657
|
+
[
|
|
658
|
+
"messy-name-differs",
|
|
659
|
+
'Use when: the task mentions colons, "quotes" or other messy things',
|
|
660
|
+
],
|
|
651
661
|
],
|
|
652
|
-
|
|
653
|
-
)
|
|
654
|
-
|
|
655
|
-
).pipe(Effect.provide(NodeServices.layer)),
|
|
662
|
+
)
|
|
663
|
+
}),
|
|
664
|
+
).pipe(Effect.provide(NodeServices.layer)),
|
|
656
665
|
)
|
|
657
666
|
|
|
658
667
|
it.effect("reads quoted and block scalar frontmatter values", () =>
|
|
@@ -740,6 +749,41 @@ body`,
|
|
|
740
749
|
).pipe(Effect.provide(NodeServices.layer)),
|
|
741
750
|
)
|
|
742
751
|
|
|
752
|
+
it.effect(
|
|
753
|
+
"requires exact filename casing even when SKILL.md is readable",
|
|
754
|
+
() =>
|
|
755
|
+
withRoots(
|
|
756
|
+
Effect.fnUntraced(function* (roots) {
|
|
757
|
+
const fs = yield* FileSystem.FileSystem
|
|
758
|
+
const path = yield* Path.Path
|
|
759
|
+
const location = yield* writeSkill(
|
|
760
|
+
roots.project,
|
|
761
|
+
"lowercase",
|
|
762
|
+
skillFile("lowercase", "Ignored"),
|
|
763
|
+
)
|
|
764
|
+
const regular = yield* writeSkill(
|
|
765
|
+
roots.project,
|
|
766
|
+
"regular",
|
|
767
|
+
skillFile("regular", "Found"),
|
|
768
|
+
)
|
|
769
|
+
const controlledFs = FileSystem.FileSystem.of({
|
|
770
|
+
...fs,
|
|
771
|
+
readDirectory: (directory, options) =>
|
|
772
|
+
directory === path.dirname(location)
|
|
773
|
+
? Effect.succeed(["skill.md"])
|
|
774
|
+
: fs.readDirectory(directory, options),
|
|
775
|
+
})
|
|
776
|
+
const skills = yield* discover(roots).pipe(
|
|
777
|
+
Effect.provideService(FileSystem.FileSystem, controlledFs),
|
|
778
|
+
)
|
|
779
|
+
assert.deepStrictEqual(
|
|
780
|
+
skills.map((skill) => skill.location),
|
|
781
|
+
[regular],
|
|
782
|
+
)
|
|
783
|
+
}),
|
|
784
|
+
).pipe(Effect.provide(NodeServices.layer)),
|
|
785
|
+
)
|
|
786
|
+
|
|
743
787
|
it.effect("returns an empty catalog when nothing exists", () =>
|
|
744
788
|
withRoots(
|
|
745
789
|
Effect.fnUntraced(function* (roots) {
|