liminal 0.14.0 → 0.16.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 (204) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/Envelope.ts +48 -0
  3. package/{L.ts → L/L.ts} +7 -1
  4. package/L/Self.ts +5 -0
  5. package/L/append.ts +14 -0
  6. package/{assistant.ts → L/assistant.ts} +10 -9
  7. package/{assistantSchema.ts → L/assistantSchema.ts} +8 -7
  8. package/{assistantStream.ts → L/assistantStream.ts} +8 -11
  9. package/L/branch.ts +33 -0
  10. package/L/clear.ts +14 -0
  11. package/L/disable.ts +13 -0
  12. package/L/enable.ts +24 -0
  13. package/L/events.ts +11 -0
  14. package/L/fqn.ts +9 -0
  15. package/{handle.ts → L/handle.ts} +6 -5
  16. package/L/messages.ts +10 -0
  17. package/L/raw.ts +30 -0
  18. package/{sequence.ts → L/sequence.ts} +2 -2
  19. package/L/system.ts +14 -0
  20. package/L/thread.ts +28 -0
  21. package/L/to.ts +4 -0
  22. package/L/toolkit.ts +14 -0
  23. package/{user.test.ts → L/user.test.ts} +2 -2
  24. package/{user.ts → L/user.ts} +5 -4
  25. package/{userJson.ts → L/userJson.ts} +4 -4
  26. package/LEvent.ts +2 -2
  27. package/Thread.ts +69 -0
  28. package/dist/Envelope.d.ts +15 -0
  29. package/dist/Envelope.js +30 -0
  30. package/dist/Envelope.js.map +1 -0
  31. package/dist/{L.d.ts → L/L.d.ts} +7 -1
  32. package/dist/{L.js → L/L.js} +7 -1
  33. package/dist/L/L.js.map +1 -0
  34. package/dist/L/Self.d.ts +3 -0
  35. package/dist/L/Self.js +4 -0
  36. package/dist/L/Self.js.map +1 -0
  37. package/dist/{append.d.ts → L/append.d.ts} +3 -3
  38. package/dist/L/append.js +10 -0
  39. package/dist/L/append.js.map +1 -0
  40. package/dist/{assistant.d.ts → L/assistant.d.ts} +3 -3
  41. package/dist/{assistant.js → L/assistant.js} +8 -8
  42. package/dist/L/assistant.js.map +1 -0
  43. package/dist/{assistantSchema.d.ts → L/assistantSchema.d.ts} +4 -4
  44. package/dist/{assistantSchema.js → L/assistantSchema.js} +5 -5
  45. package/dist/L/assistantSchema.js.map +1 -0
  46. package/dist/{assistantStream.d.ts → L/assistantStream.d.ts} +3 -3
  47. package/dist/{assistantStream.js → L/assistantStream.js} +6 -6
  48. package/dist/L/assistantStream.js.map +1 -0
  49. package/dist/L/branch.d.ts +6 -0
  50. package/dist/L/branch.js +22 -0
  51. package/dist/L/branch.js.map +1 -0
  52. package/dist/{clear.d.ts → L/clear.d.ts} +3 -3
  53. package/dist/L/clear.js +12 -0
  54. package/dist/L/clear.js.map +1 -0
  55. package/dist/L/disable.d.ts +4 -0
  56. package/dist/L/disable.js +10 -0
  57. package/dist/L/disable.js.map +1 -0
  58. package/dist/L/enable.d.ts +5 -0
  59. package/dist/L/enable.js +13 -0
  60. package/dist/L/enable.js.map +1 -0
  61. package/dist/L/events.d.ts +5 -0
  62. package/dist/L/events.js +6 -0
  63. package/dist/L/events.js.map +1 -0
  64. package/dist/L/fqn.d.ts +3 -0
  65. package/dist/L/fqn.js +8 -0
  66. package/dist/L/fqn.js.map +1 -0
  67. package/dist/{handle.d.ts → L/handle.d.ts} +4 -4
  68. package/dist/{handle.js → L/handle.js} +3 -3
  69. package/dist/L/handle.js.map +1 -0
  70. package/dist/{messages.d.ts → L/messages.d.ts} +2 -2
  71. package/dist/L/messages.js +5 -0
  72. package/dist/L/messages.js.map +1 -0
  73. package/dist/L/raw.d.ts +3 -0
  74. package/dist/L/raw.js +18 -0
  75. package/dist/L/raw.js.map +1 -0
  76. package/dist/L/sequence.d.ts +2 -0
  77. package/dist/L/sequence.js.map +1 -0
  78. package/dist/L/system.d.ts +5 -0
  79. package/dist/L/system.js +12 -0
  80. package/dist/L/system.js.map +1 -0
  81. package/dist/L/thread.d.ts +6 -0
  82. package/dist/L/thread.js +17 -0
  83. package/dist/L/thread.js.map +1 -0
  84. package/dist/L/to.d.ts +3 -0
  85. package/dist/L/to.js +3 -0
  86. package/dist/L/to.js.map +1 -0
  87. package/dist/L/toolkit.d.ts +4 -0
  88. package/dist/L/toolkit.js +9 -0
  89. package/dist/L/toolkit.js.map +1 -0
  90. package/dist/L/user.d.ts +4 -0
  91. package/dist/{user.js → L/user.js} +2 -2
  92. package/dist/L/user.js.map +1 -0
  93. package/dist/L/user.test.js.map +1 -0
  94. package/dist/{userJson.d.ts → L/userJson.d.ts} +3 -3
  95. package/dist/{userJson.js → L/userJson.js} +2 -2
  96. package/dist/L/userJson.js.map +1 -0
  97. package/dist/LEvent.d.ts +2 -2
  98. package/dist/LEvent.js +2 -2
  99. package/dist/LEvent.js.map +1 -1
  100. package/dist/Thread.d.ts +55 -0
  101. package/dist/Thread.js +38 -0
  102. package/dist/Thread.js.map +1 -0
  103. package/dist/index.d.ts +3 -2
  104. package/dist/index.js +3 -2
  105. package/dist/index.js.map +1 -1
  106. package/dist/patterns/Debate.d.ts +1 -0
  107. package/dist/patterns/Debate.js +3 -0
  108. package/dist/patterns/Debate.js.map +1 -0
  109. package/dist/patterns/Model.d.ts +6 -0
  110. package/dist/patterns/Model.js +14 -0
  111. package/dist/patterns/Model.js.map +1 -0
  112. package/dist/patterns/Route.d.ts +3 -0
  113. package/dist/patterns/Route.js +14 -0
  114. package/dist/patterns/Route.js.map +1 -0
  115. package/dist/tsconfig.tsbuildinfo +1 -1
  116. package/dist/util/JsonValue.js.map +1 -1
  117. package/dist/util/NeverTool.d.ts +3 -0
  118. package/dist/util/NeverTool.js +3 -0
  119. package/dist/util/NeverTool.js.map +1 -0
  120. package/dist/util/Sequencer.d.ts +4 -0
  121. package/dist/util/Sequencer.js +2 -0
  122. package/dist/util/Sequencer.js.map +1 -0
  123. package/dist/util/Taggable.d.ts +0 -1
  124. package/dist/util/Taggable.js +0 -16
  125. package/dist/util/Taggable.js.map +1 -1
  126. package/dist/util/{fixRaw.js → normalizeRaw.js} +1 -1
  127. package/dist/util/normalizeRaw.js.map +1 -0
  128. package/dist/util/prefix.d.ts +1 -0
  129. package/dist/util/prefix.js +2 -0
  130. package/dist/util/prefix.js.map +1 -0
  131. package/index.ts +3 -2
  132. package/package.json +4 -2
  133. package/patterns/Debate.ts +2 -0
  134. package/patterns/Model.ts +29 -0
  135. package/patterns/{matchGist.ts → Route.ts} +7 -9
  136. package/util/JsonValue.ts +2 -2
  137. package/util/NeverTool.ts +10 -0
  138. package/util/Sequencer.ts +13 -0
  139. package/util/Taggable.ts +0 -26
  140. package/util/prefix.ts +1 -0
  141. package/Strand.ts +0 -44
  142. package/append.ts +0 -13
  143. package/branch.ts +0 -26
  144. package/clear.ts +0 -15
  145. package/disable.ts +0 -9
  146. package/dist/L.js.map +0 -1
  147. package/dist/Strand.d.ts +0 -31
  148. package/dist/Strand.js +0 -18
  149. package/dist/Strand.js.map +0 -1
  150. package/dist/append.js +0 -10
  151. package/dist/append.js.map +0 -1
  152. package/dist/assistant.js.map +0 -1
  153. package/dist/assistantSchema.js.map +0 -1
  154. package/dist/assistantStream.js.map +0 -1
  155. package/dist/branch.d.ts +0 -4
  156. package/dist/branch.js +0 -18
  157. package/dist/branch.js.map +0 -1
  158. package/dist/clear.js +0 -14
  159. package/dist/clear.js.map +0 -1
  160. package/dist/disable.d.ts +0 -5
  161. package/dist/disable.js +0 -7
  162. package/dist/disable.js.map +0 -1
  163. package/dist/enable.d.ts +0 -5
  164. package/dist/enable.js +0 -7
  165. package/dist/enable.js.map +0 -1
  166. package/dist/events.d.ts +0 -5
  167. package/dist/events.js +0 -6
  168. package/dist/events.js.map +0 -1
  169. package/dist/handle.js.map +0 -1
  170. package/dist/messages.js +0 -5
  171. package/dist/messages.js.map +0 -1
  172. package/dist/patterns/index.d.ts +0 -1
  173. package/dist/patterns/index.js +0 -2
  174. package/dist/patterns/index.js.map +0 -1
  175. package/dist/patterns/matchGist.d.ts +0 -3
  176. package/dist/patterns/matchGist.js +0 -16
  177. package/dist/patterns/matchGist.js.map +0 -1
  178. package/dist/sequence.d.ts +0 -2
  179. package/dist/sequence.js.map +0 -1
  180. package/dist/strand_.d.ts +0 -4
  181. package/dist/strand_.js +0 -8
  182. package/dist/strand_.js.map +0 -1
  183. package/dist/system.d.ts +0 -5
  184. package/dist/system.js +0 -12
  185. package/dist/system.js.map +0 -1
  186. package/dist/user.d.ts +0 -4
  187. package/dist/user.js.map +0 -1
  188. package/dist/user.test.js.map +0 -1
  189. package/dist/userJson.js.map +0 -1
  190. package/dist/util/Sequence.d.ts +0 -2
  191. package/dist/util/Sequence.js +0 -2
  192. package/dist/util/Sequence.js.map +0 -1
  193. package/dist/util/fixRaw.js.map +0 -1
  194. package/enable.ts +0 -11
  195. package/events.ts +0 -10
  196. package/messages.ts +0 -9
  197. package/patterns/index.ts +0 -1
  198. package/strand_.ts +0 -11
  199. package/system.ts +0 -12
  200. package/util/Sequence.ts +0 -11
  201. /package/dist/{sequence.js → L/sequence.js} +0 -0
  202. /package/dist/{user.test.d.ts → L/user.test.d.ts} +0 -0
  203. /package/dist/util/{fixRaw.d.ts → normalizeRaw.d.ts} +0 -0
  204. /package/util/{fixRaw.ts → normalizeRaw.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolkit.js","sourceRoot":"","sources":["../../L/toolkit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAA;AACjD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAC9B,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAC3B,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE;IAClB,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IAC3C,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,EAA4B;CACzD,CAAC,CACH,CACF,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { Thread } from "../Thread.ts";
2
+ import type { Taggable } from "../util/Taggable.ts";
3
+ /** Append a user message to the conversation. */
4
+ export declare const user: Taggable<void, never, Thread>;
@@ -1,9 +1,9 @@
1
1
  import { TextPart, UserMessage } from "@effect/ai/AiInput";
2
2
  import * as Effect from "effect/Effect";
3
3
  import { append } from "./append.js";
4
- import { normalize } from "./util/Taggable.js";
4
+ import { raw } from "./raw.js";
5
5
  /** Append a user message to the conversation. */
6
- export const user = (a0, ...aRest) => normalize(a0, aRest).pipe(Effect.flatMap((text) => text
6
+ export const user = (a0, ...aRest) => raw(a0, ...aRest).pipe(Effect.flatMap((text) => text
7
7
  ? append(UserMessage.make({
8
8
  parts: [
9
9
  TextPart.make({ text }),
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../L/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAE9B,iDAAiD;AACjD,MAAM,CAAC,MAAM,IAAI,GAAkC,CAAC,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,CAClE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CACpB,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACtB,IAAI;IACF,CAAC,CAAC,MAAM,CACN,WAAW,CAAC,IAAI,CAAC;QACf,KAAK,EAAE;YACL,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;SACxB;KACF,CAAC,CACH;IACD,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAC9B,CACF,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.test.js","sourceRoot":"","sources":["../../L/user.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,GAAG,EAAE,CAC7B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,KAAK,CAAC,CAAC,IAAI,CAAA,GAAG,CAAA;IACd,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAChB,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC;QACpC,WAAW,CAAC,IAAI,CAAC;YACf,KAAK,EAAE;gBACL,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,GAAG;iBACV,CAAC;aACH;SACF,CAAC;QACF,WAAW,CAAC,IAAI,CAAC;YACf,KAAK,EAAE;gBACL,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,GAAG;iBACV,CAAC;aACH;SACF,CAAC;KACH,CAAC,CAAA;AACJ,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CACP,CAAC,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import * as Effect from "effect/Effect";
2
2
  import type * as Schema from "effect/Schema";
3
- import type * as Strand from "./Strand.ts";
4
- import { type JsonValue } from "./util/JsonValue.ts";
3
+ import type { Thread } from "../Thread.ts";
4
+ import { type JsonValue } from "../util/JsonValue.ts";
5
5
  /** Stringify and append some JSON as a user message to the conversation. */
6
- export declare const userJson: <A, I extends JsonValue>(value: A, schema?: Schema.Schema<A, I>) => Effect.Effect<void, never, Strand.Strand>;
6
+ export declare const userJson: <A, I extends JsonValue>(value: A, schema?: Schema.Schema<A, I>) => Effect.Effect<void, never, Thread>;
@@ -1,9 +1,9 @@
1
1
  import * as Effect from "effect/Effect";
2
+ import { encodeJsonc } from "../util/JsonValue.js";
2
3
  import { user } from "./user.js";
3
- import { encodeJsonc } from "./util/JsonValue.js";
4
4
  /** Stringify and append some JSON as a user message to the conversation. */
5
5
  export const userJson = Effect.fnUntraced(function* (value, schema) {
6
6
  const encoded = schema ? encodeJsonc(schema)(value) : JSON.stringify(value, null, 2);
7
- return yield* user `\`\`\`json${schema ? "c" : ""}${"\n"}${encoded}${"\n"}\`\`\``;
7
+ return yield* user `\`\`\`json${schema ? "c" : ""}\n${encoded}\n\`\`\``;
8
8
  });
9
9
  //# sourceMappingURL=userJson.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"userJson.js","sourceRoot":"","sources":["../../L/userJson.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,EAAE,WAAW,EAAkB,MAAM,sBAAsB,CAAA;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,4EAA4E;AAC5E,MAAM,CAAC,MAAM,QAAQ,GAGqB,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,MAAM;IACjF,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IACpF,OAAO,KAAK,CAAC,CAAC,IAAI,CAAA,aAAa,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,UAAU,CAAA;AACxE,CAAC,CAAC,CAAA"}
package/dist/LEvent.d.ts CHANGED
@@ -7,7 +7,7 @@ declare const MessagesAppended_base: Schema.TaggedClass<MessagesAppended, "Messa
7
7
  } & {
8
8
  messages: typeof Messages;
9
9
  }>;
10
- /** An event in which one or more messages were added to the current strand's message list. */
10
+ /** An event in which one or more messages were added to the thread. */
11
11
  export declare class MessagesAppended extends MessagesAppended_base {
12
12
  }
13
13
  declare const MessagesCleared_base: Schema.TaggedClass<MessagesCleared, "MessagesCleared", {
@@ -15,7 +15,7 @@ declare const MessagesCleared_base: Schema.TaggedClass<MessagesCleared, "Message
15
15
  } & {
16
16
  cleared: typeof Messages;
17
17
  }>;
18
- /** An event in which the current strand's message list is cleared. */
18
+ /** An event in which the thread is cleared of messages. */
19
19
  export declare class MessagesCleared extends MessagesCleared_base {
20
20
  }
21
21
  export type LEvent = typeof LEvent["Type"];
package/dist/LEvent.js CHANGED
@@ -2,12 +2,12 @@ import { Message } from "@effect/ai/AiInput";
2
2
  import * as Schema from "effect/Schema";
3
3
  export class Messages extends Schema.Array(Message) {
4
4
  }
5
- /** An event in which one or more messages were added to the current strand's message list. */
5
+ /** An event in which one or more messages were added to the thread. */
6
6
  export class MessagesAppended extends Schema.TaggedClass("MessagesAppended")("MessagesAppended", {
7
7
  messages: Messages,
8
8
  }) {
9
9
  }
10
- /** An event in which the current strand's message list is cleared. */
10
+ /** An event in which the thread is cleared of messages. */
11
11
  export class MessagesCleared extends Schema.TaggedClass("MessagesCleared")("MessagesCleared", {
12
12
  cleared: Messages,
13
13
  }) {
@@ -1 +1 @@
1
- {"version":3,"file":"LEvent.js","sourceRoot":"","sources":["../LEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,MAAM,OAAO,QAAS,SAAQ,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;CAAG;AAEtD,8FAA8F;AAC9F,MAAM,OAAO,gBAAiB,SAAQ,MAAM,CAAC,WAAW,CAAmB,kBAAkB,CAAC,CAAC,kBAAkB,EAAE;IACjH,QAAQ,EAAE,QAAQ;CACnB,CAAC;CAAG;AAEL,sEAAsE;AACtE,MAAM,OAAO,eAAgB,SAAQ,MAAM,CAAC,WAAW,CAAkB,iBAAiB,CAAC,CAAC,iBAAiB,EAAE;IAC7G,OAAO,EAAE,QAAQ;CAClB,CAAC;CAAG;AAGL,MAAM,CAAC,MAAM,MAAM,GAGd,MAAM,CAAC,KAAK,CACf,gBAAgB,EAChB,eAAe,CAChB,CAAA"}
1
+ {"version":3,"file":"LEvent.js","sourceRoot":"","sources":["../LEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,MAAM,OAAO,QAAS,SAAQ,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;CAAG;AAEtD,uEAAuE;AACvE,MAAM,OAAO,gBAAiB,SAAQ,MAAM,CAAC,WAAW,CAAmB,kBAAkB,CAAC,CAAC,kBAAkB,EAAE;IACjH,QAAQ,EAAE,QAAQ;CACnB,CAAC;CAAG;AAEL,2DAA2D;AAC3D,MAAM,OAAO,eAAgB,SAAQ,MAAM,CAAC,WAAW,CAAkB,iBAAiB,CAAC,CAAC,iBAAiB,EAAE;IAC7G,OAAO,EAAE,QAAQ;CAClB,CAAC;CAAG;AAGL,MAAM,CAAC,MAAM,MAAM,GAGd,MAAM,CAAC,KAAK,CACf,gBAAgB,EAChB,eAAe,CAChB,CAAA"}
@@ -0,0 +1,55 @@
1
+ import * as Option from "effect/Option";
2
+ import { type Pipeable } from "effect/Pipeable";
3
+ import * as PubSub from "effect/PubSub";
4
+ import * as Schema from "effect/Schema";
5
+ import type { Mutable } from "effect/Types";
6
+ import type { LEvent } from "./LEvent.ts";
7
+ import type { NeverTool } from "./util/NeverTool.ts";
8
+ import type { Sequencer } from "./util/Sequencer.ts";
9
+ export declare const ThreadFqnTypeId: unique symbol;
10
+ export declare const ThreadFqn: Schema.brand<typeof Schema.String, typeof ThreadFqnTypeId>;
11
+ export type ThreadFqn = typeof ThreadFqn["Type"];
12
+ declare const ThreadState_base: Schema.Class<ThreadState, {
13
+ /** The key with which the thread is referenced by others. */
14
+ fqn: Schema.Option<Schema.brand<typeof Schema.String, typeof ThreadFqnTypeId>>;
15
+ /** The system prompt to be passed along to the model. */
16
+ system: Schema.Option<typeof Schema.String>;
17
+ /** The messages based off of which the model infers the next message. */
18
+ messages: Schema.mutable<Schema.Array$<Schema.Union<[typeof import("@effect/ai/AiInput").UserMessage, typeof import("@effect/ai/AiInput").AssistantMessage, typeof import("@effect/ai/AiInput").ToolMessage]>>>;
19
+ }, Schema.Struct.Encoded<{
20
+ /** The key with which the thread is referenced by others. */
21
+ fqn: Schema.Option<Schema.brand<typeof Schema.String, typeof ThreadFqnTypeId>>;
22
+ /** The system prompt to be passed along to the model. */
23
+ system: Schema.Option<typeof Schema.String>;
24
+ /** The messages based off of which the model infers the next message. */
25
+ messages: Schema.mutable<Schema.Array$<Schema.Union<[typeof import("@effect/ai/AiInput").UserMessage, typeof import("@effect/ai/AiInput").AssistantMessage, typeof import("@effect/ai/AiInput").ToolMessage]>>>;
26
+ }>, never, {
27
+ readonly messages: (import("@effect/ai/AiInput").UserMessage | import("@effect/ai/AiInput").AssistantMessage | import("@effect/ai/AiInput").ToolMessage)[];
28
+ } & {
29
+ readonly fqn: Option.Option<string & import("effect/Brand").Brand<typeof ThreadFqnTypeId>>;
30
+ } & {
31
+ readonly system: Option.Option<string>;
32
+ }, {}, {}>;
33
+ export declare class ThreadState extends ThreadState_base {
34
+ static default: () => ThreadState;
35
+ }
36
+ export interface ThreadInit {
37
+ /** The parent thread. */
38
+ parent: Option.Option<Thread>;
39
+ /** The pubsub with which thread-specific events are emitted. */
40
+ events: PubSub.PubSub<LEvent>;
41
+ /** The state of the current thread. */
42
+ state: Mutable<ThreadState>;
43
+ /** The tools to be made accessible to the model. */
44
+ tools: Option.Option<Set<NeverTool>>;
45
+ }
46
+ export declare const ThreadTypeId: unique symbol;
47
+ export type ThreadTypeId = typeof ThreadTypeId;
48
+ interface ThreadMembers extends ThreadInit, Pipeable {
49
+ readonly [ThreadTypeId]: ThreadTypeId;
50
+ }
51
+ /** A conversation isolate. */
52
+ export interface Thread extends Sequencer<Thread>, ThreadMembers {
53
+ }
54
+ export declare const Thread: (init: ThreadInit) => Thread;
55
+ export {};
package/dist/Thread.js ADDED
@@ -0,0 +1,38 @@
1
+ import { Message } from "@effect/ai/AiInput";
2
+ import * as Effect from "effect/Effect";
3
+ import * as Option from "effect/Option";
4
+ import { pipeArguments } from "effect/Pipeable";
5
+ import * as PubSub from "effect/PubSub";
6
+ import * as Schema from "effect/Schema";
7
+ import { Self } from "./L/Self.js";
8
+ import { sequence } from "./L/sequence.js";
9
+ import { prefix } from "./util/prefix.js";
10
+ export const ThreadFqnTypeId = Symbol.for(prefix("ThreadFqn"));
11
+ export const ThreadFqn = Schema.String.pipe(Schema.brand(ThreadFqnTypeId));
12
+ export class ThreadState extends Schema.Class(prefix("ThreadState"))({
13
+ /** The key with which the thread is referenced by others. */
14
+ fqn: Schema.Option(ThreadFqn),
15
+ /** The system prompt to be passed along to the model. */
16
+ system: Schema.Option(Schema.String),
17
+ /** The messages based off of which the model infers the next message. */
18
+ messages: Schema.Array(Message).pipe(Schema.mutable),
19
+ }) {
20
+ static default = () => ThreadState.make({
21
+ fqn: Option.none(),
22
+ system: Option.none(),
23
+ messages: [],
24
+ });
25
+ }
26
+ export const ThreadTypeId = Symbol.for(prefix("Thread"));
27
+ export const Thread = (init) => {
28
+ const members = {
29
+ [ThreadTypeId]: ThreadTypeId,
30
+ ...init,
31
+ pipe() {
32
+ return pipeArguments(self, arguments);
33
+ },
34
+ };
35
+ const self = Object.assign(((...args) => sequence(...args).pipe(Effect.provideService(Self, self))), members);
36
+ return self;
37
+ };
38
+ //# sourceMappingURL=Thread.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Thread.js","sourceRoot":"","sources":["../Thread.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,EAAiB,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAG1C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAGzC,MAAM,CAAC,MAAM,eAAe,GAAkB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAA;AAC7E,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAA;AAG1E,MAAM,OAAO,WAAY,SAAQ,MAAM,CAAC,KAAK,CAAc,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;IAChF,6DAA6D;IAC7D,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;IAC7B,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACpC,yEAAyE;IACzE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;CACrD,CAAC;IACA,MAAM,CAAC,OAAO,GAAG,GAAgB,EAAE,CACjC,WAAW,CAAC,IAAI,CAAC;QACf,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE;QAClB,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;QACrB,QAAQ,EAAE,EAAE;KACb,CAAC,CAAA;;AAcN,MAAM,CAAC,MAAM,YAAY,GAAkB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;AAUvE,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,IAAgB,EAAU,EAAE;IACjD,MAAM,OAAO,GAAG;QACd,CAAC,YAAY,CAAC,EAAE,YAAY;QAC5B,GAAG,IAAI;QACP,IAAI;YACF,OAAO,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QACvC,CAAC;KACsB,CAAA;IACzB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CACxB,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAA6B,EACpG,OAAO,CACE,CAAA;IACX,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- export * as L from "./L.ts";
1
+ export * from "./Envelope.ts";
2
+ export * as default from "./L/L.ts";
2
3
  export * from "./LEvent.ts";
3
4
  export * as LPretty from "./LPretty.ts";
4
- export * from "./Strand.ts";
5
+ export * from "./Thread.ts";
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
- export * as L from "./L.js";
1
+ export * from "./Envelope.js";
2
+ export * as default from "./L/L.js";
2
3
  export * from "./LEvent.js";
3
4
  export * as LPretty from "./LPretty.js";
4
- export * from "./Strand.js";
5
+ export * from "./Thread.js";
5
6
  //# 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,cAAc,aAAa,CAAA;AAC3B,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,cAAc,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,OAAO,KAAK,OAAO,MAAM,UAAU,CAAA;AACnC,cAAc,aAAa,CAAA;AAC3B,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,cAAc,aAAa,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ // TODO: utilize `Entity` and `Relation`
2
+ export {};
3
+ //# sourceMappingURL=Debate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Debate.js","sourceRoot":"","sources":["../../patterns/Debate.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { AiError } from "@effect/ai/AiError";
2
+ import type { AiLanguageModel } from "@effect/ai/AiLanguageModel";
3
+ import type { AiModel } from "@effect/ai/AiModel";
4
+ import * as Effect from "effect/Effect";
5
+ import type { Thread } from "../Thread.ts";
6
+ export declare const coalesce: <E, R, M extends Array<AiModel<any, any>>>(effect: Effect.Effect<any, E, R>, models: M) => Effect.Effect<string, AiError | E, Thread | AiLanguageModel | ([M[number]] extends [AiModel<any, infer R>] ? R : never)>;
@@ -0,0 +1,14 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as L from "../L/L.js";
3
+ export const coalesce = Effect.fn(function* (effect, models) {
4
+ const all = yield* Effect.all(models.map((model) => effect.pipe(Effect.provide(model))));
5
+ yield* L.user `
6
+ Coalesce the following items into a single item:
7
+
8
+ ---
9
+
10
+ ${all.map((item) => JSON.stringify(item, null, 2)).join("\n\n---")}
11
+ `;
12
+ return yield* L.assistant;
13
+ });
14
+ //# sourceMappingURL=Model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Model.js","sourceRoot":"","sources":["../../patterns/Model.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,CAAC,MAAM,WAAW,CAAA;AAG9B,MAAM,CAAC,MAAM,QAAQ,GAOjB,MAAM,CAAC,EAAE,CACX,QAAQ,CAAC,EAAC,MAAM,EAAE,MAAM;IACtB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAEtF,CAAA;IACD,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;;;;;QAKT,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;KACnE,CAAA;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAC3B,CAAC,CACF,CAAA"}
@@ -0,0 +1,3 @@
1
+ import * as Effect from "effect/Effect";
2
+ import { Thread } from "../Thread.ts";
3
+ export declare const byDescription: <R extends Record<string, Effect.All.EffectAny>>(routes: R) => Effect.Effect<Effect.Effect.Success<R[keyof R]>, ([R[keyof R]] extends [never] ? never : Effect.Effect.Error<R[keyof R]>), ([R[keyof R]] extends [never] ? never : Effect.Effect.Context<R[keyof R]>) | Thread>;
@@ -0,0 +1,14 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Schema from "effect/Schema";
3
+ import * as L from "../L/L.js";
4
+ import { Thread } from "../Thread.js";
5
+ export const byDescription = Effect.fnUntraced(function* (routes) {
6
+ const descriptions = Object.keys(routes);
7
+ const description = yield* L.branch(L.user `
8
+ Which of the following descriptions best matches the current conversation?
9
+
10
+ - ${descriptions.join("\n -")}
11
+ `, L.assistantSchema(Schema.Literal(...descriptions)));
12
+ return yield* routes[description];
13
+ });
14
+ //# sourceMappingURL=Route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Route.js","sourceRoot":"","sources":["../../patterns/Route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,CAAC,MAAM,WAAW,CAAA;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAErC,MAAM,CAAC,MAAM,aAAa,GAItB,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAC,MAAM;IACpC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACxC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CACjC,CAAC,CAAC,IAAI,CAAA;;;UAGA,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;KAC9B,EACD,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,CAAC,CACnD,CAAA;IACD,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAE,CAAA;AACpC,CAAC,CAAC,CAAA"}