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.
- package/CHANGELOG.md +12 -0
- package/Digest.ts +30 -0
- package/Envelope.ts +16 -0
- package/F/F.ts +1 -0
- package/{L.ts → L/L.ts} +9 -4
- package/L/append.ts +14 -0
- package/{assistant.ts → L/assistant.ts} +10 -9
- package/{assistantSchema.ts → L/assistantSchema.ts} +8 -7
- package/{assistantStream.ts → L/assistantStream.ts} +8 -11
- package/L/branch.ts +20 -0
- package/L/clear.ts +14 -0
- package/L/disable.ts +13 -0
- package/L/enable.ts +24 -0
- package/L/events.ts +11 -0
- package/L/json.ts +12 -0
- package/L/line.ts +22 -0
- package/{handle.ts → L/listen.ts} +6 -5
- package/L/messages.ts +10 -0
- package/L/prev.ts +4 -0
- package/L/provide.ts +10 -0
- package/L/self.ts +5 -0
- package/L/send.ts +56 -0
- package/L/system.ts +25 -0
- package/L/thread.ts +16 -0
- package/L/toolkit.ts +14 -0
- package/{user.test.ts → L/user.test.ts} +5 -2
- package/L/user.ts +32 -0
- package/LEvent.ts +23 -13
- package/Thread.ts +67 -0
- package/dist/Digest.d.ts +17 -0
- package/dist/Digest.js +7 -0
- package/dist/Digest.js.map +1 -0
- package/dist/Envelope.d.ts +13 -0
- package/dist/Envelope.js +2 -0
- package/dist/Envelope.js.map +1 -0
- package/dist/F/F.d.ts +1 -0
- package/dist/F/F.js +2 -0
- package/dist/F/F.js.map +1 -0
- package/dist/{L.d.ts → L/L.d.ts} +9 -4
- package/dist/{L.js → L/L.js} +9 -4
- package/dist/L/L.js.map +1 -0
- package/dist/{append.d.ts → L/append.d.ts} +3 -3
- package/dist/L/append.js +10 -0
- package/dist/L/append.js.map +1 -0
- package/dist/{assistant.d.ts → L/assistant.d.ts} +3 -3
- package/dist/{assistant.js → L/assistant.js} +8 -8
- package/dist/L/assistant.js.map +1 -0
- package/dist/{assistantSchema.d.ts → L/assistantSchema.d.ts} +4 -4
- package/dist/{assistantSchema.js → L/assistantSchema.js} +5 -5
- package/dist/L/assistantSchema.js.map +1 -0
- package/dist/{assistantStream.d.ts → L/assistantStream.d.ts} +3 -3
- package/dist/{assistantStream.js → L/assistantStream.js} +6 -6
- package/dist/L/assistantStream.js.map +1 -0
- package/dist/L/branch.d.ts +3 -0
- package/dist/L/branch.js +19 -0
- package/dist/L/branch.js.map +1 -0
- package/dist/{clear.d.ts → L/clear.d.ts} +3 -3
- package/dist/L/clear.js +12 -0
- package/dist/L/clear.js.map +1 -0
- package/dist/{disable.d.ts → L/disable.d.ts} +2 -2
- package/dist/L/disable.js +10 -0
- package/dist/L/disable.js.map +1 -0
- package/dist/{enable.d.ts → L/enable.d.ts} +2 -2
- package/dist/L/enable.js +13 -0
- package/dist/L/enable.js.map +1 -0
- package/dist/L/events.d.ts +5 -0
- package/dist/L/events.js +6 -0
- package/dist/L/events.js.map +1 -0
- package/dist/L/json.d.ts +5 -0
- package/dist/L/json.js +8 -0
- package/dist/L/json.js.map +1 -0
- package/dist/L/line.d.ts +5 -0
- package/dist/L/line.js +11 -0
- package/dist/L/line.js.map +1 -0
- package/dist/{handle.d.ts → L/listen.d.ts} +4 -4
- package/dist/{handle.js → L/listen.js} +4 -4
- package/dist/L/listen.js.map +1 -0
- package/dist/{messages.d.ts → L/messages.d.ts} +2 -2
- package/dist/L/messages.js +5 -0
- package/dist/L/messages.js.map +1 -0
- package/dist/L/prev.d.ts +5 -0
- package/dist/L/prev.js +5 -0
- package/dist/L/prev.js.map +1 -0
- package/dist/L/provide.d.ts +3 -0
- package/dist/L/provide.js +4 -0
- package/dist/L/provide.js.map +1 -0
- package/dist/L/self.d.ts +3 -0
- package/dist/L/self.js +4 -0
- package/dist/L/self.js.map +1 -0
- package/dist/L/send.d.ts +6 -0
- package/dist/L/send.js +34 -0
- package/dist/L/send.js.map +1 -0
- package/dist/L/system.d.ts +5 -0
- package/dist/L/system.js +14 -0
- package/dist/L/system.js.map +1 -0
- package/dist/L/thread.d.ts +3 -0
- package/dist/L/thread.js +15 -0
- package/dist/L/thread.js.map +1 -0
- package/dist/L/toolkit.d.ts +4 -0
- package/dist/L/toolkit.js +9 -0
- package/dist/L/toolkit.js.map +1 -0
- package/dist/L/user.d.ts +6 -0
- package/dist/{user.js → L/user.js} +3 -3
- package/dist/L/user.js.map +1 -0
- package/dist/L/user.test.js.map +1 -0
- package/dist/LEvent.d.ts +143 -15
- package/dist/LEvent.js +12 -9
- package/dist/LEvent.js.map +1 -1
- package/dist/Thread.d.ts +52 -0
- package/dist/Thread.js +32 -0
- package/dist/Thread.js.map +1 -0
- package/dist/index.d.ts +6 -3
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/patterns/Debate.d.ts +1 -0
- package/dist/patterns/Debate.js +3 -0
- package/dist/patterns/Debate.js.map +1 -0
- package/dist/patterns/Model.d.ts +6 -0
- package/dist/patterns/{coalesce_models.js → Model.js} +5 -6
- package/dist/patterns/Model.js.map +1 -0
- package/dist/patterns/Route.d.ts +3 -0
- package/dist/patterns/Route.js +14 -0
- package/dist/patterns/Route.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/util/JsonValue.js.map +1 -1
- package/dist/util/NeverTool.d.ts +3 -0
- package/dist/util/NeverTool.js +3 -0
- package/dist/util/NeverTool.js.map +1 -0
- package/dist/util/Taggable.d.ts +5 -5
- package/dist/util/Taggable.js +10 -15
- package/dist/util/Taggable.js.map +1 -1
- package/dist/util/extract.d.ts +3 -0
- package/dist/util/extract.js +2 -0
- package/dist/util/extract.js.map +1 -0
- package/dist/util/messageCodec.d.ts +98 -0
- package/dist/util/messageCodec.js +5 -0
- package/dist/util/messageCodec.js.map +1 -0
- package/dist/util/{fixRaw.js → normalizeRaw.js} +1 -1
- package/dist/util/normalizeRaw.js.map +1 -0
- package/dist/util/prefix.d.ts +1 -0
- package/dist/util/prefix.js +2 -0
- package/dist/util/prefix.js.map +1 -0
- package/dist/util/raw.d.ts +6 -0
- package/dist/util/raw.js +5 -0
- package/dist/util/raw.js.map +1 -0
- package/index.ts +6 -3
- package/package.json +22 -9
- package/patterns/Debate.ts +2 -0
- package/patterns/{coalesce_models.ts → Model.ts} +6 -7
- package/patterns/{match_gist.ts → Route.ts} +11 -9
- package/util/JsonValue.ts +2 -2
- package/util/NeverTool.ts +10 -0
- package/util/Taggable.ts +27 -34
- package/util/extract.ts +7 -0
- package/util/messageCodec.ts +5 -0
- package/util/prefix.ts +1 -0
- package/util/raw.ts +27 -0
- package/LPretty.ts +0 -41
- package/Strand.ts +0 -49
- package/append.ts +0 -13
- package/branch.ts +0 -26
- package/clear.ts +0 -15
- package/disable.ts +0 -8
- package/dist/L.js.map +0 -1
- package/dist/LPretty.d.ts +0 -4
- package/dist/LPretty.js +0 -37
- package/dist/LPretty.js.map +0 -1
- package/dist/Strand.d.ts +0 -36
- package/dist/Strand.js +0 -18
- package/dist/Strand.js.map +0 -1
- package/dist/append.js +0 -10
- package/dist/append.js.map +0 -1
- package/dist/assistant.js.map +0 -1
- package/dist/assistantSchema.js.map +0 -1
- package/dist/assistantStream.js.map +0 -1
- package/dist/branch.d.ts +0 -4
- package/dist/branch.js +0 -18
- package/dist/branch.js.map +0 -1
- package/dist/clear.js +0 -14
- package/dist/clear.js.map +0 -1
- package/dist/disable.js +0 -7
- package/dist/disable.js.map +0 -1
- package/dist/enable.js +0 -6
- package/dist/enable.js.map +0 -1
- package/dist/events.d.ts +0 -5
- package/dist/events.js +0 -6
- package/dist/events.js.map +0 -1
- package/dist/handle.js.map +0 -1
- package/dist/messages.js +0 -5
- package/dist/messages.js.map +0 -1
- package/dist/patterns/coalesce_models.d.ts +0 -6
- package/dist/patterns/coalesce_models.js.map +0 -1
- package/dist/patterns/match_gist.d.ts +0 -3
- package/dist/patterns/match_gist.js +0 -16
- package/dist/patterns/match_gist.js.map +0 -1
- package/dist/sequence.d.ts +0 -2
- package/dist/sequence.js +0 -5
- package/dist/sequence.js.map +0 -1
- package/dist/strand_.d.ts +0 -4
- package/dist/strand_.js +0 -8
- package/dist/strand_.js.map +0 -1
- package/dist/system.d.ts +0 -5
- package/dist/system.js +0 -12
- package/dist/system.js.map +0 -1
- package/dist/user.d.ts +0 -4
- package/dist/user.js.map +0 -1
- package/dist/user.test.js.map +0 -1
- package/dist/userJson.d.ts +0 -6
- package/dist/userJson.js +0 -9
- package/dist/userJson.js.map +0 -1
- package/dist/util/Sequence.d.ts +0 -2
- package/dist/util/Sequence.js +0 -2
- package/dist/util/Sequence.js.map +0 -1
- package/dist/util/fixRaw.js.map +0 -1
- package/enable.ts +0 -15
- package/events.ts +0 -10
- package/messages.ts +0 -9
- package/sequence.ts +0 -9
- package/strand_.ts +0 -11
- package/system.ts +0 -12
- package/user.ts +0 -21
- package/userJson.ts +0 -14
- package/util/Sequence.ts +0 -11
- /package/dist/{user.test.d.ts → L/user.test.d.ts} +0 -0
- /package/dist/util/{fixRaw.d.ts → normalizeRaw.d.ts} +0 -0
- /package/util/{fixRaw.ts → normalizeRaw.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provide.js","sourceRoot":"","sources":["../../L/provide.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,MAAmC,EACnC,EAAE,CACJ,CACE,CAA4B,EACwB,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA"}
|
package/dist/L/self.d.ts
ADDED
package/dist/L/self.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"self.js","sourceRoot":"","sources":["../../L/self.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE1C,MAAM,CAAC,MAAM,IAAI,GAAgC,OAAO,CAAC,UAAU,CAAS,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA"}
|
package/dist/L/send.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import type { Envelope } from "../Envelope.ts";
|
|
3
|
+
import type { Thread } from "../Thread.ts";
|
|
4
|
+
import type { ExtractE, ExtractR } from "../util/extract.ts";
|
|
5
|
+
import { type TaggableArg0, type TaggableArgRest } from "../util/Taggable.ts";
|
|
6
|
+
export declare const send: (envelope: Envelope) => <A0 extends TaggableArg0, ARest extends TaggableArgRest<A0>>(a0: A0, ...aRest: ARest) => Effect.Effect<void, ExtractE<A0 | ARest[number]>, Thread | ExtractR<A0 | ARest[number]>>;
|
package/dist/L/send.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import * as AiInput from "@effect/ai/AiInput";
|
|
2
|
+
import * as Array from "effect/Array";
|
|
3
|
+
import * as Effect from "effect/Effect";
|
|
4
|
+
import { raw } from "../util/raw.js";
|
|
5
|
+
import { normalize } from "../util/Taggable.js";
|
|
6
|
+
import { append } from "./append.js";
|
|
7
|
+
import { self } from "./self.js";
|
|
8
|
+
export const send = (envelope) => Effect.fnUntraced(function* (a0, ...aRest) {
|
|
9
|
+
const text = yield* normalize(a0, ...aRest);
|
|
10
|
+
if (!text)
|
|
11
|
+
return;
|
|
12
|
+
const { to, cc, bcc } = envelope;
|
|
13
|
+
const ccHeader = cc?.length
|
|
14
|
+
? yield* raw `; ${Effect.all(cc).pipe(Effect.map(Array.join(", ")))}`
|
|
15
|
+
: "";
|
|
16
|
+
const headers = raw `[FROM: ${self}${ccHeader}]`;
|
|
17
|
+
const knownRecipients = [...to ?? [], ...cc ?? []];
|
|
18
|
+
const program = append(AiInput.UserMessage.make({
|
|
19
|
+
parts: [
|
|
20
|
+
AiInput.TextPart.make({
|
|
21
|
+
text: `${headers}\n${text}`,
|
|
22
|
+
}),
|
|
23
|
+
],
|
|
24
|
+
}));
|
|
25
|
+
for (const recipient of knownRecipients) {
|
|
26
|
+
yield* program.pipe(Effect.provideService(self, recipient));
|
|
27
|
+
}
|
|
28
|
+
if (bcc?.length) {
|
|
29
|
+
for (const hiddenRecipient of bcc) {
|
|
30
|
+
yield* program.pipe(Effect.provideService(self, hiddenRecipient));
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=send.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send.js","sourceRoot":"","sources":["../../L/send.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAKvC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AACpC,OAAO,EAAE,SAAS,EAA2C,MAAM,qBAAqB,CAAA;AACxF,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,QAAkB,EAAE,EAAE,CACzC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAIzB,EAAM,EACN,GAAG,KAAY;IAYf,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,CAAA;IAC3C,IAAI,CAAC,IAAI;QAAE,OAAM;IACjB,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAA;IAChC,MAAM,QAAQ,GAAG,EAAE,EAAE,MAAM;QACzB,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAA,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;QACpE,CAAC,CAAC,EAAE,CAAA;IACN,MAAM,OAAO,GAAG,GAAG,CAAA,UAAU,IAAI,GAAG,QAAQ,GAAG,CAAA;IAC/C,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAA;IAClD,MAAM,OAAO,GAAG,MAAM,CACpB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;QACvB,KAAK,EAAE;YACL,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACpB,IAAI,EAAE,GAAG,OAAO,KAAK,IAAI,EAAE;aAC5B,CAAC;SACH;KACF,CAAC,CACH,CAAA;IACD,KAAK,MAAM,SAAS,IAAI,eAAe,EAAE,CAAC;QACxC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAA;IAC7D,CAAC;IACD,IAAI,GAAG,EAAE,MAAM,EAAE,CAAC;QAChB,KAAK,MAAM,eAAe,IAAI,GAAG,EAAE,CAAC;YAClC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAA;QACnE,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Option from "effect/Option";
|
|
3
|
+
import { type TaggableArg0, type TaggableArgRest } from "../util/Taggable.ts";
|
|
4
|
+
/** Set the thread's system instruction. */
|
|
5
|
+
export declare const system: <A0 extends TaggableArg0, ARest extends TaggableArgRest<A0>>(a0: A0, ...aRest: ARest) => Effect.Effect<Option.Option<string>, import("../util/extract.ts").ExtractE<A0 | ARest[number]>, import("../Thread.ts").Thread | import("../util/extract.ts").ExtractR<A0 | ARest[number]>>;
|
package/dist/L/system.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Option from "effect/Option";
|
|
3
|
+
import { SystemSetEvent } from "../LEvent.js";
|
|
4
|
+
import { normalize } from "../util/Taggable.js";
|
|
5
|
+
import { self } from "./self.js";
|
|
6
|
+
/** Set the thread's system instruction. */
|
|
7
|
+
export const system = Effect.fnUntraced(function* (a0, ...aRest) {
|
|
8
|
+
const { state, events } = yield* self;
|
|
9
|
+
const { system } = state;
|
|
10
|
+
state.system = a0 ? Option.some(yield* normalize(a0, ...aRest)) : Option.none();
|
|
11
|
+
yield* events.publish(new SystemSetEvent({ system: state.system }));
|
|
12
|
+
return system;
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=system.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system.js","sourceRoot":"","sources":["../../L/system.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,SAAS,EAA2C,MAAM,qBAAqB,CAAA;AACxF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,2CAA2C;AAC3C,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAI/C,EAAM,EACN,GAAG,KAAY;IAMf,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAA;IACrC,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;IACxB,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;IAC/E,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,cAAc,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IACnE,OAAO,MAAM,CAAA;AACf,CAAC,CAAC,CAAA"}
|
package/dist/L/thread.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Option from "effect/Option";
|
|
3
|
+
import * as PubSub from "effect/PubSub";
|
|
4
|
+
import { Thread, ThreadId, ThreadState } from "../Thread.js";
|
|
5
|
+
import { self } from "./self.js";
|
|
6
|
+
export const thread = Effect.gen(function* () {
|
|
7
|
+
return Thread({
|
|
8
|
+
id: ThreadId.make(crypto.randomUUID()),
|
|
9
|
+
parent: yield* Effect.serviceOption(self),
|
|
10
|
+
events: yield* PubSub.unbounded(),
|
|
11
|
+
state: ThreadState.default(),
|
|
12
|
+
tools: Option.none(),
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=thread.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thread.js","sourceRoot":"","sources":["../../L/thread.ts"],"names":[],"mappings":"AAAA,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,QAAQ,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,MAAM,CAAC,MAAM,MAAM,GAA0B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC/D,OAAO,MAAM,CAAC;QACZ,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACtC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;QACzC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,EAAU;QACzC,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE;QAC5B,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE;KACrB,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import * as AiToolkit from "@effect/ai/AiToolkit";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import type { NeverTool } from "../util/NeverTool.ts";
|
|
4
|
+
export declare const toolkit: Effect.Effect<AiToolkit.ToHandler<NeverTool>, never, import("../Thread.ts").Thread | import("@effect/ai/AiTool").Handler<string>>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as AiToolkit from "@effect/ai/AiToolkit";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import * as Option from "effect/Option";
|
|
4
|
+
import { self } from "./self.js";
|
|
5
|
+
export const toolkit = self.pipe(Effect.flatMap(({ tools }) => Option.match(tools, {
|
|
6
|
+
onSome: (tools) => AiToolkit.make(...tools),
|
|
7
|
+
onNone: () => AiToolkit.make(),
|
|
8
|
+
})));
|
|
9
|
+
//# sourceMappingURL=toolkit.js.map
|
|
@@ -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"}
|
package/dist/L/user.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import type { Thread } from "../Thread.ts";
|
|
3
|
+
import type { ExtractE, ExtractR } from "../util/extract.ts";
|
|
4
|
+
import { type TaggableArg0, type TaggableArgRest } from "../util/Taggable.ts";
|
|
5
|
+
/** Append a user message to the thread. */
|
|
6
|
+
export declare const user: <A0 extends TaggableArg0, ARest extends TaggableArgRest<A0>>(a0: A0, ...aRest: ARest) => Effect.Effect<void, ExtractE<A0 | ARest[number]>, ExtractR<A0 | ARest[number]> | Thread>;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { TextPart, UserMessage } from "@effect/ai/AiInput";
|
|
2
2
|
import * as Effect from "effect/Effect";
|
|
3
|
+
import { normalize } from "../util/Taggable.js";
|
|
3
4
|
import { append } from "./append.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export const user = (a0, ...aRest) => normalize(a0, aRest).pipe(Effect.flatMap((text) => text
|
|
5
|
+
/** Append a user message to the thread. */
|
|
6
|
+
export const user = (a0, ...aRest) => normalize(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,SAAS,EAA2C,MAAM,qBAAqB,CAAA;AACxF,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,2CAA2C;AAC3C,MAAM,CAAC,MAAM,IAAI,GAAG,CAIlB,EAAM,EACN,GAAG,KAAY,EAKf,EAAE,CACF,SAAS,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAC1B,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,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,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,OAAO,CACL,MAAM,CACP,CACF,CAAC,CAAA"}
|
package/dist/LEvent.d.ts
CHANGED
|
@@ -1,26 +1,154 @@
|
|
|
1
1
|
import * as Schema from "effect/Schema";
|
|
2
|
-
declare const
|
|
3
|
-
|
|
4
|
-
}
|
|
5
|
-
declare const MessagesAppended_base: Schema.TaggedClass<MessagesAppended, "MessagesAppended", {
|
|
6
|
-
readonly _tag: Schema.tag<"MessagesAppended">;
|
|
2
|
+
declare const SystemSetEvent_base: Schema.TaggedClass<SystemSetEvent, "system_set", {
|
|
3
|
+
readonly _tag: Schema.tag<"system_set">;
|
|
7
4
|
} & {
|
|
8
|
-
|
|
5
|
+
system: Schema.Option<typeof Schema.String>;
|
|
9
6
|
}>;
|
|
10
|
-
/**
|
|
11
|
-
export declare class
|
|
7
|
+
/** Event in which the thread's system is set to a new string. */
|
|
8
|
+
export declare class SystemSetEvent extends SystemSetEvent_base {
|
|
12
9
|
}
|
|
13
|
-
declare const
|
|
14
|
-
readonly _tag: Schema.tag<"
|
|
10
|
+
declare const MessagesAppendedEvent_base: Schema.TaggedClass<MessagesAppendedEvent, "messages_appended", {
|
|
11
|
+
readonly _tag: Schema.tag<"messages_appended">;
|
|
15
12
|
} & {
|
|
16
|
-
|
|
13
|
+
messages: Schema.Array$<Schema.Union<[typeof import("@effect/ai/AiInput").UserMessage, typeof import("@effect/ai/AiInput").AssistantMessage, typeof import("@effect/ai/AiInput").ToolMessage]>>;
|
|
14
|
+
}>;
|
|
15
|
+
/** Event in which one or more messages were added to the thread. */
|
|
16
|
+
export declare class MessagesAppendedEvent extends MessagesAppendedEvent_base {
|
|
17
|
+
}
|
|
18
|
+
declare const ThreadClearedEvent_base: Schema.TaggedClass<ThreadClearedEvent, "messages_cleared", {
|
|
19
|
+
readonly _tag: Schema.tag<"messages_cleared">;
|
|
17
20
|
}>;
|
|
18
|
-
/**
|
|
19
|
-
export declare class
|
|
21
|
+
/** Event in which the thread is cleared of messages. */
|
|
22
|
+
export declare class ThreadClearedEvent extends ThreadClearedEvent_base {
|
|
20
23
|
}
|
|
21
24
|
export type LEvent = typeof LEvent["Type"];
|
|
22
25
|
export declare const LEvent: Schema.Union<[
|
|
23
|
-
typeof
|
|
24
|
-
typeof
|
|
26
|
+
typeof SystemSetEvent,
|
|
27
|
+
typeof MessagesAppendedEvent,
|
|
28
|
+
typeof ThreadClearedEvent
|
|
25
29
|
]>;
|
|
30
|
+
export declare const encodeLEvent: (a: SystemSetEvent | MessagesAppendedEvent | ThreadClearedEvent, overrideOptions?: import("effect/SchemaAST").ParseOptions) => import("effect/Effect").Effect<{
|
|
31
|
+
readonly _tag: "system_set";
|
|
32
|
+
readonly system: {
|
|
33
|
+
readonly _tag: "None";
|
|
34
|
+
} | {
|
|
35
|
+
readonly _tag: "Some";
|
|
36
|
+
readonly value: string;
|
|
37
|
+
};
|
|
38
|
+
} | {
|
|
39
|
+
readonly _tag: "messages_appended";
|
|
40
|
+
readonly messages: readonly ({
|
|
41
|
+
readonly _tag: "UserMessage";
|
|
42
|
+
readonly parts: readonly ({
|
|
43
|
+
readonly _tag: "TextPart";
|
|
44
|
+
readonly text: string;
|
|
45
|
+
} | {
|
|
46
|
+
readonly _tag: "ImagePart";
|
|
47
|
+
readonly data: string;
|
|
48
|
+
readonly mediaType?: string | undefined;
|
|
49
|
+
} | {
|
|
50
|
+
readonly _tag: "ImageUrlPart";
|
|
51
|
+
readonly url: string;
|
|
52
|
+
} | {
|
|
53
|
+
readonly _tag: "FilePart";
|
|
54
|
+
readonly data: string;
|
|
55
|
+
readonly name?: string | undefined;
|
|
56
|
+
readonly mediaType?: string | undefined;
|
|
57
|
+
} | {
|
|
58
|
+
readonly _tag: "FileUrlPart";
|
|
59
|
+
readonly url: string;
|
|
60
|
+
})[];
|
|
61
|
+
readonly userName?: string | undefined;
|
|
62
|
+
} | {
|
|
63
|
+
readonly _tag: "AssistantMessage";
|
|
64
|
+
readonly parts: readonly ({
|
|
65
|
+
readonly _tag: "TextPart";
|
|
66
|
+
readonly text: string;
|
|
67
|
+
} | {
|
|
68
|
+
readonly _tag: "ReasoningPart";
|
|
69
|
+
readonly reasoningText: string;
|
|
70
|
+
readonly signature?: string | undefined;
|
|
71
|
+
} | {
|
|
72
|
+
readonly _tag: "RedactedReasoningPart";
|
|
73
|
+
readonly redactedText: string;
|
|
74
|
+
} | {
|
|
75
|
+
readonly _tag: "ToolCallPart";
|
|
76
|
+
readonly name: string;
|
|
77
|
+
readonly id: string;
|
|
78
|
+
readonly params: unknown;
|
|
79
|
+
})[];
|
|
80
|
+
} | {
|
|
81
|
+
readonly _tag: "ToolMessage";
|
|
82
|
+
readonly parts: readonly {
|
|
83
|
+
readonly _tag: "ToolCallResultPart";
|
|
84
|
+
readonly name: string;
|
|
85
|
+
readonly id: string;
|
|
86
|
+
readonly result: unknown;
|
|
87
|
+
}[];
|
|
88
|
+
})[];
|
|
89
|
+
} | {
|
|
90
|
+
readonly _tag: "messages_cleared";
|
|
91
|
+
}, import("effect/ParseResult").ParseError, never>;
|
|
92
|
+
export declare const decodeLEvent: (i: {
|
|
93
|
+
readonly _tag: "system_set";
|
|
94
|
+
readonly system: {
|
|
95
|
+
readonly _tag: "None";
|
|
96
|
+
} | {
|
|
97
|
+
readonly _tag: "Some";
|
|
98
|
+
readonly value: string;
|
|
99
|
+
};
|
|
100
|
+
} | {
|
|
101
|
+
readonly _tag: "messages_appended";
|
|
102
|
+
readonly messages: readonly ({
|
|
103
|
+
readonly _tag: "UserMessage";
|
|
104
|
+
readonly parts: readonly ({
|
|
105
|
+
readonly _tag: "TextPart";
|
|
106
|
+
readonly text: string;
|
|
107
|
+
} | {
|
|
108
|
+
readonly _tag: "ImagePart";
|
|
109
|
+
readonly data: string;
|
|
110
|
+
readonly mediaType?: string | undefined;
|
|
111
|
+
} | {
|
|
112
|
+
readonly _tag: "ImageUrlPart";
|
|
113
|
+
readonly url: string;
|
|
114
|
+
} | {
|
|
115
|
+
readonly _tag: "FilePart";
|
|
116
|
+
readonly data: string;
|
|
117
|
+
readonly name?: string | undefined;
|
|
118
|
+
readonly mediaType?: string | undefined;
|
|
119
|
+
} | {
|
|
120
|
+
readonly _tag: "FileUrlPart";
|
|
121
|
+
readonly url: string;
|
|
122
|
+
})[];
|
|
123
|
+
readonly userName?: string | undefined;
|
|
124
|
+
} | {
|
|
125
|
+
readonly _tag: "AssistantMessage";
|
|
126
|
+
readonly parts: readonly ({
|
|
127
|
+
readonly _tag: "TextPart";
|
|
128
|
+
readonly text: string;
|
|
129
|
+
} | {
|
|
130
|
+
readonly _tag: "ReasoningPart";
|
|
131
|
+
readonly reasoningText: string;
|
|
132
|
+
readonly signature?: string | undefined;
|
|
133
|
+
} | {
|
|
134
|
+
readonly _tag: "RedactedReasoningPart";
|
|
135
|
+
readonly redactedText: string;
|
|
136
|
+
} | {
|
|
137
|
+
readonly _tag: "ToolCallPart";
|
|
138
|
+
readonly name: string;
|
|
139
|
+
readonly id: string;
|
|
140
|
+
readonly params: unknown;
|
|
141
|
+
})[];
|
|
142
|
+
} | {
|
|
143
|
+
readonly _tag: "ToolMessage";
|
|
144
|
+
readonly parts: readonly {
|
|
145
|
+
readonly _tag: "ToolCallResultPart";
|
|
146
|
+
readonly name: string;
|
|
147
|
+
readonly id: string;
|
|
148
|
+
readonly result: unknown;
|
|
149
|
+
}[];
|
|
150
|
+
})[];
|
|
151
|
+
} | {
|
|
152
|
+
readonly _tag: "messages_cleared";
|
|
153
|
+
}, overrideOptions?: import("effect/SchemaAST").ParseOptions) => import("effect/Effect").Effect<SystemSetEvent | MessagesAppendedEvent | ThreadClearedEvent, import("effect/ParseResult").ParseError, never>;
|
|
26
154
|
export {};
|
package/dist/LEvent.js
CHANGED
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
import { Message } from "@effect/ai/AiInput";
|
|
2
2
|
import * as Schema from "effect/Schema";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export class MessagesAppended extends Schema.TaggedClass("MessagesAppended")("MessagesAppended", {
|
|
7
|
-
messages: Messages,
|
|
3
|
+
/** Event in which the thread's system is set to a new string. */
|
|
4
|
+
export class SystemSetEvent extends Schema.TaggedClass("SystemSetEvent")("system_set", {
|
|
5
|
+
system: Schema.Option(Schema.String),
|
|
8
6
|
}) {
|
|
9
7
|
}
|
|
10
|
-
/**
|
|
11
|
-
export class
|
|
12
|
-
|
|
8
|
+
/** Event in which one or more messages were added to the thread. */
|
|
9
|
+
export class MessagesAppendedEvent extends Schema.TaggedClass("MessagesAppendedEvent")("messages_appended", {
|
|
10
|
+
messages: Schema.Array(Message),
|
|
13
11
|
}) {
|
|
14
12
|
}
|
|
15
|
-
|
|
13
|
+
/** Event in which the thread is cleared of messages. */
|
|
14
|
+
export class ThreadClearedEvent extends Schema.TaggedClass("MessagesClearedEvent")("messages_cleared", {}) {
|
|
15
|
+
}
|
|
16
|
+
export const LEvent = Schema.Union(SystemSetEvent, MessagesAppendedEvent, ThreadClearedEvent);
|
|
17
|
+
export const encodeLEvent = Schema.encode(LEvent);
|
|
18
|
+
export const decodeLEvent = Schema.decode(LEvent);
|
|
16
19
|
//# sourceMappingURL=LEvent.js.map
|
package/dist/LEvent.js.map
CHANGED
|
@@ -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,
|
|
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,iEAAiE;AACjE,MAAM,OAAO,cAAe,SAAQ,MAAM,CAAC,WAAW,CAAiB,gBAAgB,CAAC,CAAC,YAAY,EAAE;IACrG,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;CACrC,CAAC;CAAG;AAEL,oEAAoE;AACpE,MAAM,OAAO,qBACX,SAAQ,MAAM,CAAC,WAAW,CAAwB,uBAAuB,CAAC,CAAC,mBAAmB,EAAE;IAC9F,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;CAChC,CAAC;CACF;AAEF,wDAAwD;AACxD,MAAM,OAAO,kBACX,SAAQ,MAAM,CAAC,WAAW,CAAqB,sBAAsB,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC;CAC9F;AAGF,MAAM,CAAC,MAAM,MAAM,GAId,MAAM,CAAC,KAAK,CACf,cAAc,EACd,qBAAqB,EACrB,kBAAkB,CACnB,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AACjD,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA"}
|
package/dist/Thread.d.ts
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import * as Brand from "effect/Brand";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import * as Option from "effect/Option";
|
|
4
|
+
import * as PubSub from "effect/PubSub";
|
|
5
|
+
import * as Schema from "effect/Schema";
|
|
6
|
+
import type { Mutable } from "effect/Types";
|
|
7
|
+
import { line } from "./L/line.ts";
|
|
8
|
+
import type { LEvent } from "./LEvent.ts";
|
|
9
|
+
import type { NeverTool } from "./util/NeverTool.ts";
|
|
10
|
+
export declare const ThreadIdTypeId: unique symbol;
|
|
11
|
+
export type ThreadId = string & Brand.Brand<typeof ThreadIdTypeId>;
|
|
12
|
+
export declare const ThreadId: Schema.brand<typeof Schema.String, typeof ThreadIdTypeId>;
|
|
13
|
+
declare const ThreadState_base: Schema.Class<ThreadState, {
|
|
14
|
+
/** The system prompt to be passed along to the model. */
|
|
15
|
+
system: Schema.Option<typeof Schema.String>;
|
|
16
|
+
/** The messages based off of which the model infers the next message. */
|
|
17
|
+
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]>>>;
|
|
18
|
+
}, Schema.Struct.Encoded<{
|
|
19
|
+
/** The system prompt to be passed along to the model. */
|
|
20
|
+
system: Schema.Option<typeof Schema.String>;
|
|
21
|
+
/** The messages based off of which the model infers the next message. */
|
|
22
|
+
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]>>>;
|
|
23
|
+
}>, never, {
|
|
24
|
+
readonly system: Option.Option<string>;
|
|
25
|
+
} & {
|
|
26
|
+
readonly messages: (import("@effect/ai/AiInput").UserMessage | import("@effect/ai/AiInput").AssistantMessage | import("@effect/ai/AiInput").ToolMessage)[];
|
|
27
|
+
}, {}, {}>;
|
|
28
|
+
export declare class ThreadState extends ThreadState_base {
|
|
29
|
+
static default: () => ThreadState;
|
|
30
|
+
}
|
|
31
|
+
export interface ThreadInit {
|
|
32
|
+
/** The unique id of the thread. */
|
|
33
|
+
readonly id: ThreadId;
|
|
34
|
+
/** The parent thread. */
|
|
35
|
+
readonly parent: Option.Option<Thread>;
|
|
36
|
+
/** The pubsub with which thread-specific events are emitted. */
|
|
37
|
+
readonly events: PubSub.PubSub<LEvent>;
|
|
38
|
+
/** The state of the current thread. */
|
|
39
|
+
readonly state: Mutable<ThreadState>;
|
|
40
|
+
/** The tools to be made accessible to the model. */
|
|
41
|
+
tools: Option.Option<Set<NeverTool>>;
|
|
42
|
+
}
|
|
43
|
+
export declare const ThreadTypeId: unique symbol;
|
|
44
|
+
export type ThreadTypeId = typeof ThreadTypeId;
|
|
45
|
+
interface ThreadMembers extends ThreadInit {
|
|
46
|
+
readonly [ThreadTypeId]: ThreadTypeId;
|
|
47
|
+
}
|
|
48
|
+
/** A conversation isolate. */
|
|
49
|
+
export interface Thread extends line<Thread>, ThreadMembers, Effect.Effect<ThreadId> {
|
|
50
|
+
}
|
|
51
|
+
export declare const Thread: (init: ThreadInit) => Thread;
|
|
52
|
+
export {};
|
package/dist/Thread.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Message } from "@effect/ai/AiInput";
|
|
2
|
+
import * as Brand from "effect/Brand";
|
|
3
|
+
import * as Effect from "effect/Effect";
|
|
4
|
+
import * as Option from "effect/Option";
|
|
5
|
+
import * as PubSub from "effect/PubSub";
|
|
6
|
+
import * as Schema from "effect/Schema";
|
|
7
|
+
import { line } from "./L/line.js";
|
|
8
|
+
import { self } from "./L/self.js";
|
|
9
|
+
import { prefix } from "./util/prefix.js";
|
|
10
|
+
export const ThreadIdTypeId = Symbol.for(prefix("ThreadNameTypeId"));
|
|
11
|
+
export const ThreadId = Schema.String.pipe(Schema.brand(ThreadIdTypeId));
|
|
12
|
+
export class ThreadState extends Schema.Class(prefix("ThreadState"))({
|
|
13
|
+
/** The system prompt to be passed along to the model. */
|
|
14
|
+
system: Schema.Option(Schema.String),
|
|
15
|
+
/** The messages based off of which the model infers the next message. */
|
|
16
|
+
messages: Schema.Array(Message).pipe(Schema.mutable),
|
|
17
|
+
}) {
|
|
18
|
+
static default = () => ThreadState.make({
|
|
19
|
+
system: Option.none(),
|
|
20
|
+
messages: [],
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
export const ThreadTypeId = Symbol.for(prefix("Thread"));
|
|
24
|
+
export const Thread = (init) => {
|
|
25
|
+
const members = {
|
|
26
|
+
[ThreadTypeId]: ThreadTypeId,
|
|
27
|
+
...init,
|
|
28
|
+
};
|
|
29
|
+
const self_ = Object.assign(((...args) => line(...args).pipe(Effect.provideService(self, self_))), Effect.succeed(init.id), members);
|
|
30
|
+
return self_;
|
|
31
|
+
};
|
|
32
|
+
//# 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,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAGlC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAEzC,MAAM,CAAC,MAAM,cAAc,GAAkB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAA;AAEnF,MAAM,CAAC,MAAM,QAAQ,GAA8D,MAAM,CAAC,MAAM,CAAC,IAAI,CACnG,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAC7B,CAAA;AAED,MAAM,OAAO,WAAY,SAAQ,MAAM,CAAC,KAAK,CAAc,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;IAChF,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,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;QACrB,QAAQ,EAAE,EAAE;KACb,CAAC,CAAA;;AAgBN,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;KACgB,CAAA;IACzB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CACzB,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAwB,EAC5F,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EACvB,OAAO,CACE,CAAA;IACX,OAAO,KAAK,CAAA;AACd,CAAC,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
export *
|
|
1
|
+
export * from "./Digest.ts";
|
|
2
|
+
export * from "./Envelope.ts";
|
|
3
|
+
export * as F from "./F/F.ts";
|
|
4
|
+
export * as L from "./L/L.ts";
|
|
2
5
|
export * from "./LEvent.ts";
|
|
3
|
-
export *
|
|
4
|
-
export * from "./
|
|
6
|
+
export * from "./Thread.ts";
|
|
7
|
+
export * as messageCodec from "./util/messageCodec.ts";
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
export *
|
|
1
|
+
export * from "./Digest.js";
|
|
2
|
+
export * from "./Envelope.js";
|
|
3
|
+
export * as F from "./F/F.js";
|
|
4
|
+
export * as L from "./L/L.js";
|
|
2
5
|
export * from "./LEvent.js";
|
|
3
|
-
export *
|
|
4
|
-
export * from "./
|
|
6
|
+
export * from "./Thread.js";
|
|
7
|
+
export * as messageCodec from "./util/messageCodec.js";
|
|
5
8
|
//# 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,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,OAAO,KAAK,CAAC,MAAM,UAAU,CAAA;AAC7B,OAAO,KAAK,CAAC,MAAM,UAAU,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,OAAO,KAAK,YAAY,MAAM,wBAAwB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -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)>;
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect";
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
export const coalesceModels = Effect.fn(function* (effect, models) {
|
|
2
|
+
import * as L from "../L/L.js";
|
|
3
|
+
export const coalesce = Effect.fn(function* (effect, models) {
|
|
5
4
|
const all = yield* Effect.all(models.map((model) => effect.pipe(Effect.provide(model))));
|
|
6
|
-
yield* user `
|
|
5
|
+
yield* L.user `
|
|
7
6
|
Coalesce the following items into a single item:
|
|
8
7
|
|
|
9
8
|
---
|
|
10
9
|
|
|
11
10
|
${all.map((item) => JSON.stringify(item, null, 2)).join("\n\n---")}
|
|
12
11
|
`;
|
|
13
|
-
return yield* assistant;
|
|
12
|
+
return yield* L.assistant;
|
|
14
13
|
});
|
|
15
|
-
//# sourceMappingURL=
|
|
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.line(L.user `
|
|
8
|
+
Which of the following descriptions best matches the current conversation?
|
|
9
|
+
|
|
10
|
+
- ${descriptions.join("\n -")}
|
|
11
|
+
`, L.assistantSchema(Schema.Literal(...descriptions))).pipe(L.provide(L.branch));
|
|
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,IAAI,CAC/B,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,CAAC,IAAI,CACJ,CAAC,CAAC,OAAO,CACP,CAAC,CAAC,MAAM,CACT,CACF,CAAA;IACD,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAE,CAAA;AACpC,CAAC,CAAC,CAAA"}
|