liminal 0.5.12 → 0.5.14
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/CHANGELOG.md +12 -0
- package/Config.ts +13 -0
- package/Context.ts +23 -49
- package/Definition.ts +32 -0
- package/EventBase.ts +1 -1
- package/Handler.ts +3 -5
- package/L/L.ts +15 -2
- package/L/all.ts +35 -0
- package/L/assistant.ts +4 -7
- package/L/catch.ts +16 -13
- package/L/context.ts +12 -0
- package/L/continuation.ts +13 -0
- package/L/emit.ts +10 -8
- package/L/infer.ts +22 -25
- package/L/message.ts +7 -9
- package/L/model.ts +6 -6
- package/L/reflect.ts +12 -0
- package/L/run.ts +29 -0
- package/L/schema/_schema_common.ts +29 -0
- package/L/schema/anyOf.ts +10 -0
- package/L/schema/array.ts +13 -0
- package/L/schema/boolean.ts +8 -0
- package/L/schema/const.ts +18 -0
- package/L/schema/enum.ts +18 -0
- package/L/schema/integer.ts +6 -0
- package/L/schema/null.ts +8 -0
- package/L/schema/number.ts +8 -0
- package/L/schema/object.ts +21 -0
- package/L/schema/string.ts +11 -0
- package/L/strand.ts +14 -71
- package/L/stream.ts +11 -24
- package/L/system.ts +13 -8
- package/L/user.ts +13 -8
- package/LEvent.ts +9 -17
- package/LiminalAssertionError.ts +19 -0
- package/Message.ts +3 -2
- package/Model.ts +5 -3
- package/ModelRegistry.ts +1 -7
- package/Rune.test.ts +5 -0
- package/Rune.ts +24 -12
- package/Schema.ts +185 -0
- package/Strand.ts +253 -0
- package/Tool.ts +8 -16
- package/TypeAdapter.ts +3 -0
- package/dist/Config.d.ts +12 -0
- package/dist/Config.js +2 -0
- package/dist/Config.js.map +1 -0
- package/dist/Context.d.ts +11 -12
- package/dist/Context.js +15 -42
- package/dist/Context.js.map +1 -1
- package/dist/Definition.d.ts +10 -0
- package/dist/Definition.js +18 -0
- package/dist/Definition.js.map +1 -0
- package/dist/EventBase.js +1 -1
- package/dist/EventBase.js.map +1 -1
- package/dist/Handler.d.ts +3 -4
- package/dist/Handler.js +1 -2
- package/dist/Handler.js.map +1 -1
- package/dist/L/L.d.ts +15 -2
- package/dist/L/L.js +15 -2
- package/dist/L/L.js.map +1 -1
- package/dist/L/all.d.ts +10 -0
- package/dist/L/all.js +20 -0
- package/dist/L/all.js.map +1 -0
- package/dist/L/assistant.d.ts +2 -2
- package/dist/L/assistant.js +3 -6
- package/dist/L/assistant.js.map +1 -1
- package/dist/L/catch.d.ts +3 -2
- package/dist/L/catch.js +12 -12
- package/dist/L/catch.js.map +1 -1
- package/dist/L/context.d.ts +2 -0
- package/dist/L/context.js +12 -0
- package/dist/L/context.js.map +1 -0
- package/dist/L/continuation.d.ts +3 -0
- package/dist/L/continuation.js +12 -0
- package/dist/L/continuation.js.map +1 -0
- package/dist/L/emit.d.ts +3 -5
- package/dist/L/emit.js +8 -3
- package/dist/L/emit.js.map +1 -1
- package/dist/L/infer.d.ts +2 -5
- package/dist/L/infer.js +21 -20
- package/dist/L/infer.js.map +1 -1
- package/dist/L/message.d.ts +3 -5
- package/dist/L/message.js +5 -5
- package/dist/L/message.js.map +1 -1
- package/dist/L/model.d.ts +2 -4
- package/dist/L/model.js +4 -3
- package/dist/L/model.js.map +1 -1
- package/dist/L/reflect.d.ts +4 -0
- package/dist/L/reflect.js +10 -0
- package/dist/L/reflect.js.map +1 -0
- package/dist/L/run.d.ts +15 -0
- package/dist/L/run.js +16 -0
- package/dist/L/run.js.map +1 -0
- package/dist/L/schema/_schema_common.d.ts +6 -0
- package/dist/L/schema/_schema_common.js +19 -0
- package/dist/L/schema/_schema_common.js.map +1 -0
- package/dist/L/schema/anyOf.d.ts +5 -0
- package/dist/L/schema/anyOf.js +5 -0
- package/dist/L/schema/anyOf.js.map +1 -0
- package/dist/L/schema/array.d.ts +5 -0
- package/dist/L/schema/array.js +8 -0
- package/dist/L/schema/array.js.map +1 -0
- package/dist/L/schema/boolean.d.ts +6 -0
- package/dist/L/schema/boolean.js +4 -0
- package/dist/L/schema/boolean.js.map +1 -0
- package/dist/L/schema/const.d.ts +8 -0
- package/dist/L/schema/const.js +10 -0
- package/dist/L/schema/const.js.map +1 -0
- package/dist/L/schema/enum.d.ts +8 -0
- package/dist/L/schema/enum.js +10 -0
- package/dist/L/schema/enum.js.map +1 -0
- package/dist/L/schema/integer.d.ts +5 -0
- package/dist/L/schema/integer.js +3 -0
- package/dist/L/schema/integer.js.map +1 -0
- package/dist/L/schema/null.d.ts +6 -0
- package/dist/L/schema/null.js +4 -0
- package/dist/L/schema/null.js.map +1 -0
- package/dist/L/schema/number.d.ts +6 -0
- package/dist/L/schema/number.js +4 -0
- package/dist/L/schema/number.js.map +1 -0
- package/dist/L/schema/object.d.ts +9 -0
- package/dist/L/schema/object.js +12 -0
- package/dist/L/schema/object.js.map +1 -0
- package/dist/L/schema/string.d.ts +8 -0
- package/dist/L/schema/string.js +4 -0
- package/dist/L/schema/string.js.map +1 -0
- package/dist/L/strand.d.ts +4 -15
- package/dist/L/strand.js +8 -53
- package/dist/L/strand.js.map +1 -1
- package/dist/L/stream.d.ts +2 -4
- package/dist/L/stream.js +8 -19
- package/dist/L/stream.js.map +1 -1
- package/dist/L/system.d.ts +2 -4
- package/dist/L/system.js +4 -3
- package/dist/L/system.js.map +1 -1
- package/dist/L/user.d.ts +2 -4
- package/dist/L/user.js +4 -3
- package/dist/L/user.js.map +1 -1
- package/dist/LEvent.d.ts +13 -41
- package/dist/LEvent.js +4 -15
- package/dist/LEvent.js.map +1 -1
- package/dist/LiminalAssertionError.d.ts +8 -0
- package/dist/LiminalAssertionError.js +20 -0
- package/dist/LiminalAssertionError.js.map +1 -0
- package/dist/Message.d.ts +3 -2
- package/dist/Model.d.ts +4 -2
- package/dist/Model.js +1 -1
- package/dist/Model.js.map +1 -1
- package/dist/ModelRegistry.d.ts +0 -2
- package/dist/ModelRegistry.js +0 -2
- package/dist/ModelRegistry.js.map +1 -1
- package/dist/Rune.d.ts +19 -7
- package/dist/Rune.js +8 -4
- package/dist/Rune.js.map +1 -1
- package/dist/Rune.test.d.ts +1 -0
- package/dist/Rune.test.js +5 -0
- package/dist/Rune.test.js.map +1 -0
- package/dist/Schema.d.ts +46 -0
- package/dist/Schema.js +130 -0
- package/dist/Schema.js.map +1 -0
- package/dist/Strand.d.ts +57 -0
- package/dist/Strand.js +177 -0
- package/dist/Strand.js.map +1 -0
- package/dist/Tool.d.ts +6 -5
- package/dist/Tool.js +3 -4
- package/dist/Tool.js.map +1 -1
- package/dist/TypeAdapter.d.ts +1 -0
- package/dist/TypeAdapter.js +3 -0
- package/dist/TypeAdapter.js.map +1 -0
- package/dist/errors.d.ts +9 -0
- package/dist/errors.js +11 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +6 -5
- package/dist/index.js +6 -5
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/util/EnsureNarrow.d.ts +1 -0
- package/dist/util/EnsureNarrow.js +2 -0
- package/dist/util/EnsureNarrow.js.map +1 -0
- package/dist/util/JSONValue.d.ts +8 -0
- package/dist/util/JSONValue.js +20 -0
- package/dist/util/JSONValue.js.map +1 -0
- package/dist/util/attachCustomInspect.d.ts +1 -0
- package/dist/util/attachCustomInspect.js +11 -0
- package/dist/util/attachCustomInspect.js.map +1 -0
- package/dist/util/isTemplateStringsArray.d.ts +1 -0
- package/dist/util/isTemplateStringsArray.js +4 -0
- package/dist/util/isTemplateStringsArray.js.map +1 -0
- package/errors.ts +12 -0
- package/index.ts +6 -5
- package/package.json +3 -10
- package/tsconfig.json +1 -5
- package/util/EnsureNarrow.ts +1 -0
- package/util/JSONValue.ts +20 -0
- package/util/attachCustomInspect.ts +14 -0
- package/util/isTemplateStringsArray.ts +3 -0
- package/Fiber.ts +0 -123
- package/L/_common.ts +0 -6
- package/L/rune.ts +0 -12
- package/MessageRegistry.ts +0 -22
- package/Runic.ts +0 -30
- package/StrandConfig.ts +0 -12
- package/ToolRegistry.ts +0 -10
- package/dist/Fiber.d.ts +0 -35
- package/dist/Fiber.js +0 -95
- package/dist/Fiber.js.map +0 -1
- package/dist/L/_common.d.ts +0 -4
- package/dist/L/_common.js +0 -7
- package/dist/L/_common.js.map +0 -1
- package/dist/L/rune.d.ts +0 -3
- package/dist/L/rune.js +0 -9
- package/dist/L/rune.js.map +0 -1
- package/dist/MessageRegistry.d.ts +0 -9
- package/dist/MessageRegistry.js +0 -15
- package/dist/MessageRegistry.js.map +0 -1
- package/dist/Runic.d.ts +0 -9
- package/dist/Runic.js +0 -18
- package/dist/Runic.js.map +0 -1
- package/dist/StrandConfig.d.ts +0 -11
- package/dist/StrandConfig.js +0 -2
- package/dist/StrandConfig.js.map +0 -1
- package/dist/ToolRegistry.d.ts +0 -6
- package/dist/ToolRegistry.js +0 -8
- package/dist/ToolRegistry.js.map +0 -1
package/Strand.ts
ADDED
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import { Context } from "./Context.ts"
|
|
2
|
+
import { Definition } from "./Definition.ts"
|
|
3
|
+
import { StrandRejectedError } from "./errors.ts"
|
|
4
|
+
import { continuation } from "./L/continuation.ts"
|
|
5
|
+
import { StrandStatusChanged } from "./LEvent.ts"
|
|
6
|
+
import type { Rune } from "./Rune.ts"
|
|
7
|
+
import { attachCustomInspect } from "./util/attachCustomInspect.ts"
|
|
8
|
+
|
|
9
|
+
export interface StrandConfig {
|
|
10
|
+
parent?: Strand | undefined
|
|
11
|
+
context?: Context | undefined
|
|
12
|
+
signal?: AbortSignal | undefined
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
let nextIndex: number = 0
|
|
16
|
+
|
|
17
|
+
export class Strand<Y extends Rune<any> = Rune<any>, T = any> implements Iterable<Y, T>, PromiseLike<T> {
|
|
18
|
+
declare T: T
|
|
19
|
+
declare Y: Y
|
|
20
|
+
|
|
21
|
+
readonly #controller: AbortController = new AbortController()
|
|
22
|
+
readonly signal: AbortSignal = this.#controller.signal
|
|
23
|
+
#handle?: ((this: Strand, event: any) => void) | undefined
|
|
24
|
+
#definition: Definition<Y, T>
|
|
25
|
+
status: StrandStatus<T> = { type: "untouched" }
|
|
26
|
+
readonly index: number = nextIndex++
|
|
27
|
+
readonly depth: number
|
|
28
|
+
declare readonly parent?: Strand
|
|
29
|
+
readonly context: Context
|
|
30
|
+
|
|
31
|
+
constructor(definition: Definition<Y, T>, config: StrandConfig) {
|
|
32
|
+
this.#definition = definition
|
|
33
|
+
this.depth = (config?.parent?.depth ?? -1) + 1
|
|
34
|
+
const { parent, context, signal: configSignal } = config ?? {}
|
|
35
|
+
if (parent) {
|
|
36
|
+
this.parent = parent
|
|
37
|
+
this.#attachSignal(parent.signal, () => ({
|
|
38
|
+
type: "parent_aborted",
|
|
39
|
+
reason: parent.signal.reason,
|
|
40
|
+
}))
|
|
41
|
+
}
|
|
42
|
+
if (configSignal) {
|
|
43
|
+
this.#attachSignal(configSignal, () => ({
|
|
44
|
+
type: "config_signal_aborted",
|
|
45
|
+
reason: configSignal.reason,
|
|
46
|
+
}))
|
|
47
|
+
}
|
|
48
|
+
if (context) {
|
|
49
|
+
this.context = context
|
|
50
|
+
const { handler } = context
|
|
51
|
+
if (handler) {
|
|
52
|
+
this.#handle = (function(this: Strand, event: any) {
|
|
53
|
+
try {
|
|
54
|
+
handler.call(this, event)
|
|
55
|
+
} catch (exception) {
|
|
56
|
+
this.#setTerminalStatus({
|
|
57
|
+
type: "handler_exception_thrown",
|
|
58
|
+
exception,
|
|
59
|
+
})
|
|
60
|
+
}
|
|
61
|
+
}).bind(this)
|
|
62
|
+
this.#handle(new StrandStatusChanged(this.status))
|
|
63
|
+
}
|
|
64
|
+
} else {
|
|
65
|
+
this.context = Context()
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
#setStatus(status: StrandStatus<T>): void {
|
|
70
|
+
this.status = status
|
|
71
|
+
this.#handle?.(new StrandStatusChanged(this.status))
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
#setTerminalStatus = (status: StrandStatus.Rejected | StrandStatus.Resolved<T>): void => {
|
|
75
|
+
this.#setStatus(status)
|
|
76
|
+
this.#controller.abort(this.status)
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
#attachSignal(
|
|
80
|
+
signal: AbortSignal,
|
|
81
|
+
getStatus: () => StrandStatus.Rejected.ConfigSignalAborted | StrandStatus.Rejected.ParentAborted,
|
|
82
|
+
): void {
|
|
83
|
+
const f = () => {
|
|
84
|
+
this.#setTerminalStatus(getStatus())
|
|
85
|
+
}
|
|
86
|
+
if (signal.aborted) {
|
|
87
|
+
return f()
|
|
88
|
+
}
|
|
89
|
+
signal.addEventListener("abort", f, { once: true })
|
|
90
|
+
this.#controller.signal.addEventListener(
|
|
91
|
+
"abort",
|
|
92
|
+
() => {
|
|
93
|
+
signal.removeEventListener("abort", f)
|
|
94
|
+
},
|
|
95
|
+
{ once: true },
|
|
96
|
+
)
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
then<TResult1 = T, TResult2 = never>(
|
|
100
|
+
onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null,
|
|
101
|
+
onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null,
|
|
102
|
+
): PromiseLike<TResult1 | TResult2> {
|
|
103
|
+
if (this.status.type !== "untouched") {
|
|
104
|
+
return this.#replay(this.status).then(onfulfilled, onrejected)
|
|
105
|
+
}
|
|
106
|
+
let resolve: (value: T) => void = undefined!
|
|
107
|
+
let reject: (reason?: unknown) => void = undefined!
|
|
108
|
+
const promise = new Promise<T>((resolve_, reject_) => {
|
|
109
|
+
resolve = resolve_
|
|
110
|
+
reject = reject_
|
|
111
|
+
})
|
|
112
|
+
this.status = {
|
|
113
|
+
type: "pending",
|
|
114
|
+
promise,
|
|
115
|
+
resolve,
|
|
116
|
+
reject,
|
|
117
|
+
}
|
|
118
|
+
this.#handle?.(new StrandStatusChanged(this.status))
|
|
119
|
+
const iterator = Definition.unwrap(this.#definition)
|
|
120
|
+
let nextArg: unknown
|
|
121
|
+
queueMicrotask(async () => {
|
|
122
|
+
try {
|
|
123
|
+
let current = await iterator.next()
|
|
124
|
+
while (!current.done) {
|
|
125
|
+
const rune = current.value
|
|
126
|
+
const { value } = rune
|
|
127
|
+
switch (value.kind) {
|
|
128
|
+
case "reflect": {
|
|
129
|
+
nextArg = this
|
|
130
|
+
break
|
|
131
|
+
}
|
|
132
|
+
case "continuation": {
|
|
133
|
+
nextArg = await value.f()
|
|
134
|
+
break
|
|
135
|
+
}
|
|
136
|
+
case "event": {
|
|
137
|
+
this.#handle?.(value.event)
|
|
138
|
+
nextArg = undefined
|
|
139
|
+
break
|
|
140
|
+
}
|
|
141
|
+
case "child": {
|
|
142
|
+
nextArg = await new Strand(value.definition, {
|
|
143
|
+
parent: this,
|
|
144
|
+
context: value.context ?? this.context.clone(),
|
|
145
|
+
}).then()
|
|
146
|
+
break
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
switch (this.status.type) {
|
|
150
|
+
case "config_signal_aborted":
|
|
151
|
+
case "parent_aborted":
|
|
152
|
+
case "continuation_exception_thrown":
|
|
153
|
+
case "handler_exception_thrown": {
|
|
154
|
+
try {
|
|
155
|
+
await iterator.return?.(undefined)
|
|
156
|
+
} catch (exception) {}
|
|
157
|
+
return Promise.reject(new StrandRejectedError(this.status))
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
current = await iterator.next(nextArg)
|
|
161
|
+
}
|
|
162
|
+
const { value } = current
|
|
163
|
+
this.#setTerminalStatus({
|
|
164
|
+
type: "resolved",
|
|
165
|
+
value,
|
|
166
|
+
})
|
|
167
|
+
resolve(value)
|
|
168
|
+
} catch (exception) {
|
|
169
|
+
this.#setTerminalStatus({
|
|
170
|
+
type: "continuation_exception_thrown",
|
|
171
|
+
exception,
|
|
172
|
+
})
|
|
173
|
+
reject(exception)
|
|
174
|
+
}
|
|
175
|
+
})
|
|
176
|
+
return promise.then(onfulfilled, onrejected)
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
*[Symbol.iterator](): Generator<Y, T> {
|
|
180
|
+
return yield* continuation("run_strand", () => this.then()) as any
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
#replay(status: Exclude<StrandStatus, StrandStatus.Untouched>): Promise<T> {
|
|
184
|
+
switch (status.type) {
|
|
185
|
+
case "config_signal_aborted":
|
|
186
|
+
case "parent_aborted":
|
|
187
|
+
case "continuation_exception_thrown":
|
|
188
|
+
case "handler_exception_thrown": {
|
|
189
|
+
return Promise.reject(new StrandRejectedError(status))
|
|
190
|
+
}
|
|
191
|
+
case "resolved": {
|
|
192
|
+
return Promise.resolve(status.value)
|
|
193
|
+
}
|
|
194
|
+
case "pending": {
|
|
195
|
+
return status.promise
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
static {
|
|
201
|
+
attachCustomInspect(this, ({ index, parent }) => ({ index, ...parent && { parent } }))
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
export type StrandStatus<T = any> =
|
|
206
|
+
| StrandStatus.Untouched
|
|
207
|
+
| StrandStatus.Pending<T>
|
|
208
|
+
| StrandStatus.Resolved<T>
|
|
209
|
+
| StrandStatus.Rejected
|
|
210
|
+
export namespace StrandStatus {
|
|
211
|
+
export interface Untouched {
|
|
212
|
+
type: "untouched"
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
export interface Pending<T> {
|
|
216
|
+
type: "pending"
|
|
217
|
+
promise: Promise<T>
|
|
218
|
+
resolve: (value: T) => void
|
|
219
|
+
reject: (reason?: unknown) => void
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
export interface Resolved<T> {
|
|
223
|
+
type: "resolved"
|
|
224
|
+
value: T
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
export type Rejected =
|
|
228
|
+
| Rejected.ConfigSignalAborted
|
|
229
|
+
| Rejected.ParentAborted
|
|
230
|
+
| Rejected.ContinuationExceptionThrown
|
|
231
|
+
| Rejected.HandlerExceptionThrown
|
|
232
|
+
// | Rejected.ModelError
|
|
233
|
+
// | Rejected.ValidationError
|
|
234
|
+
// | Rejected.Timeout
|
|
235
|
+
export namespace Rejected {
|
|
236
|
+
export interface ConfigSignalAborted {
|
|
237
|
+
type: "config_signal_aborted"
|
|
238
|
+
reason: unknown
|
|
239
|
+
}
|
|
240
|
+
export interface ParentAborted {
|
|
241
|
+
type: "parent_aborted"
|
|
242
|
+
reason: unknown
|
|
243
|
+
}
|
|
244
|
+
export interface ContinuationExceptionThrown {
|
|
245
|
+
type: "continuation_exception_thrown"
|
|
246
|
+
exception: unknown
|
|
247
|
+
}
|
|
248
|
+
export interface HandlerExceptionThrown {
|
|
249
|
+
type: "handler_exception_thrown"
|
|
250
|
+
exception: unknown
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
package/Tool.ts
CHANGED
|
@@ -1,26 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
Schema,
|
|
4
|
-
type SchemaObject,
|
|
5
|
-
toJSONSchema,
|
|
6
|
-
validate,
|
|
7
|
-
type Value,
|
|
8
|
-
type ValueObject,
|
|
9
|
-
} from "liminal-schema"
|
|
1
|
+
import { Schema } from "./Schema.ts"
|
|
2
|
+
import type { JSONValue } from "./util/JSONValue.ts"
|
|
10
3
|
|
|
11
4
|
export class Tool {
|
|
12
|
-
static async make<T extends
|
|
5
|
+
static async make<T extends JSONValue>(
|
|
13
6
|
description: string,
|
|
14
|
-
|
|
15
|
-
f: (arg: T) =>
|
|
7
|
+
schema: Schema<T>,
|
|
8
|
+
f: (arg: T) => JSONValue | Promise<JSONValue>,
|
|
16
9
|
) {
|
|
17
|
-
const schema = toJSONSchema(type)
|
|
18
10
|
return new Tool(
|
|
19
11
|
await Schema.id(schema, description),
|
|
20
12
|
description,
|
|
21
13
|
schema,
|
|
22
14
|
async (arg) => {
|
|
23
|
-
return await f(await
|
|
15
|
+
return await f(await Schema.validateValue(schema, arg))
|
|
24
16
|
},
|
|
25
17
|
)
|
|
26
18
|
}
|
|
@@ -28,7 +20,7 @@ export class Tool {
|
|
|
28
20
|
constructor(
|
|
29
21
|
readonly name: string,
|
|
30
22
|
readonly description: string,
|
|
31
|
-
readonly parameterSchema:
|
|
32
|
-
readonly f: (arg: any) =>
|
|
23
|
+
readonly parameterSchema: Schema,
|
|
24
|
+
readonly f: (arg: any) => JSONValue | Promise<JSONValue>,
|
|
33
25
|
) {}
|
|
34
26
|
}
|
package/TypeAdapter.ts
ADDED
package/dist/Config.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Message } from "./Message.ts";
|
|
2
|
+
import { ModelRegistry } from "./ModelRegistry.ts";
|
|
3
|
+
import type { Rune } from "./Rune.ts";
|
|
4
|
+
import type { Strand } from "./Strand.ts";
|
|
5
|
+
import type { Tool } from "./Tool.ts";
|
|
6
|
+
export interface Config<Y extends Rune<any> = Rune<any>, T = any> {
|
|
7
|
+
handler?: ((this: Strand<Y, T>, event: Rune.E<Y>) => void) | undefined;
|
|
8
|
+
models?: ModelRegistry | undefined;
|
|
9
|
+
messages?: Array<Message>;
|
|
10
|
+
tools?: Set<Tool> | undefined;
|
|
11
|
+
signal?: AbortSignal | undefined;
|
|
12
|
+
}
|
package/dist/Config.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Config.js","sourceRoot":"","sources":["../Config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA"}
|
package/dist/Context.d.ts
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import type { Handler } from "./Handler.ts";
|
|
2
|
+
import type { Message } from "./Message.ts";
|
|
3
|
+
import { ModelRegistry } from "./ModelRegistry.ts";
|
|
4
|
+
import type { Tool } from "./Tool.ts";
|
|
5
|
+
export interface Context {
|
|
6
|
+
readonly handler: Handler | undefined;
|
|
7
|
+
readonly models: ModelRegistry;
|
|
8
|
+
readonly messages: Array<Message>;
|
|
9
|
+
readonly tools: Set<Tool>;
|
|
10
|
+
clone(): Context;
|
|
6
11
|
}
|
|
7
|
-
export
|
|
8
|
-
fork(parent?: V): V;
|
|
9
|
-
get(): V | undefined;
|
|
10
|
-
getOrInit(): V;
|
|
11
|
-
debug?: string;
|
|
12
|
-
}
|
|
13
|
-
export declare function ContextPart<V>(fork: (parent?: V) => V, debug?: string): ContextPart<V>;
|
|
12
|
+
export declare function Context(context?: Omit<Context, "clone">): Context;
|
package/dist/Context.js
CHANGED
|
@@ -1,46 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
fork() {
|
|
17
|
-
const context = new Context();
|
|
18
|
-
for (const [handle, value] of this.entries()) {
|
|
19
|
-
if (!context.has(handle)) {
|
|
20
|
-
context.set(handle, handle.fork(value));
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
return context;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
export function ContextPart(fork, debug) {
|
|
27
|
-
const self = {
|
|
28
|
-
fork,
|
|
29
|
-
get() {
|
|
30
|
-
return Context.get()?.get(self);
|
|
31
|
-
},
|
|
32
|
-
getOrInit() {
|
|
33
|
-
const context = Context.get();
|
|
34
|
-
assert(context);
|
|
35
|
-
let value = context.get(this);
|
|
36
|
-
if (!value) {
|
|
37
|
-
value = this.fork();
|
|
38
|
-
context.set(this, value);
|
|
39
|
-
}
|
|
40
|
-
return value;
|
|
1
|
+
import { ModelRegistry } from "./ModelRegistry.js";
|
|
2
|
+
export function Context(context) {
|
|
3
|
+
return {
|
|
4
|
+
handler: context?.handler,
|
|
5
|
+
models: context?.models.clone() ?? new ModelRegistry(),
|
|
6
|
+
messages: [],
|
|
7
|
+
tools: new Set(context?.tools),
|
|
8
|
+
clone() {
|
|
9
|
+
return {
|
|
10
|
+
handler: this.handler,
|
|
11
|
+
models: this.models.clone(),
|
|
12
|
+
messages: [...this.messages],
|
|
13
|
+
tools: new Set(this.tools),
|
|
14
|
+
clone: this.clone,
|
|
15
|
+
};
|
|
41
16
|
},
|
|
42
|
-
...debug && { debug },
|
|
43
17
|
};
|
|
44
|
-
return self;
|
|
45
18
|
}
|
|
46
19
|
//# sourceMappingURL=Context.js.map
|
package/dist/Context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Context.js","sourceRoot":"","sources":["../Context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Context.js","sourceRoot":"","sources":["../Context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAYlD,MAAM,UAAU,OAAO,CAAC,OAAgC;IACtD,OAAO;QACL,OAAO,EAAE,OAAO,EAAE,OAAO;QACzB,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,aAAa,EAAE;QACtD,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC;QAE9B,KAAK;YACH,OAAO;gBACL,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;gBAC3B,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAC5B,KAAK,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC1B,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Rune } from "./Rune.ts";
|
|
2
|
+
export type RuneIterator<Y extends Rune<any> = Rune<any>, T = any> = Iterator<Y, T> | AsyncIterator<Y, T>;
|
|
3
|
+
export type RuneIterable<Y extends Rune<any> = Rune<any>, T = any> = Iterable<Y, T> | AsyncIterable<Y, T>;
|
|
4
|
+
export type Definition<Y extends Rune<any> = Rune<any>, T = any> = RuneIterable<Y, T> | (() => RuneIterable<Y, T>);
|
|
5
|
+
export declare namespace Definition {
|
|
6
|
+
type Y<X extends Definition> = X extends RuneIterable<infer Y> ? Y : X extends () => RuneIterable<infer Y> ? Y : X extends RuneIterator<infer Y> ? Y : never;
|
|
7
|
+
type T<X extends Definition> = X extends RuneIterable<Rune<any>, infer T> ? T : X extends () => RuneIterable<Rune<any>, infer T> ? T : X extends RuneIterator<Rune<any>, infer T> ? T : never;
|
|
8
|
+
type E<X extends Definition> = Rune.E<Y<X>>;
|
|
9
|
+
function unwrap<Y extends Rune<any>, T>(definition: Definition<Y, T>): RuneIterator<Y, T>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export var Definition;
|
|
2
|
+
(function (Definition) {
|
|
3
|
+
function unwrap(definition) {
|
|
4
|
+
if (Symbol.iterator in definition) {
|
|
5
|
+
return definition[Symbol.iterator]();
|
|
6
|
+
}
|
|
7
|
+
else if (Symbol.asyncIterator in definition) {
|
|
8
|
+
return definition[Symbol.asyncIterator]();
|
|
9
|
+
}
|
|
10
|
+
const iterable = definition();
|
|
11
|
+
if (Symbol.iterator in iterable) {
|
|
12
|
+
return iterable[Symbol.iterator]();
|
|
13
|
+
}
|
|
14
|
+
return iterable[Symbol.asyncIterator]();
|
|
15
|
+
}
|
|
16
|
+
Definition.unwrap = unwrap;
|
|
17
|
+
})(Definition || (Definition = {}));
|
|
18
|
+
//# sourceMappingURL=Definition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Definition.js","sourceRoot":"","sources":["../Definition.ts"],"names":[],"mappings":"AAMA,MAAM,KAAW,UAAU,CAyB1B;AAzBD,WAAiB,UAAU;IAazB,SAAgB,MAAM,CAAyB,UAA4B;QACzE,IAAI,MAAM,CAAC,QAAQ,IAAI,UAAU,EAAE,CAAC;YAClC,OAAO,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAA;QACtC,CAAC;aAAM,IAAI,MAAM,CAAC,aAAa,IAAI,UAAU,EAAE,CAAC;YAC9C,OAAO,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAA;QAC3C,CAAC;QACD,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAA;QAC7B,IAAI,MAAM,CAAC,QAAQ,IAAI,QAAQ,EAAE,CAAC;YAChC,OAAO,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAA;QACpC,CAAC;QACD,OAAO,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAA;IACzC,CAAC;IAXe,iBAAM,SAWrB,CAAA;AACH,CAAC,EAzBgB,UAAU,KAAV,UAAU,QAyB1B"}
|
package/dist/EventBase.js
CHANGED
package/dist/EventBase.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventBase.js","sourceRoot":"","sources":["../EventBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"EventBase.js","sourceRoot":"","sources":["../EventBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AAOnE,MAAM,UAAU,SAAS,CAAqC,KAAQ,EAAE,IAAO;IAC7E,OAAO;QACL,MAAM,CAAC,EAAE,CAAkC,KAAc;YACvD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;mBAC7C,OAAO,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK;mBACzC,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAA;QAC7C,CAAC;QAEQ,KAAK,GAAG,KAAK,CAAA;QACb,IAAI,GAAG,IAAI,CAAA;QAEpB;YACE,mBAAmB,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA;QACvE,CAAC;KACF,CAAA;AACH,CAAC"}
|
package/dist/Handler.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type {
|
|
3
|
-
export type Handler<
|
|
4
|
-
export declare const HandlerContext: ContextPart<Handler | undefined>;
|
|
1
|
+
import type { Rune } from "./Rune.ts";
|
|
2
|
+
import type { Strand } from "./Strand.ts";
|
|
3
|
+
export type Handler<Y extends Rune<any> = Rune<any>> = (this: Strand, event: Rune.E<Y>) => void;
|
package/dist/Handler.js
CHANGED
package/dist/Handler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Handler.js","sourceRoot":"","sources":["../Handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Handler.js","sourceRoot":"","sources":["../Handler.ts"],"names":[],"mappings":""}
|
package/dist/L/L.d.ts
CHANGED
|
@@ -1,11 +1,24 @@
|
|
|
1
|
-
export * from "
|
|
1
|
+
export * from "./all.ts";
|
|
2
2
|
export * from "./assistant.ts";
|
|
3
3
|
export * from "./catch.ts";
|
|
4
|
+
export * from "./context.ts";
|
|
5
|
+
export * from "./continuation.ts";
|
|
4
6
|
export * from "./emit.ts";
|
|
5
7
|
export * from "./infer.ts";
|
|
6
8
|
export * from "./message.ts";
|
|
7
9
|
export * from "./model.ts";
|
|
8
|
-
export * from "./
|
|
10
|
+
export * from "./reflect.ts";
|
|
11
|
+
export * from "./run.ts";
|
|
12
|
+
export * from "./schema/anyOf.ts";
|
|
13
|
+
export * from "./schema/array.ts";
|
|
14
|
+
export * from "./schema/boolean.ts";
|
|
15
|
+
export * from "./schema/const.ts";
|
|
16
|
+
export * from "./schema/enum.ts";
|
|
17
|
+
export * from "./schema/integer.ts";
|
|
18
|
+
export * from "./schema/null.ts";
|
|
19
|
+
export * from "./schema/number";
|
|
20
|
+
export * from "./schema/object.ts";
|
|
21
|
+
export * from "./schema/string.ts";
|
|
9
22
|
export * from "./strand.ts";
|
|
10
23
|
export * from "./stream.ts";
|
|
11
24
|
export * from "./system.ts";
|
package/dist/L/L.js
CHANGED
|
@@ -1,11 +1,24 @@
|
|
|
1
|
-
export * from "
|
|
1
|
+
export * from "./all.js";
|
|
2
2
|
export * from "./assistant.js";
|
|
3
3
|
export * from "./catch.js";
|
|
4
|
+
export * from "./context.js";
|
|
5
|
+
export * from "./continuation.js";
|
|
4
6
|
export * from "./emit.js";
|
|
5
7
|
export * from "./infer.js";
|
|
6
8
|
export * from "./message.js";
|
|
7
9
|
export * from "./model.js";
|
|
8
|
-
export * from "./
|
|
10
|
+
export * from "./reflect.js";
|
|
11
|
+
export * from "./run.js";
|
|
12
|
+
export * from "./schema/anyOf.js";
|
|
13
|
+
export * from "./schema/array.js";
|
|
14
|
+
export * from "./schema/boolean.js";
|
|
15
|
+
export * from "./schema/const.js";
|
|
16
|
+
export * from "./schema/enum.js";
|
|
17
|
+
export * from "./schema/integer.js";
|
|
18
|
+
export * from "./schema/null.js";
|
|
19
|
+
export * from "./schema/number";
|
|
20
|
+
export * from "./schema/object.js";
|
|
21
|
+
export * from "./schema/string.js";
|
|
9
22
|
export * from "./strand.js";
|
|
10
23
|
export * from "./stream.js";
|
|
11
24
|
export * from "./system.js";
|
package/dist/L/L.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"L.js","sourceRoot":"","sources":["../../L/L.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"L.js","sourceRoot":"","sources":["../../L/L.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA"}
|
package/dist/L/all.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Context } from "../Context.ts";
|
|
2
|
+
import { Definition } from "../Definition.ts";
|
|
3
|
+
import type { LEvent } from "../LEvent.ts";
|
|
4
|
+
import type { Rune } from "../Rune.ts";
|
|
5
|
+
export declare function all<A extends Array<Definition>>(definitions: A, context?: Context): Generator<Rune<LEvent> | Definition.Y<A[number]>, {
|
|
6
|
+
[I in keyof A]: Definition.T<A[I]>;
|
|
7
|
+
}>;
|
|
8
|
+
export declare function all<A extends Record<keyof any, Definition>>(definitions: A, context?: Context): Generator<Rune<LEvent> | Definition.Y<A[keyof A]>, {
|
|
9
|
+
[K in keyof A]: Definition.T<A[K]>;
|
|
10
|
+
}>;
|
package/dist/L/all.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Definition } from "../Definition.js";
|
|
2
|
+
import { Strand } from "../Strand.js";
|
|
3
|
+
import { continuation } from "./continuation.js";
|
|
4
|
+
import { reflect } from "./reflect.js";
|
|
5
|
+
export function* all(definitions, context) {
|
|
6
|
+
const parent = yield* reflect;
|
|
7
|
+
const strands = [];
|
|
8
|
+
for (const definition of Array.isArray(definitions) ? definitions : Object.values(definitions)) {
|
|
9
|
+
strands.push(new Strand(definition, {
|
|
10
|
+
parent,
|
|
11
|
+
context: context?.clone() ?? parent.context.clone(),
|
|
12
|
+
}));
|
|
13
|
+
}
|
|
14
|
+
const results = yield* continuation("all", () => Promise.all(strands));
|
|
15
|
+
if (Array.isArray(strands))
|
|
16
|
+
return results;
|
|
17
|
+
const keys = Object.keys(strands);
|
|
18
|
+
return Object.fromEntries(results.map((result, i) => [keys[i], result]));
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=all.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"all.js","sourceRoot":"","sources":["../../L/all.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAG7C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAUtC,MAAM,SAAS,CAAC,CAAC,GAAG,CAClB,WAAc,EACd,OAAiB;IAEjB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAA;IAC7B,MAAM,OAAO,GAAkB,EAAE,CAAA;IACjC,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/F,OAAO,CAAC,IAAI,CACV,IAAI,MAAM,CAAC,UAAU,EAAE;YACrB,MAAM;YACN,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;SACpD,CAAC,CACH,CAAA;IACH,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;IACtE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAA;IAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACjC,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;AAC1E,CAAC"}
|
package/dist/L/assistant.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { type LType } from "liminal-schema";
|
|
2
1
|
import type { LEvent } from "../LEvent.ts";
|
|
3
2
|
import type { Rune } from "../Rune.ts";
|
|
3
|
+
import { Schema } from "../Schema.ts";
|
|
4
4
|
export interface assistant extends Iterable<Rune<LEvent>, string> {
|
|
5
|
-
<T>(
|
|
5
|
+
<T>(schema: Schema<T>): Generator<Rune<LEvent>, T>;
|
|
6
6
|
}
|
|
7
7
|
export declare const assistant: assistant;
|
package/dist/L/assistant.js
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Schema } from "../Schema.js";
|
|
2
2
|
import { infer } from "./infer.js";
|
|
3
3
|
import { message } from "./message.js";
|
|
4
|
-
|
|
5
|
-
export const assistant = Object.assign(function* (type) {
|
|
6
|
-
const schema = toJSONSchema(type);
|
|
4
|
+
export const assistant = Object.assign(function* assistant(schema) {
|
|
7
5
|
const inference = yield* infer(schema);
|
|
8
6
|
yield* message("assistant", [{ part: inference }]);
|
|
9
|
-
|
|
10
|
-
return yield* rune(() => validate(type, input), "validate_assistant_message");
|
|
7
|
+
return JSON.parse(inference);
|
|
11
8
|
}, {
|
|
12
9
|
*[Symbol.iterator]() {
|
|
13
10
|
const inference = yield* infer();
|
package/dist/L/assistant.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assistant.js","sourceRoot":"","sources":["../../L/assistant.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"assistant.js","sourceRoot":"","sources":["../../L/assistant.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAMtC,MAAM,CAAC,MAAM,SAAS,GAAc,MAAM,CAAC,MAAM,CAC/C,QAAQ,CAAC,CAAC,SAAS,CAAI,MAAiB;IACtC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACtC,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;IAClD,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;AAC9B,CAAC,EACD;IACE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QAChB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,KAAK,EAAE,CAAA;QAChC,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;QAClD,OAAO,SAAS,CAAA;IAClB,CAAC;CACF,CACF,CAAA"}
|
package/dist/L/catch.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import type { Definition } from "../Definition.ts";
|
|
2
|
+
import type { LEvent } from "../LEvent.ts";
|
|
1
3
|
import type { Rune } from "../Rune.ts";
|
|
2
|
-
import type { Runic } from "../Runic.ts";
|
|
3
4
|
export { catch_ as catch };
|
|
4
|
-
declare function catch_<Y extends Rune
|
|
5
|
+
declare function catch_<Y extends Rune<any>, T>(definition: Definition<Y, T>): Generator<Rune<LEvent> | Rune<Y>, CatchResult<T>>;
|
|
5
6
|
export type CatchResult<T> = {
|
|
6
7
|
resolved: T;
|
|
7
8
|
rejected?: never;
|