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