@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
package/src/AiTool.ts DELETED
@@ -1,579 +0,0 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
- import * as Context_ from "effect/Context"
5
- import type * as Effect from "effect/Effect"
6
- import { constFalse, constTrue } from "effect/Function"
7
- import * as Option from "effect/Option"
8
- import { type Pipeable, pipeArguments } from "effect/Pipeable"
9
- import * as Predicate from "effect/Predicate"
10
- import * as Schema from "effect/Schema"
11
- import * as AST from "effect/SchemaAST"
12
- import type * as Types from "effect/Types"
13
- import type { AiError } from "./AiError.js"
14
-
15
- /**
16
- * @since 1.0.0
17
- * @category Type Ids
18
- */
19
- export const TypeId: unique symbol = Symbol.for("@effect/ai/AiTool")
20
-
21
- /**
22
- * @since 1.0.0
23
- * @category Type Ids
24
- */
25
- export type TypeId = typeof TypeId
26
-
27
- /**
28
- * A `AiTool` represents an action that a large language model can take within
29
- * your application. The results of a tool call can be returned back to the
30
- * large language model to be incorporated into its next response.
31
- *
32
- * @since 1.0.0
33
- * @category Models
34
- */
35
- export interface AiTool<
36
- out Name extends string,
37
- out Parameters extends AnyStructSchema = Schema.Struct<{}>,
38
- out Success extends Schema.Schema.Any = typeof Schema.Void,
39
- out Failure extends Schema.Schema.All = typeof Schema.Never,
40
- out Requirements = never
41
- > extends Pipeable {
42
- readonly [TypeId]: {
43
- readonly _Requirements: Types.Covariant<Requirements>
44
- }
45
-
46
- /**
47
- * The name of the tool.
48
- */
49
- readonly name: Name
50
-
51
- /**
52
- * The optional description of the tool.
53
- */
54
- readonly description?: string | undefined
55
-
56
- /**
57
- * A key for the tool, used to identify the tool within a `Context`.
58
- */
59
- readonly key: string
60
-
61
- /**
62
- * A `Schema` representing the type of the parameters that a tool handler
63
- * must be called with.
64
- */
65
- readonly parametersSchema: Parameters
66
-
67
- /**
68
- * A `Schema` representing the type that a tool returns from its handler
69
- * if successful.
70
- */
71
- readonly successSchema: Success
72
-
73
- /**
74
- * A `Schema` representing the type that a tool returns from its handler
75
- * if it fails.
76
- */
77
- readonly failureSchema: Failure
78
-
79
- readonly annotations: Context_.Context<never>
80
-
81
- /**
82
- * Adds a requirement on a particular service for the tool call to be able to
83
- * be executed.
84
- */
85
- addRequirement<Requirement>(): AiTool<Name, Parameters, Success, Failure, Requirements | Requirement>
86
-
87
- /**
88
- * Set the schema to use for tool handler success.
89
- */
90
- setSuccess<SuccessSchema extends Schema.Schema.Any>(schema: SuccessSchema): AiTool<
91
- Name,
92
- Parameters,
93
- SuccessSchema,
94
- Failure,
95
- Requirements
96
- >
97
-
98
- /**
99
- * Set the schema to use for tool handler failure.
100
- */
101
- setFailure<FailureSchema extends Schema.Schema.Any>(schema: FailureSchema): AiTool<
102
- Name,
103
- Parameters,
104
- Success,
105
- FailureSchema,
106
- Requirements
107
- >
108
-
109
- /**
110
- * Set the schema for the tool parameters.
111
- */
112
- setParameters<ParametersSchema extends Schema.Struct<any> | Schema.Struct.Fields>(
113
- schema: ParametersSchema
114
- ): AiTool<
115
- Name,
116
- ParametersSchema extends Schema.Struct<infer _> ? ParametersSchema
117
- : ParametersSchema extends Schema.Struct.Fields ? Schema.Struct<ParametersSchema>
118
- : never,
119
- Success,
120
- Failure,
121
- Requirements
122
- >
123
-
124
- /**
125
- * Add an annotation to the tool.
126
- */
127
- annotate<I, S>(tag: Context_.Tag<I, S>, value: S): AiTool<
128
- Name,
129
- Parameters,
130
- Success,
131
- Failure,
132
- Requirements
133
- >
134
-
135
- /**
136
- * Add many annotations to the tool.
137
- */
138
- annotateContext<I>(context: Context_.Context<I>): AiTool<
139
- Name,
140
- Parameters,
141
- Success,
142
- Failure,
143
- Requirements
144
- >
145
- }
146
-
147
- /**
148
- * @since 1.0.0
149
- * @category Guards
150
- */
151
- export const isAiTool = (u: unknown): u is AiTool<any, any, any, any, any> => Predicate.hasProperty(u, TypeId)
152
-
153
- /**
154
- * @since 1.0.0
155
- * @category Models
156
- */
157
- export interface Any extends Pipeable {
158
- readonly [TypeId]: {
159
- readonly _Requirements: Types.Covariant<any>
160
- }
161
- readonly name: string
162
- readonly description?: string | undefined
163
- readonly key: string
164
- readonly parametersSchema: AnyStructSchema
165
- readonly annotations: Context_.Context<never>
166
- }
167
-
168
- /**
169
- * @since 1.0.0
170
- * @category Models
171
- */
172
- export interface AnyWithProtocol extends Any {
173
- readonly successSchema: Schema.Schema.Any
174
- readonly failureSchema: Schema.Schema.All
175
- }
176
-
177
- /**
178
- * Represents an `AiTool` that has been implemented within the application.
179
- *
180
- * @since 1.0.0
181
- * @category Models
182
- */
183
- export interface Handler<Name extends string> {
184
- readonly _: unique symbol
185
- readonly name: Name
186
- readonly handler: (params: any) => Effect.Effect<any, any>
187
- readonly context: Context_.Context<never>
188
- }
189
-
190
- /**
191
- * A utility type which returns the type of the `Effect` that will be used to
192
- * resolve a tool call.
193
- *
194
- * @since 1.0.0
195
- * @category Utility Types
196
- */
197
- export type HandlerEffect<Tool extends Any> = [Tool] extends [
198
- AiTool<
199
- infer _Name,
200
- infer _Parameters,
201
- infer _Success,
202
- infer _Failure,
203
- infer _Requirements
204
- >
205
- ] ? Effect.Effect<
206
- _Success["Type"],
207
- AiError | _Failure["Type"],
208
- _Parameters["Context"] | _Success["Context"] | _Failure["Context"] | _Requirements
209
- >
210
- : never
211
-
212
- /**
213
- * Represents the result of calling the handler for a particular tool.
214
- *
215
- * @since 1.0.0
216
- * @category Models
217
- */
218
- export interface HandlerResult<Tool extends Any> {
219
- /**
220
- * The result of executing the handler for a particular tool.
221
- */
222
- readonly result: Success<Tool>
223
- /**
224
- * The encoded result of executing the handler for a particular tool, which
225
- * is suitable for returning back to the large language model for
226
- * incorporation into further responses.
227
- */
228
- readonly encodedResult: unknown
229
- }
230
-
231
- /**
232
- * A utility mapped type which associates tool names with tools.
233
- *
234
- * @since 1.0.0
235
- * @category Utility Types
236
- */
237
- export type ByName<Tools extends Any> = {
238
- readonly [Tool in Tools as Tool["name"]]: Tool
239
- }
240
-
241
- /**
242
- * A utility type to extract the `Name` type from an `AiTool`.
243
- *
244
- * @since 1.0.0
245
- * @category Utility Types
246
- */
247
- export type Name<Tool> = Tool extends AiTool<
248
- infer _Name,
249
- infer _Parameters,
250
- infer _Success,
251
- infer _Failure,
252
- infer _Requirements
253
- > ? _Name :
254
- never
255
-
256
- /**
257
- * A utility type to extract the type of the parameters which an `AiTool` must
258
- * be called with.
259
- *
260
- * @since 1.0.0
261
- * @category Utility Types
262
- */
263
- export type Parameters<Tool> = Tool extends AiTool<
264
- infer _Name,
265
- infer _Parameters,
266
- infer _Success,
267
- infer _Failure,
268
- infer _Requirements
269
- > ? _Parameters["Type"] :
270
- never
271
-
272
- /**
273
- * A utility type to extract the schema type of the parameters which an `AiTool`
274
- * must be called with.
275
- *
276
- * @since 1.0.0
277
- * @category Utility Types
278
- */
279
- export type ParametersSchema<Tool> = Tool extends AiTool<
280
- infer _Name,
281
- infer _Parameters,
282
- infer _Success,
283
- infer _Failure,
284
- infer _Requirements
285
- > ? _Parameters :
286
- never
287
-
288
- /**
289
- * A utility type to extract the type of the response that an `AiTool` returns
290
- * from its handler if successful.
291
- *
292
- * @since 1.0.0
293
- * @category Utility Types
294
- */
295
- export type Success<Tool> = Tool extends AiTool<
296
- infer _Name,
297
- infer _Parameters,
298
- infer _Success,
299
- infer _Failure,
300
- infer _Requirements
301
- > ? _Success["Type"] :
302
- never
303
-
304
- /**
305
- * A utility type to extract the schema type of the response that an `AiTool`
306
- * returns from its handler if successful.
307
- *
308
- * @since 1.0.0
309
- * @category Utility Types
310
- */
311
- export type SuccessSchema<Tool> = Tool extends AiTool<
312
- infer _Name,
313
- infer _Parameters,
314
- infer _Success,
315
- infer _Failure,
316
- infer _Requirements
317
- > ? _Success :
318
- never
319
-
320
- /**
321
- * A utility type to extract the type of the response that an `AiTool` returns
322
- * from its handler if it fails.
323
- *
324
- * @since 1.0.0
325
- * @category Utility Types
326
- */
327
- export type Failure<Tool> = Tool extends AiTool<
328
- infer _Name,
329
- infer _Parameters,
330
- infer _Success,
331
- infer _Failure,
332
- infer _Requirements
333
- > ? _Failure["Type"] :
334
- never
335
-
336
- /**
337
- * A utility type to extract the schema type of the response that an `AiTool`
338
- * returns from its handler if it fails.
339
- *
340
- * @since 1.0.0
341
- * @category Utility Types
342
- */
343
- export type FailureSchema<Tool> = Tool extends AiTool<
344
- infer _Name,
345
- infer _Parameters,
346
- infer _Success,
347
- infer _Failure,
348
- infer _Requirements
349
- > ? _Failure :
350
- never
351
-
352
- /**
353
- * A utility type to the `Context` type from an `AiTool`.
354
- *
355
- * @since 1.0.0
356
- * @category Utility Types
357
- */
358
- export type Context<Tool> = Tool extends AiTool<
359
- infer _Name,
360
- infer _Parameters,
361
- infer _Success,
362
- infer _Failure,
363
- infer _Requirements
364
- > ? _Parameters["Context"] | _Success["Context"] | _Failure["Context"] | _Requirements :
365
- never
366
-
367
- /**
368
- * @since 1.0.0
369
- * @category Utility Types
370
- */
371
- export interface AnyStructSchema extends Pipeable {
372
- readonly [Schema.TypeId]: any
373
- readonly make: any
374
- readonly Type: any
375
- readonly Encoded: any
376
- readonly Context: any
377
- readonly ast: AST.AST
378
- readonly fields: Schema.Struct.Fields
379
- readonly annotations: any
380
- }
381
-
382
- /**
383
- * @since 1.0.0
384
- * @category Utility Types
385
- */
386
- export interface AnyTaggedRequestSchema extends AnyStructSchema {
387
- readonly _tag: string
388
- readonly success: Schema.Schema.Any
389
- readonly failure: Schema.Schema.All
390
- }
391
- /**
392
- * A utility type to convert a `Schema.TaggedRequest` into an `AiTool`.
393
- *
394
- * @since 1.0.0
395
- * @category Utility Types
396
- */
397
- export interface FromTaggedRequest<S extends AnyTaggedRequestSchema>
398
- extends AiTool<S["_tag"], S, S["success"], S["failure"]>
399
- {}
400
-
401
- /**
402
- * A utility type which returns the handler type for an `AiTool`.
403
- *
404
- * @since 1.0.0
405
- * @category Utility Types
406
- */
407
- export type ToHandler<Tool extends Any> = Tool extends AiTool<
408
- infer _Name,
409
- infer _Parameters,
410
- infer _Success,
411
- infer _Failure,
412
- infer _Requirements
413
- > ? Handler<_Name> :
414
- never
415
-
416
- const Proto = {
417
- [TypeId]: TypeId,
418
- pipe() {
419
- return pipeArguments(this, arguments)
420
- },
421
- addRequirement(this: AnyWithProtocol) {
422
- return makeProto({ ...this })
423
- },
424
- setSuccess(this: AnyWithProtocol, successSchema: Schema.Schema.Any) {
425
- return makeProto({
426
- ...this,
427
- successSchema
428
- })
429
- },
430
- setFailure(this: AnyWithProtocol, failureSchema: Schema.Schema.All) {
431
- return makeProto({
432
- ...this,
433
- failureSchema
434
- })
435
- },
436
- setParameters(this: AnyWithProtocol, parametersSchema: Schema.Struct<any> | Schema.Struct.Fields) {
437
- return makeProto({
438
- ...this,
439
- parametersSchema: Schema.isSchema(parametersSchema)
440
- ? parametersSchema as any
441
- : Schema.Struct(parametersSchema as any)
442
- })
443
- },
444
- annotate<I, S>(this: AnyWithProtocol, tag: Context_.Tag<I, S>, value: S) {
445
- return makeProto({
446
- ...this,
447
- annotations: Context_.add(this.annotations, tag, value)
448
- })
449
- },
450
- annotateContext<I>(this: AnyWithProtocol, context: Context_.Context<I>) {
451
- return makeProto({
452
- ...this,
453
- annotations: Context_.merge(this.annotations, context)
454
- })
455
- }
456
- }
457
-
458
- const makeProto = <
459
- const Name extends string,
460
- Parameters extends AnyStructSchema,
461
- Success extends Schema.Schema.Any,
462
- Failure extends Schema.Schema.All
463
- >(options: {
464
- readonly name: Name
465
- readonly description?: string | undefined
466
- readonly parametersSchema: Parameters
467
- readonly successSchema: Success
468
- readonly failureSchema: Failure
469
- readonly annotations: Context_.Context<never>
470
- }): AiTool<Name, Parameters, Success> => {
471
- const self = Object.assign(Object.create(Proto), options)
472
- self.key = `@effect/ai/AiTool/${options.name}`
473
- return self
474
- }
475
-
476
- const constEmptyStruct = Schema.Struct({})
477
-
478
- /**
479
- * Constructs an `AiTool` from a name and, optionally, a specification for the
480
- * tool call's protocol.
481
- *
482
- * @since 1.0.0
483
- * @category constructors
484
- */
485
- export const make = <
486
- const Name extends string,
487
- Parameters extends Schema.Struct.Fields = {},
488
- Success extends Schema.Schema.Any = typeof Schema.Void,
489
- Failure extends Schema.Schema.All = typeof Schema.Never
490
- >(name: Name, options?: {
491
- /**
492
- * An optional description of the tool.
493
- */
494
- readonly description?: string | undefined
495
- /**
496
- * A `Schema` representing the type of the parameters that a tool call
497
- * handler must be provided with.
498
- */
499
- readonly parameters?: Parameters
500
- /**
501
- * A `Schema` representing the type that a tool returns from its handler if
502
- * successful.
503
- */
504
- readonly success?: Success
505
- /**
506
- * A `Schema` representing the type that a tool returns from its handler if
507
- * it fails.
508
- */
509
- readonly failure?: Failure
510
- }): AiTool<Name, Schema.Struct<Parameters>, Success, Failure> => {
511
- const successSchema = options?.success ?? Schema.Void
512
- const failureSchema = options?.failure ?? Schema.Never
513
- return makeProto({
514
- name,
515
- description: options?.description,
516
- parametersSchema: options?.parameters
517
- ? Schema.Struct(options?.parameters as any)
518
- : constEmptyStruct,
519
- successSchema,
520
- failureSchema,
521
- annotations: Context_.empty()
522
- }) as any
523
- }
524
-
525
- /**
526
- * Constructs a new `AiTool` from a `Schema.TaggedRequest`.
527
- *
528
- * @since 1.0.0
529
- * @category constructors
530
- */
531
- export const fromTaggedRequest = <S extends AnyTaggedRequestSchema>(
532
- schema: S
533
- ): FromTaggedRequest<S> =>
534
- makeProto({
535
- name: schema._tag,
536
- description: Option.getOrUndefined(AST.getDescriptionAnnotation((schema.ast as any).to)),
537
- parametersSchema: schema as any,
538
- successSchema: schema.success as any,
539
- failureSchema: schema.failure as any,
540
- annotations: Context_.empty()
541
- })
542
-
543
- /**
544
- * @since 1.0.0
545
- * @category Annotations
546
- */
547
- export class Title extends Context_.Tag("@effect/ai/AiTool/Title")<Title, string>() {}
548
-
549
- /**
550
- * @since 1.0.0
551
- * @category Annotations
552
- */
553
- export class Readonly extends Context_.Reference<Readonly>()("@effect/ai/AiTool/Readonly", {
554
- defaultValue: constFalse
555
- }) {}
556
-
557
- /**
558
- * @since 1.0.0
559
- * @category Annotations
560
- */
561
- export class Destructive extends Context_.Reference<Destructive>()("@effect/ai/AiTool/Destructive", {
562
- defaultValue: constTrue
563
- }) {}
564
-
565
- /**
566
- * @since 1.0.0
567
- * @category Annotations
568
- */
569
- export class Idempotent extends Context_.Reference<Idempotent>()("@effect/ai/AiTool/Idempotent", {
570
- defaultValue: constFalse
571
- }) {}
572
-
573
- /**
574
- * @since 1.0.0
575
- * @category Annotations
576
- */
577
- export class OpenWorld extends Context_.Reference<OpenWorld>()("@effect/ai/AiTool/OpenWorld", {
578
- defaultValue: constTrue
579
- }) {}