clanka 0.0.1 → 0.0.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.
package/dist/Agent.d.ts CHANGED
@@ -6,7 +6,7 @@ import { LanguageModel, Prompt, Tool, Toolkit } from "effect/unstable/ai";
6
6
  import { AgentTools } from "./AgentTools.ts";
7
7
  import { Executor } from "./Executor.ts";
8
8
  import { ToolkitRenderer } from "./ToolkitRenderer.ts";
9
- import { ProviderName } from "effect/unstable/ai/Model";
9
+ import { ModelName, ProviderName } from "effect/unstable/ai/Model";
10
10
  import type { ChildProcessSpawner } from "effect/unstable/process";
11
11
  /**
12
12
  * @since 1.0.0
@@ -28,7 +28,7 @@ export declare const layerServices: Layer.Layer<Tool.HandlersFor<typeof AgentToo
28
28
  * @since 1.0.0
29
29
  * @category Constructors
30
30
  */
31
- export declare const make: <Tools extends Record<string, Tool.Any> = {}>(options: {
31
+ export declare const make: <Tools extends Record<string, Tool.Any> = {}, SE = never, SR = never>(options: {
32
32
  /** The working directory to run the agent in */
33
33
  readonly directory: string;
34
34
  /** The prompt to use for the agent */
@@ -37,7 +37,9 @@ export declare const make: <Tools extends Record<string, Tool.Any> = {}>(options
37
37
  readonly system?: string | undefined;
38
38
  /** Additional tools to provide to the agent */
39
39
  readonly tools?: Toolkit.Toolkit<Tools> | undefined;
40
- }) => Effect.Effect<Agent, never, Scope.Scope | FileSystem.FileSystem | Path.Path | Executor | LanguageModel.LanguageModel | ProviderName | ToolkitRenderer | Tool.HandlersFor<Tools> | Tool.HandlersFor<typeof AgentTools.tools> | Tool.HandlerServices<Tools[keyof Tools]>>;
40
+ /** Layer to use for subagents */
41
+ readonly subagentModel?: Layer.Layer<LanguageModel.LanguageModel | ProviderName, SE, SR> | undefined;
42
+ }) => Effect.Effect<Agent, never, Scope.Scope | FileSystem.FileSystem | Path.Path | Executor | LanguageModel.LanguageModel | ProviderName | ModelName | ToolkitRenderer | Tool.HandlersFor<Tools> | Tool.HandlersFor<typeof AgentTools.tools> | Tool.HandlerServices<Tools[keyof Tools]> | SR>;
41
43
  declare const ReasoningStart_base: Schema.ExtendableClass<ReasoningStart, Schema.TaggedStruct<"ReasoningStart", {}>, {}>;
42
44
  /**
43
45
  * @since 1.0.0
@@ -107,8 +109,12 @@ declare const SubagentPart_base: new <A extends Record<string, any> = {}>(args:
107
109
  */
108
110
  export declare class SubagentPart extends SubagentPart_base<{
109
111
  id: number;
112
+ prompt: string;
113
+ model: string;
114
+ provider: string;
110
115
  output: Stream.Stream<Output, AgentFinished>;
111
116
  }> {
117
+ get modelAndProvider(): string;
112
118
  }
113
119
  /**
114
120
  * @since 1.0.0
@@ -1 +1 @@
1
- {"version":3,"file":"Agent.d.ts","sourceRoot":"","sources":["../src/Agent.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAIL,MAAM,EACN,UAAU,EAEV,KAAK,EAEL,IAAI,EAGJ,MAAM,EACN,KAAK,EAEL,MAAM,EACP,MAAM,QAAQ,CAAA;AACf,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACzE,OAAO,EAEL,UAAU,EAIX,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAGvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAElE;;;GAGG;AACH,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;CACtD;AAED;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,KAAK,CACrC,IAAI,CAAC,WAAW,CAAC,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,QAAQ,GAAG,eAAe,EACtE,KAAK,EACL,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC,mBAAmB,CACD,CAAA;AAE5E;;;;;GAKG;AACH,eAAO,MAAM,IAAI,EAAE,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE;IACxE,gDAAgD;IAChD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,sCAAsC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAA;IAChC,6DAA6D;IAC7D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,+CAA+C;IAC/C,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,SAAS,CAAA;CACpD,KAAK,MAAM,CAAC,MAAM,CACjB,KAAK,EACL,KAAK,EACH,KAAK,CAAC,KAAK,GACX,UAAU,CAAC,UAAU,GACrB,IAAI,CAAC,IAAI,GACT,QAAQ,GACR,aAAa,CAAC,aAAa,GAC3B,YAAY,GACZ,eAAe,GACf,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GACvB,IAAI,CAAC,WAAW,CAAC,OAAO,UAAU,CAAC,KAAK,CAAC,GACzC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAuKnC,CAAA;;AA0DT;;;GAGG;AACH,qBAAa,cAAe,SAAQ,mBAGnC;CAAG;;;;AAEJ;;;GAGG;AACH,qBAAa,cAAe,SAAQ,mBAKnC;CAAG;;AAEJ;;;GAGG;AACH,qBAAa,YAAa,SAAQ,iBAGjC;CAAG;;;;AAEJ;;;GAGG;AACH,qBAAa,WAAY,SAAQ,gBAKhC;CAAG;;;;AAEJ;;;GAGG;AACH,qBAAa,SAAU,SAAQ,cAE7B;CAAG;;;;AAEL;;;GAGG;AACH,qBAAa,aAAc,SAAQ,kBAKlC;CAAG;AAEJ;;;GAGG;AACH,eAAO,MAAM,UAAU,kIAMrB,CAAA;AAEF;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;;;;AAE/C;;;GAGG;AACH,qBAAa,YAAa,SAAQ,kBAAiC;IACjE,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;CAC7C,CAAC;CAAG;AAEL;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,UAAU,GAAG,YAAY,CAAA"}
1
+ {"version":3,"file":"Agent.d.ts","sourceRoot":"","sources":["../src/Agent.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAIL,MAAM,EACN,UAAU,EAEV,KAAK,EAEL,IAAI,EAGJ,MAAM,EACN,KAAK,EAEL,MAAM,EACP,MAAM,QAAQ,CAAA;AACf,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACzE,OAAO,EAEL,UAAU,EAIX,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAGlE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAElE;;;GAGG;AACH,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;CACtD;AAED;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,KAAK,CACrC,IAAI,CAAC,WAAW,CAAC,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,QAAQ,GAAG,eAAe,EACtE,KAAK,EACL,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC,mBAAmB,CACD,CAAA;AAE5E;;;;;GAKG;AACH,eAAO,MAAM,IAAI,EAAE,CACjB,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAC3C,EAAE,GAAG,KAAK,EACV,EAAE,GAAG,KAAK,EACV,OAAO,EAAE;IACT,gDAAgD;IAChD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,sCAAsC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAA;IAChC,6DAA6D;IAC7D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,+CAA+C;IAC/C,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,SAAS,CAAA;IACnD,iCAAiC;IACjC,QAAQ,CAAC,aAAa,CAAC,EACnB,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,GAAG,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,GAC/D,SAAS,CAAA;CACd,KAAK,MAAM,CAAC,MAAM,CACjB,KAAK,EACL,KAAK,EACH,KAAK,CAAC,KAAK,GACX,UAAU,CAAC,UAAU,GACrB,IAAI,CAAC,IAAI,GACT,QAAQ,GACR,aAAa,CAAC,aAAa,GAC3B,YAAY,GACZ,SAAS,GACT,eAAe,GACf,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GACvB,IAAI,CAAC,WAAW,CAAC,OAAO,UAAU,CAAC,KAAK,CAAC,GACzC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,GACxC,EAAE,CAkMG,CAAA;;AA4DT;;;GAGG;AACH,qBAAa,cAAe,SAAQ,mBAGnC;CAAG;;;;AAEJ;;;GAGG;AACH,qBAAa,cAAe,SAAQ,mBAKnC;CAAG;;AAEJ;;;GAGG;AACH,qBAAa,YAAa,SAAQ,iBAGjC;CAAG;;;;AAEJ;;;GAGG;AACH,qBAAa,WAAY,SAAQ,gBAKhC;CAAG;;;;AAEJ;;;GAGG;AACH,qBAAa,SAAU,SAAQ,cAE7B;CAAG;;;;AAEL;;;GAGG;AACH,qBAAa,aAAc,SAAQ,kBAKlC;CAAG;AAEJ;;;GAGG;AACH,eAAO,MAAM,UAAU,kIAMrB,CAAA;AAEF;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;;;;AAE/C;;;GAGG;AACH,qBAAa,YAAa,SAAQ,kBAAiC;IACjE,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;CAC7C,CAAC;IACA,IAAI,gBAAgB,WAEnB;CACF;AAED;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,UAAU,GAAG,YAAY,CAAA"}
package/dist/Agent.js CHANGED
@@ -6,7 +6,7 @@ import { LanguageModel, Prompt, Tool, Toolkit } from "effect/unstable/ai";
6
6
  import { AgentToolHandlers, AgentTools, CurrentDirectory, SubagentContext, TaskCompleteDeferred, } from "./AgentTools.js";
7
7
  import { Executor } from "./Executor.js";
8
8
  import { ToolkitRenderer } from "./ToolkitRenderer.js";
9
- import { ProviderName } from "effect/unstable/ai/Model";
9
+ import { ModelName, ProviderName } from "effect/unstable/ai/Model";
10
10
  import { OpenAiLanguageModel } from "@effect/ai-openai";
11
11
  import {} from "effect/unstable/ai/Response";
12
12
  /**
@@ -23,8 +23,6 @@ export const layerServices = Layer.mergeAll(AgentToolHandlers, Executor.layer, T
23
23
  * @category Constructors
24
24
  */
25
25
  export const make = Effect.fnUntraced(function* (options) {
26
- const ai = yield* LanguageModel.LanguageModel;
27
- const provider = yield* ProviderName;
28
26
  const fs = yield* FileSystem.FileSystem;
29
27
  const pathService = yield* Path.Path;
30
28
  const executor = yield* Executor;
@@ -36,11 +34,14 @@ export const make = Effect.fnUntraced(function* (options) {
36
34
  system += `\n${options.system}`;
37
35
  }
38
36
  const withSystemPrompt = OpenAiLanguageModel.withConfigOverride({
37
+ store: false,
39
38
  instructions: system,
40
39
  });
41
40
  const agentsMd = yield* pipe(fs.readFileString(pathService.resolve(options.directory, "AGENTS.md")), Effect.option);
42
41
  let subagentId = 0;
43
42
  const spawn = Effect.fnUntraced(function* (prompt) {
43
+ const ai = yield* LanguageModel.LanguageModel;
44
+ const provider = yield* ProviderName;
44
45
  const deferred = yield* Deferred.make();
45
46
  const output = yield* Queue.make();
46
47
  const taskServices = SubagentContext.serviceMap({
@@ -48,10 +49,20 @@ export const make = Effect.fnUntraced(function* (options) {
48
49
  let id = ++subagentId;
49
50
  return spawn(Prompt.make(prompt)).pipe(Stream.broadcast({
50
51
  capacity: "unbounded",
51
- }), Effect.flatMap((stream) => {
52
- Queue.offerUnsafe(output, new SubagentPart({ id, output: stream }));
53
- return Stream.runDrain(stream);
54
- }), Effect.scoped, Effect.as(""), Effect.catch((e) => Effect.succeed(e.summary)));
52
+ }), Effect.flatMap(Effect.fnUntraced(function* (stream) {
53
+ const provider = yield* ProviderName;
54
+ const model = yield* ModelName;
55
+ Queue.offerUnsafe(output, new SubagentPart({
56
+ id,
57
+ prompt,
58
+ provider,
59
+ model,
60
+ output: stream,
61
+ }));
62
+ return yield* Stream.runDrain(stream);
63
+ })), Effect.scoped, Effect.as(""), Effect.catch((e) => Effect.succeed(e.summary)), options.subagentModel
64
+ ? Effect.provide(Layer.orDie(options.subagentModel))
65
+ : Effect.provideServices(services));
55
66
  },
56
67
  }).pipe(ServiceMap.add(CurrentDirectory, options.directory), ServiceMap.add(TaskCompleteDeferred, deferred));
57
68
  prompt = Prompt.concat(prompt, agentsMd.pipe(Option.map((md) => Prompt.make(`Here is a copy of ./AGENTS.md. ALWAYS follow these instructions when completing the above task:
@@ -78,7 +89,7 @@ ${md}`)), Option.getOrElse(() => Prompt.empty)));
78
89
  return;
79
90
  }
80
91
  let response = Array.empty();
81
- yield* pipe(ai.streamText({ prompt }), Stream.takeUntil((part) => part.type === "text-end"), Stream.runForEachArray((parts) => {
92
+ yield* pipe(ai.streamText({ prompt }), Stream.takeUntil((part) => part.type === "text-end" && currentScript.trim().length > 0), Stream.runForEachArray((parts) => {
82
93
  response.push(...parts);
83
94
  for (const part of parts) {
84
95
  switch (part.type) {
@@ -89,12 +100,13 @@ ${md}`)), Option.getOrElse(() => Prompt.empty)));
89
100
  currentScript += part.delta;
90
101
  break;
91
102
  case "reasoning-start":
103
+ Queue.offerUnsafe(output, new ReasoningStart());
92
104
  break;
93
105
  case "reasoning-delta":
94
- // process.stdout.write(part.delta)
106
+ Queue.offerUnsafe(output, new ReasoningDelta({ delta: part.delta }));
95
107
  break;
96
108
  case "reasoning-end":
97
- // console.log("\n")
109
+ Queue.offerUnsafe(output, new ReasoningEnd());
98
110
  break;
99
111
  case "finish":
100
112
  // console.log("Tokens used:", part.usage, "\n")
@@ -174,6 +186,8 @@ Javascript output:
174
186
  - Use the current state of the codebase to inform your decisions. Don't look at git history unless explicity asked to.
175
187
  - Only add comments when necessary.
176
188
  - Repect the users AGENTS.md file and ALWAYS follow the instructions in it.
189
+ - Use the "subagent" tool to delegate research / exploration tasks
190
+ - When you have fully completed the task, call the "taskComplete" function
177
191
  `;
178
192
  });
179
193
  /**
@@ -236,5 +250,8 @@ export const OutputPart = Schema.Union([
236
250
  * @category Output
237
251
  */
238
252
  export class SubagentPart extends Data.TaggedError("SubagentPart") {
253
+ get modelAndProvider() {
254
+ return `${this.provider}/${this.model}`;
255
+ }
239
256
  }
240
257
  //# sourceMappingURL=Agent.js.map
package/dist/Agent.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Agent.js","sourceRoot":"","sources":["../src/Agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Agent.js","sourceRoot":"","sources":["../src/Agent.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,UAAU,EACV,QAAQ,EACR,KAAK,EACL,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,MAAM,EACN,KAAK,EACL,UAAU,EACV,MAAM,GACP,MAAM,QAAQ,CAAA;AACf,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACzE,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,oBAAoB,GACrB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAmB,MAAM,6BAA6B,CAAA;AAW7D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAItB,KAAK,CAAC,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,CAAA;AAE5E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,IAAI,GAgCb,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,OAQhC;IACC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAA;IACvC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;IACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAA;IAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,CAAA;IAC1E,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAA;IAC7B,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,EAKpC,CAAA;IAEH,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;IAC5C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,OAAO,CAAC,MAAM,EAAE,CAAA;IACjC,CAAC;IACD,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,kBAAkB,CAAC;QAC9D,KAAK,EAAE,KAAK;QACZ,YAAY,EAAE,MAAM;KACrB,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,IAAI,CAC1B,EAAE,CAAC,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,EACtE,MAAM,CAAC,MAAM,CACd,CAAA;IAED,IAAI,UAAU,GAAG,CAAC,CAAA;IAElB,MAAM,KAAK,GAMP,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM;QACrC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,aAAa,CAAC,aAAa,CAAA;QAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,YAAY,CAAA;QACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAU,CAAA;QAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,EAAyB,CAAA;QAEzD,MAAM,YAAY,GAAG,eAAe,CAAC,UAAU,CAAC;YAC9C,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;gBACpB,IAAI,EAAE,GAAG,EAAE,UAAU,CAAA;gBACrB,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CACpC,MAAM,CAAC,SAAS,CAAC;oBACf,QAAQ,EAAE,WAAW;iBACtB,CAAC,EACF,MAAM,CAAC,OAAO,CACZ,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM;oBACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,YAAY,CAAA;oBACpC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,SAAS,CAAA;oBAC9B,KAAK,CAAC,WAAW,CACf,MAAM,EACN,IAAI,YAAY,CAAC;wBACf,EAAE;wBACF,MAAM;wBACN,QAAQ;wBACR,KAAK;wBACL,MAAM,EAAE,MAAM;qBACf,CAAC,CACH,CAAA;oBACD,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;gBACvC,CAAC,CAAC,CACH,EACD,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EACb,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAC9C,OAAO,CAAC,aAAa;oBACnB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;oBACpD,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CACrC,CAAA;YACH,CAAC;SACF,CAAC,CAAC,IAAI,CACL,UAAU,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,SAAS,CAAC,EACnD,UAAU,CAAC,GAAG,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAC/C,CAAA;QAED,MAAM,GAAG,MAAM,CAAC,MAAM,CACpB,MAAM,EACN,QAAQ,CAAC,IAAI,CACX,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAChB,MAAM,CAAC,IAAI,CAAC;;EAEpB,EAAE,EAAE,CAAC,CACE,EACD,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CACrC,CACF,CAAA;QAED,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC3C,CAAC;QAED,IAAI,aAAa,GAAG,EAAE,CAAA;QACtB,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACzB,OAAO,IAAI,EAAE,CAAC;gBACZ,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7B,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,WAAW,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC,CAAA;oBACrE,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,IAAI,CACxB,QAAQ,CAAC,OAAO,CAAC;wBACf,KAAK;wBACL,MAAM,EAAE,aAAa;qBACtB,CAAC,EACF,MAAM,CAAC,QAAQ,CAChB,CAAA;oBACD,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;oBAC5D,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,yBAAyB,MAAM,EAAE,CAAC,CAAA;oBACjE,aAAa,GAAG,EAAE,CAAA;gBACpB,CAAC;gBAED,IAAI,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACpC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CACf,MAAM,EACN,IAAI,aAAa,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAChE,CAAA;oBACD,OAAM;gBACR,CAAC;gBAED,IAAI,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAkB,CAAA;gBAC5C,KAAK,CAAC,CAAC,IAAI,CACT,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,EACzB,MAAM,CAAC,SAAS,CACd,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAC9D,EACD,MAAM,CAAC,eAAe,CAAC,CAAC,KAAK,EAAE,EAAE;oBAC/B,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAA;oBACvB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;wBACzB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;4BAClB,KAAK,YAAY;gCACf,aAAa,GAAG,EAAE,CAAA;gCAClB,MAAK;4BACP,KAAK,YAAY;gCACf,aAAa,IAAI,IAAI,CAAC,KAAK,CAAA;gCAC3B,MAAK;4BACP,KAAK,iBAAiB;gCACpB,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,cAAc,EAAE,CAAC,CAAA;gCAC/C,MAAK;4BACP,KAAK,iBAAiB;gCACpB,KAAK,CAAC,WAAW,CACf,MAAM,EACN,IAAI,cAAc,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAC1C,CAAA;gCACD,MAAK;4BACP,KAAK,eAAe;gCAClB,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC,CAAA;gCAC7C,MAAK;4BACP,KAAK,QAAQ;gCACX,gDAAgD;gCAChD,MAAK;wBACT,CAAC;oBACH,CAAC;oBACD,OAAO,MAAM,CAAC,IAAI,CAAA;gBACpB,CAAC,CAAC,EACF,MAAM,CAAC,KAAK,CAAC;oBACX,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;wBACb,QAAQ,GAAG,EAAE,CAAA;wBACb,OAAO,GAAG,CAAC,WAAW,CAAA;oBACxB,CAAC;iBACF,CAAC,EACF,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CACpD,CAAA;gBACD,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAA;gBAClE,aAAa,GAAG,aAAa,CAAC,IAAI,EAAE,CAAA;YACtC,CAAC;QACH,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,EACpC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,EAChC,MAAM,CAAC,UAAU,CAClB,CAAA;QAED,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IACjC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;IAEjB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC3D,MAAM,CAAC,SAAS,CAAC;QACf,QAAQ,EAAE,WAAW;KACtB,CAAC,CACH,CAAA;IAED,OAAO,QAAQ,CAAQ;QACrB,MAAM;KACP,CAAC,CAAA;IACF,sDAAsD;AACxD,CAAC,CAAQ,CAAA;AAET,sDAAsD;AACtD,MAAM,cAAc,GAAG,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,KAA2B;IACrE,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,eAAe,CAAA;IAEvC,OAAO;;;;;;;;;;;;;;;;EAgBP,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCvB,CAAA;AACD,CAAC,CAAC,CAAA;AAEF;;;GAGG;AACH,MAAM,OAAO,cAAe,SAAQ,MAAM,CAAC,WAAW,EAAkB,CACtE,gBAAgB,EAChB,EAAE,CACH;CAAG;AAEJ;;;GAGG;AACH,MAAM,OAAO,cAAe,SAAQ,MAAM,CAAC,WAAW,EAAkB,CACtE,gBAAgB,EAChB;IACE,KAAK,EAAE,MAAM,CAAC,MAAM;CACrB,CACF;CAAG;AAEJ;;;GAGG;AACH,MAAM,OAAO,YAAa,SAAQ,MAAM,CAAC,WAAW,EAAgB,CAClE,cAAc,EACd,EAAE,CACH;CAAG;AAEJ;;;GAGG;AACH,MAAM,OAAO,WAAY,SAAQ,MAAM,CAAC,WAAW,EAAe,CAChE,aAAa,EACb;IACE,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CACF;CAAG;AAEJ;;;GAGG;AACH,MAAM,OAAO,SAAU,SAAQ,MAAM,CAAC,WAAW,EAAa,CAAC,WAAW,EAAE;IAC1E,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC;CAAG;AAEL;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,MAAM,CAAC,gBAAgB,EAAiB,CACzE,eAAe,EACf;IACE,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CACF;CAAG;AAEJ;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC;IACrC,cAAc;IACd,cAAc;IACd,YAAY;IACZ,WAAW;IACX,SAAS;CACV,CAAC,CAAA;AAQF;;;GAGG;AACH,MAAM,OAAO,YAAa,SAAQ,IAAI,CAAC,WAAW,CAAC,cAAc,CAM/D;IACA,IAAI,gBAAgB;QAClB,OAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAA;IACzC,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"AgentTools.d.ts","sourceRoot":"","sources":["../src/AgentTools.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAGL,QAAQ,EACR,MAAM,EACN,UAAU,EACV,IAAI,EAEJ,MAAM,EACN,UAAU,EAEX,MAAM,QAAQ,CAAA;AACf,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAgB,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;;AAK3E;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,qBAGG;CAAG;;AAE5C;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,yBAGG;CAAG;;mBAS7B;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;;AAPtE;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,oBAKG;CAAG;AAE3C;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,qFAMzC,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0HtB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uFAoT7B,CAAA"}
1
+ {"version":3,"file":"AgentTools.d.ts","sourceRoot":"","sources":["../src/AgentTools.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAGL,QAAQ,EACR,MAAM,EACN,UAAU,EACV,IAAI,EAEJ,MAAM,EACN,UAAU,EAEX,MAAM,QAAQ,CAAA;AACf,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAgB,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;;AAK3E;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,qBAGG;CAAG;;AAE5C;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,yBAGG;CAAG;;mBAS7B;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;;AAPtE;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,oBAKG;CAAG;AAE3C;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,qFAMzC,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0HtB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uFAkT7B,CAAA"}
@@ -359,7 +359,7 @@ export const AgentToolHandlers = AgentTools.toLayer(Effect.gen(function* () {
359
359
  return `Success. Updated the following files:\n${out.join("\n")}`;
360
360
  }, Effect.orDie),
361
361
  subagent: Effect.fn("AgentTools.subagent")(function* (prompt) {
362
- yield* Effect.logInfo(`Calling "subagent"`).pipe(Effect.annotateLogs({ prompt }));
362
+ yield* Effect.logInfo(`Calling "subagent"`);
363
363
  const context = yield* SubagentContext;
364
364
  return yield* context.spawn({ prompt });
365
365
  }, Effect.orDie),
@@ -1 +1 @@
1
- {"version":3,"file":"AgentTools.js","sourceRoot":"","sources":["../src/AgentTools.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,UAAU,EACV,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,UAAU,EACV,MAAM,GACP,MAAM,QAAQ,CAAA;AACf,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAEzD;;;GAGG;AACH,MAAM,OAAO,gBAAiB,SAAQ,UAAU,CAAC,OAAO,EAGrD,CAAC,oCAAoC,CAAC;CAAG;AAE5C;;;GAGG;AACH,MAAM,OAAO,oBAAqB,SAAQ,UAAU,CAAC,OAAO,EAGzD,CAAC,wCAAwC,CAAC;CAAG;AAEhD;;;GAGG;AACH,MAAM,OAAO,eAAgB,SAAQ,UAAU,CAAC,OAAO,EAKpD,CAAC,mCAAmC,CAAC;CAAG;AAE3C;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAY,EAAE,EAAE,CAC9C,eAAe,CAAC,UAAU,CAAC;IACzB,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC;CAC3C,CAAC,CAAC,IAAI,CACL,UAAU,CAAC,GAAG,CAAC,gBAAgB,EAAE,GAAG,IAAI,GAAG,CAAC,EAC5C,UAAU,CAAC,GAAG,CAAC,oBAAoB,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAC5D,CAAA;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CACpC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;IACpB,WAAW,EACT,gGAAgG;IAClG,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC;QACxB,IAAI,EAAE,MAAM,CAAC,MAAM;QACnB,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QACzC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;KACxC,CAAC;IACF,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACrC,YAAY,EAAE,CAAC,gBAAgB,CAAC;CACjC,CAAC,EACF,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;IACtB,WAAW,EACT,iEAAiE;IACnE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC;QACxB,IAAI,EAAE,MAAM,CAAC,MAAM;QACnB,OAAO,EAAE,MAAM,CAAC,MAAM;KACvB,CAAC;IACF,YAAY,EAAE,CAAC,gBAAgB,CAAC;CACjC,CAAC,EACF,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;IACtB,WAAW,EAAE,wDAAwD;IACrE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QACjC,UAAU,EAAE,OAAO;KACpB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,YAAY,EAAE,CAAC,gBAAgB,CAAC;CACjC,CAAC,EACF,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;IACtB,WAAW,EAAE,gBAAgB;IAC7B,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QACjC,UAAU,EAAE,MAAM;KACnB,CAAC;IACF,YAAY,EAAE,CAAC,gBAAgB,CAAC;CACjC,CAAC,EACF,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;IACtB,WAAW,EACT,+DAA+D;IACjE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC;QACxB,IAAI,EAAE,MAAM,CAAC,MAAM;QACnB,EAAE,EAAE,MAAM,CAAC,MAAM;KAClB,CAAC;IACF,YAAY,EAAE,CAAC,gBAAgB,CAAC;CACjC,CAAC,EACF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;IACjB,WAAW,EAAE,0DAA0D;IACvE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QACjC,UAAU,EAAE,MAAM;KACnB,CAAC;IACF,YAAY,EAAE,CAAC,gBAAgB,CAAC;CACjC,CAAC,EACF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;IACd,WAAW,EAAE,kCAAkC;IAC/C,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QACjC,UAAU,EAAE,WAAW;KACxB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IACpC,YAAY,EAAE,CAAC,gBAAgB,CAAC;CACjC,CAAC,EACF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;IACd,WAAW,EAAE,8CAA8C;IAC3D,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC;QACxB,OAAO,EAAE,MAAM,CAAC,MAAM;QACtB,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;YAC5C,aAAa,EAAE,QAAQ;SACxB,CAAC;QACF,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;YAChD,aAAa,EACX,6EAA6E;SAChF,CAAC;KACH,CAAC;IACF,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,YAAY,EAAE,CAAC,gBAAgB,CAAC;CACjC,CAAC,EACF,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,qCAAqC;IAClD,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QACjC,UAAU,EAAE,SAAS;KACtB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IACpC,YAAY,EAAE,CAAC,gBAAgB,CAAC;CACjC,CAAC,EACF,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,0CAA0C;IACvD,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QACjC,UAAU,EAAE,SAAS;KACtB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,YAAY,EAAE,CAAC,gBAAgB,CAAC;CACjC,CAAC,EACF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;IACd,WAAW,EAAE,2DAA2D;IACxE,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;QAC/C,UAAU,EAAE,MAAM;KACnB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,YAAY,EAAE,CAAC,gBAAgB,CAAC;CACjC,CAAC,EACF,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;IACpB,WAAW,EACT,oIAAoI;IACtI,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QACjC,UAAU,EAAE,QAAQ;KACrB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,YAAY,EAAE,CAAC,eAAe,CAAC;CAChC,CAAC,EACF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;IACjB,WAAW,EAAE,8CAA8C;IAC3D,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QACjC,UAAU,EAAE,IAAI;KACjB,CAAC;CACH,CAAC,EACF,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;IACxB,WAAW,EACT,qHAAqH;IACvH,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QACjC,UAAU,EAAE,SAAS;KACtB,CAAC;IACF,YAAY,EAAE,CAAC,oBAAoB,CAAC;CACrC,CAAC,CACH,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,CACjD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC,mBAAmB,CAAA;IAC9D,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAA;IACvC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;IAEpC,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,OAA6B;QAChE,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC5C,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAC3B,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,OAAO,CACZ,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM;YACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAA;YACvC,IAAI,QAAQ,KAAK,CAAC;gBAAE,OAAO,MAAM,CAAA;YACjC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CACtB,IAAI,KAAK,CAAC,iCAAiC,QAAQ,KAAK,MAAM,EAAE,CAAC,CAClE,CAAA;QACH,CAAC,CAAC,CACH,CACF,CAAA;IACH,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;IAEjB,OAAO,UAAU,CAAC,EAAE,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO;YAC3D,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAC9C,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAC7B,CAAA;YACD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAA;YACnC,IAAI,MAAM,GAAG,IAAI,CACf,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,EACjD,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,UAAU,CAClB,CAAA;YACD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACtB,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,CAAA;YACrD,CAAC;YACD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,GAAG,MAAM,CAAC,IAAI,CAClB,MAAM,EACN,OAAO,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,CAC/C,CAAA;YACH,CAAC;YACD,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAC1C,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAC5B,MAAM,CAAC,WAAW,CAAC,eAAe,EAAE,UAAU,EAAE,GAAG,EAAE,CACnD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CACrB,EACD,MAAM,CAAC,KAAK,CACb,CAAA;QACH,CAAC,CAAC;QACF,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO;YAC/D,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAChD,MAAM,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAC5C,CAAA;YACD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAA;YACnC,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;YACnD,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3B,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;YACjD,CAAC;YACD,KAAK,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACjD,SAAS,EAAE,IAAI;aAChB,CAAC,CAAA;YACF,KAAK,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;QAClD,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI;YAC5D,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAChD,MAAM,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAC9B,CAAA;YACD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAA;YACnC,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAC1E,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO;YAC/D,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAChD,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAC7B,CAAA;YACD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAA;YACnC,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;YACnD,MAAM,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;YAC/C,KAAK,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;gBAC/C,SAAS,EAAE,IAAI;aAChB,CAAC,CAAA;YACF,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QACnC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI;YAClD,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAC3C,MAAM,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAC9B,CAAA;YACD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAA;YACnC,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE;gBAC7D,SAAS,EAAE,IAAI;aAChB,CAAC,CAAA;QACJ,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC;QAChB,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI;YAC5C,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,IAAI,CACxC,MAAM,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAC9B,CAAA;YACD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAA;YACnC,OAAO,KAAK,CAAC,CAAC,EAAE;iBACb,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;iBAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACvB,CAAC,CAAC;QACF,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO;YAC/C,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAA;YACxE,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAA;YACnC,MAAM,IAAI,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,eAAe,CAAC,CAAA;YACtD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;YACnC,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;YAC1B,IAAI,MAAM,GAAG,IAAI,CACf,OAAO,CAAC,WAAW,CACjB,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE;gBACjC,GAAG;gBACH,KAAK,EAAE,QAAQ;aAChB,CAAC,CACH,EACD,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBAClB,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG;oBAAE,OAAO,IAAI,CAAA;gBACnC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,gBAAgB,CAAA;YAC9C,CAAC,CAAC,CACH,CAAA;YACD,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAA;YACrD,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAC1C,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAC5B,MAAM,CAAC,KAAK,CACb,CAAA;QACH,CAAC,CAAC;QACF,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO;YACnD,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAC1C,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,CACjC,CAAA;YACD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAA;YACnC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;QACjE,CAAC,CAAC;QACF,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO;YACnD,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAC1C,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,CACjC,CAAA;YACD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAA;YACnC,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;gBACrD,GAAG;gBACH,KAAK,EAAE,QAAQ;aAChB,CAAC,CAAA;YACF,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC5B,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC;QAChB,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI;YAC5C,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,IAAI,CACxC,MAAM,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAC9B,CAAA;YACD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAA;YACnC,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE;gBACxC,GAAG;gBACH,KAAK,EAAE,QAAQ;aAChB,CAAC,CAAA;YACF,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC5B,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;YAChD,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAA;YACpD,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAChC,CAAC,CAAC;QACF,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,QAAQ,CAAC,EAAE,SAAS;YACjE,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAA;YAC7C,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAA;YACnC,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,MAA2B,EAAE,EAAE,CACzD,MAAM,CAAC,IAAI,CACT,IAAI,eAAe,CAAC;gBAClB,OAAO,EAAE,+CAA+C,MAAM,KAAK,IAAI,EAAE;aAC1E,CAAC,CACH,CAAA;YACH,MAAM,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAA;YAC9C,MAAM,KAAK,GAAG,EAgBb,CAAA;YACD,MAAM,GAAG,GAAG,EAAc,CAAA;YAC1B,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE,CAC3B,WAAW,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;YACvD,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,4BAA4B,CAAC,CAAC,QAAQ,CAAC,EAC5D,IAAY,EACZ,MAA2B;gBAE3B,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBACpB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;oBAC7B,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;wBACnB,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;oBAClC,CAAC;oBACD,OAAO,KAAM,CAAA;gBACf,CAAC;gBAED,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;gBAC5C,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;gBACtB,OAAO,KAAK,CAAA;YACd,CAAC,CAAC,CAAA;YAEF,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC1C,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;gBACjD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;oBACnB,KAAK,KAAK,CAAC,CAAC,CAAC;wBACX,MAAM,IAAI,GACR,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;4BACxD,CAAC,CAAC,KAAK,CAAC,OAAO;4BACf,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,IAAI,CAAA;wBAC1B,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;wBACrB,KAAK,CAAC,IAAI,CAAC;4BACT,IAAI,EAAE,KAAK;4BACX,IAAI;4BACJ,IAAI;yBACL,CAAC,CAAA;wBACF,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;wBAC1B,MAAK;oBACP,CAAC;oBACD,KAAK,QAAQ,CAAC,CAAC,CAAC;wBACd,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;wBAC3B,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;wBACrB,KAAK,CAAC,IAAI,CAAC;4BACT,IAAI,EAAE,QAAQ;4BACd,IAAI;yBACL,CAAC,CAAA;wBACF,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;wBAC1B,MAAK;oBACP,CAAC;oBACD,KAAK,QAAQ,CAAC,CAAC,CAAC;wBACd,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;wBACzC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;wBACnD,MAAM,QAAQ,GACZ,KAAK,CAAC,QAAQ,KAAK,SAAS;4BAC1B,CAAC,CAAC,SAAS;4BACX,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;wBAE9C,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;4BAChD,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;4BACrB,KAAK,CAAC,IAAI,CAAC;gCACT,IAAI,EAAE,QAAQ;gCACd,IAAI;gCACJ,IAAI;6BACL,CAAC,CAAA;4BACF,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;4BAC1B,MAAK;wBACP,CAAC;wBAED,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;wBACrB,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;wBACzB,KAAK,CAAC,IAAI,CAAC;4BACT,IAAI,EAAE,MAAM;4BACZ,IAAI;4BACJ,QAAQ;4BACR,IAAI;yBACL,CAAC,CAAA;wBACF,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;wBAC9B,MAAK;oBACP,CAAC;gBACH,CAAC;YACH,CAAC;YAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;oBAClB,KAAK,KAAK,CAAC;oBACX,KAAK,QAAQ,CAAC,CAAC,CAAC;wBACd,KAAK,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;4BACtD,SAAS,EAAE,IAAI;yBAChB,CAAC,CAAA;wBACF,KAAK,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;wBAC/C,MAAK;oBACP,CAAC;oBACD,KAAK,MAAM,CAAC,CAAC,CAAC;wBACZ,KAAK,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;4BAC1D,SAAS,EAAE,IAAI;yBAChB,CAAC,CAAA;wBACF,KAAK,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;wBACnD,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;wBAC3B,MAAK;oBACP,CAAC;oBACD,KAAK,QAAQ,CAAC,CAAC,CAAC;wBACd,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;wBAC3B,MAAK;oBACP,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,0CAA0C,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;QACnE,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,QAAQ,CAAC,EAAE,MAAM;YAC1D,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAC9C,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,CAChC,CAAA;YACD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,eAAe,CAAA;YACtC,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;QACzC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO;YACnE,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,oBAAoB,CAAA;YAC5C,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC5C,CAAC,CAAC;KACH,CAAC,CAAA;AACJ,CAAC,CAAC,CACH,CAAA;AAED,MAAM,eAAgB,SAAQ,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAE9D;CAAG"}
1
+ {"version":3,"file":"AgentTools.js","sourceRoot":"","sources":["../src/AgentTools.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Executor.d.ts","sourceRoot":"","sources":["../src/Executor.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAKL,KAAK,EAEL,UAAU,EACV,MAAM,EACP,MAAM,QAAQ,CAAA;AACf,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;;YAYtC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW;QACvD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KACxB,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;;AAV9E;;;GAGG;AACH,qBAAa,QAAS,SAAQ,aAQR;IACpB,MAAM,CAAC,QAAQ,CAAC,KAAK,sCA2DpB;CACF"}
1
+ {"version":3,"file":"Executor.d.ts","sourceRoot":"","sources":["../src/Executor.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAML,KAAK,EAGL,UAAU,EACV,MAAM,EACP,MAAM,QAAQ,CAAA;AACf,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;;YAYtC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW;QACvD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KACxB,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;;AAV9E;;;GAGG;AACH,qBAAa,QAAS,SAAQ,aAQR;IACpB,MAAM,CAAC,QAAQ,CAAC,KAAK,sCA+EpB;CACF"}
package/dist/Executor.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
- import { Cause, Console, Effect, FiberSet, Layer, Queue, ServiceMap, Stream, } from "effect";
4
+ import { Cause, Console, Effect, Exit, Fiber, Layer, Queue, Scope, ServiceMap, Stream, } from "effect";
5
5
  import { Tool, Toolkit } from "effect/unstable/ai";
6
6
  import * as NodeConsole from "node:console";
7
7
  import * as NodeVm from "node:vm";
@@ -16,10 +16,13 @@ export class Executor extends ServiceMap.Service()("clanka/Executor") {
16
16
  Effect.gen(function* () {
17
17
  const execute = Effect.fnUntraced(function* (options) {
18
18
  const output = yield* Queue.unbounded();
19
+ const console = yield* makeConsole(output);
20
+ const handlerScope = Scope.makeUnsafe("parallel");
21
+ const trackFiber = Fiber.runIn(handlerScope);
19
22
  yield* Effect.gen(function* () {
20
23
  const console = yield* Console.Console;
21
24
  const services = yield* Effect.services();
22
- const runPromise = yield* FiberSet.makeRuntimePromise();
25
+ let running = 0;
23
26
  const script = new NodeVm.Script(`async function main() {
24
27
  ${options.script}
25
28
  }`);
@@ -31,18 +34,35 @@ ${options.script}
31
34
  };
32
35
  for (const [name, tool] of Object.entries(options.tools.tools)) {
33
36
  const handler = services.mapUnsafe.get(tool.id);
37
+ const handlerServices = ServiceMap.merge(services, handler.services);
38
+ const runFork = Effect.runForkWith(handlerServices);
34
39
  // oxlint-disable-next-line typescript/no-explicit-any
35
40
  sandbox[name] = function (params) {
36
- return handler
37
- .handler(params, {})
38
- .pipe(Effect.provideServices(handler.services), runPromise);
41
+ running++;
42
+ const fiber = trackFiber(runFork(handler.handler(params, {})));
43
+ return new Promise((resolve, reject) => {
44
+ fiber.addObserver((exit) => {
45
+ running--;
46
+ if (exit._tag === "Success") {
47
+ resolve(exit.value);
48
+ }
49
+ else {
50
+ reject(Cause.squash(exit.cause));
51
+ }
52
+ });
53
+ });
39
54
  };
40
55
  }
41
56
  script.runInNewContext(sandbox, {
42
57
  timeout: 1000,
43
58
  });
44
59
  yield* Effect.promise(sandbox.main);
45
- }).pipe(Effect.timeout("3 minutes"), Effect.catchCause(Effect.logFatal), Effect.provideServiceEffect(Console.Console, makeConsole(output)), Effect.scoped, Effect.ensuring(Queue.end(output)), Effect.forkScoped);
60
+ while (true) {
61
+ yield* Effect.yieldNow;
62
+ if (running === 0)
63
+ break;
64
+ }
65
+ }).pipe(Effect.ensuring(Scope.close(handlerScope, Exit.void)), Effect.timeout("3 minutes"), Effect.catchCause(Effect.logFatal), Effect.provideService(Console.Console, console), Effect.ensuring(Queue.end(output)), Effect.forkScoped);
46
66
  return Stream.fromQueue(output);
47
67
  }, Stream.unwrap);
48
68
  return Executor.of({
@@ -1 +1 @@
1
- {"version":3,"file":"Executor.js","sourceRoot":"","sources":["../src/Executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Executor.js","sourceRoot":"","sources":["../src/Executor.ts"],"names":[],"mappings":"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"}
@@ -8,4 +8,9 @@ import type { Output } from "./Agent.ts";
8
8
  * @category Models
9
9
  */
10
10
  export type OutputFormatter<E = never, R = never> = Sink.Sink<void, Output, never, E, R>;
11
+ /**
12
+ * @since 1.0.0
13
+ * @category Pretty
14
+ */
15
+ export declare const pretty: OutputFormatter;
11
16
  //# sourceMappingURL=OutputFormatter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OutputFormatter.d.ts","sourceRoot":"","sources":["../src/OutputFormatter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAExC;;;GAGG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI,CAC3D,IAAI,EACJ,MAAM,EACN,KAAK,EACL,CAAC,EACD,CAAC,CACF,CAAA"}
1
+ {"version":3,"file":"OutputFormatter.d.ts","sourceRoot":"","sources":["../src/OutputFormatter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAU,IAAI,EAAU,MAAM,QAAQ,CAAA;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAGxC;;;GAGG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI,CAC3D,IAAI,EACJ,MAAM,EACN,KAAK,EACL,CAAC,EACD,CAAC,CACF,CAAA;AAyED;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,eAAoC,CAAA"}
@@ -1,5 +1,67 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
- import { Sink } from "effect";
4
+ import { Effect, Sink, Stream } from "effect";
5
+ import chalk from "chalk";
6
+ const prettyPrefixed = (prefix) => Sink.suspend(() => {
7
+ let hadReasoningDelta = false;
8
+ return Sink.forEach((output) => {
9
+ switch (output._tag) {
10
+ case "SubagentPart": {
11
+ console.log(chalkSubagentHeading(`${subagentIcon} Subagent #${output.id} starting (${output.modelAndProvider})`));
12
+ console.log("");
13
+ console.log(chalk.dim(output.prompt));
14
+ console.log("");
15
+ const prefix = chalk.magenta(`Subagent #${output.id}:`) + " ";
16
+ return output.output.pipe(Stream.run(prettyPrefixed(prefix)), Effect.catch((finished) => {
17
+ console.log(chalkSubagentHeading(`${subagentIcon} Subagent #${output.id} complete`));
18
+ console.log("");
19
+ console.log(finished.summary);
20
+ console.log("");
21
+ return Effect.void;
22
+ }), Effect.forkChild);
23
+ }
24
+ case "ReasoningDelta": {
25
+ process.stdout.write(output.delta);
26
+ hadReasoningDelta = true;
27
+ break;
28
+ }
29
+ case "ReasoningEnd": {
30
+ if (hadReasoningDelta) {
31
+ console.log("\n");
32
+ hadReasoningDelta = false;
33
+ }
34
+ break;
35
+ }
36
+ case "ScriptStart": {
37
+ console.log(prefix + chalkScriptHeading(`${scriptIcon} Executing script`));
38
+ console.log("");
39
+ console.log(chalk.dim(output.script));
40
+ console.log("");
41
+ break;
42
+ }
43
+ case "ScriptEnd": {
44
+ console.log(prefix + chalkScriptHeading(`${scriptIcon} Script output`));
45
+ console.log("");
46
+ const lines = output.output.split("\n");
47
+ const truncated = lines.length > 20
48
+ ? lines.slice(0, 20).join("\n") + "\n... (truncated)"
49
+ : output.output;
50
+ console.log(chalk.dim(truncated));
51
+ console.log(chalk.reset(""));
52
+ break;
53
+ }
54
+ }
55
+ return Effect.void;
56
+ });
57
+ });
58
+ /**
59
+ * @since 1.0.0
60
+ * @category Pretty
61
+ */
62
+ export const pretty = prettyPrefixed("");
63
+ const chalkScriptHeading = chalk.bold.blue;
64
+ const chalkSubagentHeading = chalk.bold.magenta;
65
+ const scriptIcon = "\u{f0bc1}";
66
+ const subagentIcon = "\u{ee0d} ";
5
67
  //# sourceMappingURL=OutputFormatter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OutputFormatter.js","sourceRoot":"","sources":["../src/OutputFormatter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA"}
1
+ {"version":3,"file":"OutputFormatter.js","sourceRoot":"","sources":["../src/OutputFormatter.ts"],"names":[],"mappings":"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"}
package/dist/ai.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":""}
package/dist/ai.js ADDED
@@ -0,0 +1,29 @@
1
+ import { Effect, Layer, Stream } from "effect";
2
+ import { Agent, Codex, OutputFormatter } from "./index.js";
3
+ import { NodeHttpClient, NodeRuntime, NodeServices, } from "@effect/platform-node";
4
+ import { OpenAiLanguageModel } from "@effect/ai-openai";
5
+ import { KeyValueStore } from "effect/unstable/persistence";
6
+ const Kvs = KeyValueStore.layerFileSystem("./data");
7
+ const CodexLayer = Codex.CodexAiClient.pipe(Layer.provide(Kvs), Layer.provide(NodeHttpClient.layerUndici), Layer.provide(NodeServices.layer));
8
+ const AgentModel = OpenAiLanguageModel.model("gpt-5.4", {
9
+ reasoning: {
10
+ effort: "medium",
11
+ summary: "auto",
12
+ },
13
+ }).pipe(Layer.provide(CodexLayer));
14
+ const SubAgentModel = OpenAiLanguageModel.model("gpt-5.3-codex-spark", {
15
+ reasoning: {
16
+ effort: "medium",
17
+ summary: "auto",
18
+ },
19
+ }).pipe(Layer.provide(CodexLayer));
20
+ const AgentServices = Agent.layerServices.pipe(Layer.merge(AgentModel), Layer.provideMerge(NodeServices.layer));
21
+ Effect.gen(function* () {
22
+ const agent = yield* Agent.make({
23
+ directory: process.cwd(),
24
+ prompt: process.argv.slice(2).join(" "),
25
+ subagentModel: SubAgentModel,
26
+ });
27
+ yield* agent.output.pipe(Stream.run(OutputFormatter.pretty), Effect.catch((finished) => Effect.log(finished.summary)));
28
+ }).pipe(Effect.scoped, Effect.provide(AgentServices), NodeRuntime.runMain);
29
+ //# sourceMappingURL=ai.js.map
package/dist/ai.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai.js","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC9C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC1D,OAAO,EACL,cAAc,EACd,WAAW,EACX,YAAY,GACb,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAE3D,MAAM,GAAG,GAAG,aAAa,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;AAEnD,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CACzC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAClB,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,EACzC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAClC,CAAA;AAED,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,SAAS,EAAE;IACtD,SAAS,EAAE;QACT,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,MAAM;KAChB;CACF,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAA;AAElC,MAAM,aAAa,GAAG,mBAAmB,CAAC,KAAK,CAAC,qBAAqB,EAAE;IACrE,SAAS,EAAE;QACT,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,MAAM;KAChB;CACF,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAA;AAElC,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAC5C,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EACvB,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CACvC,CAAA;AAED,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QAC9B,SAAS,EAAE,OAAO,CAAC,GAAG,EAAE;QACxB,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACvC,aAAa,EAAE,aAAa;KAC7B,CAAC,CAAA;IACF,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CACtB,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,EAClC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CACzD,CAAA;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA"}
package/dist/index.d.ts CHANGED
@@ -14,6 +14,10 @@ export * as Codex from "./Codex.ts";
14
14
  * @since 1.0.0
15
15
  */
16
16
  export * as Executor from "./Executor.ts";
17
+ /**
18
+ * @since 1.0.0
19
+ */
20
+ export * as OutputFormatter from "./OutputFormatter.ts";
17
21
  /**
18
22
  * @since 1.0.0
19
23
  */
@@ -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,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;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,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA"}
package/dist/index.js CHANGED
@@ -14,6 +14,10 @@ export * as Codex from "./Codex.js";
14
14
  * @since 1.0.0
15
15
  */
16
16
  export * as Executor from "./Executor.js";
17
+ /**
18
+ * @since 1.0.0
19
+ */
20
+ export * as OutputFormatter from "./OutputFormatter.js";
17
21
  /**
18
22
  * @since 1.0.0
19
23
  */
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,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;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,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;GAEG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;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.0.1",
4
+ "version": "0.0.2",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -31,11 +31,12 @@
31
31
  "packageManager": "pnpm@10.28.0+sha512.05df71d1421f21399e053fde567cea34d446fa02c76571441bfc1c7956e98e363088982d940465fd34480d4d90a0668bc12362f8aa88000a64e83d0b0e47be48",
32
32
  "dependencies": {
33
33
  "@vscode/ripgrep": "^1.17.0",
34
+ "chalk": "^5.6.2",
34
35
  "glob": "^13.0.6"
35
36
  },
36
37
  "peerDependencies": {
37
- "effect": "4.0.0-beta.29",
38
- "@effect/ai-openai": "4.0.0-beta.29"
38
+ "@effect/ai-openai": "4.0.0-beta.29",
39
+ "effect": "4.0.0-beta.29"
39
40
  },
40
41
  "devDependencies": {
41
42
  "@changesets/changelog-github": "^0.5.2",
package/src/Agent.ts CHANGED
@@ -28,7 +28,7 @@ import {
28
28
  } from "./AgentTools.ts"
29
29
  import { Executor } from "./Executor.ts"
30
30
  import { ToolkitRenderer } from "./ToolkitRenderer.ts"
31
- import { ProviderName } from "effect/unstable/ai/Model"
31
+ import { ModelName, ProviderName } from "effect/unstable/ai/Model"
32
32
  import { OpenAiLanguageModel } from "@effect/ai-openai"
33
33
  import { type StreamPart } from "effect/unstable/ai/Response"
34
34
  import type { ChildProcessSpawner } from "effect/unstable/process"
@@ -59,7 +59,11 @@ export const layerServices: Layer.Layer<
59
59
  * @since 1.0.0
60
60
  * @category Constructors
61
61
  */
62
- export const make: <Tools extends Record<string, Tool.Any> = {}>(options: {
62
+ export const make: <
63
+ Tools extends Record<string, Tool.Any> = {},
64
+ SE = never,
65
+ SR = never,
66
+ >(options: {
63
67
  /** The working directory to run the agent in */
64
68
  readonly directory: string
65
69
  /** The prompt to use for the agent */
@@ -68,6 +72,10 @@ export const make: <Tools extends Record<string, Tool.Any> = {}>(options: {
68
72
  readonly system?: string | undefined
69
73
  /** Additional tools to provide to the agent */
70
74
  readonly tools?: Toolkit.Toolkit<Tools> | undefined
75
+ /** Layer to use for subagents */
76
+ readonly subagentModel?:
77
+ | Layer.Layer<LanguageModel.LanguageModel | ProviderName, SE, SR>
78
+ | undefined
71
79
  }) => Effect.Effect<
72
80
  Agent,
73
81
  never,
@@ -77,34 +85,39 @@ export const make: <Tools extends Record<string, Tool.Any> = {}>(options: {
77
85
  | Executor
78
86
  | LanguageModel.LanguageModel
79
87
  | ProviderName
88
+ | ModelName
80
89
  | ToolkitRenderer
81
90
  | Tool.HandlersFor<Tools>
82
91
  | Tool.HandlersFor<typeof AgentTools.tools>
83
92
  | Tool.HandlerServices<Tools[keyof Tools]>
93
+ | SR
84
94
  > = Effect.fnUntraced(function* (options: {
85
- /** The working directory to run the agent in */
86
95
  readonly directory: string
87
- /** The prompt to use for the agent */
88
96
  readonly prompt: Prompt.RawInput
89
- /** Additional system instructions to provide to the agent */
90
97
  readonly system?: string | undefined
91
- /** Additional tools to provide to the agent */
92
98
  readonly tools?: Toolkit.Toolkit<{}> | undefined
99
+ readonly subagentModel?:
100
+ | Layer.Layer<LanguageModel.LanguageModel | ProviderName | ModelName>
101
+ | undefined
93
102
  }) {
94
- const ai = yield* LanguageModel.LanguageModel
95
- const provider = yield* ProviderName
96
103
  const fs = yield* FileSystem.FileSystem
97
104
  const pathService = yield* Path.Path
98
105
  const executor = yield* Executor
99
106
  const allTools = Toolkit.merge(AgentTools, options.tools ?? Toolkit.empty)
100
107
  const tools = yield* allTools
101
- const services = yield* Effect.services<Tool.HandlerServices<{}>>()
108
+ const services = yield* Effect.services<
109
+ | Tool.HandlerServices<{}>
110
+ | LanguageModel.LanguageModel
111
+ | ProviderName
112
+ | ModelName
113
+ >()
102
114
 
103
115
  let system = yield* generateSystem(allTools)
104
116
  if (options.system) {
105
117
  system += `\n${options.system}`
106
118
  }
107
119
  const withSystemPrompt = OpenAiLanguageModel.withConfigOverride({
120
+ store: false,
108
121
  instructions: system,
109
122
  })
110
123
 
@@ -115,127 +128,151 @@ export const make: <Tools extends Record<string, Tool.Any> = {}>(options: {
115
128
 
116
129
  let subagentId = 0
117
130
 
118
- const spawn: (prompt: Prompt.Prompt) => Stream.Stream<Output, AgentFinished> =
119
- Effect.fnUntraced(function* (prompt) {
120
- const deferred = yield* Deferred.make<string>()
121
- const output = yield* Queue.make<Output, AgentFinished>()
122
-
123
- const taskServices = SubagentContext.serviceMap({
124
- spawn: ({ prompt }) => {
125
- let id = ++subagentId
126
- return spawn(Prompt.make(prompt)).pipe(
127
- Stream.broadcast({
128
- capacity: "unbounded",
129
- }),
130
- Effect.flatMap((stream) => {
131
+ const spawn: (
132
+ prompt: Prompt.Prompt,
133
+ ) => Stream.Stream<
134
+ Output,
135
+ AgentFinished,
136
+ LanguageModel.LanguageModel | ProviderName
137
+ > = Effect.fnUntraced(function* (prompt) {
138
+ const ai = yield* LanguageModel.LanguageModel
139
+ const provider = yield* ProviderName
140
+ const deferred = yield* Deferred.make<string>()
141
+ const output = yield* Queue.make<Output, AgentFinished>()
142
+
143
+ const taskServices = SubagentContext.serviceMap({
144
+ spawn: ({ prompt }) => {
145
+ let id = ++subagentId
146
+ return spawn(Prompt.make(prompt)).pipe(
147
+ Stream.broadcast({
148
+ capacity: "unbounded",
149
+ }),
150
+ Effect.flatMap(
151
+ Effect.fnUntraced(function* (stream) {
152
+ const provider = yield* ProviderName
153
+ const model = yield* ModelName
131
154
  Queue.offerUnsafe(
132
155
  output,
133
- new SubagentPart({ id, output: stream }),
156
+ new SubagentPart({
157
+ id,
158
+ prompt,
159
+ provider,
160
+ model,
161
+ output: stream,
162
+ }),
134
163
  )
135
- return Stream.runDrain(stream)
164
+ return yield* Stream.runDrain(stream)
136
165
  }),
137
- Effect.scoped,
138
- Effect.as(""),
139
- Effect.catch((e) => Effect.succeed(e.summary)),
140
- )
141
- },
142
- }).pipe(
143
- ServiceMap.add(CurrentDirectory, options.directory),
144
- ServiceMap.add(TaskCompleteDeferred, deferred),
145
- )
146
-
147
- prompt = Prompt.concat(
148
- prompt,
149
- agentsMd.pipe(
150
- Option.map((md) =>
151
- Prompt.make(`Here is a copy of ./AGENTS.md. ALWAYS follow these instructions when completing the above task:
166
+ ),
167
+ Effect.scoped,
168
+ Effect.as(""),
169
+ Effect.catch((e) => Effect.succeed(e.summary)),
170
+ options.subagentModel
171
+ ? Effect.provide(Layer.orDie(options.subagentModel))
172
+ : Effect.provideServices(services),
173
+ )
174
+ },
175
+ }).pipe(
176
+ ServiceMap.add(CurrentDirectory, options.directory),
177
+ ServiceMap.add(TaskCompleteDeferred, deferred),
178
+ )
179
+
180
+ prompt = Prompt.concat(
181
+ prompt,
182
+ agentsMd.pipe(
183
+ Option.map((md) =>
184
+ Prompt.make(`Here is a copy of ./AGENTS.md. ALWAYS follow these instructions when completing the above task:
152
185
 
153
186
  ${md}`),
154
- ),
155
- Option.getOrElse(() => Prompt.empty),
156
187
  ),
157
- )
158
-
159
- if (provider !== "openai") {
160
- prompt = Prompt.setSystem(prompt, system)
161
- }
162
-
163
- let currentScript = ""
164
- yield* Effect.gen(function* () {
165
- while (true) {
166
- if (currentScript.length > 0) {
167
- Queue.offerUnsafe(
168
- output,
169
- new ScriptStart({ script: currentScript }),
170
- )
171
- const result = yield* pipe(
172
- executor.execute({
173
- tools,
174
- script: currentScript,
175
- }),
176
- Stream.mkString,
177
- )
178
- Queue.offerUnsafe(output, new ScriptEnd({ output: result }))
179
- prompt = Prompt.concat(prompt, `Javascript output:\n\n${result}`)
180
- currentScript = ""
181
- }
182
-
183
- if (Deferred.isDoneUnsafe(deferred)) {
184
- yield* Queue.fail(
185
- output,
186
- new AgentFinished({ summary: yield* Deferred.await(deferred) }),
187
- )
188
- return
189
- }
190
-
191
- let response = Array.empty<StreamPart<{}>>()
192
- yield* pipe(
193
- ai.streamText({ prompt }),
194
- Stream.takeUntil((part) => part.type === "text-end"),
195
- Stream.runForEachArray((parts) => {
196
- response.push(...parts)
197
- for (const part of parts) {
198
- switch (part.type) {
199
- case "text-start":
200
- currentScript = ""
201
- break
202
- case "text-delta":
203
- currentScript += part.delta
204
- break
205
- case "reasoning-start":
206
- break
207
- case "reasoning-delta":
208
- // process.stdout.write(part.delta)
209
- break
210
- case "reasoning-end":
211
- // console.log("\n")
212
- break
213
- case "finish":
214
- // console.log("Tokens used:", part.usage, "\n")
215
- break
216
- }
217
- }
218
- return Effect.void
219
- }),
220
- Effect.retry({
221
- while: (err) => {
222
- response = []
223
- return err.isRetryable
224
- },
188
+ Option.getOrElse(() => Prompt.empty),
189
+ ),
190
+ )
191
+
192
+ if (provider !== "openai") {
193
+ prompt = Prompt.setSystem(prompt, system)
194
+ }
195
+
196
+ let currentScript = ""
197
+ yield* Effect.gen(function* () {
198
+ while (true) {
199
+ if (currentScript.length > 0) {
200
+ Queue.offerUnsafe(output, new ScriptStart({ script: currentScript }))
201
+ const result = yield* pipe(
202
+ executor.execute({
203
+ tools,
204
+ script: currentScript,
225
205
  }),
226
- provider === "openai" ? withSystemPrompt : identity,
206
+ Stream.mkString,
227
207
  )
228
- prompt = Prompt.concat(prompt, Prompt.fromResponseParts(response))
229
- currentScript = currentScript.trim()
208
+ Queue.offerUnsafe(output, new ScriptEnd({ output: result }))
209
+ prompt = Prompt.concat(prompt, `Javascript output:\n\n${result}`)
210
+ currentScript = ""
230
211
  }
231
- }).pipe(
232
- Effect.provideServices(taskServices),
233
- Effect.provideServices(services),
234
- Effect.forkScoped,
235
- )
236
212
 
237
- return Stream.fromQueue(output)
238
- }, Stream.unwrap)
213
+ if (Deferred.isDoneUnsafe(deferred)) {
214
+ yield* Queue.fail(
215
+ output,
216
+ new AgentFinished({ summary: yield* Deferred.await(deferred) }),
217
+ )
218
+ return
219
+ }
220
+
221
+ let response = Array.empty<StreamPart<{}>>()
222
+ yield* pipe(
223
+ ai.streamText({ prompt }),
224
+ Stream.takeUntil(
225
+ (part) =>
226
+ part.type === "text-end" && currentScript.trim().length > 0,
227
+ ),
228
+ Stream.runForEachArray((parts) => {
229
+ response.push(...parts)
230
+ for (const part of parts) {
231
+ switch (part.type) {
232
+ case "text-start":
233
+ currentScript = ""
234
+ break
235
+ case "text-delta":
236
+ currentScript += part.delta
237
+ break
238
+ case "reasoning-start":
239
+ Queue.offerUnsafe(output, new ReasoningStart())
240
+ break
241
+ case "reasoning-delta":
242
+ Queue.offerUnsafe(
243
+ output,
244
+ new ReasoningDelta({ delta: part.delta }),
245
+ )
246
+ break
247
+ case "reasoning-end":
248
+ Queue.offerUnsafe(output, new ReasoningEnd())
249
+ break
250
+ case "finish":
251
+ // console.log("Tokens used:", part.usage, "\n")
252
+ break
253
+ }
254
+ }
255
+ return Effect.void
256
+ }),
257
+ Effect.retry({
258
+ while: (err) => {
259
+ response = []
260
+ return err.isRetryable
261
+ },
262
+ }),
263
+ provider === "openai" ? withSystemPrompt : identity,
264
+ )
265
+ prompt = Prompt.concat(prompt, Prompt.fromResponseParts(response))
266
+ currentScript = currentScript.trim()
267
+ }
268
+ }).pipe(
269
+ Effect.provideServices(taskServices),
270
+ Effect.provideServices(services),
271
+ Effect.forkScoped,
272
+ )
273
+
274
+ return Stream.fromQueue(output)
275
+ }, Stream.unwrap)
239
276
 
240
277
  const output = yield* spawn(Prompt.make(options.prompt)).pipe(
241
278
  Stream.broadcast({
@@ -302,6 +339,8 @@ Javascript output:
302
339
  - Use the current state of the codebase to inform your decisions. Don't look at git history unless explicity asked to.
303
340
  - Only add comments when necessary.
304
341
  - Repect the users AGENTS.md file and ALWAYS follow the instructions in it.
342
+ - Use the "subagent" tool to delegate research / exploration tasks
343
+ - When you have fully completed the task, call the "taskComplete" function
305
344
  `
306
345
  })
307
346
 
@@ -388,8 +427,15 @@ export type OutputPart = typeof OutputPart.Type
388
427
  */
389
428
  export class SubagentPart extends Data.TaggedError("SubagentPart")<{
390
429
  id: number
430
+ prompt: string
431
+ model: string
432
+ provider: string
391
433
  output: Stream.Stream<Output, AgentFinished>
392
- }> {}
434
+ }> {
435
+ get modelAndProvider() {
436
+ return `${this.provider}/${this.model}`
437
+ }
438
+ }
393
439
 
394
440
  /**
395
441
  * @since 1.0.0
package/src/AgentTools.ts CHANGED
@@ -488,9 +488,7 @@ export const AgentToolHandlers = AgentTools.toLayer(
488
488
  return `Success. Updated the following files:\n${out.join("\n")}`
489
489
  }, Effect.orDie),
490
490
  subagent: Effect.fn("AgentTools.subagent")(function* (prompt) {
491
- yield* Effect.logInfo(`Calling "subagent"`).pipe(
492
- Effect.annotateLogs({ prompt }),
493
- )
491
+ yield* Effect.logInfo(`Calling "subagent"`)
494
492
  const context = yield* SubagentContext
495
493
  return yield* context.spawn({ prompt })
496
494
  }, Effect.orDie),
package/src/Executor.ts CHANGED
@@ -5,9 +5,11 @@ import {
5
5
  Cause,
6
6
  Console,
7
7
  Effect,
8
- FiberSet,
8
+ Exit,
9
+ Fiber,
9
10
  Layer,
10
11
  Queue,
12
+ Scope,
11
13
  ServiceMap,
12
14
  Stream,
13
15
  } from "effect"
@@ -40,11 +42,14 @@ export class Executor extends ServiceMap.Service<
40
42
  readonly script: string
41
43
  }) {
42
44
  const output = yield* Queue.unbounded<string, Cause.Done>()
45
+ const console = yield* makeConsole(output)
46
+ const handlerScope = Scope.makeUnsafe("parallel")
47
+ const trackFiber = Fiber.runIn(handlerScope)
43
48
 
44
49
  yield* Effect.gen(function* () {
45
50
  const console = yield* Console.Console
46
51
  const services = yield* Effect.services()
47
- const runPromise = yield* FiberSet.makeRuntimePromise()
52
+ let running = 0
48
53
 
49
54
  const script = new NodeVm.Script(`async function main() {
50
55
  ${options.script}
@@ -60,11 +65,24 @@ ${options.script}
60
65
  const handler = services.mapUnsafe.get(
61
66
  tool.id,
62
67
  ) as Tool.Handler<string>
68
+
69
+ const handlerServices = ServiceMap.merge(services, handler.services)
70
+ const runFork = Effect.runForkWith(handlerServices)
71
+
63
72
  // oxlint-disable-next-line typescript/no-explicit-any
64
73
  sandbox[name] = function (params: any) {
65
- return handler
66
- .handler(params, {})
67
- .pipe(Effect.provideServices(handler.services), runPromise)
74
+ running++
75
+ const fiber = trackFiber(runFork(handler.handler(params, {})))
76
+ return new Promise((resolve, reject) => {
77
+ fiber.addObserver((exit) => {
78
+ running--
79
+ if (exit._tag === "Success") {
80
+ resolve(exit.value)
81
+ } else {
82
+ reject(Cause.squash(exit.cause))
83
+ }
84
+ })
85
+ })
68
86
  }
69
87
  }
70
88
 
@@ -72,11 +90,15 @@ ${options.script}
72
90
  timeout: 1000,
73
91
  })
74
92
  yield* Effect.promise(sandbox.main)
93
+ while (true) {
94
+ yield* Effect.yieldNow
95
+ if (running === 0) break
96
+ }
75
97
  }).pipe(
98
+ Effect.ensuring(Scope.close(handlerScope, Exit.void)),
76
99
  Effect.timeout("3 minutes"),
77
100
  Effect.catchCause(Effect.logFatal),
78
- Effect.provideServiceEffect(Console.Console, makeConsole(output)),
79
- Effect.scoped,
101
+ Effect.provideService(Console.Console, console),
80
102
  Effect.ensuring(Queue.end(output)),
81
103
  Effect.forkScoped,
82
104
  )
@@ -1,8 +1,9 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
- import { Sink } from "effect"
4
+ import { Effect, Sink, Stream } from "effect"
5
5
  import type { Output } from "./Agent.ts"
6
+ import chalk from "chalk"
6
7
 
7
8
  /**
8
9
  * @since 1.0.0
@@ -15,3 +16,86 @@ export type OutputFormatter<E = never, R = never> = Sink.Sink<
15
16
  E,
16
17
  R
17
18
  >
19
+
20
+ const prettyPrefixed = (prefix: string): OutputFormatter =>
21
+ Sink.suspend(() => {
22
+ let hadReasoningDelta = false
23
+ return Sink.forEach((output) => {
24
+ switch (output._tag) {
25
+ case "SubagentPart": {
26
+ console.log(
27
+ chalkSubagentHeading(
28
+ `${subagentIcon} Subagent #${output.id} starting (${output.modelAndProvider})`,
29
+ ),
30
+ )
31
+ console.log("")
32
+ console.log(chalk.dim(output.prompt))
33
+ console.log("")
34
+ const prefix = chalk.magenta(`Subagent #${output.id}:`) + " "
35
+ return output.output.pipe(
36
+ Stream.run(prettyPrefixed(prefix)),
37
+ Effect.catch((finished) => {
38
+ console.log(
39
+ chalkSubagentHeading(
40
+ `${subagentIcon} Subagent #${output.id} complete`,
41
+ ),
42
+ )
43
+ console.log("")
44
+ console.log(finished.summary)
45
+ console.log("")
46
+ return Effect.void
47
+ }),
48
+ Effect.forkChild,
49
+ )
50
+ }
51
+ case "ReasoningDelta": {
52
+ process.stdout.write(output.delta)
53
+ hadReasoningDelta = true
54
+ break
55
+ }
56
+ case "ReasoningEnd": {
57
+ if (hadReasoningDelta) {
58
+ console.log("\n")
59
+ hadReasoningDelta = false
60
+ }
61
+ break
62
+ }
63
+ case "ScriptStart": {
64
+ console.log(
65
+ prefix + chalkScriptHeading(`${scriptIcon} Executing script`),
66
+ )
67
+ console.log("")
68
+ console.log(chalk.dim(output.script))
69
+ console.log("")
70
+ break
71
+ }
72
+ case "ScriptEnd": {
73
+ console.log(
74
+ prefix + chalkScriptHeading(`${scriptIcon} Script output`),
75
+ )
76
+ console.log("")
77
+ const lines = output.output.split("\n")
78
+ const truncated =
79
+ lines.length > 20
80
+ ? lines.slice(0, 20).join("\n") + "\n... (truncated)"
81
+ : output.output
82
+ console.log(chalk.dim(truncated))
83
+ console.log(chalk.reset(""))
84
+ break
85
+ }
86
+ }
87
+ return Effect.void
88
+ })
89
+ })
90
+
91
+ /**
92
+ * @since 1.0.0
93
+ * @category Pretty
94
+ */
95
+ export const pretty: OutputFormatter = prettyPrefixed("")
96
+
97
+ const chalkScriptHeading = chalk.bold.blue
98
+ const chalkSubagentHeading = chalk.bold.magenta
99
+
100
+ const scriptIcon = "\u{f0bc1}"
101
+ const subagentIcon = "\u{ee0d} "
package/src/ai.ts ADDED
@@ -0,0 +1,48 @@
1
+ import { Effect, Layer, Stream } from "effect"
2
+ import { Agent, Codex, OutputFormatter } from "./index.ts"
3
+ import {
4
+ NodeHttpClient,
5
+ NodeRuntime,
6
+ NodeServices,
7
+ } from "@effect/platform-node"
8
+ import { OpenAiLanguageModel } from "@effect/ai-openai"
9
+ import { KeyValueStore } from "effect/unstable/persistence"
10
+
11
+ const Kvs = KeyValueStore.layerFileSystem("./data")
12
+
13
+ const CodexLayer = Codex.CodexAiClient.pipe(
14
+ Layer.provide(Kvs),
15
+ Layer.provide(NodeHttpClient.layerUndici),
16
+ Layer.provide(NodeServices.layer),
17
+ )
18
+
19
+ const AgentModel = OpenAiLanguageModel.model("gpt-5.4", {
20
+ reasoning: {
21
+ effort: "medium",
22
+ summary: "auto",
23
+ },
24
+ }).pipe(Layer.provide(CodexLayer))
25
+
26
+ const SubAgentModel = OpenAiLanguageModel.model("gpt-5.3-codex-spark", {
27
+ reasoning: {
28
+ effort: "medium",
29
+ summary: "auto",
30
+ },
31
+ }).pipe(Layer.provide(CodexLayer))
32
+
33
+ const AgentServices = Agent.layerServices.pipe(
34
+ Layer.merge(AgentModel),
35
+ Layer.provideMerge(NodeServices.layer),
36
+ )
37
+
38
+ Effect.gen(function* () {
39
+ const agent = yield* Agent.make({
40
+ directory: process.cwd(),
41
+ prompt: process.argv.slice(2).join(" "),
42
+ subagentModel: SubAgentModel,
43
+ })
44
+ yield* agent.output.pipe(
45
+ Stream.run(OutputFormatter.pretty),
46
+ Effect.catch((finished) => Effect.log(finished.summary)),
47
+ )
48
+ }).pipe(Effect.scoped, Effect.provide(AgentServices), NodeRuntime.runMain)
package/src/index.ts CHANGED
@@ -18,6 +18,11 @@ export * as Codex from "./Codex.ts"
18
18
  */
19
19
  export * as Executor from "./Executor.ts"
20
20
 
21
+ /**
22
+ * @since 1.0.0
23
+ */
24
+ export * as OutputFormatter from "./OutputFormatter.ts"
25
+
21
26
  /**
22
27
  * @since 1.0.0
23
28
  */