liminal 0.9.0 → 0.10.0

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 (68) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/L.ts +8 -81
  3. package/LEvent.ts +17 -0
  4. package/Strand.ts +37 -38
  5. package/Taggable.ts +17 -0
  6. package/append.ts +13 -0
  7. package/assistant.ts +24 -0
  8. package/assistantStruct.ts +33 -0
  9. package/dist/L.d.ts +8 -15
  10. package/dist/L.js +8 -56
  11. package/dist/L.js.map +1 -1
  12. package/dist/LEvent.d.ts +22 -0
  13. package/dist/LEvent.js +13 -0
  14. package/dist/LEvent.js.map +1 -0
  15. package/dist/Strand.d.ts +12 -17
  16. package/dist/Strand.js +19 -17
  17. package/dist/Strand.js.map +1 -1
  18. package/dist/Taggable.d.ts +11 -0
  19. package/dist/Taggable.js +2 -0
  20. package/dist/Taggable.js.map +1 -0
  21. package/dist/append.d.ts +5 -0
  22. package/dist/append.js +11 -0
  23. package/dist/append.js.map +1 -0
  24. package/dist/assistant.d.ts +6 -0
  25. package/dist/assistant.js +21 -0
  26. package/dist/assistant.js.map +1 -0
  27. package/dist/assistantStruct.d.ts +12 -0
  28. package/dist/assistantStruct.js +21 -0
  29. package/dist/assistantStruct.js.map +1 -0
  30. package/dist/events.d.ts +5 -0
  31. package/dist/events.js +6 -0
  32. package/dist/events.js.map +1 -0
  33. package/dist/index.d.ts +2 -1
  34. package/dist/index.js +2 -1
  35. package/dist/index.js.map +1 -1
  36. package/dist/reduce.d.ts +6 -0
  37. package/dist/reduce.js +39 -0
  38. package/dist/reduce.js.map +1 -0
  39. package/dist/tsconfig.tsbuildinfo +1 -1
  40. package/dist/turn.d.ts +7 -0
  41. package/dist/turn.js +21 -0
  42. package/dist/turn.js.map +1 -0
  43. package/dist/unsafeSet.d.ts +5 -0
  44. package/dist/unsafeSet.js +13 -0
  45. package/dist/unsafeSet.js.map +1 -0
  46. package/dist/user.d.ts +5 -0
  47. package/dist/user.js +14 -0
  48. package/dist/user.js.map +1 -0
  49. package/events.ts +9 -0
  50. package/index.ts +2 -1
  51. package/package.json +7 -5
  52. package/reduce.ts +56 -0
  53. package/tsconfig.json +11 -1
  54. package/turn.ts +25 -0
  55. package/unsafeSet.ts +15 -0
  56. package/user.ts +17 -0
  57. package/dist/util/JSONValue.d.ts +0 -5
  58. package/dist/util/JSONValue.js +0 -2
  59. package/dist/util/JSONValue.js.map +0 -1
  60. package/dist/util/fixTemplateStrings.d.ts +0 -11
  61. package/dist/util/fixTemplateStrings.js +0 -83
  62. package/dist/util/fixTemplateStrings.js.map +0 -1
  63. package/dist/util/isTemplateStringsArray.d.ts +0 -1
  64. package/dist/util/isTemplateStringsArray.js +0 -4
  65. package/dist/util/isTemplateStringsArray.js.map +0 -1
  66. package/util/JSONValue.ts +0 -5
  67. package/util/fixTemplateStrings.ts +0 -99
  68. package/util/isTemplateStringsArray.ts +0 -3
@@ -0,0 +1,21 @@
1
+ import { AssistantMessage, TextPart } from "@effect/ai/AiInput";
2
+ import { AiLanguageModel } from "@effect/ai/AiLanguageModel";
3
+ import * as Effect from "effect/Effect";
4
+ import * as Schema from "effect/Schema";
5
+ import { append } from "./append.js";
6
+ import { Strand } from "./Strand.js";
7
+ /** Infer a structured assistant message and append its JSON representation to the conversation. */
8
+ export const assistantStruct = Effect.fnUntraced(function* (schema) {
9
+ const model = yield* AiLanguageModel;
10
+ const { system, messages } = yield* Strand;
11
+ const { value, text } = yield* model.generateObject({
12
+ system,
13
+ schema: Schema.isSchema(schema) ? schema : Schema.Struct(schema),
14
+ prompt: messages,
15
+ });
16
+ yield* append(new AssistantMessage({
17
+ parts: [new TextPart({ text })],
18
+ }));
19
+ return value;
20
+ });
21
+ //# sourceMappingURL=assistantStruct.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assistantStruct.js","sourceRoot":"","sources":["../assistantStruct.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,mGAAmG;AACnG,MAAM,CAAC,MAAM,eAAe,GAOxB,MAAM,CAAC,UAAU,CACnB,QAAQ,CAAC,EAAC,MAAM;IACd,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,eAAe,CAAA;IACpC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,CAAC,MAAM,CAAA;IAC1C,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC;QAClD,MAAM;QACN,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAoC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QAC9F,MAAM,EAAE,QAAQ;KACjB,CAAC,CAAA;IACF,KAAK,CAAC,CAAC,MAAM,CACX,IAAI,gBAAgB,CAAC;QACnB,KAAK,EAAE,CAAC,IAAI,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KAChC,CAAC,CACH,CAAA;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CACF,CAAA"}
@@ -0,0 +1,5 @@
1
+ import * as Stream from "effect/Stream";
2
+ import type { LEvent } from "./LEvent";
3
+ import { Strand } from "./Strand.ts";
4
+ /** Event stream underlying the current strand. */
5
+ export declare const events: Stream.Stream<LEvent, never, Strand>;
package/dist/events.js ADDED
@@ -0,0 +1,6 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Stream from "effect/Stream";
3
+ import { Strand } from "./Strand.js";
4
+ /** Event stream underlying the current strand. */
5
+ export const events = Stream.unwrap(Effect.map(Strand, ({ events }) => Stream.fromPubSub(events)));
6
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,kDAAkD;AAClD,MAAM,CAAC,MAAM,MAAM,GAAyC,MAAM,CAAC,MAAM,CACvE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAC9D,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export * as L from "./L.ts";
2
- export * as Strand from "./Strand.ts";
2
+ export * from "./LEvent.ts";
3
+ export * from "./Strand.ts";
package/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
1
  export * as L from "./L.js";
2
- export * as Strand from "./Strand.js";
2
+ export * from "./LEvent.js";
3
+ export * from "./Strand.js";
3
4
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAA;AAC3B,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA"}
@@ -0,0 +1,6 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Option from "effect/Option";
3
+ import type { YieldWrap } from "effect/Utils";
4
+ import { Strand } from "./Strand.ts";
5
+ /** Reduce the current strand's messages. */
6
+ export declare const reduce: <Y extends YieldWrap<Effect.Effect<any, any, any>>, A, E, R>(reducer: () => Generator<Y, Effect.Effect<Option.Option<A>, E, R>, never>) => Effect.Effect<void, ([Y] extends [never] ? never : [Y] extends [YieldWrap<Effect.Effect<infer _A, infer E, infer _R>>] ? E : never) | E, Strand | ([Y] extends [never] ? never : [Y] extends [YieldWrap<Effect.Effect<infer _A, infer _E, infer R>>] ? R : never) | R>;
package/dist/reduce.js ADDED
@@ -0,0 +1,39 @@
1
+ import { Message } from "@effect/ai/AiInput";
2
+ import * as Effect from "effect/Effect";
3
+ import * as Option from "effect/Option";
4
+ import * as PubSub from "effect/PubSub";
5
+ import { append } from "./append.js";
6
+ import { LEvent, MessagesReduced } from "./LEvent.js";
7
+ import { Strand } from "./Strand.js";
8
+ import { unsafeSet } from "./unsafeSet.js";
9
+ /** Reduce the current strand's messages. */
10
+ export const reduce = Effect.fnUntraced(function* (reducer) {
11
+ const strand = yield* Strand;
12
+ if (!strand.messages.length || strand.messages.length === 1)
13
+ return;
14
+ const [m0, m1, ...mRest] = strand.messages;
15
+ let prelude = yield* Effect
16
+ .gen(function* () {
17
+ yield* append(m0, m1);
18
+ return yield* Effect.gen(reducer);
19
+ })
20
+ .pipe(Effect.provide(Strand.new()));
21
+ while (mRest.length) {
22
+ prelude = yield* Effect
23
+ .gen(function* () {
24
+ yield* prelude;
25
+ yield* append(mRest.pop());
26
+ return yield* Effect.gen(reducer);
27
+ })
28
+ .pipe(Effect.provide(Strand.new()));
29
+ }
30
+ const messages = [];
31
+ yield* prelude.pipe(Effect.provideService(Strand, Strand.of({
32
+ messages,
33
+ events: yield* PubSub.unbounded(),
34
+ })));
35
+ const previous = yield* unsafeSet(messages);
36
+ yield* strand.events.publish(MessagesReduced.make({ previous, messages }));
37
+ return;
38
+ });
39
+ //# sourceMappingURL=reduce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reduce.js","sourceRoot":"","sources":["../reduce.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,4CAA4C;AAC5C,MAAM,CAAC,MAAM,MAAM,GAQf,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAC,OAAO;IACrC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAA;IAC5B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IACnE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAA;IAC1C,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM;SACxB,GAAG,CAAC,QAAQ,CAAC;QACZ,KAAK,CAAC,CAAC,MAAM,CAAC,EAAG,EAAE,EAAG,CAAC,CAAA;QACvB,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACnC,CAAC,CAAC;SACD,IAAI,CACH,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAC7B,CAAA;IACH,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM;aACpB,GAAG,CAAC,QAAQ,CAAC;YACZ,KAAK,CAAC,CAAC,OAAO,CAAA;YACd,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAG,CAAC,CAAA;YAC3B,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACnC,CAAC,CAAC;aACD,IAAI,CACH,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAC7B,CAAA;IACL,CAAC;IACD,MAAM,QAAQ,GAAmB,EAAE,CAAA;IACnC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CACvC,MAAM,EACN,MAAM,CAAC,EAAE,CAAC;QACR,QAAQ;QACR,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,EAAU;KAC1C,CAAC,CACH,CAAC,CAAA;IACF,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;IAC3C,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAC1B,eAAe,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAC7C,CAAA;IACD,OAAM;AACR,CAAC,CAAC,CAAA"}