clanka 0.1.1 → 0.1.2

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.
@@ -1,8 +1,9 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
- import { Effect, FileSystem, Layer, Option, Path, ServiceMap, Stream } from "effect";
4
+ import { Effect, FileSystem, Layer, Option, Path, Schema, Scope, ServiceMap, Stream } from "effect";
5
5
  import { Tool, Toolkit } from "effect/unstable/ai";
6
+ import { Rpc, RpcClient, RpcGroup, RpcServer } from "effect/unstable/rpc";
6
7
  import { CurrentDirectory, SubagentExecutor, TaskCompleter } from "./AgentTools.ts";
7
8
  import { ToolkitRenderer } from "./ToolkitRenderer.ts";
8
9
  import type { ChildProcessSpawner } from "effect/unstable/process/ChildProcessSpawner";
@@ -39,120 +40,133 @@ export declare const makeLocal: <Toolkit extends Toolkit.Any = never>(options: {
39
40
  }): Stream.Stream<string>;
40
41
  }, never, Tool.HandlersFor<{
41
42
  readonly readFile: Tool.Tool<"readFile", {
42
- readonly parameters: import("effect/Schema").Struct<{
43
- readonly path: import("effect/Schema").String;
44
- readonly startLine: import("effect/Schema").optional<import("effect/Schema").Number>;
45
- readonly endLine: import("effect/Schema").optional<import("effect/Schema").Number>;
43
+ readonly parameters: Schema.Struct<{
44
+ readonly path: Schema.String;
45
+ readonly startLine: Schema.optional<Schema.Number>;
46
+ readonly endLine: Schema.optional<Schema.Number>;
46
47
  }>;
47
- readonly success: import("effect/Schema").NullOr<import("effect/Schema").String>;
48
- readonly failure: import("effect/Schema").Never;
48
+ readonly success: Schema.NullOr<Schema.String>;
49
+ readonly failure: Schema.Never;
49
50
  readonly failureMode: "error";
50
51
  }, CurrentDirectory>;
51
52
  readonly writeFile: Tool.Tool<"writeFile", {
52
- readonly parameters: import("effect/Schema").Struct<{
53
- readonly path: import("effect/Schema").String;
54
- readonly content: import("effect/Schema").String;
53
+ readonly parameters: Schema.Struct<{
54
+ readonly path: Schema.String;
55
+ readonly content: Schema.String;
55
56
  }>;
56
- readonly success: import("effect/Schema").Void;
57
- readonly failure: import("effect/Schema").Never;
57
+ readonly success: Schema.Void;
58
+ readonly failure: Schema.Never;
58
59
  readonly failureMode: "error";
59
60
  }, CurrentDirectory>;
60
61
  readonly applyPatch: Tool.Tool<"applyPatch", {
61
- readonly parameters: import("effect/Schema").String;
62
- readonly success: import("effect/Schema").String;
63
- readonly failure: import("effect/Schema").Never;
62
+ readonly parameters: Schema.String;
63
+ readonly success: Schema.String;
64
+ readonly failure: Schema.Never;
64
65
  readonly failureMode: "error";
65
66
  }, CurrentDirectory>;
66
67
  readonly removeFile: Tool.Tool<"removeFile", {
67
- readonly parameters: import("effect/Schema").String;
68
- readonly success: import("effect/Schema").Void;
69
- readonly failure: import("effect/Schema").Never;
68
+ readonly parameters: Schema.String;
69
+ readonly success: Schema.Void;
70
+ readonly failure: Schema.Never;
70
71
  readonly failureMode: "error";
71
72
  }, CurrentDirectory>;
72
73
  readonly renameFile: Tool.Tool<"renameFile", {
73
- readonly parameters: import("effect/Schema").Struct<{
74
- readonly from: import("effect/Schema").String;
75
- readonly to: import("effect/Schema").String;
74
+ readonly parameters: Schema.Struct<{
75
+ readonly from: Schema.String;
76
+ readonly to: Schema.String;
76
77
  }>;
77
- readonly success: import("effect/Schema").Void;
78
- readonly failure: import("effect/Schema").Never;
78
+ readonly success: Schema.Void;
79
+ readonly failure: Schema.Never;
79
80
  readonly failureMode: "error";
80
81
  }, CurrentDirectory>;
81
82
  readonly mkdir: Tool.Tool<"mkdir", {
82
- readonly parameters: import("effect/Schema").String;
83
- readonly success: import("effect/Schema").Void;
84
- readonly failure: import("effect/Schema").Never;
83
+ readonly parameters: Schema.String;
84
+ readonly success: Schema.Void;
85
+ readonly failure: Schema.Never;
85
86
  readonly failureMode: "error";
86
87
  }, CurrentDirectory>;
87
88
  readonly ls: Tool.Tool<"ls", {
88
- readonly parameters: import("effect/Schema").String;
89
- readonly success: import("effect/Schema").$Array<import("effect/Schema").String>;
90
- readonly failure: import("effect/Schema").Never;
89
+ readonly parameters: Schema.String;
90
+ readonly success: Schema.$Array<Schema.String>;
91
+ readonly failure: Schema.Never;
91
92
  readonly failureMode: "error";
92
93
  }, CurrentDirectory>;
93
94
  readonly rg: Tool.Tool<"rg", {
94
- readonly parameters: import("effect/Schema").Struct<{
95
- readonly pattern: import("effect/Schema").String;
96
- readonly glob: import("effect/Schema").optional<import("effect/Schema").String>;
97
- readonly noIgnore: import("effect/Schema").optional<import("effect/Schema").Boolean>;
98
- readonly maxLines: import("effect/Schema").optional<import("effect/Schema").Finite>;
95
+ readonly parameters: Schema.Struct<{
96
+ readonly pattern: Schema.String;
97
+ readonly glob: Schema.optional<Schema.String>;
98
+ readonly noIgnore: Schema.optional<Schema.Boolean>;
99
+ readonly maxLines: Schema.optional<Schema.Finite>;
99
100
  }>;
100
- readonly success: import("effect/Schema").String;
101
- readonly failure: import("effect/Schema").Never;
101
+ readonly success: Schema.String;
102
+ readonly failure: Schema.Never;
102
103
  readonly failureMode: "error";
103
104
  }, CurrentDirectory>;
104
105
  readonly glob: Tool.Tool<"glob", {
105
- readonly parameters: import("effect/Schema").String;
106
- readonly success: import("effect/Schema").$Array<import("effect/Schema").String>;
107
- readonly failure: import("effect/Schema").Never;
106
+ readonly parameters: Schema.String;
107
+ readonly success: Schema.$Array<Schema.String>;
108
+ readonly failure: Schema.Never;
108
109
  readonly failureMode: "error";
109
110
  }, CurrentDirectory>;
110
111
  readonly bash: Tool.Tool<"bash", {
111
- readonly parameters: import("effect/Schema").String;
112
- readonly success: import("effect/Schema").String;
113
- readonly failure: import("effect/Schema").Never;
112
+ readonly parameters: Schema.String;
113
+ readonly success: Schema.String;
114
+ readonly failure: Schema.Never;
114
115
  readonly failureMode: "error";
115
116
  }, CurrentDirectory>;
116
117
  readonly gh: Tool.Tool<"gh", {
117
- readonly parameters: import("effect/Schema").$Array<import("effect/Schema").String>;
118
- readonly success: import("effect/Schema").String;
119
- readonly failure: import("effect/Schema").Never;
118
+ readonly parameters: Schema.$Array<Schema.String>;
119
+ readonly success: Schema.String;
120
+ readonly failure: Schema.Never;
120
121
  readonly failureMode: "error";
121
122
  }, CurrentDirectory>;
122
123
  readonly delegate: Tool.Tool<"delegate", {
123
- readonly parameters: import("effect/Schema").String;
124
- readonly success: import("effect/Schema").String;
125
- readonly failure: import("effect/Schema").Never;
124
+ readonly parameters: Schema.String;
125
+ readonly success: Schema.String;
126
+ readonly failure: Schema.Never;
126
127
  readonly failureMode: "error";
127
128
  }, SubagentExecutor>;
128
129
  readonly webSearch: Tool.Tool<"webSearch", {
129
- readonly parameters: import("effect/Schema").Struct<{
130
- readonly query: import("effect/Schema").String;
131
- readonly numResults: import("effect/Schema").optional<import("effect/Schema").Number>;
130
+ readonly parameters: Schema.Struct<{
131
+ readonly query: Schema.String;
132
+ readonly numResults: Schema.optional<Schema.Number>;
132
133
  }>;
133
- readonly success: import("effect/Schema").String;
134
- readonly failure: import("effect/Schema").Never;
134
+ readonly success: Schema.String;
135
+ readonly failure: Schema.Never;
135
136
  readonly failureMode: "error";
136
137
  }, never>;
137
138
  readonly fetchMarkdown: Tool.Tool<"fetchMarkdown", {
138
- readonly parameters: import("effect/Schema").String;
139
- readonly success: import("effect/Schema").String;
140
- readonly failure: import("effect/Schema").Never;
139
+ readonly parameters: Schema.String;
140
+ readonly success: Schema.String;
141
+ readonly failure: Schema.Never;
141
142
  readonly failureMode: "error";
142
143
  }, never>;
143
144
  readonly sleep: Tool.Tool<"sleep", {
144
- readonly parameters: import("effect/Schema").Finite;
145
- readonly success: import("effect/Schema").Void;
146
- readonly failure: import("effect/Schema").Never;
145
+ readonly parameters: Schema.Finite;
146
+ readonly success: Schema.Void;
147
+ readonly failure: Schema.Never;
147
148
  readonly failureMode: "error";
148
149
  }, never>;
149
150
  readonly taskComplete: Tool.Tool<"taskComplete", {
150
- readonly parameters: import("effect/Schema").String;
151
- readonly success: import("effect/Schema").Void;
152
- readonly failure: import("effect/Schema").Never;
151
+ readonly parameters: Schema.String;
152
+ readonly success: Schema.Void;
153
+ readonly failure: Schema.Never;
153
154
  readonly failureMode: "error";
154
155
  }, TaskCompleter>;
155
156
  }> | FileSystem.FileSystem | Path.Path | ToolkitRenderer | Exclude<Toolkit extends Toolkit.Toolkit<infer T extends Record<string, Tool.Any>> ? Tool.HandlersFor<T> | Tool.HandlerServices<T[keyof T]> : never, CurrentDirectory | TaskCompleter | SubagentExecutor>>;
157
+ /**
158
+ * @since 1.0.0
159
+ * @category Constructors
160
+ */
161
+ export declare const makeRpc: Effect.Effect<{
162
+ readonly toolsDts: Effect.Effect<string>;
163
+ readonly agentsMd: Effect.Effect<Option.Option<string>>;
164
+ execute(options: {
165
+ readonly script: string;
166
+ readonly onTaskComplete: (summary: string) => Effect.Effect<void>;
167
+ readonly onSubagent: (message: string) => Effect.Effect<string>;
168
+ }): Stream.Stream<string>;
169
+ }, never, Scope.Scope | RpcClient.Protocol>;
156
170
  /**
157
171
  * @since 1.0.0
158
172
  * @category Layers
@@ -161,5 +175,64 @@ export declare const layerLocal: <Toolkit extends Toolkit.Any = never>(options:
161
175
  readonly directory: string;
162
176
  readonly tools?: Toolkit | undefined;
163
177
  }) => Layer.Layer<AgentExecutor, never, FileSystem.FileSystem | Path.Path | ChildProcessSpawner | HttpClient | Exclude<Toolkit extends Toolkit.Toolkit<infer T> ? Tool.HandlersFor<T> | Tool.HandlerServices<T[keyof T]> : never, CurrentDirectory | SubagentExecutor | TaskCompleter>>;
178
+ /**
179
+ * Create an AgentExecutor that communicates with a remote RpcServer serving the
180
+ * AgentExecutor protocol.
181
+ *
182
+ * @since 1.0.0
183
+ * @category Layers
184
+ */
185
+ export declare const layerRpc: Layer.Layer<AgentExecutor, never, RpcClient.Protocol>;
186
+ /**
187
+ * Create a RpcServer that serves the AgentExecutor rpc protocol.
188
+ *
189
+ * This can be used to run the AgentExecutor in a remote location.
190
+ *
191
+ * @since 1.0.0
192
+ * @category Layers
193
+ */
194
+ export declare const layerRpcServer: <Toolkit extends Toolkit.Any = never>(options: {
195
+ readonly directory: string;
196
+ readonly tools?: Toolkit | undefined;
197
+ }) => Layer.Layer<never, never, RpcServer.Protocol | FileSystem.FileSystem | HttpClient | Path.Path | ChildProcessSpawner | Exclude<Toolkit extends Toolkit.Toolkit<infer T> ? Tool.HandlersFor<T> | Tool.HandlerServices<T[keyof T]> : never, CurrentDirectory | SubagentExecutor | TaskCompleter>>;
198
+ /**
199
+ * @since 1.0.0
200
+ * @category Rpcs
201
+ */
202
+ export declare const ExecuteOutput: Schema.TaggedUnion<{
203
+ readonly Text: Schema.TaggedStruct<"Text", {
204
+ readonly text: Schema.String;
205
+ }>;
206
+ readonly TaskComplete: Schema.TaggedStruct<"TaskComplete", {
207
+ readonly summary: Schema.String;
208
+ }>;
209
+ readonly Subagent: Schema.TaggedStruct<"Subagent", {
210
+ readonly id: Schema.Finite;
211
+ readonly prompt: Schema.String;
212
+ }>;
213
+ }>;
214
+ declare const Rpcs_base: RpcGroup.RpcGroup<Rpc.Rpc<"toolsDts", Schema.Void, Schema.String, Schema.Never, never, never> | Rpc.Rpc<"agentsMd", Schema.Void, Schema.Option<Schema.String>, Schema.Never, never, never> | Rpc.Rpc<"subagentOutput", Schema.Struct<{
215
+ id: Schema.Finite;
216
+ output: Schema.String;
217
+ }>, Schema.Void, Schema.Never, never, never> | Rpc.Rpc<"execute", Schema.Struct<{
218
+ readonly script: Schema.String;
219
+ }>, import("effect/unstable/rpc/RpcSchema").Stream<Schema.TaggedUnion<{
220
+ readonly Text: Schema.TaggedStruct<"Text", {
221
+ readonly text: Schema.String;
222
+ }>;
223
+ readonly TaskComplete: Schema.TaggedStruct<"TaskComplete", {
224
+ readonly summary: Schema.String;
225
+ }>;
226
+ readonly Subagent: Schema.TaggedStruct<"Subagent", {
227
+ readonly id: Schema.Finite;
228
+ readonly prompt: Schema.String;
229
+ }>;
230
+ }>, Schema.Never>, Schema.Never, never, never>>;
231
+ /**
232
+ * @since 1.0.0
233
+ * @category Rpcs
234
+ */
235
+ export declare class Rpcs extends Rpcs_base {
236
+ }
164
237
  export {};
165
238
  //# sourceMappingURL=AgentExecutor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AgentExecutor.d.ts","sourceRoot":"","sources":["../src/AgentExecutor.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAGL,MAAM,EAGN,UAAU,EACV,KAAK,EACL,MAAM,EACN,IAAI,EAIJ,UAAU,EACV,MAAM,EACP,MAAM,QAAQ,CAAA;AACf,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAIlD,OAAO,EAGL,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACd,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAA;AACtF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;;uBAS1C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;uBACrB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;qBACtC;QACf,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;QACvB,QAAQ,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACjE,QAAQ,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;KAChE,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;;AAb7B;;;GAGG;AACH,qBAAa,aAAc,SAAQ,kBAWR;CAAG;AAE9B;;;GAGG;AACH,eAAO,MAAM,SAAS,GACpB,OAAO,SAAS,OAAO,CAAC,GAAG;wBAEP,MAAM;qBACT,OAAO,GAAG,SAAS;;uBAlBf,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;uBACrB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;qBACtC;QACf,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;QACvB,QAAQ,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACjE,QAAQ,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;KAChE,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yGAqBe,CAAC,0JA8G3C,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAI,OAAO,SAAS,OAAO,CAAC,GAAG,GAAG,KAAK,EAAE,SAAS;IACvE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CACrC,KAAG,KAAK,CAAC,KAAK,CACb,aAAa,EACb,KAAK,EACH,UAAU,CAAC,UAAU,GACrB,IAAI,CAAC,IAAI,GACT,mBAAmB,GACnB,UAAU,GACV,OAAO,CACL,OAAO,SAAS,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GACpC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GACtD,KAAK,EACT,gBAAgB,GAAG,gBAAgB,GAAG,aAAa,CACpD,CAIF,CAAA"}
1
+ {"version":3,"file":"AgentExecutor.d.ts","sourceRoot":"","sources":["../src/AgentExecutor.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
- import { Cause, Console, Effect, Exit, Fiber, FileSystem, Layer, Option, Path, pipe, Queue, Scope, ServiceMap, Stream, } from "effect";
4
+ import { Cause, Console, Effect, Exit, Fiber, FileSystem, Layer, Option, Path, pipe, Queue, Result, Schema, Scope, ServiceMap, Stream, } from "effect";
5
5
  import { Tool, Toolkit } from "effect/unstable/ai";
6
+ import { Rpc, RpcClient, RpcGroup, RpcServer } from "effect/unstable/rpc";
6
7
  import * as NodeConsole from "node:console";
7
8
  import * as NodeVm from "node:vm";
8
9
  import { Writable } from "node:stream";
@@ -90,11 +91,139 @@ ${opts.script}
90
91
  execute,
91
92
  });
92
93
  });
94
+ /**
95
+ * @since 1.0.0
96
+ * @category Constructors
97
+ */
98
+ export const makeRpc = Effect.gen(function* () {
99
+ const client = yield* RpcClient.make(Rpcs, {
100
+ spanPrefix: "AgentExecutorClient",
101
+ });
102
+ return AgentExecutor.of({
103
+ toolsDts: Effect.orDie(client.toolsDts()),
104
+ agentsMd: Effect.orDie(client.agentsMd()),
105
+ execute: (opts) => Scope.Scope.useSync((scope) => client.execute({ script: opts.script }).pipe(Stream.tap((part) => {
106
+ switch (part._tag) {
107
+ case "Text": {
108
+ return Effect.void;
109
+ }
110
+ case "TaskComplete": {
111
+ return opts.onTaskComplete(part.summary);
112
+ }
113
+ case "Subagent": {
114
+ const id = part.id;
115
+ return pipe(opts.onSubagent(part.prompt), Effect.flatMap((output) => client.subagentOutput({ id, output })), Effect.forkIn(scope));
116
+ }
117
+ }
118
+ }), Stream.orDie, Stream.filterMap((part) => part._tag === "Text" ? Result.succeed(part.text) : Result.failVoid))).pipe(Stream.unwrap),
119
+ });
120
+ });
93
121
  /**
94
122
  * @since 1.0.0
95
123
  * @category Layers
96
124
  */
97
125
  export const layerLocal = (options) => Layer.effect(AgentExecutor, makeLocal(options)).pipe(Layer.provide([AgentToolHandlers, ToolkitRenderer.layer]));
126
+ /**
127
+ * Create an AgentExecutor that communicates with a remote RpcServer serving the
128
+ * AgentExecutor protocol.
129
+ *
130
+ * @since 1.0.0
131
+ * @category Layers
132
+ */
133
+ export const layerRpc = Layer.effect(AgentExecutor, makeRpc);
134
+ /**
135
+ * Create a RpcServer that serves the AgentExecutor rpc protocol.
136
+ *
137
+ * This can be used to run the AgentExecutor in a remote location.
138
+ *
139
+ * @since 1.0.0
140
+ * @category Layers
141
+ */
142
+ export const layerRpcServer = (options) => RpcServer.layer(Rpcs, {
143
+ spanPrefix: "AgentExecutorServer",
144
+ disableFatalDefects: true,
145
+ }).pipe(Layer.provide(Rpcs.toLayer(Effect.gen(function* () {
146
+ const local = yield* makeLocal(options);
147
+ const subagentResumes = new Map();
148
+ return Rpcs.of({
149
+ agentsMd: () => local.agentsMd,
150
+ toolsDts: () => local.toolsDts,
151
+ subagentOutput: ({ id, output }) => {
152
+ const resume = subagentResumes.get(id);
153
+ if (resume) {
154
+ resume(Effect.succeed(output));
155
+ subagentResumes.delete(id);
156
+ }
157
+ return Effect.void;
158
+ },
159
+ execute: Effect.fnUntraced(function* ({ script }) {
160
+ const queue = yield* Queue.unbounded();
161
+ let subagentId = 0;
162
+ yield* pipe(local.execute({
163
+ script,
164
+ onTaskComplete(summary) {
165
+ return Queue.offer(queue, {
166
+ _tag: "TaskComplete",
167
+ summary,
168
+ });
169
+ },
170
+ onSubagent(prompt) {
171
+ const id = subagentId++;
172
+ return Effect.callback((resume) => {
173
+ subagentResumes.set(id, resume);
174
+ Queue.offerUnsafe(queue, {
175
+ _tag: "Subagent",
176
+ id,
177
+ prompt,
178
+ });
179
+ return Effect.sync(() => {
180
+ subagentResumes.delete(id);
181
+ });
182
+ });
183
+ },
184
+ }), Stream.runForEachArray((parts) => {
185
+ for (const part of parts) {
186
+ Queue.offerUnsafe(queue, {
187
+ _tag: "Text",
188
+ text: part,
189
+ });
190
+ }
191
+ return Effect.void;
192
+ }), Effect.forkScoped);
193
+ return queue;
194
+ }),
195
+ });
196
+ }))), Layer.provide([AgentToolHandlers, ToolkitRenderer.layer]));
197
+ /**
198
+ * @since 1.0.0
199
+ * @category Rpcs
200
+ */
201
+ export const ExecuteOutput = Schema.TaggedUnion({
202
+ Text: { text: Schema.String },
203
+ TaskComplete: { summary: Schema.String },
204
+ Subagent: { id: Schema.Finite, prompt: Schema.String },
205
+ });
206
+ /**
207
+ * @since 1.0.0
208
+ * @category Rpcs
209
+ */
210
+ export class Rpcs extends RpcGroup.make(Rpc.make("toolsDts", {
211
+ success: Schema.String,
212
+ }), Rpc.make("agentsMd", {
213
+ success: Schema.Option(Schema.String),
214
+ }), Rpc.make("subagentOutput", {
215
+ payload: {
216
+ id: Schema.Finite,
217
+ output: Schema.String,
218
+ },
219
+ }), Rpc.make("execute", {
220
+ payload: Schema.Struct({
221
+ script: Schema.String,
222
+ }),
223
+ success: ExecuteOutput,
224
+ stream: true,
225
+ })) {
226
+ }
98
227
  const defaultMain = () => Promise.resolve();
99
228
  const makeConsole = Effect.fn(function* (queue) {
100
229
  const writable = new QueueWriteStream(queue);
@@ -1 +1 @@
1
- {"version":3,"file":"AgentExecutor.js","sourceRoot":"","sources":["../src/AgentExecutor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AgentExecutor.js","sourceRoot":"","sources":["../src/AgentExecutor.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.1.1",
4
+ "version": "0.1.2",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -13,11 +13,14 @@ import {
13
13
  Path,
14
14
  pipe,
15
15
  Queue,
16
+ Result,
17
+ Schema,
16
18
  Scope,
17
19
  ServiceMap,
18
20
  Stream,
19
21
  } from "effect"
20
22
  import { Tool, Toolkit } from "effect/unstable/ai"
23
+ import { Rpc, RpcClient, RpcGroup, RpcServer } from "effect/unstable/rpc"
21
24
  import * as NodeConsole from "node:console"
22
25
  import * as NodeVm from "node:vm"
23
26
  import { Writable } from "node:stream"
@@ -178,6 +181,50 @@ ${opts.script}
178
181
  })
179
182
  })
180
183
 
184
+ /**
185
+ * @since 1.0.0
186
+ * @category Constructors
187
+ */
188
+ export const makeRpc = Effect.gen(function* () {
189
+ const client = yield* RpcClient.make(Rpcs, {
190
+ spanPrefix: "AgentExecutorClient",
191
+ })
192
+
193
+ return AgentExecutor.of({
194
+ toolsDts: Effect.orDie(client.toolsDts()),
195
+ agentsMd: Effect.orDie(client.agentsMd()),
196
+ execute: (opts) =>
197
+ Scope.Scope.useSync((scope) =>
198
+ client.execute({ script: opts.script }).pipe(
199
+ Stream.tap((part) => {
200
+ switch (part._tag) {
201
+ case "Text": {
202
+ return Effect.void
203
+ }
204
+ case "TaskComplete": {
205
+ return opts.onTaskComplete(part.summary)
206
+ }
207
+ case "Subagent": {
208
+ const id = part.id
209
+ return pipe(
210
+ opts.onSubagent(part.prompt),
211
+ Effect.flatMap((output) =>
212
+ client.subagentOutput({ id, output }),
213
+ ),
214
+ Effect.forkIn(scope),
215
+ )
216
+ }
217
+ }
218
+ }),
219
+ Stream.orDie,
220
+ Stream.filterMap((part) =>
221
+ part._tag === "Text" ? Result.succeed(part.text) : Result.failVoid,
222
+ ),
223
+ ),
224
+ ).pipe(Stream.unwrap),
225
+ })
226
+ })
227
+
181
228
  /**
182
229
  * @since 1.0.0
183
230
  * @category Layers
@@ -203,6 +250,154 @@ export const layerLocal = <Toolkit extends Toolkit.Any = never>(options: {
203
250
  Layer.provide([AgentToolHandlers, ToolkitRenderer.layer]),
204
251
  )
205
252
 
253
+ /**
254
+ * Create an AgentExecutor that communicates with a remote RpcServer serving the
255
+ * AgentExecutor protocol.
256
+ *
257
+ * @since 1.0.0
258
+ * @category Layers
259
+ */
260
+ export const layerRpc: Layer.Layer<AgentExecutor, never, RpcClient.Protocol> =
261
+ Layer.effect(AgentExecutor, makeRpc)
262
+
263
+ /**
264
+ * Create a RpcServer that serves the AgentExecutor rpc protocol.
265
+ *
266
+ * This can be used to run the AgentExecutor in a remote location.
267
+ *
268
+ * @since 1.0.0
269
+ * @category Layers
270
+ */
271
+ export const layerRpcServer = <Toolkit extends Toolkit.Any = never>(options: {
272
+ readonly directory: string
273
+ readonly tools?: Toolkit | undefined
274
+ }): Layer.Layer<
275
+ never,
276
+ never,
277
+ | RpcServer.Protocol
278
+ | FileSystem.FileSystem
279
+ | HttpClient
280
+ | Path.Path
281
+ | ChildProcessSpawner
282
+ | Exclude<
283
+ Toolkit extends Toolkit.Toolkit<infer T>
284
+ ? Tool.HandlersFor<T> | Tool.HandlerServices<T[keyof T]>
285
+ : never,
286
+ CurrentDirectory | SubagentExecutor | TaskCompleter
287
+ >
288
+ > =>
289
+ RpcServer.layer(Rpcs, {
290
+ spanPrefix: "AgentExecutorServer",
291
+ disableFatalDefects: true,
292
+ }).pipe(
293
+ Layer.provide(
294
+ Rpcs.toLayer(
295
+ Effect.gen(function* () {
296
+ const local = yield* makeLocal(options)
297
+ const subagentResumes = new Map<
298
+ number,
299
+ (effect: Effect.Effect<string>) => void
300
+ >()
301
+
302
+ return Rpcs.of({
303
+ agentsMd: () => local.agentsMd,
304
+ toolsDts: () => local.toolsDts,
305
+ subagentOutput: ({ id, output }) => {
306
+ const resume = subagentResumes.get(id)
307
+ if (resume) {
308
+ resume(Effect.succeed(output))
309
+ subagentResumes.delete(id)
310
+ }
311
+ return Effect.void
312
+ },
313
+ execute: Effect.fnUntraced(function* ({ script }) {
314
+ const queue = yield* Queue.unbounded<
315
+ typeof ExecuteOutput.Type,
316
+ Cause.Done
317
+ >()
318
+ let subagentId = 0
319
+
320
+ yield* pipe(
321
+ local.execute({
322
+ script,
323
+ onTaskComplete(summary) {
324
+ return Queue.offer(queue, {
325
+ _tag: "TaskComplete",
326
+ summary,
327
+ })
328
+ },
329
+ onSubagent(prompt) {
330
+ const id = subagentId++
331
+ return Effect.callback((resume) => {
332
+ subagentResumes.set(id, resume)
333
+ Queue.offerUnsafe(queue, {
334
+ _tag: "Subagent",
335
+ id,
336
+ prompt,
337
+ })
338
+ return Effect.sync(() => {
339
+ subagentResumes.delete(id)
340
+ })
341
+ })
342
+ },
343
+ }),
344
+ Stream.runForEachArray((parts) => {
345
+ for (const part of parts) {
346
+ Queue.offerUnsafe(queue, {
347
+ _tag: "Text",
348
+ text: part,
349
+ })
350
+ }
351
+ return Effect.void
352
+ }),
353
+ Effect.forkScoped,
354
+ )
355
+
356
+ return queue
357
+ }),
358
+ })
359
+ }),
360
+ ),
361
+ ),
362
+ Layer.provide([AgentToolHandlers, ToolkitRenderer.layer]),
363
+ )
364
+
365
+ /**
366
+ * @since 1.0.0
367
+ * @category Rpcs
368
+ */
369
+ export const ExecuteOutput = Schema.TaggedUnion({
370
+ Text: { text: Schema.String },
371
+ TaskComplete: { summary: Schema.String },
372
+ Subagent: { id: Schema.Finite, prompt: Schema.String },
373
+ })
374
+
375
+ /**
376
+ * @since 1.0.0
377
+ * @category Rpcs
378
+ */
379
+ export class Rpcs extends RpcGroup.make(
380
+ Rpc.make("toolsDts", {
381
+ success: Schema.String,
382
+ }),
383
+ Rpc.make("agentsMd", {
384
+ success: Schema.Option(Schema.String),
385
+ }),
386
+ Rpc.make("subagentOutput", {
387
+ payload: {
388
+ id: Schema.Finite,
389
+ output: Schema.String,
390
+ },
391
+ }),
392
+ Rpc.make("execute", {
393
+ payload: Schema.Struct({
394
+ script: Schema.String,
395
+ }),
396
+ success: ExecuteOutput,
397
+ stream: true,
398
+ }),
399
+ ) {}
400
+
206
401
  // ------------------------------------------
207
402
  // Internal
208
403
  // -------------------------------------------