liminal 0.5.12 → 0.5.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/Config.ts +13 -0
- package/Context.ts +23 -49
- package/Definition.ts +32 -0
- package/EventBase.ts +1 -1
- package/Handler.ts +3 -5
- package/L/L.ts +15 -2
- package/L/all.ts +35 -0
- package/L/assistant.ts +4 -7
- package/L/catch.ts +16 -13
- package/L/context.ts +12 -0
- package/L/continuation.ts +13 -0
- package/L/emit.ts +10 -8
- package/L/infer.ts +22 -25
- package/L/message.ts +7 -9
- package/L/model.ts +6 -6
- package/L/reflect.ts +12 -0
- package/L/run.ts +29 -0
- package/L/schema/_schema_common.ts +29 -0
- package/L/schema/anyOf.ts +10 -0
- package/L/schema/array.ts +13 -0
- package/L/schema/boolean.ts +8 -0
- package/L/schema/const.ts +18 -0
- package/L/schema/enum.ts +18 -0
- package/L/schema/integer.ts +6 -0
- package/L/schema/null.ts +8 -0
- package/L/schema/number.ts +8 -0
- package/L/schema/object.ts +21 -0
- package/L/schema/string.ts +11 -0
- package/L/strand.ts +14 -71
- package/L/stream.ts +11 -24
- package/L/system.ts +13 -8
- package/L/user.ts +13 -8
- package/LEvent.ts +9 -17
- package/LiminalAssertionError.ts +19 -0
- package/Message.ts +3 -2
- package/Model.ts +5 -3
- package/ModelRegistry.ts +1 -7
- package/Rune.test.ts +5 -0
- package/Rune.ts +24 -12
- package/Schema.ts +185 -0
- package/Strand.ts +253 -0
- package/Tool.ts +8 -16
- package/TypeAdapter.ts +3 -0
- package/dist/Config.d.ts +12 -0
- package/dist/Config.js +2 -0
- package/dist/Config.js.map +1 -0
- package/dist/Context.d.ts +11 -12
- package/dist/Context.js +15 -42
- package/dist/Context.js.map +1 -1
- package/dist/Definition.d.ts +10 -0
- package/dist/Definition.js +18 -0
- package/dist/Definition.js.map +1 -0
- package/dist/EventBase.js +1 -1
- package/dist/EventBase.js.map +1 -1
- package/dist/Handler.d.ts +3 -4
- package/dist/Handler.js +1 -2
- package/dist/Handler.js.map +1 -1
- package/dist/L/L.d.ts +15 -2
- package/dist/L/L.js +15 -2
- package/dist/L/L.js.map +1 -1
- package/dist/L/all.d.ts +10 -0
- package/dist/L/all.js +20 -0
- package/dist/L/all.js.map +1 -0
- package/dist/L/assistant.d.ts +2 -2
- package/dist/L/assistant.js +3 -6
- package/dist/L/assistant.js.map +1 -1
- package/dist/L/catch.d.ts +3 -2
- package/dist/L/catch.js +12 -12
- package/dist/L/catch.js.map +1 -1
- package/dist/L/context.d.ts +2 -0
- package/dist/L/context.js +12 -0
- package/dist/L/context.js.map +1 -0
- package/dist/L/continuation.d.ts +3 -0
- package/dist/L/continuation.js +12 -0
- package/dist/L/continuation.js.map +1 -0
- package/dist/L/emit.d.ts +3 -5
- package/dist/L/emit.js +8 -3
- package/dist/L/emit.js.map +1 -1
- package/dist/L/infer.d.ts +2 -5
- package/dist/L/infer.js +21 -20
- package/dist/L/infer.js.map +1 -1
- package/dist/L/message.d.ts +3 -5
- package/dist/L/message.js +5 -5
- package/dist/L/message.js.map +1 -1
- package/dist/L/model.d.ts +2 -4
- package/dist/L/model.js +4 -3
- package/dist/L/model.js.map +1 -1
- package/dist/L/reflect.d.ts +4 -0
- package/dist/L/reflect.js +10 -0
- package/dist/L/reflect.js.map +1 -0
- package/dist/L/run.d.ts +15 -0
- package/dist/L/run.js +16 -0
- package/dist/L/run.js.map +1 -0
- package/dist/L/schema/_schema_common.d.ts +6 -0
- package/dist/L/schema/_schema_common.js +19 -0
- package/dist/L/schema/_schema_common.js.map +1 -0
- package/dist/L/schema/anyOf.d.ts +5 -0
- package/dist/L/schema/anyOf.js +5 -0
- package/dist/L/schema/anyOf.js.map +1 -0
- package/dist/L/schema/array.d.ts +5 -0
- package/dist/L/schema/array.js +8 -0
- package/dist/L/schema/array.js.map +1 -0
- package/dist/L/schema/boolean.d.ts +6 -0
- package/dist/L/schema/boolean.js +4 -0
- package/dist/L/schema/boolean.js.map +1 -0
- package/dist/L/schema/const.d.ts +8 -0
- package/dist/L/schema/const.js +10 -0
- package/dist/L/schema/const.js.map +1 -0
- package/dist/L/schema/enum.d.ts +8 -0
- package/dist/L/schema/enum.js +10 -0
- package/dist/L/schema/enum.js.map +1 -0
- package/dist/L/schema/integer.d.ts +5 -0
- package/dist/L/schema/integer.js +3 -0
- package/dist/L/schema/integer.js.map +1 -0
- package/dist/L/schema/null.d.ts +6 -0
- package/dist/L/schema/null.js +4 -0
- package/dist/L/schema/null.js.map +1 -0
- package/dist/L/schema/number.d.ts +6 -0
- package/dist/L/schema/number.js +4 -0
- package/dist/L/schema/number.js.map +1 -0
- package/dist/L/schema/object.d.ts +9 -0
- package/dist/L/schema/object.js +12 -0
- package/dist/L/schema/object.js.map +1 -0
- package/dist/L/schema/string.d.ts +8 -0
- package/dist/L/schema/string.js +4 -0
- package/dist/L/schema/string.js.map +1 -0
- package/dist/L/strand.d.ts +4 -15
- package/dist/L/strand.js +8 -53
- package/dist/L/strand.js.map +1 -1
- package/dist/L/stream.d.ts +2 -4
- package/dist/L/stream.js +8 -19
- package/dist/L/stream.js.map +1 -1
- package/dist/L/system.d.ts +2 -4
- package/dist/L/system.js +4 -3
- package/dist/L/system.js.map +1 -1
- package/dist/L/user.d.ts +2 -4
- package/dist/L/user.js +4 -3
- package/dist/L/user.js.map +1 -1
- package/dist/LEvent.d.ts +13 -41
- package/dist/LEvent.js +4 -15
- package/dist/LEvent.js.map +1 -1
- package/dist/LiminalAssertionError.d.ts +8 -0
- package/dist/LiminalAssertionError.js +20 -0
- package/dist/LiminalAssertionError.js.map +1 -0
- package/dist/Message.d.ts +3 -2
- package/dist/Model.d.ts +4 -2
- package/dist/Model.js +1 -1
- package/dist/Model.js.map +1 -1
- package/dist/ModelRegistry.d.ts +0 -2
- package/dist/ModelRegistry.js +0 -2
- package/dist/ModelRegistry.js.map +1 -1
- package/dist/Rune.d.ts +19 -7
- package/dist/Rune.js +8 -4
- package/dist/Rune.js.map +1 -1
- package/dist/Rune.test.d.ts +1 -0
- package/dist/Rune.test.js +5 -0
- package/dist/Rune.test.js.map +1 -0
- package/dist/Schema.d.ts +46 -0
- package/dist/Schema.js +130 -0
- package/dist/Schema.js.map +1 -0
- package/dist/Strand.d.ts +57 -0
- package/dist/Strand.js +177 -0
- package/dist/Strand.js.map +1 -0
- package/dist/Tool.d.ts +6 -5
- package/dist/Tool.js +3 -4
- package/dist/Tool.js.map +1 -1
- package/dist/TypeAdapter.d.ts +1 -0
- package/dist/TypeAdapter.js +3 -0
- package/dist/TypeAdapter.js.map +1 -0
- package/dist/errors.d.ts +9 -0
- package/dist/errors.js +11 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +6 -5
- package/dist/index.js +6 -5
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/util/EnsureNarrow.d.ts +1 -0
- package/dist/util/EnsureNarrow.js +2 -0
- package/dist/util/EnsureNarrow.js.map +1 -0
- package/dist/util/JSONValue.d.ts +8 -0
- package/dist/util/JSONValue.js +20 -0
- package/dist/util/JSONValue.js.map +1 -0
- package/dist/util/attachCustomInspect.d.ts +1 -0
- package/dist/util/attachCustomInspect.js +11 -0
- package/dist/util/attachCustomInspect.js.map +1 -0
- package/dist/util/isTemplateStringsArray.d.ts +1 -0
- package/dist/util/isTemplateStringsArray.js +4 -0
- package/dist/util/isTemplateStringsArray.js.map +1 -0
- package/errors.ts +12 -0
- package/index.ts +6 -5
- package/package.json +3 -10
- package/tsconfig.json +1 -5
- package/util/EnsureNarrow.ts +1 -0
- package/util/JSONValue.ts +20 -0
- package/util/attachCustomInspect.ts +14 -0
- package/util/isTemplateStringsArray.ts +3 -0
- package/Fiber.ts +0 -123
- package/L/_common.ts +0 -6
- package/L/rune.ts +0 -12
- package/MessageRegistry.ts +0 -22
- package/Runic.ts +0 -30
- package/StrandConfig.ts +0 -12
- package/ToolRegistry.ts +0 -10
- package/dist/Fiber.d.ts +0 -35
- package/dist/Fiber.js +0 -95
- package/dist/Fiber.js.map +0 -1
- package/dist/L/_common.d.ts +0 -4
- package/dist/L/_common.js +0 -7
- package/dist/L/_common.js.map +0 -1
- package/dist/L/rune.d.ts +0 -3
- package/dist/L/rune.js +0 -9
- package/dist/L/rune.js.map +0 -1
- package/dist/MessageRegistry.d.ts +0 -9
- package/dist/MessageRegistry.js +0 -15
- package/dist/MessageRegistry.js.map +0 -1
- package/dist/Runic.d.ts +0 -9
- package/dist/Runic.js +0 -18
- package/dist/Runic.js.map +0 -1
- package/dist/StrandConfig.d.ts +0 -11
- package/dist/StrandConfig.js +0 -2
- package/dist/StrandConfig.js.map +0 -1
- package/dist/ToolRegistry.d.ts +0 -6
- package/dist/ToolRegistry.js +0 -8
- package/dist/ToolRegistry.js.map +0 -1
package/Fiber.ts
DELETED
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import { attachCustomInspect } from "liminal-util"
|
|
2
|
-
import { Context } from "./Context.ts"
|
|
3
|
-
import { type Handler, HandlerContext } from "./Handler.ts"
|
|
4
|
-
import { FiberCreated, FiberRejected, FiberResolved, FiberStarted } from "./LEvent.ts"
|
|
5
|
-
import { type Rune, RuneKey } from "./Rune.ts"
|
|
6
|
-
import { Runic } from "./Runic.ts"
|
|
7
|
-
|
|
8
|
-
export interface FiberConfig {
|
|
9
|
-
parent?: Fiber
|
|
10
|
-
signal?: AbortSignal
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export class Fiber<T = any> {
|
|
14
|
-
static *[Symbol.iterator](): Generator<Rune<never>, Fiber> {
|
|
15
|
-
return yield Object.assign((fiber: Fiber) => fiber, {
|
|
16
|
-
[RuneKey]: true,
|
|
17
|
-
debug: "current_fiber",
|
|
18
|
-
} as never)
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
static nextIndex: number = 0
|
|
22
|
-
readonly index: number = Fiber.nextIndex++
|
|
23
|
-
readonly depth: number
|
|
24
|
-
|
|
25
|
-
readonly #context: Context = Context.get() ?? new Context()
|
|
26
|
-
readonly #runic: Runic<Rune, T>
|
|
27
|
-
readonly #handler: Handler | undefined = HandlerContext.get()
|
|
28
|
-
readonly #configSignal?: AbortSignal
|
|
29
|
-
|
|
30
|
-
declare readonly parent?: Fiber
|
|
31
|
-
|
|
32
|
-
status: FiberStatus<T> = { type: "untouched" }
|
|
33
|
-
controller: AbortController = new AbortController()
|
|
34
|
-
|
|
35
|
-
constructor(runic: Runic<Rune, T>, config?: FiberConfig) {
|
|
36
|
-
this.depth = (config?.parent?.depth ?? -2) + 1
|
|
37
|
-
this.#runic = runic
|
|
38
|
-
const { parent, signal } = config ?? {}
|
|
39
|
-
if (parent) this.parent = parent
|
|
40
|
-
if (signal) this.#configSignal = signal
|
|
41
|
-
this.handle(new FiberCreated())
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
handle(event: any) {
|
|
45
|
-
this.#handler?.call(this, event)
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
resolution(): Promise<T> {
|
|
49
|
-
switch (this.status.type) {
|
|
50
|
-
case "untouched": {
|
|
51
|
-
const { promise, resolve, reject } = Promise.withResolvers<T>()
|
|
52
|
-
this.status = {
|
|
53
|
-
type: "pending",
|
|
54
|
-
self: this.controller.signal,
|
|
55
|
-
promise,
|
|
56
|
-
}
|
|
57
|
-
this.handle(new FiberStarted())
|
|
58
|
-
const iterator = Runic.unwrap(this.#runic)
|
|
59
|
-
let nextArg: unknown
|
|
60
|
-
this.#context.run(async () => {
|
|
61
|
-
try {
|
|
62
|
-
let current = await iterator.next()
|
|
63
|
-
while (!current.done) {
|
|
64
|
-
const rune = current.value
|
|
65
|
-
nextArg = await rune(this)
|
|
66
|
-
current = await iterator.next(nextArg)
|
|
67
|
-
}
|
|
68
|
-
const { value } = current
|
|
69
|
-
this.status = {
|
|
70
|
-
type: "resolved",
|
|
71
|
-
value,
|
|
72
|
-
}
|
|
73
|
-
this.handle(new FiberResolved(value))
|
|
74
|
-
this.controller.abort()
|
|
75
|
-
resolve(value)
|
|
76
|
-
} catch (exception) {
|
|
77
|
-
this.status = {
|
|
78
|
-
type: "rejected",
|
|
79
|
-
exception,
|
|
80
|
-
}
|
|
81
|
-
this.handle(new FiberRejected(exception))
|
|
82
|
-
this.controller.abort()
|
|
83
|
-
reject(exception)
|
|
84
|
-
}
|
|
85
|
-
})
|
|
86
|
-
return promise
|
|
87
|
-
}
|
|
88
|
-
case "pending": {
|
|
89
|
-
return this.status.promise
|
|
90
|
-
}
|
|
91
|
-
case "resolved": {
|
|
92
|
-
return Promise.resolve(this.status.value)
|
|
93
|
-
}
|
|
94
|
-
case "rejected": {
|
|
95
|
-
return Promise.reject(this.status.exception)
|
|
96
|
-
}
|
|
97
|
-
case "aborted": {
|
|
98
|
-
return Promise.reject(this.status.reason)
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
static {
|
|
104
|
-
attachCustomInspect(this, ({ index, parent }) => ({ index, ...parent && { parent } }))
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
export type FiberStatus<T> = {
|
|
109
|
-
type: "untouched"
|
|
110
|
-
} | {
|
|
111
|
-
type: "pending"
|
|
112
|
-
self: AbortSignal
|
|
113
|
-
promise: Promise<T>
|
|
114
|
-
} | {
|
|
115
|
-
type: "aborted"
|
|
116
|
-
reason: unknown
|
|
117
|
-
} | {
|
|
118
|
-
type: "resolved"
|
|
119
|
-
value: T
|
|
120
|
-
} | {
|
|
121
|
-
type: "rejected"
|
|
122
|
-
exception: unknown
|
|
123
|
-
}
|
package/L/_common.ts
DELETED
package/L/rune.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { Fiber } from "../Fiber.ts"
|
|
2
|
-
import { type Rune, RuneKey } from "../Rune.ts"
|
|
3
|
-
|
|
4
|
-
export function* rune<R>(
|
|
5
|
-
source: (fiber: Fiber) => R,
|
|
6
|
-
debug?: string,
|
|
7
|
-
): Generator<Rune<never>, Awaited<R>> {
|
|
8
|
-
return yield Object.assign(source, {
|
|
9
|
-
[RuneKey]: true,
|
|
10
|
-
debug,
|
|
11
|
-
}) as never
|
|
12
|
-
}
|
package/MessageRegistry.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { ContextPart } from "./Context.ts"
|
|
2
|
-
import type { Message } from "./Message.ts"
|
|
3
|
-
|
|
4
|
-
export class MessageRegistry {
|
|
5
|
-
messages: Array<Message>
|
|
6
|
-
constructor(messages?: Array<Message>) {
|
|
7
|
-
this.messages = messages ?? []
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
append(message: Message): void {
|
|
11
|
-
this.messages.push(message)
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
clone(): MessageRegistry {
|
|
15
|
-
return new MessageRegistry([...this.messages])
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export const MessageRegistryContext: ContextPart<MessageRegistry> = ContextPart(
|
|
20
|
-
(parent) => parent?.clone() ?? new MessageRegistry(),
|
|
21
|
-
"message_registry",
|
|
22
|
-
)
|
package/Runic.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import type { Rune } from "./Rune.ts"
|
|
2
|
-
|
|
3
|
-
export type RuneIterator<Y extends Rune = Rune, T = any> = Iterator<Y, T> | AsyncIterator<Y, T>
|
|
4
|
-
export type RuneIterable<Y extends Rune = Rune, T = any> = Iterable<Y, T> | AsyncIterable<Y, T>
|
|
5
|
-
export type Runic<Y extends Rune = Rune, T = any> = RuneIterable<Y, T> | (() => RuneIterable<Y, T>)
|
|
6
|
-
|
|
7
|
-
export namespace Runic {
|
|
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
|
|
17
|
-
|
|
18
|
-
export function unwrap<Y extends Rune, T>(runic: Runic<Y, T>): RuneIterator<Y, T> {
|
|
19
|
-
if (Symbol.iterator in runic) {
|
|
20
|
-
return runic[Symbol.iterator]()
|
|
21
|
-
} else if (Symbol.asyncIterator in runic) {
|
|
22
|
-
return runic[Symbol.asyncIterator]()
|
|
23
|
-
}
|
|
24
|
-
const iterable = runic()
|
|
25
|
-
if (Symbol.iterator in iterable) {
|
|
26
|
-
return iterable[Symbol.iterator]()
|
|
27
|
-
}
|
|
28
|
-
return iterable[Symbol.asyncIterator]()
|
|
29
|
-
}
|
|
30
|
-
}
|
package/StrandConfig.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { Fiber } from "./Fiber.ts"
|
|
2
|
-
import type { MessageRegistry } from "./MessageRegistry.ts"
|
|
3
|
-
import type { ModelRegistry } from "./ModelRegistry.ts"
|
|
4
|
-
import type { ToolRegistry } from "./ToolRegistry.ts"
|
|
5
|
-
|
|
6
|
-
export interface StrandConfig<T = any, E = any> {
|
|
7
|
-
handler?: ((this: Fiber<T>, event: E) => void) | undefined
|
|
8
|
-
models?: ModelRegistry | undefined
|
|
9
|
-
messages?: MessageRegistry | undefined
|
|
10
|
-
tools?: ToolRegistry | undefined
|
|
11
|
-
signal?: AbortSignal | undefined
|
|
12
|
-
}
|
package/ToolRegistry.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { ContextPart } from "liminal"
|
|
2
|
-
import type { Tool } from "./Tool"
|
|
3
|
-
|
|
4
|
-
export class ToolRegistry extends Set<Tool> {
|
|
5
|
-
clone(): ToolRegistry {
|
|
6
|
-
return new ToolRegistry([...this])
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export const ToolRegistryContext: ContextPart<ToolRegistry> = ContextPart(() => new ToolRegistry(), "tool_registry")
|
package/dist/Fiber.d.ts
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { type Rune } from "./Rune.ts";
|
|
2
|
-
import { Runic } from "./Runic.ts";
|
|
3
|
-
export interface FiberConfig {
|
|
4
|
-
parent?: Fiber;
|
|
5
|
-
signal?: AbortSignal;
|
|
6
|
-
}
|
|
7
|
-
export declare class Fiber<T = any> {
|
|
8
|
-
#private;
|
|
9
|
-
static [Symbol.iterator](): Generator<Rune<never>, Fiber>;
|
|
10
|
-
static nextIndex: number;
|
|
11
|
-
readonly index: number;
|
|
12
|
-
readonly depth: number;
|
|
13
|
-
readonly parent?: Fiber;
|
|
14
|
-
status: FiberStatus<T>;
|
|
15
|
-
controller: AbortController;
|
|
16
|
-
constructor(runic: Runic<Rune, T>, config?: FiberConfig);
|
|
17
|
-
handle(event: any): void;
|
|
18
|
-
resolution(): Promise<T>;
|
|
19
|
-
}
|
|
20
|
-
export type FiberStatus<T> = {
|
|
21
|
-
type: "untouched";
|
|
22
|
-
} | {
|
|
23
|
-
type: "pending";
|
|
24
|
-
self: AbortSignal;
|
|
25
|
-
promise: Promise<T>;
|
|
26
|
-
} | {
|
|
27
|
-
type: "aborted";
|
|
28
|
-
reason: unknown;
|
|
29
|
-
} | {
|
|
30
|
-
type: "resolved";
|
|
31
|
-
value: T;
|
|
32
|
-
} | {
|
|
33
|
-
type: "rejected";
|
|
34
|
-
exception: unknown;
|
|
35
|
-
};
|
package/dist/Fiber.js
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import { attachCustomInspect } from "liminal-util";
|
|
2
|
-
import { Context } from "./Context.js";
|
|
3
|
-
import { HandlerContext } from "./Handler.js";
|
|
4
|
-
import { FiberCreated, FiberRejected, FiberResolved, FiberStarted } from "./LEvent.js";
|
|
5
|
-
import { RuneKey } from "./Rune.js";
|
|
6
|
-
import { Runic } from "./Runic.js";
|
|
7
|
-
export class Fiber {
|
|
8
|
-
static *[Symbol.iterator]() {
|
|
9
|
-
return yield Object.assign((fiber) => fiber, {
|
|
10
|
-
[RuneKey]: true,
|
|
11
|
-
debug: "current_fiber",
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
static nextIndex = 0;
|
|
15
|
-
index = Fiber.nextIndex++;
|
|
16
|
-
depth;
|
|
17
|
-
#context = Context.get() ?? new Context();
|
|
18
|
-
#runic;
|
|
19
|
-
#handler = HandlerContext.get();
|
|
20
|
-
#configSignal;
|
|
21
|
-
status = { type: "untouched" };
|
|
22
|
-
controller = new AbortController();
|
|
23
|
-
constructor(runic, config) {
|
|
24
|
-
this.depth = (config?.parent?.depth ?? -2) + 1;
|
|
25
|
-
this.#runic = runic;
|
|
26
|
-
const { parent, signal } = config ?? {};
|
|
27
|
-
if (parent)
|
|
28
|
-
this.parent = parent;
|
|
29
|
-
if (signal)
|
|
30
|
-
this.#configSignal = signal;
|
|
31
|
-
this.handle(new FiberCreated());
|
|
32
|
-
}
|
|
33
|
-
handle(event) {
|
|
34
|
-
this.#handler?.call(this, event);
|
|
35
|
-
}
|
|
36
|
-
resolution() {
|
|
37
|
-
switch (this.status.type) {
|
|
38
|
-
case "untouched": {
|
|
39
|
-
const { promise, resolve, reject } = Promise.withResolvers();
|
|
40
|
-
this.status = {
|
|
41
|
-
type: "pending",
|
|
42
|
-
self: this.controller.signal,
|
|
43
|
-
promise,
|
|
44
|
-
};
|
|
45
|
-
this.handle(new FiberStarted());
|
|
46
|
-
const iterator = Runic.unwrap(this.#runic);
|
|
47
|
-
let nextArg;
|
|
48
|
-
this.#context.run(async () => {
|
|
49
|
-
try {
|
|
50
|
-
let current = await iterator.next();
|
|
51
|
-
while (!current.done) {
|
|
52
|
-
const rune = current.value;
|
|
53
|
-
nextArg = await rune(this);
|
|
54
|
-
current = await iterator.next(nextArg);
|
|
55
|
-
}
|
|
56
|
-
const { value } = current;
|
|
57
|
-
this.status = {
|
|
58
|
-
type: "resolved",
|
|
59
|
-
value,
|
|
60
|
-
};
|
|
61
|
-
this.handle(new FiberResolved(value));
|
|
62
|
-
this.controller.abort();
|
|
63
|
-
resolve(value);
|
|
64
|
-
}
|
|
65
|
-
catch (exception) {
|
|
66
|
-
this.status = {
|
|
67
|
-
type: "rejected",
|
|
68
|
-
exception,
|
|
69
|
-
};
|
|
70
|
-
this.handle(new FiberRejected(exception));
|
|
71
|
-
this.controller.abort();
|
|
72
|
-
reject(exception);
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
return promise;
|
|
76
|
-
}
|
|
77
|
-
case "pending": {
|
|
78
|
-
return this.status.promise;
|
|
79
|
-
}
|
|
80
|
-
case "resolved": {
|
|
81
|
-
return Promise.resolve(this.status.value);
|
|
82
|
-
}
|
|
83
|
-
case "rejected": {
|
|
84
|
-
return Promise.reject(this.status.exception);
|
|
85
|
-
}
|
|
86
|
-
case "aborted": {
|
|
87
|
-
return Promise.reject(this.status.reason);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
static {
|
|
92
|
-
attachCustomInspect(this, ({ index, parent }) => ({ index, ...parent && { parent } }));
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
//# sourceMappingURL=Fiber.js.map
|
package/dist/Fiber.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Fiber.js","sourceRoot":"","sources":["../Fiber.ts"],"names":[],"mappings":"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"}
|
package/dist/L/_common.d.ts
DELETED
package/dist/L/_common.js
DELETED
package/dist/L/_common.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_common.js","sourceRoot":"","sources":["../../L/_common.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAc;IACzB,MAAM,CAAC,KAAK,GAAW,CAAC,CAAA;IACxB,MAAM,CAAC,IAAI;QACT,OAAO,IAAI,CAAC,KAAK,EAAE,CAAA;IACrB,CAAC"}
|
package/dist/L/rune.d.ts
DELETED
package/dist/L/rune.js
DELETED
package/dist/L/rune.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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;AAE/C,MAAM,SAAS,CAAC,CAAC,IAAI,CACnB,MAA2B,EAC3B,KAAc;IAEd,OAAO,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;QACjC,CAAC,OAAO,CAAC,EAAE,IAAI;QACf,KAAK;KACN,CAAU,CAAA;AACb,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { ContextPart } from "./Context.ts";
|
|
2
|
-
import type { Message } from "./Message.ts";
|
|
3
|
-
export declare class MessageRegistry {
|
|
4
|
-
messages: Array<Message>;
|
|
5
|
-
constructor(messages?: Array<Message>);
|
|
6
|
-
append(message: Message): void;
|
|
7
|
-
clone(): MessageRegistry;
|
|
8
|
-
}
|
|
9
|
-
export declare const MessageRegistryContext: ContextPart<MessageRegistry>;
|
package/dist/MessageRegistry.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { ContextPart } from "./Context.js";
|
|
2
|
-
export class MessageRegistry {
|
|
3
|
-
messages;
|
|
4
|
-
constructor(messages) {
|
|
5
|
-
this.messages = messages ?? [];
|
|
6
|
-
}
|
|
7
|
-
append(message) {
|
|
8
|
-
this.messages.push(message);
|
|
9
|
-
}
|
|
10
|
-
clone() {
|
|
11
|
-
return new MessageRegistry([...this.messages]);
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
export const MessageRegistryContext = ContextPart((parent) => parent?.clone() ?? new MessageRegistry(), "message_registry");
|
|
15
|
-
//# sourceMappingURL=MessageRegistry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MessageRegistry.js","sourceRoot":"","sources":["../MessageRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAG1C,MAAM,OAAO,eAAe;IAC1B,QAAQ,CAAgB;IACxB,YAAY,QAAyB;QACnC,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAA;IAChC,CAAC;IAED,MAAM,CAAC,OAAgB;QACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC7B,CAAC;IAED,KAAK;QACH,OAAO,IAAI,eAAe,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IAChD,CAAC;CACF;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAiC,WAAW,CAC7E,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,IAAI,eAAe,EAAE,EACpD,kBAAkB,CACnB,CAAA"}
|
package/dist/Runic.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { Rune } from "./Rune.ts";
|
|
2
|
-
export type RuneIterator<Y extends Rune = Rune, T = any> = Iterator<Y, T> | AsyncIterator<Y, T>;
|
|
3
|
-
export type RuneIterable<Y extends Rune = Rune, T = any> = Iterable<Y, T> | AsyncIterable<Y, T>;
|
|
4
|
-
export type Runic<Y extends Rune = Rune, T = any> = RuneIterable<Y, T> | (() => RuneIterable<Y, T>);
|
|
5
|
-
export declare namespace Runic {
|
|
6
|
-
type Y<X extends Runic> = X extends RuneIterable<infer Y> ? Y : X extends () => RuneIterable<infer Y> ? Y : X extends RuneIterator<infer Y> ? Y : never;
|
|
7
|
-
type T<X extends Runic> = X extends RuneIterable<Rune, infer T> ? T : X extends () => RuneIterable<Rune, infer T> ? T : X extends RuneIterator<Rune, infer T> ? T : never;
|
|
8
|
-
function unwrap<Y extends Rune, T>(runic: Runic<Y, T>): RuneIterator<Y, T>;
|
|
9
|
-
}
|
package/dist/Runic.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export var Runic;
|
|
2
|
-
(function (Runic) {
|
|
3
|
-
function unwrap(runic) {
|
|
4
|
-
if (Symbol.iterator in runic) {
|
|
5
|
-
return runic[Symbol.iterator]();
|
|
6
|
-
}
|
|
7
|
-
else if (Symbol.asyncIterator in runic) {
|
|
8
|
-
return runic[Symbol.asyncIterator]();
|
|
9
|
-
}
|
|
10
|
-
const iterable = runic();
|
|
11
|
-
if (Symbol.iterator in iterable) {
|
|
12
|
-
return iterable[Symbol.iterator]();
|
|
13
|
-
}
|
|
14
|
-
return iterable[Symbol.asyncIterator]();
|
|
15
|
-
}
|
|
16
|
-
Runic.unwrap = unwrap;
|
|
17
|
-
})(Runic || (Runic = {}));
|
|
18
|
-
//# sourceMappingURL=Runic.js.map
|
package/dist/Runic.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Runic.js","sourceRoot":"","sources":["../Runic.ts"],"names":[],"mappings":"AAMA,MAAM,KAAW,KAAK,CAuBrB;AAvBD,WAAiB,KAAK;IAWpB,SAAgB,MAAM,CAAoB,KAAkB;QAC1D,IAAI,MAAM,CAAC,QAAQ,IAAI,KAAK,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAA;QACjC,CAAC;aAAM,IAAI,MAAM,CAAC,aAAa,IAAI,KAAK,EAAE,CAAC;YACzC,OAAO,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAA;QACtC,CAAC;QACD,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAA;QACxB,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,YAAM,SAWrB,CAAA;AACH,CAAC,EAvBgB,KAAK,KAAL,KAAK,QAuBrB"}
|
package/dist/StrandConfig.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { Fiber } from "./Fiber.ts";
|
|
2
|
-
import type { MessageRegistry } from "./MessageRegistry.ts";
|
|
3
|
-
import type { ModelRegistry } from "./ModelRegistry.ts";
|
|
4
|
-
import type { ToolRegistry } from "./ToolRegistry.ts";
|
|
5
|
-
export interface StrandConfig<T = any, E = any> {
|
|
6
|
-
handler?: ((this: Fiber<T>, event: E) => void) | undefined;
|
|
7
|
-
models?: ModelRegistry | undefined;
|
|
8
|
-
messages?: MessageRegistry | undefined;
|
|
9
|
-
tools?: ToolRegistry | undefined;
|
|
10
|
-
signal?: AbortSignal | undefined;
|
|
11
|
-
}
|
package/dist/StrandConfig.js
DELETED
package/dist/StrandConfig.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StrandConfig.js","sourceRoot":"","sources":["../StrandConfig.ts"],"names":[],"mappings":""}
|
package/dist/ToolRegistry.d.ts
DELETED
package/dist/ToolRegistry.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { ContextPart } from "liminal";
|
|
2
|
-
export class ToolRegistry extends Set {
|
|
3
|
-
clone() {
|
|
4
|
-
return new ToolRegistry([...this]);
|
|
5
|
-
}
|
|
6
|
-
}
|
|
7
|
-
export const ToolRegistryContext = ContextPart(() => new ToolRegistry(), "tool_registry");
|
|
8
|
-
//# sourceMappingURL=ToolRegistry.js.map
|
package/dist/ToolRegistry.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ToolRegistry.js","sourceRoot":"","sources":["../ToolRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAGrC,MAAM,OAAO,YAAa,SAAQ,GAAS;IACzC,KAAK;QACH,OAAO,IAAI,YAAY,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;IACpC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,mBAAmB,GAA8B,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,YAAY,EAAE,EAAE,eAAe,CAAC,CAAA"}
|