liminal 0.15.0 → 0.17.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 (226) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/Digest.ts +30 -0
  3. package/Envelope.ts +16 -0
  4. package/F/F.ts +1 -0
  5. package/{L.ts → L/L.ts} +9 -4
  6. package/L/append.ts +14 -0
  7. package/{assistant.ts → L/assistant.ts} +10 -9
  8. package/{assistantSchema.ts → L/assistantSchema.ts} +8 -7
  9. package/{assistantStream.ts → L/assistantStream.ts} +8 -11
  10. package/L/branch.ts +20 -0
  11. package/L/clear.ts +14 -0
  12. package/L/disable.ts +13 -0
  13. package/L/enable.ts +24 -0
  14. package/L/events.ts +11 -0
  15. package/L/json.ts +12 -0
  16. package/L/line.ts +22 -0
  17. package/{handle.ts → L/listen.ts} +6 -5
  18. package/L/messages.ts +10 -0
  19. package/L/prev.ts +4 -0
  20. package/L/provide.ts +10 -0
  21. package/L/self.ts +5 -0
  22. package/L/send.ts +56 -0
  23. package/L/system.ts +25 -0
  24. package/L/thread.ts +16 -0
  25. package/L/toolkit.ts +14 -0
  26. package/{user.test.ts → L/user.test.ts} +5 -2
  27. package/L/user.ts +32 -0
  28. package/LEvent.ts +23 -13
  29. package/Thread.ts +67 -0
  30. package/dist/Digest.d.ts +17 -0
  31. package/dist/Digest.js +7 -0
  32. package/dist/Digest.js.map +1 -0
  33. package/dist/Envelope.d.ts +13 -0
  34. package/dist/Envelope.js +2 -0
  35. package/dist/Envelope.js.map +1 -0
  36. package/dist/F/F.d.ts +1 -0
  37. package/dist/F/F.js +2 -0
  38. package/dist/F/F.js.map +1 -0
  39. package/dist/{L.d.ts → L/L.d.ts} +9 -4
  40. package/dist/{L.js → L/L.js} +9 -4
  41. package/dist/L/L.js.map +1 -0
  42. package/dist/{append.d.ts → L/append.d.ts} +3 -3
  43. package/dist/L/append.js +10 -0
  44. package/dist/L/append.js.map +1 -0
  45. package/dist/{assistant.d.ts → L/assistant.d.ts} +3 -3
  46. package/dist/{assistant.js → L/assistant.js} +8 -8
  47. package/dist/L/assistant.js.map +1 -0
  48. package/dist/{assistantSchema.d.ts → L/assistantSchema.d.ts} +4 -4
  49. package/dist/{assistantSchema.js → L/assistantSchema.js} +5 -5
  50. package/dist/L/assistantSchema.js.map +1 -0
  51. package/dist/{assistantStream.d.ts → L/assistantStream.d.ts} +3 -3
  52. package/dist/{assistantStream.js → L/assistantStream.js} +6 -6
  53. package/dist/L/assistantStream.js.map +1 -0
  54. package/dist/L/branch.d.ts +3 -0
  55. package/dist/L/branch.js +19 -0
  56. package/dist/L/branch.js.map +1 -0
  57. package/dist/{clear.d.ts → L/clear.d.ts} +3 -3
  58. package/dist/L/clear.js +12 -0
  59. package/dist/L/clear.js.map +1 -0
  60. package/dist/{disable.d.ts → L/disable.d.ts} +2 -2
  61. package/dist/L/disable.js +10 -0
  62. package/dist/L/disable.js.map +1 -0
  63. package/dist/{enable.d.ts → L/enable.d.ts} +2 -2
  64. package/dist/L/enable.js +13 -0
  65. package/dist/L/enable.js.map +1 -0
  66. package/dist/L/events.d.ts +5 -0
  67. package/dist/L/events.js +6 -0
  68. package/dist/L/events.js.map +1 -0
  69. package/dist/L/json.d.ts +5 -0
  70. package/dist/L/json.js +8 -0
  71. package/dist/L/json.js.map +1 -0
  72. package/dist/L/line.d.ts +5 -0
  73. package/dist/L/line.js +11 -0
  74. package/dist/L/line.js.map +1 -0
  75. package/dist/{handle.d.ts → L/listen.d.ts} +4 -4
  76. package/dist/{handle.js → L/listen.js} +4 -4
  77. package/dist/L/listen.js.map +1 -0
  78. package/dist/{messages.d.ts → L/messages.d.ts} +2 -2
  79. package/dist/L/messages.js +5 -0
  80. package/dist/L/messages.js.map +1 -0
  81. package/dist/L/prev.d.ts +5 -0
  82. package/dist/L/prev.js +5 -0
  83. package/dist/L/prev.js.map +1 -0
  84. package/dist/L/provide.d.ts +3 -0
  85. package/dist/L/provide.js +4 -0
  86. package/dist/L/provide.js.map +1 -0
  87. package/dist/L/self.d.ts +3 -0
  88. package/dist/L/self.js +4 -0
  89. package/dist/L/self.js.map +1 -0
  90. package/dist/L/send.d.ts +6 -0
  91. package/dist/L/send.js +34 -0
  92. package/dist/L/send.js.map +1 -0
  93. package/dist/L/system.d.ts +5 -0
  94. package/dist/L/system.js +14 -0
  95. package/dist/L/system.js.map +1 -0
  96. package/dist/L/thread.d.ts +3 -0
  97. package/dist/L/thread.js +15 -0
  98. package/dist/L/thread.js.map +1 -0
  99. package/dist/L/toolkit.d.ts +4 -0
  100. package/dist/L/toolkit.js +9 -0
  101. package/dist/L/toolkit.js.map +1 -0
  102. package/dist/L/user.d.ts +6 -0
  103. package/dist/{user.js → L/user.js} +3 -3
  104. package/dist/L/user.js.map +1 -0
  105. package/dist/L/user.test.js.map +1 -0
  106. package/dist/LEvent.d.ts +143 -15
  107. package/dist/LEvent.js +12 -9
  108. package/dist/LEvent.js.map +1 -1
  109. package/dist/Thread.d.ts +52 -0
  110. package/dist/Thread.js +32 -0
  111. package/dist/Thread.js.map +1 -0
  112. package/dist/index.d.ts +6 -3
  113. package/dist/index.js +6 -3
  114. package/dist/index.js.map +1 -1
  115. package/dist/patterns/Debate.d.ts +1 -0
  116. package/dist/patterns/Debate.js +3 -0
  117. package/dist/patterns/Debate.js.map +1 -0
  118. package/dist/patterns/Model.d.ts +6 -0
  119. package/dist/patterns/{coalesce_models.js → Model.js} +5 -6
  120. package/dist/patterns/Model.js.map +1 -0
  121. package/dist/patterns/Route.d.ts +3 -0
  122. package/dist/patterns/Route.js +14 -0
  123. package/dist/patterns/Route.js.map +1 -0
  124. package/dist/tsconfig.tsbuildinfo +1 -1
  125. package/dist/util/JsonValue.js.map +1 -1
  126. package/dist/util/NeverTool.d.ts +3 -0
  127. package/dist/util/NeverTool.js +3 -0
  128. package/dist/util/NeverTool.js.map +1 -0
  129. package/dist/util/Taggable.d.ts +5 -5
  130. package/dist/util/Taggable.js +10 -15
  131. package/dist/util/Taggable.js.map +1 -1
  132. package/dist/util/extract.d.ts +3 -0
  133. package/dist/util/extract.js +2 -0
  134. package/dist/util/extract.js.map +1 -0
  135. package/dist/util/messageCodec.d.ts +98 -0
  136. package/dist/util/messageCodec.js +5 -0
  137. package/dist/util/messageCodec.js.map +1 -0
  138. package/dist/util/{fixRaw.js → normalizeRaw.js} +1 -1
  139. package/dist/util/normalizeRaw.js.map +1 -0
  140. package/dist/util/prefix.d.ts +1 -0
  141. package/dist/util/prefix.js +2 -0
  142. package/dist/util/prefix.js.map +1 -0
  143. package/dist/util/raw.d.ts +6 -0
  144. package/dist/util/raw.js +5 -0
  145. package/dist/util/raw.js.map +1 -0
  146. package/index.ts +6 -3
  147. package/package.json +22 -9
  148. package/patterns/Debate.ts +2 -0
  149. package/patterns/{coalesce_models.ts → Model.ts} +6 -7
  150. package/patterns/{match_gist.ts → Route.ts} +11 -9
  151. package/util/JsonValue.ts +2 -2
  152. package/util/NeverTool.ts +10 -0
  153. package/util/Taggable.ts +27 -34
  154. package/util/extract.ts +7 -0
  155. package/util/messageCodec.ts +5 -0
  156. package/util/prefix.ts +1 -0
  157. package/util/raw.ts +27 -0
  158. package/LPretty.ts +0 -41
  159. package/Strand.ts +0 -49
  160. package/append.ts +0 -13
  161. package/branch.ts +0 -26
  162. package/clear.ts +0 -15
  163. package/disable.ts +0 -8
  164. package/dist/L.js.map +0 -1
  165. package/dist/LPretty.d.ts +0 -4
  166. package/dist/LPretty.js +0 -37
  167. package/dist/LPretty.js.map +0 -1
  168. package/dist/Strand.d.ts +0 -36
  169. package/dist/Strand.js +0 -18
  170. package/dist/Strand.js.map +0 -1
  171. package/dist/append.js +0 -10
  172. package/dist/append.js.map +0 -1
  173. package/dist/assistant.js.map +0 -1
  174. package/dist/assistantSchema.js.map +0 -1
  175. package/dist/assistantStream.js.map +0 -1
  176. package/dist/branch.d.ts +0 -4
  177. package/dist/branch.js +0 -18
  178. package/dist/branch.js.map +0 -1
  179. package/dist/clear.js +0 -14
  180. package/dist/clear.js.map +0 -1
  181. package/dist/disable.js +0 -7
  182. package/dist/disable.js.map +0 -1
  183. package/dist/enable.js +0 -6
  184. package/dist/enable.js.map +0 -1
  185. package/dist/events.d.ts +0 -5
  186. package/dist/events.js +0 -6
  187. package/dist/events.js.map +0 -1
  188. package/dist/handle.js.map +0 -1
  189. package/dist/messages.js +0 -5
  190. package/dist/messages.js.map +0 -1
  191. package/dist/patterns/coalesce_models.d.ts +0 -6
  192. package/dist/patterns/coalesce_models.js.map +0 -1
  193. package/dist/patterns/match_gist.d.ts +0 -3
  194. package/dist/patterns/match_gist.js +0 -16
  195. package/dist/patterns/match_gist.js.map +0 -1
  196. package/dist/sequence.d.ts +0 -2
  197. package/dist/sequence.js +0 -5
  198. package/dist/sequence.js.map +0 -1
  199. package/dist/strand_.d.ts +0 -4
  200. package/dist/strand_.js +0 -8
  201. package/dist/strand_.js.map +0 -1
  202. package/dist/system.d.ts +0 -5
  203. package/dist/system.js +0 -12
  204. package/dist/system.js.map +0 -1
  205. package/dist/user.d.ts +0 -4
  206. package/dist/user.js.map +0 -1
  207. package/dist/user.test.js.map +0 -1
  208. package/dist/userJson.d.ts +0 -6
  209. package/dist/userJson.js +0 -9
  210. package/dist/userJson.js.map +0 -1
  211. package/dist/util/Sequence.d.ts +0 -2
  212. package/dist/util/Sequence.js +0 -2
  213. package/dist/util/Sequence.js.map +0 -1
  214. package/dist/util/fixRaw.js.map +0 -1
  215. package/enable.ts +0 -15
  216. package/events.ts +0 -10
  217. package/messages.ts +0 -9
  218. package/sequence.ts +0 -9
  219. package/strand_.ts +0 -11
  220. package/system.ts +0 -12
  221. package/user.ts +0 -21
  222. package/userJson.ts +0 -14
  223. package/util/Sequence.ts +0 -11
  224. /package/dist/{user.test.d.ts → L/user.test.d.ts} +0 -0
  225. /package/dist/util/{fixRaw.d.ts → normalizeRaw.d.ts} +0 -0
  226. /package/util/{fixRaw.ts → normalizeRaw.ts} +0 -0
package/append.ts DELETED
@@ -1,13 +0,0 @@
1
- import type { Message } from "@effect/ai/AiInput"
2
- import * as Effect from "effect/Effect"
3
- import { MessagesAppended } from "./LEvent.ts"
4
- import { Strand } from "./Strand.ts"
5
-
6
- /** Append messages to the current strand's message list. */
7
- export const append: (
8
- ...messages: Array<Message>
9
- ) => Effect.Effect<void, never, Strand> = Effect.fnUntraced(function*(...messages) {
10
- const strand = yield* Strand
11
- strand.messages.push(...messages)
12
- yield* strand.events.publish(MessagesAppended.make({ messages }))
13
- })
package/branch.ts DELETED
@@ -1,26 +0,0 @@
1
- import * as Effect from "effect/Effect"
2
- import { flow, identity } from "effect/Function"
3
- import * as Option from "effect/Option"
4
- import * as PubSub from "effect/PubSub"
5
- import type { LEvent } from "./LEvent.ts"
6
- import { sequence } from "./sequence.ts"
7
- import { Strand } from "./Strand.ts"
8
- import type { Sequence } from "./util/Sequence.ts"
9
-
10
- /** Isolate the effect with a new strand in context. */
11
- export const branch: Sequence<never, Strand> = flow(
12
- sequence,
13
- Effect.provideServiceEffect(
14
- Strand,
15
- Effect.gen(function*() {
16
- const parent = yield* Strand
17
- return Strand.of({
18
- parent: Option.some(parent),
19
- system: Option.map(parent.system, identity),
20
- events: yield* PubSub.unbounded<LEvent>(),
21
- messages: parent.messages.slice(),
22
- tools: new Set(parent.tools),
23
- })
24
- }),
25
- ),
26
- )
package/clear.ts DELETED
@@ -1,15 +0,0 @@
1
- import type { Message } from "@effect/ai/AiInput"
2
- import * as Effect from "effect/Effect"
3
- import { MessagesCleared } from "./LEvent.ts"
4
- import { Strand } from "./Strand.ts"
5
-
6
- /** Clear the strand's conversation. */
7
- export const clear: Effect.Effect<Array<Message>, never, Strand> = Effect.gen(function*() {
8
- const strand = yield* Strand
9
- const { messages, events } = strand
10
- strand.messages = []
11
- yield* events.publish(MessagesCleared.make({
12
- cleared: messages,
13
- }))
14
- return messages
15
- })
package/disable.ts DELETED
@@ -1,8 +0,0 @@
1
- import * as AiTool from "@effect/ai/AiTool"
2
- import * as Effect from "effect/Effect"
3
- import { Strand } from "./Strand"
4
-
5
- export const disable: (tool: AiTool.Any) => Effect.Effect<void, never, Strand> = (tool) =>
6
- Effect.map(Strand, ({ tools }) => {
7
- tools.delete(tool as never)
8
- })
package/dist/L.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"L.js","sourceRoot":"","sources":["../L.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA"}
package/dist/LPretty.d.ts DELETED
@@ -1,4 +0,0 @@
1
- import type { Message } from "@effect/ai/AiInput";
2
- import type { LEvent } from "./LEvent.ts";
3
- export declare const event: (event: typeof LEvent["Type"]) => string;
4
- export declare const message: ({ _tag, parts }: Message) => string;
package/dist/LPretty.js DELETED
@@ -1,37 +0,0 @@
1
- const GRAY = "\x1b[90m";
2
- const RESET = "\x1b[0m";
3
- const BOLD = "\x1b[1m";
4
- const GRAY_BG = "\x1b[47m";
5
- export const event = (event) => {
6
- let text = `${GRAY}${event._tag}${RESET}`;
7
- switch (event._tag) {
8
- case "MessagesAppended": {
9
- text += event.messages.map(message).join("\n");
10
- break;
11
- }
12
- case "MessagesCleared": {
13
- text += `\n${event.cleared.length} messages cleared.`;
14
- break;
15
- }
16
- }
17
- return text;
18
- };
19
- export const message = ({ _tag, parts }) => {
20
- let value = "";
21
- for (const part of parts) {
22
- value += `\n${BOLD}${_tag}\n${GRAY_BG}`;
23
- switch (part._tag) {
24
- case "TextPart": {
25
- value += `${part.text}`;
26
- break;
27
- }
28
- default: {
29
- value += `${JSON.stringify(part, null, 2)}`;
30
- break;
31
- }
32
- }
33
- value += RESET;
34
- }
35
- return value;
36
- };
37
- //# sourceMappingURL=LPretty.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LPretty.js","sourceRoot":"","sources":["../LPretty.ts"],"names":[],"mappings":"AAGA,MAAM,IAAI,GAAG,UAAU,CAAA;AACvB,MAAM,KAAK,GAAG,SAAS,CAAA;AACvB,MAAM,IAAI,GAAG,SAAS,CAAA;AACtB,MAAM,OAAO,GAAG,UAAU,CAAA;AAE1B,MAAM,CAAC,MAAM,KAAK,GAA6C,CAAC,KAAK,EAAE,EAAE;IACvE,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,EAAE,CAAA;IACzC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC9C,MAAK;QACP,CAAC;QACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,IAAI,IAAI,KAAK,KAAK,CAAC,OAAO,CAAC,MAAM,oBAAoB,CAAA;YACrD,MAAK;QACP,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,EAAW,EAAU,EAAE;IAC1D,IAAI,KAAK,GAAG,EAAE,CAAA;IACd,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,OAAO,EAAE,CAAA;QACvC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,KAAK,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;gBACvB,MAAK;YACP,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,KAAK,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAA;gBAC3C,MAAK;YACP,CAAC;QACH,CAAC;QACD,KAAK,IAAI,KAAK,CAAA;IAChB,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA"}
package/dist/Strand.d.ts DELETED
@@ -1,36 +0,0 @@
1
- import type { Message } from "@effect/ai/AiInput";
2
- import type * as AiTool from "@effect/ai/AiTool";
3
- import * as Context from "effect/Context";
4
- import * as Layer from "effect/Layer";
5
- import * as Option from "effect/Option";
6
- import * as PubSub from "effect/PubSub";
7
- import type { Schema } from "effect/Schema";
8
- import type { LEvent } from "./LEvent.ts";
9
- export declare namespace Strand {
10
- interface Service {
11
- /** The parent strand. */
12
- readonly parent: Option.Option<Service>;
13
- /** The pubsub with which the current strand's events are emitted. */
14
- readonly events: PubSub.PubSub<LEvent>;
15
- /** The current system prompt to be passed along to the model. */
16
- system: Option.Option<string>;
17
- /** The list of messages that the model uses to infer the next message. */
18
- messages: Array<Message>;
19
- /** The tools available to the model. */
20
- tools: Set<AiTool.AiTool<string, AiTool.AnyStructSchema, Schema.Any, Schema.Any, never>>;
21
- }
22
- }
23
- declare const Strand_base: Context.TagClass<Strand, "liminal/Strand", Strand.Service>;
24
- /** A context tag that denotes the boundary of a conversation isolate. */
25
- export declare class Strand extends Strand_base {
26
- static layer: <T extends AiTool.Any = never>(init?: {
27
- system?: string | undefined;
28
- messages?: Array<Message> | undefined;
29
- tools?: Set<T> | undefined;
30
- }) => Layer.Layer<Strand, [
31
- T
32
- ] extends [AiTool.Any] ? AiTool.Failure<T> : never, [
33
- T
34
- ] extends [AiTool.Any] ? AiTool.Context<T> : never>;
35
- }
36
- export {};
package/dist/Strand.js DELETED
@@ -1,18 +0,0 @@
1
- import * as Context from "effect/Context";
2
- import * as Effect from "effect/Effect";
3
- import * as Layer from "effect/Layer";
4
- import * as Option from "effect/Option";
5
- import * as PubSub from "effect/PubSub";
6
- /** A context tag that denotes the boundary of a conversation isolate. */
7
- export class Strand extends Context.Tag("liminal/Strand")() {
8
- static layer = ({ system, messages, tools } = {}) => Layer.effect(Strand, Effect.gen(function* () {
9
- return Strand.of({
10
- parent: yield* Effect.serviceOption(Strand),
11
- events: yield* PubSub.unbounded(),
12
- system: Option.fromNullable(system),
13
- messages: [...messages ?? []],
14
- tools: new Set(tools ?? []),
15
- });
16
- }));
17
- }
18
- //# sourceMappingURL=Strand.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Strand.js","sourceRoot":"","sources":["../Strand.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAmBvC,yEAAyE;AACzE,MAAM,OAAO,MAAO,SAAQ,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAA0B;IACjF,MAAM,CAAC,KAAK,GAQR,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,CACvC,KAAK,CAAC,MAAM,CACV,MAAM,EACN,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,OAAO,MAAM,CAAC,EAAE,CAAC;YACf,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;YAC3C,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,EAAU;YACzC,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;YACnC,QAAQ,EAAE,CAAC,GAAG,QAAQ,IAAI,EAAE,CAAC;YAC7B,KAAK,EAAE,IAAI,GAAG,CAAC,KAAc,IAAI,EAAE,CAAC;SACrC,CAAC,CAAA;IACJ,CAAC,CAAC,CACH,CAAA"}
package/dist/append.js DELETED
@@ -1,10 +0,0 @@
1
- import * as Effect from "effect/Effect";
2
- import { MessagesAppended } from "./LEvent.js";
3
- import { Strand } from "./Strand.js";
4
- /** Append messages to the current strand's message list. */
5
- export const append = Effect.fnUntraced(function* (...messages) {
6
- const strand = yield* Strand;
7
- strand.messages.push(...messages);
8
- yield* strand.events.publish(MessagesAppended.make({ messages }));
9
- });
10
- //# sourceMappingURL=append.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"append.js","sourceRoot":"","sources":["../append.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,4DAA4D;AAC5D,MAAM,CAAC,MAAM,MAAM,GAEuB,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAC,GAAG,QAAQ;IAC/E,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAA;IAC5B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAA;IACjC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;AACnE,CAAC,CAAC,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"assistant.js","sourceRoot":"","sources":["../assistant.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,SAAS,MAAM,sBAAsB,CAAA;AACjD,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,oEAAoE;AACpE,MAAM,CAAC,MAAM,SAAS,GAA6D,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IACrG,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,eAAe,CAAA;IACpC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,MAAM,CAAA;IACjD,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;QAChD,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;QACrC,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,CAAU;KAC3C,CAAC,CAAA;IACF,uDAAuD;IACvD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QACjB,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAyB,CAAA;IACjE,CAAC;IACD,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,IAAI,CAAA;AACb,CAAC,CAAC,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"assistantSchema.js","sourceRoot":"","sources":["../assistantSchema.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,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,SAAS,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,WAAW,EAAkB,MAAM,qBAAqB,CAAA;AAEjE,mGAAmG;AACnG,MAAM,CAAC,MAAM,eAAe,GAOxB,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAC,MAAM;IACpC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,eAAe,CAAA;IACpC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,CAAC,MAAM,CAAA;IAE1C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IACxC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAA+B,CAAA;IACvF,MAAM,QAAQ,GAAG,CAAC,QAAQ,IAAI,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;IAC9E,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;IAEtE,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC;QACxC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;QACrC,MAAM,EAAE,OAAO;QACf,MAAM,EAAE,QAAQ;KACjB,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAC7D,CAAA;IAED,KAAK,CAAC,CAAC,MAAM,CACX,IAAI,gBAAgB,CAAC;QACnB,KAAK,EAAE;YACL,IAAI,QAAQ,CAAC;gBACX,IAAI,EAAE,KAAK,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC;aACzC,CAAC;SACH;KACF,CAAC,CACH,CAAA;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAC,CAAA;AAEF,MAAM,cAAc,GAAG,CAAC,GAAkB,EAAW,EAAE;IACrD,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,OAAO,IAAI,CAAA;QACb,CAAC;QACD,KAAK,YAAY,CAAC;QAClB,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,OAAO,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACjC,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"assistantStream.js","sourceRoot":"","sources":["../assistantStream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAE5D,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAA;AACjD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjC,iGAAiG;AACjG,MAAM,CAAC,MAAM,eAAe,GAIxB,MAAM,CAAC,MAAM,CACf,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,eAAe,CAAA;IACpC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,MAAM,CAAA;IACjD,OAAO,KAAK,CAAC,UAAU,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;QACrC,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;KAClC,CAAC,CAAA;AACJ,CAAC,CAAC,CACH,CAAA"}
package/dist/branch.d.ts DELETED
@@ -1,4 +0,0 @@
1
- import { Strand } from "./Strand.ts";
2
- import type { Sequence } from "./util/Sequence.ts";
3
- /** Isolate the effect with a new strand in context. */
4
- export declare const branch: Sequence<never, Strand>;
package/dist/branch.js DELETED
@@ -1,18 +0,0 @@
1
- import * as Effect from "effect/Effect";
2
- import { flow, identity } from "effect/Function";
3
- import * as Option from "effect/Option";
4
- import * as PubSub from "effect/PubSub";
5
- import { sequence } from "./sequence.js";
6
- import { Strand } from "./Strand.js";
7
- /** Isolate the effect with a new strand in context. */
8
- export const branch = flow(sequence, Effect.provideServiceEffect(Strand, Effect.gen(function* () {
9
- const parent = yield* Strand;
10
- return Strand.of({
11
- parent: Option.some(parent),
12
- system: Option.map(parent.system, identity),
13
- events: yield* PubSub.unbounded(),
14
- messages: parent.messages.slice(),
15
- tools: new Set(parent.tools),
16
- });
17
- })));
18
- //# sourceMappingURL=branch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"branch.js","sourceRoot":"","sources":["../branch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGpC,uDAAuD;AACvD,MAAM,CAAC,MAAM,MAAM,GAA4B,IAAI,CACjD,QAAQ,EACR,MAAM,CAAC,oBAAoB,CACzB,MAAM,EACN,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAA;IAC5B,OAAO,MAAM,CAAC,EAAE,CAAC;QACf,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;QAC3C,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,EAAU;QACzC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE;QACjC,KAAK,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;KAC7B,CAAC,CAAA;AACJ,CAAC,CAAC,CACH,CACF,CAAA"}
package/dist/clear.js DELETED
@@ -1,14 +0,0 @@
1
- import * as Effect from "effect/Effect";
2
- import { MessagesCleared } from "./LEvent.js";
3
- import { Strand } from "./Strand.js";
4
- /** Clear the strand's conversation. */
5
- export const clear = Effect.gen(function* () {
6
- const strand = yield* Strand;
7
- const { messages, events } = strand;
8
- strand.messages = [];
9
- yield* events.publish(MessagesCleared.make({
10
- cleared: messages,
11
- }));
12
- return messages;
13
- });
14
- //# sourceMappingURL=clear.js.map
package/dist/clear.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"clear.js","sourceRoot":"","sources":["../clear.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,uCAAuC;AACvC,MAAM,CAAC,MAAM,KAAK,GAAiD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IACrF,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAA;IAC5B,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;IACnC,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAA;IACpB,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC;QACzC,OAAO,EAAE,QAAQ;KAClB,CAAC,CAAC,CAAA;IACH,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAC,CAAA"}
package/dist/disable.js DELETED
@@ -1,7 +0,0 @@
1
- import * as AiTool from "@effect/ai/AiTool";
2
- import * as Effect from "effect/Effect";
3
- import { Strand } from "./Strand";
4
- export const disable = (tool) => Effect.map(Strand, ({ tools }) => {
5
- tools.delete(tool);
6
- });
7
- //# sourceMappingURL=disable.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"disable.js","sourceRoot":"","sources":["../disable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjC,MAAM,CAAC,MAAM,OAAO,GAA6D,CAAC,IAAI,EAAE,EAAE,CACxF,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IAC/B,KAAK,CAAC,MAAM,CAAC,IAAa,CAAC,CAAA;AAC7B,CAAC,CAAC,CAAA"}
package/dist/enable.js DELETED
@@ -1,6 +0,0 @@
1
- import * as Effect from "effect/Effect";
2
- import { Strand } from "./Strand.js";
3
- export const enable = (toolkit) => Effect.map(Strand, ({ tools }) => {
4
- tools.add(toolkit);
5
- });
6
- //# sourceMappingURL=enable.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"enable.js","sourceRoot":"","sources":["../enable.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,MAAM,CAAC,MAAM,MAAM,GAMoC,CAAC,OAAO,EAAE,EAAE,CACjE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IAC/B,KAAK,CAAC,GAAG,CAAC,OAAgB,CAAC,CAAA;AAC7B,CAAC,CAAC,CAAA"}
package/dist/events.d.ts DELETED
@@ -1,5 +0,0 @@
1
- import * as Stream from "effect/Stream";
2
- import type { LEvent } from "./LEvent.ts";
3
- import { Strand } from "./Strand.ts";
4
- /** A stream of events from the current strand. */
5
- export declare const events: Stream.Stream<LEvent, never, Strand>;
package/dist/events.js DELETED
@@ -1,6 +0,0 @@
1
- import * as Effect from "effect/Effect";
2
- import * as Stream from "effect/Stream";
3
- import { Strand } from "./Strand.js";
4
- /** A stream of events from the current strand. */
5
- export const events = Strand.pipe(Effect.map(({ events }) => Stream.fromPubSub(events)), Stream.unwrap);
6
- //# sourceMappingURL=events.js.map
@@ -1 +0,0 @@
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,IAAI,CACrE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EACrD,MAAM,CAAC,MAAM,CACd,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"handle.js","sourceRoot":"","sources":["../handle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,2EAA2E;AAC3E,MAAM,CAAC,MAAM,MAAM,GAE0D,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAC,CAAC;IACxG,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAC5C,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,MAAM,CAAA;IAChC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAA;IACvC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAClC,MAAM,CAAC,QAAQ,CACb,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAC5B,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EACpB,MAAM,CAAC,IAAI,CACZ,CACF,CACF,CAAA;IACD,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAA;IAClB,OAAO,KAAK,CAAA;AACd,CAAC,CAAC,CAAA"}
package/dist/messages.js DELETED
@@ -1,5 +0,0 @@
1
- import * as Effect from "effect/Effect";
2
- import { Strand } from "./Strand.js";
3
- /** Get a copy of the current list of messages. */
4
- export const messages = Effect.map(Strand, ({ messages: [...messages] }) => messages);
5
- //# sourceMappingURL=messages.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../messages.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,kDAAkD;AAClD,MAAM,CAAC,MAAM,QAAQ,GAAiD,MAAM,CAAC,GAAG,CAC9E,MAAM,EACN,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAC1C,CAAA"}
@@ -1,6 +0,0 @@
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 { Strand } from "../Strand.ts";
6
- export declare const coalesceModels: <E, R, M extends Array<AiModel<any, any>>>(effect: Effect.Effect<any, E, R>, models: M) => Effect.Effect<string, AiError | E, Strand | AiLanguageModel | ([M[number]] extends [AiModel<any, infer R>] ? R : never)>;
@@ -1 +0,0 @@
1
- {"version":3,"file":"coalesce_models.js","sourceRoot":"","sources":["../../patterns/coalesce_models.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEjC,MAAM,CAAC,MAAM,cAAc,GAOvB,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,IAAI,CAAA;;;;;QAKP,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,SAAS,CAAA;AACzB,CAAC,CACF,CAAA"}
@@ -1,3 +0,0 @@
1
- import * as Effect from "effect/Effect";
2
- import { Strand } from "../Strand.ts";
3
- export declare const matchGist: <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]>) | Strand>;
@@ -1,16 +0,0 @@
1
- import * as Effect from "effect/Effect";
2
- import * as Schema from "effect/Schema";
3
- import { assistantSchema } from "../assistantSchema.js";
4
- import { branch } from "../branch.js";
5
- import { Strand } from "../Strand.js";
6
- import { user } from "../user.js";
7
- export const matchGist = Effect.fnUntraced(function* (routes) {
8
- const descriptions = Object.keys(routes);
9
- const description = yield* branch(user `
10
- Which of the following descriptions best matches the current conversation?
11
-
12
- - ${descriptions.join("\n -")}
13
- `, assistantSchema(Schema.Literal(...descriptions)));
14
- return yield* routes[description];
15
- });
16
- //# sourceMappingURL=match_gist.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"match_gist.js","sourceRoot":"","sources":["../../patterns/match_gist.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEjC,MAAM,CAAC,MAAM,SAAS,GAIlB,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,MAAM,CAC/B,IAAI,CAAA;;;UAGE,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;KAC9B,EACD,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,CAAC,CACjD,CAAA;IACD,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAE,CAAA;AACpC,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- import type { Sequence } from "./util/Sequence";
2
- export declare const sequence: Sequence;
package/dist/sequence.js DELETED
@@ -1,5 +0,0 @@
1
- import * as Effect from "effect/Effect";
2
- export const sequence = (...steps) => Effect.all(steps, {
3
- concurrency: 1,
4
- }).pipe(Effect.map((v) => v.pop()));
5
- //# sourceMappingURL=sequence.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sequence.js","sourceRoot":"","sources":["../sequence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,MAAM,CAAC,MAAM,QAAQ,GAAa,CAAC,GAAG,KAAK,EAAE,EAAE,CAC7C,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE;IAChB,WAAW,EAAE,CAAC;CACf,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,GAAG,CAAC,CAAC,CAAe,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAG,CAAU,CACnD,CAAA"}
package/dist/strand_.d.ts DELETED
@@ -1,4 +0,0 @@
1
- import { Strand } from "./Strand.ts";
2
- import { type Sequence } from "./util/Sequence.ts";
3
- /** Isolate the effect with a new strand in context. */
4
- export declare const strand: Sequence<Strand>;
package/dist/strand_.js DELETED
@@ -1,8 +0,0 @@
1
- import * as Effect from "effect/Effect";
2
- import { flow } from "effect/Function";
3
- import { sequence } from "./sequence.js";
4
- import { Strand } from "./Strand.js";
5
- import {} from "./util/Sequence.js";
6
- /** Isolate the effect with a new strand in context. */
7
- export const strand = flow(sequence, Effect.provide(Strand.layer()));
8
- //# sourceMappingURL=strand_.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"strand_.js","sourceRoot":"","sources":["../strand_.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAiB,MAAM,oBAAoB,CAAA;AAElD,uDAAuD;AACvD,MAAM,CAAC,MAAM,MAAM,GAAqB,IAAI,CAC1C,QAAQ,EACR,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAC/B,CAAA"}
package/dist/system.d.ts DELETED
@@ -1,5 +0,0 @@
1
- import * as Option from "effect/Option";
2
- import { Strand } from "./Strand.ts";
3
- import { type Taggable } from "./util/Taggable.ts";
4
- /** Set the system instruction for the current strand. */
5
- export declare const system: Taggable<Option.Option<string>, never, Strand>;
package/dist/system.js DELETED
@@ -1,12 +0,0 @@
1
- import * as Effect from "effect/Effect";
2
- import * as Option from "effect/Option";
3
- import { Strand } from "./Strand.js";
4
- import { normalize } from "./util/Taggable.js";
5
- /** Set the system instruction for the current strand. */
6
- export const system = Effect.fnUntraced(function* (a0, ...aRest) {
7
- const conversation = yield* Strand;
8
- const { system } = conversation;
9
- conversation.system = a0 ? Option.some(yield* normalize(a0, aRest)) : Option.none();
10
- return system;
11
- });
12
- //# sourceMappingURL=system.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"system.js","sourceRoot":"","sources":["../system.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,SAAS,EAAiB,MAAM,oBAAoB,CAAA;AAE7D,yDAAyD;AACzD,MAAM,CAAC,MAAM,MAAM,GAAmD,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAC,EAAE,EAAE,GAAG,KAAK;IAC5G,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,MAAM,CAAA;IAClC,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,CAAA;IAC/B,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;IACnF,OAAO,MAAM,CAAA;AACf,CAAC,CAAC,CAAA"}
package/dist/user.d.ts DELETED
@@ -1,4 +0,0 @@
1
- import type { Strand } from "./Strand.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, Strand>;
package/dist/user.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"user.js","sourceRoot":"","sources":["../user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,SAAS,EAAiB,MAAM,oBAAoB,CAAA;AAE7D,iDAAiD;AACjD,MAAM,CAAC,MAAM,IAAI,GAAkC,CAAC,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,CAClE,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,IAAI,CACvB,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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"user.test.js","sourceRoot":"","sources":["../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,cAAc,CAAA;AACrC,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 +0,0 @@
1
- import * as Effect from "effect/Effect";
2
- import type * as Schema from "effect/Schema";
3
- import type * as Strand from "./Strand.ts";
4
- import { type JsonValue } from "./util/JsonValue.ts";
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>;
package/dist/userJson.js DELETED
@@ -1,9 +0,0 @@
1
- import * as Effect from "effect/Effect";
2
- import { user } from "./user.js";
3
- import { encodeJsonc } from "./util/JsonValue.js";
4
- /** Stringify and append some JSON as a user message to the conversation. */
5
- export const userJson = Effect.fnUntraced(function* (value, schema) {
6
- const encoded = schema ? encodeJsonc(schema)(value) : JSON.stringify(value, null, 2);
7
- return yield* user `\`\`\`json${schema ? "c" : ""}${"\n"}${encoded}${"\n"}\`\`\``;
8
- });
9
- //# sourceMappingURL=userJson.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"userJson.js","sourceRoot":"","sources":["../userJson.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,WAAW,EAAkB,MAAM,qBAAqB,CAAA;AAEjE,4EAA4E;AAC5E,MAAM,CAAC,MAAM,QAAQ,GAG4B,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,MAAM;IACxF,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,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI,QAAQ,CAAA;AAClF,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- import type * as Effect from "effect/Effect";
2
- export type Sequence<I = never, O = never> = <Arg extends Array<Effect.All.EffectAny>>(...steps: Arg) => Effect.Effect<Arg extends [] ? void : Arg extends [...infer _0, infer L extends Effect.All.EffectAny] ? Effect.Effect.Success<L> : never, Effect.Effect.Error<Arg[number]>, Exclude<Effect.Effect.Context<Arg[number]>, I> | O>;
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=Sequence.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Sequence.js","sourceRoot":"","sources":["../../util/Sequence.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"fixRaw.js","sourceRoot":"","sources":["../../util/fixRaw.ts"],"names":[],"mappings":"AAAA,MAAM,gBAAgB,GAAG,WAAW,CAAA;AACpC,MAAM,cAAc,GAAG,aAAa,CAAA;AACpC,MAAM,aAAa,GAAG,iBAAiB,CAAA;AACvC,MAAM,mBAAmB,GAAG,WAAW,CAAA;AAEvC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAA6B,EAAE,MAAsB,EAAU,EAAE;IAC5F,MAAM,YAAY,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAA;IACtD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAA;IAC/B,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAA;IAElC,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACjE,IAAI,WAAW,GAAG,CAAC,CAAA;IAEnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QAC3B,WAAW,CAAC,WAAW,EAAE,CAAC,GAAG,GAAG,CAAA;QAEhC,8CAA8C;QAC9C,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;YAE/B,iDAAiD;YACjD,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,MAAM,gBAAgB,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;gBAE9C,IAAI,gBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC;oBAC5B,kDAAkD;oBAClD,MAAM,oBAAoB,GAAG,GAAG,CAAC,SAAS,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAA;oBAChE,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;oBACrE,MAAM,kBAAkB,GAAG,iBAAiB,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;oBAEhG,IAAI,kBAAkB,EAAE,CAAC;wBACvB,mCAAmC;wBACnC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;wBAC/B,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAA;wBAEhC,uCAAuC;wBACvC,WAAW,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;wBAErC,yCAAyC;wBACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;4BACrC,WAAW,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,GAAG,kBAAkB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;wBACnE,CAAC;wBACD,SAAQ;oBACV,CAAC;gBACH,CAAC;YACH,CAAC;YACD,sDAAsD;YACtD,WAAW,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK,CAAA;QACpC,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AACnD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,QAA8B,EAErE,EAAE;IACF,MAAM,kBAAkB,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,CAAA;IAChE,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAA;IAE3C,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAA;IACrC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAA;IAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,IAAI,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAE,CAAA;QAC1B,0DAA0D;QAC1D,IAAI,WAAW,EAAE,CAAC;YAChB,+DAA+D;YAC/D,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACZ,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YACzC,CAAC;YACD,oFAAoF;YACpF,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,WAAW,EAAE,EAAE,IAAI,CAAC,CAAA;QAChD,CAAC;QAED,oDAAoD;QACpD,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;YAChD,6DAA6D;YAC7D,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;QAClC,CAAC,CAAC,CAAA;QAEF,oDAAoD;QACpD,IAAI,WAAW,IAAI,CAAC,KAAK,SAAS,GAAG,CAAC,EAAE,CAAC;YACvC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAA;QAC5C,CAAC;QAED,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;IACd,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,CAAA;AAChB,CAAC,CAAA"}
package/enable.ts DELETED
@@ -1,15 +0,0 @@
1
- import type { AiTool, AnyStructSchema, Handler } from "@effect/ai/AiTool"
2
- import * as Effect from "effect/Effect"
3
- import type { Schema } from "effect/Schema"
4
- import { Strand } from "./Strand.ts"
5
-
6
- export const enable: <
7
- K extends string,
8
- E extends Schema.All,
9
- R,
10
- >(
11
- toolkit: AiTool<K, AnyStructSchema, Schema.Any, E, R>,
12
- ) => Effect.Effect<void, E, Handler<K> | Strand | R> = (toolkit) =>
13
- Effect.map(Strand, ({ tools }) => {
14
- tools.add(toolkit as never)
15
- })
package/events.ts DELETED
@@ -1,10 +0,0 @@
1
- import * as Effect from "effect/Effect"
2
- import * as Stream from "effect/Stream"
3
- import type { LEvent } from "./LEvent.ts"
4
- import { Strand } from "./Strand.ts"
5
-
6
- /** A stream of events from the current strand. */
7
- export const events: Stream.Stream<LEvent, never, Strand> = Strand.pipe(
8
- Effect.map(({ events }) => Stream.fromPubSub(events)),
9
- Stream.unwrap,
10
- )
package/messages.ts DELETED
@@ -1,9 +0,0 @@
1
- import type { Message } from "@effect/ai/AiInput"
2
- import * as Effect from "effect/Effect"
3
- import { Strand } from "./Strand.ts"
4
-
5
- /** Get a copy of the current list of messages. */
6
- export const messages: Effect.Effect<Array<Message>, never, Strand> = Effect.map(
7
- Strand,
8
- ({ messages: [...messages] }) => messages,
9
- )
package/sequence.ts DELETED
@@ -1,9 +0,0 @@
1
- import * as Effect from "effect/Effect"
2
- import type { Sequence } from "./util/Sequence"
3
-
4
- export const sequence: Sequence = (...steps) =>
5
- Effect.all(steps, {
6
- concurrency: 1,
7
- }).pipe(
8
- Effect.map((v: Array<never>) => v.pop()!) as never,
9
- )
package/strand_.ts DELETED
@@ -1,11 +0,0 @@
1
- import * as Effect from "effect/Effect"
2
- import { flow } from "effect/Function"
3
- import { sequence } from "./sequence.ts"
4
- import { Strand } from "./Strand.ts"
5
- import { type Sequence } from "./util/Sequence.ts"
6
-
7
- /** Isolate the effect with a new strand in context. */
8
- export const strand: Sequence<Strand> = flow(
9
- sequence,
10
- Effect.provide(Strand.layer()),
11
- )
package/system.ts DELETED
@@ -1,12 +0,0 @@
1
- import * as Effect from "effect/Effect"
2
- import * as Option from "effect/Option"
3
- import { Strand } from "./Strand.ts"
4
- import { normalize, type Taggable } from "./util/Taggable.ts"
5
-
6
- /** Set the system instruction for the current strand. */
7
- export const system: Taggable<Option.Option<string>, never, Strand> = Effect.fnUntraced(function*(a0, ...aRest) {
8
- const conversation = yield* Strand
9
- const { system } = conversation
10
- conversation.system = a0 ? Option.some(yield* normalize(a0, aRest)) : Option.none()
11
- return system
12
- })
package/user.ts DELETED
@@ -1,21 +0,0 @@
1
- import { TextPart, UserMessage } from "@effect/ai/AiInput"
2
- import * as Effect from "effect/Effect"
3
- import { append } from "./append.ts"
4
- import type { Strand } from "./Strand.ts"
5
- import { normalize, type Taggable } from "./util/Taggable.ts"
6
-
7
- /** Append a user message to the conversation. */
8
- export const user: Taggable<void, never, Strand> = (a0, ...aRest) =>
9
- normalize(a0, aRest).pipe(
10
- Effect.flatMap((text) =>
11
- text
12
- ? append(
13
- UserMessage.make({
14
- parts: [
15
- TextPart.make({ text }),
16
- ],
17
- }),
18
- )
19
- : Effect.succeed(undefined)
20
- ),
21
- )
package/userJson.ts DELETED
@@ -1,14 +0,0 @@
1
- import * as Effect from "effect/Effect"
2
- import type * as Schema from "effect/Schema"
3
- import type * as Strand from "./Strand.ts"
4
- import { user } from "./user.ts"
5
- import { encodeJsonc, type JsonValue } from "./util/JsonValue.ts"
6
-
7
- /** Stringify and append some JSON as a user message to the conversation. */
8
- export const userJson: <A, I extends JsonValue>(
9
- value: A,
10
- schema?: Schema.Schema<A, I>,
11
- ) => Effect.Effect<void, never, Strand.Strand> = Effect.fnUntraced(function*(value, schema) {
12
- const encoded = schema ? encodeJsonc(schema)(value) : JSON.stringify(value, null, 2)
13
- return yield* user`\`\`\`json${schema ? "c" : ""}${"\n"}${encoded}${"\n"}\`\`\``
14
- })