@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/AiToolkit.ts
DELETED
|
@@ -1,265 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @since 1.0.0
|
|
3
|
-
*/
|
|
4
|
-
import * as Context from "effect/Context"
|
|
5
|
-
import * as Effect from "effect/Effect"
|
|
6
|
-
import { CommitPrototype } from "effect/Effectable"
|
|
7
|
-
import { identity } from "effect/Function"
|
|
8
|
-
import type { Inspectable } from "effect/Inspectable"
|
|
9
|
-
import { BaseProto as InspectableProto } from "effect/Inspectable"
|
|
10
|
-
import * as Layer from "effect/Layer"
|
|
11
|
-
import type { ParseError } from "effect/ParseResult"
|
|
12
|
-
import type { Pipeable } from "effect/Pipeable"
|
|
13
|
-
import { pipeArguments } from "effect/Pipeable"
|
|
14
|
-
import * as Predicate from "effect/Predicate"
|
|
15
|
-
import * as Schema from "effect/Schema"
|
|
16
|
-
import type * as Scope from "effect/Scope"
|
|
17
|
-
import { AiError } from "./AiError.js"
|
|
18
|
-
import * as AiTool from "./AiTool.js"
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* @since 1.0.0
|
|
22
|
-
* @category Type Ids
|
|
23
|
-
*/
|
|
24
|
-
export const TypeId: unique symbol = Symbol.for("@effect/ai/AiToolkit")
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* @since 1.0.0
|
|
28
|
-
* @category Type Ids
|
|
29
|
-
*/
|
|
30
|
-
export type TypeId = typeof TypeId
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* An `AiToolkit` represents a set of tools that a large language model can
|
|
34
|
-
* use to augment its response.
|
|
35
|
-
*
|
|
36
|
-
* @since 1.0.0
|
|
37
|
-
* @category Models
|
|
38
|
-
*/
|
|
39
|
-
export interface AiToolkit<in out Tools extends AiTool.Any>
|
|
40
|
-
extends Effect.Effect<ToHandler<Tools>, never, AiTool.ToHandler<Tools>>, Inspectable, Pipeable
|
|
41
|
-
{
|
|
42
|
-
new(_: never): {}
|
|
43
|
-
|
|
44
|
-
readonly [TypeId]: TypeId
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* A map containing the tools that are part of this toolkit.
|
|
48
|
-
*/
|
|
49
|
-
readonly tools: AiTool.ByName<Tools>
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Converts this toolkit into a `Context` object containing the handlers for
|
|
53
|
-
* all tools in the toolkit.
|
|
54
|
-
*/
|
|
55
|
-
toContext<Handlers extends HandlersFrom<Tools>, EX = never, RX = never>(
|
|
56
|
-
build: Handlers | Effect.Effect<Handlers, EX, RX>
|
|
57
|
-
): Effect.Effect<Context.Context<AiTool.ToHandler<Tools>>, EX, RX>
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Converts this toolkit into a `Layer` containing the handlers for all tools
|
|
61
|
-
* in the toolkit.
|
|
62
|
-
*/
|
|
63
|
-
toLayer<Handlers extends HandlersFrom<Tools>, EX = never, RX = never>(
|
|
64
|
-
build: Handlers | Effect.Effect<Handlers, EX, RX>
|
|
65
|
-
): Layer.Layer<AiTool.ToHandler<Tools>, EX, Exclude<RX, Scope.Scope>>
|
|
66
|
-
|
|
67
|
-
of<Handlers extends HandlersFrom<Tools>>(handlers: Handlers): Handlers
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* @since 1.0.0
|
|
72
|
-
* @category Models
|
|
73
|
-
*/
|
|
74
|
-
export interface Any {
|
|
75
|
-
readonly [TypeId]: TypeId
|
|
76
|
-
readonly tools: Record<string, AiTool.Any>
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Represents an `AiToolkit` which has been augmented with a handler function
|
|
81
|
-
* for resolving tool call requests.
|
|
82
|
-
*
|
|
83
|
-
* @since 1.0.0
|
|
84
|
-
* @category Models
|
|
85
|
-
*/
|
|
86
|
-
export interface ToHandler<in out Tool extends AiTool.Any> {
|
|
87
|
-
readonly tools: ReadonlyArray<Tool>
|
|
88
|
-
readonly handle: (toolName: AiTool.Name<Tool>, toolParams: AiTool.Parameters<Tool>) => AiTool.HandlerEffect<Tool>
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* A utility mapped type which associates tool names with their handlers.
|
|
93
|
-
*
|
|
94
|
-
* @since 1.0.0
|
|
95
|
-
* @category Utility Types
|
|
96
|
-
*/
|
|
97
|
-
export type HandlersFrom<Tools extends AiTool.Any> = {
|
|
98
|
-
[Tool in Tools as Tool["name"]]: (params: AiTool.Parameters<Tool>) => AiTool.HandlerEffect<Tool>
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* A utility type which returns the tools in an `AiToolkit`.
|
|
103
|
-
*
|
|
104
|
-
* @since 1.0.0
|
|
105
|
-
* @category Utility Types
|
|
106
|
-
*/
|
|
107
|
-
export type Tools<Toolkit> = Toolkit extends AiToolkit<infer Tool> ? string extends Tool["name"] ? never : Tool : never
|
|
108
|
-
|
|
109
|
-
const Proto = {
|
|
110
|
-
...CommitPrototype,
|
|
111
|
-
...InspectableProto,
|
|
112
|
-
[TypeId]: TypeId,
|
|
113
|
-
toContext(this: AiToolkit<any>, build: Effect.Effect<Record<string, (params: any) => any>>) {
|
|
114
|
-
return Effect.gen(this, function*() {
|
|
115
|
-
const context = yield* Effect.context<never>()
|
|
116
|
-
const handlers = Effect.isEffect(build) ? yield* build : build
|
|
117
|
-
const contextMap = new Map<string, unknown>()
|
|
118
|
-
for (const [name, handler] of Object.entries(handlers)) {
|
|
119
|
-
const tool = this.tools[name]!
|
|
120
|
-
contextMap.set(tool.key, { handler, context })
|
|
121
|
-
}
|
|
122
|
-
return Context.unsafeMake(contextMap)
|
|
123
|
-
})
|
|
124
|
-
},
|
|
125
|
-
toLayer(this: AiToolkit<any>, build: Effect.Effect<Record<string, (params: any) => any>>) {
|
|
126
|
-
return Layer.scopedContext(this.toContext(build))
|
|
127
|
-
},
|
|
128
|
-
of: identity,
|
|
129
|
-
commit(this: AiToolkit<AiTool.AnyWithProtocol>) {
|
|
130
|
-
return Effect.gen(this, function*() {
|
|
131
|
-
const context = yield* Effect.context<never>()
|
|
132
|
-
const tools = this.tools
|
|
133
|
-
const schemasCache = new WeakMap<any, {
|
|
134
|
-
readonly context: Context.Context<never>
|
|
135
|
-
readonly handler: (params: any) => Effect.Effect<any, any>
|
|
136
|
-
readonly encodeSuccess: (u: unknown) => Effect.Effect<unknown, ParseError>
|
|
137
|
-
readonly decodeFailure: (u: unknown) => Effect.Effect<AiTool.Failure<any>, ParseError>
|
|
138
|
-
readonly decodeParameters: (u: unknown) => Effect.Effect<AiTool.Parameters<any>, ParseError>
|
|
139
|
-
}>()
|
|
140
|
-
const getSchemas = (tool: AiTool.AnyWithProtocol) => {
|
|
141
|
-
let schemas = schemasCache.get(tool)
|
|
142
|
-
if (Predicate.isUndefined(schemas)) {
|
|
143
|
-
const handler = context.unsafeMap.get(tool.key)! as AiTool.Handler<any>
|
|
144
|
-
const encodeSuccess = Schema.encodeUnknown(tool.successSchema) as any
|
|
145
|
-
const decodeFailure = Schema.decodeUnknown(tool.failureSchema as any) as any
|
|
146
|
-
const decodeParameters = Schema.decodeUnknown(tool.parametersSchema) as any
|
|
147
|
-
schemas = {
|
|
148
|
-
context: handler.context,
|
|
149
|
-
handler: handler.handler,
|
|
150
|
-
encodeSuccess,
|
|
151
|
-
decodeFailure,
|
|
152
|
-
decodeParameters
|
|
153
|
-
}
|
|
154
|
-
schemasCache.set(tool, schemas)
|
|
155
|
-
}
|
|
156
|
-
return schemas
|
|
157
|
-
}
|
|
158
|
-
const handle = Effect.fn("AiToolkit.handler", { captureStackTrace: false })(
|
|
159
|
-
function*(toolName: string, toolParams: unknown) {
|
|
160
|
-
yield* Effect.annotateCurrentSpan({
|
|
161
|
-
tool: toolName,
|
|
162
|
-
parameters: toolParams
|
|
163
|
-
})
|
|
164
|
-
const tool = tools[toolName]!
|
|
165
|
-
const schemas = getSchemas(tool)
|
|
166
|
-
const decodedParams = yield* Effect.mapError(
|
|
167
|
-
schemas.decodeParameters(toolParams),
|
|
168
|
-
(cause) =>
|
|
169
|
-
new AiError({
|
|
170
|
-
module: "AiToolkit",
|
|
171
|
-
method: `${toolName}.handle`,
|
|
172
|
-
description: `Failed to decode tool call parameters for tool '${toolName}' from '${toolParams}'`,
|
|
173
|
-
cause
|
|
174
|
-
})
|
|
175
|
-
)
|
|
176
|
-
const result = yield* schemas.handler(decodedParams).pipe(
|
|
177
|
-
Effect.mapInputContext((input) => Context.merge(schemas.context, input)),
|
|
178
|
-
Effect.catchAll((error) =>
|
|
179
|
-
schemas.decodeFailure(error).pipe(
|
|
180
|
-
Effect.mapError((cause) =>
|
|
181
|
-
new AiError({
|
|
182
|
-
module: "AiToolkit",
|
|
183
|
-
method: `${toolName}.handle`,
|
|
184
|
-
description: `Failed to decode tool call failure for tool '${toolName}'`,
|
|
185
|
-
cause
|
|
186
|
-
})
|
|
187
|
-
),
|
|
188
|
-
Effect.flatMap(Effect.fail)
|
|
189
|
-
)
|
|
190
|
-
)
|
|
191
|
-
)
|
|
192
|
-
const encodedResult = yield* Effect.mapError(
|
|
193
|
-
schemas.encodeSuccess(result),
|
|
194
|
-
(cause) =>
|
|
195
|
-
new AiError({
|
|
196
|
-
module: "AiToolkit",
|
|
197
|
-
method: `${toolName}.handle`,
|
|
198
|
-
description: `Failed to encode tool call result for tool '${toolName}'`,
|
|
199
|
-
cause
|
|
200
|
-
})
|
|
201
|
-
)
|
|
202
|
-
return {
|
|
203
|
-
result,
|
|
204
|
-
encodedResult
|
|
205
|
-
} satisfies AiTool.HandlerResult<any>
|
|
206
|
-
}
|
|
207
|
-
)
|
|
208
|
-
return {
|
|
209
|
-
tools: Array.from(Object.values(tools)),
|
|
210
|
-
handle
|
|
211
|
-
}
|
|
212
|
-
})
|
|
213
|
-
},
|
|
214
|
-
toJSON(this: AiToolkit<any>): unknown {
|
|
215
|
-
return {
|
|
216
|
-
_id: "@effect/ai/AiToolkit",
|
|
217
|
-
tools: Array.from(Object.values(this.tools)).map((tool) => tool.name)
|
|
218
|
-
}
|
|
219
|
-
},
|
|
220
|
-
pipe() {
|
|
221
|
-
return pipeArguments(this, arguments)
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
const makeProto = <Tools extends AiTool.Any>(tools: Record<string, Tools>): AiToolkit<Tools> =>
|
|
226
|
-
Object.assign(function() {}, Proto, { tools }) as any
|
|
227
|
-
|
|
228
|
-
const resolveInput = <Tools extends ReadonlyArray<AiTool.Any>>(
|
|
229
|
-
...tools: Tools
|
|
230
|
-
): Record<string, Tools[number]> => {
|
|
231
|
-
const output = {} as Record<string, Tools[number]>
|
|
232
|
-
for (const tool of tools) {
|
|
233
|
-
const value = (Schema.isSchema(tool) ? AiTool.fromTaggedRequest(tool as any) : tool) as any
|
|
234
|
-
output[tool.name] = value
|
|
235
|
-
}
|
|
236
|
-
return output
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
/**
|
|
240
|
-
* Constructs a new `AiToolkit` from the specified tools.
|
|
241
|
-
*
|
|
242
|
-
* @since 1.0.0
|
|
243
|
-
* @category Constructors
|
|
244
|
-
*/
|
|
245
|
-
export const make = <const Tools extends ReadonlyArray<AiTool.Any>>(
|
|
246
|
-
...tools: Tools
|
|
247
|
-
): AiToolkit<Tools[number]> => makeProto(resolveInput(...tools))
|
|
248
|
-
|
|
249
|
-
/**
|
|
250
|
-
* Merges this toolkit with one or more other toolkits.
|
|
251
|
-
*
|
|
252
|
-
* @since 1.0.0
|
|
253
|
-
* @category Merging
|
|
254
|
-
*/
|
|
255
|
-
export const merge = <const Toolkits extends ReadonlyArray<Any>>(
|
|
256
|
-
...toolkits: Toolkits
|
|
257
|
-
): AiToolkit<Tools<Toolkits[number]>> => {
|
|
258
|
-
const tools = {} as Record<string, any>
|
|
259
|
-
for (const toolkit of toolkits) {
|
|
260
|
-
for (const [name, tool] of Object.entries(toolkit.tools)) {
|
|
261
|
-
tools[name] = tool
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
return makeProto(tools) as any
|
|
265
|
-
}
|
package/src/internal/common.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import * as Schema from "effect/Schema"
|
|
2
|
-
|
|
3
|
-
/** @internal */
|
|
4
|
-
export const ToolCallId = Schema.String.pipe(
|
|
5
|
-
Schema.brand("@effect/ai/ToolCallId")
|
|
6
|
-
)
|
|
7
|
-
|
|
8
|
-
/** @internal */
|
|
9
|
-
export const ProviderMetadata = Schema.Record({
|
|
10
|
-
key: Schema.String,
|
|
11
|
-
value: Schema.Record({ key: Schema.String, value: Schema.Unknown })
|
|
12
|
-
}).annotations({ identifier: "@effect/ai/ProviderMetadata" })
|