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.
Files changed (225) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/Config.ts +13 -0
  3. package/Context.ts +23 -49
  4. package/Definition.ts +32 -0
  5. package/EventBase.ts +1 -1
  6. package/Handler.ts +3 -5
  7. package/L/L.ts +15 -2
  8. package/L/all.ts +35 -0
  9. package/L/assistant.ts +4 -7
  10. package/L/catch.ts +16 -13
  11. package/L/context.ts +12 -0
  12. package/L/continuation.ts +13 -0
  13. package/L/emit.ts +10 -8
  14. package/L/infer.ts +22 -25
  15. package/L/message.ts +7 -9
  16. package/L/model.ts +6 -6
  17. package/L/reflect.ts +12 -0
  18. package/L/run.ts +29 -0
  19. package/L/schema/_schema_common.ts +29 -0
  20. package/L/schema/anyOf.ts +10 -0
  21. package/L/schema/array.ts +13 -0
  22. package/L/schema/boolean.ts +8 -0
  23. package/L/schema/const.ts +18 -0
  24. package/L/schema/enum.ts +18 -0
  25. package/L/schema/integer.ts +6 -0
  26. package/L/schema/null.ts +8 -0
  27. package/L/schema/number.ts +8 -0
  28. package/L/schema/object.ts +21 -0
  29. package/L/schema/string.ts +11 -0
  30. package/L/strand.ts +14 -71
  31. package/L/stream.ts +11 -24
  32. package/L/system.ts +13 -8
  33. package/L/user.ts +13 -8
  34. package/LEvent.ts +9 -17
  35. package/LiminalAssertionError.ts +19 -0
  36. package/Message.ts +3 -2
  37. package/Model.ts +5 -3
  38. package/ModelRegistry.ts +1 -7
  39. package/Rune.test.ts +5 -0
  40. package/Rune.ts +24 -12
  41. package/Schema.ts +185 -0
  42. package/Strand.ts +253 -0
  43. package/Tool.ts +8 -16
  44. package/TypeAdapter.ts +3 -0
  45. package/dist/Config.d.ts +12 -0
  46. package/dist/Config.js +2 -0
  47. package/dist/Config.js.map +1 -0
  48. package/dist/Context.d.ts +11 -12
  49. package/dist/Context.js +15 -42
  50. package/dist/Context.js.map +1 -1
  51. package/dist/Definition.d.ts +10 -0
  52. package/dist/Definition.js +18 -0
  53. package/dist/Definition.js.map +1 -0
  54. package/dist/EventBase.js +1 -1
  55. package/dist/EventBase.js.map +1 -1
  56. package/dist/Handler.d.ts +3 -4
  57. package/dist/Handler.js +1 -2
  58. package/dist/Handler.js.map +1 -1
  59. package/dist/L/L.d.ts +15 -2
  60. package/dist/L/L.js +15 -2
  61. package/dist/L/L.js.map +1 -1
  62. package/dist/L/all.d.ts +10 -0
  63. package/dist/L/all.js +20 -0
  64. package/dist/L/all.js.map +1 -0
  65. package/dist/L/assistant.d.ts +2 -2
  66. package/dist/L/assistant.js +3 -6
  67. package/dist/L/assistant.js.map +1 -1
  68. package/dist/L/catch.d.ts +3 -2
  69. package/dist/L/catch.js +12 -12
  70. package/dist/L/catch.js.map +1 -1
  71. package/dist/L/context.d.ts +2 -0
  72. package/dist/L/context.js +12 -0
  73. package/dist/L/context.js.map +1 -0
  74. package/dist/L/continuation.d.ts +3 -0
  75. package/dist/L/continuation.js +12 -0
  76. package/dist/L/continuation.js.map +1 -0
  77. package/dist/L/emit.d.ts +3 -5
  78. package/dist/L/emit.js +8 -3
  79. package/dist/L/emit.js.map +1 -1
  80. package/dist/L/infer.d.ts +2 -5
  81. package/dist/L/infer.js +21 -20
  82. package/dist/L/infer.js.map +1 -1
  83. package/dist/L/message.d.ts +3 -5
  84. package/dist/L/message.js +5 -5
  85. package/dist/L/message.js.map +1 -1
  86. package/dist/L/model.d.ts +2 -4
  87. package/dist/L/model.js +4 -3
  88. package/dist/L/model.js.map +1 -1
  89. package/dist/L/reflect.d.ts +4 -0
  90. package/dist/L/reflect.js +10 -0
  91. package/dist/L/reflect.js.map +1 -0
  92. package/dist/L/run.d.ts +15 -0
  93. package/dist/L/run.js +16 -0
  94. package/dist/L/run.js.map +1 -0
  95. package/dist/L/schema/_schema_common.d.ts +6 -0
  96. package/dist/L/schema/_schema_common.js +19 -0
  97. package/dist/L/schema/_schema_common.js.map +1 -0
  98. package/dist/L/schema/anyOf.d.ts +5 -0
  99. package/dist/L/schema/anyOf.js +5 -0
  100. package/dist/L/schema/anyOf.js.map +1 -0
  101. package/dist/L/schema/array.d.ts +5 -0
  102. package/dist/L/schema/array.js +8 -0
  103. package/dist/L/schema/array.js.map +1 -0
  104. package/dist/L/schema/boolean.d.ts +6 -0
  105. package/dist/L/schema/boolean.js +4 -0
  106. package/dist/L/schema/boolean.js.map +1 -0
  107. package/dist/L/schema/const.d.ts +8 -0
  108. package/dist/L/schema/const.js +10 -0
  109. package/dist/L/schema/const.js.map +1 -0
  110. package/dist/L/schema/enum.d.ts +8 -0
  111. package/dist/L/schema/enum.js +10 -0
  112. package/dist/L/schema/enum.js.map +1 -0
  113. package/dist/L/schema/integer.d.ts +5 -0
  114. package/dist/L/schema/integer.js +3 -0
  115. package/dist/L/schema/integer.js.map +1 -0
  116. package/dist/L/schema/null.d.ts +6 -0
  117. package/dist/L/schema/null.js +4 -0
  118. package/dist/L/schema/null.js.map +1 -0
  119. package/dist/L/schema/number.d.ts +6 -0
  120. package/dist/L/schema/number.js +4 -0
  121. package/dist/L/schema/number.js.map +1 -0
  122. package/dist/L/schema/object.d.ts +9 -0
  123. package/dist/L/schema/object.js +12 -0
  124. package/dist/L/schema/object.js.map +1 -0
  125. package/dist/L/schema/string.d.ts +8 -0
  126. package/dist/L/schema/string.js +4 -0
  127. package/dist/L/schema/string.js.map +1 -0
  128. package/dist/L/strand.d.ts +4 -15
  129. package/dist/L/strand.js +8 -53
  130. package/dist/L/strand.js.map +1 -1
  131. package/dist/L/stream.d.ts +2 -4
  132. package/dist/L/stream.js +8 -19
  133. package/dist/L/stream.js.map +1 -1
  134. package/dist/L/system.d.ts +2 -4
  135. package/dist/L/system.js +4 -3
  136. package/dist/L/system.js.map +1 -1
  137. package/dist/L/user.d.ts +2 -4
  138. package/dist/L/user.js +4 -3
  139. package/dist/L/user.js.map +1 -1
  140. package/dist/LEvent.d.ts +13 -41
  141. package/dist/LEvent.js +4 -15
  142. package/dist/LEvent.js.map +1 -1
  143. package/dist/LiminalAssertionError.d.ts +8 -0
  144. package/dist/LiminalAssertionError.js +20 -0
  145. package/dist/LiminalAssertionError.js.map +1 -0
  146. package/dist/Message.d.ts +3 -2
  147. package/dist/Model.d.ts +4 -2
  148. package/dist/Model.js +1 -1
  149. package/dist/Model.js.map +1 -1
  150. package/dist/ModelRegistry.d.ts +0 -2
  151. package/dist/ModelRegistry.js +0 -2
  152. package/dist/ModelRegistry.js.map +1 -1
  153. package/dist/Rune.d.ts +19 -7
  154. package/dist/Rune.js +8 -4
  155. package/dist/Rune.js.map +1 -1
  156. package/dist/Rune.test.d.ts +1 -0
  157. package/dist/Rune.test.js +5 -0
  158. package/dist/Rune.test.js.map +1 -0
  159. package/dist/Schema.d.ts +46 -0
  160. package/dist/Schema.js +130 -0
  161. package/dist/Schema.js.map +1 -0
  162. package/dist/Strand.d.ts +57 -0
  163. package/dist/Strand.js +177 -0
  164. package/dist/Strand.js.map +1 -0
  165. package/dist/Tool.d.ts +6 -5
  166. package/dist/Tool.js +3 -4
  167. package/dist/Tool.js.map +1 -1
  168. package/dist/TypeAdapter.d.ts +1 -0
  169. package/dist/TypeAdapter.js +3 -0
  170. package/dist/TypeAdapter.js.map +1 -0
  171. package/dist/errors.d.ts +9 -0
  172. package/dist/errors.js +11 -0
  173. package/dist/errors.js.map +1 -0
  174. package/dist/index.d.ts +6 -5
  175. package/dist/index.js +6 -5
  176. package/dist/index.js.map +1 -1
  177. package/dist/tsconfig.tsbuildinfo +1 -1
  178. package/dist/util/EnsureNarrow.d.ts +1 -0
  179. package/dist/util/EnsureNarrow.js +2 -0
  180. package/dist/util/EnsureNarrow.js.map +1 -0
  181. package/dist/util/JSONValue.d.ts +8 -0
  182. package/dist/util/JSONValue.js +20 -0
  183. package/dist/util/JSONValue.js.map +1 -0
  184. package/dist/util/attachCustomInspect.d.ts +1 -0
  185. package/dist/util/attachCustomInspect.js +11 -0
  186. package/dist/util/attachCustomInspect.js.map +1 -0
  187. package/dist/util/isTemplateStringsArray.d.ts +1 -0
  188. package/dist/util/isTemplateStringsArray.js +4 -0
  189. package/dist/util/isTemplateStringsArray.js.map +1 -0
  190. package/errors.ts +12 -0
  191. package/index.ts +6 -5
  192. package/package.json +3 -10
  193. package/tsconfig.json +1 -5
  194. package/util/EnsureNarrow.ts +1 -0
  195. package/util/JSONValue.ts +20 -0
  196. package/util/attachCustomInspect.ts +14 -0
  197. package/util/isTemplateStringsArray.ts +3 -0
  198. package/Fiber.ts +0 -123
  199. package/L/_common.ts +0 -6
  200. package/L/rune.ts +0 -12
  201. package/MessageRegistry.ts +0 -22
  202. package/Runic.ts +0 -30
  203. package/StrandConfig.ts +0 -12
  204. package/ToolRegistry.ts +0 -10
  205. package/dist/Fiber.d.ts +0 -35
  206. package/dist/Fiber.js +0 -95
  207. package/dist/Fiber.js.map +0 -1
  208. package/dist/L/_common.d.ts +0 -4
  209. package/dist/L/_common.js +0 -7
  210. package/dist/L/_common.js.map +0 -1
  211. package/dist/L/rune.d.ts +0 -3
  212. package/dist/L/rune.js +0 -9
  213. package/dist/L/rune.js.map +0 -1
  214. package/dist/MessageRegistry.d.ts +0 -9
  215. package/dist/MessageRegistry.js +0 -15
  216. package/dist/MessageRegistry.js.map +0 -1
  217. package/dist/Runic.d.ts +0 -9
  218. package/dist/Runic.js +0 -18
  219. package/dist/Runic.js.map +0 -1
  220. package/dist/StrandConfig.d.ts +0 -11
  221. package/dist/StrandConfig.js +0 -2
  222. package/dist/StrandConfig.js.map +0 -1
  223. package/dist/ToolRegistry.d.ts +0 -6
  224. package/dist/ToolRegistry.js +0 -8
  225. 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
- type LType,
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 ValueObject>(
5
+ static async make<T extends JSONValue>(
13
6
  description: string,
14
- type: LType<T>,
15
- f: (arg: T) => Value | Promise<Value>,
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 validate(type, arg) as never)
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: SchemaObject,
32
- readonly f: (arg: any) => Value | Promise<Value>,
23
+ readonly parameterSchema: Schema,
24
+ readonly f: (arg: any) => JSONValue | Promise<JSONValue>,
33
25
  ) {}
34
26
  }
package/TypeAdapter.ts ADDED
@@ -0,0 +1,3 @@
1
+ import { LiminalAssertionError } from "./LiminalAssertionError.ts"
2
+ import { Schema } from "./Schema.ts"
3
+ import type { JSONValueObject } from "./util/JSONValue.ts"
@@ -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,2 @@
1
+ import { ModelRegistry } from "./ModelRegistry.js";
2
+ //# sourceMappingURL=Config.js.map
@@ -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
- export declare class Context extends Map<ContextPart, unknown> {
2
- static get(): Context | undefined;
3
- static ensure(): Context;
4
- run<R>(f: () => R): R;
5
- fork(): Context;
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 interface ContextPart<V = any> {
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 { assert } from "liminal-util";
2
- import { AsyncLocalStorage } from "node:async_hooks";
3
- const storage = new AsyncLocalStorage();
4
- export class Context extends Map {
5
- static get() {
6
- return storage.getStore();
7
- }
8
- static ensure() {
9
- const current = Context.get();
10
- assert(current);
11
- return current;
12
- }
13
- run(f) {
14
- return storage.run(this, f);
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
@@ -1 +1 @@
1
- {"version":3,"file":"Context.js","sourceRoot":"","sources":["../Context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAW,CAAA;AAEhD,MAAM,OAAO,OAAQ,SAAQ,GAAyB;IACpD,MAAM,CAAC,GAAG;QACR,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAA;IAC3B,CAAC;IAED,MAAM,CAAC,MAAM;QACX,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;QAC7B,MAAM,CAAC,OAAO,CAAC,CAAA;QACf,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,GAAG,CAAI,CAAU;QACf,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAC7B,CAAC;IAED,IAAI;QACF,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;QAC7B,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YAC7C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;YACzC,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;CACF;AASD,MAAM,UAAU,WAAW,CAAI,IAAuB,EAAE,KAAc;IACpE,MAAM,IAAI,GAAmB;QAC3B,IAAI;QACJ,GAAG;YACD,OAAO,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,IAAI,CAAU,CAAA;QAC1C,CAAC;QACD,SAAS;YACP,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;YAC7B,MAAM,CAAC,OAAO,CAAC,CAAA;YACf,IAAI,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;gBACnB,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YAC1B,CAAC;YACD,OAAO,KAAc,CAAA;QACvB,CAAC;QACD,GAAG,KAAK,IAAI,EAAE,KAAK,EAAE;KACtB,CAAA;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
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
@@ -1,4 +1,4 @@
1
- import { attachCustomInspect } from "liminal-util";
1
+ import { attachCustomInspect } from "./util/attachCustomInspect.js";
2
2
  export function EventBase(brand, type) {
3
3
  return class {
4
4
  static is(value) {
@@ -1 +1 @@
1
- {"version":3,"file":"EventBase.js","sourceRoot":"","sources":["../EventBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAOlD,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"}
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 { ContextPart as ContextPart } from "./Context.ts";
2
- import type { Fiber } from "./Fiber.ts";
3
- export type Handler<E = any> = [(this: Fiber, event: E) => void][0];
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
@@ -1,3 +1,2 @@
1
- import { ContextPart as ContextPart } from "./Context.js";
2
- export const HandlerContext = ContextPart((parent) => parent, "handler");
1
+ export {};
3
2
  //# sourceMappingURL=Handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Handler.js","sourceRoot":"","sources":["../Handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,WAAW,EAAE,MAAM,cAAc,CAAA;AAKzD,MAAM,CAAC,MAAM,cAAc,GAAqC,WAAW,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA"}
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 "liminal-schema/factories";
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 "./rune.ts";
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 "liminal-schema/factories";
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 "./rune.js";
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,0BAA0B,CAAA;AACxC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA"}
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"}
@@ -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"}
@@ -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>(type: LType<T>): Generator<Rune<LEvent>, T>;
5
+ <T>(schema: Schema<T>): Generator<Rune<LEvent>, T>;
6
6
  }
7
7
  export declare const assistant: assistant;
@@ -1,13 +1,10 @@
1
- import { toJSONSchema, validate } from "liminal-schema";
1
+ import { Schema } from "../Schema.js";
2
2
  import { infer } from "./infer.js";
3
3
  import { message } from "./message.js";
4
- import { rune } from "./rune.js";
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
- const input = JSON.parse(inference);
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();
@@ -1 +1 @@
1
- {"version":3,"file":"assistant.js","sourceRoot":"","sources":["../../L/assistant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAGnE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAMhC,MAAM,CAAC,MAAM,SAAS,GAAc,MAAM,CAAC,MAAM,CAC/C,QAAQ,CAAC,EAAI,IAAc;IACzB,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;IACjC,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,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IACnC,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,4BAA4B,CAAC,CAAA;AAC/E,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"}
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, T>(runic: Runic<Y, T>): Generator<Rune<Y>, CatchResult<T>>;
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;