@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.
- package/Chat/package.json +6 -0
- package/EmbeddingModel/package.json +6 -0
- package/IdGenerator/package.json +6 -0
- package/LanguageModel/package.json +6 -0
- package/Model/package.json +6 -0
- package/Prompt/package.json +6 -0
- package/Response/package.json +6 -0
- package/Telemetry/package.json +6 -0
- package/Tool/package.json +6 -0
- package/Toolkit/package.json +6 -0
- package/dist/cjs/AiError.js +575 -11
- package/dist/cjs/AiError.js.map +1 -1
- package/dist/cjs/Chat.js +302 -0
- package/dist/cjs/Chat.js.map +1 -0
- package/dist/cjs/EmbeddingModel.js +184 -0
- package/dist/cjs/EmbeddingModel.js.map +1 -0
- package/dist/cjs/IdGenerator.js +255 -0
- package/dist/cjs/IdGenerator.js.map +1 -0
- package/dist/cjs/LanguageModel.js +584 -0
- package/dist/cjs/LanguageModel.js.map +1 -0
- package/dist/cjs/McpServer.js +12 -4
- package/dist/cjs/McpServer.js.map +1 -1
- package/dist/cjs/Model.js +118 -0
- package/dist/cjs/Model.js.map +1 -0
- package/dist/cjs/Prompt.js +649 -0
- package/dist/cjs/Prompt.js.map +1 -0
- package/dist/cjs/Response.js +635 -0
- package/dist/cjs/Response.js.map +1 -0
- package/dist/cjs/Telemetry.js +176 -0
- package/dist/cjs/Telemetry.js.map +1 -0
- package/dist/cjs/Tokenizer.js +87 -8
- package/dist/cjs/Tokenizer.js.map +1 -1
- package/dist/cjs/Tool.js +556 -0
- package/dist/cjs/Tool.js.map +1 -0
- package/dist/cjs/Toolkit.js +279 -0
- package/dist/cjs/Toolkit.js.map +1 -0
- package/dist/cjs/index.js +21 -19
- package/dist/dts/AiError.d.ts +577 -9
- package/dist/dts/AiError.d.ts.map +1 -1
- package/dist/dts/Chat.d.ts +356 -0
- package/dist/dts/Chat.d.ts.map +1 -0
- package/dist/dts/EmbeddingModel.d.ts +153 -0
- package/dist/dts/EmbeddingModel.d.ts.map +1 -0
- package/dist/dts/IdGenerator.d.ts +272 -0
- package/dist/dts/IdGenerator.d.ts.map +1 -0
- package/dist/dts/LanguageModel.d.ts +458 -0
- package/dist/dts/LanguageModel.d.ts.map +1 -0
- package/dist/dts/McpSchema.d.ts +25 -25
- package/dist/dts/McpServer.d.ts +6 -4
- package/dist/dts/McpServer.d.ts.map +1 -1
- package/dist/dts/Model.d.ts +124 -0
- package/dist/dts/Model.d.ts.map +1 -0
- package/dist/dts/Prompt.d.ts +1119 -0
- package/dist/dts/Prompt.d.ts.map +1 -0
- package/dist/dts/Response.d.ts +1519 -0
- package/dist/dts/Response.d.ts.map +1 -0
- package/dist/dts/Telemetry.d.ts +520 -0
- package/dist/dts/Telemetry.d.ts.map +1 -0
- package/dist/dts/Tokenizer.d.ts +131 -13
- package/dist/dts/Tokenizer.d.ts.map +1 -1
- package/dist/dts/Tool.d.ts +876 -0
- package/dist/dts/Tool.d.ts.map +1 -0
- package/dist/dts/Toolkit.d.ts +310 -0
- package/dist/dts/Toolkit.d.ts.map +1 -0
- package/dist/dts/index.d.ts +498 -13
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/esm/AiError.js +570 -10
- package/dist/esm/AiError.js.map +1 -1
- package/dist/esm/Chat.js +291 -0
- package/dist/esm/Chat.js.map +1 -0
- package/dist/esm/EmbeddingModel.js +173 -0
- package/dist/esm/EmbeddingModel.js.map +1 -0
- package/dist/esm/IdGenerator.js +245 -0
- package/dist/esm/IdGenerator.js.map +1 -0
- package/dist/esm/LanguageModel.js +572 -0
- package/dist/esm/LanguageModel.js.map +1 -0
- package/dist/esm/McpServer.js +12 -4
- package/dist/esm/McpServer.js.map +1 -1
- package/dist/esm/Model.js +108 -0
- package/dist/esm/Model.js.map +1 -0
- package/dist/esm/Prompt.js +633 -0
- package/dist/esm/Prompt.js.map +1 -0
- package/dist/esm/Response.js +619 -0
- package/dist/esm/Response.js.map +1 -0
- package/dist/esm/Telemetry.js +166 -0
- package/dist/esm/Telemetry.js.map +1 -0
- package/dist/esm/Tokenizer.js +87 -8
- package/dist/esm/Tokenizer.js.map +1 -1
- package/dist/esm/Tool.js +534 -0
- package/dist/esm/Tool.js.map +1 -0
- package/dist/esm/Toolkit.js +269 -0
- package/dist/esm/Toolkit.js.map +1 -0
- package/dist/esm/index.js +498 -13
- package/dist/esm/index.js.map +1 -1
- package/package.json +76 -68
- package/src/AiError.ts +739 -9
- package/src/Chat.ts +546 -0
- package/src/EmbeddingModel.ts +311 -0
- package/src/IdGenerator.ts +320 -0
- package/src/LanguageModel.ts +1074 -0
- package/src/McpServer.ts +337 -194
- package/src/Model.ts +155 -0
- package/src/Prompt.ts +1616 -0
- package/src/Response.ts +2131 -0
- package/src/Telemetry.ts +655 -0
- package/src/Tokenizer.ts +145 -24
- package/src/Tool.ts +1267 -0
- package/src/Toolkit.ts +516 -0
- package/src/index.ts +499 -13
- package/AiChat/package.json +0 -6
- package/AiEmbeddingModel/package.json +0 -6
- package/AiInput/package.json +0 -6
- package/AiLanguageModel/package.json +0 -6
- package/AiModel/package.json +0 -6
- package/AiResponse/package.json +0 -6
- package/AiTelemetry/package.json +0 -6
- package/AiTool/package.json +0 -6
- package/AiToolkit/package.json +0 -6
- package/dist/cjs/AiChat.js +0 -122
- package/dist/cjs/AiChat.js.map +0 -1
- package/dist/cjs/AiEmbeddingModel.js +0 -109
- package/dist/cjs/AiEmbeddingModel.js.map +0 -1
- package/dist/cjs/AiInput.js +0 -458
- package/dist/cjs/AiInput.js.map +0 -1
- package/dist/cjs/AiLanguageModel.js +0 -351
- package/dist/cjs/AiLanguageModel.js.map +0 -1
- package/dist/cjs/AiModel.js +0 -37
- package/dist/cjs/AiModel.js.map +0 -1
- package/dist/cjs/AiResponse.js +0 -681
- package/dist/cjs/AiResponse.js.map +0 -1
- package/dist/cjs/AiTelemetry.js +0 -58
- package/dist/cjs/AiTelemetry.js.map +0 -1
- package/dist/cjs/AiTool.js +0 -150
- package/dist/cjs/AiTool.js.map +0 -1
- package/dist/cjs/AiToolkit.js +0 -157
- package/dist/cjs/AiToolkit.js.map +0 -1
- package/dist/cjs/internal/common.js +0 -21
- package/dist/cjs/internal/common.js.map +0 -1
- package/dist/dts/AiChat.d.ts +0 -101
- package/dist/dts/AiChat.d.ts.map +0 -1
- package/dist/dts/AiEmbeddingModel.d.ts +0 -65
- package/dist/dts/AiEmbeddingModel.d.ts.map +0 -1
- package/dist/dts/AiInput.d.ts +0 -590
- package/dist/dts/AiInput.d.ts.map +0 -1
- package/dist/dts/AiLanguageModel.d.ts +0 -302
- package/dist/dts/AiLanguageModel.d.ts.map +0 -1
- package/dist/dts/AiModel.d.ts +0 -25
- package/dist/dts/AiModel.d.ts.map +0 -1
- package/dist/dts/AiResponse.d.ts +0 -863
- package/dist/dts/AiResponse.d.ts.map +0 -1
- package/dist/dts/AiTelemetry.d.ts +0 -242
- package/dist/dts/AiTelemetry.d.ts.map +0 -1
- package/dist/dts/AiTool.d.ts +0 -334
- package/dist/dts/AiTool.d.ts.map +0 -1
- package/dist/dts/AiToolkit.d.ts +0 -96
- package/dist/dts/AiToolkit.d.ts.map +0 -1
- package/dist/dts/internal/common.d.ts +0 -2
- package/dist/dts/internal/common.d.ts.map +0 -1
- package/dist/esm/AiChat.js +0 -111
- package/dist/esm/AiChat.js.map +0 -1
- package/dist/esm/AiEmbeddingModel.js +0 -98
- package/dist/esm/AiEmbeddingModel.js.map +0 -1
- package/dist/esm/AiInput.js +0 -433
- package/dist/esm/AiInput.js.map +0 -1
- package/dist/esm/AiLanguageModel.js +0 -340
- package/dist/esm/AiLanguageModel.js.map +0 -1
- package/dist/esm/AiModel.js +0 -29
- package/dist/esm/AiModel.js.map +0 -1
- package/dist/esm/AiResponse.js +0 -657
- package/dist/esm/AiResponse.js.map +0 -1
- package/dist/esm/AiTelemetry.js +0 -48
- package/dist/esm/AiTelemetry.js.map +0 -1
- package/dist/esm/AiTool.js +0 -134
- package/dist/esm/AiTool.js.map +0 -1
- package/dist/esm/AiToolkit.js +0 -147
- package/dist/esm/AiToolkit.js.map +0 -1
- package/dist/esm/internal/common.js +0 -14
- package/dist/esm/internal/common.js.map +0 -1
- package/src/AiChat.ts +0 -251
- package/src/AiEmbeddingModel.ts +0 -169
- package/src/AiInput.ts +0 -602
- package/src/AiLanguageModel.ts +0 -685
- package/src/AiModel.ts +0 -53
- package/src/AiResponse.ts +0 -986
- package/src/AiTelemetry.ts +0 -333
- package/src/AiTool.ts +0 -579
- package/src/AiToolkit.ts +0 -265
- 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
|
-
}) {}
|