liminal 0.5.4 → 0.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/Agent.ts +24 -16
  2. package/CHANGELOG.md +12 -0
  3. package/Context.ts +52 -0
  4. package/EventBase.ts +21 -8
  5. package/Fiber.ts +44 -57
  6. package/Handler.ts +6 -0
  7. package/L/L.ts +0 -3
  8. package/L/_infer.ts +14 -21
  9. package/L/_message.ts +6 -4
  10. package/L/branch.ts +15 -33
  11. package/L/emit.ts +10 -2
  12. package/L/model.ts +11 -6
  13. package/L/rune.ts +2 -2
  14. package/LEvent.ts +25 -21
  15. package/MessageRegistry.ts +21 -0
  16. package/{state/ModelRegistry.ts → ModelRegistry.ts} +17 -18
  17. package/Rune.ts +2 -2
  18. package/Runic.ts +11 -3
  19. package/RuntimeEvent.ts +6 -0
  20. package/dist/Agent.d.ts +11 -7
  21. package/dist/Agent.js +11 -8
  22. package/dist/Agent.js.map +1 -1
  23. package/dist/Context.d.ts +12 -0
  24. package/dist/Context.js +41 -0
  25. package/dist/Context.js.map +1 -0
  26. package/dist/EventBase.d.ts +7 -4
  27. package/dist/EventBase.js +17 -11
  28. package/dist/EventBase.js.map +1 -1
  29. package/dist/Fiber.d.ts +7 -19
  30. package/dist/Fiber.js +38 -34
  31. package/dist/Fiber.js.map +1 -1
  32. package/dist/Handler.d.ts +4 -1
  33. package/dist/Handler.js +2 -1
  34. package/dist/Handler.js.map +1 -1
  35. package/dist/L/L.d.ts +0 -3
  36. package/dist/L/L.js +0 -3
  37. package/dist/L/L.js.map +1 -1
  38. package/dist/L/_infer.js +15 -18
  39. package/dist/L/_infer.js.map +1 -1
  40. package/dist/L/_message.js +6 -4
  41. package/dist/L/_message.js.map +1 -1
  42. package/dist/L/branch.js +13 -32
  43. package/dist/L/branch.js.map +1 -1
  44. package/dist/L/emit.js +10 -2
  45. package/dist/L/emit.js.map +1 -1
  46. package/dist/L/model.d.ts +2 -1
  47. package/dist/L/model.js +10 -5
  48. package/dist/L/model.js.map +1 -1
  49. package/dist/L/rune.d.ts +2 -2
  50. package/dist/L/rune.js +1 -0
  51. package/dist/L/rune.js.map +1 -1
  52. package/dist/LEvent.d.ts +55 -10
  53. package/dist/LEvent.js +17 -16
  54. package/dist/LEvent.js.map +1 -1
  55. package/dist/MessageRegistry.d.ts +9 -0
  56. package/dist/MessageRegistry.js +15 -0
  57. package/dist/MessageRegistry.js.map +1 -0
  58. package/dist/{state/ModelRegistry.d.ts → ModelRegistry.d.ts} +4 -3
  59. package/dist/{state/ModelRegistry.js → ModelRegistry.js} +12 -13
  60. package/dist/ModelRegistry.js.map +1 -0
  61. package/dist/Rune.d.ts +2 -2
  62. package/dist/Runic.d.ts +3 -3
  63. package/dist/Runic.js.map +1 -1
  64. package/dist/RuntimeEvent.d.ts +5 -0
  65. package/dist/RuntimeEvent.js +2 -0
  66. package/dist/RuntimeEvent.js.map +1 -0
  67. package/dist/index.d.ts +3 -4
  68. package/dist/index.js +3 -4
  69. package/dist/index.js.map +1 -1
  70. package/dist/tsconfig.tsbuildinfo +1 -1
  71. package/index.ts +3 -4
  72. package/package.json +1 -1
  73. package/Globals.ts +0 -10
  74. package/L/all.ts +0 -11
  75. package/L/fork.ts +0 -20
  76. package/L/join.ts +0 -9
  77. package/L/namespace.ts +0 -11
  78. package/L/self.ts +0 -13
  79. package/dist/Globals.d.ts +0 -6
  80. package/dist/Globals.js +0 -2
  81. package/dist/Globals.js.map +0 -1
  82. package/dist/L/all.d.ts +0 -7
  83. package/dist/L/all.js +0 -5
  84. package/dist/L/all.js.map +0 -1
  85. package/dist/L/fork.d.ts +0 -1
  86. package/dist/L/fork.js +0 -20
  87. package/dist/L/fork.js.map +0 -1
  88. package/dist/L/join.d.ts +0 -5
  89. package/dist/L/join.js +0 -5
  90. package/dist/L/join.js.map +0 -1
  91. package/dist/L/namespace.d.ts +0 -1
  92. package/dist/L/namespace.js +0 -12
  93. package/dist/L/namespace.js.map +0 -1
  94. package/dist/L/self.d.ts +0 -6
  95. package/dist/L/self.js +0 -7
  96. package/dist/L/self.js.map +0 -1
  97. package/dist/run.d.ts +0 -3
  98. package/dist/run.js +0 -35
  99. package/dist/run.js.map +0 -1
  100. package/dist/state/Context.d.ts +0 -8
  101. package/dist/state/Context.js +0 -17
  102. package/dist/state/Context.js.map +0 -1
  103. package/dist/state/MessageRegistry.d.ts +0 -8
  104. package/dist/state/MessageRegistry.js +0 -17
  105. package/dist/state/MessageRegistry.js.map +0 -1
  106. package/dist/state/ModelConfig.d.ts +0 -49
  107. package/dist/state/ModelConfig.js +0 -18
  108. package/dist/state/ModelConfig.js.map +0 -1
  109. package/dist/state/ModelRegistry.js.map +0 -1
  110. package/dist/state/StateMap.d.ts +0 -8
  111. package/dist/state/StateMap.js +0 -18
  112. package/dist/state/StateMap.js.map +0 -1
  113. package/run.ts +0 -39
  114. package/state/Context.ts +0 -19
  115. package/state/MessageRegistry.ts +0 -21
  116. package/state/ModelConfig.ts +0 -49
  117. package/state/StateMap.ts +0 -24
package/dist/run.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../run.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAE5C,MAAM,CAAC,KAAK,UAAU,GAAG,CACvB,KAAQ,EACR,MAA+B;IAE/B,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa,EAAc,CAAA;IACxE,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC1B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAC5B,OAAO,MAAM,OAAO,CAAA;QACtB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;gBAC3C,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YAC/B,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IACD,cAAc,CAAC,GAAG,EAAE,CAClB,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;QACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACpC,IAAI,OAAY,CAAA;QAChB,IAAI,CAAC;YACH,IAAI,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACzC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACrB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAA;gBAC1B,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAA;gBAC5B,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACxC,CAAC;YACD,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;YACzB,OAAO,CAAC,KAAK,CAAC,CAAA;QAChB,CAAC;QAAC,OAAO,MAAe,EAAE,CAAC;YACzB,MAAM,CAAC,MAAM,CAAC,CAAA;QAChB,CAAC;IACH,CAAC,CAAC,CACH,CAAA;IACD,OAAO,MAAM,OAAO,CAAA;AACtB,CAAC"}
@@ -1,8 +0,0 @@
1
- import { AsyncLocalStorage } from "node:async_hooks";
2
- import { StateMap } from "./StateMap";
3
- declare class Context extends AsyncLocalStorage<StateMap> {
4
- get(): StateMap;
5
- fork<T>(f: () => Promise<T>): Promise<T>;
6
- }
7
- export declare const context: Context;
8
- export {};
@@ -1,17 +0,0 @@
1
- import { AsyncLocalStorage } from "node:async_hooks";
2
- import { StateMap } from "./StateMap";
3
- class Context extends AsyncLocalStorage {
4
- get() {
5
- let state = this.getStore();
6
- if (!state) {
7
- state = new StateMap();
8
- this.enterWith(state);
9
- }
10
- return state;
11
- }
12
- fork(f) {
13
- return this.run(this.get(), f);
14
- }
15
- }
16
- export const context = new Context();
17
- //# sourceMappingURL=Context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Context.js","sourceRoot":"","sources":["../../state/Context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,MAAM,OAAQ,SAAQ,iBAA2B;IAC/C,GAAG;QACD,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;QAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,IAAI,QAAQ,EAAE,CAAA;YACtB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QACvB,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,CAAI,CAAmB;QACzB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAA;IAChC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA"}
@@ -1,8 +0,0 @@
1
- import type { Message } from "../Message.ts";
2
- export declare class MessageRegistry {
3
- static make(messageRegistry?: MessageRegistry): MessageRegistry;
4
- messages: Array<Message>;
5
- constructor(messages?: Iterable<Message>);
6
- clone(): MessageRegistry;
7
- append(message: Message): void;
8
- }
@@ -1,17 +0,0 @@
1
- // TODO: marks and tags
2
- export class MessageRegistry {
3
- static make(messageRegistry) {
4
- return new MessageRegistry(messageRegistry?.messages ? [...messageRegistry?.messages] : undefined);
5
- }
6
- messages;
7
- constructor(messages = []) {
8
- this.messages = Array.from(messages);
9
- }
10
- clone() {
11
- return new MessageRegistry([...this.messages]);
12
- }
13
- append(message) {
14
- this.messages.push(message);
15
- }
16
- }
17
- //# sourceMappingURL=MessageRegistry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MessageRegistry.js","sourceRoot":"","sources":["../../state/MessageRegistry.ts"],"names":[],"mappings":"AAEA,uBAAuB;AACvB,MAAM,OAAO,eAAe;IAC1B,MAAM,CAAC,IAAI,CAAC,eAAiC;QAC3C,OAAO,IAAI,eAAe,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IACpG,CAAC;IAED,QAAQ,CAAgB;IACxB,YAAY,WAA8B,EAAE;QAC1C,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACtC,CAAC;IAED,KAAK;QACH,OAAO,IAAI,eAAe,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;IAChD,CAAC;IAED,MAAM,CAAC,OAAgB;QACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC7B,CAAC;CACF"}
@@ -1,49 +0,0 @@
1
- export declare class ModelConfig {
2
- static from(config: Partial<ModelConfig>): ModelConfig & Partial<ModelConfig>;
3
- /** Seed used for deterministic sampling. */
4
- seed?: number;
5
- /** Logit bias modifies the likelihood of specific tokens appearing. */
6
- logitBias?: Record<string, number>;
7
- /** Sampling configuration. */
8
- sampling?: SamplerConfig;
9
- /** Creates a copy of the configuration. */
10
- clone(): ModelConfig & this & {
11
- logitBias: {
12
- [x: string]: number;
13
- };
14
- sampling: {
15
- stopSequences: string[];
16
- penalty: {
17
- presence?: number;
18
- frequency?: number;
19
- repetitionRange?: number;
20
- };
21
- maxTokens?: number;
22
- temperature?: number;
23
- topP?: number;
24
- topk?: number;
25
- };
26
- };
27
- }
28
- export interface SamplerConfig {
29
- /** The maximum number of tokens to generate. */
30
- maxTokens?: number;
31
- /** Temperature controls randomness in generation (0.0-2.0). */
32
- temperature?: number;
33
- /** Cumulative probability cutoff for nucleus sampling (0.0-1.0). */
34
- topP?: number;
35
- /** The number of tokens to consider in top-k sampling. */
36
- topk?: number;
37
- /** Stop sequences is the list of sequences to stop generation. */
38
- stopSequences?: Array<string>;
39
- /** Penalty configuration. */
40
- penalty?: PenaltyConfig;
41
- }
42
- export interface PenaltyConfig {
43
- /** Presence penalty adjusts the likelihood of token repetition (-2.0 to 2.0). */
44
- presence?: number;
45
- /** Frequency penalty penalizes tokens based on their frequency (-2.0 to 2.0). */
46
- frequency?: number;
47
- /** Repetition penalty range defines how many tokens back repetition penalties apply. */
48
- repetitionRange?: number;
49
- }
@@ -1,18 +0,0 @@
1
- export class ModelConfig {
2
- static from(config) {
3
- return Object.assign(new ModelConfig(), config);
4
- }
5
- /** Creates a copy of the configuration. */
6
- clone() {
7
- return Object.assign(new ModelConfig(), {
8
- ...this,
9
- logitBias: { ...this.logitBias },
10
- sampling: {
11
- ...this.sampling,
12
- stopSequences: [...(this.sampling?.stopSequences ?? [])],
13
- penalty: { ...this.sampling?.penalty },
14
- },
15
- });
16
- }
17
- }
18
- //# sourceMappingURL=ModelConfig.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ModelConfig.js","sourceRoot":"","sources":["../../state/ModelConfig.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,WAAW;IACtB,MAAM,CAAC,IAAI,CAAC,MAA4B;QACtC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,WAAW,EAAE,EAAE,MAAM,CAAC,CAAA;IACjD,CAAC;IASD,2CAA2C;IAC3C,KAAK;QACH,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,WAAW,EAAE,EAAE;YACtC,GAAG,IAAI;YACP,SAAS,EAAE,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE;YAChC,QAAQ,EAAE;gBACR,GAAG,IAAI,CAAC,QAAQ;gBAChB,aAAa,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC;gBACxD,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE;aACvC;SACF,CAAC,CAAA;IACJ,CAAC;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ModelRegistry.js","sourceRoot":"","sources":["../../state/ModelRegistry.ts"],"names":[],"mappings":"AAEA,8CAA8C;AAC9C,MAAM,OAAO,aAAa;IACxB,MAAM,CAAC,IAAI,CAAC,aAA6B;QACvC,MAAM,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAA;QACpC,IAAI,aAAa,EAAE,CAAC;YAClB,KAAK,IAAI,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC3D,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC/B,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAKD,KAAK;QACH,MAAM,KAAK,GAAG,IAAI,aAAa,EAAE,CAAA;QACjC,KAAK,IAAI,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACnD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC5B,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,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"}
@@ -1,8 +0,0 @@
1
- export declare class StateMap extends Map<StateFactory, Cloneable> {
2
- clone(): StateMap;
3
- getOrInit<T extends Cloneable>(factory: StateFactory<T>): T;
4
- }
5
- export type StateFactory<T = any> = (instance?: T) => T;
6
- export interface Cloneable {
7
- clone(): this;
8
- }
@@ -1,18 +0,0 @@
1
- export class StateMap extends Map {
2
- clone() {
3
- const clone = new StateMap();
4
- for (const [key, value] of this.entries()) {
5
- clone.set(key, value.clone());
6
- }
7
- return clone;
8
- }
9
- getOrInit(factory) {
10
- let instance = this.get(factory);
11
- if (!instance) {
12
- instance = factory();
13
- this.set(factory, instance);
14
- }
15
- return instance;
16
- }
17
- }
18
- //# sourceMappingURL=StateMap.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StateMap.js","sourceRoot":"","sources":["../../state/StateMap.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,QAAS,SAAQ,GAA4B;IACxD,KAAK;QACH,MAAM,KAAK,GAAG,IAAI,QAAQ,EAAE,CAAA;QAC5B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YAC1C,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;QAC/B,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,SAAS,CAAsB,OAAwB;QACrD,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAChC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,GAAG,OAAO,EAAE,CAAA;YACpB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;QAC7B,CAAC;QACD,OAAO,QAAiB,CAAA;IAC1B,CAAC;CACF"}
package/run.ts DELETED
@@ -1,39 +0,0 @@
1
- import type { FiberConfig } from "./Fiber.ts"
2
- import { Runic } from "./Runic.ts"
3
- import { context } from "./state/Context.ts"
4
-
5
- export async function run<X extends Runic>(
6
- runic: X,
7
- config: FiberConfig<Runic.T<X>>,
8
- ): Promise<Runic.T<X>> {
9
- const { promise, resolve, reject } = Promise.withResolvers<Runic.T<X>>()
10
- if (config.signal) {
11
- if (config.signal.aborted) {
12
- reject(config.signal.reason)
13
- return await promise
14
- } else {
15
- config.signal.addEventListener("abort", () => {
16
- reject(config.signal?.reason)
17
- })
18
- }
19
- }
20
- queueMicrotask(() =>
21
- context.fork(async () => {
22
- const iterator = Runic.unwrap(runic)
23
- let nextArg: any
24
- try {
25
- let current = await iterator.next(config)
26
- while (!current.done) {
27
- const rune = current.value
28
- nextArg = await rune(config)
29
- current = await iterator.next(nextArg)
30
- }
31
- const { value } = current
32
- resolve(value)
33
- } catch (reason: unknown) {
34
- reject(reason)
35
- }
36
- })
37
- )
38
- return await promise
39
- }
package/state/Context.ts DELETED
@@ -1,19 +0,0 @@
1
- import { AsyncLocalStorage } from "node:async_hooks"
2
- import { StateMap } from "./StateMap"
3
-
4
- class Context extends AsyncLocalStorage<StateMap> {
5
- get(): StateMap {
6
- let state = this.getStore()
7
- if (!state) {
8
- state = new StateMap()
9
- this.enterWith(state)
10
- }
11
- return state
12
- }
13
-
14
- fork<T>(f: () => Promise<T>): Promise<T> {
15
- return this.run(this.get(), f)
16
- }
17
- }
18
-
19
- export const context = new Context()
@@ -1,21 +0,0 @@
1
- import type { Message } from "../Message.ts"
2
-
3
- // TODO: marks and tags
4
- export class MessageRegistry {
5
- static make(messageRegistry?: MessageRegistry) {
6
- return new MessageRegistry(messageRegistry?.messages ? [...messageRegistry?.messages] : undefined)
7
- }
8
-
9
- messages: Array<Message>
10
- constructor(messages: Iterable<Message> = []) {
11
- this.messages = Array.from(messages)
12
- }
13
-
14
- clone() {
15
- return new MessageRegistry([...this.messages])
16
- }
17
-
18
- append(message: Message) {
19
- this.messages.push(message)
20
- }
21
- }
@@ -1,49 +0,0 @@
1
- export class ModelConfig {
2
- static from(config: Partial<ModelConfig>) {
3
- return Object.assign(new ModelConfig(), config)
4
- }
5
-
6
- /** Seed used for deterministic sampling. */
7
- declare seed?: number
8
- /** Logit bias modifies the likelihood of specific tokens appearing. */
9
- declare logitBias?: Record<string, number>
10
- /** Sampling configuration. */
11
- declare sampling?: SamplerConfig
12
-
13
- /** Creates a copy of the configuration. */
14
- clone() {
15
- return Object.assign(new ModelConfig(), {
16
- ...this,
17
- logitBias: { ...this.logitBias },
18
- sampling: {
19
- ...this.sampling,
20
- stopSequences: [...(this.sampling?.stopSequences ?? [])],
21
- penalty: { ...this.sampling?.penalty },
22
- },
23
- })
24
- }
25
- }
26
-
27
- export interface SamplerConfig {
28
- /** The maximum number of tokens to generate. */
29
- maxTokens?: number
30
- /** Temperature controls randomness in generation (0.0-2.0). */
31
- temperature?: number
32
- /** Cumulative probability cutoff for nucleus sampling (0.0-1.0). */
33
- topP?: number
34
- /** The number of tokens to consider in top-k sampling. */
35
- topk?: number
36
- /** Stop sequences is the list of sequences to stop generation. */
37
- stopSequences?: Array<string>
38
- /** Penalty configuration. */
39
- penalty?: PenaltyConfig
40
- }
41
-
42
- export interface PenaltyConfig {
43
- /** Presence penalty adjusts the likelihood of token repetition (-2.0 to 2.0). */
44
- presence?: number
45
- /** Frequency penalty penalizes tokens based on their frequency (-2.0 to 2.0). */
46
- frequency?: number
47
- /** Repetition penalty range defines how many tokens back repetition penalties apply. */
48
- repetitionRange?: number
49
- }
package/state/StateMap.ts DELETED
@@ -1,24 +0,0 @@
1
- export class StateMap extends Map<StateFactory, Cloneable> {
2
- clone(): StateMap {
3
- const clone = new StateMap()
4
- for (const [key, value] of this.entries()) {
5
- clone.set(key, value.clone())
6
- }
7
- return clone
8
- }
9
-
10
- getOrInit<T extends Cloneable>(factory: StateFactory<T>): T {
11
- let instance = this.get(factory)
12
- if (!instance) {
13
- instance = factory()
14
- this.set(factory, instance)
15
- }
16
- return instance as never
17
- }
18
- }
19
-
20
- export type StateFactory<T = any> = (instance?: T) => T
21
-
22
- export interface Cloneable {
23
- clone(): this
24
- }