liminal 0.5.9 → 0.5.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/Context.ts +21 -24
  3. package/EventBase.ts +6 -0
  4. package/Fiber.ts +60 -47
  5. package/Handler.ts +2 -2
  6. package/L/L.ts +5 -3
  7. package/L/_common.ts +6 -0
  8. package/L/assistant.ts +6 -6
  9. package/L/catch.ts +15 -2
  10. package/L/emit.ts +3 -7
  11. package/L/{_infer.ts → infer.ts} +18 -14
  12. package/L/{_message.ts → message.ts} +3 -5
  13. package/L/model.ts +1 -3
  14. package/L/rune.ts +8 -26
  15. package/L/strand.ts +99 -0
  16. package/L/stream.ts +30 -0
  17. package/L/system.ts +2 -2
  18. package/L/user.ts +2 -2
  19. package/LEvent.ts +10 -3
  20. package/MessageRegistry.ts +4 -3
  21. package/Model.ts +13 -2
  22. package/ModelRegistry.ts +13 -8
  23. package/Tool.ts +17 -14
  24. package/ToolRegistry.ts +8 -3
  25. package/dist/Context.d.ts +10 -10
  26. package/dist/Context.js +16 -19
  27. package/dist/Context.js.map +1 -1
  28. package/dist/EventBase.d.ts +1 -0
  29. package/dist/EventBase.js +5 -0
  30. package/dist/EventBase.js.map +1 -1
  31. package/dist/Fiber.d.ts +19 -15
  32. package/dist/Fiber.js +36 -25
  33. package/dist/Fiber.js.map +1 -1
  34. package/dist/Handler.d.ts +2 -2
  35. package/dist/Handler.js +2 -2
  36. package/dist/Handler.js.map +1 -1
  37. package/dist/L/L.d.ts +5 -3
  38. package/dist/L/L.js +5 -3
  39. package/dist/L/L.js.map +1 -1
  40. package/dist/L/_common.d.ts +4 -0
  41. package/dist/L/_common.js +7 -0
  42. package/dist/L/_common.js.map +1 -0
  43. package/dist/L/assistant.js +6 -6
  44. package/dist/L/assistant.js.map +1 -1
  45. package/dist/L/catch.js +12 -2
  46. package/dist/L/catch.js.map +1 -1
  47. package/dist/L/emit.js +3 -7
  48. package/dist/L/emit.js.map +1 -1
  49. package/dist/L/infer.d.ts +7 -0
  50. package/dist/L/infer.js +29 -0
  51. package/dist/L/infer.js.map +1 -0
  52. package/dist/L/message.d.ts +6 -0
  53. package/dist/L/{_message.js → message.js} +3 -5
  54. package/dist/L/message.js.map +1 -0
  55. package/dist/L/model.js +1 -3
  56. package/dist/L/model.js.map +1 -1
  57. package/dist/L/rune.d.ts +1 -6
  58. package/dist/L/rune.js +5 -15
  59. package/dist/L/rune.js.map +1 -1
  60. package/dist/L/strand.d.ts +26 -0
  61. package/dist/L/strand.js +69 -0
  62. package/dist/L/strand.js.map +1 -0
  63. package/dist/L/stream.d.ts +5 -0
  64. package/dist/L/stream.js +27 -0
  65. package/dist/L/stream.js.map +1 -0
  66. package/dist/L/system.js +2 -2
  67. package/dist/L/system.js.map +1 -1
  68. package/dist/L/user.js +2 -2
  69. package/dist/L/user.js.map +1 -1
  70. package/dist/LEvent.d.ts +21 -1
  71. package/dist/LEvent.js +13 -2
  72. package/dist/LEvent.js.map +1 -1
  73. package/dist/MessageRegistry.d.ts +2 -2
  74. package/dist/MessageRegistry.js +2 -2
  75. package/dist/MessageRegistry.js.map +1 -1
  76. package/dist/Model.d.ts +12 -3
  77. package/dist/Model.js +3 -3
  78. package/dist/Model.js.map +1 -1
  79. package/dist/ModelRegistry.d.ts +3 -2
  80. package/dist/ModelRegistry.js +9 -8
  81. package/dist/ModelRegistry.js.map +1 -1
  82. package/dist/Tool.js +2 -13
  83. package/dist/Tool.js.map +1 -1
  84. package/dist/ToolRegistry.d.ts +3 -2
  85. package/dist/ToolRegistry.js +5 -2
  86. package/dist/ToolRegistry.js.map +1 -1
  87. package/dist/index.d.ts +0 -1
  88. package/dist/index.js +0 -1
  89. package/dist/index.js.map +1 -1
  90. package/dist/tsconfig.tsbuildinfo +1 -1
  91. package/index.ts +0 -1
  92. package/package.json +4 -4
  93. package/Agent.ts +0 -38
  94. package/L/branch.ts +0 -33
  95. package/dist/Agent.d.ts +0 -18
  96. package/dist/Agent.js +0 -20
  97. package/dist/Agent.js.map +0 -1
  98. package/dist/L/_infer.d.ts +0 -4
  99. package/dist/L/_infer.js +0 -28
  100. package/dist/L/_infer.js.map +0 -1
  101. package/dist/L/_message.d.ts +0 -6
  102. package/dist/L/_message.js.map +0 -1
  103. package/dist/L/branch.d.ts +0 -11
  104. package/dist/L/branch.js +0 -24
  105. package/dist/L/branch.js.map +0 -1
package/L/user.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { isTemplateStringsArray } from "liminal-util"
2
2
  import type { LEvent } from "../LEvent.ts"
3
3
  import type { Rune } from "../Rune.ts"
4
- import { _message } from "./_message.ts"
4
+ import { message } from "./message.ts"
5
5
 
6
6
  export interface user extends Generator<Rune<LEvent>, void> {}
7
7
 
@@ -9,5 +9,5 @@ export function user(template: TemplateStringsArray, ...substitutions: Array<str
9
9
  export function user(value: string): user
10
10
  export function user(e0: TemplateStringsArray | string, ...rest: Array<string>): user {
11
11
  const part = isTemplateStringsArray(e0) ? String.raw(e0, ...rest) : e0
12
- return _message("user", [{ part }])
12
+ return message("user", [{ part }])
13
13
  }
package/LEvent.ts CHANGED
@@ -12,6 +12,12 @@ export type LEvent =
12
12
  | MessageAppended
13
13
  | ModelRegistered
14
14
 
15
+ export namespace LEvent {
16
+ export function is(value: unknown): value is LEvent {
17
+ return typeof value === "object" && value !== null && "brand" in value && value.brand === LEventTag
18
+ }
19
+ }
20
+
15
21
  export const LEventTag: unique symbol = Symbol.for("liminal/LEvent")
16
22
  export type LEventTag = typeof LEventTag
17
23
 
@@ -56,7 +62,8 @@ export class FiberResolved extends EventBase(LEventTag, "fiber_resolved") {
56
62
  super()
57
63
  }
58
64
  }
59
-
60
- export function isLEvent(value: unknown): value is LEvent {
61
- return typeof value === "object" && value !== null && "brand" in value && value.brand === LEventTag
65
+ export class FiberRejected extends EventBase(LEventTag, "fiber_rejected") {
66
+ constructor(readonly reason: any) {
67
+ super()
68
+ }
62
69
  }
@@ -1,4 +1,4 @@
1
- import { ContextHandle } from "./Context.ts"
1
+ import { ContextPart } from "./Context.ts"
2
2
  import type { Message } from "./Message.ts"
3
3
 
4
4
  export class MessageRegistry {
@@ -16,6 +16,7 @@ export class MessageRegistry {
16
16
  }
17
17
  }
18
18
 
19
- export const MessageRegistryContext: ContextHandle<MessageRegistry> = ContextHandle(({ messages }) =>
20
- new MessageRegistry([...messages])
19
+ export const MessageRegistryContext: ContextPart<MessageRegistry> = ContextPart(
20
+ (parent) => parent?.clone() ?? new MessageRegistry(),
21
+ "message_registry",
21
22
  )
package/Model.ts CHANGED
@@ -1,14 +1,25 @@
1
- import type { Schema } from "liminal-schema"
1
+ import type { SchemaObject } from "liminal-schema"
2
2
  import { attachCustomInspect } from "liminal-util"
3
3
  import type { Message } from "./Message.ts"
4
4
 
5
5
  export class Model {
6
6
  constructor(
7
7
  readonly vendor: string,
8
- readonly resolve: (messages: Array<Message>, schema?: Schema) => Promise<string>,
8
+ readonly seal: (envelope: Envelope) => SealedEnvelope,
9
9
  ) {}
10
10
 
11
11
  static {
12
12
  attachCustomInspect(this, ({ vendor }) => ({ vendor }))
13
13
  }
14
14
  }
15
+
16
+ export interface Envelope {
17
+ messages: Array<Message>
18
+ schema?: SchemaObject | undefined
19
+ signal?: AbortSignal
20
+ }
21
+
22
+ export interface SealedEnvelope {
23
+ resolve(): Promise<string>
24
+ stream(): ReadableStream<string>
25
+ }
package/ModelRegistry.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ContextHandle } from "./Context.ts"
1
+ import { ContextPart } from "./Context.ts"
2
2
  import type { Model } from "./Model.ts"
3
3
 
4
4
  /** An intrusive list for storing `Model`s. */
@@ -39,6 +39,14 @@ export class ModelRegistry {
39
39
  }
40
40
  node.prev = node.next = undefined
41
41
  }
42
+
43
+ clone(): ModelRegistry {
44
+ const instance = new ModelRegistry()
45
+ for (let node = this.head; node; node = node.next) {
46
+ instance.register(node.model)
47
+ }
48
+ return instance
49
+ }
42
50
  }
43
51
 
44
52
  export interface ModelRegistryNode {
@@ -47,10 +55,7 @@ export interface ModelRegistryNode {
47
55
  next?: ModelRegistryNode | undefined
48
56
  }
49
57
 
50
- export const ModelRegistryContext: ContextHandle<ModelRegistry> = ContextHandle(({ head }) => {
51
- const instance = new ModelRegistry()
52
- for (let node = head; node; node = node.next) {
53
- instance.register(node.model)
54
- }
55
- return instance
56
- })
58
+ export const ModelRegistryContext: ContextPart<ModelRegistry> = ContextPart(
59
+ (parent) => parent?.clone() ?? new ModelRegistry(),
60
+ "model_registry",
61
+ )
package/Tool.ts CHANGED
@@ -1,5 +1,12 @@
1
- import { type LType, type SchemaObject, toJSONSchema, validate, type Value, type ValueObject } from "liminal-schema"
2
- import { subtle } from "node:crypto"
1
+ import {
2
+ type LType,
3
+ Schema,
4
+ type SchemaObject,
5
+ toJSONSchema,
6
+ validate,
7
+ type Value,
8
+ type ValueObject,
9
+ } from "liminal-schema"
3
10
 
4
11
  export class Tool {
5
12
  static async make<T extends ValueObject>(
@@ -7,19 +14,15 @@ export class Tool {
7
14
  type: LType<T>,
8
15
  f: (arg: T) => Value | Promise<Value>,
9
16
  ) {
10
- const encoder = new TextEncoder()
11
17
  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
- })
18
+ return new Tool(
19
+ await Schema.id(schema, description),
20
+ description,
21
+ schema,
22
+ async (arg) => {
23
+ return await f(await validate(type, arg) as never)
24
+ },
25
+ )
23
26
  }
24
27
 
25
28
  constructor(
package/ToolRegistry.ts CHANGED
@@ -1,5 +1,10 @@
1
- import { ContextHandle } from "liminal"
1
+ import { ContextPart } from "liminal"
2
2
  import type { Tool } from "./Tool"
3
3
 
4
- export class ToolRegistry extends Set<Tool> {}
5
- export const ToolRegistryContext: ContextHandle<ToolRegistry> = ContextHandle()
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/Context.d.ts CHANGED
@@ -1,11 +1,11 @@
1
- export declare class Context extends Map<ContextHandle, unknown> {
2
- static ensure(): Context;
3
- get<V>(context: ContextHandle<V>): V | undefined;
4
- set<V>(context: ContextHandle<V>, value: V): this;
5
- run<R>(callback: () => R): R;
6
- clone(overrides?: Iterable<[ContextHandle, unknown]>): Context;
1
+ export declare class Context extends Map<ContextPart, unknown> {
2
+ static get(): Context | undefined;
3
+ run<R>(f: () => R): R;
4
+ fork(): Context;
7
5
  }
8
- export type ContextHandle<V = any> = {
9
- clone: ((value: V) => V) | undefined;
10
- };
11
- export declare function ContextHandle<V>(clone?: (value: V) => V): ContextHandle<V>;
6
+ export interface ContextPart<V = any> {
7
+ fork(parent?: V): V;
8
+ get(): V | undefined;
9
+ debug?: string;
10
+ }
11
+ export declare function ContextPart<V>(fork: (parent?: V) => V, debug?: string): ContextPart<V>;
package/dist/Context.js CHANGED
@@ -1,33 +1,30 @@
1
- import { assert } from "liminal-util";
2
1
  import { AsyncLocalStorage } from "node:async_hooks";
3
2
  const storage = new AsyncLocalStorage();
4
3
  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
- set(context, value) {
14
- super.set(context, value);
15
- return this;
4
+ static get() {
5
+ return storage.getStore();
16
6
  }
17
- run(callback) {
18
- return storage.run(this, callback);
7
+ run(f) {
8
+ return storage.run(this, f);
19
9
  }
20
- clone(overrides) {
21
- const context = new Context(overrides);
10
+ fork() {
11
+ const context = new Context();
22
12
  for (const [handle, value] of this.entries()) {
23
13
  if (!context.has(handle)) {
24
- context.set(handle, handle.clone?.(value) ?? value);
14
+ context.set(handle, handle.fork(value));
25
15
  }
26
16
  }
27
17
  return context;
28
18
  }
29
19
  }
30
- export function ContextHandle(clone) {
31
- return { clone };
20
+ export function ContextPart(fork, debug) {
21
+ const self = {
22
+ fork,
23
+ get() {
24
+ return Context.get()?.get(self);
25
+ },
26
+ ...debug && { debug },
27
+ };
28
+ return self;
32
29
  }
33
30
  //# sourceMappingURL=Context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Context.js","sourceRoot":"","sources":["../Context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAW,CAAA;AAEhD,MAAM,OAAO,OAAQ,SAAQ,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"}
1
+ {"version":3,"file":"Context.js","sourceRoot":"","sources":["../Context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAW,CAAA;AAEhD,MAAM,OAAO,OAAQ,SAAQ,GAAyB;IACpD,MAAM,CAAC,GAAG;QACR,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAA;IAC3B,CAAC;IAED,GAAG,CAAI,CAAU;QACf,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAC7B,CAAC;IAED,IAAI;QACF,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;QAC7B,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YAC7C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;YACzC,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;CACF;AAQD,MAAM,UAAU,WAAW,CAAI,IAAuB,EAAE,KAAc;IACpE,MAAM,IAAI,GAAmB;QAC3B,IAAI;QACJ,GAAG;YACD,OAAO,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,IAAI,CAAU,CAAA;QAC1C,CAAC;QACD,GAAG,KAAK,IAAI,EAAE,KAAK,EAAE;KACtB,CAAA;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -7,4 +7,5 @@ export declare function EventBase<B extends symbol, K extends string>(brand: B,
7
7
  readonly brand: B;
8
8
  readonly type: K;
9
9
  };
10
+ is<T>(this: new (...args: any) => T, value: unknown): value is T;
10
11
  };
package/dist/EventBase.js CHANGED
@@ -1,6 +1,11 @@
1
1
  import { attachCustomInspect } from "liminal-util";
2
2
  export function EventBase(brand, type) {
3
3
  return class {
4
+ static is(value) {
5
+ return typeof value === "object" && value !== null
6
+ && "brand" in value && value.brand === brand
7
+ && "type" in value && value.type === type;
8
+ }
4
9
  brand = brand;
5
10
  type = type;
6
11
  static {
@@ -1 +1 @@
1
- {"version":3,"file":"EventBase.js","sourceRoot":"","sources":["../EventBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAOlD,MAAM,UAAU,SAAS,CAAqC,KAAQ,EAAE,IAAO;IAC7E,OAAO;QACI,KAAK,GAAG,KAAK,CAAA;QACb,IAAI,GAAG,IAAI,CAAA;QAEpB;YACE,mBAAmB,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA;QACvE,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"EventBase.js","sourceRoot":"","sources":["../EventBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAOlD,MAAM,UAAU,SAAS,CAAqC,KAAQ,EAAE,IAAO;IAC7E,OAAO;QACL,MAAM,CAAC,EAAE,CAAkC,KAAc;YACvD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;mBAC7C,OAAO,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK;mBACzC,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAA;QAC7C,CAAC;QAEQ,KAAK,GAAG,KAAK,CAAA;QACb,IAAI,GAAG,IAAI,CAAA;QAEpB;YACE,mBAAmB,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA;QACvE,CAAC;KACF,CAAA;AACH,CAAC"}
package/dist/Fiber.d.ts CHANGED
@@ -1,5 +1,23 @@
1
- import type { Rune } from "./Rune.ts";
1
+ import { Context } from "./Context.ts";
2
+ import { type Rune } from "./Rune.ts";
2
3
  import { Runic } from "./Runic.ts";
4
+ export interface FiberConfig {
5
+ parent?: Fiber;
6
+ signal?: AbortSignal;
7
+ context: Context;
8
+ }
9
+ export declare class Fiber<T = any> {
10
+ #private;
11
+ static [Symbol.iterator](): Generator<Rune<never>, Fiber>;
12
+ static nextIndex: number;
13
+ readonly index: number;
14
+ readonly parent?: Fiber;
15
+ status: FiberStatus<T>;
16
+ controller: AbortController;
17
+ constructor(runic: Runic<Rune, T>, config: FiberConfig);
18
+ handle(event: any): void;
19
+ resolution(): Promise<T>;
20
+ }
3
21
  export type FiberStatus<T> = {
4
22
  type: "untouched";
5
23
  } | {
@@ -16,17 +34,3 @@ export type FiberStatus<T> = {
16
34
  type: "rejected";
17
35
  exception: unknown;
18
36
  };
19
- export declare class Fiber<T = any> {
20
- #private;
21
- static nextIndex: number;
22
- T: T;
23
- readonly index: number;
24
- readonly parent?: Fiber;
25
- signal: AbortSignal;
26
- either: AbortSignal;
27
- abort: (reason?: any) => void;
28
- status: FiberStatus<T>;
29
- constructor(runic: Runic<Rune, T>, parent?: Fiber);
30
- fork<T>(runic: Runic<Rune, T>): Fiber<T>;
31
- resolution(this: Fiber<T>): Promise<T>;
32
- }
package/dist/Fiber.js CHANGED
@@ -1,41 +1,50 @@
1
1
  import { attachCustomInspect } from "liminal-util";
2
2
  import { Context } from "./Context.js";
3
+ import { HandlerContext } from "./Handler.js";
4
+ import { ToolRegistry, ToolRegistryContext } from "./index.js";
5
+ import { FiberCreated, FiberRejected, FiberResolved, FiberStarted } from "./LEvent.js";
6
+ import { MessageRegistry, MessageRegistryContext } from "./MessageRegistry.js";
7
+ import { ModelRegistry, ModelRegistryContext } from "./ModelRegistry.js";
8
+ import { RuneKey } from "./Rune.js";
3
9
  import { Runic } from "./Runic.js";
4
10
  export class Fiber {
11
+ static *[Symbol.iterator]() {
12
+ return yield Object.assign((fiber) => fiber, {
13
+ [RuneKey]: true,
14
+ debug: "current_fiber",
15
+ });
16
+ }
5
17
  static nextIndex = 0;
6
18
  index = Fiber.nextIndex++;
19
+ #context;
7
20
  #runic;
8
- #context = Context.ensure();
9
- signal;
10
- either;
11
- abort;
21
+ #handler = HandlerContext.get();
22
+ #configSignal;
12
23
  status = { type: "untouched" };
13
- constructor(runic, parent) {
24
+ controller = new AbortController();
25
+ constructor(runic, config) {
14
26
  this.#runic = runic;
15
- if (parent) {
27
+ const { context, parent, signal } = config;
28
+ this.#context = context;
29
+ if (parent)
16
30
  this.parent = parent;
17
- }
18
- const controller = new AbortController();
19
- this.signal = controller.signal;
20
- this.either = AbortSignal.any([
21
- ...this.parent?.signal ? [this.parent.signal] : [],
22
- this.signal,
23
- ]);
24
- this.abort = controller.abort.bind(controller);
31
+ if (signal)
32
+ this.#configSignal = signal;
33
+ this.handle(new FiberCreated());
25
34
  }
26
- fork(runic) {
27
- return new Fiber(runic, this);
35
+ handle(event) {
36
+ this.#handler?.call(this, event);
28
37
  }
29
38
  resolution() {
30
- const { status, abort } = this;
31
- switch (status.type) {
39
+ switch (this.status.type) {
32
40
  case "untouched": {
33
41
  const { promise, resolve, reject } = Promise.withResolvers();
34
42
  this.status = {
35
43
  type: "pending",
36
- self: this.signal,
44
+ self: this.controller.signal,
37
45
  promise,
38
46
  };
47
+ this.handle(new FiberStarted());
39
48
  const iterator = Runic.unwrap(this.#runic);
40
49
  let nextArg;
41
50
  this.#context.run(async () => {
@@ -51,7 +60,8 @@ export class Fiber {
51
60
  type: "resolved",
52
61
  value,
53
62
  };
54
- abort();
63
+ this.handle(new FiberResolved(value));
64
+ this.controller.abort();
55
65
  resolve(value);
56
66
  }
57
67
  catch (exception) {
@@ -59,23 +69,24 @@ export class Fiber {
59
69
  type: "rejected",
60
70
  exception,
61
71
  };
62
- abort(exception);
72
+ this.handle(new FiberRejected(exception));
73
+ this.controller.abort();
63
74
  reject(exception);
64
75
  }
65
76
  });
66
77
  return promise;
67
78
  }
68
79
  case "pending": {
69
- return status.promise;
80
+ return this.status.promise;
70
81
  }
71
82
  case "resolved": {
72
- return Promise.resolve(status.value);
83
+ return Promise.resolve(this.status.value);
73
84
  }
74
85
  case "rejected": {
75
- return Promise.reject(status.exception);
86
+ return Promise.reject(this.status.exception);
76
87
  }
77
88
  case "aborted": {
78
- return Promise.reject(status.reason);
89
+ return Promise.reject(this.status.reason);
79
90
  }
80
91
  }
81
92
  }
package/dist/Fiber.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Fiber.js","sourceRoot":"","sources":["../Fiber.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Fiber.js","sourceRoot":"","sources":["../Fiber.ts"],"names":[],"mappings":"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"}
package/dist/Handler.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ContextHandle } from "./Context.ts";
1
+ import { ContextPart as ContextPart } from "./Context.ts";
2
2
  import type { Fiber } from "./Fiber.ts";
3
3
  export type Handler<E = any> = [(this: Fiber, event: E) => void][0];
4
- export declare const HandlerContext: ContextHandle<Handler | undefined>;
4
+ export declare const HandlerContext: ContextPart<Handler | undefined>;
package/dist/Handler.js CHANGED
@@ -1,3 +1,3 @@
1
- import { ContextHandle } from "./Context.js";
2
- export const HandlerContext = ContextHandle();
1
+ import { ContextPart as ContextPart } from "./Context.js";
2
+ export const HandlerContext = ContextPart((parent) => parent, "handler");
3
3
  //# sourceMappingURL=Handler.js.map
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"Handler.js","sourceRoot":"","sources":["../Handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,WAAW,EAAE,MAAM,cAAc,CAAA;AAKzD,MAAM,CAAC,MAAM,cAAc,GAAqC,WAAW,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA"}
package/dist/L/L.d.ts CHANGED
@@ -1,10 +1,12 @@
1
1
  export * from "liminal-schema/factories";
2
- export * from "./_infer.ts";
3
- export * from "./_message.ts";
4
2
  export * from "./assistant.ts";
5
- export * from "./branch.ts";
6
3
  export * from "./catch.ts";
7
4
  export * from "./emit.ts";
5
+ export * from "./infer.ts";
6
+ export * from "./message.ts";
8
7
  export * from "./model.ts";
8
+ export * from "./rune.ts";
9
+ export * from "./strand.ts";
10
+ export * from "./stream.ts";
9
11
  export * from "./system.ts";
10
12
  export * from "./user.ts";
package/dist/L/L.js CHANGED
@@ -1,11 +1,13 @@
1
1
  export * from "liminal-schema/factories";
2
- export * from "./_infer.js";
3
- export * from "./_message.js";
4
2
  export * from "./assistant.js";
5
- export * from "./branch.js";
6
3
  export * from "./catch.js";
7
4
  export * from "./emit.js";
5
+ export * from "./infer.js";
6
+ export * from "./message.js";
8
7
  export * from "./model.js";
8
+ export * from "./rune.js";
9
+ export * from "./strand.js";
10
+ export * from "./stream.js";
9
11
  export * from "./system.js";
10
12
  export * from "./user.js";
11
13
  //# 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,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA"}
1
+ {"version":3,"file":"L.js","sourceRoot":"","sources":["../../L/L.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA"}
@@ -0,0 +1,4 @@
1
+ export declare class RequestCounter {
2
+ static count: number;
3
+ static next(): number;
4
+ }
@@ -0,0 +1,7 @@
1
+ export class RequestCounter {
2
+ static count = 0;
3
+ static next() {
4
+ return this.count++;
5
+ }
6
+ }
7
+ //# sourceMappingURL=_common.js.map
@@ -0,0 +1 @@
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"}
@@ -1,17 +1,17 @@
1
1
  import { toJSONSchema, validate } from "liminal-schema";
2
- import { _infer } from "./_infer.js";
3
- import { _message } from "./_message.js";
2
+ import { infer } from "./infer.js";
3
+ import { message } from "./message.js";
4
4
  import { rune } from "./rune.js";
5
5
  export const assistant = Object.assign(function* (type) {
6
6
  const schema = toJSONSchema(type);
7
- const inference = yield* _infer(schema);
8
- yield* _message("assistant", [{ part: inference }]);
7
+ const inference = yield* infer(schema);
8
+ yield* message("assistant", [{ part: inference }]);
9
9
  const input = JSON.parse(inference);
10
10
  return yield* rune(() => validate(type, input), "validate_assistant_message");
11
11
  }, {
12
12
  *[Symbol.iterator]() {
13
- const inference = yield* _infer();
14
- yield* _message("assistant", [{ part: inference }]);
13
+ const inference = yield* infer();
14
+ yield* message("assistant", [{ part: inference }]);
15
15
  return inference;
16
16
  },
17
17
  });
@@ -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,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"}
1
+ {"version":3,"file":"assistant.js","sourceRoot":"","sources":["../../L/assistant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAGnE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAMhC,MAAM,CAAC,MAAM,SAAS,GAAc,MAAM,CAAC,MAAM,CAC/C,QAAQ,CAAC,EAAI,IAAc;IACzB,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;IACjC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACtC,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IACnC,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,4BAA4B,CAAC,CAAA;AAC/E,CAAC,EACD;IACE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QAChB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,KAAK,EAAE,CAAA;QAChC,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;QAClD,OAAO,SAAS,CAAA;IAClB,CAAC;CACF,CACF,CAAA"}
package/dist/L/catch.js CHANGED
@@ -1,9 +1,19 @@
1
+ import { assert } from "liminal-util";
2
+ import { Context } from "../Context.js";
3
+ import { Fiber } from "../Fiber.js";
1
4
  import { rune } from "./rune.js";
2
5
  export { catch_ as catch };
3
6
  function* catch_(runic) {
4
- return yield* rune(async (fiber) => {
7
+ return yield* rune(async (parent) => {
5
8
  try {
6
- return { resolved: await fiber.fork(runic).resolution() };
9
+ const context = Context.get();
10
+ assert(context);
11
+ return {
12
+ resolved: await context.fork().run(() => new Fiber(runic, {
13
+ context: context.fork(),
14
+ parent,
15
+ }).resolution()),
16
+ };
7
17
  }
8
18
  catch (exception) {
9
19
  return { rejected: exception };
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"catch.js","sourceRoot":"","sources":["../../L/catch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAGnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAE,MAAM,IAAI,KAAK,EAAE,CAAA;AAE1B,QAAQ,CAAC,CAAC,MAAM,CAAoB,KAAkB;IACpD,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAClC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;YAC7B,MAAM,CAAC,OAAO,CAAC,CAAA;YACf,OAAO;gBACL,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CACtC,IAAI,KAAK,CAAC,KAAK,EAAE;oBACf,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE;oBACvB,MAAM;iBACP,CAAC,CAAC,UAAU,EAAE,CAChB;aACF,CAAA;QACH,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
@@ -1,10 +1,6 @@
1
- import { Context } from "../Context.js";
2
- import { HandlerContext } from "../Handler.js";
3
- import { rune } from "./rune.js";
1
+ import { Fiber } from "../Fiber.js";
4
2
  export function* emit(event) {
5
- const context = Context.ensure();
6
- const handler = context.get(HandlerContext);
7
- const fiber = yield* rune;
8
- handler?.call(fiber, event);
3
+ const self = yield* Fiber;
4
+ self.handle(event);
9
5
  }
10
6
  //# sourceMappingURL=emit.js.map
@@ -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,CAAA;IACzB,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAC7B,CAAC"}
1
+ {"version":3,"file":"emit.js","sourceRoot":"","sources":["../../L/emit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAKnC,MAAM,SAAS,CAAC,CAAC,IAAI,CAAU,KAAsB;IACnD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,KAAK,CAAA;IACzB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACpB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { SchemaObject } from "liminal-schema";
2
+ import { type LEvent } from "../LEvent.ts";
3
+ import type { Rune } from "../Rune.ts";
4
+ export { infer_ as infer };
5
+ interface infer_ extends Generator<Rune<LEvent>, string> {
6
+ }
7
+ declare function infer_(schema?: SchemaObject): infer_;