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
@@ -0,0 +1,29 @@
1
+ import { assert } from "liminal-util";
2
+ import { InferenceRequested, Inferred } from "../LEvent.js";
3
+ import { MessageRegistryContext } from "../MessageRegistry.js";
4
+ import { ModelRegistryContext } from "../ModelRegistry.js";
5
+ import { RequestCounter } from "./_common.js";
6
+ import { emit } from "./emit.js";
7
+ import { rune } from "./rune.js";
8
+ export { infer_ as infer };
9
+ function* infer_(schema) {
10
+ const modelRegistry = ModelRegistryContext.get();
11
+ assert(modelRegistry);
12
+ const model = modelRegistry.peek();
13
+ assert(model);
14
+ const requestId = RequestCounter.next();
15
+ yield* emit(new InferenceRequested(requestId, schema));
16
+ const messageRegistry = MessageRegistryContext.get();
17
+ assert(messageRegistry);
18
+ const inference = yield* rune((fiber) => model
19
+ .seal({
20
+ messages: messageRegistry.messages,
21
+ schema,
22
+ signal: fiber.controller.signal,
23
+ })
24
+ .resolve(), "infer");
25
+ yield* emit(new Inferred(requestId, inference));
26
+ return inference;
27
+ }
28
+ Object.defineProperty(infer_, "name", { value: "infer" });
29
+ //# sourceMappingURL=infer.js.map
@@ -0,0 +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,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,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAE,MAAM,IAAI,KAAK,EAAE,CAAA;AAI1B,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAqB;IACpC,MAAM,aAAa,GAAG,oBAAoB,CAAC,GAAG,EAAE,CAAA;IAChD,MAAM,CAAC,aAAa,CAAC,CAAA;IACrB,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,CAAA;IAClC,MAAM,CAAC,KAAK,CAAC,CAAA;IACb,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,EAAE,CAAA;IACvC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAA;IACtD,MAAM,eAAe,GAAG,sBAAsB,CAAC,GAAG,EAAE,CAAA;IACpD,MAAM,CAAC,eAAe,CAAC,CAAA;IACvB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CACtC,KAAK;SACF,IAAI,CAAC;QACJ,QAAQ,EAAE,eAAe,CAAC,QAAQ;QAClC,MAAM;QACN,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM;KAChC,CAAC;SACD,OAAO,EAAE,EAAE,OAAO,CAAC,CAAA;IACxB,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAA;IAC/C,OAAO,SAAS,CAAA;AAClB,CAAC;AACD,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { type LEvent } from "../LEvent.ts";
2
+ import type { ContentPart, MessageRole } from "../Message.ts";
3
+ import type { Rune } from "../Rune.ts";
4
+ export interface message extends Generator<Rune<LEvent>, void> {
5
+ }
6
+ export declare function message(role: MessageRole, content: Array<ContentPart>): message;
@@ -1,14 +1,12 @@
1
1
  import { assert } from "liminal-util";
2
- import { Context } from "../Context.js";
3
2
  import { MessageAppended } from "../LEvent.js";
4
3
  import { MessageRegistryContext } from "../MessageRegistry.js";
5
4
  import { emit } from "./emit.js";
6
- export function* _message(role, content) {
7
- const context = Context.ensure();
8
- const messageRegistry = context.get(MessageRegistryContext);
5
+ export function* message(role, content) {
6
+ const messageRegistry = MessageRegistryContext.get();
9
7
  assert(messageRegistry);
10
8
  const message = { role, content };
11
9
  yield* emit(new MessageAppended(message));
12
10
  messageRegistry.append(message);
13
11
  }
14
- //# sourceMappingURL=_message.js.map
12
+ //# sourceMappingURL=message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../L/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,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,OAAO,CAAC,IAAiB,EAAE,OAA2B;IACrE,MAAM,eAAe,GAAG,sBAAsB,CAAC,GAAG,EAAE,CAAA;IACpD,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/model.js CHANGED
@@ -1,11 +1,9 @@
1
1
  import { assert } from "liminal-util";
2
- import { Context } from "../Context.js";
3
2
  import { ModelRegistered } from "../LEvent.js";
4
3
  import { ModelRegistryContext } from "../ModelRegistry.js";
5
4
  import { emit } from "./emit.js";
6
5
  export function* model(model) {
7
- const context = Context.ensure();
8
- const registry = context.get(ModelRegistryContext);
6
+ const registry = ModelRegistryContext.get();
9
7
  assert(registry);
10
8
  registry.register(model);
11
9
  yield* emit(new ModelRegistered(model));
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../L/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,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,QAAQ,GAAG,oBAAoB,CAAC,GAAG,EAAE,CAAA;IAC3C,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,8 +1,3 @@
1
1
  import { Fiber } from "../Fiber.ts";
2
2
  import { type Rune } from "../Rune.ts";
3
- export interface rune extends Iterable<Rune<never>, Fiber> {
4
- <R>(source: (fiber: Fiber) => R, debug?: string): Iterable<Rune<never>, Awaited<R>> & {
5
- <E>(): Generator<Rune<E>, Awaited<R>>;
6
- };
7
- }
8
- export declare const rune: rune;
3
+ export declare function rune<R>(source: (fiber: Fiber) => R, debug?: string): Generator<Rune<never>, Awaited<R>>;
package/dist/L/rune.js CHANGED
@@ -1,19 +1,9 @@
1
1
  import { Fiber } from "../Fiber.js";
2
2
  import { RuneKey } from "../Rune.js";
3
- export const rune = Object.assign(function (source, debug) {
4
- return Object.assign(function* () {
5
- return yield Object.assign(source, { [RuneKey]: true, debug });
6
- }, {
7
- *[Symbol.iterator]() {
8
- return yield Object.assign(source, { [RuneKey]: true, debug });
9
- },
3
+ export function* rune(source, debug) {
4
+ return yield Object.assign(source, {
5
+ [RuneKey]: true,
6
+ debug,
10
7
  });
11
- }, {
12
- *[Symbol.iterator]() {
13
- return yield Object.assign((fiber) => fiber, {
14
- [RuneKey]: true,
15
- debug: "get_current_fiber",
16
- });
17
- },
18
- });
8
+ }
19
9
  //# sourceMappingURL=rune.js.map
@@ -1 +1 @@
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;AAO/C,MAAM,CAAC,MAAM,IAAI,GAAS,MAAM,CAAC,MAAM,CACrC,UAAY,MAA2B,EAAE,KAAc;IACrD,OAAO,MAAM,CAAC,MAAM,CAClB,QAAQ,CAAC;QACP,OAAO,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAW,CAAC,CAAA;IACzE,CAAC,EACD;QACE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;YAChB,OAAO,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAW,CAAC,CAAA;QACzE,CAAC;KACF,CACF,CAAA;AACH,CAAC,EACD;IACE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QAChB,OAAO,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,EAAE;YAClD,CAAC,OAAO,CAAC,EAAE,IAAI;YACf,KAAK,EAAE,mBAAmB;SAClB,CAAC,CAAA;IACb,CAAC;CACF,CACF,CAAA"}
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"}
@@ -0,0 +1,26 @@
1
+ import { Fiber } from "../Fiber.ts";
2
+ import { MessageRegistry } from "../MessageRegistry.ts";
3
+ import { ModelRegistry } from "../ModelRegistry.ts";
4
+ import { type Rune } from "../Rune.ts";
5
+ import type { Runic } from "../Runic.ts";
6
+ import { ToolRegistry } from "../ToolRegistry.ts";
7
+ export interface StrandConfig<T = any, E = any> {
8
+ handler?: ((this: Fiber<T>, event: E) => void) | undefined;
9
+ models?: ModelRegistry | undefined;
10
+ messages?: MessageRegistry | undefined;
11
+ tools?: ToolRegistry | undefined;
12
+ signal?: AbortSignal | undefined;
13
+ }
14
+ export interface strand<Y extends Rune, T> extends Iterable<Y, T>, PromiseLike<T> {
15
+ }
16
+ export declare function strand<X extends Runic>(runic: X, config?: StrandConfig<Runic.T<X>, Rune.E<Runic.Y<X>>>): strand<Runic.Y<X>, Runic.T<X>>;
17
+ export declare function strand<XA extends Array<Runic>>(runics: XA, config?: StrandConfig<{
18
+ [I in keyof XA]: Runic.T<XA[I]>;
19
+ }, Rune.E<Runic.Y<XA[number]>>>): strand<Runic.Y<XA[number]> | Rune<never>, {
20
+ [I in keyof XA]: Runic.T<XA[I]>;
21
+ }>;
22
+ export declare function strand<XR extends Record<keyof any, Runic>>(runics: XR, config?: StrandConfig<{
23
+ [K in keyof XR]: Runic.T<XR[K]>;
24
+ }, Rune.E<Runic.Y<XR[keyof XR]>>>): strand<Runic.Y<XR[keyof XR]> | Rune<never>, {
25
+ [K in keyof XR]: Runic.T<XR[K]>;
26
+ }>;
@@ -0,0 +1,69 @@
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";
6
+ import {} from "../Rune.js";
7
+ import { ToolRegistry, ToolRegistryContext } from "../ToolRegistry.js";
8
+ import { rune } from "./rune.js";
9
+ export function strand(value, config) {
10
+ return {
11
+ *[Symbol.iterator]() {
12
+ const parent = yield* Fiber;
13
+ if (Array.isArray(value)) {
14
+ const fibers = value.map((runic) => new Fiber(runic, {
15
+ parent,
16
+ context: makeContext(),
17
+ }));
18
+ return yield* rune(() => Promise.all(fibers.map((fiber) => fiber.resolution())), "strand");
19
+ }
20
+ else if (typeof value === "object") {
21
+ const fibers = Object.values(value).map((runic) => new Fiber(runic, {
22
+ parent,
23
+ context: makeContext(),
24
+ }));
25
+ return yield* rune(async () => {
26
+ const keys = Object.keys(value);
27
+ return await Promise
28
+ .all(fibers.map((fiber) => fiber.resolution()))
29
+ .then((resolved) => resolved.map((value, i) => [keys[i], value]))
30
+ .then(Object.fromEntries);
31
+ }, "strand");
32
+ }
33
+ const self = new Fiber(typeof value === "function" ? value() : value, {
34
+ parent,
35
+ context: makeContext(),
36
+ });
37
+ return yield* rune(() => self.resolution(), "strand");
38
+ },
39
+ then(onfulfilled, onrejected) {
40
+ return new Fiber(this, { context: makeContext() }).resolution().then(onfulfilled, onrejected);
41
+ },
42
+ };
43
+ function makeContext() {
44
+ let context = Context.get()?.fork();
45
+ if (!context) {
46
+ context = new Context([
47
+ [ModelRegistryContext, new ModelRegistry()],
48
+ [MessageRegistryContext, new MessageRegistry()],
49
+ [ToolRegistryContext, new ToolRegistry()],
50
+ ]);
51
+ }
52
+ if (config) {
53
+ if ("handler" in config) {
54
+ context.set(HandlerContext, config.handler);
55
+ }
56
+ if ("models" in config) {
57
+ context.set(ModelRegistryContext, config.models?.clone() ?? new ModelRegistry());
58
+ }
59
+ if ("messages" in config) {
60
+ context.set(MessageRegistryContext, config.messages?.clone() ?? new MessageRegistry());
61
+ }
62
+ if ("tools" in config) {
63
+ context.set(ToolRegistryContext, config.tools?.clone() ?? new ToolRegistry());
64
+ }
65
+ }
66
+ return context;
67
+ }
68
+ }
69
+ //# sourceMappingURL=strand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strand.js","sourceRoot":"","sources":["../../L/strand.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { type LEvent } from "../LEvent.ts";
2
+ import { type Rune } from "../Rune.ts";
3
+ export interface stream extends Iterable<Rune<LEvent>, ReadableStream<string>> {
4
+ }
5
+ export declare const stream: stream;
@@ -0,0 +1,27 @@
1
+ import { assert } from "liminal-util";
2
+ import { InferenceRequested } from "../LEvent.js";
3
+ import { MessageRegistryContext } from "../MessageRegistry.js";
4
+ import { ModelRegistryContext } from "../ModelRegistry.js";
5
+ import {} from "../Rune.js";
6
+ import { RequestCounter } from "./_common.js";
7
+ import { emit } from "./emit.js";
8
+ import { rune } from "./rune.js";
9
+ export const stream = {
10
+ *[Symbol.iterator]() {
11
+ const modelRegistry = ModelRegistryContext.get();
12
+ assert(modelRegistry);
13
+ const model = modelRegistry.peek();
14
+ assert(model);
15
+ const requestId = RequestCounter.next();
16
+ yield* emit(new InferenceRequested(requestId));
17
+ const messageRegistry = MessageRegistryContext.get();
18
+ assert(messageRegistry);
19
+ return yield* rune((fiber) => model
20
+ .seal({
21
+ messages: messageRegistry.messages,
22
+ signal: fiber.controller.signal,
23
+ })
24
+ .stream(), "stream");
25
+ },
26
+ };
27
+ //# sourceMappingURL=stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../L/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,kBAAkB,EAAe,MAAM,cAAc,CAAA;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAa,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAIhC,MAAM,CAAC,MAAM,MAAM,GAAW;IAC5B,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QAChB,MAAM,aAAa,GAAG,oBAAoB,CAAC,GAAG,EAAE,CAAA;QAChD,MAAM,CAAC,aAAa,CAAC,CAAA;QACrB,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,CAAA;QAClC,MAAM,CAAC,KAAK,CAAC,CAAA;QACb,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,EAAE,CAAA;QACvC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAA;QAC9C,MAAM,eAAe,GAAG,sBAAsB,CAAC,GAAG,EAAE,CAAA;QACpD,MAAM,CAAC,eAAe,CAAC,CAAA;QACvB,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC3B,KAAK;aACF,IAAI,CAAC;YACJ,QAAQ,EAAE,eAAe,CAAC,QAAQ;YAClC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM;SAChC,CAAC;aACD,MAAM,EAAE,EAAE,QAAQ,CAAC,CAAA;IAC1B,CAAC;CACF,CAAA"}
package/dist/L/system.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { isTemplateStringsArray } from "liminal-util";
2
- import { _message } from "./_message.js";
2
+ import { message } from "./message.js";
3
3
  export function system(e0, ...rest) {
4
4
  const part = isTemplateStringsArray(e0) ? String.raw(e0, ...rest) : e0;
5
- return _message("system", [{ part }]);
5
+ return message("system", [{ part }]);
6
6
  }
7
7
  //# sourceMappingURL=system.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"system.js","sourceRoot":"","sources":["../../L/system.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAGrD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAMxC,MAAM,UAAU,MAAM,CAAC,EAAiC,EAAE,GAAG,IAAmB;IAC9E,MAAM,IAAI,GAAG,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACtE,OAAO,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;AACvC,CAAC"}
1
+ {"version":3,"file":"system.js","sourceRoot":"","sources":["../../L/system.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAGrD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAMtC,MAAM,UAAU,MAAM,CAAC,EAAiC,EAAE,GAAG,IAAmB;IAC9E,MAAM,IAAI,GAAG,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACtE,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;AACtC,CAAC"}
package/dist/L/user.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { isTemplateStringsArray } from "liminal-util";
2
- import { _message } from "./_message.js";
2
+ import { message } from "./message.js";
3
3
  export function user(e0, ...rest) {
4
4
  const part = isTemplateStringsArray(e0) ? String.raw(e0, ...rest) : e0;
5
- return _message("user", [{ part }]);
5
+ return message("user", [{ part }]);
6
6
  }
7
7
  //# sourceMappingURL=user.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"user.js","sourceRoot":"","sources":["../../L/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAGrD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAMxC,MAAM,UAAU,IAAI,CAAC,EAAiC,EAAE,GAAG,IAAmB;IAC5E,MAAM,IAAI,GAAG,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACtE,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;AACrC,CAAC"}
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../L/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAGrD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAMtC,MAAM,UAAU,IAAI,CAAC,EAAiC,EAAE,GAAG,IAAmB;IAC5E,MAAM,IAAI,GAAG,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACtE,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;AACpC,CAAC"}
package/dist/LEvent.d.ts CHANGED
@@ -2,6 +2,9 @@ import type { SchemaObject } from "liminal-schema";
2
2
  import type { Message } from "./Message.ts";
3
3
  import type { Model } from "./Model.ts";
4
4
  export type LEvent = FiberCreated | FiberResolved | FiberStarted | InferenceRequested | Inferred | MessageAppended | ModelRegistered;
5
+ export declare namespace LEvent {
6
+ function is(value: unknown): value is LEvent;
7
+ }
5
8
  export declare const LEventTag: unique symbol;
6
9
  export type LEventTag = typeof LEventTag;
7
10
  declare const ModelRegistered_base: {
@@ -9,6 +12,7 @@ declare const ModelRegistered_base: {
9
12
  readonly brand: typeof LEventTag;
10
13
  readonly type: "model_registered";
11
14
  };
15
+ is<T>(this: new (...args: any) => T, value: unknown): value is T;
12
16
  };
13
17
  export declare class ModelRegistered extends ModelRegistered_base {
14
18
  readonly model: Model;
@@ -19,6 +23,7 @@ declare const InferenceRequested_base: {
19
23
  readonly brand: typeof LEventTag;
20
24
  readonly type: "inference_requested";
21
25
  };
26
+ is<T>(this: new (...args: any) => T, value: unknown): value is T;
22
27
  };
23
28
  export declare class InferenceRequested extends InferenceRequested_base {
24
29
  readonly requestId: number;
@@ -30,6 +35,7 @@ declare const Inferred_base: {
30
35
  readonly brand: typeof LEventTag;
31
36
  readonly type: "inferred";
32
37
  };
38
+ is<T>(this: new (...args: any) => T, value: unknown): value is T;
33
39
  };
34
40
  export declare class Inferred extends Inferred_base {
35
41
  readonly requestId: number;
@@ -41,6 +47,7 @@ declare const MessageAppended_base: {
41
47
  readonly brand: typeof LEventTag;
42
48
  readonly type: "message_appended";
43
49
  };
50
+ is<T>(this: new (...args: any) => T, value: unknown): value is T;
44
51
  };
45
52
  export declare class MessageAppended extends MessageAppended_base {
46
53
  readonly message: Message;
@@ -51,6 +58,7 @@ declare const FiberCreated_base: {
51
58
  readonly brand: typeof LEventTag;
52
59
  readonly type: "fiber_created";
53
60
  };
61
+ is<T>(this: new (...args: any) => T, value: unknown): value is T;
54
62
  };
55
63
  export declare class FiberCreated extends FiberCreated_base {
56
64
  }
@@ -59,6 +67,7 @@ declare const FiberStarted_base: {
59
67
  readonly brand: typeof LEventTag;
60
68
  readonly type: "fiber_started";
61
69
  };
70
+ is<T>(this: new (...args: any) => T, value: unknown): value is T;
62
71
  };
63
72
  export declare class FiberStarted extends FiberStarted_base {
64
73
  }
@@ -67,10 +76,21 @@ declare const FiberResolved_base: {
67
76
  readonly brand: typeof LEventTag;
68
77
  readonly type: "fiber_resolved";
69
78
  };
79
+ is<T>(this: new (...args: any) => T, value: unknown): value is T;
70
80
  };
71
81
  export declare class FiberResolved extends FiberResolved_base {
72
82
  readonly value: any;
73
83
  constructor(value: any);
74
84
  }
75
- export declare function isLEvent(value: unknown): value is LEvent;
85
+ declare const FiberRejected_base: {
86
+ new (): {
87
+ readonly brand: typeof LEventTag;
88
+ readonly type: "fiber_rejected";
89
+ };
90
+ is<T>(this: new (...args: any) => T, value: unknown): value is T;
91
+ };
92
+ export declare class FiberRejected extends FiberRejected_base {
93
+ readonly reason: any;
94
+ constructor(reason: any);
95
+ }
76
96
  export {};
package/dist/LEvent.js CHANGED
@@ -1,4 +1,11 @@
1
1
  import { EventBase } from "./EventBase.js";
2
+ export var LEvent;
3
+ (function (LEvent) {
4
+ function is(value) {
5
+ return typeof value === "object" && value !== null && "brand" in value && value.brand === LEventTag;
6
+ }
7
+ LEvent.is = is;
8
+ })(LEvent || (LEvent = {}));
2
9
  export const LEventTag = Symbol.for("liminal/LEvent");
3
10
  export class ModelRegistered extends EventBase(LEventTag, "model_registered") {
4
11
  model;
@@ -44,7 +51,11 @@ export class FiberResolved extends EventBase(LEventTag, "fiber_resolved") {
44
51
  this.value = value;
45
52
  }
46
53
  }
47
- export function isLEvent(value) {
48
- return typeof value === "object" && value !== null && "brand" in value && value.brand === LEventTag;
54
+ export class FiberRejected extends EventBase(LEventTag, "fiber_rejected") {
55
+ reason;
56
+ constructor(reason) {
57
+ super();
58
+ this.reason = reason;
59
+ }
49
60
  }
50
61
  //# sourceMappingURL=LEvent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LEvent.js","sourceRoot":"","sources":["../LEvent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAa1C,MAAM,CAAC,MAAM,SAAS,GAAkB,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;AAGpE,MAAM,OAAO,eAAgB,SAAQ,SAAS,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACtD;IAArB,YAAqB,KAAY;QAC/B,KAAK,EAAE,CAAA;QADY,UAAK,GAAL,KAAK,CAAO;IAEjC,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,SAAS,CAAC,SAAS,EAAE,qBAAqB,CAAC;IAGtE;IADX,YACW,SAAiB,EAC1B,MAAiC;QAEjC,KAAK,EAAE,CAAA;QAHE,cAAS,GAAT,SAAS,CAAQ;QAI1B,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACtB,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,QAAS,SAAQ,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC;IAEjD;IACA;IAFX,YACW,SAAiB,EACjB,SAAiB;QAE1B,KAAK,EAAE,CAAA;QAHE,cAAS,GAAT,SAAS,CAAQ;QACjB,cAAS,GAAT,SAAS,CAAQ;IAG5B,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,SAAS,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACtD;IAArB,YAAqB,OAAgB;QACnC,KAAK,EAAE,CAAA;QADY,YAAO,GAAP,OAAO,CAAS;IAErC,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC;CAAG;AAC1E,MAAM,OAAO,YAAa,SAAQ,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC;CAAG;AAC1E,MAAM,OAAO,aAAc,SAAQ,SAAS,CAAC,SAAS,EAAE,gBAAgB,CAAC;IAClD;IAArB,YAAqB,KAAU;QAC7B,KAAK,EAAE,CAAA;QADY,UAAK,GAAL,KAAK,CAAK;IAE/B,CAAC;CACF;AAED,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,CAAA;AACrG,CAAC"}
1
+ {"version":3,"file":"LEvent.js","sourceRoot":"","sources":["../LEvent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAa1C,MAAM,KAAW,MAAM,CAItB;AAJD,WAAiB,MAAM;IACrB,SAAgB,EAAE,CAAC,KAAc;QAC/B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,CAAA;IACrG,CAAC;IAFe,SAAE,KAEjB,CAAA;AACH,CAAC,EAJgB,MAAM,KAAN,MAAM,QAItB;AAED,MAAM,CAAC,MAAM,SAAS,GAAkB,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;AAGpE,MAAM,OAAO,eAAgB,SAAQ,SAAS,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACtD;IAArB,YAAqB,KAAY;QAC/B,KAAK,EAAE,CAAA;QADY,UAAK,GAAL,KAAK,CAAO;IAEjC,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,SAAS,CAAC,SAAS,EAAE,qBAAqB,CAAC;IAGtE;IADX,YACW,SAAiB,EAC1B,MAAiC;QAEjC,KAAK,EAAE,CAAA;QAHE,cAAS,GAAT,SAAS,CAAQ;QAI1B,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACtB,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,QAAS,SAAQ,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC;IAEjD;IACA;IAFX,YACW,SAAiB,EACjB,SAAiB;QAE1B,KAAK,EAAE,CAAA;QAHE,cAAS,GAAT,SAAS,CAAQ;QACjB,cAAS,GAAT,SAAS,CAAQ;IAG5B,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,SAAS,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACtD;IAArB,YAAqB,OAAgB;QACnC,KAAK,EAAE,CAAA;QADY,YAAO,GAAP,OAAO,CAAS;IAErC,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC;CAAG;AAC1E,MAAM,OAAO,YAAa,SAAQ,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC;CAAG;AAC1E,MAAM,OAAO,aAAc,SAAQ,SAAS,CAAC,SAAS,EAAE,gBAAgB,CAAC;IAClD;IAArB,YAAqB,KAAU;QAC7B,KAAK,EAAE,CAAA;QADY,UAAK,GAAL,KAAK,CAAK;IAE/B,CAAC;CACF;AACD,MAAM,OAAO,aAAc,SAAQ,SAAS,CAAC,SAAS,EAAE,gBAAgB,CAAC;IAClD;IAArB,YAAqB,MAAW;QAC9B,KAAK,EAAE,CAAA;QADY,WAAM,GAAN,MAAM,CAAK;IAEhC,CAAC;CACF"}
@@ -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
  export declare class MessageRegistry {
4
4
  messages: Array<Message>;
@@ -6,4 +6,4 @@ export declare class MessageRegistry {
6
6
  append(message: Message): void;
7
7
  clone(): MessageRegistry;
8
8
  }
9
- export declare const MessageRegistryContext: ContextHandle<MessageRegistry>;
9
+ export declare const MessageRegistryContext: ContextPart<MessageRegistry>;
@@ -1,4 +1,4 @@
1
- import { ContextHandle } from "./Context.js";
1
+ import { ContextPart } from "./Context.js";
2
2
  export class MessageRegistry {
3
3
  messages;
4
4
  constructor(messages) {
@@ -11,5 +11,5 @@ export class MessageRegistry {
11
11
  return new MessageRegistry([...this.messages]);
12
12
  }
13
13
  }
14
- export const MessageRegistryContext = ContextHandle(({ messages }) => new MessageRegistry([...messages]));
14
+ export const MessageRegistryContext = ContextPart((parent) => parent?.clone() ?? new MessageRegistry(), "message_registry");
15
15
  //# sourceMappingURL=MessageRegistry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MessageRegistry.js","sourceRoot":"","sources":["../MessageRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAG5C,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,GAAmC,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CACnG,IAAI,eAAe,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CACnC,CAAA"}
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/Model.d.ts CHANGED
@@ -1,7 +1,16 @@
1
- import type { Schema } from "liminal-schema";
1
+ import type { SchemaObject } from "liminal-schema";
2
2
  import type { Message } from "./Message.ts";
3
3
  export declare class Model {
4
4
  readonly vendor: string;
5
- readonly resolve: (messages: Array<Message>, schema?: Schema) => Promise<string>;
6
- constructor(vendor: string, resolve: (messages: Array<Message>, schema?: Schema) => Promise<string>);
5
+ readonly seal: (envelope: Envelope) => SealedEnvelope;
6
+ constructor(vendor: string, seal: (envelope: Envelope) => SealedEnvelope);
7
+ }
8
+ export interface Envelope {
9
+ messages: Array<Message>;
10
+ schema?: SchemaObject | undefined;
11
+ signal?: AbortSignal;
12
+ }
13
+ export interface SealedEnvelope {
14
+ resolve(): Promise<string>;
15
+ stream(): ReadableStream<string>;
7
16
  }
package/dist/Model.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import { attachCustomInspect } from "liminal-util";
2
2
  export class Model {
3
3
  vendor;
4
- resolve;
5
- constructor(vendor, resolve) {
4
+ seal;
5
+ constructor(vendor, seal) {
6
6
  this.vendor = vendor;
7
- this.resolve = resolve;
7
+ this.seal = seal;
8
8
  }
9
9
  static {
10
10
  attachCustomInspect(this, ({ vendor }) => ({ vendor }));
package/dist/Model.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Model.js","sourceRoot":"","sources":["../Model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAGlD,MAAM,OAAO,KAAK;IAEL;IACA;IAFX,YACW,MAAc,EACd,OAAuE;QADvE,WAAM,GAAN,MAAM,CAAQ;QACd,YAAO,GAAP,OAAO,CAAgE;IAC/E,CAAC;IAEJ;QACE,mBAAmB,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;IACzD,CAAC;CACF"}
1
+ {"version":3,"file":"Model.js","sourceRoot":"","sources":["../Model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAGlD,MAAM,OAAO,KAAK;IAEL;IACA;IAFX,YACW,MAAc,EACd,IAA4C;QAD5C,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAwC;IACpD,CAAC;IAEJ;QACE,mBAAmB,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;IACzD,CAAC;CACF"}
@@ -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
  /** An intrusive list for storing `Model`s. */
4
4
  export declare class ModelRegistry {
@@ -7,10 +7,11 @@ export declare class ModelRegistry {
7
7
  peek(): Model | undefined;
8
8
  register(value: Model): ModelRegistryNode;
9
9
  remove(node: ModelRegistryNode): void;
10
+ clone(): ModelRegistry;
10
11
  }
11
12
  export interface ModelRegistryNode {
12
13
  prev: ModelRegistryNode | undefined;
13
14
  model: Model;
14
15
  next?: ModelRegistryNode | undefined;
15
16
  }
16
- export declare const ModelRegistryContext: ContextHandle<ModelRegistry>;
17
+ export declare const ModelRegistryContext: ContextPart<ModelRegistry>;
@@ -1,4 +1,4 @@
1
- import { ContextHandle } from "./Context.js";
1
+ import { ContextPart } from "./Context.js";
2
2
  /** An intrusive list for storing `Model`s. */
3
3
  export class ModelRegistry {
4
4
  peek() {
@@ -33,12 +33,13 @@ export class ModelRegistry {
33
33
  }
34
34
  node.prev = node.next = undefined;
35
35
  }
36
- }
37
- export const ModelRegistryContext = ContextHandle(({ head }) => {
38
- const instance = new ModelRegistry();
39
- for (let node = head; node; node = node.next) {
40
- instance.register(node.model);
36
+ clone() {
37
+ const instance = new ModelRegistry();
38
+ for (let node = this.head; node; node = node.next) {
39
+ instance.register(node.model);
40
+ }
41
+ return instance;
41
42
  }
42
- return instance;
43
- });
43
+ }
44
+ export const ModelRegistryContext = ContextPart((parent) => parent?.clone() ?? new ModelRegistry(), "model_registry");
44
45
  //# sourceMappingURL=ModelRegistry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModelRegistry.js","sourceRoot":"","sources":["../ModelRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAG5C,8CAA8C;AAC9C,MAAM,OAAO,aAAa;IAIxB,IAAI;QACF,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,CAAA;IACzB,CAAC;IAED,QAAQ,CAAC,KAAY;QACnB,MAAM,IAAI,GAAsB;YAC9B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,KAAK;SACb,CAAA;QACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QACvB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAClB,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,CAAC,IAAuB;QAC5B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QAC5B,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QAC5B,CAAC;QACD,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACvB,CAAC;QACD,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACvB,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,SAAS,CAAA;IACnC,CAAC;CACF;AAQD,MAAM,CAAC,MAAM,oBAAoB,GAAiC,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;IAC3F,MAAM,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAA;IACpC,KAAK,IAAI,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7C,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"ModelRegistry.js","sourceRoot":"","sources":["../ModelRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAG1C,8CAA8C;AAC9C,MAAM,OAAO,aAAa;IAIxB,IAAI;QACF,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,CAAA;IACzB,CAAC;IAED,QAAQ,CAAC,KAAY;QACnB,MAAM,IAAI,GAAsB;YAC9B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,KAAK;SACb,CAAA;QACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QACvB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAClB,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,CAAC,IAAuB;QAC5B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QAC5B,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QAC5B,CAAC;QACD,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACvB,CAAC;QACD,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACvB,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,SAAS,CAAA;IACnC,CAAC;IAED,KAAK;QACH,MAAM,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAA;QACpC,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAClD,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC/B,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;CACF;AAQD,MAAM,CAAC,MAAM,oBAAoB,GAA+B,WAAW,CACzE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,IAAI,aAAa,EAAE,EAClD,gBAAgB,CACjB,CAAA"}
package/dist/Tool.js CHANGED
@@ -1,23 +1,12 @@
1
- import { toJSONSchema, validate } from "liminal-schema";
2
- import { subtle } from "node:crypto";
1
+ import { Schema, toJSONSchema, validate, } from "liminal-schema";
3
2
  export class Tool {
4
3
  name;
5
4
  description;
6
5
  parameterSchema;
7
6
  f;
8
7
  static async make(description, type, f) {
9
- const encoder = new TextEncoder();
10
8
  const schema = toJSONSchema(type);
11
- const buffer = await subtle.digest("SHA-256", encoder.encode(description + "\n\n" + JSON.stringify(schema)));
12
- const bytes = new Uint8Array(buffer);
13
- let binary = "";
14
- for (const b of bytes)
15
- 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) => {
9
+ return new Tool(await Schema.id(schema, description), description, schema, async (arg) => {
21
10
  return await f(await validate(type, arg));
22
11
  });
23
12
  }
package/dist/Tool.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Tool.js","sourceRoot":"","sources":["../Tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,YAAY,EAAE,QAAQ,EAAgC,MAAM,gBAAgB,CAAA;AACpH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,MAAM,OAAO,IAAI;IAsBJ;IACA;IACA;IACA;IAxBX,MAAM,CAAC,KAAK,CAAC,IAAI,CACf,WAAmB,EACnB,IAAc,EACd,CAAqC;QAErC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;QACjC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;QACjC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,GAAG,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAC5G,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAA;QACpC,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,KAAK,MAAM,CAAC,IAAI,KAAK;YAAE,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;aACxB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;aACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;aACnB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QACrB,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YACzD,OAAO,MAAM,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAU,CAAC,CAAA;QACpD,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,YACW,IAAY,EACZ,WAAmB,EACnB,eAA6B,EAC7B,CAAuC;QAHvC,SAAI,GAAJ,IAAI,CAAQ;QACZ,gBAAW,GAAX,WAAW,CAAQ;QACnB,oBAAe,GAAf,eAAe,CAAc;QAC7B,MAAC,GAAD,CAAC,CAAsC;IAC/C,CAAC;CACL"}
1
+ {"version":3,"file":"Tool.js","sourceRoot":"","sources":["../Tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,EAEN,YAAY,EACZ,QAAQ,GAGT,MAAM,gBAAgB,CAAA;AAEvB,MAAM,OAAO,IAAI;IAkBJ;IACA;IACA;IACA;IApBX,MAAM,CAAC,KAAK,CAAC,IAAI,CACf,WAAmB,EACnB,IAAc,EACd,CAAqC;QAErC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;QACjC,OAAO,IAAI,IAAI,CACb,MAAM,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,EACpC,WAAW,EACX,MAAM,EACN,KAAK,EAAE,GAAG,EAAE,EAAE;YACZ,OAAO,MAAM,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAU,CAAC,CAAA;QACpD,CAAC,CACF,CAAA;IACH,CAAC;IAED,YACW,IAAY,EACZ,WAAmB,EACnB,eAA6B,EAC7B,CAAuC;QAHvC,SAAI,GAAJ,IAAI,CAAQ;QACZ,gBAAW,GAAX,WAAW,CAAQ;QACnB,oBAAe,GAAf,eAAe,CAAc;QAC7B,MAAC,GAAD,CAAC,CAAsC;IAC/C,CAAC;CACL"}
@@ -1,5 +1,6 @@
1
- import { ContextHandle } from "liminal";
1
+ import { ContextPart } from "liminal";
2
2
  import type { Tool } from "./Tool";
3
3
  export declare class ToolRegistry extends Set<Tool> {
4
+ clone(): ToolRegistry;
4
5
  }
5
- export declare const ToolRegistryContext: ContextHandle<ToolRegistry>;
6
+ export declare const ToolRegistryContext: ContextPart<ToolRegistry>;
@@ -1,5 +1,8 @@
1
- import { ContextHandle } from "liminal";
1
+ import { ContextPart } from "liminal";
2
2
  export class ToolRegistry extends Set {
3
+ clone() {
4
+ return new ToolRegistry([...this]);
5
+ }
3
6
  }
4
- export const ToolRegistryContext = ContextHandle();
7
+ export const ToolRegistryContext = ContextPart(() => new ToolRegistry(), "tool_registry");
5
8
  //# sourceMappingURL=ToolRegistry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToolRegistry.js","sourceRoot":"","sources":["../ToolRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAGvC,MAAM,OAAO,YAAa,SAAQ,GAAS;CAAG;AAC9C,MAAM,CAAC,MAAM,mBAAmB,GAAgC,aAAa,EAAE,CAAA"}
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"}