@dogpile/sdk 0.3.0 → 0.4.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/CHANGELOG.md +145 -0
- package/README.md +1 -0
- package/dist/browser/index.js +2270 -507
- package/dist/browser/index.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/providers/openai-compatible.d.ts +11 -0
- package/dist/providers/openai-compatible.d.ts.map +1 -1
- package/dist/providers/openai-compatible.js +87 -2
- package/dist/providers/openai-compatible.js.map +1 -1
- package/dist/runtime/broadcast.d.ts.map +1 -1
- package/dist/runtime/broadcast.js +1 -13
- package/dist/runtime/broadcast.js.map +1 -1
- package/dist/runtime/cancellation.d.ts +26 -0
- package/dist/runtime/cancellation.d.ts.map +1 -1
- package/dist/runtime/cancellation.js +38 -1
- package/dist/runtime/cancellation.js.map +1 -1
- package/dist/runtime/coordinator.d.ts +74 -1
- package/dist/runtime/coordinator.d.ts.map +1 -1
- package/dist/runtime/coordinator.js +929 -34
- package/dist/runtime/coordinator.js.map +1 -1
- package/dist/runtime/decisions.d.ts +25 -3
- package/dist/runtime/decisions.d.ts.map +1 -1
- package/dist/runtime/decisions.js +241 -3
- package/dist/runtime/decisions.js.map +1 -1
- package/dist/runtime/defaults.d.ts +37 -1
- package/dist/runtime/defaults.d.ts.map +1 -1
- package/dist/runtime/defaults.js +347 -0
- package/dist/runtime/defaults.js.map +1 -1
- package/dist/runtime/engine.d.ts.map +1 -1
- package/dist/runtime/engine.js +254 -24
- package/dist/runtime/engine.js.map +1 -1
- package/dist/runtime/ids.d.ts +19 -0
- package/dist/runtime/ids.d.ts.map +1 -0
- package/dist/runtime/ids.js +36 -0
- package/dist/runtime/ids.js.map +1 -0
- package/dist/runtime/logger.d.ts +61 -0
- package/dist/runtime/logger.d.ts.map +1 -0
- package/dist/runtime/logger.js +114 -0
- package/dist/runtime/logger.js.map +1 -0
- package/dist/runtime/retry.d.ts +99 -0
- package/dist/runtime/retry.d.ts.map +1 -0
- package/dist/runtime/retry.js +181 -0
- package/dist/runtime/retry.js.map +1 -0
- package/dist/runtime/sequential.d.ts.map +1 -1
- package/dist/runtime/sequential.js +9 -11
- package/dist/runtime/sequential.js.map +1 -1
- package/dist/runtime/shared.d.ts.map +1 -1
- package/dist/runtime/shared.js +1 -13
- package/dist/runtime/shared.js.map +1 -1
- package/dist/runtime/tools/built-in.d.ts +99 -0
- package/dist/runtime/tools/built-in.d.ts.map +1 -0
- package/dist/runtime/tools/built-in.js +577 -0
- package/dist/runtime/tools/built-in.js.map +1 -0
- package/dist/runtime/tools/vercel-ai.d.ts +67 -0
- package/dist/runtime/tools/vercel-ai.d.ts.map +1 -0
- package/dist/runtime/tools/vercel-ai.js +148 -0
- package/dist/runtime/tools/vercel-ai.js.map +1 -0
- package/dist/runtime/tools.d.ts +5 -268
- package/dist/runtime/tools.d.ts.map +1 -1
- package/dist/runtime/tools.js +7 -770
- package/dist/runtime/tools.js.map +1 -1
- package/dist/runtime/validation.d.ts +10 -0
- package/dist/runtime/validation.d.ts.map +1 -1
- package/dist/runtime/validation.js +73 -0
- package/dist/runtime/validation.js.map +1 -1
- package/dist/types/benchmark.d.ts +276 -0
- package/dist/types/benchmark.d.ts.map +1 -0
- package/dist/types/benchmark.js +2 -0
- package/dist/types/benchmark.js.map +1 -0
- package/dist/types/events.d.ts +816 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +2 -0
- package/dist/types/events.js.map +1 -0
- package/dist/types/replay.d.ts +173 -0
- package/dist/types/replay.d.ts.map +1 -0
- package/dist/types/replay.js +2 -0
- package/dist/types/replay.js.map +1 -0
- package/dist/types.d.ts +135 -938
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +27 -1
- package/src/index.ts +14 -0
- package/src/providers/openai-compatible.ts +82 -3
- package/src/runtime/broadcast.ts +1 -16
- package/src/runtime/cancellation.ts +59 -1
- package/src/runtime/coordinator.ts +1164 -34
- package/src/runtime/decisions.ts +307 -4
- package/src/runtime/defaults.ts +376 -0
- package/src/runtime/engine.ts +363 -24
- package/src/runtime/ids.ts +41 -0
- package/src/runtime/logger.ts +152 -0
- package/src/runtime/retry.ts +270 -0
- package/src/runtime/sequential.ts +10 -13
- package/src/runtime/shared.ts +1 -16
- package/src/runtime/tools/built-in.ts +875 -0
- package/src/runtime/tools/vercel-ai.ts +269 -0
- package/src/runtime/tools.ts +60 -1255
- package/src/runtime/validation.ts +81 -0
- package/src/types/benchmark.ts +300 -0
- package/src/types/events.ts +895 -0
- package/src/types/replay.ts +212 -0
- package/src/types.ts +251 -997
|
@@ -0,0 +1,577 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Built-in tool identity / schema / permission constants
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
const webSearchIdentity = {
|
|
5
|
+
id: "dogpile.tools.webSearch",
|
|
6
|
+
namespace: "dogpile",
|
|
7
|
+
name: "webSearch",
|
|
8
|
+
version: "1.0.0",
|
|
9
|
+
description: "Search the web through a caller-provided fetch-compatible search adapter."
|
|
10
|
+
};
|
|
11
|
+
const codeExecIdentity = {
|
|
12
|
+
id: "dogpile.tools.codeExec",
|
|
13
|
+
namespace: "dogpile",
|
|
14
|
+
name: "codeExec",
|
|
15
|
+
version: "1.0.0",
|
|
16
|
+
description: "Execute code through a caller-provided sandbox adapter."
|
|
17
|
+
};
|
|
18
|
+
const webSearchInputSchema = {
|
|
19
|
+
kind: "json-schema",
|
|
20
|
+
description: "Web search query and optional result cap.",
|
|
21
|
+
schema: {
|
|
22
|
+
type: "object",
|
|
23
|
+
properties: {
|
|
24
|
+
query: { type: "string" },
|
|
25
|
+
maxResults: { type: "number", minimum: 1 }
|
|
26
|
+
},
|
|
27
|
+
required: ["query"],
|
|
28
|
+
additionalProperties: false
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
const codeExecInputSchema = {
|
|
32
|
+
kind: "json-schema",
|
|
33
|
+
description: "Code snippet plus language and optional timeout.",
|
|
34
|
+
schema: {
|
|
35
|
+
type: "object",
|
|
36
|
+
properties: {
|
|
37
|
+
language: {
|
|
38
|
+
type: "string",
|
|
39
|
+
enum: ["javascript", "typescript", "python", "bash", "shell"]
|
|
40
|
+
},
|
|
41
|
+
code: { type: "string" },
|
|
42
|
+
timeoutMs: { type: "number", minimum: 1 }
|
|
43
|
+
},
|
|
44
|
+
required: ["language", "code"],
|
|
45
|
+
additionalProperties: false
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
const webSearchPermissions = [
|
|
49
|
+
{ kind: "network", allowPrivateNetwork: false }
|
|
50
|
+
];
|
|
51
|
+
const codeExecPermissions = [
|
|
52
|
+
{
|
|
53
|
+
kind: "code-execution",
|
|
54
|
+
sandbox: "caller-provided",
|
|
55
|
+
languages: ["javascript", "typescript", "python", "bash", "shell"],
|
|
56
|
+
allowNetwork: false
|
|
57
|
+
}
|
|
58
|
+
];
|
|
59
|
+
const codeExecLanguages = [
|
|
60
|
+
"javascript",
|
|
61
|
+
"typescript",
|
|
62
|
+
"python",
|
|
63
|
+
"bash",
|
|
64
|
+
"shell"
|
|
65
|
+
];
|
|
66
|
+
export function builtInDogpileToolIdentity(name) {
|
|
67
|
+
return name === "webSearch" ? webSearchIdentity : codeExecIdentity;
|
|
68
|
+
}
|
|
69
|
+
export function builtInDogpileToolInputSchema(name) {
|
|
70
|
+
return name === "webSearch" ? webSearchInputSchema : codeExecInputSchema;
|
|
71
|
+
}
|
|
72
|
+
export function builtInDogpileToolPermissions(name) {
|
|
73
|
+
return name === "webSearch" ? webSearchPermissions : codeExecPermissions;
|
|
74
|
+
}
|
|
75
|
+
export function validateBuiltInDogpileToolInput(name, input) {
|
|
76
|
+
const issues = name === "webSearch"
|
|
77
|
+
? validateWebSearchInput(input)
|
|
78
|
+
: validateCodeExecInput(input);
|
|
79
|
+
return issues.length === 0 ? { type: "valid" } : { type: "invalid", issues };
|
|
80
|
+
}
|
|
81
|
+
// ---------------------------------------------------------------------------
|
|
82
|
+
// Web search adapter
|
|
83
|
+
// ---------------------------------------------------------------------------
|
|
84
|
+
export function createWebSearchToolAdapter(options) {
|
|
85
|
+
const identity = mergeIdentity(webSearchIdentity, options.identity);
|
|
86
|
+
return normalizeBuiltInDogpileTool({
|
|
87
|
+
name: "webSearch",
|
|
88
|
+
...(options.identity ? { identity: options.identity } : {}),
|
|
89
|
+
...(options.permissions ? { permissions: options.permissions } : {}),
|
|
90
|
+
async execute(input, context) {
|
|
91
|
+
const fetchImplementation = options.fetch ?? globalThis.fetch;
|
|
92
|
+
if (!fetchImplementation) {
|
|
93
|
+
return {
|
|
94
|
+
type: "error",
|
|
95
|
+
toolCallId: context.toolCallId,
|
|
96
|
+
tool: identity,
|
|
97
|
+
error: {
|
|
98
|
+
code: "unavailable",
|
|
99
|
+
message: "No fetch implementation is available for webSearch.",
|
|
100
|
+
retryable: false
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
const request = options.buildRequest
|
|
105
|
+
? options.buildRequest(input, context)
|
|
106
|
+
: defaultWebSearchRequest(options, input, context);
|
|
107
|
+
const response = await fetchImplementation(request.url, {
|
|
108
|
+
...request.init,
|
|
109
|
+
...(context.abortSignal ? { signal: context.abortSignal } : {})
|
|
110
|
+
});
|
|
111
|
+
if (!response.ok) {
|
|
112
|
+
throw {
|
|
113
|
+
code: response.status >= 500 ? "unavailable" : "backend-error",
|
|
114
|
+
message: `Web search backend returned HTTP ${response.status}.`,
|
|
115
|
+
retryable: response.status === 408 || response.status === 429 || response.status >= 500,
|
|
116
|
+
detail: {
|
|
117
|
+
status: response.status,
|
|
118
|
+
statusText: response.statusText
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
const output = options.parseResponse
|
|
123
|
+
? await options.parseResponse(response, input, context)
|
|
124
|
+
: await defaultWebSearchResponseParser(response);
|
|
125
|
+
return {
|
|
126
|
+
type: "success",
|
|
127
|
+
toolCallId: context.toolCallId,
|
|
128
|
+
tool: identity,
|
|
129
|
+
output
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
// ---------------------------------------------------------------------------
|
|
135
|
+
// Code exec adapter
|
|
136
|
+
// ---------------------------------------------------------------------------
|
|
137
|
+
export function createCodeExecToolAdapter(options) {
|
|
138
|
+
const identity = mergeIdentity(codeExecIdentity, options.identity);
|
|
139
|
+
const permissions = options.permissions ??
|
|
140
|
+
codeExecPermissionsFor(options.languages ?? codeExecLanguages, options.allowNetwork ?? false);
|
|
141
|
+
const inputSchema = codeExecInputSchemaFor(options.languages ?? codeExecLanguages);
|
|
142
|
+
return {
|
|
143
|
+
identity,
|
|
144
|
+
inputSchema,
|
|
145
|
+
permissions,
|
|
146
|
+
validateInput: (input) => validateCodeExecAdapterInput(input, options),
|
|
147
|
+
async execute(input, context) {
|
|
148
|
+
const validation = validateCodeExecAdapterInput(input, options);
|
|
149
|
+
if (validation.type === "invalid") {
|
|
150
|
+
return {
|
|
151
|
+
type: "error",
|
|
152
|
+
toolCallId: context.toolCallId,
|
|
153
|
+
tool: identity,
|
|
154
|
+
error: {
|
|
155
|
+
code: "invalid-input",
|
|
156
|
+
message: "Invalid codeExec tool input.",
|
|
157
|
+
retryable: false,
|
|
158
|
+
detail: { issues: serializeValidationIssues(validation.issues) }
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
const timeoutMs = input.timeoutMs ?? options.defaultTimeoutMs;
|
|
163
|
+
const executionInput = timeoutMs === undefined ? input : { ...input, timeoutMs };
|
|
164
|
+
try {
|
|
165
|
+
const output = await executeSandboxWithPolicy(options.execute, executionInput, context, timeoutMs);
|
|
166
|
+
return {
|
|
167
|
+
type: "success",
|
|
168
|
+
toolCallId: context.toolCallId,
|
|
169
|
+
tool: identity,
|
|
170
|
+
output
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
return {
|
|
175
|
+
type: "error",
|
|
176
|
+
toolCallId: context.toolCallId,
|
|
177
|
+
tool: identity,
|
|
178
|
+
error: normalizeRuntimeToolAdapterError(error)
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
export function normalizeBuiltInDogpileTool(definition) {
|
|
185
|
+
switch (definition.name) {
|
|
186
|
+
case "webSearch": {
|
|
187
|
+
const identity = mergeIdentity(webSearchIdentity, definition.identity);
|
|
188
|
+
const permissions = definition.permissions ?? webSearchPermissions;
|
|
189
|
+
const tool = {
|
|
190
|
+
identity,
|
|
191
|
+
inputSchema: definition.inputSchema ?? webSearchInputSchema,
|
|
192
|
+
permissions,
|
|
193
|
+
validateInput: (input) => validateBuiltInDogpileToolInput("webSearch", input),
|
|
194
|
+
execute: (input, context) => executeBuiltInTool(identity, definition.execute, input, context, "webSearch")
|
|
195
|
+
};
|
|
196
|
+
return tool;
|
|
197
|
+
}
|
|
198
|
+
case "codeExec": {
|
|
199
|
+
const identity = mergeIdentity(codeExecIdentity, definition.identity);
|
|
200
|
+
const permissions = definition.permissions ?? codeExecPermissions;
|
|
201
|
+
const tool = {
|
|
202
|
+
identity,
|
|
203
|
+
inputSchema: definition.inputSchema ?? codeExecInputSchema,
|
|
204
|
+
permissions,
|
|
205
|
+
validateInput: (input) => validateBuiltInDogpileToolInput("codeExec", input),
|
|
206
|
+
execute: (input, context) => executeBuiltInTool(identity, definition.execute, input, context, "codeExec")
|
|
207
|
+
};
|
|
208
|
+
return tool;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
export function normalizeBuiltInDogpileTools(tools) {
|
|
213
|
+
const normalized = [];
|
|
214
|
+
if (tools.webSearch) {
|
|
215
|
+
normalized.push(normalizeBuiltInDogpileTool(asWebSearchDefinition(tools.webSearch)));
|
|
216
|
+
}
|
|
217
|
+
if (tools.codeExec) {
|
|
218
|
+
normalized.push(normalizeBuiltInDogpileTool(asCodeExecDefinition(tools.codeExec)));
|
|
219
|
+
}
|
|
220
|
+
return normalized;
|
|
221
|
+
}
|
|
222
|
+
// ---------------------------------------------------------------------------
|
|
223
|
+
// Internal helpers
|
|
224
|
+
// ---------------------------------------------------------------------------
|
|
225
|
+
async function executeBuiltInTool(identity, execute, input, context, name) {
|
|
226
|
+
const validation = validateBuiltInDogpileToolInput(name, input);
|
|
227
|
+
if (validation.type === "invalid") {
|
|
228
|
+
return {
|
|
229
|
+
type: "error",
|
|
230
|
+
toolCallId: context.toolCallId,
|
|
231
|
+
tool: identity,
|
|
232
|
+
error: {
|
|
233
|
+
code: "invalid-input",
|
|
234
|
+
message: `Invalid ${name} tool input.`,
|
|
235
|
+
retryable: false,
|
|
236
|
+
detail: { issues: serializeValidationIssues(validation.issues) }
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
try {
|
|
241
|
+
return await execute(input, context);
|
|
242
|
+
}
|
|
243
|
+
catch (error) {
|
|
244
|
+
return {
|
|
245
|
+
type: "error",
|
|
246
|
+
toolCallId: context.toolCallId,
|
|
247
|
+
tool: identity,
|
|
248
|
+
error: normalizeRuntimeToolAdapterError(error)
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
function asWebSearchDefinition(tool) {
|
|
253
|
+
return typeof tool === "function" ? { name: "webSearch", execute: tool } : tool;
|
|
254
|
+
}
|
|
255
|
+
function asCodeExecDefinition(tool) {
|
|
256
|
+
return typeof tool === "function" ? { name: "codeExec", execute: tool } : tool;
|
|
257
|
+
}
|
|
258
|
+
function mergeIdentity(defaultIdentity, options) {
|
|
259
|
+
if (!options)
|
|
260
|
+
return defaultIdentity;
|
|
261
|
+
return {
|
|
262
|
+
...defaultIdentity,
|
|
263
|
+
...(options.namespace !== undefined ? { namespace: options.namespace } : {}),
|
|
264
|
+
...(options.version !== undefined ? { version: options.version } : {}),
|
|
265
|
+
...(options.description !== undefined ? { description: options.description } : {})
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
function validateCodeExecAdapterInput(input, options) {
|
|
269
|
+
const issues = [...validateCodeExecInput(input)];
|
|
270
|
+
const languages = options.languages ?? codeExecLanguages;
|
|
271
|
+
if (typeof input.language === "string" && isCodeExecLanguage(input.language) && !languages.includes(input.language)) {
|
|
272
|
+
issues.push({
|
|
273
|
+
code: "invalid-value",
|
|
274
|
+
path: "language",
|
|
275
|
+
message: "codeExec.language is not enabled for this adapter.",
|
|
276
|
+
detail: { allowed: Array.from(languages) }
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
const effectiveTimeoutMs = input.timeoutMs ?? options.defaultTimeoutMs;
|
|
280
|
+
if (effectiveTimeoutMs !== undefined &&
|
|
281
|
+
options.maxTimeoutMs !== undefined &&
|
|
282
|
+
Number.isFinite(effectiveTimeoutMs) &&
|
|
283
|
+
Number.isFinite(options.maxTimeoutMs) &&
|
|
284
|
+
effectiveTimeoutMs > options.maxTimeoutMs) {
|
|
285
|
+
issues.push({
|
|
286
|
+
code: "out-of-range",
|
|
287
|
+
path: input.timeoutMs === undefined ? "defaultTimeoutMs" : "timeoutMs",
|
|
288
|
+
message: `codeExec.timeoutMs must be less than or equal to ${options.maxTimeoutMs}.`,
|
|
289
|
+
detail: { maximum: options.maxTimeoutMs }
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
return issues.length === 0 ? { type: "valid" } : { type: "invalid", issues };
|
|
293
|
+
}
|
|
294
|
+
function defaultWebSearchRequest(options, input, _context) {
|
|
295
|
+
const url = new URL(String(options.endpoint));
|
|
296
|
+
url.searchParams.set("q", input.query);
|
|
297
|
+
url.searchParams.set("limit", String(input.maxResults ?? options.defaultMaxResults ?? 10));
|
|
298
|
+
return {
|
|
299
|
+
url,
|
|
300
|
+
init: {
|
|
301
|
+
method: "GET",
|
|
302
|
+
...(options.headers ? { headers: options.headers } : {})
|
|
303
|
+
}
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
async function defaultWebSearchResponseParser(response) {
|
|
307
|
+
const payload = await response.json();
|
|
308
|
+
const resultValues = Array.isArray(payload)
|
|
309
|
+
? payload
|
|
310
|
+
: isJsonObject(payload) && Array.isArray(payload.results)
|
|
311
|
+
? payload.results
|
|
312
|
+
: undefined;
|
|
313
|
+
if (!resultValues) {
|
|
314
|
+
throw {
|
|
315
|
+
code: "backend-error",
|
|
316
|
+
message: "Web search backend response must contain a results array.",
|
|
317
|
+
retryable: false
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
return { results: resultValues.map(normalizeWebSearchResult) };
|
|
321
|
+
}
|
|
322
|
+
function codeExecPermissionsFor(languages, allowNetwork) {
|
|
323
|
+
return [
|
|
324
|
+
{ kind: "code-execution", sandbox: "caller-provided", languages, allowNetwork }
|
|
325
|
+
];
|
|
326
|
+
}
|
|
327
|
+
function codeExecInputSchemaFor(languages) {
|
|
328
|
+
return {
|
|
329
|
+
kind: "json-schema",
|
|
330
|
+
...(codeExecInputSchema.description ? { description: codeExecInputSchema.description } : {}),
|
|
331
|
+
schema: {
|
|
332
|
+
type: "object",
|
|
333
|
+
properties: {
|
|
334
|
+
language: { type: "string", enum: Array.from(languages) },
|
|
335
|
+
code: { type: "string" },
|
|
336
|
+
timeoutMs: { type: "number", minimum: 1 }
|
|
337
|
+
},
|
|
338
|
+
required: ["language", "code"],
|
|
339
|
+
additionalProperties: false
|
|
340
|
+
}
|
|
341
|
+
};
|
|
342
|
+
}
|
|
343
|
+
async function executeSandboxWithPolicy(execute, input, context, timeoutMs) {
|
|
344
|
+
if (context.abortSignal?.aborted) {
|
|
345
|
+
throw {
|
|
346
|
+
code: "aborted",
|
|
347
|
+
message: "Code execution was aborted before the sandbox started.",
|
|
348
|
+
retryable: true
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
const execution = Promise.resolve().then(() => execute(input, context));
|
|
352
|
+
if (timeoutMs === undefined && context.abortSignal === undefined) {
|
|
353
|
+
return await execution;
|
|
354
|
+
}
|
|
355
|
+
return await new Promise((resolve, reject) => {
|
|
356
|
+
let timeoutId;
|
|
357
|
+
const cleanup = () => {
|
|
358
|
+
if (timeoutId !== undefined)
|
|
359
|
+
clearTimeout(timeoutId);
|
|
360
|
+
context.abortSignal?.removeEventListener("abort", abortHandler);
|
|
361
|
+
};
|
|
362
|
+
const abortHandler = () => {
|
|
363
|
+
cleanup();
|
|
364
|
+
reject({
|
|
365
|
+
code: "aborted",
|
|
366
|
+
message: "Code execution was aborted.",
|
|
367
|
+
retryable: true
|
|
368
|
+
});
|
|
369
|
+
};
|
|
370
|
+
if (context.abortSignal) {
|
|
371
|
+
context.abortSignal.addEventListener("abort", abortHandler, { once: true });
|
|
372
|
+
}
|
|
373
|
+
if (timeoutMs !== undefined) {
|
|
374
|
+
timeoutId = setTimeout(() => {
|
|
375
|
+
cleanup();
|
|
376
|
+
reject({
|
|
377
|
+
code: "timeout",
|
|
378
|
+
message: `Code execution exceeded timeout of ${timeoutMs}ms.`,
|
|
379
|
+
retryable: true,
|
|
380
|
+
detail: { timeoutMs }
|
|
381
|
+
});
|
|
382
|
+
}, timeoutMs);
|
|
383
|
+
}
|
|
384
|
+
execution.then((output) => { cleanup(); resolve(output); }, (error) => { cleanup(); reject(error); });
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
function normalizeWebSearchResult(value) {
|
|
388
|
+
if (!isJsonObject(value)) {
|
|
389
|
+
throw {
|
|
390
|
+
code: "backend-error",
|
|
391
|
+
message: "Web search result must be a JSON object.",
|
|
392
|
+
retryable: false
|
|
393
|
+
};
|
|
394
|
+
}
|
|
395
|
+
const title = jsonString(value.title, "title");
|
|
396
|
+
const url = jsonString(value.url, "url");
|
|
397
|
+
const snippet = optionalJsonString(value.snippet, "snippet");
|
|
398
|
+
const metadata = optionalJsonObject(value.metadata, "metadata");
|
|
399
|
+
return {
|
|
400
|
+
title,
|
|
401
|
+
url,
|
|
402
|
+
...(snippet !== undefined ? { snippet } : {}),
|
|
403
|
+
...(metadata !== undefined ? { metadata } : {})
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
function jsonString(value, fieldName) {
|
|
407
|
+
if (typeof value !== "string" || value.trim().length === 0) {
|
|
408
|
+
throw {
|
|
409
|
+
code: "backend-error",
|
|
410
|
+
message: `Web search result ${fieldName} must be a non-empty string.`,
|
|
411
|
+
retryable: false
|
|
412
|
+
};
|
|
413
|
+
}
|
|
414
|
+
return value;
|
|
415
|
+
}
|
|
416
|
+
function optionalJsonString(value, fieldName) {
|
|
417
|
+
if (value === undefined)
|
|
418
|
+
return undefined;
|
|
419
|
+
if (typeof value !== "string") {
|
|
420
|
+
throw {
|
|
421
|
+
code: "backend-error",
|
|
422
|
+
message: `Web search result ${fieldName} must be a string when present.`,
|
|
423
|
+
retryable: false
|
|
424
|
+
};
|
|
425
|
+
}
|
|
426
|
+
return value;
|
|
427
|
+
}
|
|
428
|
+
function optionalJsonObject(value, fieldName) {
|
|
429
|
+
if (value === undefined)
|
|
430
|
+
return undefined;
|
|
431
|
+
if (!isJsonObject(value)) {
|
|
432
|
+
throw {
|
|
433
|
+
code: "backend-error",
|
|
434
|
+
message: `Web search result ${fieldName} must be a JSON object when present.`,
|
|
435
|
+
retryable: false
|
|
436
|
+
};
|
|
437
|
+
}
|
|
438
|
+
return value;
|
|
439
|
+
}
|
|
440
|
+
function isJsonObject(value) {
|
|
441
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
442
|
+
}
|
|
443
|
+
function validateWebSearchInput(input) {
|
|
444
|
+
const issues = [];
|
|
445
|
+
if (typeof input.query !== "string") {
|
|
446
|
+
issues.push({
|
|
447
|
+
code: input.query === undefined ? "missing-field" : "invalid-type",
|
|
448
|
+
path: "query",
|
|
449
|
+
message: "webSearch.query must be a string."
|
|
450
|
+
});
|
|
451
|
+
}
|
|
452
|
+
else if (input.query.trim().length === 0) {
|
|
453
|
+
issues.push({
|
|
454
|
+
code: "invalid-value",
|
|
455
|
+
path: "query",
|
|
456
|
+
message: "webSearch.query must not be empty."
|
|
457
|
+
});
|
|
458
|
+
}
|
|
459
|
+
if (input.maxResults !== undefined) {
|
|
460
|
+
if (typeof input.maxResults !== "number" || !Number.isFinite(input.maxResults)) {
|
|
461
|
+
issues.push({
|
|
462
|
+
code: "invalid-type",
|
|
463
|
+
path: "maxResults",
|
|
464
|
+
message: "webSearch.maxResults must be a finite number."
|
|
465
|
+
});
|
|
466
|
+
}
|
|
467
|
+
else if (input.maxResults < 1) {
|
|
468
|
+
issues.push({
|
|
469
|
+
code: "out-of-range",
|
|
470
|
+
path: "maxResults",
|
|
471
|
+
message: "webSearch.maxResults must be greater than or equal to 1.",
|
|
472
|
+
detail: { minimum: 1 }
|
|
473
|
+
});
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
return issues;
|
|
477
|
+
}
|
|
478
|
+
function validateCodeExecInput(input) {
|
|
479
|
+
const issues = [];
|
|
480
|
+
if (typeof input.language !== "string") {
|
|
481
|
+
issues.push({
|
|
482
|
+
code: input.language === undefined ? "missing-field" : "invalid-type",
|
|
483
|
+
path: "language",
|
|
484
|
+
message: "codeExec.language must be a string."
|
|
485
|
+
});
|
|
486
|
+
}
|
|
487
|
+
else if (!isCodeExecLanguage(input.language)) {
|
|
488
|
+
issues.push({
|
|
489
|
+
code: "invalid-value",
|
|
490
|
+
path: "language",
|
|
491
|
+
message: "codeExec.language must be one of javascript, typescript, python, bash, or shell.",
|
|
492
|
+
detail: { allowed: ["javascript", "typescript", "python", "bash", "shell"] }
|
|
493
|
+
});
|
|
494
|
+
}
|
|
495
|
+
if (typeof input.code !== "string") {
|
|
496
|
+
issues.push({
|
|
497
|
+
code: input.code === undefined ? "missing-field" : "invalid-type",
|
|
498
|
+
path: "code",
|
|
499
|
+
message: "codeExec.code must be a string."
|
|
500
|
+
});
|
|
501
|
+
}
|
|
502
|
+
if (input.timeoutMs !== undefined) {
|
|
503
|
+
if (typeof input.timeoutMs !== "number" || !Number.isFinite(input.timeoutMs)) {
|
|
504
|
+
issues.push({
|
|
505
|
+
code: "invalid-type",
|
|
506
|
+
path: "timeoutMs",
|
|
507
|
+
message: "codeExec.timeoutMs must be a finite number."
|
|
508
|
+
});
|
|
509
|
+
}
|
|
510
|
+
else if (input.timeoutMs < 1) {
|
|
511
|
+
issues.push({
|
|
512
|
+
code: "out-of-range",
|
|
513
|
+
path: "timeoutMs",
|
|
514
|
+
message: "codeExec.timeoutMs must be greater than or equal to 1.",
|
|
515
|
+
detail: { minimum: 1 }
|
|
516
|
+
});
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
return issues;
|
|
520
|
+
}
|
|
521
|
+
function isCodeExecLanguage(value) {
|
|
522
|
+
return value === "javascript" || value === "typescript" || value === "python" || value === "bash" || value === "shell";
|
|
523
|
+
}
|
|
524
|
+
// ---------------------------------------------------------------------------
|
|
525
|
+
// Adapter error normalization (shared with the executor in tools.ts)
|
|
526
|
+
// ---------------------------------------------------------------------------
|
|
527
|
+
export function normalizeRuntimeToolAdapterError(error) {
|
|
528
|
+
if (isRuntimeToolAdapterError(error))
|
|
529
|
+
return error;
|
|
530
|
+
if (error instanceof DOMException && error.name === "AbortError") {
|
|
531
|
+
return {
|
|
532
|
+
code: "aborted",
|
|
533
|
+
message: error.message || "Tool execution was aborted.",
|
|
534
|
+
retryable: true,
|
|
535
|
+
detail: { name: error.name }
|
|
536
|
+
};
|
|
537
|
+
}
|
|
538
|
+
if (error instanceof Error) {
|
|
539
|
+
return {
|
|
540
|
+
code: "backend-error",
|
|
541
|
+
message: error.message,
|
|
542
|
+
retryable: false,
|
|
543
|
+
detail: { name: error.name }
|
|
544
|
+
};
|
|
545
|
+
}
|
|
546
|
+
return {
|
|
547
|
+
code: "unknown",
|
|
548
|
+
message: "Tool execution failed with a non-Error value.",
|
|
549
|
+
retryable: false,
|
|
550
|
+
detail: { valueType: typeof error }
|
|
551
|
+
};
|
|
552
|
+
}
|
|
553
|
+
function isRuntimeToolAdapterError(error) {
|
|
554
|
+
if (typeof error !== "object" || error === null || !("code" in error) || !("message" in error)) {
|
|
555
|
+
return false;
|
|
556
|
+
}
|
|
557
|
+
const candidate = error;
|
|
558
|
+
return isRuntimeToolAdapterErrorCode(candidate.code) && typeof candidate.message === "string";
|
|
559
|
+
}
|
|
560
|
+
function isRuntimeToolAdapterErrorCode(value) {
|
|
561
|
+
return (value === "invalid-input" ||
|
|
562
|
+
value === "permission-denied" ||
|
|
563
|
+
value === "timeout" ||
|
|
564
|
+
value === "aborted" ||
|
|
565
|
+
value === "unavailable" ||
|
|
566
|
+
value === "backend-error" ||
|
|
567
|
+
value === "unknown");
|
|
568
|
+
}
|
|
569
|
+
function serializeValidationIssues(issues) {
|
|
570
|
+
return issues.map((issue) => ({
|
|
571
|
+
code: issue.code,
|
|
572
|
+
path: issue.path,
|
|
573
|
+
message: issue.message,
|
|
574
|
+
...(issue.detail !== undefined ? { detail: issue.detail } : {})
|
|
575
|
+
}));
|
|
576
|
+
}
|
|
577
|
+
//# sourceMappingURL=built-in.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"built-in.js","sourceRoot":"","sources":["../../../src/runtime/tools/built-in.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { JsonObject, JsonValue, ModelMessage, RuntimeTool, RuntimeToolExecutionContext, RuntimeToolInputSchema } from "../../types.js";
|
|
2
|
+
type VercelAIToolExecuteOptions = {
|
|
3
|
+
readonly toolCallId: string;
|
|
4
|
+
readonly messages: ModelMessage[];
|
|
5
|
+
readonly abortSignal?: AbortSignal;
|
|
6
|
+
readonly experimental_context: RuntimeToolExecutionContext;
|
|
7
|
+
};
|
|
8
|
+
type VercelAIToolExecuteFunction<Input, Output> = (input: Input, options: VercelAIToolExecuteOptions) => Output | PromiseLike<Output> | AsyncIterable<Output>;
|
|
9
|
+
type VercelAICompatibleSchema<Input> = unknown;
|
|
10
|
+
/**
|
|
11
|
+
* Vercel AI SDK tool shape accepted by Dogpile's normalization adapter.
|
|
12
|
+
*/
|
|
13
|
+
export interface VercelAITool<Input extends JsonObject = JsonObject, Output extends JsonValue = JsonValue> {
|
|
14
|
+
readonly description?: string;
|
|
15
|
+
readonly inputSchema: VercelAICompatibleSchema<Input>;
|
|
16
|
+
readonly execute?: VercelAIToolExecuteFunction<Input, Output>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Optional identity fields callers may layer onto normalized Vercel AI tools.
|
|
20
|
+
*/
|
|
21
|
+
export interface VercelAIToolIdentityOptions {
|
|
22
|
+
readonly id?: string;
|
|
23
|
+
readonly namespace?: string;
|
|
24
|
+
readonly version?: string;
|
|
25
|
+
readonly description?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Definition used to normalize one Vercel AI SDK tool into Dogpile's runtime tool interface.
|
|
29
|
+
*/
|
|
30
|
+
export interface VercelAIToolDefinition<Name extends string = string, Input extends JsonObject = JsonObject, Output extends JsonValue = JsonValue> {
|
|
31
|
+
readonly name: Name;
|
|
32
|
+
readonly tool: VercelAITool<Input, Output>;
|
|
33
|
+
readonly identity?: VercelAIToolIdentityOptions;
|
|
34
|
+
readonly inputSchema?: RuntimeToolInputSchema;
|
|
35
|
+
readonly messages?: readonly ModelMessage[];
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Caller-supplied Vercel AI SDK tool set keyed by model-visible tool name.
|
|
39
|
+
*/
|
|
40
|
+
export interface VercelAIToolSetEntry {
|
|
41
|
+
readonly description?: string;
|
|
42
|
+
readonly inputSchema: VercelAICompatibleSchema<unknown>;
|
|
43
|
+
readonly execute?: VercelAIToolExecuteFunction<never, JsonValue>;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Caller-supplied Vercel AI SDK tool set keyed by model-visible tool name.
|
|
47
|
+
*/
|
|
48
|
+
export type VercelAIToolSet = Readonly<Record<string, VercelAIToolSetEntry>>;
|
|
49
|
+
/**
|
|
50
|
+
* Options shared while normalizing a Vercel AI SDK tool set.
|
|
51
|
+
*/
|
|
52
|
+
export interface VercelAIToolSetNormalizationOptions {
|
|
53
|
+
readonly namespace?: string;
|
|
54
|
+
readonly version?: string;
|
|
55
|
+
readonly messages?: readonly ModelMessage[];
|
|
56
|
+
readonly identity?: Readonly<Record<string, VercelAIToolIdentityOptions>>;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Normalize one Vercel AI SDK tool into Dogpile's shared runtime tool interface.
|
|
60
|
+
*/
|
|
61
|
+
export declare function normalizeVercelAITool<Name extends string, Input extends JsonObject, Output extends JsonValue>(definition: VercelAIToolDefinition<Name, Input, Output>): Promise<RuntimeTool<Input, Output>>;
|
|
62
|
+
/**
|
|
63
|
+
* Normalize a Vercel AI SDK tool set into runtime tools in caller-defined key order.
|
|
64
|
+
*/
|
|
65
|
+
export declare function normalizeVercelAITools(tools: VercelAIToolSet, options?: VercelAIToolSetNormalizationOptions): Promise<readonly RuntimeTool<JsonObject, JsonValue>[]>;
|
|
66
|
+
export {};
|
|
67
|
+
//# sourceMappingURL=vercel-ai.d.ts.map
|