liminal 0.5.8 → 0.5.9
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/Agent.ts +3 -0
- package/CHANGELOG.md +6 -0
- package/Context.ts +1 -10
- package/Fiber.ts +10 -2
- package/L/_infer.ts +6 -8
- package/L/assistant.ts +1 -1
- package/L/branch.ts +9 -12
- package/L/catch.ts +3 -4
- package/L/emit.ts +1 -1
- package/L/rune.ts +24 -13
- package/LEvent.ts +1 -1
- package/ModelRegistry.ts +0 -8
- package/Rune.ts +1 -0
- package/Tool.ts +31 -0
- package/ToolRegistry.ts +5 -0
- package/dist/Agent.d.ts +2 -0
- package/dist/Agent.js +2 -0
- package/dist/Agent.js.map +1 -1
- package/dist/Context.d.ts +1 -2
- package/dist/Context.js +0 -8
- package/dist/Context.js.map +1 -1
- package/dist/Fiber.d.ts +1 -3
- package/dist/Fiber.js +10 -2
- package/dist/Fiber.js.map +1 -1
- package/dist/L/_infer.js +6 -7
- package/dist/L/_infer.js.map +1 -1
- package/dist/L/assistant.js +1 -1
- package/dist/L/assistant.js.map +1 -1
- package/dist/L/branch.js +9 -10
- package/dist/L/branch.js.map +1 -1
- package/dist/L/catch.js +3 -4
- package/dist/L/catch.js.map +1 -1
- package/dist/L/emit.js +1 -1
- package/dist/L/emit.js.map +1 -1
- package/dist/L/rune.d.ts +5 -3
- package/dist/L/rune.js +11 -4
- package/dist/L/rune.js.map +1 -1
- package/dist/LEvent.js +1 -1
- package/dist/LEvent.js.map +1 -1
- package/dist/ModelRegistry.d.ts +0 -1
- package/dist/ModelRegistry.js +0 -7
- package/dist/ModelRegistry.js.map +1 -1
- package/dist/Rune.d.ts +1 -0
- package/dist/Rune.js.map +1 -1
- package/dist/Tool.d.ts +9 -0
- package/dist/Tool.js +31 -0
- package/dist/Tool.js.map +1 -0
- package/dist/ToolRegistry.d.ts +5 -0
- package/dist/ToolRegistry.js +5 -0
- package/dist/ToolRegistry.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/index.ts +2 -0
- package/package.json +1 -1
- package/cli/main.ts +0 -1
- package/dist/cli/main.d.ts +0 -1
- package/dist/cli/main.js +0 -3
- package/dist/cli/main.js.map +0 -1
package/Agent.ts
CHANGED
|
@@ -5,11 +5,13 @@ import { MessageRegistry, MessageRegistryContext } from "./MessageRegistry.ts"
|
|
|
5
5
|
import { ModelRegistry, ModelRegistryContext } from "./ModelRegistry.ts"
|
|
6
6
|
import type { Rune } from "./Rune.ts"
|
|
7
7
|
import type { Runic } from "./Runic.ts"
|
|
8
|
+
import { ToolRegistry, ToolRegistryContext } from "./ToolRegistry.ts"
|
|
8
9
|
|
|
9
10
|
export interface AgentConfig<T, E> {
|
|
10
11
|
handler?: ((this: Fiber<T>, event: E) => void) | undefined
|
|
11
12
|
models?: ModelRegistry
|
|
12
13
|
messages?: MessageRegistry
|
|
14
|
+
tools?: ToolRegistry
|
|
13
15
|
signal?: AbortSignal | undefined
|
|
14
16
|
}
|
|
15
17
|
|
|
@@ -28,6 +30,7 @@ export function Agent<Y extends Rune, T>(
|
|
|
28
30
|
[HandlerContext, config?.handler],
|
|
29
31
|
[ModelRegistryContext, config?.models ?? new ModelRegistry()],
|
|
30
32
|
[MessageRegistryContext, config?.messages ?? new MessageRegistry()],
|
|
33
|
+
[ToolRegistryContext, config?.tools ?? new ToolRegistry()],
|
|
31
34
|
])
|
|
32
35
|
.run(() => new Fiber(runic).resolution().then(onfulfilled, onrejected))
|
|
33
36
|
},
|
package/CHANGELOG.md
CHANGED
package/Context.ts
CHANGED
|
@@ -14,15 +14,6 @@ export class Context extends Map<ContextHandle, unknown> {
|
|
|
14
14
|
return super.get(context) as never
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
getOrInit<V>(context: ContextHandle<V>, init: () => V): V {
|
|
18
|
-
if (this.has(context)) {
|
|
19
|
-
return this.get(context) as V
|
|
20
|
-
}
|
|
21
|
-
const instance = init()
|
|
22
|
-
this.set(context, instance)
|
|
23
|
-
return instance
|
|
24
|
-
}
|
|
25
|
-
|
|
26
17
|
set<V>(context: ContextHandle<V>, value: V): this {
|
|
27
18
|
super.set(context, value)
|
|
28
19
|
return this
|
|
@@ -44,7 +35,7 @@ export class Context extends Map<ContextHandle, unknown> {
|
|
|
44
35
|
}
|
|
45
36
|
|
|
46
37
|
export type ContextHandle<V = any> = {
|
|
47
|
-
clone
|
|
38
|
+
clone: ((value: V) => V) | undefined
|
|
48
39
|
}
|
|
49
40
|
|
|
50
41
|
export function ContextHandle<V>(clone?: (value: V) => V): ContextHandle<V> {
|
package/Fiber.ts
CHANGED
|
@@ -50,8 +50,8 @@ export class Fiber<T = any> {
|
|
|
50
50
|
this.abort = controller.abort.bind(controller)
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
|
|
54
|
-
return
|
|
53
|
+
fork<T>(runic: Runic<Rune, T>): Fiber<T> {
|
|
54
|
+
return new Fiber(runic, this)
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
resolution(this: Fiber<T>): Promise<T> {
|
|
@@ -75,9 +75,17 @@ export class Fiber<T = any> {
|
|
|
75
75
|
current = await iterator.next(nextArg)
|
|
76
76
|
}
|
|
77
77
|
const { value } = current
|
|
78
|
+
this.status = {
|
|
79
|
+
type: "resolved",
|
|
80
|
+
value,
|
|
81
|
+
}
|
|
78
82
|
abort()
|
|
79
83
|
resolve(value)
|
|
80
84
|
} catch (exception) {
|
|
85
|
+
this.status = {
|
|
86
|
+
type: "rejected",
|
|
87
|
+
exception,
|
|
88
|
+
}
|
|
81
89
|
abort(exception)
|
|
82
90
|
reject(exception)
|
|
83
91
|
}
|
package/L/_infer.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { SchemaObject } from "liminal-schema"
|
|
2
2
|
import { assert } from "liminal-util"
|
|
3
|
-
import { Context
|
|
3
|
+
import { Context } from "../Context.ts"
|
|
4
4
|
import { InferenceRequested, Inferred, type LEvent } from "../LEvent.ts"
|
|
5
5
|
import { MessageRegistryContext } from "../MessageRegistry.ts"
|
|
6
6
|
import { ModelRegistryContext } from "../ModelRegistry.ts"
|
|
@@ -14,20 +14,18 @@ export function* _infer(schema?: SchemaObject): Generator<Rune<LEvent>, string>
|
|
|
14
14
|
assert(modelRegistry)
|
|
15
15
|
const model = modelRegistry.peek()
|
|
16
16
|
assert(model)
|
|
17
|
-
const requestId =
|
|
17
|
+
const requestId = InferenceCounter.next()
|
|
18
18
|
yield* emit(new InferenceRequested(requestId, schema))
|
|
19
19
|
const messageRegistry = context.get(MessageRegistryContext)
|
|
20
20
|
assert(messageRegistry)
|
|
21
|
-
const inference = yield* rune(() => model.resolve(messageRegistry.messages, schema))
|
|
21
|
+
const inference = yield* rune(() => model.resolve(messageRegistry.messages, schema), "infer")
|
|
22
22
|
yield* emit(new Inferred(requestId, inference))
|
|
23
23
|
return inference
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
class
|
|
27
|
-
count: number = 0
|
|
28
|
-
next(): number {
|
|
26
|
+
class InferenceCounter {
|
|
27
|
+
static count: number = 0
|
|
28
|
+
static next(): number {
|
|
29
29
|
return this.count++
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
-
|
|
33
|
-
const InferenceRequestCounterContext: ContextHandle<InferenceRequestCounter> = ContextHandle()
|
package/L/assistant.ts
CHANGED
|
@@ -15,7 +15,7 @@ export const assistant: assistant = Object.assign(
|
|
|
15
15
|
const inference = yield* _infer(schema)
|
|
16
16
|
yield* _message("assistant", [{ part: inference }])
|
|
17
17
|
const input = JSON.parse(inference)
|
|
18
|
-
return yield* rune(() => validate(type, input))
|
|
18
|
+
return yield* rune(() => validate(type, input), "validate_assistant_message")
|
|
19
19
|
},
|
|
20
20
|
{
|
|
21
21
|
*[Symbol.iterator]() {
|
package/L/branch.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Context } from "../Context.ts"
|
|
2
|
-
import { Fiber } from "../Fiber.ts"
|
|
3
2
|
import { type Rune } from "../Rune.ts"
|
|
4
3
|
import type { Runic } from "../Runic.ts"
|
|
5
4
|
import { rune } from "./rune.ts"
|
|
@@ -15,22 +14,20 @@ export function branch<XR extends Record<keyof any, Runic>>(
|
|
|
15
14
|
): branch<Runic.Y<XR[keyof XR]> | Rune<never>, { [K in keyof XR]: Runic.T<XR[K]> }>
|
|
16
15
|
export function* branch(value: Runic | Array<Runic> | Record<keyof any, Runic>): branch<Rune, any> {
|
|
17
16
|
const context = Context.ensure()
|
|
18
|
-
const parent = yield* rune
|
|
17
|
+
const parent = yield* rune
|
|
19
18
|
if (Array.isArray(value)) {
|
|
20
|
-
const fibers = value.map((runic) => context.clone().run(() =>
|
|
21
|
-
return yield* rune(() =>
|
|
19
|
+
const fibers = value.map((runic) => context.clone().run(() => parent.fork(runic)))
|
|
20
|
+
return yield* rune(() => Promise.all(fibers.map((fiber) => fiber.resolution())), "branch")
|
|
22
21
|
} else if (typeof value === "object") {
|
|
23
|
-
const fibers = Object.values(value).map(
|
|
24
|
-
(runic) => context.clone().run(() => new Fiber(runic, parent)),
|
|
25
|
-
)
|
|
22
|
+
const fibers = Object.values(value).map((runic) => context.clone().run(() => parent.fork(runic)))
|
|
26
23
|
return yield* rune(async () => {
|
|
27
24
|
const keys = Object.keys(value)
|
|
28
|
-
return await
|
|
29
|
-
.
|
|
25
|
+
return await Promise
|
|
26
|
+
.all(fibers.map((fiber) => fiber.resolution()))
|
|
30
27
|
.then((resolved) => resolved.map((value, i) => [keys[i], value]))
|
|
31
28
|
.then(Object.fromEntries)
|
|
32
|
-
})
|
|
29
|
+
}, "branch")
|
|
33
30
|
}
|
|
34
|
-
const fiber = context.clone().run(() =>
|
|
35
|
-
return yield* rune(() => fiber.resolution())
|
|
31
|
+
const fiber = context.clone().run(() => parent.fork(typeof value === "function" ? value() : value))
|
|
32
|
+
return yield* rune(() => fiber.resolution(), "branch")
|
|
36
33
|
}
|
package/L/catch.ts
CHANGED
|
@@ -1,17 +1,16 @@
|
|
|
1
|
-
import { Fiber } from "../Fiber.ts"
|
|
2
1
|
import type { Rune } from "../Rune.ts"
|
|
3
2
|
import type { Runic } from "../Runic.ts"
|
|
4
3
|
import { rune } from "./rune.ts"
|
|
5
4
|
|
|
6
5
|
export { catch_ as catch }
|
|
7
6
|
function* catch_<Y extends Rune, T>(runic: Runic<Y, T>): Generator<Rune<Y>, CatchResult<T>> {
|
|
8
|
-
return yield* rune(async () => {
|
|
7
|
+
return yield* rune(async (fiber) => {
|
|
9
8
|
try {
|
|
10
|
-
return { resolved: await
|
|
9
|
+
return { resolved: await fiber.fork(runic).resolution() }
|
|
11
10
|
} catch (exception: unknown) {
|
|
12
11
|
return { rejected: exception }
|
|
13
12
|
}
|
|
14
|
-
})
|
|
13
|
+
}, "catch")
|
|
15
14
|
}
|
|
16
15
|
Object.defineProperty(catch_, "name", { value: "catch" })
|
|
17
16
|
|
package/L/emit.ts
CHANGED
|
@@ -9,6 +9,6 @@ export interface emit<E> extends Generator<Rune<E>, void> {}
|
|
|
9
9
|
export function* emit<const E>(event: EnsureNarrow<E>): emit<E> {
|
|
10
10
|
const context = Context.ensure()
|
|
11
11
|
const handler = context.get(HandlerContext)
|
|
12
|
-
const fiber = yield* rune
|
|
12
|
+
const fiber = yield* rune
|
|
13
13
|
handler?.call(fiber, event)
|
|
14
14
|
}
|
package/L/rune.ts
CHANGED
|
@@ -1,19 +1,30 @@
|
|
|
1
1
|
import { Fiber } from "../Fiber.ts"
|
|
2
2
|
import { type Rune, RuneKey } from "../Rune.ts"
|
|
3
3
|
|
|
4
|
-
export interface rune
|
|
5
|
-
<
|
|
4
|
+
export interface rune extends Iterable<Rune<never>, Fiber> {
|
|
5
|
+
<R>(source: (fiber: Fiber) => R, debug?: string): Iterable<Rune<never>, Awaited<R>> & {
|
|
6
|
+
<E>(): Generator<Rune<E>, Awaited<R>>
|
|
7
|
+
}
|
|
6
8
|
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
*[Symbol.iterator](): Generator<Rune<never>, Awaited<R>> {
|
|
15
|
-
return yield Object.assign(source, { [RuneKey]: true } as never)
|
|
9
|
+
export const rune: rune = Object.assign(
|
|
10
|
+
function<R>(source: (fiber: Fiber) => R, debug?: string) {
|
|
11
|
+
return Object.assign(
|
|
12
|
+
function*<E>(): Generator<Rune<E>, Awaited<R>> {
|
|
13
|
+
return yield Object.assign(source, { [RuneKey]: true, debug } as never)
|
|
16
14
|
},
|
|
15
|
+
{
|
|
16
|
+
*[Symbol.iterator](): Generator<Rune<never>, Awaited<R>> {
|
|
17
|
+
return yield Object.assign(source, { [RuneKey]: true, debug } as never)
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
)
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
*[Symbol.iterator](): Generator<Rune<never>, Fiber> {
|
|
24
|
+
return yield Object.assign((fiber: Fiber) => fiber, {
|
|
25
|
+
[RuneKey]: true,
|
|
26
|
+
debug: "get_current_fiber",
|
|
27
|
+
} as never)
|
|
17
28
|
},
|
|
18
|
-
|
|
19
|
-
|
|
29
|
+
},
|
|
30
|
+
)
|
package/LEvent.ts
CHANGED
|
@@ -58,5 +58,5 @@ export class FiberResolved extends EventBase(LEventTag, "fiber_resolved") {
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
export function isLEvent(value: unknown): value is LEvent {
|
|
61
|
-
return typeof value === "object" && value !== null &&
|
|
61
|
+
return typeof value === "object" && value !== null && "brand" in value && value.brand === LEventTag
|
|
62
62
|
}
|
package/ModelRegistry.ts
CHANGED
|
@@ -6,14 +6,6 @@ export class ModelRegistry {
|
|
|
6
6
|
declare head?: ModelRegistryNode | undefined
|
|
7
7
|
declare tail?: ModelRegistryNode | undefined
|
|
8
8
|
|
|
9
|
-
constructor(models?: Array<Model>) {
|
|
10
|
-
if (models) {
|
|
11
|
-
for (const model of models) {
|
|
12
|
-
this.register(model)
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
|
|
17
9
|
peek() {
|
|
18
10
|
return this.tail?.model
|
|
19
11
|
}
|
package/Rune.ts
CHANGED
package/Tool.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type LType, type SchemaObject, toJSONSchema, validate, type Value, type ValueObject } from "liminal-schema"
|
|
2
|
+
import { subtle } from "node:crypto"
|
|
3
|
+
|
|
4
|
+
export class Tool {
|
|
5
|
+
static async make<T extends ValueObject>(
|
|
6
|
+
description: string,
|
|
7
|
+
type: LType<T>,
|
|
8
|
+
f: (arg: T) => Value | Promise<Value>,
|
|
9
|
+
) {
|
|
10
|
+
const encoder = new TextEncoder()
|
|
11
|
+
const schema = toJSONSchema(type)
|
|
12
|
+
const buffer = await subtle.digest("SHA-256", encoder.encode(description + "\n\n" + JSON.stringify(schema)))
|
|
13
|
+
const bytes = new Uint8Array(buffer)
|
|
14
|
+
let binary = ""
|
|
15
|
+
for (const b of bytes) binary += String.fromCharCode(b)
|
|
16
|
+
const base64 = btoa(binary)
|
|
17
|
+
.replace(/\+/g, "-")
|
|
18
|
+
.replace(/\//g, "_")
|
|
19
|
+
.replace(/=+$/, "")
|
|
20
|
+
return new Tool(base64, description, schema, async (arg) => {
|
|
21
|
+
return await f(await validate(type, arg) as never)
|
|
22
|
+
})
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
constructor(
|
|
26
|
+
readonly name: string,
|
|
27
|
+
readonly description: string,
|
|
28
|
+
readonly parameterSchema: SchemaObject,
|
|
29
|
+
readonly f: (arg: any) => Value | Promise<Value>,
|
|
30
|
+
) {}
|
|
31
|
+
}
|
package/ToolRegistry.ts
ADDED
package/dist/Agent.d.ts
CHANGED
|
@@ -3,10 +3,12 @@ import { MessageRegistry } from "./MessageRegistry.ts";
|
|
|
3
3
|
import { ModelRegistry } from "./ModelRegistry.ts";
|
|
4
4
|
import type { Rune } from "./Rune.ts";
|
|
5
5
|
import type { Runic } from "./Runic.ts";
|
|
6
|
+
import { ToolRegistry } from "./ToolRegistry.ts";
|
|
6
7
|
export interface AgentConfig<T, E> {
|
|
7
8
|
handler?: ((this: Fiber<T>, event: E) => void) | undefined;
|
|
8
9
|
models?: ModelRegistry;
|
|
9
10
|
messages?: MessageRegistry;
|
|
11
|
+
tools?: ToolRegistry;
|
|
10
12
|
signal?: AbortSignal | undefined;
|
|
11
13
|
}
|
|
12
14
|
export interface Agent<out T, out E> extends PromiseLike<T> {
|
package/dist/Agent.js
CHANGED
|
@@ -3,6 +3,7 @@ import { Fiber } from "./Fiber.js";
|
|
|
3
3
|
import { HandlerContext } from "./Handler.js";
|
|
4
4
|
import { MessageRegistry, MessageRegistryContext } from "./MessageRegistry.js";
|
|
5
5
|
import { ModelRegistry, ModelRegistryContext } from "./ModelRegistry.js";
|
|
6
|
+
import { ToolRegistry, ToolRegistryContext } from "./ToolRegistry.js";
|
|
6
7
|
export function Agent(runic, config) {
|
|
7
8
|
return {
|
|
8
9
|
then(onfulfilled, onrejected) {
|
|
@@ -10,6 +11,7 @@ export function Agent(runic, config) {
|
|
|
10
11
|
[HandlerContext, config?.handler],
|
|
11
12
|
[ModelRegistryContext, config?.models ?? new ModelRegistry()],
|
|
12
13
|
[MessageRegistryContext, config?.messages ?? new MessageRegistry()],
|
|
14
|
+
[ToolRegistryContext, config?.tools ?? new ToolRegistry()],
|
|
13
15
|
])
|
|
14
16
|
.run(() => new Fiber(runic).resolution().then(onfulfilled, onrejected));
|
|
15
17
|
},
|
package/dist/Agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Agent.js","sourceRoot":"","sources":["../Agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAC9E,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"Agent.js","sourceRoot":"","sources":["../Agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAC9E,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAGxE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAerE,MAAM,UAAU,KAAK,CACnB,KAAkB,EAClB,MAAkC;IAElC,OAAO;QACL,IAAI,CAAC,WAAW,EAAE,UAAU;YAC1B,OAAO,IAAI,OAAO,CAAC;gBACjB,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC;gBACjC,CAAC,oBAAoB,EAAE,MAAM,EAAE,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;gBAC7D,CAAC,sBAAsB,EAAE,MAAM,EAAE,QAAQ,IAAI,IAAI,eAAe,EAAE,CAAC;gBACnE,CAAC,mBAAmB,EAAE,MAAM,EAAE,KAAK,IAAI,IAAI,YAAY,EAAE,CAAC;aAC3D,CAAC;iBACC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAA;QAC3E,CAAC;KACsD,CAAA;AAC3D,CAAC"}
|
package/dist/Context.d.ts
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
export declare class Context extends Map<ContextHandle, unknown> {
|
|
2
2
|
static ensure(): Context;
|
|
3
3
|
get<V>(context: ContextHandle<V>): V | undefined;
|
|
4
|
-
getOrInit<V>(context: ContextHandle<V>, init: () => V): V;
|
|
5
4
|
set<V>(context: ContextHandle<V>, value: V): this;
|
|
6
5
|
run<R>(callback: () => R): R;
|
|
7
6
|
clone(overrides?: Iterable<[ContextHandle, unknown]>): Context;
|
|
8
7
|
}
|
|
9
8
|
export type ContextHandle<V = any> = {
|
|
10
|
-
clone
|
|
9
|
+
clone: ((value: V) => V) | undefined;
|
|
11
10
|
};
|
|
12
11
|
export declare function ContextHandle<V>(clone?: (value: V) => V): ContextHandle<V>;
|
package/dist/Context.js
CHANGED
|
@@ -10,14 +10,6 @@ export class Context extends Map {
|
|
|
10
10
|
get(context) {
|
|
11
11
|
return super.get(context);
|
|
12
12
|
}
|
|
13
|
-
getOrInit(context, init) {
|
|
14
|
-
if (this.has(context)) {
|
|
15
|
-
return this.get(context);
|
|
16
|
-
}
|
|
17
|
-
const instance = init();
|
|
18
|
-
this.set(context, instance);
|
|
19
|
-
return instance;
|
|
20
|
-
}
|
|
21
13
|
set(context, value) {
|
|
22
14
|
super.set(context, value);
|
|
23
15
|
return this;
|
package/dist/Context.js.map
CHANGED
|
@@ -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,GAA2B;IACtD,MAAM,CAAC,MAAM;QACX,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAA;QAClC,MAAM,CAAC,OAAO,CAAC,CAAA;QACf,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,GAAG,CAAI,OAAyB;QAC9B,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,CAAU,CAAA;IACpC,CAAC;IAED,
|
|
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,GAA2B;IACtD,MAAM,CAAC,MAAM;QACX,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAA;QAClC,MAAM,CAAC,OAAO,CAAC,CAAA;QACf,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,GAAG,CAAI,OAAyB;QAC9B,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,CAAU,CAAA;IACpC,CAAC;IAED,GAAG,CAAI,OAAyB,EAAE,KAAQ;QACxC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QACzB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,GAAG,CAAI,QAAiB;QACtB,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,SAA8C;QAClD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC,CAAA;QACtC,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,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAA;YACrD,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;CACF;AAMD,MAAM,UAAU,aAAa,CAAI,KAAuB;IACtD,OAAO,EAAE,KAAK,EAAE,CAAA;AAClB,CAAC"}
|
package/dist/Fiber.d.ts
CHANGED
|
@@ -27,8 +27,6 @@ export declare class Fiber<T = any> {
|
|
|
27
27
|
abort: (reason?: any) => void;
|
|
28
28
|
status: FiberStatus<T>;
|
|
29
29
|
constructor(runic: Runic<Rune, T>, parent?: Fiber);
|
|
30
|
-
|
|
31
|
-
[I in keyof F]: F[I]["T"];
|
|
32
|
-
}>;
|
|
30
|
+
fork<T>(runic: Runic<Rune, T>): Fiber<T>;
|
|
33
31
|
resolution(this: Fiber<T>): Promise<T>;
|
|
34
32
|
}
|
package/dist/Fiber.js
CHANGED
|
@@ -23,8 +23,8 @@ export class Fiber {
|
|
|
23
23
|
]);
|
|
24
24
|
this.abort = controller.abort.bind(controller);
|
|
25
25
|
}
|
|
26
|
-
|
|
27
|
-
return
|
|
26
|
+
fork(runic) {
|
|
27
|
+
return new Fiber(runic, this);
|
|
28
28
|
}
|
|
29
29
|
resolution() {
|
|
30
30
|
const { status, abort } = this;
|
|
@@ -47,10 +47,18 @@ export class Fiber {
|
|
|
47
47
|
current = await iterator.next(nextArg);
|
|
48
48
|
}
|
|
49
49
|
const { value } = current;
|
|
50
|
+
this.status = {
|
|
51
|
+
type: "resolved",
|
|
52
|
+
value,
|
|
53
|
+
};
|
|
50
54
|
abort();
|
|
51
55
|
resolve(value);
|
|
52
56
|
}
|
|
53
57
|
catch (exception) {
|
|
58
|
+
this.status = {
|
|
59
|
+
type: "rejected",
|
|
60
|
+
exception,
|
|
61
|
+
};
|
|
54
62
|
abort(exception);
|
|
55
63
|
reject(exception);
|
|
56
64
|
}
|
package/dist/Fiber.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Fiber.js","sourceRoot":"","sources":["../Fiber.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAmBlC,MAAM,OAAO,KAAK;IAChB,MAAM,CAAC,SAAS,GAAW,CAAC,CAAA;IAGnB,KAAK,GAAW,KAAK,CAAC,SAAS,EAAE,CAAA;IAE1C,MAAM,CAAgB;IAEtB,QAAQ,GAAY,OAAO,CAAC,MAAM,EAAE,CAAA;IAEpC,MAAM,CAAa;IACnB,MAAM,CAAa;IACnB,KAAK,CAAwB;IAE7B,MAAM,GAAmB,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;IAE9C,YAAY,KAAqB,EAAE,MAAc;QAC/C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACtB,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QACxC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;QAC/B,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC;YAC5B,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;YAClD,IAAI,CAAC,MAAM;SACZ,CAAC,CAAA;QACF,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAChD,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"Fiber.js","sourceRoot":"","sources":["../Fiber.ts"],"names":[],"mappings":"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"}
|
package/dist/L/_infer.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { assert } from "liminal-util";
|
|
2
|
-
import { Context
|
|
2
|
+
import { Context } from "../Context.js";
|
|
3
3
|
import { InferenceRequested, Inferred } from "../LEvent.js";
|
|
4
4
|
import { MessageRegistryContext } from "../MessageRegistry.js";
|
|
5
5
|
import { ModelRegistryContext } from "../ModelRegistry.js";
|
|
@@ -11,19 +11,18 @@ export function* _infer(schema) {
|
|
|
11
11
|
assert(modelRegistry);
|
|
12
12
|
const model = modelRegistry.peek();
|
|
13
13
|
assert(model);
|
|
14
|
-
const requestId =
|
|
14
|
+
const requestId = InferenceCounter.next();
|
|
15
15
|
yield* emit(new InferenceRequested(requestId, schema));
|
|
16
16
|
const messageRegistry = context.get(MessageRegistryContext);
|
|
17
17
|
assert(messageRegistry);
|
|
18
|
-
const inference = yield* rune(() => model.resolve(messageRegistry.messages, schema));
|
|
18
|
+
const inference = yield* rune(() => model.resolve(messageRegistry.messages, schema), "infer");
|
|
19
19
|
yield* emit(new Inferred(requestId, inference));
|
|
20
20
|
return inference;
|
|
21
21
|
}
|
|
22
|
-
class
|
|
23
|
-
count = 0;
|
|
24
|
-
next() {
|
|
22
|
+
class InferenceCounter {
|
|
23
|
+
static count = 0;
|
|
24
|
+
static next() {
|
|
25
25
|
return this.count++;
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
|
-
const InferenceRequestCounterContext = ContextHandle();
|
|
29
28
|
//# sourceMappingURL=_infer.js.map
|
package/dist/L/_infer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_infer.js","sourceRoot":"","sources":["../../L/_infer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"_infer.js","sourceRoot":"","sources":["../../L/_infer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAe,MAAM,cAAc,CAAA;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAE1D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,MAAM,SAAS,CAAC,CAAC,MAAM,CAAC,MAAqB;IAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAA;IAChC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;IACvD,MAAM,CAAC,aAAa,CAAC,CAAA;IACrB,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,CAAA;IAClC,MAAM,CAAC,KAAK,CAAC,CAAA;IACb,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,EAAE,CAAA;IACzC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAA;IACtD,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;IAC3D,MAAM,CAAC,eAAe,CAAC,CAAA;IACvB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,CAAA;IAC7F,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAA;IAC/C,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,gBAAgB;IACpB,MAAM,CAAC,KAAK,GAAW,CAAC,CAAA;IACxB,MAAM,CAAC,IAAI;QACT,OAAO,IAAI,CAAC,KAAK,EAAE,CAAA;IACrB,CAAC"}
|
package/dist/L/assistant.js
CHANGED
|
@@ -7,7 +7,7 @@ export const assistant = Object.assign(function* (type) {
|
|
|
7
7
|
const inference = yield* _infer(schema);
|
|
8
8
|
yield* _message("assistant", [{ part: inference }]);
|
|
9
9
|
const input = JSON.parse(inference);
|
|
10
|
-
return yield* rune(() => validate(type, input));
|
|
10
|
+
return yield* rune(() => validate(type, input), "validate_assistant_message");
|
|
11
11
|
}, {
|
|
12
12
|
*[Symbol.iterator]() {
|
|
13
13
|
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":"AAAA,OAAO,EAAc,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAGnE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,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,MAAM,CAAC,MAAM,CAAC,CAAA;IACvC,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;IACnD,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,CAAC,CAAA;
|
|
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,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,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,MAAM,CAAC,MAAM,CAAC,CAAA;IACvC,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;IACnD,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,MAAM,EAAE,CAAA;QACjC,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;QACnD,OAAO,SAAS,CAAA;IAClB,CAAC;CACF,CACF,CAAA"}
|
package/dist/L/branch.js
CHANGED
|
@@ -1,25 +1,24 @@
|
|
|
1
1
|
import { Context } from "../Context.js";
|
|
2
|
-
import { Fiber } from "../Fiber.js";
|
|
3
2
|
import {} from "../Rune.js";
|
|
4
3
|
import { rune } from "./rune.js";
|
|
5
4
|
export function* branch(value) {
|
|
6
5
|
const context = Context.ensure();
|
|
7
|
-
const parent = yield* rune
|
|
6
|
+
const parent = yield* rune;
|
|
8
7
|
if (Array.isArray(value)) {
|
|
9
|
-
const fibers = value.map((runic) => context.clone().run(() =>
|
|
10
|
-
return yield* rune(() =>
|
|
8
|
+
const fibers = value.map((runic) => context.clone().run(() => parent.fork(runic)));
|
|
9
|
+
return yield* rune(() => Promise.all(fibers.map((fiber) => fiber.resolution())), "branch");
|
|
11
10
|
}
|
|
12
11
|
else if (typeof value === "object") {
|
|
13
|
-
const fibers = Object.values(value).map((runic) => context.clone().run(() =>
|
|
12
|
+
const fibers = Object.values(value).map((runic) => context.clone().run(() => parent.fork(runic)));
|
|
14
13
|
return yield* rune(async () => {
|
|
15
14
|
const keys = Object.keys(value);
|
|
16
|
-
return await
|
|
17
|
-
.
|
|
15
|
+
return await Promise
|
|
16
|
+
.all(fibers.map((fiber) => fiber.resolution()))
|
|
18
17
|
.then((resolved) => resolved.map((value, i) => [keys[i], value]))
|
|
19
18
|
.then(Object.fromEntries);
|
|
20
|
-
});
|
|
19
|
+
}, "branch");
|
|
21
20
|
}
|
|
22
|
-
const fiber = context.clone().run(() =>
|
|
23
|
-
return yield* rune(() => fiber.resolution());
|
|
21
|
+
const fiber = context.clone().run(() => parent.fork(typeof value === "function" ? value() : value));
|
|
22
|
+
return yield* rune(() => fiber.resolution(), "branch");
|
|
24
23
|
}
|
|
25
24
|
//# sourceMappingURL=branch.js.map
|
package/dist/L/branch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branch.js","sourceRoot":"","sources":["../../L/branch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,
|
|
1
|
+
{"version":3,"file":"branch.js","sourceRoot":"","sources":["../../L/branch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAa,MAAM,YAAY,CAAA;AAEtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAWhC,MAAM,SAAS,CAAC,CAAC,MAAM,CAAC,KAAsD;IAC5E,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAA;IAChC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,IAAI,CAAA;IAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAClF,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;IAC5F,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACjG,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC/B,OAAO,MAAM,OAAO;iBACjB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;iBAC9C,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;iBAChE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QAC7B,CAAC,EAAE,QAAQ,CAAC,CAAA;IACd,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;IACnG,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,QAAQ,CAAC,CAAA;AACxD,CAAC"}
|
package/dist/L/catch.js
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import { Fiber } from "../Fiber.js";
|
|
2
1
|
import { rune } from "./rune.js";
|
|
3
2
|
export { catch_ as catch };
|
|
4
3
|
function* catch_(runic) {
|
|
5
|
-
return yield* rune(async () => {
|
|
4
|
+
return yield* rune(async (fiber) => {
|
|
6
5
|
try {
|
|
7
|
-
return { resolved: await
|
|
6
|
+
return { resolved: await fiber.fork(runic).resolution() };
|
|
8
7
|
}
|
|
9
8
|
catch (exception) {
|
|
10
9
|
return { rejected: exception };
|
|
11
10
|
}
|
|
12
|
-
});
|
|
11
|
+
}, "catch");
|
|
13
12
|
}
|
|
14
13
|
Object.defineProperty(catch_, "name", { value: "catch" });
|
|
15
14
|
//# sourceMappingURL=catch.js.map
|
package/dist/L/catch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catch.js","sourceRoot":"","sources":["../../L/catch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"catch.js","sourceRoot":"","sources":["../../L/catch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAE,MAAM,IAAI,KAAK,EAAE,CAAA;AAC1B,QAAQ,CAAC,CAAC,MAAM,CAAoB,KAAkB;IACpD,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACjC,IAAI,CAAC;YACH,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE,CAAA;QAC3D,CAAC;QAAC,OAAO,SAAkB,EAAE,CAAC;YAC5B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAA;QAChC,CAAC;IACH,CAAC,EAAE,OAAO,CAAC,CAAA;AACb,CAAC;AACD,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA"}
|
package/dist/L/emit.js
CHANGED
|
@@ -4,7 +4,7 @@ import { rune } from "./rune.js";
|
|
|
4
4
|
export function* emit(event) {
|
|
5
5
|
const context = Context.ensure();
|
|
6
6
|
const handler = context.get(HandlerContext);
|
|
7
|
-
const fiber = yield* rune
|
|
7
|
+
const fiber = yield* rune;
|
|
8
8
|
handler?.call(fiber, event);
|
|
9
9
|
}
|
|
10
10
|
//# sourceMappingURL=emit.js.map
|
package/dist/L/emit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emit.js","sourceRoot":"","sources":["../../L/emit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE9C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAIhC,MAAM,SAAS,CAAC,CAAC,IAAI,CAAU,KAAsB;IACnD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAA;IAChC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;IAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"emit.js","sourceRoot":"","sources":["../../L/emit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE9C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAIhC,MAAM,SAAS,CAAC,CAAC,IAAI,CAAU,KAAsB;IACnD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAA;IAChC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;IAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,IAAI,CAAA;IACzB,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAC7B,CAAC"}
|
package/dist/L/rune.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Fiber } from "../Fiber.ts";
|
|
2
2
|
import { type Rune } from "../Rune.ts";
|
|
3
|
-
export interface rune
|
|
4
|
-
<
|
|
3
|
+
export interface rune extends Iterable<Rune<never>, Fiber> {
|
|
4
|
+
<R>(source: (fiber: Fiber) => R, debug?: string): Iterable<Rune<never>, Awaited<R>> & {
|
|
5
|
+
<E>(): Generator<Rune<E>, Awaited<R>>;
|
|
6
|
+
};
|
|
5
7
|
}
|
|
6
|
-
export declare
|
|
8
|
+
export declare const rune: rune;
|