liminal 0.7.0 → 0.8.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 +74 -4
- package/Strand.ts +46 -0
- package/dist/L.d.ts +17 -4
- package/dist/L.js +53 -4
- package/dist/L.js.map +1 -1
- package/dist/Strand.d.ts +25 -0
- package/dist/Strand.js +24 -0
- package/dist/Strand.js.map +1 -0
- package/dist/index.d.ts +1 -2
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/index.ts +1 -2
- package/package.json +6 -4
- package/Context.ts +0 -10
- package/assistant.ts +0 -52
- package/dist/Context.d.ts +0 -14
- package/dist/Context.js +0 -11
- package/dist/Context.js.map +0 -1
- package/dist/assistant.d.ts +0 -9
- package/dist/assistant.js +0 -44
- package/dist/assistant.js.map +0 -1
- package/dist/messages.d.ts +0 -4
- package/dist/messages.js +0 -5
- package/dist/messages.js.map +0 -1
- package/dist/set.d.ts +0 -3
- package/dist/set.js +0 -11
- package/dist/set.js.map +0 -1
- package/dist/strand.d.ts +0 -15
- package/dist/strand.js +0 -19
- package/dist/strand.js.map +0 -1
- package/dist/user.d.ts +0 -6
- package/dist/user.js +0 -16
- package/dist/user.js.map +0 -1
- package/messages.ts +0 -6
- package/set.ts +0 -11
- package/strand.ts +0 -38
- package/user.ts +0 -22
package/index.ts
CHANGED
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "0.
|
|
6
|
+
"version": "0.8.0",
|
|
7
7
|
"license": "Apache-2.0",
|
|
8
8
|
"repository": {
|
|
9
9
|
"type": "git",
|
|
@@ -13,10 +13,12 @@
|
|
|
13
13
|
"type": "module",
|
|
14
14
|
"description": "Primitives for composing conversation trees with language models and TypeScript iterators.",
|
|
15
15
|
"exports": {
|
|
16
|
-
".": "./dist/index.js"
|
|
16
|
+
".": "./dist/index.js",
|
|
17
|
+
"./L": "./dist/L.js",
|
|
18
|
+
"./Strand": "./dist/Strand.js"
|
|
17
19
|
},
|
|
18
20
|
"peerDependencies": {
|
|
19
|
-
"@effect/ai": "^0.18.
|
|
20
|
-
"effect": "^3.
|
|
21
|
+
"@effect/ai": "^0.18.16",
|
|
22
|
+
"effect": "^3.17.2"
|
|
21
23
|
}
|
|
22
24
|
}
|
package/Context.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import * as AiInput from "@effect/ai/AiInput"
|
|
2
|
-
import * as AiToolkit from "@effect/ai/AiToolkit"
|
|
3
|
-
import * as Context from "effect/Context"
|
|
4
|
-
import * as Ref from "effect/Ref"
|
|
5
|
-
|
|
6
|
-
export class MessagesRef extends Context.Tag("liminal/Messages")<MessagesRef, Ref.Ref<Array<AiInput.Message>>>() {}
|
|
7
|
-
|
|
8
|
-
export class System extends Context.Tag("liminal/System")<System, string | undefined>() {}
|
|
9
|
-
|
|
10
|
-
export class Toolkit extends Context.Tag("liminal/Tools")<Toolkit, AiToolkit.AiToolkit<any> | undefined>() {}
|
package/assistant.ts
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import type { AiError } from "@effect/ai/AiError"
|
|
2
|
-
import * as AiInput from "@effect/ai/AiInput"
|
|
3
|
-
import * as AiLanguageModel from "@effect/ai/AiLanguageModel"
|
|
4
|
-
import * as Effect from "effect/Effect"
|
|
5
|
-
import * as Option from "effect/Option"
|
|
6
|
-
import * as Ref from "effect/Ref"
|
|
7
|
-
import type * as Schema from "effect/Schema"
|
|
8
|
-
import { MessagesRef, System, Toolkit } from "./Context.ts"
|
|
9
|
-
|
|
10
|
-
export const assistant: {
|
|
11
|
-
(): Effect.Effect<string, AiError, AiLanguageModel.AiLanguageModel | MessagesRef | System>
|
|
12
|
-
<O, I>(
|
|
13
|
-
schema: Schema.Schema<O, I, never>,
|
|
14
|
-
): Effect.Effect<O, AiError, AiLanguageModel.AiLanguageModel | MessagesRef | System>
|
|
15
|
-
} = Effect.fn(function*(schema?: Schema.Schema<any>) {
|
|
16
|
-
const model = yield* AiLanguageModel.AiLanguageModel
|
|
17
|
-
const messagesRef = yield* MessagesRef
|
|
18
|
-
const toolkitOption = yield* Effect.serviceOption(Toolkit)
|
|
19
|
-
const prompt = yield* Ref.get(messagesRef)
|
|
20
|
-
const system = yield* System
|
|
21
|
-
if (schema) {
|
|
22
|
-
const response = yield* model.generateObject({
|
|
23
|
-
system,
|
|
24
|
-
schema,
|
|
25
|
-
prompt,
|
|
26
|
-
})
|
|
27
|
-
const { value, text } = response
|
|
28
|
-
yield* appendMessage(text)
|
|
29
|
-
return value
|
|
30
|
-
}
|
|
31
|
-
const response = yield* model.generateText({
|
|
32
|
-
system,
|
|
33
|
-
prompt,
|
|
34
|
-
...Option.isSome(toolkitOption)
|
|
35
|
-
? toolkitOption.value
|
|
36
|
-
? { toolkit: toolkitOption.value }
|
|
37
|
-
: {}
|
|
38
|
-
: {},
|
|
39
|
-
})
|
|
40
|
-
const { text } = response
|
|
41
|
-
yield* appendMessage(text)
|
|
42
|
-
return text
|
|
43
|
-
|
|
44
|
-
function* appendMessage(text: string) {
|
|
45
|
-
yield* Ref.update(messagesRef, (prev) => [
|
|
46
|
-
...prev,
|
|
47
|
-
new AiInput.AssistantMessage({
|
|
48
|
-
parts: [new AiInput.TextPart({ text })],
|
|
49
|
-
}),
|
|
50
|
-
])
|
|
51
|
-
}
|
|
52
|
-
})
|
package/dist/Context.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import * as AiInput from "@effect/ai/AiInput";
|
|
2
|
-
import * as AiToolkit from "@effect/ai/AiToolkit";
|
|
3
|
-
import * as Context from "effect/Context";
|
|
4
|
-
import * as Ref from "effect/Ref";
|
|
5
|
-
declare const MessagesRef_base: Context.TagClass<MessagesRef, "liminal/Messages", Ref.Ref<(AiInput.UserMessage | AiInput.AssistantMessage | AiInput.ToolMessage)[]>>;
|
|
6
|
-
export declare class MessagesRef extends MessagesRef_base {
|
|
7
|
-
}
|
|
8
|
-
declare const System_base: Context.TagClass<System, "liminal/System", string | undefined>;
|
|
9
|
-
export declare class System extends System_base {
|
|
10
|
-
}
|
|
11
|
-
declare const Toolkit_base: Context.TagClass<Toolkit, "liminal/Tools", AiToolkit.AiToolkit<any> | undefined>;
|
|
12
|
-
export declare class Toolkit extends Toolkit_base {
|
|
13
|
-
}
|
|
14
|
-
export {};
|
package/dist/Context.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import * as AiInput from "@effect/ai/AiInput";
|
|
2
|
-
import * as AiToolkit from "@effect/ai/AiToolkit";
|
|
3
|
-
import * as Context from "effect/Context";
|
|
4
|
-
import * as Ref from "effect/Ref";
|
|
5
|
-
export class MessagesRef extends Context.Tag("liminal/Messages")() {
|
|
6
|
-
}
|
|
7
|
-
export class System extends Context.Tag("liminal/System")() {
|
|
8
|
-
}
|
|
9
|
-
export class Toolkit extends Context.Tag("liminal/Tools")() {
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=Context.js.map
|
package/dist/Context.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Context.js","sourceRoot":"","sources":["../Context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAA;AACjD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,GAAG,MAAM,YAAY,CAAA;AAEjC,MAAM,OAAO,WAAY,SAAQ,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAgD;CAAG;AAEnH,MAAM,OAAO,MAAO,SAAQ,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAA8B;CAAG;AAE1F,MAAM,OAAO,OAAQ,SAAQ,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAiD;CAAG"}
|
package/dist/assistant.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { AiError } from "@effect/ai/AiError";
|
|
2
|
-
import * as AiLanguageModel from "@effect/ai/AiLanguageModel";
|
|
3
|
-
import * as Effect from "effect/Effect";
|
|
4
|
-
import type * as Schema from "effect/Schema";
|
|
5
|
-
import { MessagesRef, System } from "./Context.ts";
|
|
6
|
-
export declare const assistant: {
|
|
7
|
-
(): Effect.Effect<string, AiError, AiLanguageModel.AiLanguageModel | MessagesRef | System>;
|
|
8
|
-
<O, I>(schema: Schema.Schema<O, I, never>): Effect.Effect<O, AiError, AiLanguageModel.AiLanguageModel | MessagesRef | System>;
|
|
9
|
-
};
|
package/dist/assistant.js
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import * as AiInput from "@effect/ai/AiInput";
|
|
2
|
-
import * as AiLanguageModel from "@effect/ai/AiLanguageModel";
|
|
3
|
-
import * as Effect from "effect/Effect";
|
|
4
|
-
import * as Option from "effect/Option";
|
|
5
|
-
import * as Ref from "effect/Ref";
|
|
6
|
-
import { MessagesRef, System, Toolkit } from "./Context.js";
|
|
7
|
-
export const assistant = Effect.fn(function* (schema) {
|
|
8
|
-
const model = yield* AiLanguageModel.AiLanguageModel;
|
|
9
|
-
const messagesRef = yield* MessagesRef;
|
|
10
|
-
const toolkitOption = yield* Effect.serviceOption(Toolkit);
|
|
11
|
-
const prompt = yield* Ref.get(messagesRef);
|
|
12
|
-
const system = yield* System;
|
|
13
|
-
if (schema) {
|
|
14
|
-
const response = yield* model.generateObject({
|
|
15
|
-
system,
|
|
16
|
-
schema,
|
|
17
|
-
prompt,
|
|
18
|
-
});
|
|
19
|
-
const { value, text } = response;
|
|
20
|
-
yield* appendMessage(text);
|
|
21
|
-
return value;
|
|
22
|
-
}
|
|
23
|
-
const response = yield* model.generateText({
|
|
24
|
-
system,
|
|
25
|
-
prompt,
|
|
26
|
-
...Option.isSome(toolkitOption)
|
|
27
|
-
? toolkitOption.value
|
|
28
|
-
? { toolkit: toolkitOption.value }
|
|
29
|
-
: {}
|
|
30
|
-
: {},
|
|
31
|
-
});
|
|
32
|
-
const { text } = response;
|
|
33
|
-
yield* appendMessage(text);
|
|
34
|
-
return text;
|
|
35
|
-
function* appendMessage(text) {
|
|
36
|
-
yield* Ref.update(messagesRef, (prev) => [
|
|
37
|
-
...prev,
|
|
38
|
-
new AiInput.AssistantMessage({
|
|
39
|
-
parts: [new AiInput.TextPart({ text })],
|
|
40
|
-
}),
|
|
41
|
-
]);
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
//# sourceMappingURL=assistant.js.map
|
package/dist/assistant.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"assistant.js","sourceRoot":"","sources":["../assistant.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,eAAe,MAAM,4BAA4B,CAAA;AAC7D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,GAAG,MAAM,YAAY,CAAA;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAE3D,MAAM,CAAC,MAAM,SAAS,GAKlB,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAC,MAA2B;IACjD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,eAAe,CAAA;IACpD,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,WAAW,CAAA;IACtC,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IAC1D,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAA;IAC5B,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC;YAC3C,MAAM;YACN,MAAM;YACN,MAAM;SACP,CAAC,CAAA;QACF,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAA;QAChC,KAAK,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;QAC1B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;QACzC,MAAM;QACN,MAAM;QACN,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;YAC7B,CAAC,CAAC,aAAa,CAAC,KAAK;gBACnB,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,KAAK,EAAE;gBAClC,CAAC,CAAC,EAAE;YACN,CAAC,CAAC,EAAE;KACP,CAAC,CAAA;IACF,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAA;IACzB,KAAK,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;IAC1B,OAAO,IAAI,CAAA;IAEX,QAAQ,CAAC,CAAC,aAAa,CAAC,IAAY;QAClC,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;YACvC,GAAG,IAAI;YACP,IAAI,OAAO,CAAC,gBAAgB,CAAC;gBAC3B,KAAK,EAAE,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;aACxC,CAAC;SACH,CAAC,CAAA;IACJ,CAAC;AACH,CAAC,CAAC,CAAA"}
|
package/dist/messages.d.ts
DELETED
package/dist/messages.js
DELETED
package/dist/messages.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../messages.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,GAAG,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE1C,MAAM,CAAC,MAAM,QAAQ,GAAsD,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA"}
|
package/dist/set.d.ts
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import * as Effect from "effect/Effect";
|
|
2
|
-
import { MessagesRef } from "./Context.ts";
|
|
3
|
-
export declare const set: (messages: Iterable<import("@effect/ai/AiInput").UserMessage | import("@effect/ai/AiInput").AssistantMessage | import("@effect/ai/AiInput").ToolMessage>) => Effect.Effect<(import("@effect/ai/AiInput").UserMessage | import("@effect/ai/AiInput").AssistantMessage | import("@effect/ai/AiInput").ToolMessage)[], never, MessagesRef>;
|
package/dist/set.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { Message } from "@effect/ai/AiInput";
|
|
2
|
-
import * as Effect from "effect/Effect";
|
|
3
|
-
import * as Ref from "effect/Ref";
|
|
4
|
-
import { MessagesRef } from "./Context.js";
|
|
5
|
-
export const set = Effect.fn(function* (messages) {
|
|
6
|
-
const messagesRef = yield* MessagesRef;
|
|
7
|
-
const previous = yield* Ref.get(messagesRef);
|
|
8
|
-
yield* Ref.set(messagesRef, [...messages]);
|
|
9
|
-
return previous;
|
|
10
|
-
});
|
|
11
|
-
//# sourceMappingURL=set.js.map
|
package/dist/set.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"set.js","sourceRoot":"","sources":["../set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,GAAG,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE1C,MAAM,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAC,QAA2B;IAChE,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,WAAW,CAAA;IACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IAC5C,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAA;IAC1C,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAC,CAAA"}
|
package/dist/strand.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import * as AiInput from "@effect/ai/AiInput";
|
|
2
|
-
import * as AiTool from "@effect/ai/AiTool";
|
|
3
|
-
import type * as AiToolkit from "@effect/ai/AiToolkit";
|
|
4
|
-
import * as Effect from "effect/Effect";
|
|
5
|
-
import { MessagesRef, System } from "./Context.ts";
|
|
6
|
-
export interface StrandOptions<in out Tool extends AiTool.Any> {
|
|
7
|
-
/** The system prompt. */
|
|
8
|
-
system?: string | undefined;
|
|
9
|
-
/** The initial list of AI input messages. */
|
|
10
|
-
messages?: Iterable<AiInput.Message> | undefined;
|
|
11
|
-
/** The tools to use for by strand. */
|
|
12
|
-
toolkit?: AiToolkit.AiToolkit<Tool> | undefined;
|
|
13
|
-
}
|
|
14
|
-
/** Create an isolated clone of the current conversation to provide for an effect. */
|
|
15
|
-
export declare const strand: <HE = never, T extends AiTool.Any = never>(options?: StrandOptions<T>) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E | HE, Exclude<R, MessagesRef | System> | T>;
|
package/dist/strand.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import * as AiInput from "@effect/ai/AiInput";
|
|
2
|
-
import * as AiTool from "@effect/ai/AiTool";
|
|
3
|
-
import * as Effect from "effect/Effect";
|
|
4
|
-
import * as Option from "effect/Option";
|
|
5
|
-
import * as Ref from "effect/Ref";
|
|
6
|
-
import { MessagesRef, System, Toolkit } from "./Context.js";
|
|
7
|
-
/** Create an isolated clone of the current conversation to provide for an effect. */
|
|
8
|
-
export const strand = (options) => (effect) => Effect.gen(function* () {
|
|
9
|
-
const messagesRef = options?.messages
|
|
10
|
-
? Ref.unsafeMake([...options.messages])
|
|
11
|
-
: yield* Option.match(yield* Effect.serviceOption(MessagesRef), {
|
|
12
|
-
*onSome(ref) {
|
|
13
|
-
return Ref.unsafeMake([...yield* Ref.get(ref)]);
|
|
14
|
-
},
|
|
15
|
-
onNone: () => Ref.make([]),
|
|
16
|
-
});
|
|
17
|
-
return yield* (effect.pipe(Effect.provideService(MessagesRef, messagesRef), Effect.provideService(System, options?.system), Effect.provideService(Toolkit, options?.toolkit)));
|
|
18
|
-
});
|
|
19
|
-
//# sourceMappingURL=strand.js.map
|
package/dist/strand.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"strand.js","sourceRoot":"","sources":["../strand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAE3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,GAAG,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAW3D,qFAAqF;AACrF,MAAM,CAAC,MAAM,MAAM,GAImD,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAC5F,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,WAAW,GAAG,OAAO,EAAE,QAAQ;QACnC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE;YAC9D,CAAC,MAAM,CAAC,GAAG;gBACT,OAAO,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YACjD,CAAC;YACD,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAA4B,CAAC;SACrD,CAAC,CAAA;IACJ,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CACxB,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,EAC/C,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,EAC9C,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CACjD,CAAC,CAAA;AACJ,CAAC,CAAU,CAAA"}
|
package/dist/user.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import * as Effect from "effect/Effect";
|
|
2
|
-
import { MessagesRef } from "./Context.ts";
|
|
3
|
-
export declare const user: {
|
|
4
|
-
(template: TemplateStringsArray, ...substitutions: Array<unknown>): Effect.Effect<void, never, MessagesRef>;
|
|
5
|
-
(message: string): Effect.Effect<void, never, MessagesRef>;
|
|
6
|
-
};
|
package/dist/user.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import * as AiInput from "@effect/ai/AiInput";
|
|
2
|
-
import * as Effect from "effect/Effect";
|
|
3
|
-
import * as Ref from "effect/Ref";
|
|
4
|
-
import { MessagesRef } from "./Context.js";
|
|
5
|
-
import { isTemplateStringsArray } from "./util/isTemplateStringsArray.js";
|
|
6
|
-
export const user = Effect.fn(function* (e0, ...eRest) {
|
|
7
|
-
const message = new AiInput.UserMessage({
|
|
8
|
-
parts: [
|
|
9
|
-
new AiInput.TextPart({
|
|
10
|
-
text: isTemplateStringsArray(e0) ? String.raw({ raw: e0 }, ...eRest) : e0,
|
|
11
|
-
}),
|
|
12
|
-
],
|
|
13
|
-
});
|
|
14
|
-
yield* Ref.update(yield* MessagesRef, (messages) => [...messages, message]);
|
|
15
|
-
});
|
|
16
|
-
//# sourceMappingURL=user.js.map
|
package/dist/user.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"user.js","sourceRoot":"","sources":["../user.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,GAAG,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AAEzE,MAAM,CAAC,MAAM,IAAI,GAMb,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAC,EAAE,EAAE,GAAG,KAAK;IAClC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC;QACtC,KAAK,EAAE;YACL,IAAI,OAAO,CAAC,QAAQ,CAAC;gBACnB,IAAI,EAAE,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;aAC1E,CAAC;SACH;KACF,CAAC,CAAA;IACF,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;AAC7E,CAAC,CAAU,CAAA"}
|
package/messages.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { Message } from "@effect/ai/AiInput"
|
|
2
|
-
import * as Effect from "effect/Effect"
|
|
3
|
-
import * as Ref from "effect/Ref"
|
|
4
|
-
import { MessagesRef } from "./Context.ts"
|
|
5
|
-
|
|
6
|
-
export const messages: Effect.Effect<Array<Message>, never, MessagesRef> = Effect.flatMap(MessagesRef, Ref.get)
|
package/set.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { Message } from "@effect/ai/AiInput"
|
|
2
|
-
import * as Effect from "effect/Effect"
|
|
3
|
-
import * as Ref from "effect/Ref"
|
|
4
|
-
import { MessagesRef } from "./Context.ts"
|
|
5
|
-
|
|
6
|
-
export const set = Effect.fn(function*(messages: Iterable<Message>) {
|
|
7
|
-
const messagesRef = yield* MessagesRef
|
|
8
|
-
const previous = yield* Ref.get(messagesRef)
|
|
9
|
-
yield* Ref.set(messagesRef, [...messages])
|
|
10
|
-
return previous
|
|
11
|
-
})
|
package/strand.ts
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import * as AiInput from "@effect/ai/AiInput"
|
|
2
|
-
import * as AiTool from "@effect/ai/AiTool"
|
|
3
|
-
import type * as AiToolkit from "@effect/ai/AiToolkit"
|
|
4
|
-
import * as Effect from "effect/Effect"
|
|
5
|
-
import * as Option from "effect/Option"
|
|
6
|
-
import * as Ref from "effect/Ref"
|
|
7
|
-
import { MessagesRef, System, Toolkit } from "./Context.ts"
|
|
8
|
-
|
|
9
|
-
export interface StrandOptions<in out Tool extends AiTool.Any> {
|
|
10
|
-
/** The system prompt. */
|
|
11
|
-
system?: string | undefined
|
|
12
|
-
/** The initial list of AI input messages. */
|
|
13
|
-
messages?: Iterable<AiInput.Message> | undefined
|
|
14
|
-
/** The tools to use for by strand. */
|
|
15
|
-
toolkit?: AiToolkit.AiToolkit<Tool> | undefined
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
/** Create an isolated clone of the current conversation to provide for an effect. */
|
|
19
|
-
export const strand: <HE = never, T extends AiTool.Any = never>(
|
|
20
|
-
options?: StrandOptions<T>,
|
|
21
|
-
) => <A, E, R>(
|
|
22
|
-
effect: Effect.Effect<A, E, R>,
|
|
23
|
-
) => Effect.Effect<A, E | HE, Exclude<R, MessagesRef | System> | T> = (options) => (effect) =>
|
|
24
|
-
Effect.gen(function*() {
|
|
25
|
-
const messagesRef = options?.messages
|
|
26
|
-
? Ref.unsafeMake([...options.messages])
|
|
27
|
-
: yield* Option.match(yield* Effect.serviceOption(MessagesRef), {
|
|
28
|
-
*onSome(ref) {
|
|
29
|
-
return Ref.unsafeMake([...yield* Ref.get(ref)])
|
|
30
|
-
},
|
|
31
|
-
onNone: () => Ref.make([] as Array<AiInput.Message>),
|
|
32
|
-
})
|
|
33
|
-
return yield* (effect.pipe(
|
|
34
|
-
Effect.provideService(MessagesRef, messagesRef),
|
|
35
|
-
Effect.provideService(System, options?.system),
|
|
36
|
-
Effect.provideService(Toolkit, options?.toolkit),
|
|
37
|
-
))
|
|
38
|
-
}) as never
|
package/user.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import * as AiInput from "@effect/ai/AiInput"
|
|
2
|
-
import * as Effect from "effect/Effect"
|
|
3
|
-
import * as Ref from "effect/Ref"
|
|
4
|
-
import { MessagesRef } from "./Context.ts"
|
|
5
|
-
import { isTemplateStringsArray } from "./util/isTemplateStringsArray.ts"
|
|
6
|
-
|
|
7
|
-
export const user: {
|
|
8
|
-
(
|
|
9
|
-
template: TemplateStringsArray,
|
|
10
|
-
...substitutions: Array<unknown>
|
|
11
|
-
): Effect.Effect<void, never, MessagesRef>
|
|
12
|
-
(message: string): Effect.Effect<void, never, MessagesRef>
|
|
13
|
-
} = Effect.fn(function*(e0, ...eRest) {
|
|
14
|
-
const message = new AiInput.UserMessage({
|
|
15
|
-
parts: [
|
|
16
|
-
new AiInput.TextPart({
|
|
17
|
-
text: isTemplateStringsArray(e0) ? String.raw({ raw: e0 }, ...eRest) : e0,
|
|
18
|
-
}),
|
|
19
|
-
],
|
|
20
|
-
})
|
|
21
|
-
yield* Ref.update(yield* MessagesRef, (messages) => [...messages, message])
|
|
22
|
-
}) as never
|