@effect/ai 0.28.0 → 0.28.2
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/dist/cjs/AiError.js +19 -7
- package/dist/cjs/AiError.js.map +1 -1
- package/dist/cjs/Chat.js +176 -102
- package/dist/cjs/Chat.js.map +1 -1
- package/dist/cjs/Prompt.js +199 -17
- package/dist/cjs/Prompt.js.map +1 -1
- package/dist/cjs/Tool.js.map +1 -1
- package/dist/dts/AiError.d.ts +4 -2
- package/dist/dts/AiError.d.ts.map +1 -1
- package/dist/dts/Chat.d.ts +177 -33
- package/dist/dts/Chat.d.ts.map +1 -1
- package/dist/dts/Prompt.d.ts +358 -18
- package/dist/dts/Prompt.d.ts.map +1 -1
- package/dist/dts/Tool.d.ts +1 -1
- package/dist/dts/Tool.d.ts.map +1 -1
- package/dist/esm/AiError.js +19 -7
- package/dist/esm/AiError.js.map +1 -1
- package/dist/esm/Chat.js +172 -100
- package/dist/esm/Chat.js.map +1 -1
- package/dist/esm/Prompt.js +194 -13
- package/dist/esm/Prompt.js.map +1 -1
- package/dist/esm/Tool.js.map +1 -1
- package/package.json +4 -4
- package/src/AiError.ts +36 -21
- package/src/Chat.ts +286 -62
- package/src/Prompt.ts +384 -49
- package/src/Tool.ts +2 -1
package/dist/esm/AiError.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AiError.js","names":["Predicate","Schema","TypeId","isAiError","u","hasProperty","HttpRequestDetails","Struct","method","Literal","url","String","urlParams","Array","Tuple","hash","Option","headers","Record","key","value","annotations","identifier","HttpRequestError","TaggedError","module","reason","request","description","optional","cause","Defect","fromRequestError","error","params","message","methodAndUrl","baseMessage","suggestion","HttpResponseDetails","status","Number","HttpResponseError","response","fromResponseError","methodUrlStatus","getStatusCodeSuggestion","MalformedInput","MalformedOutput","fromParseError","UnknownError","moduleMethod","isUndefined","AiError","Union","statusCode"],"sources":["../../src/AiError.ts"],"sourcesContent":[null],"mappings":"
|
|
1
|
+
{"version":3,"file":"AiError.js","names":["Effect","Inspectable","Predicate","Schema","TypeId","isAiError","u","hasProperty","HttpRequestDetails","Struct","method","Literal","url","String","urlParams","Array","Tuple","hash","Option","headers","Record","key","value","annotations","identifier","HttpRequestError","TaggedError","module","reason","request","description","optional","cause","Defect","fromRequestError","error","params","message","methodAndUrl","baseMessage","suggestion","HttpResponseDetails","status","Number","HttpResponseError","response","body","fromResponseError","void","contentType","includes","json","text","flatMap","merge","format","methodUrlStatus","getStatusCodeSuggestion","isNotUndefined","MalformedInput","MalformedOutput","fromParseError","UnknownError","moduleMethod","isUndefined","AiError","Union","statusCode"],"sources":["../../src/AiError.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/esm/Chat.js
CHANGED
|
@@ -1,57 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
* The `Chat` module provides a stateful conversation interface for AI language
|
|
3
|
-
* models.
|
|
4
|
-
*
|
|
5
|
-
* This module enables persistent chat sessions that maintain conversation
|
|
6
|
-
* history, support tool calling, and offer both streaming and non-streaming
|
|
7
|
-
* text generation. It integrates seamlessly with the Effect AI ecosystem,
|
|
8
|
-
* providing type-safe conversational AI capabilities.
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* ```ts
|
|
12
|
-
* import { Chat, LanguageModel } from "@effect/ai"
|
|
13
|
-
* import { Effect, Layer } from "effect"
|
|
14
|
-
*
|
|
15
|
-
* // Create a new chat session
|
|
16
|
-
* const program = Effect.gen(function* () {
|
|
17
|
-
* const chat = yield* Chat.empty
|
|
18
|
-
*
|
|
19
|
-
* // Send a message and get response
|
|
20
|
-
* const response = yield* chat.generateText({
|
|
21
|
-
* prompt: "Hello! What can you help me with?"
|
|
22
|
-
* })
|
|
23
|
-
*
|
|
24
|
-
* console.log(response.content)
|
|
25
|
-
*
|
|
26
|
-
* return response
|
|
27
|
-
* })
|
|
28
|
-
* ```
|
|
29
|
-
*
|
|
30
|
-
* @example
|
|
31
|
-
* ```ts
|
|
32
|
-
* import { Chat, LanguageModel } from "@effect/ai"
|
|
33
|
-
* import { Effect, Stream } from "effect"
|
|
34
|
-
*
|
|
35
|
-
* // Streaming chat with tool support
|
|
36
|
-
* const streamingChat = Effect.gen(function* () {
|
|
37
|
-
* const chat = yield* Chat.empty
|
|
38
|
-
*
|
|
39
|
-
* yield* chat.streamText({
|
|
40
|
-
* prompt: "Generate a creative story"
|
|
41
|
-
* }).pipe(Stream.runForEach((part) =>
|
|
42
|
-
* Effect.sync(() => console.log(part))
|
|
43
|
-
* ))
|
|
44
|
-
* })
|
|
45
|
-
* ```
|
|
46
|
-
*
|
|
47
|
-
* @since 1.0.0
|
|
48
|
-
*/
|
|
1
|
+
import { BackingPersistence } from "@effect/experimental/Persistence";
|
|
49
2
|
import * as Channel from "effect/Channel";
|
|
50
3
|
import * as Context from "effect/Context";
|
|
51
4
|
import * as Effect from "effect/Effect";
|
|
5
|
+
import * as Layer from "effect/Layer";
|
|
6
|
+
import * as Option from "effect/Option";
|
|
52
7
|
import * as Ref from "effect/Ref";
|
|
53
8
|
import * as Schema from "effect/Schema";
|
|
54
9
|
import * as Stream from "effect/Stream";
|
|
10
|
+
import * as AiError from "./AiError.js";
|
|
55
11
|
import * as LanguageModel from "./LanguageModel.js";
|
|
56
12
|
import * as Prompt from "./Prompt.js";
|
|
57
13
|
/**
|
|
@@ -79,71 +35,63 @@ import * as Prompt from "./Prompt.js";
|
|
|
79
35
|
* @category Context
|
|
80
36
|
*/
|
|
81
37
|
export class Chat extends /*#__PURE__*/Context.Tag("@effect/ai/Chat")() {}
|
|
38
|
+
// =============================================================================
|
|
39
|
+
// Constructors
|
|
40
|
+
// =============================================================================
|
|
82
41
|
/**
|
|
83
|
-
* Creates a new Chat service
|
|
42
|
+
* Creates a new Chat service with empty conversation history.
|
|
84
43
|
*
|
|
85
|
-
* This is the
|
|
86
|
-
*
|
|
44
|
+
* This is the most common way to start a fresh chat session without
|
|
45
|
+
* any initial context or system prompts.
|
|
87
46
|
*
|
|
88
47
|
* @example
|
|
89
48
|
* ```ts
|
|
90
|
-
* import { Chat
|
|
49
|
+
* import { Chat } from "@effect/ai"
|
|
91
50
|
* import { Effect } from "effect"
|
|
92
51
|
*
|
|
93
|
-
* const
|
|
94
|
-
* const chat = yield* Chat.
|
|
95
|
-
* role: "system",
|
|
96
|
-
* content: "You are a helpful assistant specialized in mathematics."
|
|
97
|
-
* }])
|
|
52
|
+
* const freshChat = Effect.gen(function* () {
|
|
53
|
+
* const chat = yield* Chat.empty
|
|
98
54
|
*
|
|
99
55
|
* const response = yield* chat.generateText({
|
|
100
|
-
* prompt: "
|
|
56
|
+
* prompt: "Hello! Can you introduce yourself?"
|
|
101
57
|
* })
|
|
102
58
|
*
|
|
103
|
-
*
|
|
104
|
-
* })
|
|
105
|
-
* ```
|
|
106
|
-
*
|
|
107
|
-
* @example
|
|
108
|
-
* ```ts
|
|
109
|
-
* import { Chat, Prompt } from "@effect/ai"
|
|
110
|
-
* import { Effect } from "effect"
|
|
111
|
-
*
|
|
112
|
-
* // Initialize with conversation history
|
|
113
|
-
* const existingChat = Effect.gen(function* () {
|
|
114
|
-
* const chat = yield* Chat.fromPrompt([
|
|
115
|
-
* { role: "user", content: [{ type: "text", text: "What's the weather like?" }] },
|
|
116
|
-
* { role: "assistant", content: [{ type: "text", text: "I don't have access to weather data." }] },
|
|
117
|
-
* { role: "user", content: [{ type: "text", text: "Can you help me with coding?" }] }
|
|
118
|
-
* ])
|
|
119
|
-
*
|
|
120
|
-
* const response = yield* chat.generateText({
|
|
121
|
-
* prompt: "I need help with TypeScript"
|
|
122
|
-
* })
|
|
59
|
+
* console.log(response.content)
|
|
123
60
|
*
|
|
124
|
-
* return
|
|
61
|
+
* return chat
|
|
125
62
|
* })
|
|
126
63
|
* ```
|
|
127
64
|
*
|
|
128
65
|
* @since 1.0.0
|
|
129
66
|
* @category Constructors
|
|
130
67
|
*/
|
|
131
|
-
export const
|
|
132
|
-
const
|
|
68
|
+
export const empty = /*#__PURE__*/Effect.gen(function* () {
|
|
69
|
+
const history = yield* Ref.make(Prompt.empty);
|
|
133
70
|
const context = yield* Effect.context();
|
|
71
|
+
const semaphore = yield* Effect.makeSemaphore(1);
|
|
134
72
|
const provideContext = effect => Effect.mapInputContext(effect, input => Context.merge(context, input));
|
|
135
73
|
const provideContextStream = stream => Stream.mapInputContext(stream, input => Context.merge(context, input));
|
|
136
|
-
const
|
|
137
|
-
const
|
|
74
|
+
const encodeHistory = Schema.encode(Prompt.Prompt);
|
|
75
|
+
const encodeHistoryJson = Schema.encode(Prompt.FromJson);
|
|
138
76
|
return Chat.of({
|
|
139
77
|
history,
|
|
140
|
-
export: Ref.get(history).pipe(Effect.flatMap(
|
|
141
|
-
|
|
78
|
+
export: Ref.get(history).pipe(Effect.flatMap(encodeHistory), Effect.catchTag("ParseError", error => AiError.MalformedOutput.fromParseError({
|
|
79
|
+
module: "Chat",
|
|
80
|
+
method: "exportJson",
|
|
81
|
+
description: "Failed to encode chat history",
|
|
82
|
+
error
|
|
83
|
+
})), Effect.withSpan("Chat.export")),
|
|
84
|
+
exportJson: Ref.get(history).pipe(Effect.flatMap(encodeHistoryJson), Effect.catchTag("ParseError", error => AiError.MalformedOutput.fromParseError({
|
|
85
|
+
module: "Chat",
|
|
86
|
+
method: "exportJson",
|
|
87
|
+
description: "Failed to encode chat history into JSON",
|
|
88
|
+
error
|
|
89
|
+
})), Effect.withSpan("Chat.exportJson")),
|
|
142
90
|
generateText: Effect.fnUntraced(function* (options) {
|
|
143
91
|
const newPrompt = Prompt.make(options.prompt);
|
|
144
92
|
const oldPrompt = yield* Ref.get(history);
|
|
145
93
|
const prompt = Prompt.merge(oldPrompt, newPrompt);
|
|
146
|
-
const response = yield*
|
|
94
|
+
const response = yield* LanguageModel.generateText({
|
|
147
95
|
...options,
|
|
148
96
|
prompt
|
|
149
97
|
});
|
|
@@ -155,7 +103,7 @@ export const fromPrompt = /*#__PURE__*/Effect.fnUntraced(function* (prompt) {
|
|
|
155
103
|
})),
|
|
156
104
|
streamText: Effect.fnUntraced(function* (options) {
|
|
157
105
|
let combined = Prompt.empty;
|
|
158
|
-
return Stream.fromChannel(Channel.acquireUseRelease(semaphore.take(1).pipe(Effect.zipRight(Ref.get(history)), Effect.map(history => Prompt.merge(history, Prompt.make(options.prompt)))), prompt =>
|
|
106
|
+
return Stream.fromChannel(Channel.acquireUseRelease(semaphore.take(1).pipe(Effect.zipRight(Ref.get(history)), Effect.map(history => Prompt.merge(history, Prompt.make(options.prompt)))), prompt => LanguageModel.streamText({
|
|
159
107
|
...options,
|
|
160
108
|
prompt
|
|
161
109
|
}).pipe(Stream.mapChunksEffect(Effect.fnUntraced(function* (chunk) {
|
|
@@ -170,7 +118,7 @@ export const fromPrompt = /*#__PURE__*/Effect.fnUntraced(function* (prompt) {
|
|
|
170
118
|
const newPrompt = Prompt.make(options.prompt);
|
|
171
119
|
const oldPrompt = yield* Ref.get(history);
|
|
172
120
|
const prompt = Prompt.merge(oldPrompt, newPrompt);
|
|
173
|
-
const response = yield*
|
|
121
|
+
const response = yield* LanguageModel.generateObject({
|
|
174
122
|
...options,
|
|
175
123
|
prompt
|
|
176
124
|
});
|
|
@@ -186,33 +134,59 @@ export const fromPrompt = /*#__PURE__*/Effect.fnUntraced(function* (prompt) {
|
|
|
186
134
|
});
|
|
187
135
|
});
|
|
188
136
|
/**
|
|
189
|
-
* Creates a new Chat service
|
|
137
|
+
* Creates a new Chat service from an initial prompt.
|
|
190
138
|
*
|
|
191
|
-
* This is the
|
|
192
|
-
*
|
|
139
|
+
* This is the primary constructor for creating chat instances. It initializes
|
|
140
|
+
* a new conversation with the provided prompt as the starting context.
|
|
193
141
|
*
|
|
194
142
|
* @example
|
|
195
143
|
* ```ts
|
|
196
|
-
* import { Chat } from "@effect/ai"
|
|
144
|
+
* import { Chat, Prompt } from "@effect/ai"
|
|
197
145
|
* import { Effect } from "effect"
|
|
198
146
|
*
|
|
199
|
-
* const
|
|
200
|
-
* const chat = yield* Chat.
|
|
147
|
+
* const chatWithSystemPrompt = Effect.gen(function* () {
|
|
148
|
+
* const chat = yield* Chat.fromPrompt([{
|
|
149
|
+
* role: "system",
|
|
150
|
+
* content: "You are a helpful assistant specialized in mathematics."
|
|
151
|
+
* }])
|
|
201
152
|
*
|
|
202
153
|
* const response = yield* chat.generateText({
|
|
203
|
-
* prompt: "
|
|
154
|
+
* prompt: "What is 2+2?"
|
|
204
155
|
* })
|
|
205
156
|
*
|
|
206
|
-
*
|
|
157
|
+
* return response.content
|
|
158
|
+
* })
|
|
159
|
+
* ```
|
|
207
160
|
*
|
|
208
|
-
*
|
|
161
|
+
* @example
|
|
162
|
+
* ```ts
|
|
163
|
+
* import { Chat, Prompt } from "@effect/ai"
|
|
164
|
+
* import { Effect } from "effect"
|
|
165
|
+
*
|
|
166
|
+
* // Initialize with conversation history
|
|
167
|
+
* const existingChat = Effect.gen(function* () {
|
|
168
|
+
* const chat = yield* Chat.fromPrompt([
|
|
169
|
+
* { role: "user", content: [{ type: "text", text: "What's the weather like?" }] },
|
|
170
|
+
* { role: "assistant", content: [{ type: "text", text: "I don't have access to weather data." }] },
|
|
171
|
+
* { role: "user", content: [{ type: "text", text: "Can you help me with coding?" }] }
|
|
172
|
+
* ])
|
|
173
|
+
*
|
|
174
|
+
* const response = yield* chat.generateText({
|
|
175
|
+
* prompt: "I need help with TypeScript"
|
|
176
|
+
* })
|
|
177
|
+
*
|
|
178
|
+
* return response
|
|
209
179
|
* })
|
|
210
180
|
* ```
|
|
211
181
|
*
|
|
212
182
|
* @since 1.0.0
|
|
213
183
|
* @category Constructors
|
|
214
184
|
*/
|
|
215
|
-
export const
|
|
185
|
+
export const fromPrompt = /*#__PURE__*/Effect.fnUntraced(function* (prompt) {
|
|
186
|
+
const chat = yield* empty;
|
|
187
|
+
yield* Ref.set(chat.history, Prompt.make(prompt));
|
|
188
|
+
return chat;
|
|
189
|
+
});
|
|
216
190
|
const decodeUnknown = /*#__PURE__*/Schema.decodeUnknown(Prompt.Prompt);
|
|
217
191
|
/**
|
|
218
192
|
* Creates a Chat service from previously exported chat data.
|
|
@@ -250,7 +224,7 @@ const decodeUnknown = /*#__PURE__*/Schema.decodeUnknown(Prompt.Prompt);
|
|
|
250
224
|
* @category Constructors
|
|
251
225
|
*/
|
|
252
226
|
export const fromExport = data => Effect.flatMap(decodeUnknown(data), fromPrompt);
|
|
253
|
-
const
|
|
227
|
+
const decodeHistoryJson = /*#__PURE__*/Schema.decodeUnknown(Prompt.FromJson);
|
|
254
228
|
/**
|
|
255
229
|
* Creates a Chat service from previously exported JSON chat data.
|
|
256
230
|
*
|
|
@@ -287,5 +261,103 @@ const decodeJson = /*#__PURE__*/Schema.decode(Prompt.FromJson);
|
|
|
287
261
|
* @since 1.0.0
|
|
288
262
|
* @category Constructors
|
|
289
263
|
*/
|
|
290
|
-
export const fromJson = data => Effect.flatMap(
|
|
264
|
+
export const fromJson = data => Effect.flatMap(decodeHistoryJson(data), fromPrompt);
|
|
265
|
+
// =============================================================================
|
|
266
|
+
// Chat Persistence
|
|
267
|
+
// =============================================================================
|
|
268
|
+
/**
|
|
269
|
+
* An error that occurs when attempting to retrieve a persisted `Chat` that
|
|
270
|
+
* does not exist in the backing persistence store.
|
|
271
|
+
*
|
|
272
|
+
* @since 1.0.0
|
|
273
|
+
* @category Errors
|
|
274
|
+
*/
|
|
275
|
+
export class ChatNotFoundError extends /*#__PURE__*/Schema.TaggedError("@effect/ai/Chat/ChatNotFoundError")("ChatNotFoundError", {
|
|
276
|
+
chatId: Schema.String
|
|
277
|
+
}) {}
|
|
278
|
+
// @effect-diagnostics effect/leakingRequirements:off
|
|
279
|
+
/**
|
|
280
|
+
* The context tag for chat persistence.
|
|
281
|
+
*
|
|
282
|
+
* @since 1.0.0
|
|
283
|
+
* @category Context
|
|
284
|
+
*/
|
|
285
|
+
export class Persistence extends /*#__PURE__*/Context.Tag("@effect/ai/Chat/Persisted")() {}
|
|
286
|
+
/**
|
|
287
|
+
* Creates a new chat persistence service.
|
|
288
|
+
*
|
|
289
|
+
* The provided store identifier will be used to indicate which "store" the
|
|
290
|
+
* backing persistence should load chats from.
|
|
291
|
+
*
|
|
292
|
+
* @since 1.0.0
|
|
293
|
+
* @category Constructors
|
|
294
|
+
*/
|
|
295
|
+
export const makePersisted = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
296
|
+
const persistence = yield* BackingPersistence;
|
|
297
|
+
const store = yield* persistence.make(options.storeId);
|
|
298
|
+
const toPersisted = (chatId, chat) => {
|
|
299
|
+
const persistChat = chat.exportJson.pipe(Effect.flatMap(history => store.set(chatId, history, Option.none())), Effect.orDie);
|
|
300
|
+
return {
|
|
301
|
+
...chat,
|
|
302
|
+
id: chatId,
|
|
303
|
+
generateText: options => chat.generateText(options).pipe(Effect.ensuring(persistChat)),
|
|
304
|
+
generateObject: options => chat.generateObject(options).pipe(Effect.ensuring(persistChat)),
|
|
305
|
+
streamText: options => chat.streamText(options).pipe(Stream.ensuring(persistChat))
|
|
306
|
+
};
|
|
307
|
+
};
|
|
308
|
+
const createChat = Effect.fnUntraced(function* (chatId) {
|
|
309
|
+
// Create an empty chat
|
|
310
|
+
const chat = yield* empty;
|
|
311
|
+
// Save the history for the newly created chat
|
|
312
|
+
const history = yield* chat.exportJson;
|
|
313
|
+
yield* store.set(chatId, history, Option.none());
|
|
314
|
+
// Convert the chat to a persisted chat
|
|
315
|
+
return toPersisted(chatId, chat);
|
|
316
|
+
}, Effect.catchTag("PersistenceError", error => {
|
|
317
|
+
// Should never happen because we are using the backing persistence
|
|
318
|
+
// store directly, and parse errors can only occur when using result
|
|
319
|
+
// persistence
|
|
320
|
+
if (error.reason === "ParseError") return Effect.die(error);
|
|
321
|
+
return Effect.fail(error);
|
|
322
|
+
}));
|
|
323
|
+
const getChat = Effect.fnUntraced(function* (chatId) {
|
|
324
|
+
// Create an empty chat
|
|
325
|
+
const chat = yield* empty;
|
|
326
|
+
// Hydrate the chat history
|
|
327
|
+
yield* store.get(chatId).pipe(Effect.flatMap(Effect.transposeMapOption(decodeHistoryJson)), Effect.flatten, Effect.catchTag("NoSuchElementException", () => new ChatNotFoundError({
|
|
328
|
+
chatId
|
|
329
|
+
})), Effect.flatMap(history => Ref.set(chat.history, history)));
|
|
330
|
+
// Convert the chat to a persisted chat
|
|
331
|
+
return toPersisted(chatId, chat);
|
|
332
|
+
}, Effect.catchTags({
|
|
333
|
+
ParseError: error => Effect.die(error),
|
|
334
|
+
PersistenceError: error => {
|
|
335
|
+
// Should never happen because we are using the backing persistence
|
|
336
|
+
// store directly, and parse errors can only occur when using result
|
|
337
|
+
// persistence
|
|
338
|
+
if (error.reason === "ParseError") return Effect.die(error);
|
|
339
|
+
return Effect.fail(error);
|
|
340
|
+
}
|
|
341
|
+
}));
|
|
342
|
+
const get = Effect.fn("PersistedChat.get")(function* (chatId) {
|
|
343
|
+
return yield* getChat(chatId);
|
|
344
|
+
});
|
|
345
|
+
const getOrCreate = Effect.fn("PersistedChat.getOrCreate")(function* (chatId) {
|
|
346
|
+
return yield* getChat(chatId).pipe(Effect.catchTag("ChatNotFoundError", () => createChat(chatId)));
|
|
347
|
+
});
|
|
348
|
+
return Persistence.of({
|
|
349
|
+
get,
|
|
350
|
+
getOrCreate
|
|
351
|
+
});
|
|
352
|
+
});
|
|
353
|
+
/**
|
|
354
|
+
* Creates a `Layer` new chat persistence service.
|
|
355
|
+
*
|
|
356
|
+
* The provided store identifier will be used to indicate which "store" the
|
|
357
|
+
* backing persistence should load chats from.
|
|
358
|
+
*
|
|
359
|
+
* @since 1.0.0
|
|
360
|
+
* @category Constructors
|
|
361
|
+
*/
|
|
362
|
+
export const layerPersisted = options => Layer.scoped(Persistence, makePersisted(options));
|
|
291
363
|
//# sourceMappingURL=Chat.js.map
|
package/dist/esm/Chat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chat.js","names":["Channel","Context","Effect","Ref","Schema","Stream","LanguageModel","Prompt","Chat","Tag","
|
|
1
|
+
{"version":3,"file":"Chat.js","names":["BackingPersistence","Channel","Context","Effect","Layer","Option","Ref","Schema","Stream","AiError","LanguageModel","Prompt","Chat","Tag","empty","gen","history","make","context","semaphore","makeSemaphore","provideContext","effect","mapInputContext","input","merge","provideContextStream","stream","encodeHistory","encode","encodeHistoryJson","FromJson","of","export","get","pipe","flatMap","catchTag","error","MalformedOutput","fromParseError","module","method","description","withSpan","exportJson","generateText","fnUntraced","options","newPrompt","prompt","oldPrompt","response","newHistory","fromResponseParts","content","set","withPermits","captureStackTrace","streamText","combined","fromChannel","acquireUseRelease","take","zipRight","map","mapChunksEffect","chunk","parts","Array","from","toChannel","release","unwrap","generateObject","attributes","objectName","schema","_tag","identifier","fromPrompt","chat","decodeUnknown","fromExport","data","decodeHistoryJson","fromJson","ChatNotFoundError","TaggedError","chatId","String","Persistence","makePersisted","persistence","store","storeId","toPersisted","persistChat","none","orDie","id","ensuring","createChat","reason","die","fail","getChat","transposeMapOption","flatten","catchTags","ParseError","PersistenceError","fn","getOrCreate","layerPersisted","scoped"],"sources":["../../src/Chat.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|