@effect/ai 0.26.0 → 0.27.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 (188) hide show
  1. package/Chat/package.json +6 -0
  2. package/EmbeddingModel/package.json +6 -0
  3. package/IdGenerator/package.json +6 -0
  4. package/LanguageModel/package.json +6 -0
  5. package/Model/package.json +6 -0
  6. package/Prompt/package.json +6 -0
  7. package/Response/package.json +6 -0
  8. package/Telemetry/package.json +6 -0
  9. package/Tool/package.json +6 -0
  10. package/Toolkit/package.json +6 -0
  11. package/dist/cjs/AiError.js +575 -11
  12. package/dist/cjs/AiError.js.map +1 -1
  13. package/dist/cjs/Chat.js +302 -0
  14. package/dist/cjs/Chat.js.map +1 -0
  15. package/dist/cjs/EmbeddingModel.js +184 -0
  16. package/dist/cjs/EmbeddingModel.js.map +1 -0
  17. package/dist/cjs/IdGenerator.js +255 -0
  18. package/dist/cjs/IdGenerator.js.map +1 -0
  19. package/dist/cjs/LanguageModel.js +584 -0
  20. package/dist/cjs/LanguageModel.js.map +1 -0
  21. package/dist/cjs/McpServer.js +12 -4
  22. package/dist/cjs/McpServer.js.map +1 -1
  23. package/dist/cjs/Model.js +118 -0
  24. package/dist/cjs/Model.js.map +1 -0
  25. package/dist/cjs/Prompt.js +649 -0
  26. package/dist/cjs/Prompt.js.map +1 -0
  27. package/dist/cjs/Response.js +635 -0
  28. package/dist/cjs/Response.js.map +1 -0
  29. package/dist/cjs/Telemetry.js +176 -0
  30. package/dist/cjs/Telemetry.js.map +1 -0
  31. package/dist/cjs/Tokenizer.js +87 -8
  32. package/dist/cjs/Tokenizer.js.map +1 -1
  33. package/dist/cjs/Tool.js +556 -0
  34. package/dist/cjs/Tool.js.map +1 -0
  35. package/dist/cjs/Toolkit.js +279 -0
  36. package/dist/cjs/Toolkit.js.map +1 -0
  37. package/dist/cjs/index.js +21 -19
  38. package/dist/dts/AiError.d.ts +577 -9
  39. package/dist/dts/AiError.d.ts.map +1 -1
  40. package/dist/dts/Chat.d.ts +356 -0
  41. package/dist/dts/Chat.d.ts.map +1 -0
  42. package/dist/dts/EmbeddingModel.d.ts +153 -0
  43. package/dist/dts/EmbeddingModel.d.ts.map +1 -0
  44. package/dist/dts/IdGenerator.d.ts +272 -0
  45. package/dist/dts/IdGenerator.d.ts.map +1 -0
  46. package/dist/dts/LanguageModel.d.ts +458 -0
  47. package/dist/dts/LanguageModel.d.ts.map +1 -0
  48. package/dist/dts/McpSchema.d.ts +25 -25
  49. package/dist/dts/McpServer.d.ts +6 -4
  50. package/dist/dts/McpServer.d.ts.map +1 -1
  51. package/dist/dts/Model.d.ts +124 -0
  52. package/dist/dts/Model.d.ts.map +1 -0
  53. package/dist/dts/Prompt.d.ts +1119 -0
  54. package/dist/dts/Prompt.d.ts.map +1 -0
  55. package/dist/dts/Response.d.ts +1519 -0
  56. package/dist/dts/Response.d.ts.map +1 -0
  57. package/dist/dts/Telemetry.d.ts +520 -0
  58. package/dist/dts/Telemetry.d.ts.map +1 -0
  59. package/dist/dts/Tokenizer.d.ts +131 -13
  60. package/dist/dts/Tokenizer.d.ts.map +1 -1
  61. package/dist/dts/Tool.d.ts +876 -0
  62. package/dist/dts/Tool.d.ts.map +1 -0
  63. package/dist/dts/Toolkit.d.ts +310 -0
  64. package/dist/dts/Toolkit.d.ts.map +1 -0
  65. package/dist/dts/index.d.ts +498 -13
  66. package/dist/dts/index.d.ts.map +1 -1
  67. package/dist/esm/AiError.js +570 -10
  68. package/dist/esm/AiError.js.map +1 -1
  69. package/dist/esm/Chat.js +291 -0
  70. package/dist/esm/Chat.js.map +1 -0
  71. package/dist/esm/EmbeddingModel.js +173 -0
  72. package/dist/esm/EmbeddingModel.js.map +1 -0
  73. package/dist/esm/IdGenerator.js +245 -0
  74. package/dist/esm/IdGenerator.js.map +1 -0
  75. package/dist/esm/LanguageModel.js +572 -0
  76. package/dist/esm/LanguageModel.js.map +1 -0
  77. package/dist/esm/McpServer.js +12 -4
  78. package/dist/esm/McpServer.js.map +1 -1
  79. package/dist/esm/Model.js +108 -0
  80. package/dist/esm/Model.js.map +1 -0
  81. package/dist/esm/Prompt.js +633 -0
  82. package/dist/esm/Prompt.js.map +1 -0
  83. package/dist/esm/Response.js +619 -0
  84. package/dist/esm/Response.js.map +1 -0
  85. package/dist/esm/Telemetry.js +166 -0
  86. package/dist/esm/Telemetry.js.map +1 -0
  87. package/dist/esm/Tokenizer.js +87 -8
  88. package/dist/esm/Tokenizer.js.map +1 -1
  89. package/dist/esm/Tool.js +534 -0
  90. package/dist/esm/Tool.js.map +1 -0
  91. package/dist/esm/Toolkit.js +269 -0
  92. package/dist/esm/Toolkit.js.map +1 -0
  93. package/dist/esm/index.js +498 -13
  94. package/dist/esm/index.js.map +1 -1
  95. package/package.json +76 -68
  96. package/src/AiError.ts +739 -9
  97. package/src/Chat.ts +546 -0
  98. package/src/EmbeddingModel.ts +311 -0
  99. package/src/IdGenerator.ts +320 -0
  100. package/src/LanguageModel.ts +1074 -0
  101. package/src/McpServer.ts +337 -194
  102. package/src/Model.ts +155 -0
  103. package/src/Prompt.ts +1616 -0
  104. package/src/Response.ts +2131 -0
  105. package/src/Telemetry.ts +655 -0
  106. package/src/Tokenizer.ts +145 -24
  107. package/src/Tool.ts +1267 -0
  108. package/src/Toolkit.ts +516 -0
  109. package/src/index.ts +499 -13
  110. package/AiChat/package.json +0 -6
  111. package/AiEmbeddingModel/package.json +0 -6
  112. package/AiInput/package.json +0 -6
  113. package/AiLanguageModel/package.json +0 -6
  114. package/AiModel/package.json +0 -6
  115. package/AiResponse/package.json +0 -6
  116. package/AiTelemetry/package.json +0 -6
  117. package/AiTool/package.json +0 -6
  118. package/AiToolkit/package.json +0 -6
  119. package/dist/cjs/AiChat.js +0 -122
  120. package/dist/cjs/AiChat.js.map +0 -1
  121. package/dist/cjs/AiEmbeddingModel.js +0 -109
  122. package/dist/cjs/AiEmbeddingModel.js.map +0 -1
  123. package/dist/cjs/AiInput.js +0 -458
  124. package/dist/cjs/AiInput.js.map +0 -1
  125. package/dist/cjs/AiLanguageModel.js +0 -351
  126. package/dist/cjs/AiLanguageModel.js.map +0 -1
  127. package/dist/cjs/AiModel.js +0 -37
  128. package/dist/cjs/AiModel.js.map +0 -1
  129. package/dist/cjs/AiResponse.js +0 -681
  130. package/dist/cjs/AiResponse.js.map +0 -1
  131. package/dist/cjs/AiTelemetry.js +0 -58
  132. package/dist/cjs/AiTelemetry.js.map +0 -1
  133. package/dist/cjs/AiTool.js +0 -150
  134. package/dist/cjs/AiTool.js.map +0 -1
  135. package/dist/cjs/AiToolkit.js +0 -157
  136. package/dist/cjs/AiToolkit.js.map +0 -1
  137. package/dist/cjs/internal/common.js +0 -21
  138. package/dist/cjs/internal/common.js.map +0 -1
  139. package/dist/dts/AiChat.d.ts +0 -101
  140. package/dist/dts/AiChat.d.ts.map +0 -1
  141. package/dist/dts/AiEmbeddingModel.d.ts +0 -65
  142. package/dist/dts/AiEmbeddingModel.d.ts.map +0 -1
  143. package/dist/dts/AiInput.d.ts +0 -590
  144. package/dist/dts/AiInput.d.ts.map +0 -1
  145. package/dist/dts/AiLanguageModel.d.ts +0 -302
  146. package/dist/dts/AiLanguageModel.d.ts.map +0 -1
  147. package/dist/dts/AiModel.d.ts +0 -25
  148. package/dist/dts/AiModel.d.ts.map +0 -1
  149. package/dist/dts/AiResponse.d.ts +0 -863
  150. package/dist/dts/AiResponse.d.ts.map +0 -1
  151. package/dist/dts/AiTelemetry.d.ts +0 -242
  152. package/dist/dts/AiTelemetry.d.ts.map +0 -1
  153. package/dist/dts/AiTool.d.ts +0 -334
  154. package/dist/dts/AiTool.d.ts.map +0 -1
  155. package/dist/dts/AiToolkit.d.ts +0 -96
  156. package/dist/dts/AiToolkit.d.ts.map +0 -1
  157. package/dist/dts/internal/common.d.ts +0 -2
  158. package/dist/dts/internal/common.d.ts.map +0 -1
  159. package/dist/esm/AiChat.js +0 -111
  160. package/dist/esm/AiChat.js.map +0 -1
  161. package/dist/esm/AiEmbeddingModel.js +0 -98
  162. package/dist/esm/AiEmbeddingModel.js.map +0 -1
  163. package/dist/esm/AiInput.js +0 -433
  164. package/dist/esm/AiInput.js.map +0 -1
  165. package/dist/esm/AiLanguageModel.js +0 -340
  166. package/dist/esm/AiLanguageModel.js.map +0 -1
  167. package/dist/esm/AiModel.js +0 -29
  168. package/dist/esm/AiModel.js.map +0 -1
  169. package/dist/esm/AiResponse.js +0 -657
  170. package/dist/esm/AiResponse.js.map +0 -1
  171. package/dist/esm/AiTelemetry.js +0 -48
  172. package/dist/esm/AiTelemetry.js.map +0 -1
  173. package/dist/esm/AiTool.js +0 -134
  174. package/dist/esm/AiTool.js.map +0 -1
  175. package/dist/esm/AiToolkit.js +0 -147
  176. package/dist/esm/AiToolkit.js.map +0 -1
  177. package/dist/esm/internal/common.js +0 -14
  178. package/dist/esm/internal/common.js.map +0 -1
  179. package/src/AiChat.ts +0 -251
  180. package/src/AiEmbeddingModel.ts +0 -169
  181. package/src/AiInput.ts +0 -602
  182. package/src/AiLanguageModel.ts +0 -685
  183. package/src/AiModel.ts +0 -53
  184. package/src/AiResponse.ts +0 -986
  185. package/src/AiTelemetry.ts +0 -333
  186. package/src/AiTool.ts +0 -579
  187. package/src/AiToolkit.ts +0 -265
  188. package/src/internal/common.ts +0 -12
@@ -0,0 +1,649 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.merge = exports.makePart = exports.makeMessage = exports.make = exports.isPrompt = exports.isPart = exports.isMessage = exports.fromResponseParts = exports.fromMessages = exports.empty = exports.UserMessage = exports.TypeId = exports.ToolResultPart = exports.ToolMessage = exports.ToolCallPart = exports.TextPart = exports.SystemMessage = exports.ReasoningPart = exports.ProviderOptions = exports.Prompt = exports.PartTypeId = exports.MessageTypeId = exports.Message = exports.FromJson = exports.FilePart = exports.AssistantMessage = void 0;
7
+ var _Function = require("effect/Function");
8
+ var Predicate = _interopRequireWildcard(require("effect/Predicate"));
9
+ var Schema = _interopRequireWildcard(require("effect/Schema"));
10
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
11
+ /**
12
+ * The `Prompt` module provides several data structures to simplify creating and
13
+ * combining prompts.
14
+ *
15
+ * This module defines the complete structure of a conversation with a large
16
+ * language model, including messages, content parts, and provider-specific
17
+ * options. It supports rich content types like text, files, tool calls, and
18
+ * reasoning.
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * import { Prompt } from "@effect/ai"
23
+ *
24
+ * // Create a structured conversation
25
+ * const conversation = Prompt.make([
26
+ * {
27
+ * role: "system",
28
+ * content: "You are a helpful assistant specialized in mathematics."
29
+ * },
30
+ * {
31
+ * role: "user",
32
+ * content: [{
33
+ * type: "text",
34
+ * text: "What is the derivative of x²?"
35
+ * }]
36
+ * },
37
+ * {
38
+ * role: "assistant",
39
+ * content: [{
40
+ * type: "text",
41
+ * text: "The derivative of x² is 2x."
42
+ * }]
43
+ * }
44
+ * ])
45
+ * ```
46
+ *
47
+ * @example
48
+ * ```ts
49
+ * import { Prompt } from "@effect/ai"
50
+ *
51
+ * // Merge multiple prompts
52
+ * const systemPrompt = Prompt.make([{
53
+ * role: "system",
54
+ * content: "You are a coding assistant."
55
+ * }])
56
+ *
57
+ * const userPrompt = Prompt.make("Help me write a function")
58
+ *
59
+ * const combined = Prompt.merge(systemPrompt, userPrompt)
60
+ * ```
61
+ *
62
+ * @since 1.0.0
63
+ */
64
+
65
+ const constEmptyObject = () => ({});
66
+ // =============================================================================
67
+ // Options
68
+ // =============================================================================
69
+ /**
70
+ * Schema for provider-specific options which can be attached to both content
71
+ * parts and messages, enabling provider-specific behavior.
72
+ *
73
+ * Provider-specific options are namespaced by provider and have the structure:
74
+ *
75
+ * ```
76
+ * {
77
+ * "<provider-specific-key>": {
78
+ * // Provider-specific options
79
+ * }
80
+ * }
81
+ * ```
82
+ *
83
+ * @since 1.0.0
84
+ * @category Models
85
+ */
86
+ const ProviderOptions = exports.ProviderOptions = /*#__PURE__*/Schema.Record({
87
+ key: Schema.String,
88
+ value: /*#__PURE__*/Schema.Record({
89
+ key: Schema.String,
90
+ value: Schema.Unknown
91
+ })
92
+ });
93
+ // =============================================================================
94
+ // Base Part
95
+ // =============================================================================
96
+ /**
97
+ * Unique identifier for Part instances.
98
+ *
99
+ * @since 1.0.0
100
+ * @category Type Ids
101
+ */
102
+ const PartTypeId = exports.PartTypeId = "~effect/ai/Prompt/Part";
103
+ /**
104
+ * Type guard to check if a value is a Part.
105
+ *
106
+ * @since 1.0.0
107
+ * @category Guards
108
+ */
109
+ const isPart = u => Predicate.hasProperty(u, PartTypeId);
110
+ /**
111
+ * Creates a new content part of the specified type.
112
+ *
113
+ * @example
114
+ * ```ts
115
+ * import { Prompt } from "@effect/ai"
116
+ *
117
+ * const textPart = Prompt.makePart("text", {
118
+ * text: "Hello, world!"
119
+ * })
120
+ *
121
+ * const filePart = Prompt.makePart("file", {
122
+ * mediaType: "image/png",
123
+ * fileName: "screenshot.png",
124
+ * data: new Uint8Array([1, 2, 3])
125
+ * })
126
+ * ```
127
+ *
128
+ * @since 1.0.0
129
+ * @category Constructors
130
+ */
131
+ exports.isPart = isPart;
132
+ const makePart = (
133
+ /**
134
+ * The type of part to create.
135
+ */
136
+ type,
137
+ /**
138
+ * Parameters specific to the part type being created.
139
+ */
140
+ params) => ({
141
+ ...params,
142
+ [PartTypeId]: PartTypeId,
143
+ type,
144
+ options: params.options ?? {}
145
+ });
146
+ /**
147
+ * Schema for validation and encoding of text parts.
148
+ *
149
+ * @since 1.0.0
150
+ * @category Schemas
151
+ */
152
+ exports.makePart = makePart;
153
+ const TextPart = exports.TextPart = /*#__PURE__*/Schema.Struct({
154
+ type: Schema.Literal("text"),
155
+ text: Schema.String,
156
+ options: Schema.optionalWith(ProviderOptions, {
157
+ default: constEmptyObject
158
+ })
159
+ }).pipe(/*#__PURE__*/Schema.attachPropertySignature(PartTypeId, PartTypeId), /*#__PURE__*/Schema.annotations({
160
+ identifier: "TextPart"
161
+ }));
162
+ /**
163
+ * Schema for validation and encoding of reasoning parts.
164
+ *
165
+ * @since 1.0.0
166
+ * @category Schemas
167
+ */
168
+ const ReasoningPart = exports.ReasoningPart = /*#__PURE__*/Schema.Struct({
169
+ type: Schema.Literal("reasoning"),
170
+ text: Schema.String,
171
+ options: Schema.optionalWith(ProviderOptions, {
172
+ default: constEmptyObject
173
+ })
174
+ }).pipe(/*#__PURE__*/Schema.attachPropertySignature(PartTypeId, PartTypeId), /*#__PURE__*/Schema.annotations({
175
+ identifier: "ReasoningPart"
176
+ }));
177
+ /**
178
+ * Schema for validation and encoding of file parts.
179
+ *
180
+ * @since 1.0.0
181
+ * @category Schemas
182
+ */
183
+ const FilePart = exports.FilePart = /*#__PURE__*/Schema.Struct({
184
+ type: Schema.Literal("file"),
185
+ mediaType: Schema.String,
186
+ fileName: Schema.optional(Schema.String),
187
+ data: Schema.Union(Schema.String, Schema.Uint8ArrayFromSelf, Schema.URLFromSelf),
188
+ options: Schema.optionalWith(ProviderOptions, {
189
+ default: constEmptyObject
190
+ })
191
+ }).pipe(/*#__PURE__*/Schema.attachPropertySignature(PartTypeId, PartTypeId), /*#__PURE__*/Schema.annotations({
192
+ identifier: "FilePart"
193
+ }));
194
+ /**
195
+ * Schema for validation and encoding of tool call parts.
196
+ *
197
+ * @since 1.0.0
198
+ * @category Schemas
199
+ */
200
+ const ToolCallPart = exports.ToolCallPart = /*#__PURE__*/Schema.Struct({
201
+ type: Schema.Literal("tool-call"),
202
+ id: Schema.String,
203
+ name: Schema.String,
204
+ params: Schema.Unknown,
205
+ providerExecuted: Schema.optionalWith(Schema.Boolean, {
206
+ default: _Function.constFalse
207
+ }),
208
+ options: Schema.optionalWith(ProviderOptions, {
209
+ default: constEmptyObject
210
+ })
211
+ }).pipe(/*#__PURE__*/Schema.attachPropertySignature(PartTypeId, PartTypeId), /*#__PURE__*/Schema.annotations({
212
+ identifier: "ToolCallPart"
213
+ }));
214
+ /**
215
+ * Schema for validation and encoding of tool result parts.
216
+ *
217
+ * @since 1.0.0
218
+ * @category Schemas
219
+ */
220
+ const ToolResultPart = exports.ToolResultPart = /*#__PURE__*/Schema.Struct({
221
+ type: Schema.Literal("tool-result"),
222
+ id: Schema.String,
223
+ name: Schema.String,
224
+ result: Schema.Unknown,
225
+ options: Schema.optionalWith(ProviderOptions, {
226
+ default: constEmptyObject
227
+ })
228
+ }).pipe(/*#__PURE__*/Schema.attachPropertySignature(PartTypeId, PartTypeId), /*#__PURE__*/Schema.annotations({
229
+ identifier: "ToolResultPart"
230
+ }));
231
+ // =============================================================================
232
+ // Base Message
233
+ // =============================================================================
234
+ /**
235
+ * Unique identifier for Message instances.
236
+ *
237
+ * @since 1.0.0
238
+ * @category Type Ids
239
+ */
240
+ const MessageTypeId = exports.MessageTypeId = "~effect/ai/Prompt/Message";
241
+ /**
242
+ * Type guard to check if a value is a Message.
243
+ *
244
+ * @since 1.0.0
245
+ * @category Guards
246
+ */
247
+ const isMessage = u => Predicate.hasProperty(u, MessageTypeId);
248
+ /**
249
+ * Creates a new message with the specified role.
250
+ *
251
+ * @example
252
+ * ```ts
253
+ * import { Prompt } from "@effect/ai"
254
+ *
255
+ * const textPart = Prompt.makePart("text", {
256
+ * text: "Hello, world!"
257
+ * })
258
+ *
259
+ * const filePart = Prompt.makeMessage("user", {
260
+ * content: [textPart]
261
+ * })
262
+ * ```
263
+ *
264
+ * @since 1.0.0
265
+ * @category Constructors
266
+ */
267
+ exports.isMessage = isMessage;
268
+ const makeMessage = (role, params) => ({
269
+ ...params,
270
+ [MessageTypeId]: MessageTypeId,
271
+ role,
272
+ options: params.options ?? {}
273
+ });
274
+ /**
275
+ * Schema for validation and encoding of system messages.
276
+ *
277
+ * @since 1.0.0
278
+ * @category Schemas
279
+ */
280
+ exports.makeMessage = makeMessage;
281
+ const SystemMessage = exports.SystemMessage = /*#__PURE__*/Schema.Struct({
282
+ role: Schema.Literal("system"),
283
+ content: Schema.String,
284
+ options: Schema.optionalWith(ProviderOptions, {
285
+ default: constEmptyObject
286
+ })
287
+ }).pipe(/*#__PURE__*/Schema.attachPropertySignature(MessageTypeId, MessageTypeId), /*#__PURE__*/Schema.annotations({
288
+ identifier: "SystemMessage"
289
+ }));
290
+ /**
291
+ * Schema for validation and encoding of user messages.
292
+ *
293
+ * @since 1.0.0
294
+ * @category Schemas
295
+ */
296
+ const UserMessage = exports.UserMessage = /*#__PURE__*/Schema.Struct({
297
+ role: Schema.Literal("user"),
298
+ content: Schema.Array(Schema.Union(TextPart, FilePart)),
299
+ options: Schema.optionalWith(ProviderOptions, {
300
+ default: constEmptyObject
301
+ })
302
+ }).pipe(/*#__PURE__*/Schema.attachPropertySignature(MessageTypeId, MessageTypeId), /*#__PURE__*/Schema.annotations({
303
+ identifier: "UserMessage"
304
+ }));
305
+ /**
306
+ * Schema for validation and encoding of assistant messages.
307
+ *
308
+ * @since 1.0.0
309
+ * @category Schemas
310
+ */
311
+ const AssistantMessage = exports.AssistantMessage = /*#__PURE__*/Schema.Struct({
312
+ role: Schema.Literal("assistant"),
313
+ content: Schema.Array(Schema.Union(TextPart, FilePart, ReasoningPart, ToolCallPart, ToolResultPart)),
314
+ options: Schema.optionalWith(ProviderOptions, {
315
+ default: constEmptyObject
316
+ })
317
+ }).pipe(/*#__PURE__*/Schema.attachPropertySignature(MessageTypeId, MessageTypeId), /*#__PURE__*/Schema.annotations({
318
+ identifier: "AssistantMessage"
319
+ }));
320
+ /**
321
+ * Schema for validation and encoding of tool messages.
322
+ *
323
+ * @since 1.0.0
324
+ * @category Schemas
325
+ */
326
+ const ToolMessage = exports.ToolMessage = /*#__PURE__*/Schema.Struct({
327
+ role: Schema.Literal("tool"),
328
+ content: Schema.Array(ToolResultPart),
329
+ options: Schema.optionalWith(ProviderOptions, {
330
+ default: constEmptyObject
331
+ })
332
+ }).pipe(/*#__PURE__*/Schema.attachPropertySignature(MessageTypeId, MessageTypeId), /*#__PURE__*/Schema.annotations({
333
+ identifier: "ToolMessage"
334
+ }));
335
+ /**
336
+ * Schema for validation and encoding of messages.
337
+ *
338
+ * @since 1.0.0
339
+ * @category Schemas
340
+ */
341
+ const Message = exports.Message = /*#__PURE__*/Schema.Union(SystemMessage, UserMessage, AssistantMessage, ToolMessage);
342
+ // =============================================================================
343
+ // Prompt
344
+ // =============================================================================
345
+ /**
346
+ * Unique identifier for Prompt instances.
347
+ *
348
+ * @since 1.0.0
349
+ * @category Type Ids
350
+ */
351
+ const TypeId = exports.TypeId = "~@effect/ai/Prompt";
352
+ /**
353
+ * Type guard to check if a value is a Prompt.
354
+ *
355
+ * @since 1.0.0
356
+ * @category Guards
357
+ */
358
+ const isPrompt = u => Predicate.hasProperty(u, TypeId);
359
+ /**
360
+ * Schema for validation and encoding of prompts.
361
+ *
362
+ * @since 1.0.0
363
+ * @category Schemas
364
+ */
365
+ exports.isPrompt = isPrompt;
366
+ const Prompt = exports.Prompt = /*#__PURE__*/Schema.Struct({
367
+ content: Schema.Array(Message)
368
+ }).pipe(/*#__PURE__*/Schema.attachPropertySignature(TypeId, TypeId), /*#__PURE__*/Schema.annotations({
369
+ identifier: "Prompt"
370
+ }));
371
+ /**
372
+ * Schema for parsing a Prompt from JSON strings.
373
+ *
374
+ * @since 1.0.0
375
+ * @category Schemas
376
+ */
377
+ const FromJson = exports.FromJson = /*#__PURE__*/Schema.parseJson(Prompt);
378
+ const makePrompt = content => ({
379
+ [TypeId]: TypeId,
380
+ content
381
+ });
382
+ const decodeMessagesSync = /*#__PURE__*/Schema.decodeSync(/*#__PURE__*/Schema.Array(Message));
383
+ /**
384
+ * An empty prompt with no messages.
385
+ *
386
+ * @example
387
+ * ```ts
388
+ * import { Prompt } from "@effect/ai"
389
+ *
390
+ * const emptyPrompt = Prompt.empty
391
+ * console.log(emptyPrompt.content) // []
392
+ * ```
393
+ *
394
+ * @since 1.0.0
395
+ * @category Constructors
396
+ */
397
+ const empty = exports.empty = /*#__PURE__*/makePrompt([]);
398
+ /**
399
+ * Creates a Prompt from an input.
400
+ *
401
+ * This is the primary constructor for creating prompts, supporting multiple
402
+ * input formats for convenience and flexibility.
403
+ *
404
+ * @example
405
+ * ```ts
406
+ * import { Prompt } from "@effect/ai"
407
+ *
408
+ * // From string - creates a user message
409
+ * const textPrompt = Prompt.make("Hello, how are you?")
410
+ *
411
+ * // From messages array
412
+ * const structuredPrompt = Prompt.make([
413
+ * { role: "system", content: "You are a helpful assistant." },
414
+ * { role: "user", content: [{ type: "text", text: "Hi!" }] }
415
+ * ])
416
+ *
417
+ * // From existing prompt
418
+ * declare const existingPrompt: Prompt.Prompt
419
+ * const copiedPrompt = Prompt.make(existingPrompt)
420
+ * ```
421
+ *
422
+ * @since 1.0.0
423
+ * @category Constructors
424
+ */
425
+ const make = input => {
426
+ if (Predicate.isString(input)) {
427
+ const part = makePart("text", {
428
+ text: input
429
+ });
430
+ const message = makeMessage("user", {
431
+ content: [part]
432
+ });
433
+ return makePrompt([message]);
434
+ }
435
+ if (Predicate.isIterable(input)) {
436
+ return makePrompt(decodeMessagesSync(Array.from(input), {
437
+ errors: "all"
438
+ }));
439
+ }
440
+ return input;
441
+ };
442
+ /**
443
+ * Creates a Prompt from an array of messages.
444
+ *
445
+ * @example
446
+ * ```ts
447
+ * import { Prompt } from "@effect/ai"
448
+ *
449
+ * const messages: ReadonlyArray<Prompt.Message> = [
450
+ * Prompt.makeMessage("system", {
451
+ * content: "You are a coding assistant."
452
+ * }),
453
+ * Prompt.makeMessage("user", {
454
+ * content: [Prompt.makePart("text", { text: "Help me with TypeScript" })]
455
+ * })
456
+ * ]
457
+ *
458
+ * const prompt = Prompt.fromMessages(messages)
459
+ * ```
460
+ *
461
+ * @since 1.0.0
462
+ * @category Constructors
463
+ */
464
+ exports.make = make;
465
+ const fromMessages = messages => makePrompt(messages);
466
+ exports.fromMessages = fromMessages;
467
+ const VALID_RESPONSE_PART_MAP = {
468
+ "response-metadata": false,
469
+ "text": true,
470
+ "text-start": false,
471
+ "text-delta": true,
472
+ "text-end": false,
473
+ "reasoning": true,
474
+ "reasoning-start": false,
475
+ "reasoning-delta": true,
476
+ "reasoning-end": false,
477
+ "file": false,
478
+ "source": false,
479
+ "tool-params-start": false,
480
+ "tool-params-delta": false,
481
+ "tool-params-end": false,
482
+ "tool-call": true,
483
+ "tool-result": true,
484
+ "finish": false,
485
+ "error": false
486
+ };
487
+ const isValidPart = part => {
488
+ return VALID_RESPONSE_PART_MAP[part.type];
489
+ };
490
+ /**
491
+ * Creates a Prompt from the response parts of a previous interaction with a
492
+ * large language model.
493
+ *
494
+ * Converts streaming or non-streaming AI response parts into a structured
495
+ * prompt, typically for use in conversation history or further processing.
496
+ *
497
+ * @example
498
+ * ```ts
499
+ * import { Prompt, Response } from "@effect/ai"
500
+ *
501
+ * const responseParts: ReadonlyArray<Response.AnyPart> = [
502
+ * Response.makePart("text", {
503
+ * text: "Hello there!"
504
+ * }),
505
+ * Response.makePart("tool-call", {
506
+ * id: "call_1",
507
+ * name: "get_time",
508
+ * params: {},
509
+ * providerExecuted: false
510
+ * }),
511
+ * Response.makePart("tool-result", {
512
+ * id: "call_1",
513
+ * name: "get_time",
514
+ * result: "10:30 AM",
515
+ * encodedResult: "10:30 AM",
516
+ * providerExecuted: false
517
+ * })
518
+ * ]
519
+ *
520
+ * const prompt = Prompt.fromResponseParts(responseParts)
521
+ * // Creates an assistant message with the response content
522
+ * ```
523
+ *
524
+ * @since 1.0.0
525
+ * @category Constructors
526
+ */
527
+ const fromResponseParts = parts => {
528
+ if (parts.length === 0) {
529
+ return empty;
530
+ }
531
+ const content = [];
532
+ const textDeltas = [];
533
+ function flushTextDeltas() {
534
+ if (textDeltas.length > 0) {
535
+ const text = textDeltas.join("");
536
+ if (text.length > 0) {
537
+ content.push(makePart("text", {
538
+ text
539
+ }));
540
+ }
541
+ textDeltas.length = 0;
542
+ }
543
+ }
544
+ const reasoningDeltas = [];
545
+ function flushReasoningDeltas() {
546
+ if (reasoningDeltas.length > 0) {
547
+ const text = reasoningDeltas.join("");
548
+ if (text.length > 0) {
549
+ content.push(makePart("reasoning", {
550
+ text
551
+ }));
552
+ }
553
+ reasoningDeltas.length = 0;
554
+ }
555
+ }
556
+ function flushDeltas() {
557
+ flushTextDeltas();
558
+ flushReasoningDeltas();
559
+ }
560
+ for (const part of parts) {
561
+ if (isValidPart(part)) {
562
+ switch (part.type) {
563
+ case "text":
564
+ {
565
+ flushDeltas();
566
+ content.push(makePart("text", {
567
+ text: part.text
568
+ }));
569
+ break;
570
+ }
571
+ case "text-delta":
572
+ {
573
+ flushReasoningDeltas();
574
+ textDeltas.push(part.delta);
575
+ break;
576
+ }
577
+ case "reasoning":
578
+ {
579
+ flushDeltas();
580
+ content.push(makePart("reasoning", {
581
+ text: part.text
582
+ }));
583
+ break;
584
+ }
585
+ case "reasoning-delta":
586
+ {
587
+ flushTextDeltas();
588
+ reasoningDeltas.push(part.delta);
589
+ break;
590
+ }
591
+ case "tool-call":
592
+ {
593
+ flushDeltas();
594
+ content.push(makePart("tool-call", {
595
+ id: part.id,
596
+ name: part.providerName ?? part.name,
597
+ params: part.params,
598
+ providerExecuted: part.providerExecuted ?? false
599
+ }));
600
+ break;
601
+ }
602
+ case "tool-result":
603
+ {
604
+ flushDeltas();
605
+ content.push(makePart("tool-result", {
606
+ id: part.id,
607
+ name: part.providerName ?? part.name,
608
+ result: part.encodedResult
609
+ }));
610
+ break;
611
+ }
612
+ }
613
+ }
614
+ }
615
+ flushDeltas();
616
+ const message = makeMessage("assistant", {
617
+ content
618
+ });
619
+ return makePrompt([message]);
620
+ };
621
+ // =============================================================================
622
+ // Merging Prompts
623
+ // =============================================================================
624
+ /**
625
+ * Merges two prompts by concatenating their messages.
626
+ *
627
+ * Creates a new prompt containing all messages from both prompts, maintaining
628
+ * the order of messages within each prompt.
629
+ *
630
+ * @example
631
+ * ```ts
632
+ * import { Prompt } from "@effect/ai"
633
+ *
634
+ * const systemPrompt = Prompt.make([{
635
+ * role: "system",
636
+ * content: "You are a helpful assistant."
637
+ * }])
638
+ *
639
+ * const userPrompt = Prompt.make("Hello, world!")
640
+ *
641
+ * const merged = Prompt.merge(systemPrompt, userPrompt)
642
+ * ```
643
+ *
644
+ * @since 1.0.0
645
+ * @category Combinators
646
+ */
647
+ exports.fromResponseParts = fromResponseParts;
648
+ const merge = exports.merge = /*#__PURE__*/(0, _Function.dual)(2, (self, other) => fromMessages([...self.content, ...other.content]));
649
+ //# sourceMappingURL=Prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Prompt.js","names":["_Function","require","Predicate","_interopRequireWildcard","Schema","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","constEmptyObject","ProviderOptions","exports","Record","key","String","value","Unknown","PartTypeId","isPart","u","hasProperty","makePart","type","params","options","TextPart","Struct","Literal","text","optionalWith","pipe","attachPropertySignature","annotations","identifier","ReasoningPart","FilePart","mediaType","fileName","optional","data","Union","Uint8ArrayFromSelf","URLFromSelf","ToolCallPart","id","name","providerExecuted","Boolean","constFalse","ToolResultPart","result","MessageTypeId","isMessage","makeMessage","role","SystemMessage","content","UserMessage","Array","AssistantMessage","ToolMessage","Message","TypeId","isPrompt","Prompt","FromJson","parseJson","makePrompt","decodeMessagesSync","decodeSync","empty","make","input","isString","part","message","isIterable","from","errors","fromMessages","messages","VALID_RESPONSE_PART_MAP","isValidPart","fromResponseParts","parts","length","textDeltas","flushTextDeltas","join","push","reasoningDeltas","flushReasoningDeltas","flushDeltas","delta","providerName","encodedResult","merge","dual","self","other"],"sources":["../../src/Prompt.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}