clanka 0.2.49 → 0.2.51
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/Agent.d.ts +20 -20
- package/dist/Agent.d.ts.map +1 -1
- package/dist/Agent.js +9 -9
- package/dist/Agent.js.map +1 -1
- package/dist/Agent.test.js +1 -0
- package/dist/Agent.test.js.map +1 -1
- package/dist/AgentExecutor.d.ts +62 -101
- package/dist/AgentExecutor.d.ts.map +1 -1
- package/dist/AgentExecutor.js +28 -7
- package/dist/AgentExecutor.js.map +1 -1
- package/dist/AgentTools.d.ts +6 -6
- package/dist/AgentTools.d.ts.map +1 -1
- package/dist/AgentTools.js +5 -5
- package/dist/AgentTools.js.map +1 -1
- package/dist/ApplyPatch.test.js +3 -3
- package/dist/ApplyPatch.test.js.map +1 -1
- package/dist/ChunkRepo.d.ts +16 -16
- package/dist/ChunkRepo.d.ts.map +1 -1
- package/dist/ChunkRepo.js +7 -6
- package/dist/ChunkRepo.js.map +1 -1
- package/dist/CodeChunker.d.ts +2 -2
- 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 +1 -1
- package/dist/Codex.d.ts.map +1 -1
- package/dist/CodexAuth.d.ts +13 -7
- package/dist/CodexAuth.d.ts.map +1 -1
- package/dist/CodexAuth.js +13 -8
- package/dist/CodexAuth.js.map +1 -1
- package/dist/CodexAuth.test.js +1 -262
- package/dist/CodexAuth.test.js.map +1 -1
- package/dist/Copilot.d.ts +1 -1
- package/dist/Copilot.d.ts.map +1 -1
- package/dist/CopilotAuth.d.ts +13 -7
- package/dist/CopilotAuth.d.ts.map +1 -1
- package/dist/CopilotAuth.js +10 -5
- package/dist/CopilotAuth.js.map +1 -1
- package/dist/CopilotAuth.test.js +7 -8
- package/dist/CopilotAuth.test.js.map +1 -1
- package/dist/DeviceCodeHandler.d.ts +14 -0
- package/dist/DeviceCodeHandler.d.ts.map +1 -0
- package/dist/DeviceCodeHandler.js +9 -0
- package/dist/DeviceCodeHandler.js.map +1 -0
- package/dist/ExaSearch.d.ts +3 -3
- package/dist/ExaSearch.d.ts.map +1 -1
- package/dist/ExaSearch.js +2 -2
- package/dist/ExaSearch.js.map +1 -1
- package/dist/McpClient.d.ts +3 -3
- package/dist/McpClient.d.ts.map +1 -1
- package/dist/McpClient.js +2 -2
- package/dist/McpClient.js.map +1 -1
- package/dist/OutputFormatter.d.ts +2 -2
- package/dist/OutputFormatter.d.ts.map +1 -1
- package/dist/OutputFormatter.js +2 -2
- package/dist/OutputFormatter.js.map +1 -1
- package/dist/SemanticSearch/Service.d.ts +2 -2
- package/dist/SemanticSearch/Service.d.ts.map +1 -1
- package/dist/SemanticSearch/Service.js +2 -2
- package/dist/SemanticSearch/Service.js.map +1 -1
- package/dist/SemanticSearch.js +3 -3
- package/dist/SemanticSearch.js.map +1 -1
- package/dist/ToolkitRenderer.d.ts +2 -2
- package/dist/ToolkitRenderer.d.ts.map +1 -1
- package/dist/ToolkitRenderer.js +2 -2
- package/dist/ToolkitRenderer.js.map +1 -1
- package/dist/WebToMarkdown.d.ts +2 -2
- package/dist/WebToMarkdown.d.ts.map +1 -1
- package/dist/WebToMarkdown.js +2 -2
- package/dist/WebToMarkdown.js.map +1 -1
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- 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 +8 -6
- package/src/Agent.test.ts +1 -0
- package/src/Agent.ts +9 -9
- package/src/AgentExecutor.ts +46 -13
- package/src/AgentTools.ts +7 -7
- package/src/ApplyPatch.test.ts +3 -3
- package/src/ChunkRepo.ts +8 -6
- package/src/CodeChunker.ts +2 -2
- package/src/CodexAuth.test.ts +0 -433
- package/src/CodexAuth.ts +16 -19
- package/src/CopilotAuth.test.ts +11 -7
- package/src/CopilotAuth.ts +11 -7
- package/src/DeviceCodeHandler.ts +21 -0
- package/src/ExaSearch.ts +2 -2
- package/src/McpClient.ts +2 -2
- package/src/OutputFormatter.ts +2 -2
- package/src/SemanticSearch/Service.ts +2 -2
- package/src/SemanticSearch.ts +3 -3
- package/src/ToolkitRenderer.ts +2 -2
- package/src/WebToMarkdown.ts +2 -2
- package/src/cli.ts +2 -0
- package/src/fixtures/fiber.txt +9 -9
- package/src/fixtures/patch18-broken.txt +5 -5
- package/src/fixtures/patch18-fixed.txt +5 -5
- package/src/index.ts +5 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolkitRenderer.d.ts","sourceRoot":"","sources":["../src/ToolkitRenderer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"ToolkitRenderer.d.ts","sourceRoot":"","sources":["../src/ToolkitRenderer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,KAAK,IAAI,MAAM,yBAAyB,CAAA;AACpD,OAAO,KAAK,KAAK,OAAO,MAAM,4BAA4B,CAAA;;WAW/C,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,SACpC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAC5B,MAAM;;AATb;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,oBAOR;IAC3B,MAAM,CAAC,QAAQ,CAAC,KAAK,6CAoBnB;CACH"}
|
package/dist/ToolkitRenderer.js
CHANGED
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
import * as Array from "effect/Array";
|
|
5
5
|
import * as Layer from "effect/Layer";
|
|
6
6
|
import * as SchemaAST from "effect/SchemaAST";
|
|
7
|
-
import * as
|
|
7
|
+
import * as Context from "effect/Context";
|
|
8
8
|
import * as TypeBuilder from "./TypeBuilder.js";
|
|
9
9
|
import * as Function from "effect/Function";
|
|
10
10
|
/**
|
|
11
11
|
* @since 1.0.0
|
|
12
12
|
* @category Services
|
|
13
13
|
*/
|
|
14
|
-
export class ToolkitRenderer extends
|
|
14
|
+
export class ToolkitRenderer extends Context.Service()("clanka/ToolkitRenderer") {
|
|
15
15
|
static layer = Layer.succeed(ToolkitRenderer, {
|
|
16
16
|
render: Function.memoize((tools) => {
|
|
17
17
|
const output = Array.empty();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolkitRenderer.js","sourceRoot":"","sources":["../src/ToolkitRenderer.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,SAAS,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"ToolkitRenderer.js","sourceRoot":"","sources":["../src/ToolkitRenderer.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,SAAS,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAGzC,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAE3C;;;GAGG;AACH,MAAM,OAAO,eAAgB,SAAQ,OAAO,CAAC,OAAO,EAOjD,CAAC,wBAAwB,CAAC;IAC3B,MAAM,CAAU,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE;QACrD,MAAM,EAAE,QAAQ,CAAC,OAAO,CACtB,CACE,KAA6B,EAC7B,EAAE;YACF,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,EAAU,CAAA;YACpC,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvD,MAAM,SAAS,GACb,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,SAAS,CAAA;gBACrE,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;gBAC3D,MAAM,MAAM,GACV,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,SAAS,KAAK,SAAS,EAAE,CAAA;gBAC1D,MAAM,CAAC,IAAI,CACT,OAAO,IAAI,CAAC,WAAW;mBAChB,IAAI,IAAI,MAAM,cAAc,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAC7E,CAAA;YACH,CAAC;YACD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC5B,CAAC,CACF;KACF,CAAC,CAAA"}
|
package/dist/WebToMarkdown.d.ts
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import * as Effect from "effect/Effect";
|
|
5
5
|
import * as Layer from "effect/Layer";
|
|
6
|
-
import * as
|
|
6
|
+
import * as Context from "effect/Context";
|
|
7
7
|
import * as HttpClient from "effect/unstable/http/HttpClient";
|
|
8
8
|
import type * as HttpClientError from "effect/unstable/http/HttpClientError";
|
|
9
|
-
declare const WebToMarkdown_base:
|
|
9
|
+
declare const WebToMarkdown_base: Context.ServiceClass<WebToMarkdown, "clanka/WebToMarkdown", {
|
|
10
10
|
convertHtml(html: string): Effect.Effect<string>;
|
|
11
11
|
convertUrl(url: string): Effect.Effect<string, HttpClientError.HttpClientError>;
|
|
12
12
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebToMarkdown.d.ts","sourceRoot":"","sources":["../src/WebToMarkdown.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"WebToMarkdown.d.ts","sourceRoot":"","sources":["../src/WebToMarkdown.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAA;AAC7D,OAAO,KAAK,KAAK,eAAe,MAAM,sCAAsC,CAAA;;sBAUtD,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;oBAEzC,MAAM,GACV,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,eAAe,CAAC;;AAV7D;;;GAGG;AACH,qBAAa,aAAc,SAAQ,kBAQR;CAAG;AAE9B;;;GAGG;AACH,eAAO,MAAM,KAAK,0DA8DjB,CAAA"}
|
package/dist/WebToMarkdown.js
CHANGED
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import * as Effect from "effect/Effect";
|
|
5
5
|
import * as Layer from "effect/Layer";
|
|
6
|
-
import * as
|
|
6
|
+
import * as Context from "effect/Context";
|
|
7
7
|
import * as HttpClient from "effect/unstable/http/HttpClient";
|
|
8
8
|
import TurndownService from "turndown";
|
|
9
9
|
/**
|
|
10
10
|
* @since 1.0.0
|
|
11
11
|
* @category Services
|
|
12
12
|
*/
|
|
13
|
-
export class WebToMarkdown extends
|
|
13
|
+
export class WebToMarkdown extends Context.Service()("clanka/WebToMarkdown") {
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
16
|
* @since 1.0.0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebToMarkdown.js","sourceRoot":"","sources":["../src/WebToMarkdown.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"WebToMarkdown.js","sourceRoot":"","sources":["../src/WebToMarkdown.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAA;AAE7D,OAAO,eAAe,MAAM,UAAU,CAAA;AAEtC;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,OAAO,CAAC,OAAO,EAQ/C,CAAC,sBAAsB,CAAC;CAAG;AAE9B;;;GAGG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAC/B,aAAa,EACb,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAChD,UAAU,CAAC,eAAe,EAAE,EAC5B,UAAU,CAAC,cAAc,EACzB,UAAU,CAAC,cAAc,CAAC;QACxB,KAAK,EAAE,CAAC;KACT,CAAC,CACH,CAAA;IAED,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC;QACvB,MAAM;QACN,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,OAAO;QACP,MAAM;QACN,MAAM;QACN,UAAU;QACV,QAAQ;QACR,QAAQ;QACR,OAAO;QACP,KAAK;QACL,QAAQ;QACR,OAAO;QACP,OAAO;QACP,QAAQ;QACR,OAAO;QACP,KAAK;QACL,MAAM;QACN,MAAM;QACN,MAAM;QACN,OAAO;QACP,UAAU;QACV,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,UAAU;QACV,UAAU;QACV,QAAQ;QACR,QAAQ;QACR,UAAU;QACV,OAAO;KACR,CAAC,CAAA;IACF,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACrD,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAC1C,CAAA;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC,2BAA2B,CAAC,CAAC,CAAC,IAAY,EAAE,EAAE,CAC1E,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAC3C,CAAA;IAED,OAAO,aAAa,CAAC,EAAE,CAAC;QACtB,WAAW;QACX,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC,0BAA0B,CAAC,CAAC,QAAQ,CAAC,EAAE,GAAG;YAC9D,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACvC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAA;YACjC,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAChC,CAAC,CAAC;KACH,CAAC,CAAA;AACJ,CAAC,CAAC,CACH,CAAA"}
|
package/dist/cli.js
CHANGED
|
@@ -20,6 +20,7 @@ import * as Config from "effect/Config";
|
|
|
20
20
|
import * as KeyValueStore from "effect/unstable/persistence/KeyValueStore";
|
|
21
21
|
import * as Option from "effect/Option";
|
|
22
22
|
import { OpenAiClient, OpenAiEmbeddingModel } from "@effect/ai-openai";
|
|
23
|
+
import { DeviceCodeHandler } from "./index.js";
|
|
23
24
|
const provider = Flag.choice("provider", ["openai", "copilot"]).pipe(Flag.withAlias("p"), Flag.withFallbackPrompt(Prompt.select({
|
|
24
25
|
message: "Select a provider",
|
|
25
26
|
choices: [
|
|
@@ -119,5 +120,6 @@ Command.make("clanka", { provider, model, semantic, prompt }).pipe(Command.withH
|
|
|
119
120
|
Kvs,
|
|
120
121
|
NodeHttpClient.layerUndici,
|
|
121
122
|
NodeSocket.layerWebSocketConstructorWS,
|
|
123
|
+
DeviceCodeHandler.layerConsole,
|
|
122
124
|
]), NodeRuntime.runMain);
|
|
123
125
|
//# sourceMappingURL=cli.js.map
|
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,4BAA4B,CAAA;AACpD,OAAO,KAAK,cAAc,MAAM,sCAAsC,CAAA;AACtE,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAA;AACtD,OAAO,KAAK,IAAI,MAAM,0BAA0B,CAAA;AAChD,OAAO,KAAK,YAAY,MAAM,oCAAoC,CAAA;AAClE,OAAO,KAAK,WAAW,MAAM,mCAAmC,CAAA;AAChE,OAAO,KAAK,UAAU,MAAM,kCAAkC,CAAA;AAC9D,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACtC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AACnC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,aAAa,MAAM,2CAA2C,CAAA;AAC1E,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;GAEG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;GAEG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;GAEG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAE3D;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;GAEG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;GAEG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;GAEG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAE3D;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "clanka",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.2.
|
|
4
|
+
"version": "0.2.51",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -25,9 +25,6 @@
|
|
|
25
25
|
"url": "https://github.com/Effectful-Tech/clanka.git"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@effect/ai-openai": "4.0.0-beta.43",
|
|
29
|
-
"@effect/platform-node": "4.0.0-beta.43",
|
|
30
|
-
"@effect/sql-sqlite-node": "4.0.0-beta.43",
|
|
31
28
|
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
32
29
|
"@vscode/ripgrep": "^1.17.1",
|
|
33
30
|
"chalk": "^5.6.2",
|
|
@@ -47,6 +44,8 @@
|
|
|
47
44
|
"@sqliteai/sqlite-vector-win32-x86_64": "0.9.93"
|
|
48
45
|
},
|
|
49
46
|
"peerDependencies": {
|
|
47
|
+
"@effect/platform-node": "4.0.0-beta.43",
|
|
48
|
+
"@effect/sql-sqlite-node": "4.0.0-beta.43",
|
|
50
49
|
"@effect/ai-openai": "4.0.0-beta.43",
|
|
51
50
|
"@effect/ai-openai-compat": "4.0.0-beta.43",
|
|
52
51
|
"effect": "4.0.0-beta.43"
|
|
@@ -54,13 +53,16 @@
|
|
|
54
53
|
"devDependencies": {
|
|
55
54
|
"@changesets/changelog-github": "^0.6.0",
|
|
56
55
|
"@changesets/cli": "^2.29.8",
|
|
57
|
-
"@effect/
|
|
56
|
+
"@effect/platform-node": "https://pkg.pr.new/Effect-TS/effect-smol/@effect/platform-node@acc7fff",
|
|
57
|
+
"@effect/sql-sqlite-node": "https://pkg.pr.new/Effect-TS/effect-smol/@effect/sql-sqlite-node@acc7fff",
|
|
58
|
+
"@effect/ai-openai": "https://pkg.pr.new/Effect-TS/effect-smol/@effect/ai-openai@acc7fff",
|
|
59
|
+
"@effect/ai-openai-compat": "https://pkg.pr.new/Effect-TS/effect-smol/@effect/ai-openai-compat@acc7fff",
|
|
58
60
|
"@effect/language-service": "^0.83.1",
|
|
59
61
|
"@effect/vitest": "4.0.0-beta.43",
|
|
60
62
|
"@types/node": "^25.5.0",
|
|
61
63
|
"@types/turndown": "^5.0.6",
|
|
62
64
|
"@typescript/native-preview": "7.0.0-dev.20260324.1",
|
|
63
|
-
"effect": "
|
|
65
|
+
"effect": "https://pkg.pr.new/Effect-TS/effect-smol/effect@acc7fff",
|
|
64
66
|
"husky": "^9.1.7",
|
|
65
67
|
"lint-staged": "^16.4.0",
|
|
66
68
|
"oxlint": "^1.57.0",
|
package/src/Agent.test.ts
CHANGED
package/src/Agent.ts
CHANGED
|
@@ -20,7 +20,7 @@ import * as Stream from "effect/Stream"
|
|
|
20
20
|
import type * as Scope from "effect/Scope"
|
|
21
21
|
import * as LanguageModel from "effect/unstable/ai/LanguageModel"
|
|
22
22
|
import * as AiError from "effect/unstable/ai/AiError"
|
|
23
|
-
import * as
|
|
23
|
+
import * as Context from "effect/Context"
|
|
24
24
|
import * as Option from "effect/Option"
|
|
25
25
|
import { identity, pipe } from "effect/Function"
|
|
26
26
|
import * as MutableRef from "effect/MutableRef"
|
|
@@ -102,7 +102,7 @@ export interface Agent {
|
|
|
102
102
|
* @since 1.0.0
|
|
103
103
|
* @category Service
|
|
104
104
|
*/
|
|
105
|
-
export const Agent =
|
|
105
|
+
export const Agent = Context.Service<Agent>("clanka/Agent")
|
|
106
106
|
|
|
107
107
|
/**
|
|
108
108
|
* @since 1.0.0
|
|
@@ -607,7 +607,7 @@ ${capabilities.toolsDts}
|
|
|
607
607
|
declare const fetch: typeof globalThis.fetch
|
|
608
608
|
\`\`\``
|
|
609
609
|
|
|
610
|
-
class ScriptExecutor extends
|
|
610
|
+
class ScriptExecutor extends Context.Service<
|
|
611
611
|
ScriptExecutor,
|
|
612
612
|
(script: string) => Effect.Effect<string>
|
|
613
613
|
>()("clanka/Agent/ScriptExecutor") {}
|
|
@@ -664,7 +664,7 @@ export const layerLocal = <Toolkit extends Toolkit.Any = never>(options: {
|
|
|
664
664
|
* @since 1.0.0
|
|
665
665
|
* @category Subagent model
|
|
666
666
|
*/
|
|
667
|
-
export class SubagentModel extends
|
|
667
|
+
export class SubagentModel extends Context.Service<
|
|
668
668
|
SubagentModel,
|
|
669
669
|
Layer.Layer<
|
|
670
670
|
LanguageModel.LanguageModel | Model.ProviderName | Model.ModelName
|
|
@@ -685,9 +685,9 @@ export const layerSubagentModel = <E, R>(
|
|
|
685
685
|
Layer.effect(
|
|
686
686
|
SubagentModel,
|
|
687
687
|
Effect.gen(function* () {
|
|
688
|
-
const services = yield* Effect.
|
|
688
|
+
const services = yield* Effect.context<R>()
|
|
689
689
|
return Layer.orDie(layer).pipe(
|
|
690
|
-
Layer.provide(Layer.
|
|
690
|
+
Layer.provide(Layer.succeedContext(services)),
|
|
691
691
|
)
|
|
692
692
|
}),
|
|
693
693
|
)
|
|
@@ -696,7 +696,7 @@ export const layerSubagentModel = <E, R>(
|
|
|
696
696
|
* @since 1.0.0
|
|
697
697
|
* @category Conversation mode
|
|
698
698
|
*/
|
|
699
|
-
export class ConversationMode extends
|
|
699
|
+
export class ConversationMode extends Context.Reference<boolean>(
|
|
700
700
|
"clanka/Agent/ConversationMode",
|
|
701
701
|
{
|
|
702
702
|
defaultValue: () => false,
|
|
@@ -712,7 +712,7 @@ export class ConversationMode extends ServiceMap.Reference<boolean>(
|
|
|
712
712
|
* @since 1.0.0
|
|
713
713
|
* @category Turn timeout
|
|
714
714
|
*/
|
|
715
|
-
export class TurnTimeout extends
|
|
715
|
+
export class TurnTimeout extends Context.Reference<Duration.Duration>(
|
|
716
716
|
"clanka/Agent/TurnTimeout",
|
|
717
717
|
{
|
|
718
718
|
defaultValue: () => Duration.minutes(5),
|
|
@@ -726,7 +726,7 @@ export class TurnTimeout extends ServiceMap.Reference<Duration.Duration>(
|
|
|
726
726
|
* @since 1.0.0
|
|
727
727
|
* @category System prompts
|
|
728
728
|
*/
|
|
729
|
-
export class AgentModelConfig extends
|
|
729
|
+
export class AgentModelConfig extends Context.Reference<{
|
|
730
730
|
readonly systemPromptTransform?:
|
|
731
731
|
| (<A, E, R>(
|
|
732
732
|
system: string,
|
package/src/AgentExecutor.ts
CHANGED
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
import { ToolkitRenderer } from "./ToolkitRenderer.ts"
|
|
16
16
|
import type * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner"
|
|
17
17
|
import type * as HttpClient from "effect/unstable/http/HttpClient"
|
|
18
|
-
import * as
|
|
18
|
+
import * as Context from "effect/Context"
|
|
19
19
|
import * as Effect from "effect/Effect"
|
|
20
20
|
import * as Option from "effect/Option"
|
|
21
21
|
import * as Stream from "effect/Stream"
|
|
@@ -45,7 +45,7 @@ import * as References from "effect/References"
|
|
|
45
45
|
* @since 1.0.0
|
|
46
46
|
* @category Services
|
|
47
47
|
*/
|
|
48
|
-
export class AgentExecutor extends
|
|
48
|
+
export class AgentExecutor extends Context.Service<
|
|
49
49
|
AgentExecutor,
|
|
50
50
|
{
|
|
51
51
|
readonly capabilities: Effect.Effect<Capabilities>
|
|
@@ -54,6 +54,10 @@ export class AgentExecutor extends ServiceMap.Service<
|
|
|
54
54
|
readonly onTaskComplete: (summary: string) => Effect.Effect<void>
|
|
55
55
|
readonly onSubagent: (message: string) => Effect.Effect<string>
|
|
56
56
|
}): Stream.Stream<string>
|
|
57
|
+
executeUnsafe<Tool extends keyof typeof AgentTools.tools>(options: {
|
|
58
|
+
readonly tool: Tool
|
|
59
|
+
readonly params: (typeof AgentTools.tools)[Tool]["parametersSchema"]["Encoded"]
|
|
60
|
+
}): Effect.Effect<Schema.Json>
|
|
57
61
|
}
|
|
58
62
|
>()("clanka/AgentExecutor") {}
|
|
59
63
|
|
|
@@ -102,13 +106,13 @@ export const makeLocal = Effect.fnUntraced(function* <
|
|
|
102
106
|
const tools = yield* AllTools
|
|
103
107
|
const toolsDts = renderer.render(AllTools)
|
|
104
108
|
|
|
105
|
-
const services = yield* Effect.
|
|
109
|
+
const services = yield* Effect.context()
|
|
106
110
|
|
|
107
111
|
const toolEntries = Object.entries(tools.tools).map(([name, tool]) => {
|
|
108
112
|
const handler = services.mapUnsafe.get(tool.id) as Tool.Handler<string>
|
|
109
113
|
return {
|
|
110
114
|
name,
|
|
111
|
-
services:
|
|
115
|
+
services: Context.merge(services, handler.context),
|
|
112
116
|
handler: handler.handler,
|
|
113
117
|
}
|
|
114
118
|
})
|
|
@@ -127,16 +131,16 @@ export const makeLocal = Effect.fnUntraced(function* <
|
|
|
127
131
|
const handlerScope = Scope.makeUnsafe("parallel")
|
|
128
132
|
const trackFiber = Fiber.runIn(handlerScope)
|
|
129
133
|
|
|
130
|
-
const taskServices =
|
|
131
|
-
|
|
134
|
+
const taskServices = Context.mutate(
|
|
135
|
+
Context.empty(),
|
|
132
136
|
flow(
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
137
|
+
Context.add(TaskCompleter, opts.onTaskComplete),
|
|
138
|
+
Context.add(CurrentDirectory, options.directory),
|
|
139
|
+
Context.add(SubagentExecutor, opts.onSubagent),
|
|
140
|
+
Context.add(Console.Console, console),
|
|
141
|
+
Context.add(References.CurrentLogAnnotations, {}),
|
|
138
142
|
Option.isSome(search)
|
|
139
|
-
?
|
|
143
|
+
? Context.add(SemanticSearch, search.value)
|
|
140
144
|
: identity,
|
|
141
145
|
),
|
|
142
146
|
)
|
|
@@ -156,7 +160,7 @@ export const makeLocal = Effect.fnUntraced(function* <
|
|
|
156
160
|
for (let i = 0; i < toolEntries.length; i++) {
|
|
157
161
|
const { name, handler, services } = toolEntries[i]!
|
|
158
162
|
const runFork = Effect.runForkWith(
|
|
159
|
-
|
|
163
|
+
Context.merge(services, taskServices),
|
|
160
164
|
)
|
|
161
165
|
|
|
162
166
|
// oxlint-disable-next-line typescript/no-explicit-any
|
|
@@ -207,6 +211,22 @@ export const makeLocal = Effect.fnUntraced(function* <
|
|
|
207
211
|
})
|
|
208
212
|
}),
|
|
209
213
|
execute,
|
|
214
|
+
executeUnsafe: (opts) => {
|
|
215
|
+
const tool = tools.tools[opts.tool as keyof typeof tools.tools]
|
|
216
|
+
const handler = services.mapUnsafe.get(opts.tool) as Tool.Handler<string>
|
|
217
|
+
if (!handler || !tool) {
|
|
218
|
+
return Effect.die(new Error(`Unknown tool: ${opts.tool}`))
|
|
219
|
+
}
|
|
220
|
+
const encodeSuccess = Schema.encodeUnknownEffect(
|
|
221
|
+
Schema.toCodecJson(tool.successSchema as Schema.Top),
|
|
222
|
+
)
|
|
223
|
+
return pipe(
|
|
224
|
+
handler.handler(opts.params, {}),
|
|
225
|
+
Effect.flatMap(encodeSuccess),
|
|
226
|
+
Effect.provideContext(handler.context),
|
|
227
|
+
Effect.orDie,
|
|
228
|
+
) as Effect.Effect<Schema.Json>
|
|
229
|
+
},
|
|
210
230
|
})
|
|
211
231
|
})
|
|
212
232
|
|
|
@@ -250,6 +270,9 @@ export const makeRpc = Effect.gen(function* () {
|
|
|
250
270
|
),
|
|
251
271
|
),
|
|
252
272
|
).pipe(Stream.unwrap),
|
|
273
|
+
executeUnsafe(options) {
|
|
274
|
+
return client.executeUnsafe(options).pipe(Effect.orDie)
|
|
275
|
+
},
|
|
253
276
|
})
|
|
254
277
|
})
|
|
255
278
|
|
|
@@ -382,6 +405,9 @@ export const layerRpcServer = <Toolkit extends Toolkit.Any = never>(options: {
|
|
|
382
405
|
|
|
383
406
|
return queue
|
|
384
407
|
}),
|
|
408
|
+
executeUnsafe(opts) {
|
|
409
|
+
return local.executeUnsafe(opts as any)
|
|
410
|
+
},
|
|
385
411
|
})
|
|
386
412
|
}),
|
|
387
413
|
),
|
|
@@ -420,6 +446,13 @@ export class Rpcs extends RpcGroup.make(
|
|
|
420
446
|
success: ExecuteOutput,
|
|
421
447
|
stream: true,
|
|
422
448
|
}),
|
|
449
|
+
Rpc.make("executeUnsafe", {
|
|
450
|
+
payload: Schema.Struct({
|
|
451
|
+
tool: Schema.String,
|
|
452
|
+
params: Schema.Json,
|
|
453
|
+
}),
|
|
454
|
+
success: Schema.Json,
|
|
455
|
+
}),
|
|
423
456
|
) {}
|
|
424
457
|
|
|
425
458
|
// ------------------------------------------
|
package/src/AgentTools.ts
CHANGED
|
@@ -6,7 +6,7 @@ import { parsePatch, patchChunks } from "./ApplyPatch.ts"
|
|
|
6
6
|
import * as ExaSearch from "./ExaSearch.ts"
|
|
7
7
|
import * as WebToMarkdown from "./WebToMarkdown.ts"
|
|
8
8
|
import type * as HttpClient from "effect/unstable/http/HttpClient"
|
|
9
|
-
import * as
|
|
9
|
+
import * as Context from "effect/Context"
|
|
10
10
|
import * as Effect from "effect/Effect"
|
|
11
11
|
import * as Toolkit from "effect/unstable/ai/Toolkit"
|
|
12
12
|
import * as Tool from "effect/unstable/ai/Tool"
|
|
@@ -26,7 +26,7 @@ import * as SemanticSearch from "./SemanticSearch/Service.ts"
|
|
|
26
26
|
* @since 1.0.0
|
|
27
27
|
* @category Context
|
|
28
28
|
*/
|
|
29
|
-
export class CurrentDirectory extends
|
|
29
|
+
export class CurrentDirectory extends Context.Service<
|
|
30
30
|
CurrentDirectory,
|
|
31
31
|
string
|
|
32
32
|
>()("clanka/AgentTools/CurrentDirectory") {}
|
|
@@ -35,7 +35,7 @@ export class CurrentDirectory extends ServiceMap.Service<
|
|
|
35
35
|
* @since 1.0.0
|
|
36
36
|
* @category Context
|
|
37
37
|
*/
|
|
38
|
-
export class TaskCompleter extends
|
|
38
|
+
export class TaskCompleter extends Context.Service<
|
|
39
39
|
TaskCompleter,
|
|
40
40
|
(output: string) => Effect.Effect<void>
|
|
41
41
|
>()("clanka/AgentTools/TaskCompleter") {}
|
|
@@ -44,7 +44,7 @@ export class TaskCompleter extends ServiceMap.Service<
|
|
|
44
44
|
* @since 1.0.0
|
|
45
45
|
* @category Context
|
|
46
46
|
*/
|
|
47
|
-
export class SubagentExecutor extends
|
|
47
|
+
export class SubagentExecutor extends Context.Service<
|
|
48
48
|
SubagentExecutor,
|
|
49
49
|
(prompt: string) => Effect.Effect<string>
|
|
50
50
|
>()("clanka/AgentTools/SubagentExecutor") {}
|
|
@@ -54,9 +54,9 @@ export class SubagentExecutor extends ServiceMap.Service<
|
|
|
54
54
|
* @category Context
|
|
55
55
|
*/
|
|
56
56
|
export const makeContextNoop = (cwd?: string) =>
|
|
57
|
-
SubagentExecutor.
|
|
58
|
-
|
|
59
|
-
|
|
57
|
+
SubagentExecutor.context(() => Effect.die("Not implemented")).pipe(
|
|
58
|
+
Context.add(CurrentDirectory, cwd ?? "/"),
|
|
59
|
+
Context.add(TaskCompleter, () => Effect.void),
|
|
60
60
|
)
|
|
61
61
|
|
|
62
62
|
class TodoItem extends Schema.Opaque<TodoItem>()(
|
package/src/ApplyPatch.test.ts
CHANGED
|
@@ -35,7 +35,7 @@ describe("patchContent", () => {
|
|
|
35
35
|
"*** Begin Patch",
|
|
36
36
|
"*** Update File: src/ExaSearch.ts",
|
|
37
37
|
"@@",
|
|
38
|
-
" export class ExaSearch extends
|
|
38
|
+
" export class ExaSearch extends Context.Service<",
|
|
39
39
|
" ExaSearch,",
|
|
40
40
|
" {",
|
|
41
41
|
"- search(query: string): Effect.Effect<Array<SearchResponse<{}>>, ExaError>",
|
|
@@ -51,7 +51,7 @@ describe("patchContent", () => {
|
|
|
51
51
|
chunks: [
|
|
52
52
|
{
|
|
53
53
|
old: [
|
|
54
|
-
"export class ExaSearch extends
|
|
54
|
+
"export class ExaSearch extends Context.Service<",
|
|
55
55
|
" ExaSearch,",
|
|
56
56
|
" {",
|
|
57
57
|
" search(query: string): Effect.Effect<Array<SearchResponse<{}>>, ExaError>",
|
|
@@ -59,7 +59,7 @@ describe("patchContent", () => {
|
|
|
59
59
|
'>()("clanka/ExaSearch") {}',
|
|
60
60
|
],
|
|
61
61
|
next: [
|
|
62
|
-
"export class ExaSearch extends
|
|
62
|
+
"export class ExaSearch extends Context.Service<",
|
|
63
63
|
" ExaSearch,",
|
|
64
64
|
" {",
|
|
65
65
|
" search(query: string): Effect.Effect<SearchResponse<{}>, ExaError>",
|
package/src/ChunkRepo.ts
CHANGED
|
@@ -2,7 +2,7 @@ import * as Effect from "effect/Effect"
|
|
|
2
2
|
import * as Layer from "effect/Layer"
|
|
3
3
|
import * as Schema from "effect/Schema"
|
|
4
4
|
import * as SchemaTransformation from "effect/SchemaTransformation"
|
|
5
|
-
import * as
|
|
5
|
+
import * as Context from "effect/Context"
|
|
6
6
|
import * as Model from "effect/unstable/schema/Model"
|
|
7
7
|
import * as SqlClient from "effect/unstable/sql/SqlClient"
|
|
8
8
|
import * as SqlError from "effect/unstable/sql/SqlError"
|
|
@@ -87,7 +87,7 @@ export class Chunk extends Model.Class<Chunk>("Chunk")({
|
|
|
87
87
|
* @since 1.0.0
|
|
88
88
|
* @category Services
|
|
89
89
|
*/
|
|
90
|
-
export class ChunkRepo extends
|
|
90
|
+
export class ChunkRepo extends Context.Service<
|
|
91
91
|
ChunkRepo,
|
|
92
92
|
{
|
|
93
93
|
insert(
|
|
@@ -139,10 +139,9 @@ export const layer = Layer.effect(
|
|
|
139
139
|
Effect.gen(function* () {
|
|
140
140
|
const sql = yield* SqlClient.SqlClient
|
|
141
141
|
const dimensions = yield* EmbeddingModel.Dimensions
|
|
142
|
-
const loaders = yield* SqlModel.
|
|
142
|
+
const loaders = yield* SqlModel.makeResolvers(Chunk, {
|
|
143
143
|
tableName: "chunks",
|
|
144
144
|
idColumn: "id",
|
|
145
|
-
window: 10,
|
|
146
145
|
spanPrefix: "ChunkRepo",
|
|
147
146
|
})
|
|
148
147
|
|
|
@@ -185,10 +184,13 @@ export const layer = Layer.effect(
|
|
|
185
184
|
sql`select id, hash from chunks where ${sql.in("hash", hashes)}`,
|
|
186
185
|
}).pipe(RequestResolver.setDelay(5))
|
|
187
186
|
|
|
187
|
+
const insertResolver = loaders.insert.pipe(RequestResolver.setDelay(5))
|
|
188
|
+
const findByIdResolver = loaders.findById.pipe(RequestResolver.setDelay(5))
|
|
189
|
+
|
|
188
190
|
return ChunkRepo.of({
|
|
189
191
|
insert: (insert) => {
|
|
190
192
|
needsQuantization = true
|
|
191
|
-
return
|
|
193
|
+
return SqlResolver.request(insert, insertResolver).pipe(
|
|
192
194
|
Effect.catchTags({
|
|
193
195
|
SqlError: (reason) => Effect.fail(new ChunkRepoError({ reason })),
|
|
194
196
|
SchemaError: Effect.die,
|
|
@@ -196,7 +198,7 @@ export const layer = Layer.effect(
|
|
|
196
198
|
)
|
|
197
199
|
},
|
|
198
200
|
findById: (id) =>
|
|
199
|
-
|
|
201
|
+
SqlResolver.request(id, findByIdResolver).pipe(
|
|
200
202
|
Effect.catchTags({
|
|
201
203
|
SchemaError: Effect.die,
|
|
202
204
|
}),
|
package/src/CodeChunker.ts
CHANGED
|
@@ -7,7 +7,7 @@ import * as FileSystem from "effect/FileSystem"
|
|
|
7
7
|
import { pipe } from "effect/Function"
|
|
8
8
|
import * as Layer from "effect/Layer"
|
|
9
9
|
import * as Path from "effect/Path"
|
|
10
|
-
import * as
|
|
10
|
+
import * as Context from "effect/Context"
|
|
11
11
|
import * as Stream from "effect/Stream"
|
|
12
12
|
import * as ChildProcess from "effect/unstable/process/ChildProcess"
|
|
13
13
|
import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner"
|
|
@@ -47,7 +47,7 @@ export type ChunkType =
|
|
|
47
47
|
* @since 1.0.0
|
|
48
48
|
* @category Services
|
|
49
49
|
*/
|
|
50
|
-
export class CodeChunker extends
|
|
50
|
+
export class CodeChunker extends Context.Service<
|
|
51
51
|
CodeChunker,
|
|
52
52
|
{
|
|
53
53
|
listFiles(options: {
|