@effect-uai/core 0.1.0 → 0.3.0
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/README.md +2 -2
- package/dist/{AiError-CqmYjXyx.d.mts → AiError-CBuPHVKA.d.mts} +1 -1
- package/dist/{AiError-CqmYjXyx.d.mts.map → AiError-CBuPHVKA.d.mts.map} +1 -1
- package/dist/Image-BZmKfIdq.d.mts +61 -0
- package/dist/Image-BZmKfIdq.d.mts.map +1 -0
- package/dist/{Items-D1C2686t.d.mts → Items-CB8Bo3FI.d.mts} +132 -80
- package/dist/Items-CB8Bo3FI.d.mts.map +1 -0
- package/dist/Media-D_CpcM1Z.d.mts +57 -0
- package/dist/Media-D_CpcM1Z.d.mts.map +1 -0
- package/dist/{StructuredFormat-B5ueioNr.d.mts → StructuredFormat-BWq5Hd1O.d.mts} +5 -5
- package/dist/StructuredFormat-BWq5Hd1O.d.mts.map +1 -0
- package/dist/{Tool-5wxOCuOh.d.mts → Tool-DjVufH7i.d.mts} +13 -13
- package/dist/Tool-DjVufH7i.d.mts.map +1 -0
- package/dist/{Turn-rlTfuHaQ.d.mts → Turn-OPaILVIB.d.mts} +12 -29
- package/dist/Turn-OPaILVIB.d.mts.map +1 -0
- package/dist/{chunk-CfYAbeIz.mjs → chunk-uyGKjUfl.mjs} +2 -1
- package/dist/dist-DV5ISja1.mjs +13782 -0
- package/dist/dist-DV5ISja1.mjs.map +1 -0
- package/dist/domain/AiError.d.mts +1 -1
- package/dist/domain/AiError.mjs +1 -1
- package/dist/domain/Image.d.mts +2 -0
- package/dist/domain/Image.mjs +58 -0
- package/dist/domain/Image.mjs.map +1 -0
- package/dist/domain/Items.d.mts +2 -2
- package/dist/domain/Items.mjs +19 -42
- package/dist/domain/Items.mjs.map +1 -1
- package/dist/domain/Media.d.mts +2 -0
- package/dist/domain/Media.mjs +14 -0
- package/dist/domain/Media.mjs.map +1 -0
- package/dist/domain/Turn.d.mts +2 -2
- package/dist/domain/Turn.mjs +12 -8
- package/dist/domain/Turn.mjs.map +1 -1
- package/dist/embedding-model/Embedding.d.mts +107 -0
- package/dist/embedding-model/Embedding.d.mts.map +1 -0
- package/dist/embedding-model/Embedding.mjs +18 -0
- package/dist/embedding-model/Embedding.mjs.map +1 -0
- package/dist/embedding-model/EmbeddingModel.d.mts +97 -0
- package/dist/embedding-model/EmbeddingModel.d.mts.map +1 -0
- package/dist/embedding-model/EmbeddingModel.mjs +17 -0
- package/dist/embedding-model/EmbeddingModel.mjs.map +1 -0
- package/dist/index.d.mts +16 -8
- package/dist/index.mjs +10 -2
- package/dist/language-model/LanguageModel.d.mts +12 -20
- package/dist/language-model/LanguageModel.d.mts.map +1 -1
- package/dist/language-model/LanguageModel.mjs +3 -20
- package/dist/language-model/LanguageModel.mjs.map +1 -1
- package/dist/loop/Loop.d.mts +111 -2
- package/dist/loop/Loop.d.mts.map +1 -0
- package/dist/loop/Loop.mjs +39 -6
- package/dist/loop/Loop.mjs.map +1 -1
- package/dist/loop/Loop.test.d.mts +1 -0
- package/dist/loop/Loop.test.mjs +411 -0
- package/dist/loop/Loop.test.mjs.map +1 -0
- package/dist/magic-string.es-BgIV5Mu3.mjs +1013 -0
- package/dist/magic-string.es-BgIV5Mu3.mjs.map +1 -0
- package/dist/math/Vector.d.mts +47 -0
- package/dist/math/Vector.d.mts.map +1 -0
- package/dist/math/Vector.mjs +117 -0
- package/dist/math/Vector.mjs.map +1 -0
- package/dist/observability/Metrics.d.mts +2 -2
- package/dist/observability/Metrics.d.mts.map +1 -1
- package/dist/observability/Metrics.mjs +1 -1
- package/dist/observability/Metrics.mjs.map +1 -1
- package/dist/streaming/JSONL.mjs +1 -1
- package/dist/streaming/JSONL.test.d.mts +1 -0
- package/dist/streaming/JSONL.test.mjs +70 -0
- package/dist/streaming/JSONL.test.mjs.map +1 -0
- package/dist/streaming/Lines.mjs +1 -1
- package/dist/streaming/SSE.d.mts +2 -2
- package/dist/streaming/SSE.d.mts.map +1 -1
- package/dist/streaming/SSE.mjs +1 -1
- package/dist/streaming/SSE.mjs.map +1 -1
- package/dist/streaming/SSE.test.d.mts +1 -0
- package/dist/streaming/SSE.test.mjs +72 -0
- package/dist/streaming/SSE.test.mjs.map +1 -0
- package/dist/structured-format/StructuredFormat.d.mts +1 -1
- package/dist/structured-format/StructuredFormat.mjs +1 -1
- package/dist/structured-format/StructuredFormat.mjs.map +1 -1
- package/dist/testing/MockProvider.d.mts +6 -6
- package/dist/testing/MockProvider.d.mts.map +1 -1
- package/dist/testing/MockProvider.mjs.map +1 -1
- package/dist/tool/HistoryCheck.d.mts +6 -3
- package/dist/tool/HistoryCheck.d.mts.map +1 -1
- package/dist/tool/HistoryCheck.mjs +7 -1
- package/dist/tool/HistoryCheck.mjs.map +1 -1
- package/dist/tool/Outcome.d.mts +138 -2
- package/dist/tool/Outcome.d.mts.map +1 -0
- package/dist/tool/Outcome.mjs +34 -18
- package/dist/tool/Outcome.mjs.map +1 -1
- package/dist/tool/Resolvers.d.mts +30 -25
- package/dist/tool/Resolvers.d.mts.map +1 -1
- package/dist/tool/Resolvers.mjs +54 -44
- package/dist/tool/Resolvers.mjs.map +1 -1
- package/dist/tool/Resolvers.test.d.mts +1 -0
- package/dist/tool/Resolvers.test.mjs +317 -0
- package/dist/tool/Resolvers.test.mjs.map +1 -0
- package/dist/tool/Tool.d.mts +1 -1
- package/dist/tool/Tool.mjs +1 -1
- package/dist/tool/Tool.mjs.map +1 -1
- package/dist/tool/ToolEvent.d.mts +151 -2
- package/dist/tool/ToolEvent.d.mts.map +1 -0
- package/dist/tool/ToolEvent.mjs +30 -4
- package/dist/tool/ToolEvent.mjs.map +1 -1
- package/dist/tool/Toolkit.d.mts +24 -15
- package/dist/tool/Toolkit.d.mts.map +1 -1
- package/dist/tool/Toolkit.mjs +14 -13
- package/dist/tool/Toolkit.mjs.map +1 -1
- package/dist/tool/Toolkit.test.d.mts +1 -0
- package/dist/tool/Toolkit.test.mjs +113 -0
- package/dist/tool/Toolkit.test.mjs.map +1 -0
- package/package.json +29 -13
- package/src/domain/Image.ts +75 -0
- package/src/domain/Items.ts +18 -47
- package/src/domain/Media.ts +61 -0
- package/src/domain/Turn.ts +7 -17
- package/src/embedding-model/Embedding.ts +117 -0
- package/src/embedding-model/EmbeddingModel.ts +107 -0
- package/src/index.ts +9 -1
- package/src/language-model/LanguageModel.ts +2 -22
- package/src/loop/Loop.test.ts +114 -2
- package/src/loop/Loop.ts +69 -5
- package/src/math/Vector.ts +138 -0
- package/src/observability/Metrics.ts +1 -1
- package/src/streaming/SSE.ts +1 -1
- package/src/structured-format/StructuredFormat.ts +2 -2
- package/src/testing/MockProvider.ts +2 -2
- package/src/tool/HistoryCheck.ts +2 -5
- package/src/tool/Outcome.ts +39 -53
- package/src/tool/Resolvers.test.ts +46 -117
- package/src/tool/Resolvers.ts +74 -102
- package/src/tool/Tool.ts +9 -9
- package/src/tool/ToolEvent.ts +30 -26
- package/src/tool/Toolkit.test.ts +97 -2
- package/src/tool/Toolkit.ts +65 -67
- package/dist/Items-D1C2686t.d.mts.map +0 -1
- package/dist/Loop-CzSJo1h8.d.mts +0 -87
- package/dist/Loop-CzSJo1h8.d.mts.map +0 -1
- package/dist/Outcome-C2JYknCu.d.mts +0 -40
- package/dist/Outcome-C2JYknCu.d.mts.map +0 -1
- package/dist/StructuredFormat-B5ueioNr.d.mts.map +0 -1
- package/dist/Tool-5wxOCuOh.d.mts.map +0 -1
- package/dist/ToolEvent-B2N10hr3.d.mts +0 -29
- package/dist/ToolEvent-B2N10hr3.d.mts.map +0 -1
- package/dist/Turn-rlTfuHaQ.d.mts.map +0 -1
- package/dist/match/Match.d.mts +0 -16
- package/dist/match/Match.d.mts.map +0 -1
- package/dist/match/Match.mjs +0 -15
- package/dist/match/Match.mjs.map +0 -1
- package/src/match/Match.ts +0 -9
package/src/tool/Toolkit.test.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
import { Effect, Schema } from "effect"
|
|
2
|
-
import { describe, expect, it } from "vitest"
|
|
1
|
+
import { Context, Effect, Layer, Schema, Stream } from "effect"
|
|
2
|
+
import { describe, expect, expectTypeOf, it } from "vitest"
|
|
3
|
+
import type { FunctionCall } from "../domain/Items.js"
|
|
4
|
+
import { isOutput } from "./ToolEvent.js"
|
|
5
|
+
import { isValue } from "./Outcome.js"
|
|
3
6
|
import * as Tool from "./Tool.js"
|
|
4
7
|
import * as Toolkit from "./Toolkit.js"
|
|
5
8
|
|
|
@@ -43,3 +46,95 @@ describe("Toolkit.toDescriptors", () => {
|
|
|
43
46
|
expect(l).not.toHaveProperty("strict")
|
|
44
47
|
})
|
|
45
48
|
})
|
|
49
|
+
|
|
50
|
+
describe("Toolkit.executeAll - tools with R requirements", () => {
|
|
51
|
+
// Two distinct services, modelling the "typed per-tool context" use case
|
|
52
|
+
// (cf. AI SDK 7's `toolsContext`). In Effect each tool declares its R, the
|
|
53
|
+
// compiler enforces it, and `executeAll` surfaces the union for the caller
|
|
54
|
+
// to provide via Layer.
|
|
55
|
+
type WeatherApiKeyShape = { readonly key: string }
|
|
56
|
+
class WeatherApiKey extends Context.Service<WeatherApiKey, WeatherApiKeyShape>()(
|
|
57
|
+
"test/WeatherApiKey",
|
|
58
|
+
) {}
|
|
59
|
+
|
|
60
|
+
type GeoApiKeyShape = { readonly key: string }
|
|
61
|
+
class GeoApiKey extends Context.Service<GeoApiKey, GeoApiKeyShape>()("test/GeoApiKey") {}
|
|
62
|
+
|
|
63
|
+
const Empty = Schema.Struct({})
|
|
64
|
+
|
|
65
|
+
const getWeather = Tool.make({
|
|
66
|
+
name: "get_weather",
|
|
67
|
+
description: "",
|
|
68
|
+
inputSchema: Tool.fromEffectSchema(Empty),
|
|
69
|
+
run: () =>
|
|
70
|
+
Effect.gen(function* () {
|
|
71
|
+
const { key } = yield* WeatherApiKey
|
|
72
|
+
return { source: "weather", key }
|
|
73
|
+
}),
|
|
74
|
+
})
|
|
75
|
+
|
|
76
|
+
const getCoords = Tool.make({
|
|
77
|
+
name: "get_coords",
|
|
78
|
+
description: "",
|
|
79
|
+
inputSchema: Tool.fromEffectSchema(Empty),
|
|
80
|
+
run: () =>
|
|
81
|
+
Effect.gen(function* () {
|
|
82
|
+
const { key } = yield* GeoApiKey
|
|
83
|
+
return { source: "geo", key }
|
|
84
|
+
}),
|
|
85
|
+
})
|
|
86
|
+
|
|
87
|
+
const call = (name: string, id: string): FunctionCall => ({
|
|
88
|
+
type: "function_call",
|
|
89
|
+
call_id: id,
|
|
90
|
+
name,
|
|
91
|
+
arguments: "{}",
|
|
92
|
+
})
|
|
93
|
+
|
|
94
|
+
it("propagates each tool's R into the resulting Stream's requirements", () => {
|
|
95
|
+
const stream = Toolkit.executeAll([getWeather, getCoords], [])
|
|
96
|
+
expectTypeOf(stream).toEqualTypeOf<
|
|
97
|
+
Stream.Stream<import("./ToolEvent.js").ToolEvent, never, WeatherApiKey | GeoApiKey>
|
|
98
|
+
>()
|
|
99
|
+
})
|
|
100
|
+
|
|
101
|
+
it("runs each tool with its own service injected", async () => {
|
|
102
|
+
const layer = Layer.mergeAll(
|
|
103
|
+
Layer.succeed(WeatherApiKey, { key: "weather-123" }),
|
|
104
|
+
Layer.succeed(GeoApiKey, { key: "geo-456" }),
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
const program = Toolkit.executeAll(
|
|
108
|
+
[getWeather, getCoords],
|
|
109
|
+
[call("get_weather", "c1"), call("get_coords", "c2")],
|
|
110
|
+
).pipe(Stream.runCollect, Effect.provide(layer))
|
|
111
|
+
|
|
112
|
+
const events = await Effect.runPromise(program)
|
|
113
|
+
const outputs = Array.from(events).filter(isOutput)
|
|
114
|
+
const byCall = new Map(outputs.map((e) => [e.result.call_id, e.result]))
|
|
115
|
+
|
|
116
|
+
const w = byCall.get("c1")
|
|
117
|
+
const g = byCall.get("c2")
|
|
118
|
+
expect(w !== undefined && isValue(w) && w.value).toEqual({
|
|
119
|
+
source: "weather",
|
|
120
|
+
key: "weather-123",
|
|
121
|
+
})
|
|
122
|
+
expect(g !== undefined && isValue(g) && g.value).toEqual({
|
|
123
|
+
source: "geo",
|
|
124
|
+
key: "geo-456",
|
|
125
|
+
})
|
|
126
|
+
})
|
|
127
|
+
|
|
128
|
+
it("with no service-needing tools, R is never", () => {
|
|
129
|
+
const plain = Tool.make({
|
|
130
|
+
name: "plain",
|
|
131
|
+
description: "",
|
|
132
|
+
inputSchema: Tool.fromEffectSchema(Empty),
|
|
133
|
+
run: () => Effect.succeed(0),
|
|
134
|
+
})
|
|
135
|
+
const stream = Toolkit.executeAll([plain], [])
|
|
136
|
+
expectTypeOf(stream).toEqualTypeOf<
|
|
137
|
+
Stream.Stream<import("./ToolEvent.js").ToolEvent, never, never>
|
|
138
|
+
>()
|
|
139
|
+
})
|
|
140
|
+
})
|
package/src/tool/Toolkit.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Array as Arr, Effect,
|
|
1
|
+
import { Array as Arr, Effect, Function, Ref, Stream } from "effect"
|
|
2
2
|
import * as Loop from "../loop/Loop.js"
|
|
3
3
|
import type { FunctionCall } from "../domain/Items.js"
|
|
4
4
|
import {
|
|
@@ -6,16 +6,11 @@ import {
|
|
|
6
6
|
type AnyPlainTool,
|
|
7
7
|
type AnyStreamingTool,
|
|
8
8
|
isStreamingTool,
|
|
9
|
+
type StreamingTool,
|
|
9
10
|
type Tool,
|
|
10
11
|
type ToolDescriptor,
|
|
11
12
|
} from "./Tool.js"
|
|
12
|
-
import {
|
|
13
|
-
type ToolDecision,
|
|
14
|
-
type ToolResult,
|
|
15
|
-
execute as executeDecision,
|
|
16
|
-
executionError,
|
|
17
|
-
rejected,
|
|
18
|
-
} from "./Outcome.js"
|
|
13
|
+
import { type ToolResult, executionError, rejected } from "./Outcome.js"
|
|
19
14
|
import type { ToolEvent } from "./ToolEvent.js"
|
|
20
15
|
import { isOutput } from "./ToolEvent.js"
|
|
21
16
|
|
|
@@ -28,6 +23,18 @@ export type Toolkit<Tools extends ReadonlyArray<AnyTool>> = {
|
|
|
28
23
|
export type ToolsR<Tools extends ReadonlyArray<AnyTool>> =
|
|
29
24
|
Tools[number] extends Tool<any, any, any, infer R> ? R : never
|
|
30
25
|
|
|
26
|
+
/**
|
|
27
|
+
* Union of every tool's `R` requirements in a mixed plain + streaming array.
|
|
28
|
+
* Used by `executeAll` to surface the services tools need at the recipe
|
|
29
|
+
* level, so the loop's stream type carries them through to `Effect.provide`.
|
|
30
|
+
*/
|
|
31
|
+
export type ToolKindR<Tools extends ReadonlyArray<AnyKindTool<any>>> =
|
|
32
|
+
Tools[number] extends StreamingTool<any, any, any, any, infer R>
|
|
33
|
+
? R
|
|
34
|
+
: Tools[number] extends Tool<any, any, any, infer R>
|
|
35
|
+
? R
|
|
36
|
+
: never
|
|
37
|
+
|
|
31
38
|
export const make = <const Tools extends ReadonlyArray<AnyTool>>(tools: Tools): Toolkit<Tools> => ({
|
|
32
39
|
tools,
|
|
33
40
|
})
|
|
@@ -50,56 +57,31 @@ export const toDescriptors = <Tools extends ReadonlyArray<AnyTool>>(
|
|
|
50
57
|
})
|
|
51
58
|
|
|
52
59
|
// ---------------------------------------------------------------------------
|
|
53
|
-
//
|
|
54
|
-
//
|
|
55
|
-
//
|
|
56
|
-
//
|
|
57
|
-
// `executeAllWithResolver` is the general primitive. `executeAllStream` is
|
|
58
|
-
// the no-resolver shortcut.
|
|
60
|
+
// Tool executor. Streams `ToolEvent`s in real time and dispatches streaming
|
|
61
|
+
// and plain tools uniformly. Policy stays outside this module: callers pass
|
|
62
|
+
// only the calls they have already decided should run.
|
|
59
63
|
// ---------------------------------------------------------------------------
|
|
60
64
|
|
|
61
|
-
export type
|
|
62
|
-
|
|
63
|
-
export interface ExecuteOptions {
|
|
65
|
+
export type ExecuteOptions = {
|
|
64
66
|
readonly concurrency?: number | "unbounded"
|
|
65
67
|
}
|
|
66
68
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
+
/** Execute every provided call. Approval/rejection policy belongs upstream. */
|
|
70
|
+
export const executeAll = <Tools extends ReadonlyArray<AnyKindTool<any>>>(
|
|
71
|
+
tools: Tools,
|
|
69
72
|
calls: ReadonlyArray<FunctionCall>,
|
|
70
|
-
resolve: Resolver,
|
|
71
73
|
options?: ExecuteOptions,
|
|
72
|
-
): Stream.Stream<ToolEvent
|
|
74
|
+
): Stream.Stream<ToolEvent, never, ToolKindR<Tools>> =>
|
|
73
75
|
Stream.fromIterable(calls).pipe(
|
|
74
|
-
Stream.flatMap(
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
resolve(call).pipe(Effect.map((decision) => dispatch(tools, call, decision))),
|
|
78
|
-
),
|
|
79
|
-
{ concurrency: options?.concurrency ?? "unbounded" },
|
|
80
|
-
),
|
|
76
|
+
Stream.flatMap((call) => runOne(tools, call), {
|
|
77
|
+
concurrency: options?.concurrency ?? "unbounded",
|
|
78
|
+
}),
|
|
81
79
|
)
|
|
82
80
|
|
|
83
|
-
|
|
84
|
-
export const executeAll = (
|
|
85
|
-
tools: ReadonlyArray<AnyKindTool>,
|
|
86
|
-
calls: ReadonlyArray<FunctionCall>,
|
|
87
|
-
options?: ExecuteOptions,
|
|
88
|
-
): Stream.Stream<ToolEvent> =>
|
|
89
|
-
executeAllWithResolver(tools, calls, () => Effect.succeed(executeDecision), options)
|
|
81
|
+
export const outputEvent = (result: ToolResult): ToolEvent => ({ _tag: "Output", result })
|
|
90
82
|
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
call: FunctionCall,
|
|
94
|
-
decision: ToolDecision,
|
|
95
|
-
): Stream.Stream<ToolEvent> =>
|
|
96
|
-
Match.value(decision).pipe(
|
|
97
|
-
Match.tag("Execute", () => runOne(tools, call)),
|
|
98
|
-
Match.tag("Reject", (d) =>
|
|
99
|
-
Stream.succeed<ToolEvent>({ _tag: "Output", result: d.result }),
|
|
100
|
-
),
|
|
101
|
-
Match.exhaustive,
|
|
102
|
-
)
|
|
83
|
+
export const outputEvents = (results: ReadonlyArray<ToolResult>): Stream.Stream<ToolEvent> =>
|
|
84
|
+
Stream.fromIterable(results.map(outputEvent))
|
|
103
85
|
|
|
104
86
|
const valueResult = (call: FunctionCall, tool: string, value: unknown): ToolResult => ({
|
|
105
87
|
_tag: "Value",
|
|
@@ -108,10 +90,10 @@ const valueResult = (call: FunctionCall, tool: string, value: unknown): ToolResu
|
|
|
108
90
|
value,
|
|
109
91
|
})
|
|
110
92
|
|
|
111
|
-
const runOne = (
|
|
112
|
-
tools: ReadonlyArray<AnyKindTool
|
|
93
|
+
const runOne = <R>(
|
|
94
|
+
tools: ReadonlyArray<AnyKindTool<R>>,
|
|
113
95
|
call: FunctionCall,
|
|
114
|
-
): Stream.Stream<ToolEvent> => {
|
|
96
|
+
): Stream.Stream<ToolEvent, never, R> => {
|
|
115
97
|
const tool = tools.find((t) => t.name === call.name)
|
|
116
98
|
if (tool === undefined) {
|
|
117
99
|
// Graceful: emit a synthetic Failure so OTHER calls in this turn
|
|
@@ -125,10 +107,10 @@ const runOne = (
|
|
|
125
107
|
return runPlain(tool, call)
|
|
126
108
|
}
|
|
127
109
|
|
|
128
|
-
const runPlain = (
|
|
129
|
-
tool: AnyPlainTool
|
|
110
|
+
const runPlain = <R>(
|
|
111
|
+
tool: AnyPlainTool<R>,
|
|
130
112
|
call: FunctionCall,
|
|
131
|
-
): Stream.Stream<ToolEvent> =>
|
|
113
|
+
): Stream.Stream<ToolEvent, never, R> =>
|
|
132
114
|
Stream.fromEffect(
|
|
133
115
|
Effect.gen(function* () {
|
|
134
116
|
const parsed = yield* Effect.try({
|
|
@@ -150,10 +132,10 @@ const runPlain = (
|
|
|
150
132
|
),
|
|
151
133
|
)
|
|
152
134
|
|
|
153
|
-
const runStreaming = (
|
|
154
|
-
tool: AnyStreamingTool
|
|
135
|
+
const runStreaming = <R>(
|
|
136
|
+
tool: AnyStreamingTool<R>,
|
|
155
137
|
call: FunctionCall,
|
|
156
|
-
): Stream.Stream<ToolEvent> =>
|
|
138
|
+
): Stream.Stream<ToolEvent, never, R> =>
|
|
157
139
|
Stream.unwrap(
|
|
158
140
|
Effect.gen(function* () {
|
|
159
141
|
const parsed = yield* Effect.try({
|
|
@@ -210,19 +192,35 @@ const runStreaming = (
|
|
|
210
192
|
)
|
|
211
193
|
|
|
212
194
|
// ---------------------------------------------------------------------------
|
|
213
|
-
// `
|
|
195
|
+
// `continueWith` - bridge from a `Stream<ToolEvent>` to the loop's emit
|
|
214
196
|
// shape. Drains the stream to the consumer in real-time, taps every
|
|
215
197
|
// `Output` into an internal Ref, and at end-of-stream emits
|
|
216
198
|
// `Loop.next(build(results))`. Recipe never sees the Ref.
|
|
199
|
+
//
|
|
200
|
+
// Dual: data-first `continueWith(stream, build)` and data-last
|
|
201
|
+
// `stream.pipe(continueWith(build))` both work.
|
|
217
202
|
// ---------------------------------------------------------------------------
|
|
218
203
|
|
|
219
|
-
export const
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
):
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
build,
|
|
228
|
-
)
|
|
204
|
+
export const continueWith: {
|
|
205
|
+
<S>(
|
|
206
|
+
build: (results: ReadonlyArray<ToolResult>) => S,
|
|
207
|
+
): <R>(
|
|
208
|
+
stream: Stream.Stream<ToolEvent, never, R>,
|
|
209
|
+
) => Stream.Stream<Loop.Event<ToolEvent, S>, never, R>
|
|
210
|
+
<S, R>(
|
|
211
|
+
stream: Stream.Stream<ToolEvent, never, R>,
|
|
212
|
+
build: (results: ReadonlyArray<ToolResult>) => S,
|
|
213
|
+
): Stream.Stream<Loop.Event<ToolEvent, S>, never, R>
|
|
214
|
+
} = Function.dual(
|
|
215
|
+
2,
|
|
216
|
+
<S, R>(
|
|
217
|
+
stream: Stream.Stream<ToolEvent, never, R>,
|
|
218
|
+
build: (results: ReadonlyArray<ToolResult>) => S,
|
|
219
|
+
): Stream.Stream<Loop.Event<ToolEvent, S>, never, R> =>
|
|
220
|
+
Loop.nextAfterFold(
|
|
221
|
+
stream,
|
|
222
|
+
[] as ReadonlyArray<ToolResult>,
|
|
223
|
+
(acc, e) => (isOutput(e) ? Arr.append(acc, e.result) : acc),
|
|
224
|
+
build,
|
|
225
|
+
),
|
|
226
|
+
)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Items-D1C2686t.d.mts","names":[],"sources":["../src/domain/Items.ts"],"mappings":"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"}
|
package/dist/Loop-CzSJo1h8.d.mts
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { l as IncompleteTurn } from "./AiError-CqmYjXyx.mjs";
|
|
2
|
-
import { a as TurnEvent, i as Turn } from "./Turn-rlTfuHaQ.mjs";
|
|
3
|
-
import { Data, Effect, Stream } from "effect";
|
|
4
|
-
|
|
5
|
-
//#region src/loop/Loop.d.ts
|
|
6
|
-
declare namespace Loop_d_exports {
|
|
7
|
-
export { Event, loop, next, nextAfter, nextAfterFold, stop, stopAfter, stopEvent, streamUntilComplete, value };
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* The tagged union a body emits per pull. `Value` carries a payload that
|
|
11
|
-
* flows downstream. `Next` ends the current iteration and continues with a
|
|
12
|
-
* new state. `Stop` ends the loop entirely.
|
|
13
|
-
*/
|
|
14
|
-
type Event<A, S> = Data.TaggedEnum<{
|
|
15
|
-
Value: {
|
|
16
|
-
readonly value: A;
|
|
17
|
-
};
|
|
18
|
-
Next: {
|
|
19
|
-
readonly state: S;
|
|
20
|
-
};
|
|
21
|
-
Stop: {};
|
|
22
|
-
}>;
|
|
23
|
-
/** Wrap a value so it flows through the loop to downstream consumers. */
|
|
24
|
-
declare const value: <A>(a: A) => Event<A, never>;
|
|
25
|
-
/** End the current iteration and continue with a new state. */
|
|
26
|
-
declare const next: <S>(state: S) => Event<never, S>;
|
|
27
|
-
/** The terminal `Stop` event. Use `stop` (the Stream) to end a loop body. */
|
|
28
|
-
declare const stopEvent: Event<never, never>;
|
|
29
|
-
/**
|
|
30
|
-
* A single-element stream that ends the loop. Return this from a body when
|
|
31
|
-
* there's nothing else to emit; equivalent to `stopAfter(Stream.empty)` but
|
|
32
|
-
* named for the common case.
|
|
33
|
-
*/
|
|
34
|
-
declare const stop: Stream.Stream<Event<never, never>>;
|
|
35
|
-
/**
|
|
36
|
-
* Pipe a raw `Stream<A>` into the loop's emit shape, then terminate the
|
|
37
|
-
* iteration with `next(state)`. Common shape for "stream this turn's
|
|
38
|
-
* deltas, then continue with updated history."
|
|
39
|
-
*/
|
|
40
|
-
declare const nextAfter: <S, A, E, R>(stream: Stream.Stream<A, E, R>, state: S) => Stream.Stream<Event<A, S>, E, R>;
|
|
41
|
-
/**
|
|
42
|
-
* Pipe a raw `Stream<A>` into the loop's emit shape, then terminate the
|
|
43
|
-
* loop. Common shape for "stream this turn's deltas, then we're done."
|
|
44
|
-
*/
|
|
45
|
-
declare const stopAfter: <A, E, R>(stream: Stream.Stream<A, E, R>) => Stream.Stream<Event<A, never>, E, R>;
|
|
46
|
-
/**
|
|
47
|
-
* General `nextAfter` variant: drain `stream` to the consumer, fold elements
|
|
48
|
-
* into an accumulator, and at end-of-stream emit one `next(build(finalAcc))`.
|
|
49
|
-
*
|
|
50
|
-
* Subsumes `nextAfter` when state is constant (`reduce: (s, _) => s`,
|
|
51
|
-
* `build: (s) => s`). Used by `Toolkit.nextStateFrom` to collect tool
|
|
52
|
-
* results and build next state without exposing a Ref to recipes.
|
|
53
|
-
*/
|
|
54
|
-
declare const nextAfterFold: <A, B, S, E, R>(stream: Stream.Stream<A, E, R>, initial: B, reduce: (acc: B, a: A) => B, build: (b: B) => S) => Stream.Stream<Event<A, S>, E, R>;
|
|
55
|
-
/**
|
|
56
|
-
* Lift a provider's `Stream<TurnEvent>` into a loop body's `Stream<Event<TurnEvent | A, S>>`.
|
|
57
|
-
* Each delta passes through as `value(delta)` (including the terminal
|
|
58
|
-
* `turn_complete`, so the consumer sees turn boundaries naturally). Once
|
|
59
|
-
* the terminal arrives, `then(turn)` runs and its returned stream of loop
|
|
60
|
-
* events (typically tool outputs followed by `next(state)` or `stop`) is
|
|
61
|
-
* concatenated.
|
|
62
|
-
*
|
|
63
|
-
* Pre-pipe transforms (`Stream.tap` / `Stream.map` / `Stream.filter`) on
|
|
64
|
-
* the raw delta stream cover anything an `emit`-style callback would do.
|
|
65
|
-
*
|
|
66
|
-
* If the upstream ends without a `turn_complete`, the resulting stream
|
|
67
|
-
* fails with `AiError.IncompleteTurn`. Catch it via `Stream.catchTag` if
|
|
68
|
-
* you want to recover.
|
|
69
|
-
*/
|
|
70
|
-
declare const streamUntilComplete: <S, A, E2 = never, R2 = never>(then: (turn: Turn) => Effect.Effect<Stream.Stream<Event<A, S>, E2, R2>, E2, R2>) => <E, R>(deltas: Stream.Stream<TurnEvent, E, R>) => Stream.Stream<Event<TurnEvent | A, S>, E | E2 | IncompleteTurn, R | R2>;
|
|
71
|
-
type LoopBody<S, A, E, R> = (state: S) => Stream.Stream<Event<A, S>, E, R> | Effect.Effect<Stream.Stream<Event<A, S>, E, R>, E, R>;
|
|
72
|
-
/**
|
|
73
|
-
* Drive a state-threaded loop body. Each iteration runs `body(state)` to get
|
|
74
|
-
* a `Stream<Event<A, S>>`; values flow downstream, `next(s)` continues with
|
|
75
|
-
* a new state, `stop` ends the loop. See the file header for the full
|
|
76
|
-
* pull-based execution model.
|
|
77
|
-
*
|
|
78
|
-
* Dual: data-first `loop(initial, body)` and data-last `loop(body)(initial)`
|
|
79
|
-
* (or `pipe(initial, loop(body))`) both work.
|
|
80
|
-
*/
|
|
81
|
-
declare const loop: {
|
|
82
|
-
<S, A, E, R>(body: LoopBody<S, A, E, R>): (initial: S) => Stream.Stream<A, E, R>;
|
|
83
|
-
<S, A, E, R>(initial: S, body: LoopBody<S, A, E, R>): Stream.Stream<A, E, R>;
|
|
84
|
-
};
|
|
85
|
-
//#endregion
|
|
86
|
-
export { nextAfter as a, stopAfter as c, value as d, next as i, stopEvent as l, Loop_d_exports as n, nextAfterFold as o, loop as r, stop as s, Event as t, streamUntilComplete as u };
|
|
87
|
-
//# sourceMappingURL=Loop-CzSJo1h8.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Loop-CzSJo1h8.d.mts","names":[],"sources":["../src/loop/Loop.ts"],"mappings":";;;;;;;;;;;;;KAgCY,KAAA,SAAc,IAAA,CAAK,UAAA;EAC7B,KAAA;IAAA,SAAkB,KAAA,EAAO,CAAA;EAAA;EACzB,IAAA;IAAA,SAAiB,KAAA,EAAO,CAAA;EAAA;EACxB,IAAA;AAAA;;cAUW,KAAA,MAAY,CAAA,EAAG,CAAA,KAAI,KAAA,CAAM,CAAA;;cAGzB,IAAA,MAAW,KAAA,EAAO,CAAA,KAAI,KAAA,QAAa,CAAA;;cAGnC,SAAA,EAAW,KAAA;;;;;;cAOX,IAAA,EAAM,MAAA,CAAO,MAAA,CAAO,KAAA;;;;;;cAOpB,SAAA,eACX,MAAA,EAAQ,MAAA,CAAO,MAAA,CAAO,CAAA,EAAG,CAAA,EAAG,CAAA,GAC5B,KAAA,EAAO,CAAA,KACN,MAAA,CAAO,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA;AApBjC;;;;AAAA,cA2Ba,SAAA,YACX,MAAA,EAAQ,MAAA,CAAO,MAAA,CAAO,CAAA,EAAG,CAAA,EAAG,CAAA,MAC3B,MAAA,CAAO,MAAA,CAAO,KAAA,CAAM,CAAA,UAAW,CAAA,EAAG,CAAA;;;;;;;;;cAWxB,aAAA,kBACX,MAAA,EAAQ,MAAA,CAAO,MAAA,CAAO,CAAA,EAAG,CAAA,EAAG,CAAA,GAC5B,OAAA,EAAS,CAAA,EACT,MAAA,GAAS,GAAA,EAAK,CAAA,EAAG,CAAA,EAAG,CAAA,KAAM,CAAA,EAC1B,KAAA,GAAQ,CAAA,EAAG,CAAA,KAAM,CAAA,KAChB,MAAA,CAAO,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA;;AA1CjC;;;;;AAOA;;;;;;;;;cAqEa,mBAAA,iCAET,IAAA,GAAO,IAAA,EAAM,IAAA,KAAS,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,CAAA,GAAI,EAAA,EAAI,EAAA,GAAK,EAAA,EAAI,EAAA,aAG5E,MAAA,EAAQ,MAAA,CAAO,MAAA,CAAO,SAAA,EAAW,CAAA,EAAG,CAAA,MACnC,MAAA,CAAO,MAAA,CAAO,KAAA,CAAM,SAAA,GAAY,CAAA,EAAG,CAAA,GAAI,CAAA,GAAI,EAAA,GAAK,cAAA,EAAgB,CAAA,GAAI,EAAA;AAAA,KAkEpE,QAAA,gBACH,KAAA,EAAO,CAAA,KACJ,MAAA,CAAO,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA,IAAK,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA;;;;;;;;;;cAW9E,IAAA;EAAA,aACE,IAAA,EAAM,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,KAAM,OAAA,EAAS,CAAA,KAAM,MAAA,CAAO,MAAA,CAAO,CAAA,EAAG,CAAA,EAAG,CAAA;EAAA,aACjE,OAAA,EAAS,CAAA,EAAG,IAAA,EAAM,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,IAAK,MAAA,CAAO,MAAA,CAAO,CAAA,EAAG,CAAA,EAAG,CAAA;AAAA"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { o as FunctionCall, s as FunctionCallOutput } from "./Items-D1C2686t.mjs";
|
|
2
|
-
|
|
3
|
-
//#region src/tool/Outcome.d.ts
|
|
4
|
-
type ToolResult = {
|
|
5
|
-
readonly _tag: "Value";
|
|
6
|
-
readonly call_id: string;
|
|
7
|
-
readonly tool: string;
|
|
8
|
-
readonly value: unknown;
|
|
9
|
-
} | {
|
|
10
|
-
readonly _tag: "Failure";
|
|
11
|
-
readonly call_id: string;
|
|
12
|
-
readonly tool: string;
|
|
13
|
-
readonly kind: string;
|
|
14
|
-
readonly reason?: string;
|
|
15
|
-
};
|
|
16
|
-
declare const isValue: (r: ToolResult) => r is Extract<ToolResult, {
|
|
17
|
-
_tag: "Value";
|
|
18
|
-
}>;
|
|
19
|
-
declare const isFailure: (r: ToolResult) => r is Extract<ToolResult, {
|
|
20
|
-
_tag: "Failure";
|
|
21
|
-
}>;
|
|
22
|
-
type ToolDecision = {
|
|
23
|
-
readonly _tag: "Execute";
|
|
24
|
-
} | {
|
|
25
|
-
readonly _tag: "Reject";
|
|
26
|
-
readonly result: ToolResult;
|
|
27
|
-
};
|
|
28
|
-
declare const execute: ToolDecision;
|
|
29
|
-
declare const reject: (result: ToolResult) => ToolDecision;
|
|
30
|
-
declare const rejected: (call: FunctionCall, kind: string, reason?: string) => ToolResult;
|
|
31
|
-
/** Explicit user/policy rejection. */
|
|
32
|
-
declare const denied: (call: FunctionCall, reason?: string) => ToolResult;
|
|
33
|
-
/** Implicit non-answer (follow-up, inactivity, abort). */
|
|
34
|
-
declare const cancelled: (call: FunctionCall, reason?: string) => ToolResult;
|
|
35
|
-
/** Tool's own execution failed (parse error, schema, runtime crash). */
|
|
36
|
-
declare const executionError: (call: FunctionCall, reason: string) => ToolResult;
|
|
37
|
-
declare const toFunctionCallOutput: (r: ToolResult) => FunctionCallOutput;
|
|
38
|
-
//#endregion
|
|
39
|
-
export { execute as a, isValue as c, toFunctionCallOutput as d, denied as i, reject as l, ToolResult as n, executionError as o, cancelled as r, isFailure as s, ToolDecision as t, rejected as u };
|
|
40
|
-
//# sourceMappingURL=Outcome-C2JYknCu.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Outcome-C2JYknCu.d.mts","names":[],"sources":["../src/tool/Outcome.ts"],"mappings":";;;KAsBY,UAAA;EAAA,SAEG,IAAA;EAAA,SACA,OAAA;EAAA,SACA,IAAA;EAAA,SACA,KAAA;AAAA;EAAA,SAGA,IAAA;EAAA,SACA,OAAA;EAAA,SACA,IAAA;EAAA,SACA,IAAA;EAAA,SACA,MAAA;AAAA;AAAA,cAGF,OAAA,GAAW,CAAA,EAAG,UAAA,KAAa,CAAA,IAAK,OAAA,CAAQ,UAAA;EAAc,IAAA;AAAA;AAAA,cAGtD,SAAA,GAAa,CAAA,EAAG,UAAA,KAAa,CAAA,IAAK,OAAA,CAAQ,UAAA;EAAc,IAAA;AAAA;AAAA,KAOzD,YAAA;EAAA,SACG,IAAA;AAAA;EAAA,SACA,IAAA;EAAA,SAAyB,MAAA,EAAQ,UAAA;AAAA;AAAA,cAEnC,OAAA,EAAS,YAAA;AAAA,cAET,MAAA,GAAU,MAAA,EAAQ,UAAA,KAAa,YAAA;AAAA,cAO/B,QAAA,GACX,IAAA,EAAM,YAAA,EACN,IAAA,UACA,MAAA,cACC,UAAA;;cASU,MAAA,GAAU,IAAA,EAAM,YAAA,EAAc,MAAA,cAAkB,UAAA;;cAIhD,SAAA,GAAa,IAAA,EAAM,YAAA,EAAc,MAAA,cAAkB,UAAA;;cAInD,cAAA,GAAkB,IAAA,EAAM,YAAA,EAAc,MAAA,aAAiB,UAAA;AAAA,cAOvD,oBAAA,GAAwB,CAAA,EAAG,UAAA,KAAa,kBAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StructuredFormat-B5ueioNr.d.mts","names":[],"sources":["../src/structured-format/StructuredFormat.ts"],"mappings":";;;;;;;;;;;;;;;KAaY,gBAAA,qBAAqC,gBAAA,UAA0B,MAAA,IACzE,oBAAA,UAA8B,MAAA;;;;;;UAOf,gBAAA;EAAA,SACN,IAAA;EAAA,SACA,WAAA;EAAA,SACA,MAAA,EAAQ,gBAAA,CAAiB,CAAA;EAXxB;;;;EAAA,SAgBD,MAAA;AAAA;;UAIM,WAAA;EAAA,SACN,IAAA,EAAM,aAAA;EAAA,SACN,OAAA;AAAA;AAAA,cACV,0BAAA;;;;;AAfD;;cAyBa,qBAAA,SAA8B,0BAAA;EAAA,SAChC,GAAA;EAAA,SACA,MAAA,EAAQ,aAAA,CAAc,WAAA;AAAA;AAAA,cAC5B,mBAAA;;;;;;AAhBL;cAsBa,cAAA,SAAuB,mBAAA;EAAA,SACzB,GAAA;EAAA,SACA,KAAA;AAAA;;;;AArBV;;cAiCY,gBAAA,aAA8B,MAAA,CAAO,KAAA,wBAChD,MAAA,EAAQ,CAAA,EACR,OAAA;EAAA,SACW,IAAA;EAAA,SACA,WAAA;EAAA,SACA,MAAA;AAAA,MAEV,gBAAA,CAAiB,CAAA;;;;;;cAyCP,MAAA,MACP,MAAA,EAAQ,gBAAA,CAAiB,CAAA,OAC5B,GAAA,cAAe,MAAA,CAAO,MAAA,CAAO,CAAA,EAAG,qBAAA;;;;;;cAoBtB,SAAA,MACP,MAAA,EAAQ,gBAAA,CAAiB,CAAA,OAC5B,GAAA,aAAc,MAAA,CAAO,MAAA,CAAO,CAAA,EAAG,cAAA,GAAiB,qBAAA;;;;;cAatC,eAAA,MACP,MAAA,EAAQ,gBAAA,CAAiB,CAAA,aAE3B,IAAA,EAAM,MAAA,CAAO,MAAA,SAAe,CAAA,EAAG,CAAA,MAC9B,MAAA,CAAO,MAAA,CAAO,CAAA,EAAG,CAAA,GAAI,cAAA,GAAiB,qBAAA,EAAuB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Tool-5wxOCuOh.d.mts","names":[],"sources":["../src/tool/Tool.ts"],"mappings":";;;;;;;;;cAE0E,cAAA;;;;;;cAG7D,SAAA,SAAkB,cAAA;;;;;;;;;;KAmBnB,eAAA,oBAAmC,gBAAA,UAA0B,KAAA,IACvE,oBAAA,UAA8B,KAAA;;;AAvB0C;;;cA8B7D,gBAAA,aAA8B,MAAA,CAAO,KAAA,wBAChD,MAAA,EAAQ,CAAA,KACP,CAAA,GAAI,eAAA,CAAgB,CAAA;AAAA,UAIN,IAAA;EAAA,SACN,IAAA,EAAM,IAAA;EAAA,SACN,WAAA;EAAA,SACA,WAAA,EAAa,eAAA,CAAgB,KAAA;EAAA,SAC7B,GAAA,GAAM,KAAA,EAAO,KAAA,KAAU,MAAA,CAAO,MAAA,CAAO,MAAA,WAAiB,CAAA;;;;;;;WAOtD,MAAA;AAAA;;;;;;UAQM,cAAA;EAAA,SACN,IAAA;EAAA,SACA,WAAA;EAAA,SACA,WAAA,EAAa,MAAA;EAAA,SACb,MAAA;AAAA;AAAA,cAGE,IAAA,kDACX,IAAA,EAAM,IAAA,CAAK,IAAA,EAAM,KAAA,EAAO,MAAA,EAAQ,CAAA,MAC/B,IAAA,CAAK,IAAA,EAAM,KAAA,EAAO,MAAA,EAAQ,CAAA;AAAA,UAWZ,aAAA;EAAA,SACN,KAAA;EAAA,SACA,IAAA,EAAM,IAAA;EAAA,SACN,WAAA;EAAA,SACA,WAAA,EAAa,eAAA,CAAgB,KAAA;EAAA,SAC7B,GAAA,GAAM,KAAA,EAAO,KAAA,KAAU,MAAA,CAAO,MAAA,CAAO,KAAA,WAAgB,CAAA;EAAA,SACrD,QAAA,GAAW,MAAA,EAAQ,aAAA,CAAc,KAAA,MAAW,MAAA;EAAA,SAC5C,MAAA;AAAA;AAAA,cAGE,SAAA,yDACX,IAAA,EAAM,IAAA,CAAK,aAAA,CAAc,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,MAAA,EAAQ,CAAA,gBACpD,aAAA,CAAc,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,MAAA,EAAQ,CAAA;AAAA,KAEjC,gBAAA,GAAmB,aAAA;AAAA,KACnB,YAAA,GAAe,IAAA;AAAA,KACf,WAAA,GAAc,gBAAA,GAAmB,YAAA;AAAA,cAEhC,eAAA,GAAmB,CAAA,EAAG,WAAA,KAAc,CAAA,IAAK,gBAAA;;;;;;cAQzC,aAAA,GACX,KAAA,EAAO,aAAA,CAAc,WAAA,MACpB,aAAA,CAAc,cAAA;;;;;;cAkBJ,OAAA,0CACX,IAAA,EAAM,IAAA,CAAK,IAAA,EAAM,KAAA,EAAO,MAAA,EAAQ,CAAA,GAChC,IAAA,EAAM,YAAA,KACL,MAAA,CAAO,MAAA,CAAO,kBAAA,EAAoB,SAAA,EAAW,CAAA"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { n as ToolResult } from "./Outcome-C2JYknCu.mjs";
|
|
2
|
-
|
|
3
|
-
//#region src/tool/ToolEvent.d.ts
|
|
4
|
-
type ToolEvent = {
|
|
5
|
-
readonly _tag: "ApprovalRequested";
|
|
6
|
-
readonly call_id: string;
|
|
7
|
-
readonly tool: string;
|
|
8
|
-
readonly arguments: string;
|
|
9
|
-
} | {
|
|
10
|
-
readonly _tag: "Intermediate";
|
|
11
|
-
readonly call_id: string;
|
|
12
|
-
readonly tool: string;
|
|
13
|
-
readonly data: unknown;
|
|
14
|
-
} | {
|
|
15
|
-
readonly _tag: "Output";
|
|
16
|
-
readonly result: ToolResult;
|
|
17
|
-
};
|
|
18
|
-
declare const isApprovalRequested: (e: ToolEvent) => e is Extract<ToolEvent, {
|
|
19
|
-
_tag: "ApprovalRequested";
|
|
20
|
-
}>;
|
|
21
|
-
declare const isIntermediate: (e: ToolEvent) => e is Extract<ToolEvent, {
|
|
22
|
-
_tag: "Intermediate";
|
|
23
|
-
}>;
|
|
24
|
-
declare const isOutput: (e: ToolEvent) => e is Extract<ToolEvent, {
|
|
25
|
-
_tag: "Output";
|
|
26
|
-
}>;
|
|
27
|
-
//#endregion
|
|
28
|
-
export { isOutput as i, isApprovalRequested as n, isIntermediate as r, ToolEvent as t };
|
|
29
|
-
//# sourceMappingURL=ToolEvent-B2N10hr3.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ToolEvent-B2N10hr3.d.mts","names":[],"sources":["../src/tool/ToolEvent.ts"],"mappings":";;;KAYY,SAAA;EAAA,SAEG,IAAA;EAAA,SACA,OAAA;EAAA,SACA,IAAA;EAAA,SACA,SAAA;AAAA;EAAA,SAGA,IAAA;EAAA,SACA,OAAA;EAAA,SACA,IAAA;EAAA,SACA,IAAA;AAAA;EAAA,SAEA,IAAA;EAAA,SAAyB,MAAA,EAAQ,UAAA;AAAA;AAAA,cAEnC,mBAAA,GACX,CAAA,EAAG,SAAA,KACF,CAAA,IAAK,OAAA,CAAQ,SAAA;EAAa,IAAA;AAAA;AAAA,cAEhB,cAAA,GACX,CAAA,EAAG,SAAA,KACF,CAAA,IAAK,OAAA,CAAQ,SAAA;EAAa,IAAA;AAAA;AAAA,cAEhB,QAAA,GAAY,CAAA,EAAG,SAAA,KAAY,CAAA,IAAK,OAAA,CAAQ,SAAA;EAAa,IAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Turn-rlTfuHaQ.d.mts","names":[],"sources":["../src/domain/Turn.ts"],"mappings":";;;;;;;;;;;;;;;cAmBa,IAAA,EAAI,MAAA,CAAA,MAAA;EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAKL,IAAA,UAAc,IAAA,CAAK,IAAA;;;;;;;KAQnB,SAAA;EAAA,SACG,IAAA;EAAA,SAA6B,IAAA;AAAA;EAAA,SAE7B,IAAA;EAAA,SACA,IAAA;;;;;;;;WAQA,IAAA;AAAA;;;;;;;;;WASA,IAAA;EAAA,SAAgC,IAAA;AAAA;EAAA,SAChC,IAAA;EAAA,SAAkC,OAAA;EAAA,SAA0B,IAAA;AAAA;EAAA,SAC5D,IAAA;EAAA,SAAuC,OAAA;EAAA,SAA0B,KAAA;AAAA;;;;;;;;;;WASjE,IAAA;EAAA,SAA+B,KAAA,EAAO,KAAA;AAAA;EAAA,SACtC,IAAA;EAAA,SAAgC,IAAA,EAAM,IAAA;AAAA;;;;;;;KAQzC,gBAAA,GAAmB,SAAA,GAAY,kBAAA;AAAA,cAE9B,cAAA,GAAkB,CAAA,EAAG,SAAA,KAAY,CAAA,IAAK,OAAA,CAAQ,SAAA;EAAa,IAAA;AAAA;AAAA,cAG3D,aAAA,GAAiB,IAAA,EAAM,IAAA,KAAO,aAAA,CAAc,YAAA;AAAA,cAG5C,UAAA,GAAc,IAAA,EAAM,IAAA,KAAO,aAAA,CAAc,SAAA;AAAA,cAGzC,iBAAA,GAAqB,IAAA,EAAM,IAAA,KAAO,aAAA,CAAc,OAAA;;;;;;;;;;KAYjD,MAAA,MAAY,CAAA;EAAA,SAAe,IAAA,EAAM,IAAA;AAAA;;;;;cAMhC,MAAA;EAAA,SAA+B,OAAA,EAAS,aAAA,CAAc,IAAA;AAAA,GACjE,KAAA,EAAO,CAAA,EACP,IAAA,EAAM,IAAA,KACL,MAAA,CAAO,CAAA;;;;;;cAeG,UAAA,SACX,IAAA,EAAM,MAAA,CAAO,MAAA,CAAO,SAAA,EAAW,CAAA,EAAG,CAAA,MACjC,MAAA,CAAO,MAAA,SAAe,CAAA,EAAG,CAAA;AAAA,cAKzB,oBAAA;;;;;;;;cAWU,eAAA,SAAwB,oBAAA;EAAA,SAC1B,IAAA,EAAM,IAAA;AAAA;;;;;;;;;;;cAyBJ,YAAA,MACX,IAAA,EAAM,IAAA,EACN,MAAA,EAAQ,gBAAA,CAAkC,CAAA,MACzC,MAAA,CAAO,MAAA,CACR,CAAA,EACA,eAAA,GAAkB,cAAA,GAAkC,qBAAA"}
|
package/dist/match/Match.d.mts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { Match } from "effect";
|
|
2
|
-
|
|
3
|
-
//#region src/match/Match.d.ts
|
|
4
|
-
declare namespace Match_d_exports {
|
|
5
|
-
export { matchType };
|
|
6
|
-
}
|
|
7
|
-
/**
|
|
8
|
-
* Dispatch on the `type` discriminator of a tagged union. Equivalent to
|
|
9
|
-
* `Match.discriminator("type")`, exposed as a named helper because the
|
|
10
|
-
* `type` field is the framework's convention for `Item`, `TurnEvent`,
|
|
11
|
-
* `ContentBlock`, and most provider wire types.
|
|
12
|
-
*/
|
|
13
|
-
declare const matchType: <R, P extends Match.Types.Tags<"type", R> & string, Ret, Fn extends (_: Extract<R, Record<"type", P>>) => Ret>(...pattern: [first: P, ...values: P[], f: Fn]) => <I, F, A, Pr>(self: Match.Matcher<I, F, R, A, Pr, Ret>) => Match.Matcher<I, Match.Types.AddWithout<F, Extract<R, Record<"type", P>>>, Match.Types.ApplyFilters<I, Match.Types.AddWithout<F, Extract<R, Record<"type", P>>>>, A | ReturnType<Fn>, Pr, Ret>;
|
|
14
|
-
//#endregion
|
|
15
|
-
export { matchType, Match_d_exports as t };
|
|
16
|
-
//# sourceMappingURL=Match.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Match.d.mts","names":[],"sources":["../../src/match/Match.ts"],"mappings":";;;;;;;;;;AAQA;;cAAa,SAAA,gBAAS,KAAA,CAAA,KAAA,CAAA,IAAA,SAAA,CAAA,6BAAA,CAAA,EAAA,OAAA,CAAA,CAAA,EAAA,MAAA,SAAA,CAAA,OAAA,GAAA,KAAA,OAAA,GAAA,KAAA,EAAA,CAAA,KAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,oBAAA,IAAA,EAAA,KAAA,CAAA,OAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,EAAA,GAAA,MAAA,KAAA,CAAA,OAAA,CAAA,CAAA,EAAA,KAAA,CAAA,KAAA,CAAA,UAAA,CAAA,CAAA,EAAA,OAAA,CAAA,CAAA,EAAA,MAAA,SAAA,CAAA,KAAA,KAAA,CAAA,KAAA,CAAA,YAAA,CAAA,CAAA,EAAA,KAAA,CAAA,KAAA,CAAA,UAAA,CAAA,CAAA,EAAA,OAAA,CAAA,CAAA,EAAA,MAAA,SAAA,CAAA,MAAA,CAAA,GAAA,UAAA,CAAA,EAAA,GAAA,EAAA,EAAA,GAAA"}
|
package/dist/match/Match.mjs
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { t as __exportAll } from "../chunk-CfYAbeIz.mjs";
|
|
2
|
-
import { Match } from "effect";
|
|
3
|
-
//#region src/match/Match.ts
|
|
4
|
-
var Match_exports = /* @__PURE__ */ __exportAll({ matchType: () => matchType });
|
|
5
|
-
/**
|
|
6
|
-
* Dispatch on the `type` discriminator of a tagged union. Equivalent to
|
|
7
|
-
* `Match.discriminator("type")`, exposed as a named helper because the
|
|
8
|
-
* `type` field is the framework's convention for `Item`, `TurnEvent`,
|
|
9
|
-
* `ContentBlock`, and most provider wire types.
|
|
10
|
-
*/
|
|
11
|
-
const matchType = Match.discriminator("type");
|
|
12
|
-
//#endregion
|
|
13
|
-
export { matchType, Match_exports as t };
|
|
14
|
-
|
|
15
|
-
//# sourceMappingURL=Match.mjs.map
|
package/dist/match/Match.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Match.mjs","names":[],"sources":["../../src/match/Match.ts"],"sourcesContent":["import { Match } from \"effect\"\n\n/**\n * Dispatch on the `type` discriminator of a tagged union. Equivalent to\n * `Match.discriminator(\"type\")`, exposed as a named helper because the\n * `type` field is the framework's convention for `Item`, `TurnEvent`,\n * `ContentBlock`, and most provider wire types.\n */\nexport const matchType = Match.discriminator(\"type\")\n"],"mappings":";;;;;;;;;;AAQA,MAAa,YAAY,MAAM,cAAc,OAAO"}
|
package/src/match/Match.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { Match } from "effect"
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Dispatch on the `type` discriminator of a tagged union. Equivalent to
|
|
5
|
-
* `Match.discriminator("type")`, exposed as a named helper because the
|
|
6
|
-
* `type` field is the framework's convention for `Item`, `TurnEvent`,
|
|
7
|
-
* `ContentBlock`, and most provider wire types.
|
|
8
|
-
*/
|
|
9
|
-
export const matchType = Match.discriminator("type")
|