liminal 0.5.4 → 0.5.6
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 +24 -16
- package/CHANGELOG.md +12 -0
- package/Context.ts +52 -0
- package/EventBase.ts +21 -8
- package/Fiber.ts +44 -57
- package/Handler.ts +6 -0
- package/L/L.ts +0 -3
- package/L/_infer.ts +14 -21
- package/L/_message.ts +6 -4
- package/L/branch.ts +15 -33
- package/L/emit.ts +10 -2
- package/L/model.ts +11 -6
- package/L/rune.ts +2 -2
- package/LEvent.ts +25 -21
- package/MessageRegistry.ts +21 -0
- package/{state/ModelRegistry.ts → ModelRegistry.ts} +17 -18
- package/Rune.ts +2 -2
- package/Runic.ts +11 -3
- package/RuntimeEvent.ts +6 -0
- package/dist/Agent.d.ts +11 -7
- package/dist/Agent.js +11 -8
- package/dist/Agent.js.map +1 -1
- package/dist/Context.d.ts +12 -0
- package/dist/Context.js +41 -0
- package/dist/Context.js.map +1 -0
- package/dist/EventBase.d.ts +7 -4
- package/dist/EventBase.js +17 -11
- package/dist/EventBase.js.map +1 -1
- package/dist/Fiber.d.ts +7 -19
- package/dist/Fiber.js +38 -34
- package/dist/Fiber.js.map +1 -1
- package/dist/Handler.d.ts +4 -1
- package/dist/Handler.js +2 -1
- package/dist/Handler.js.map +1 -1
- package/dist/L/L.d.ts +0 -3
- package/dist/L/L.js +0 -3
- package/dist/L/L.js.map +1 -1
- package/dist/L/_infer.js +15 -18
- package/dist/L/_infer.js.map +1 -1
- package/dist/L/_message.js +6 -4
- package/dist/L/_message.js.map +1 -1
- package/dist/L/branch.js +13 -32
- package/dist/L/branch.js.map +1 -1
- package/dist/L/emit.js +10 -2
- package/dist/L/emit.js.map +1 -1
- package/dist/L/model.d.ts +2 -1
- package/dist/L/model.js +10 -5
- package/dist/L/model.js.map +1 -1
- package/dist/L/rune.d.ts +2 -2
- package/dist/L/rune.js +1 -0
- package/dist/L/rune.js.map +1 -1
- package/dist/LEvent.d.ts +55 -10
- package/dist/LEvent.js +17 -16
- package/dist/LEvent.js.map +1 -1
- package/dist/MessageRegistry.d.ts +9 -0
- package/dist/MessageRegistry.js +15 -0
- package/dist/MessageRegistry.js.map +1 -0
- package/dist/{state/ModelRegistry.d.ts → ModelRegistry.d.ts} +4 -3
- package/dist/{state/ModelRegistry.js → ModelRegistry.js} +12 -13
- package/dist/ModelRegistry.js.map +1 -0
- package/dist/Rune.d.ts +2 -2
- package/dist/Runic.d.ts +3 -3
- package/dist/Runic.js.map +1 -1
- package/dist/RuntimeEvent.d.ts +5 -0
- package/dist/RuntimeEvent.js +2 -0
- package/dist/RuntimeEvent.js.map +1 -0
- package/dist/index.d.ts +3 -4
- package/dist/index.js +3 -4
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/index.ts +3 -4
- package/package.json +1 -1
- package/Globals.ts +0 -10
- package/L/all.ts +0 -11
- package/L/fork.ts +0 -20
- package/L/join.ts +0 -9
- package/L/namespace.ts +0 -11
- package/L/self.ts +0 -13
- package/dist/Globals.d.ts +0 -6
- package/dist/Globals.js +0 -2
- package/dist/Globals.js.map +0 -1
- package/dist/L/all.d.ts +0 -7
- package/dist/L/all.js +0 -5
- package/dist/L/all.js.map +0 -1
- package/dist/L/fork.d.ts +0 -1
- package/dist/L/fork.js +0 -20
- package/dist/L/fork.js.map +0 -1
- package/dist/L/join.d.ts +0 -5
- package/dist/L/join.js +0 -5
- package/dist/L/join.js.map +0 -1
- package/dist/L/namespace.d.ts +0 -1
- package/dist/L/namespace.js +0 -12
- package/dist/L/namespace.js.map +0 -1
- package/dist/L/self.d.ts +0 -6
- package/dist/L/self.js +0 -7
- package/dist/L/self.js.map +0 -1
- package/dist/run.d.ts +0 -3
- package/dist/run.js +0 -35
- package/dist/run.js.map +0 -1
- package/dist/state/Context.d.ts +0 -8
- package/dist/state/Context.js +0 -17
- package/dist/state/Context.js.map +0 -1
- package/dist/state/MessageRegistry.d.ts +0 -8
- package/dist/state/MessageRegistry.js +0 -17
- package/dist/state/MessageRegistry.js.map +0 -1
- package/dist/state/ModelConfig.d.ts +0 -49
- package/dist/state/ModelConfig.js +0 -18
- package/dist/state/ModelConfig.js.map +0 -1
- package/dist/state/ModelRegistry.js.map +0 -1
- package/dist/state/StateMap.d.ts +0 -8
- package/dist/state/StateMap.js +0 -18
- package/dist/state/StateMap.js.map +0 -1
- package/run.ts +0 -39
- package/state/Context.ts +0 -19
- package/state/MessageRegistry.ts +0 -21
- package/state/ModelConfig.ts +0 -49
- package/state/StateMap.ts +0 -24
package/Runic.ts
CHANGED
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
import type { Rune } from "./Rune.ts"
|
|
2
2
|
|
|
3
3
|
export type RuneIterator<Y extends Rune = Rune, T = any> = Iterator<Y, T> | AsyncIterator<Y, T>
|
|
4
|
-
export type RuneIterable<Y extends Rune, T> = Iterable<Y, T> | AsyncIterable<Y, T>
|
|
4
|
+
export type RuneIterable<Y extends Rune = Rune, T = any> = Iterable<Y, T> | AsyncIterable<Y, T>
|
|
5
5
|
export type Runic<Y extends Rune = Rune, T = any> = RuneIterable<Y, T> | (() => RuneIterable<Y, T>)
|
|
6
|
+
|
|
6
7
|
export namespace Runic {
|
|
7
|
-
export type Y<
|
|
8
|
-
|
|
8
|
+
export type Y<X extends Runic> = X extends RuneIterable<infer Y> ? Y
|
|
9
|
+
: X extends () => RuneIterable<infer Y> ? Y
|
|
10
|
+
: X extends RuneIterator<infer Y> ? Y
|
|
11
|
+
: never
|
|
12
|
+
|
|
13
|
+
export type T<X extends Runic> = X extends RuneIterable<Rune, infer T> ? T
|
|
14
|
+
: X extends () => RuneIterable<Rune, infer T> ? T
|
|
15
|
+
: X extends RuneIterator<Rune, infer T> ? T
|
|
16
|
+
: never
|
|
9
17
|
|
|
10
18
|
export function unwrap<Y extends Rune, T>(runic: Runic<Y, T>): RuneIterator<Y, T> {
|
|
11
19
|
if (Symbol.iterator in runic) {
|
package/RuntimeEvent.ts
ADDED
package/dist/Agent.d.ts
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import { MessageRegistry } from "./MessageRegistry.ts";
|
|
2
|
+
import { ModelRegistry } from "./ModelRegistry.ts";
|
|
3
|
+
import type { Rune } from "./Rune.ts";
|
|
3
4
|
import type { Runic } from "./Runic.ts";
|
|
5
|
+
import type { RuntimeEvent } from "./RuntimeEvent.ts";
|
|
6
|
+
export interface AgentConfig<E> {
|
|
7
|
+
handler?: ((event: RuntimeEvent<E>) => void) | undefined;
|
|
8
|
+
models?: ModelRegistry;
|
|
9
|
+
messages?: MessageRegistry;
|
|
10
|
+
signal?: AbortSignal | undefined;
|
|
11
|
+
}
|
|
4
12
|
export interface Agent<out T, out E> extends PromiseLike<T> {
|
|
5
13
|
T: T;
|
|
6
14
|
E: E;
|
|
7
15
|
}
|
|
8
|
-
export declare function Agent<Y extends Rune, T>(runic: Runic<Y, T>, config?: AgentConfig<Y
|
|
9
|
-
export interface AgentConfig<Y extends Rune, _T> {
|
|
10
|
-
handler: (event: Y[RuneKey], info: FiberInfo) => void;
|
|
11
|
-
signal?: AbortSignal;
|
|
12
|
-
}
|
|
16
|
+
export declare function Agent<Y extends Rune, T>(runic: Runic<Y, T>, config?: AgentConfig<Rune.E<Y>>): Agent<T, Rune.E<Y>>;
|
package/dist/Agent.js
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Context } from "./Context.js";
|
|
2
|
+
import { Fiber } from "./Fiber.js";
|
|
3
|
+
import { HandlerContext } from "./Handler.js";
|
|
4
|
+
import { MessageRegistry, MessageRegistryContext } from "./MessageRegistry.js";
|
|
5
|
+
import { ModelRegistry, ModelRegistryContext } from "./ModelRegistry.js";
|
|
2
6
|
export function Agent(runic, config) {
|
|
3
7
|
return {
|
|
4
8
|
then(onfulfilled, onrejected) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}).then(onfulfilled, onrejected);
|
|
9
|
+
const rootCtx = new Context([
|
|
10
|
+
[HandlerContext, config?.handler],
|
|
11
|
+
[ModelRegistryContext, config?.models ?? new ModelRegistry()],
|
|
12
|
+
[MessageRegistryContext, config?.messages ?? new MessageRegistry()],
|
|
13
|
+
]);
|
|
14
|
+
return rootCtx.run(() => Fiber(runic).resolve().then(onfulfilled, onrejected));
|
|
12
15
|
},
|
|
13
16
|
};
|
|
14
17
|
}
|
package/dist/Agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Agent.js","sourceRoot":"","sources":["../Agent.ts"],"names":[],"mappings":"
|
|
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;AAiBxE,MAAM,UAAU,KAAK,CACnB,KAAkB,EAClB,MAA+B;IAE/B,OAAO;QACL,IAAI,CAAC,WAAW,EAAE,UAAU;YAC1B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;gBAC1B,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;aACpE,CAAC,CAAA;YACF,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAA;QAChF,CAAC;KACsD,CAAA;AAC3D,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare class Context extends Map<ContextHandle, unknown> {
|
|
2
|
+
static ensure(): Context;
|
|
3
|
+
get<V>(context: ContextHandle<V>): V | undefined;
|
|
4
|
+
getOrInit<V>(context: ContextHandle<V>, init: () => V): V;
|
|
5
|
+
set<V>(context: ContextHandle<V>, value: V): this;
|
|
6
|
+
run<R>(callback: () => R): R;
|
|
7
|
+
clone(overrides?: Iterable<[ContextHandle, unknown]>): Context;
|
|
8
|
+
}
|
|
9
|
+
export type ContextHandle<V = any> = {
|
|
10
|
+
clone?: ((value: V) => V) | undefined;
|
|
11
|
+
};
|
|
12
|
+
export declare function ContextHandle<V>(clone?: (value: V) => V): ContextHandle<V>;
|
package/dist/Context.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
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 ensure() {
|
|
6
|
+
const context = storage.getStore();
|
|
7
|
+
assert(context);
|
|
8
|
+
return context;
|
|
9
|
+
}
|
|
10
|
+
get(context) {
|
|
11
|
+
return super.get(context);
|
|
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
|
+
set(context, value) {
|
|
22
|
+
super.set(context, value);
|
|
23
|
+
return this;
|
|
24
|
+
}
|
|
25
|
+
run(callback) {
|
|
26
|
+
return storage.run(this, callback);
|
|
27
|
+
}
|
|
28
|
+
clone(overrides) {
|
|
29
|
+
const context = new Context(overrides);
|
|
30
|
+
for (const [handle, value] of this.entries()) {
|
|
31
|
+
if (!context.has(handle)) {
|
|
32
|
+
context.set(handle, handle.clone?.(value) ?? value);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return context;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export function ContextHandle(clone) {
|
|
39
|
+
return { clone };
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=Context.js.map
|
|
@@ -0,0 +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,SAAS,CAAI,OAAyB,EAAE,IAAa;QACnD,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAM,CAAA;QAC/B,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,EAAE,CAAA;QACvB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;QAC3B,OAAO,QAAQ,CAAA;IACjB,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/EventBase.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
export declare abstract class EventBase<B extends symbol, K extends string> {
|
|
1
|
+
export interface EventBase<B extends symbol = symbol, K extends string = string> {
|
|
3
2
|
readonly brand: B;
|
|
4
3
|
readonly type: K;
|
|
5
|
-
constructor(brand: B, type: K);
|
|
6
|
-
[inspect.custom](depth: number, options: InspectOptions): string;
|
|
7
4
|
}
|
|
5
|
+
export declare function EventBase<B extends symbol, K extends string>(brand: B, type: K): {
|
|
6
|
+
new (): {
|
|
7
|
+
readonly brand: B;
|
|
8
|
+
readonly type: K;
|
|
9
|
+
};
|
|
10
|
+
};
|
package/dist/EventBase.js
CHANGED
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
import { inspect } from "node:util";
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
2
|
+
export function EventBase(brand, type) {
|
|
3
|
+
return class {
|
|
4
|
+
brand = brand;
|
|
5
|
+
type = type;
|
|
6
|
+
// Allows us to circumvent a false positive ts error related to private symbols.
|
|
7
|
+
// https://github.com/microsoft/TypeScript/issues/58496
|
|
8
|
+
static {
|
|
9
|
+
Object.defineProperties(this.prototype, {
|
|
10
|
+
[inspect.custom]: {
|
|
11
|
+
value(depth, options) {
|
|
12
|
+
const { brand: _0, type: _1, ...rest } = this;
|
|
13
|
+
return `${this.constructor.name} ` + inspect(rest, { ...options, depth });
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
};
|
|
13
19
|
}
|
|
14
20
|
//# sourceMappingURL=EventBase.js.map
|
package/dist/EventBase.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventBase.js","sourceRoot":"","sources":["../EventBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAuB,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"EventBase.js","sourceRoot":"","sources":["../EventBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAuB,MAAM,WAAW,CAAA;AAOxD,MAAM,UAAU,SAAS,CAAqC,KAAQ,EAAE,IAAO;IAC7E,OAAO;QACI,KAAK,GAAG,KAAK,CAAA;QACb,IAAI,GAAG,IAAI,CAAA;QAEpB,gFAAgF;QAChF,uDAAuD;QACvD;YACE,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE;gBACtC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;oBAChB,KAAK,CAAC,KAAa,EAAE,OAAuB;wBAC1C,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAA;wBAC7C,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;oBAC3E,CAAC;iBACF;aACF,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC"}
|
package/dist/Fiber.d.ts
CHANGED
|
@@ -1,24 +1,12 @@
|
|
|
1
|
-
import type { Globals } from "./Globals.ts";
|
|
2
1
|
import type { Rune } from "./Rune.ts";
|
|
3
2
|
import { Runic } from "./Runic.ts";
|
|
4
|
-
import type { StateMap } from "./state/StateMap.ts";
|
|
5
|
-
export interface Fiber<out T = any> {
|
|
6
|
-
T: T;
|
|
7
|
-
runic: Runic<Rune, T>;
|
|
8
|
-
globals: Globals;
|
|
9
|
-
parent: Fiber<any> | undefined;
|
|
10
|
-
fiberId: number;
|
|
11
|
-
handler<E>(event: E): void;
|
|
12
|
-
run(): Promise<T>;
|
|
13
|
-
}
|
|
14
3
|
export interface FiberInfo {
|
|
15
|
-
|
|
16
|
-
|
|
4
|
+
readonly index: number;
|
|
5
|
+
readonly parent?: FiberInfo;
|
|
17
6
|
}
|
|
18
|
-
export interface
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
state?: StateMap | undefined;
|
|
7
|
+
export interface Fiber<T = any> {
|
|
8
|
+
parent?: Fiber | undefined;
|
|
9
|
+
info: FiberInfo;
|
|
10
|
+
resolve(): Promise<T>;
|
|
23
11
|
}
|
|
24
|
-
export declare function
|
|
12
|
+
export declare function Fiber<T = any>(runic: Runic<Rune, T>, parent?: Fiber): Fiber<T>;
|
package/dist/Fiber.js
CHANGED
|
@@ -1,37 +1,41 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { FiberCreated, FiberResolved, FiberStarted } from "./LEvent.js";
|
|
1
|
+
import { Context } from "./Context.js";
|
|
3
2
|
import { Runic } from "./Runic.js";
|
|
4
|
-
let
|
|
5
|
-
export function
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
let nextIndex = 0;
|
|
4
|
+
export function Fiber(runic, parent) {
|
|
5
|
+
let index = nextIndex++;
|
|
6
|
+
let pending;
|
|
7
|
+
const context = Context.ensure();
|
|
8
|
+
return {
|
|
9
|
+
parent,
|
|
10
|
+
info: {
|
|
11
|
+
index,
|
|
12
|
+
...parent && { parent: parent.info },
|
|
13
|
+
},
|
|
14
|
+
resolve,
|
|
15
|
+
};
|
|
16
|
+
function resolve() {
|
|
17
|
+
if (!pending) {
|
|
18
|
+
const { promise, resolve, reject } = Promise.withResolvers();
|
|
19
|
+
pending = promise;
|
|
20
|
+
const iterator = Runic.unwrap(runic);
|
|
21
|
+
let nextArg;
|
|
22
|
+
context.run(async () => {
|
|
23
|
+
try {
|
|
24
|
+
let current = await iterator.next();
|
|
25
|
+
while (!current.done) {
|
|
26
|
+
const rune = current.value;
|
|
27
|
+
nextArg = await rune(this);
|
|
28
|
+
current = await iterator.next(nextArg);
|
|
29
|
+
}
|
|
30
|
+
const { value } = current;
|
|
31
|
+
resolve(value);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
reject(error);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
return pending;
|
|
39
|
+
}
|
|
10
40
|
}
|
|
11
|
-
// export interface FiberConfig<T> {
|
|
12
|
-
// parent?: Fiber<any>
|
|
13
|
-
// globals: Globals
|
|
14
|
-
// runic: Runic<Rune, T>
|
|
15
|
-
// signal?: AbortSignal | undefined
|
|
16
|
-
// }
|
|
17
|
-
// export function Fiber<T>(config: FiberConfig<T>): Fiber<T> {
|
|
18
|
-
// const fiber = {
|
|
19
|
-
// runic: config.runic,
|
|
20
|
-
// globals: config.globals,
|
|
21
|
-
// parent: config.parent,
|
|
22
|
-
// fiberId: nextFiberId++,
|
|
23
|
-
// handler,
|
|
24
|
-
// run,
|
|
25
|
-
// } satisfies Omit<Fiber<T>, "T"> as Fiber<T>
|
|
26
|
-
// fiber.handler(new FiberCreated())
|
|
27
|
-
// return fiber
|
|
28
|
-
// async function run(this: Fiber<T>): Promise<T> {
|
|
29
|
-
// fiber.handler(new FiberStarted())
|
|
30
|
-
// const iterator = Runic.unwrap(this.runic)
|
|
31
|
-
// const result = await iterator.next()
|
|
32
|
-
// assert(result.done)
|
|
33
|
-
// fiber.handler(new FiberResolved(result.value))
|
|
34
|
-
// return result.value
|
|
35
|
-
// }
|
|
36
|
-
// }
|
|
37
41
|
//# sourceMappingURL=Fiber.js.map
|
package/dist/Fiber.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Fiber.js","sourceRoot":"","sources":["../Fiber.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Fiber.js","sourceRoot":"","sources":["../Fiber.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAOlC,IAAI,SAAS,GAAG,CAAC,CAAA;AAQjB,MAAM,UAAU,KAAK,CAAU,KAAqB,EAAE,MAAc;IAClE,IAAI,KAAK,GAAG,SAAS,EAAE,CAAA;IACvB,IAAI,OAA+B,CAAA;IACnC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAA;IAChC,OAAO;QACL,MAAM;QACN,IAAI,EAAE;YACJ,KAAK;YACL,GAAG,MAAM,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;SACrC;QACD,OAAO;KACR,CAAA;IAED,SAAS,OAAO;QACd,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa,EAAK,CAAA;YAC/D,OAAO,GAAG,OAAO,CAAA;YACjB,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACpC,IAAI,OAAgB,CAAA;YACpB,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;gBACrB,IAAI,CAAC;oBACH,IAAI,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;oBACnC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;wBACrB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAA;wBAC1B,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAA;wBAC1B,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;oBACxC,CAAC;oBACD,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;oBACzB,OAAO,CAAC,KAAK,CAAC,CAAA;gBAChB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,KAAK,CAAC,CAAA;gBACf,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;AACH,CAAC"}
|
package/dist/Handler.d.ts
CHANGED
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":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAK5C,MAAM,CAAC,MAAM,cAAc,GAAuC,aAAa,EAAE,CAAA"}
|
package/dist/L/L.d.ts
CHANGED
|
@@ -4,9 +4,6 @@ export * from "./_message.ts";
|
|
|
4
4
|
export * from "./assistant.ts";
|
|
5
5
|
export * from "./branch.ts";
|
|
6
6
|
export * from "./emit.ts";
|
|
7
|
-
export * from "./fork.ts";
|
|
8
|
-
export * from "./join.ts";
|
|
9
7
|
export * from "./model.ts";
|
|
10
|
-
export * from "./self.ts";
|
|
11
8
|
export * from "./system.ts";
|
|
12
9
|
export * from "./user.ts";
|
package/dist/L/L.js
CHANGED
|
@@ -4,10 +4,7 @@ export * from "./_message.js";
|
|
|
4
4
|
export * from "./assistant.js";
|
|
5
5
|
export * from "./branch.js";
|
|
6
6
|
export * from "./emit.js";
|
|
7
|
-
export * from "./fork.js";
|
|
8
|
-
export * from "./join.js";
|
|
9
7
|
export * from "./model.js";
|
|
10
|
-
export * from "./self.js";
|
|
11
8
|
export * from "./system.js";
|
|
12
9
|
export * from "./user.js";
|
|
13
10
|
//# sourceMappingURL=L.js.map
|
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,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,
|
|
1
|
+
{"version":3,"file":"L.js","sourceRoot":"","sources":["../../L/L.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA"}
|
package/dist/L/_infer.js
CHANGED
|
@@ -1,32 +1,29 @@
|
|
|
1
1
|
import { assert } from "liminal-util";
|
|
2
|
+
import { Context, ContextHandle } from "../Context.js";
|
|
2
3
|
import { InferenceRequested, Inferred } from "../LEvent.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { ModelRegistry } from "../state/ModelRegistry.js";
|
|
4
|
+
import { MessageRegistryContext } from "../MessageRegistry.js";
|
|
5
|
+
import { ModelRegistryContext } from "../ModelRegistry.js";
|
|
6
6
|
import { emit } from "./emit.js";
|
|
7
7
|
import { rune } from "./rune.js";
|
|
8
8
|
export function* _infer(schema) {
|
|
9
|
-
const
|
|
10
|
-
const modelRegistry =
|
|
9
|
+
const context = Context.ensure();
|
|
10
|
+
const modelRegistry = context.get(ModelRegistryContext);
|
|
11
|
+
assert(modelRegistry);
|
|
11
12
|
const model = modelRegistry.peek();
|
|
12
|
-
const messageRegistry = state.getOrInit(MessageRegistry.make);
|
|
13
|
-
const counter = state.getOrInit(InferenceRequestCounter);
|
|
14
13
|
assert(model);
|
|
15
|
-
const requestId =
|
|
14
|
+
const requestId = context.getOrInit(InferenceRequestCounterContext, () => new InferenceRequestCounter()).next();
|
|
16
15
|
yield* emit(new InferenceRequested(requestId, schema));
|
|
16
|
+
const messageRegistry = context.get(MessageRegistryContext);
|
|
17
|
+
assert(messageRegistry);
|
|
17
18
|
const inference = yield* rune(() => model.resolve(messageRegistry.messages, schema));
|
|
18
19
|
yield* emit(new Inferred(requestId, inference));
|
|
19
20
|
return inference;
|
|
20
21
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
},
|
|
27
|
-
clone() {
|
|
28
|
-
return InferenceRequestCounter(this);
|
|
29
|
-
},
|
|
30
|
-
};
|
|
22
|
+
class InferenceRequestCounter {
|
|
23
|
+
count = 0;
|
|
24
|
+
next() {
|
|
25
|
+
return this.count++;
|
|
26
|
+
}
|
|
31
27
|
}
|
|
28
|
+
const InferenceRequestCounterContext = ContextHandle();
|
|
32
29
|
//# 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,
|
|
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,aAAa,EAAE,MAAM,eAAe,CAAA;AACtD,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,OAAO,CAAC,SAAS,CAAC,8BAA8B,EAAE,GAAG,EAAE,CAAC,IAAI,uBAAuB,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAC/G,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,CAAC,CAAA;IACpF,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAA;IAC/C,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,uBAAuB;IAC3B,KAAK,GAAW,CAAC,CAAA;IACjB,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,EAAE,CAAA;IACrB,CAAC;CACF;AAED,MAAM,8BAA8B,GAA2C,aAAa,EAAE,CAAA"}
|
package/dist/L/_message.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
import { assert } from "liminal-util";
|
|
2
|
+
import { Context } from "../Context.js";
|
|
1
3
|
import { MessageAppended } from "../LEvent.js";
|
|
2
|
-
import {
|
|
3
|
-
import { MessageRegistry } from "../state/MessageRegistry.js";
|
|
4
|
+
import { MessageRegistryContext } from "../MessageRegistry.js";
|
|
4
5
|
import { emit } from "./emit.js";
|
|
5
6
|
export function* _message(role, content) {
|
|
6
|
-
const
|
|
7
|
-
const messageRegistry =
|
|
7
|
+
const context = Context.ensure();
|
|
8
|
+
const messageRegistry = context.get(MessageRegistryContext);
|
|
9
|
+
assert(messageRegistry);
|
|
8
10
|
const message = { role, content };
|
|
9
11
|
yield* emit(new MessageAppended(message));
|
|
10
12
|
messageRegistry.append(message);
|
package/dist/L/_message.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_message.js","sourceRoot":"","sources":["../../L/_message.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"_message.js","sourceRoot":"","sources":["../../L/_message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAe,eAAe,EAAE,MAAM,cAAc,CAAA;AAE3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAE9D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAIhC,MAAM,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAiB,EAAE,OAA2B;IACtE,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAA;IAChC,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;IAC3D,MAAM,CAAC,eAAe,CAAC,CAAA;IACvB,MAAM,OAAO,GAAY,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;IAC1C,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC,CAAA;IACzC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;AACjC,CAAC"}
|
package/dist/L/branch.js
CHANGED
|
@@ -1,41 +1,22 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Context } from "../Context.js";
|
|
2
|
+
import { Fiber } from "../Fiber.js";
|
|
2
3
|
import {} from "../Rune.js";
|
|
3
|
-
import { context } from "../state/Context.js";
|
|
4
4
|
import { rune } from "./rune.js";
|
|
5
|
-
import { self } from "./self.js";
|
|
6
5
|
export function* branch(value) {
|
|
7
|
-
const
|
|
8
|
-
const
|
|
6
|
+
const context = Context.ensure();
|
|
7
|
+
const parent = yield* rune((fiber) => fiber);
|
|
9
8
|
if (Array.isArray(value)) {
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
const fiberConfig = {
|
|
13
|
-
T: null,
|
|
14
|
-
globals,
|
|
15
|
-
state,
|
|
16
|
-
};
|
|
17
|
-
return () => run(runic, fiberConfig);
|
|
18
|
-
});
|
|
19
|
-
return yield* rune(() => Promise.all(runners.map((runner) => runner())));
|
|
9
|
+
const fibers = value.map((runic) => context.clone().run(() => Fiber(runic, parent)));
|
|
10
|
+
return yield* rune(() => Promise.all(fibers.map(({ resolve }) => resolve())));
|
|
20
11
|
}
|
|
21
12
|
else if (typeof value === "object") {
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
state,
|
|
28
|
-
};
|
|
29
|
-
return async () => [key, await run(runic, fiberConfig)];
|
|
30
|
-
});
|
|
31
|
-
return yield* rune(() => Promise.all(runners.map((runner) => runner())).then(Object.fromEntries));
|
|
13
|
+
const entries = Object.entries(value);
|
|
14
|
+
const fibers = entries.map(([_key, runic]) => context.clone().run(() => Fiber(runic, parent)));
|
|
15
|
+
return yield* rune(() => Promise
|
|
16
|
+
.all(fibers.map(({ resolve }, i) => resolve().then((value) => [entries[i][0], value])))
|
|
17
|
+
.then(Object.fromEntries));
|
|
32
18
|
}
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
T: null,
|
|
36
|
-
globals,
|
|
37
|
-
state,
|
|
38
|
-
};
|
|
39
|
-
return yield* rune(() => run(typeof value === "function" ? value() : value, fiberConfig));
|
|
19
|
+
const fiber = context.clone().run(() => Fiber(typeof value === "function" ? value() : value, parent));
|
|
20
|
+
return yield* rune(() => fiber.resolve());
|
|
40
21
|
}
|
|
41
22
|
//# 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":"
|
|
1
|
+
{"version":3,"file":"branch.js","sourceRoot":"","sources":["../../L/branch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,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,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAA;IAC5C,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,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;QACpF,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;IAC/E,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACrC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;QAC9F,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CACtB,OAAO;aACJ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;aACvF,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAC5B,CAAA;IACH,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;IACrG,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;AAC3C,CAAC"}
|
package/dist/L/emit.js
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Context } from "../Context.js";
|
|
2
|
+
import { HandlerContext } from "../Handler.js";
|
|
2
3
|
import { rune } from "./rune.js";
|
|
3
4
|
export function* emit(event) {
|
|
4
|
-
|
|
5
|
+
const context = Context.ensure();
|
|
6
|
+
const handler = context.get(HandlerContext);
|
|
7
|
+
const fiber = yield* rune((fiber) => fiber);
|
|
8
|
+
handler?.({
|
|
9
|
+
...fiber.info,
|
|
10
|
+
...fiber.parent && { parent: fiber.parent.info },
|
|
11
|
+
event,
|
|
12
|
+
});
|
|
5
13
|
}
|
|
6
14
|
//# 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,
|
|
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,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAA;IAC3C,OAAO,EAAE,CAAC;QACR,GAAG,KAAK,CAAC,IAAI;QACb,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;QAChD,KAAK;KACN,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/L/model.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { ModelRegistered } from "../LEvent.ts";
|
|
1
2
|
import type { Model } from "../Model.ts";
|
|
2
3
|
import type { Rune } from "../Rune.ts";
|
|
3
|
-
export interface model extends Generator<Rune<
|
|
4
|
+
export interface model extends Generator<Rune<ModelRegistered>, void> {
|
|
4
5
|
}
|
|
5
6
|
export declare function model(model: Model): model;
|
package/dist/L/model.js
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { assert } from "liminal-util";
|
|
2
|
+
import { Context } from "../Context.js";
|
|
3
|
+
import { ModelRegistered } from "../LEvent.js";
|
|
4
|
+
import { ModelRegistryContext } from "../ModelRegistry.js";
|
|
5
|
+
import { emit } from "./emit.js";
|
|
3
6
|
export function* model(model) {
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
+
const context = Context.ensure();
|
|
8
|
+
const registry = context.get(ModelRegistryContext);
|
|
9
|
+
assert(registry);
|
|
10
|
+
registry.register(model);
|
|
11
|
+
yield* emit(new ModelRegistered(model));
|
|
7
12
|
}
|
|
8
13
|
//# sourceMappingURL=model.js.map
|
package/dist/L/model.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../L/model.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../L/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAE1D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAIhC,MAAM,SAAS,CAAC,CAAC,KAAK,CAAC,KAAY;IACjC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAA;IAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;IAClD,MAAM,CAAC,QAAQ,CAAC,CAAA;IAChB,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACxB,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC,CAAA;AACzC,CAAC"}
|
package/dist/L/rune.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Fiber } from "../Fiber.ts";
|
|
2
2
|
import { type Rune } from "../Rune.ts";
|
|
3
3
|
export interface rune<T> extends Iterable<Rune<never>, T> {
|
|
4
4
|
<E>(): Generator<Rune<E>, T>;
|
|
5
5
|
}
|
|
6
|
-
export declare function rune<R>(source: (
|
|
6
|
+
export declare function rune<R>(source: (fiber: Fiber) => R): rune<Awaited<R>>;
|
package/dist/L/rune.js
CHANGED
package/dist/L/rune.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rune.js","sourceRoot":"","sources":["../../L/rune.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rune.js","sourceRoot":"","sources":["../../L/rune.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAa,OAAO,EAAE,MAAM,YAAY,CAAA;AAM/C,MAAM,UAAU,IAAI,CAAI,MAA2B;IACjD,OAAO,MAAM,CAAC,MAAM,CAClB,QAAQ,CAAC;QACP,OAAO,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,EAAW,EAAE,CAAC,CAAA;IAChE,CAAC,EACD;QACE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;YAChB,OAAO,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,EAAW,EAAE,CAAC,CAAA;QAChE,CAAC;KACF,CACF,CAAA;AACH,CAAC"}
|