@effect/ai 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/AiChat/package.json +6 -0
  2. package/AiError/package.json +6 -0
  3. package/AiInput/package.json +6 -0
  4. package/AiResponse/package.json +6 -0
  5. package/AiRole/package.json +6 -0
  6. package/AiToolkit/package.json +6 -0
  7. package/Completions/package.json +6 -0
  8. package/LICENSE +21 -0
  9. package/README.md +1 -0
  10. package/Tokenizer/package.json +6 -0
  11. package/dist/cjs/AiChat.js +151 -0
  12. package/dist/cjs/AiChat.js.map +1 -0
  13. package/dist/cjs/AiError.js +41 -0
  14. package/dist/cjs/AiError.js.map +1 -0
  15. package/dist/cjs/AiInput.js +349 -0
  16. package/dist/cjs/AiInput.js.map +1 -0
  17. package/dist/cjs/AiResponse.js +295 -0
  18. package/dist/cjs/AiResponse.js.map +1 -0
  19. package/dist/cjs/AiRole.js +106 -0
  20. package/dist/cjs/AiRole.js.map +1 -0
  21. package/dist/cjs/AiToolkit.js +132 -0
  22. package/dist/cjs/AiToolkit.js.map +1 -0
  23. package/dist/cjs/Completions.js +217 -0
  24. package/dist/cjs/Completions.js.map +1 -0
  25. package/dist/cjs/Tokenizer.js +59 -0
  26. package/dist/cjs/Tokenizer.js.map +1 -0
  27. package/dist/cjs/index.js +25 -0
  28. package/dist/cjs/index.js.map +1 -0
  29. package/dist/dts/AiChat.d.ts +73 -0
  30. package/dist/dts/AiChat.d.ts.map +1 -0
  31. package/dist/dts/AiError.d.ts +38 -0
  32. package/dist/dts/AiError.d.ts.map +1 -0
  33. package/dist/dts/AiInput.d.ts +283 -0
  34. package/dist/dts/AiInput.d.ts.map +1 -0
  35. package/dist/dts/AiResponse.d.ts +235 -0
  36. package/dist/dts/AiResponse.d.ts.map +1 -0
  37. package/dist/dts/AiRole.d.ts +111 -0
  38. package/dist/dts/AiRole.d.ts.map +1 -0
  39. package/dist/dts/AiToolkit.d.ts +158 -0
  40. package/dist/dts/AiToolkit.d.ts.map +1 -0
  41. package/dist/dts/Completions.d.ts +104 -0
  42. package/dist/dts/Completions.d.ts.map +1 -0
  43. package/dist/dts/Tokenizer.d.ts +34 -0
  44. package/dist/dts/Tokenizer.d.ts.map +1 -0
  45. package/dist/dts/index.d.ts +33 -0
  46. package/dist/dts/index.d.ts.map +1 -0
  47. package/dist/esm/AiChat.js +139 -0
  48. package/dist/esm/AiChat.js.map +1 -0
  49. package/dist/esm/AiError.js +31 -0
  50. package/dist/esm/AiError.js.map +1 -0
  51. package/dist/esm/AiInput.js +332 -0
  52. package/dist/esm/AiInput.js.map +1 -0
  53. package/dist/esm/AiResponse.js +281 -0
  54. package/dist/esm/AiResponse.js.map +1 -0
  55. package/dist/esm/AiRole.js +93 -0
  56. package/dist/esm/AiRole.js.map +1 -0
  57. package/dist/esm/AiToolkit.js +123 -0
  58. package/dist/esm/AiToolkit.js.map +1 -0
  59. package/dist/esm/Completions.js +206 -0
  60. package/dist/esm/Completions.js.map +1 -0
  61. package/dist/esm/Tokenizer.js +48 -0
  62. package/dist/esm/Tokenizer.js.map +1 -0
  63. package/dist/esm/index.js +33 -0
  64. package/dist/esm/index.js.map +1 -0
  65. package/dist/esm/package.json +4 -0
  66. package/package.json +100 -0
  67. package/src/AiChat.ts +274 -0
  68. package/src/AiError.ts +38 -0
  69. package/src/AiInput.ts +456 -0
  70. package/src/AiResponse.ts +343 -0
  71. package/src/AiRole.ts +122 -0
  72. package/src/AiToolkit.ts +314 -0
  73. package/src/Completions.ts +354 -0
  74. package/src/Tokenizer.ts +78 -0
  75. package/src/index.ts +39 -0
@@ -0,0 +1,332 @@
1
+ import * as FileSystem from "@effect/platform/FileSystem";
2
+ import * as Path from "@effect/platform/Path";
3
+ import * as ParseResult from "@effect/schema/ParseResult";
4
+ import * as Schema_ from "@effect/schema/Schema";
5
+ import * as Chunk from "effect/Chunk";
6
+ import * as Context from "effect/Context";
7
+ import * as Effect from "effect/Effect";
8
+ import * as Encoding from "effect/Encoding";
9
+ import { dual } from "effect/Function";
10
+ import * as Option from "effect/Option";
11
+ import * as Predicate from "effect/Predicate";
12
+ import { AiResponse, ToolCallId, WithResolved } from "./AiResponse.js";
13
+ import * as AiRole from "./AiRole.js";
14
+ const constDisableValidation = {
15
+ disableValidation: true
16
+ };
17
+ /**
18
+ * @since 1.0.0
19
+ * @category parts
20
+ */
21
+ export const PartTypeId = /*#__PURE__*/Symbol("@effect/ai/AiInput/Part");
22
+ /**
23
+ * @since 1.0.0
24
+ * @category parts
25
+ */
26
+ export class TextPart extends /*#__PURE__*/Schema_.TaggedClass("@effect/ai/AiInput/TextPart")("Text", {
27
+ content: Schema_.String
28
+ }) {
29
+ /**
30
+ * @since 1.0.0
31
+ */
32
+ [PartTypeId] = PartTypeId;
33
+ /**
34
+ * @since 1.0.0
35
+ */
36
+ static fromContent(content) {
37
+ return new TextPart({
38
+ content
39
+ }, constDisableValidation);
40
+ }
41
+ }
42
+ /**
43
+ * @since 1.0.0
44
+ * @category parts
45
+ */
46
+ export const ImageQuality = /*#__PURE__*/Schema_.Literal("low", "high", "auto");
47
+ /**
48
+ * @since 1.0.0
49
+ * @category parts
50
+ */
51
+ export class ImageUrlPart extends /*#__PURE__*/Schema_.TaggedClass("@effect/ai/AiInput/ImageUrlPart")("ImageUrl", {
52
+ url: Schema_.String,
53
+ quality: /*#__PURE__*/ImageQuality.pipe(Schema_.propertySignature, /*#__PURE__*/Schema_.withConstructorDefault(() => "auto"))
54
+ }) {
55
+ /**
56
+ * @since 1.0.0
57
+ */
58
+ [PartTypeId] = PartTypeId;
59
+ }
60
+ const base64ContentTypeRegex = /^data:(.*?);base64$/;
61
+ /**
62
+ * @since 1.0.0
63
+ * @category base64
64
+ */
65
+ export const Base64DataUrl = /*#__PURE__*/Schema_.transformOrFail( /*#__PURE__*/Schema_.String.annotations({
66
+ title: "Base64 Data URL",
67
+ description: "A base64 data URL"
68
+ }), /*#__PURE__*/Schema_.Struct({
69
+ data: Schema_.Uint8ArrayFromSelf,
70
+ contentType: Schema_.String
71
+ }), {
72
+ decode(base64Url, _, ast) {
73
+ const commaIndex = base64Url.indexOf(",");
74
+ if (commaIndex === -1) {
75
+ return ParseResult.fail(new ParseResult.Type(ast, base64Url));
76
+ }
77
+ const header = base64Url.slice(0, commaIndex);
78
+ const data = base64Url.slice(commaIndex + 1);
79
+ const contentType = base64ContentTypeRegex.exec(header);
80
+ if (contentType === null) {
81
+ return ParseResult.fail(new ParseResult.Type(ast, base64Url));
82
+ }
83
+ return Encoding.decodeBase64(data).pipe(ParseResult.mapError(_ => new ParseResult.Type(ast, base64Url)), ParseResult.map(data => ({
84
+ data,
85
+ contentType: contentType[1]
86
+ })));
87
+ },
88
+ encode({
89
+ contentType,
90
+ data
91
+ }) {
92
+ const base64 = Encoding.encodeBase64(data);
93
+ return ParseResult.succeed(`data:${contentType};base64,${base64}`);
94
+ }
95
+ });
96
+ /**
97
+ * @since 1.0.0
98
+ * @category parts
99
+ */
100
+ export class ImagePart extends /*#__PURE__*/Schema_.TaggedClass("@effect/ai/AiInput/ImagePart")("Image", {
101
+ image: Base64DataUrl,
102
+ quality: /*#__PURE__*/ImageQuality.pipe(Schema_.propertySignature, /*#__PURE__*/Schema_.withConstructorDefault(() => "auto"))
103
+ }) {
104
+ /**
105
+ * @since 1.0.0
106
+ */
107
+ [PartTypeId] = PartTypeId;
108
+ /**
109
+ * @since 1.0.0
110
+ */
111
+ static fromPath(path, quality = "auto") {
112
+ return FileSystem.FileSystem.pipe(Effect.bindTo("fs"), Effect.bind("Path", () => Path.Path), Effect.bind("data", ({
113
+ fs
114
+ }) => fs.readFile(path)), Effect.map(({
115
+ Path,
116
+ data
117
+ }) => {
118
+ const ext = Path.extname(path);
119
+ let contentType;
120
+ switch (ext) {
121
+ case ".jpg":
122
+ case ".jpeg":
123
+ {
124
+ contentType = "image/jpeg";
125
+ break;
126
+ }
127
+ default:
128
+ {
129
+ if (ext.startsWith(".")) {
130
+ contentType = `image/${ext.slice(1)}`;
131
+ } else {
132
+ contentType = "image/png";
133
+ }
134
+ break;
135
+ }
136
+ }
137
+ return new ImagePart({
138
+ image: {
139
+ data,
140
+ contentType
141
+ },
142
+ quality
143
+ }, constDisableValidation);
144
+ }));
145
+ }
146
+ get asDataUri() {
147
+ const base64 = Encoding.encodeBase64(this.image.data);
148
+ return `data:${this.image.contentType};base64,${base64}`;
149
+ }
150
+ }
151
+ /**
152
+ * @since 1.0.0
153
+ * @category parts
154
+ */
155
+ export class ToolCallPart extends /*#__PURE__*/Schema_.TaggedClass("@effect/ai/AiInput/ToolCallPart")("ToolCall", {
156
+ id: ToolCallId,
157
+ name: Schema_.String,
158
+ params: Schema_.Unknown
159
+ }) {
160
+ /**
161
+ * @since 1.0.0
162
+ */
163
+ [PartTypeId] = PartTypeId;
164
+ }
165
+ /**
166
+ * @since 1.0.0
167
+ * @category parts
168
+ */
169
+ export class ToolCallResolvedPart extends /*#__PURE__*/Schema_.TaggedClass("@effect/ai/AiInput/ToolCallResolvedPart")("ToolCallResolved", {
170
+ toolCallId: ToolCallId,
171
+ value: Schema_.Unknown
172
+ }) {
173
+ /**
174
+ * @since 1.0.0
175
+ */
176
+ [PartTypeId] = PartTypeId;
177
+ }
178
+ /**
179
+ * @since 1.0.0
180
+ * @category parts
181
+ */
182
+ export const isPart = u => Predicate.hasProperty(u, PartTypeId);
183
+ /**
184
+ * @since 1.0.0
185
+ * @category parts
186
+ */
187
+ export const Part = /*#__PURE__*/Schema_.Union(TextPart, ToolCallPart, ToolCallResolvedPart, ImagePart, ImageUrlPart);
188
+ /**
189
+ * @since 1.0.0
190
+ * @category message
191
+ */
192
+ export const MessageTypeId = /*#__PURE__*/Symbol("@effect/ai/AiInput/Message");
193
+ /**
194
+ * @since 1.0.0
195
+ * @category message
196
+ */
197
+ export class Message extends /*#__PURE__*/Schema_.Class("@effect/ai/AiInput/Message")({
198
+ role: AiRole.AiRole,
199
+ parts: /*#__PURE__*/Schema_.Chunk(Part)
200
+ }) {
201
+ /**
202
+ * @since 1.0.0
203
+ */
204
+ [MessageTypeId] = MessageTypeId;
205
+ /**
206
+ * @since 1.0.0
207
+ */
208
+ static is(u) {
209
+ return Predicate.hasProperty(u, MessageTypeId);
210
+ }
211
+ /**
212
+ * @since 1.0.0
213
+ */
214
+ static fromInput(input, role = AiRole.user) {
215
+ if (typeof input === "string") {
216
+ return new Message({
217
+ role,
218
+ parts: Chunk.of(TextPart.fromContent(input))
219
+ }, constDisableValidation);
220
+ } else if (isPart(input)) {
221
+ return new Message({
222
+ role,
223
+ parts: Chunk.of(input)
224
+ }, constDisableValidation);
225
+ }
226
+ return new Message({
227
+ role,
228
+ parts: Chunk.fromIterable(input)
229
+ }, constDisableValidation);
230
+ }
231
+ /**
232
+ * @since 1.0.0
233
+ */
234
+ static fromResponse(response) {
235
+ if (Chunk.isEmpty(response.parts)) {
236
+ return Option.none();
237
+ }
238
+ return Option.some(new Message({
239
+ role: response.role,
240
+ parts: Chunk.map(response.parts, part => {
241
+ switch (part._tag) {
242
+ case "Text":
243
+ {
244
+ return TextPart.fromContent(part.content);
245
+ }
246
+ case "ToolCall":
247
+ {
248
+ return new ToolCallPart(part, constDisableValidation);
249
+ }
250
+ case "ImageUrl":
251
+ {
252
+ return new ImageUrlPart(part, constDisableValidation);
253
+ }
254
+ }
255
+ })
256
+ }, constDisableValidation));
257
+ }
258
+ /**
259
+ * @since 1.0.0
260
+ */
261
+ static fromWithResolved(response) {
262
+ const toolParts = [];
263
+ for (const [toolCallId, value] of response.encoded) {
264
+ toolParts.push(new ToolCallResolvedPart({
265
+ toolCallId,
266
+ value
267
+ }, constDisableValidation));
268
+ }
269
+ const toolPartsChunk = Chunk.unsafeFromArray(toolParts);
270
+ return Option.match(Message.fromResponse(response.response), {
271
+ onNone: () => new Message({
272
+ role: AiRole.model,
273
+ parts: toolPartsChunk
274
+ }, constDisableValidation),
275
+ onSome: message => new Message({
276
+ role: message.role,
277
+ parts: Chunk.appendAll(message.parts, toolPartsChunk)
278
+ }, constDisableValidation)
279
+ });
280
+ }
281
+ }
282
+ /**
283
+ * @since 1.0.0
284
+ * @category constructors
285
+ */
286
+ export const make = (input, options) => {
287
+ if (typeof input !== "string" && Predicate.isIterable(input)) {
288
+ const chunk = Chunk.fromIterable(input);
289
+ if (Chunk.isEmpty(chunk)) {
290
+ return chunk;
291
+ } else if (Message.is(Chunk.unsafeHead(chunk))) {
292
+ return chunk;
293
+ }
294
+ return Chunk.of(Message.fromInput(chunk, options?.role));
295
+ } else if (AiResponse.is(input)) {
296
+ return Option.match(Message.fromResponse(input), {
297
+ onNone: Chunk.empty,
298
+ onSome: Chunk.of
299
+ });
300
+ } else if (WithResolved.is(input)) {
301
+ return Chunk.of(Message.fromWithResolved(input));
302
+ } else if (Message.is(input)) {
303
+ return Chunk.of(input);
304
+ }
305
+ return Chunk.of(Message.fromInput(input, options?.role));
306
+ };
307
+ /**
308
+ * @since 1.0.0
309
+ * @category constructors
310
+ */
311
+ export const empty = /*#__PURE__*/Chunk.empty();
312
+ /**
313
+ * @since 1.0.0
314
+ * @category schemas
315
+ */
316
+ export const Schema = /*#__PURE__*/Schema_.Chunk(Message);
317
+ /**
318
+ * @since 1.0.0
319
+ * @category schemas
320
+ */
321
+ export const SchemaJson = /*#__PURE__*/Schema_.parseJson(Schema);
322
+ /**
323
+ * @since 1.0.0
324
+ * @category system
325
+ */
326
+ export class SystemInstruction extends /*#__PURE__*/Context.Tag("@effect/ai/AiInput/SystemInstruction")() {}
327
+ /**
328
+ * @since 1.0.0
329
+ * @category system
330
+ */
331
+ export const provideSystem = /*#__PURE__*/dual(2, (effect, input) => Effect.provideService(effect, SystemInstruction, input));
332
+ //# sourceMappingURL=AiInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AiInput.js","names":["FileSystem","Path","ParseResult","Schema_","Chunk","Context","Effect","Encoding","dual","Option","Predicate","AiResponse","ToolCallId","WithResolved","AiRole","constDisableValidation","disableValidation","PartTypeId","Symbol","TextPart","TaggedClass","content","String","fromContent","ImageQuality","Literal","ImageUrlPart","url","quality","pipe","propertySignature","withConstructorDefault","base64ContentTypeRegex","Base64DataUrl","transformOrFail","annotations","title","description","Struct","data","Uint8ArrayFromSelf","contentType","decode","base64Url","_","ast","commaIndex","indexOf","fail","Type","header","slice","exec","decodeBase64","mapError","map","encode","base64","encodeBase64","succeed","ImagePart","image","fromPath","path","bindTo","bind","fs","readFile","ext","extname","startsWith","asDataUri","ToolCallPart","id","name","params","Unknown","ToolCallResolvedPart","toolCallId","value","isPart","u","hasProperty","Part","Union","MessageTypeId","Message","Class","role","parts","is","fromInput","input","user","of","fromIterable","fromResponse","response","isEmpty","none","some","part","_tag","fromWithResolved","toolParts","encoded","push","toolPartsChunk","unsafeFromArray","match","onNone","model","onSome","message","appendAll","make","options","isIterable","chunk","unsafeHead","empty","Schema","SchemaJson","parseJson","SystemInstruction","Tag","provideSystem","effect","provideService"],"sources":["../../src/AiInput.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,281 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import * as Schema from "@effect/schema/Schema";
5
+ import * as Chunk from "effect/Chunk";
6
+ import * as Data from "effect/Data";
7
+ import * as Effect from "effect/Effect";
8
+ import * as Iterable from "effect/Iterable";
9
+ import * as Option from "effect/Option";
10
+ import * as Predicate from "effect/Predicate";
11
+ import { AiError } from "./AiError.js";
12
+ import * as AiRole from "./AiRole.js";
13
+ /**
14
+ * @since 1.0.0
15
+ * @category type ids
16
+ */
17
+ export const TypeId = /*#__PURE__*/Symbol("@effect/ai/AiResponse");
18
+ /**
19
+ * @since 1.0.0
20
+ * @category parts
21
+ */
22
+ export const PartTypeId = /*#__PURE__*/Symbol("@effect/ai/AiResponse/Part");
23
+ const constDisableValidation = {
24
+ disableValidation: true
25
+ };
26
+ /**
27
+ * @since 1.0.0
28
+ * @category parts
29
+ */
30
+ export class TextPart extends /*#__PURE__*/Schema.TaggedClass("@effect/ai/AiResponse/TextPart")("Text", {
31
+ content: Schema.String
32
+ }) {
33
+ /**
34
+ * @since 1.0.0
35
+ */
36
+ [PartTypeId] = PartTypeId;
37
+ /**
38
+ * @since 1.0.0
39
+ */
40
+ static fromContent(content) {
41
+ return new TextPart({
42
+ content
43
+ }, constDisableValidation);
44
+ }
45
+ }
46
+ /**
47
+ * @since 1.0.0
48
+ * @category parts
49
+ */
50
+ export const ToolCallId = /*#__PURE__*/Schema.String.pipe( /*#__PURE__*/Schema.brand("ToolCallId"));
51
+ /**
52
+ * @since 1.0.0
53
+ * @category parts
54
+ */
55
+ export class ToolCallPart extends /*#__PURE__*/Schema.TaggedClass("@effect/ai/AiResponse/ToolCallPart")("ToolCall", {
56
+ id: ToolCallId,
57
+ name: Schema.String,
58
+ params: Schema.Unknown
59
+ }) {
60
+ /**
61
+ * @since 1.0.0
62
+ */
63
+ [PartTypeId] = PartTypeId;
64
+ /**
65
+ * @since 1.0.0
66
+ */
67
+ static fromJson({
68
+ id,
69
+ name,
70
+ params
71
+ }) {
72
+ return Effect.try({
73
+ try() {
74
+ return new ToolCallPart({
75
+ id: ToolCallId.make(id),
76
+ name,
77
+ params: JSON.parse(params)
78
+ }, constDisableValidation);
79
+ },
80
+ catch: cause => new AiError({
81
+ module: "AiResponse",
82
+ method: "ToolCall.fromJson",
83
+ description: "Failed to parse parameters",
84
+ cause
85
+ })
86
+ });
87
+ }
88
+ /**
89
+ * @since 1.0.0
90
+ */
91
+ static fromUnknown({
92
+ id,
93
+ name,
94
+ params
95
+ }) {
96
+ return new ToolCallPart({
97
+ id: ToolCallId.make(id),
98
+ name,
99
+ params
100
+ }, constDisableValidation);
101
+ }
102
+ }
103
+ /**
104
+ * @since 1.0.0
105
+ * @category parts
106
+ */
107
+ export class ImageUrlPart extends /*#__PURE__*/Schema.TaggedClass("@effect/ai/AiResponse/ImageUrlPart")("ImageUrl", {
108
+ url: Schema.String
109
+ }) {
110
+ /**
111
+ * @since 1.0.0
112
+ */
113
+ [PartTypeId] = PartTypeId;
114
+ }
115
+ /**
116
+ * @since 1.0.0
117
+ * @category parts
118
+ */
119
+ export const Part = /*#__PURE__*/Schema.Union(TextPart, ToolCallPart, ImageUrlPart);
120
+ /**
121
+ * @since 1.0.0
122
+ * @category models
123
+ */
124
+ export class AiResponse extends /*#__PURE__*/Schema.Class("@effect/ai/AiResponse")({
125
+ role: AiRole.AiRole,
126
+ parts: /*#__PURE__*/Schema.Chunk(Part)
127
+ }) {
128
+ /**
129
+ * @since 1.0.0
130
+ */
131
+ [TypeId] = TypeId;
132
+ /**
133
+ * @since 1.0.0
134
+ */
135
+ static is(u) {
136
+ return Predicate.hasProperty(u, TypeId);
137
+ }
138
+ /**
139
+ * @since 1.0.0
140
+ */
141
+ static empty = /*#__PURE__*/new AiResponse({
142
+ role: AiRole.model,
143
+ parts: /*#__PURE__*/Chunk.empty()
144
+ });
145
+ /**
146
+ * @since 1.0.0
147
+ */
148
+ static fromText(options) {
149
+ return new AiResponse({
150
+ role: options.role,
151
+ parts: Chunk.of(TextPart.fromContent(options.content))
152
+ }, constDisableValidation);
153
+ }
154
+ /**
155
+ * @since 1.0.0
156
+ */
157
+ get text() {
158
+ let text = "";
159
+ let found = false;
160
+ for (const part of this.parts) {
161
+ if (part._tag === "Text") {
162
+ text += found ? "\n\n" + part.content : part.content;
163
+ found = true;
164
+ }
165
+ }
166
+ return text;
167
+ }
168
+ /**
169
+ * @since 1.0.0
170
+ */
171
+ get imageUrl() {
172
+ for (const part of this.parts) {
173
+ if (part._tag === "ImageUrl") {
174
+ return Option.some(part.url);
175
+ }
176
+ }
177
+ return Option.none();
178
+ }
179
+ /**
180
+ * @since 1.0.0
181
+ */
182
+ withToolCallsJson(calls) {
183
+ return Effect.forEach(calls, call => ToolCallPart.fromJson(call)).pipe(Effect.map(parts => new AiResponse({
184
+ role: this.role,
185
+ parts: Chunk.appendAll(this.parts, Chunk.unsafeFromArray(parts))
186
+ }, constDisableValidation)));
187
+ }
188
+ /**
189
+ * @since 1.0.0
190
+ */
191
+ withToolCallsUnknown(calls) {
192
+ return new AiResponse({
193
+ role: this.role,
194
+ parts: Chunk.fromIterable(calls).pipe(Chunk.map(part => ToolCallPart.fromUnknown(part)))
195
+ }, constDisableValidation);
196
+ }
197
+ /**
198
+ * @since 1.0.0
199
+ */
200
+ concat(that) {
201
+ if (Chunk.isEmpty(that.parts)) {
202
+ return this;
203
+ }
204
+ const lastPart = Chunk.last(this.parts);
205
+ if (Option.isNone(lastPart)) {
206
+ return that;
207
+ }
208
+ const newParts = [];
209
+ let content = lastPart.value._tag === "Text" ? lastPart.value.content : "";
210
+ for (const part of that.parts) {
211
+ if (part._tag === "Text") {
212
+ content += part.content;
213
+ }
214
+ }
215
+ if (content.length > 0) {
216
+ newParts.push(TextPart.fromContent(content));
217
+ }
218
+ return newParts.length === 0 ? this : new AiResponse({
219
+ role: that.role,
220
+ parts: Chunk.appendAll(Chunk.dropRight(this.parts, 1), Chunk.unsafeFromArray(newParts))
221
+ }, constDisableValidation);
222
+ }
223
+ }
224
+ /**
225
+ * @since 1.0.0
226
+ * @category tools
227
+ */
228
+ export const WithResolvedTypeId = /*#__PURE__*/Symbol("@effect/ai/AiResponse/WithResolved");
229
+ /**
230
+ * @since 1.0.0
231
+ * @category tools
232
+ */
233
+ export class WithResolved extends Data.Class {
234
+ /**
235
+ * @since 1.0.0
236
+ */
237
+ [WithResolvedTypeId] = WithResolvedTypeId;
238
+ /**
239
+ * @since 1.0.0
240
+ */
241
+ static is(u) {
242
+ return Predicate.hasProperty(u, WithResolvedTypeId);
243
+ }
244
+ /**
245
+ * @since 1.0.0
246
+ */
247
+ static empty = /*#__PURE__*/new WithResolved({
248
+ response: AiResponse.empty,
249
+ resolved: /*#__PURE__*/new Map(),
250
+ encoded: /*#__PURE__*/new Map()
251
+ });
252
+ /**
253
+ * @since 1.0.0
254
+ */
255
+ get values() {
256
+ return Array.from(this.resolved.values());
257
+ }
258
+ /**
259
+ * @since 1.0.0
260
+ */
261
+ get value() {
262
+ return Iterable.head(this.resolved.values());
263
+ }
264
+ /**
265
+ * @since 1.0.0
266
+ */
267
+ get unsafeValue() {
268
+ return Iterable.unsafeHead(this.resolved.values());
269
+ }
270
+ /**
271
+ * @since 1.0.0
272
+ */
273
+ concat(that) {
274
+ return new WithResolved({
275
+ response: this.response.concat(that.response),
276
+ resolved: that.resolved.size === 0 ? this.resolved : new Map([...this.resolved, ...that.resolved]),
277
+ encoded: that.encoded.size === 0 ? this.encoded : new Map([...this.encoded, ...that.encoded])
278
+ });
279
+ }
280
+ }
281
+ //# sourceMappingURL=AiResponse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AiResponse.js","names":["Schema","Chunk","Data","Effect","Iterable","Option","Predicate","AiError","AiRole","TypeId","Symbol","PartTypeId","constDisableValidation","disableValidation","TextPart","TaggedClass","content","String","fromContent","ToolCallId","pipe","brand","ToolCallPart","id","name","params","Unknown","fromJson","try","make","JSON","parse","catch","cause","module","method","description","fromUnknown","ImageUrlPart","url","Part","Union","AiResponse","Class","role","parts","is","u","hasProperty","empty","model","fromText","options","of","text","found","part","_tag","imageUrl","some","none","withToolCallsJson","calls","forEach","call","map","appendAll","unsafeFromArray","withToolCallsUnknown","fromIterable","concat","that","isEmpty","lastPart","last","isNone","newParts","value","length","push","dropRight","WithResolvedTypeId","WithResolved","response","resolved","Map","encoded","values","Array","from","head","unsafeValue","unsafeHead","size"],"sources":["../../src/AiResponse.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}