@economic/agents 3.2.0 → 3.2.1
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/dist/index.d.mts +5 -1
- package/dist/index.mjs +108 -86
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -13108,7 +13108,11 @@ export declare abstract class Agent<RequestContext extends Record<string, unknow
|
|
|
13108
13108
|
* as a server error.
|
|
13109
13109
|
*/
|
|
13110
13110
|
protected authenticate(request: Request): Promise<void>;
|
|
13111
|
-
|
|
13111
|
+
protected _logContext(): {
|
|
13112
|
+
agentName: string;
|
|
13113
|
+
agentClass: string;
|
|
13114
|
+
durableObjectName: string;
|
|
13115
|
+
};
|
|
13112
13116
|
/**
|
|
13113
13117
|
* Self-registers this DO in the global `agent_registry`. Only top-level DOs
|
|
13114
13118
|
* are registered — facets are enumerable via their parent's own index, so
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as aiSdk from "ai";
|
|
2
|
-
import { Output, asSchema, convertToModelMessages, generateId, generateText, getToolName, hasToolCall, isToolUIPart, jsonSchema, pruneMessages, stepCountIs, tool as tool$1 } from "ai";
|
|
2
|
+
import { AISDKError, APICallError, Output, asSchema, convertToModelMessages, generateId, generateText, getToolName, hasToolCall, isToolUIPart, jsonSchema, pruneMessages, stepCountIs, tool as tool$1 } from "ai";
|
|
3
3
|
import { isPrivateOrLocalHost } from "agents/webfetch";
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
import { truncateResult } from "@cloudflare/codemode";
|
|
@@ -28166,7 +28166,7 @@ const symbol$16 = Symbol.for(marker$16);
|
|
|
28166
28166
|
* Custom error class for AI SDK related errors.
|
|
28167
28167
|
* @extends Error
|
|
28168
28168
|
*/
|
|
28169
|
-
var AISDKError = class AISDKError extends Error {
|
|
28169
|
+
var AISDKError$1 = class AISDKError extends Error {
|
|
28170
28170
|
/**
|
|
28171
28171
|
* Creates an AI SDK Error.
|
|
28172
28172
|
*
|
|
@@ -28197,7 +28197,7 @@ var AISDKError = class AISDKError extends Error {
|
|
|
28197
28197
|
const name$14 = "AI_APICallError";
|
|
28198
28198
|
const marker$14 = `vercel.ai.error.${name$14}`;
|
|
28199
28199
|
const symbol$14 = Symbol.for(marker$14);
|
|
28200
|
-
var APICallError = class extends AISDKError {
|
|
28200
|
+
var APICallError$1 = class extends AISDKError$1 {
|
|
28201
28201
|
constructor({ message, url, requestBodyValues, statusCode, responseHeaders, responseBody, cause, isRetryable = statusCode != null && (statusCode === 408 || statusCode === 409 || statusCode === 429 || statusCode >= 500), data }) {
|
|
28202
28202
|
super({
|
|
28203
28203
|
name: name$14,
|
|
@@ -28214,13 +28214,13 @@ var APICallError = class extends AISDKError {
|
|
|
28214
28214
|
this.data = data;
|
|
28215
28215
|
}
|
|
28216
28216
|
static isInstance(error) {
|
|
28217
|
-
return AISDKError.hasMarker(error, marker$14);
|
|
28217
|
+
return AISDKError$1.hasMarker(error, marker$14);
|
|
28218
28218
|
}
|
|
28219
28219
|
};
|
|
28220
28220
|
const name$13 = "AI_EmptyResponseBodyError";
|
|
28221
28221
|
const marker$13 = `vercel.ai.error.${name$13}`;
|
|
28222
28222
|
const symbol$13 = Symbol.for(marker$13);
|
|
28223
|
-
var EmptyResponseBodyError = class extends AISDKError {
|
|
28223
|
+
var EmptyResponseBodyError = class extends AISDKError$1 {
|
|
28224
28224
|
constructor({ message = "Empty response body" } = {}) {
|
|
28225
28225
|
super({
|
|
28226
28226
|
name: name$13,
|
|
@@ -28229,7 +28229,7 @@ var EmptyResponseBodyError = class extends AISDKError {
|
|
|
28229
28229
|
this[symbol$13] = true;
|
|
28230
28230
|
}
|
|
28231
28231
|
static isInstance(error) {
|
|
28232
|
-
return AISDKError.hasMarker(error, marker$13);
|
|
28232
|
+
return AISDKError$1.hasMarker(error, marker$13);
|
|
28233
28233
|
}
|
|
28234
28234
|
};
|
|
28235
28235
|
function getErrorMessage(error) {
|
|
@@ -28244,7 +28244,7 @@ const symbol$11 = Symbol.for(marker$11);
|
|
|
28244
28244
|
/**
|
|
28245
28245
|
* A function argument is invalid.
|
|
28246
28246
|
*/
|
|
28247
|
-
var InvalidArgumentError = class extends AISDKError {
|
|
28247
|
+
var InvalidArgumentError = class extends AISDKError$1 {
|
|
28248
28248
|
constructor({ message, cause, argument }) {
|
|
28249
28249
|
super({
|
|
28250
28250
|
name: name$11,
|
|
@@ -28255,7 +28255,7 @@ var InvalidArgumentError = class extends AISDKError {
|
|
|
28255
28255
|
this.argument = argument;
|
|
28256
28256
|
}
|
|
28257
28257
|
static isInstance(error) {
|
|
28258
|
-
return AISDKError.hasMarker(error, marker$11);
|
|
28258
|
+
return AISDKError$1.hasMarker(error, marker$11);
|
|
28259
28259
|
}
|
|
28260
28260
|
};
|
|
28261
28261
|
const name$10 = "AI_InvalidPromptError";
|
|
@@ -28265,7 +28265,7 @@ const symbol$10 = Symbol.for(marker$10);
|
|
|
28265
28265
|
* A prompt is invalid. This error should be thrown by providers when they cannot
|
|
28266
28266
|
* process a prompt.
|
|
28267
28267
|
*/
|
|
28268
|
-
var InvalidPromptError = class extends AISDKError {
|
|
28268
|
+
var InvalidPromptError = class extends AISDKError$1 {
|
|
28269
28269
|
constructor({ prompt, message, cause }) {
|
|
28270
28270
|
super({
|
|
28271
28271
|
name: name$10,
|
|
@@ -28276,7 +28276,7 @@ var InvalidPromptError = class extends AISDKError {
|
|
|
28276
28276
|
this.prompt = prompt;
|
|
28277
28277
|
}
|
|
28278
28278
|
static isInstance(error) {
|
|
28279
|
-
return AISDKError.hasMarker(error, marker$10);
|
|
28279
|
+
return AISDKError$1.hasMarker(error, marker$10);
|
|
28280
28280
|
}
|
|
28281
28281
|
};
|
|
28282
28282
|
const name$9 = "AI_InvalidResponseDataError";
|
|
@@ -28286,7 +28286,7 @@ const symbol$9 = Symbol.for(marker$9);
|
|
|
28286
28286
|
* Server returned a response with invalid data content.
|
|
28287
28287
|
* This should be thrown by providers when they cannot parse the response from the API.
|
|
28288
28288
|
*/
|
|
28289
|
-
var InvalidResponseDataError = class extends AISDKError {
|
|
28289
|
+
var InvalidResponseDataError = class extends AISDKError$1 {
|
|
28290
28290
|
constructor({ data, message = `Invalid response data: ${JSON.stringify(data)}.` }) {
|
|
28291
28291
|
super({
|
|
28292
28292
|
name: name$9,
|
|
@@ -28296,13 +28296,13 @@ var InvalidResponseDataError = class extends AISDKError {
|
|
|
28296
28296
|
this.data = data;
|
|
28297
28297
|
}
|
|
28298
28298
|
static isInstance(error) {
|
|
28299
|
-
return AISDKError.hasMarker(error, marker$9);
|
|
28299
|
+
return AISDKError$1.hasMarker(error, marker$9);
|
|
28300
28300
|
}
|
|
28301
28301
|
};
|
|
28302
28302
|
const name$8 = "AI_JSONParseError";
|
|
28303
28303
|
const marker$8 = `vercel.ai.error.${name$8}`;
|
|
28304
28304
|
const symbol$8 = Symbol.for(marker$8);
|
|
28305
|
-
var JSONParseError = class extends AISDKError {
|
|
28305
|
+
var JSONParseError = class extends AISDKError$1 {
|
|
28306
28306
|
constructor({ text, cause }) {
|
|
28307
28307
|
super({
|
|
28308
28308
|
name: name$8,
|
|
@@ -28313,13 +28313,13 @@ var JSONParseError = class extends AISDKError {
|
|
|
28313
28313
|
this.text = text;
|
|
28314
28314
|
}
|
|
28315
28315
|
static isInstance(error) {
|
|
28316
|
-
return AISDKError.hasMarker(error, marker$8);
|
|
28316
|
+
return AISDKError$1.hasMarker(error, marker$8);
|
|
28317
28317
|
}
|
|
28318
28318
|
};
|
|
28319
28319
|
const name$7 = "AI_LoadAPIKeyError";
|
|
28320
28320
|
const marker$7 = `vercel.ai.error.${name$7}`;
|
|
28321
28321
|
const symbol$7 = Symbol.for(marker$7);
|
|
28322
|
-
var LoadAPIKeyError = class extends AISDKError {
|
|
28322
|
+
var LoadAPIKeyError = class extends AISDKError$1 {
|
|
28323
28323
|
constructor({ message }) {
|
|
28324
28324
|
super({
|
|
28325
28325
|
name: name$7,
|
|
@@ -28328,7 +28328,7 @@ var LoadAPIKeyError = class extends AISDKError {
|
|
|
28328
28328
|
this[symbol$7] = true;
|
|
28329
28329
|
}
|
|
28330
28330
|
static isInstance(error) {
|
|
28331
|
-
return AISDKError.hasMarker(error, marker$7);
|
|
28331
|
+
return AISDKError$1.hasMarker(error, marker$7);
|
|
28332
28332
|
}
|
|
28333
28333
|
};
|
|
28334
28334
|
const name$3 = "AI_NoSuchProviderReferenceError";
|
|
@@ -28338,7 +28338,7 @@ const symbol$3 = Symbol.for(marker$3);
|
|
|
28338
28338
|
* Thrown when a provider reference cannot be resolved because the specified
|
|
28339
28339
|
* provider is not found in the provider reference mapping.
|
|
28340
28340
|
*/
|
|
28341
|
-
var NoSuchProviderReferenceError = class extends AISDKError {
|
|
28341
|
+
var NoSuchProviderReferenceError = class extends AISDKError$1 {
|
|
28342
28342
|
constructor({ provider, reference, message = `No provider reference found for provider '${provider}'. Available providers: ${Object.keys(reference).join(", ")}` }) {
|
|
28343
28343
|
super({
|
|
28344
28344
|
name: name$3,
|
|
@@ -28349,13 +28349,13 @@ var NoSuchProviderReferenceError = class extends AISDKError {
|
|
|
28349
28349
|
this.reference = reference;
|
|
28350
28350
|
}
|
|
28351
28351
|
static isInstance(error) {
|
|
28352
|
-
return AISDKError.hasMarker(error, marker$3);
|
|
28352
|
+
return AISDKError$1.hasMarker(error, marker$3);
|
|
28353
28353
|
}
|
|
28354
28354
|
};
|
|
28355
28355
|
const name$2 = "AI_TooManyEmbeddingValuesForCallError";
|
|
28356
28356
|
const marker$2$1 = `vercel.ai.error.${name$2}`;
|
|
28357
28357
|
const symbol$2 = Symbol.for(marker$2$1);
|
|
28358
|
-
var TooManyEmbeddingValuesForCallError = class extends AISDKError {
|
|
28358
|
+
var TooManyEmbeddingValuesForCallError = class extends AISDKError$1 {
|
|
28359
28359
|
constructor(options) {
|
|
28360
28360
|
super({
|
|
28361
28361
|
name: name$2,
|
|
@@ -28368,13 +28368,13 @@ var TooManyEmbeddingValuesForCallError = class extends AISDKError {
|
|
|
28368
28368
|
this.values = options.values;
|
|
28369
28369
|
}
|
|
28370
28370
|
static isInstance(error) {
|
|
28371
|
-
return AISDKError.hasMarker(error, marker$2$1);
|
|
28371
|
+
return AISDKError$1.hasMarker(error, marker$2$1);
|
|
28372
28372
|
}
|
|
28373
28373
|
};
|
|
28374
28374
|
const name$1$1 = "AI_TypeValidationError";
|
|
28375
28375
|
const marker$1$1 = `vercel.ai.error.${name$1$1}`;
|
|
28376
28376
|
const symbol$1$1 = Symbol.for(marker$1$1);
|
|
28377
|
-
var TypeValidationError = class TypeValidationError extends AISDKError {
|
|
28377
|
+
var TypeValidationError = class TypeValidationError extends AISDKError$1 {
|
|
28378
28378
|
constructor({ value, cause, context }) {
|
|
28379
28379
|
let contextPrefix = "Type validation failed";
|
|
28380
28380
|
if (context?.field) contextPrefix += ` for ${context.field}`;
|
|
@@ -28396,7 +28396,7 @@ var TypeValidationError = class TypeValidationError extends AISDKError {
|
|
|
28396
28396
|
this.context = context;
|
|
28397
28397
|
}
|
|
28398
28398
|
static isInstance(error) {
|
|
28399
|
-
return AISDKError.hasMarker(error, marker$1$1);
|
|
28399
|
+
return AISDKError$1.hasMarker(error, marker$1$1);
|
|
28400
28400
|
}
|
|
28401
28401
|
/**
|
|
28402
28402
|
* Wraps an error into a TypeValidationError.
|
|
@@ -28421,7 +28421,7 @@ var TypeValidationError = class TypeValidationError extends AISDKError {
|
|
|
28421
28421
|
const name$16 = "AI_UnsupportedFunctionalityError";
|
|
28422
28422
|
const marker$17 = `vercel.ai.error.${name$16}`;
|
|
28423
28423
|
const symbol$17 = Symbol.for(marker$17);
|
|
28424
|
-
var UnsupportedFunctionalityError = class extends AISDKError {
|
|
28424
|
+
var UnsupportedFunctionalityError = class extends AISDKError$1 {
|
|
28425
28425
|
constructor({ functionality, message = `'${functionality}' functionality not supported.` }) {
|
|
28426
28426
|
super({
|
|
28427
28427
|
name: name$16,
|
|
@@ -28431,7 +28431,7 @@ var UnsupportedFunctionalityError = class extends AISDKError {
|
|
|
28431
28431
|
this.functionality = functionality;
|
|
28432
28432
|
}
|
|
28433
28433
|
static isInstance(error) {
|
|
28434
|
-
return AISDKError.hasMarker(error, marker$17);
|
|
28434
|
+
return AISDKError$1.hasMarker(error, marker$17);
|
|
28435
28435
|
}
|
|
28436
28436
|
};
|
|
28437
28437
|
function isJSONValue(value) {
|
|
@@ -28457,11 +28457,11 @@ function isJSONObject(value) {
|
|
|
28457
28457
|
* prior behavior).
|
|
28458
28458
|
*/
|
|
28459
28459
|
function normalizeBindingError(error, context) {
|
|
28460
|
-
if (APICallError.isInstance(error) || isAbortError$1(error)) return error;
|
|
28460
|
+
if (APICallError$1.isInstance(error) || isAbortError$1(error)) return error;
|
|
28461
28461
|
const code = parseWorkersAIErrorCode(error);
|
|
28462
28462
|
const statusCode = code != null ? WORKERS_AI_ERROR_CODE_TO_STATUS[code] : void 0;
|
|
28463
28463
|
const message = messageOf(error);
|
|
28464
|
-
return new APICallError({
|
|
28464
|
+
return new APICallError$1({
|
|
28465
28465
|
message,
|
|
28466
28466
|
url: `workers-ai:binding/run/${context.model}`,
|
|
28467
28467
|
requestBodyValues: context.requestBodyValues,
|
|
@@ -28479,7 +28479,7 @@ function normalizeBindingError(error, context) {
|
|
|
28479
28479
|
* `"Workers AI API error (<status> <statusText>): <body>"` shape.
|
|
28480
28480
|
*/
|
|
28481
28481
|
function apiCallErrorFromResponse(response, errorBody, context) {
|
|
28482
|
-
return new APICallError({
|
|
28482
|
+
return new APICallError$1({
|
|
28483
28483
|
message: `Workers AI API error (${response.status} ${response.statusText}): ${errorBody}`,
|
|
28484
28484
|
url: context.url,
|
|
28485
28485
|
requestBodyValues: context.requestBodyValues,
|
|
@@ -31347,7 +31347,7 @@ function handleFetchError({ error, url, requestBodyValues }) {
|
|
|
31347
31347
|
if (isAbortError(error)) return error;
|
|
31348
31348
|
if (error instanceof TypeError && FETCH_FAILED_ERROR_MESSAGES.includes(error.message.toLowerCase())) {
|
|
31349
31349
|
const cause = error.cause;
|
|
31350
|
-
if (cause != null) return new APICallError({
|
|
31350
|
+
if (cause != null) return new APICallError$1({
|
|
31351
31351
|
message: `Cannot connect to API: ${cause.message}`,
|
|
31352
31352
|
cause,
|
|
31353
31353
|
url,
|
|
@@ -31357,7 +31357,7 @@ function handleFetchError({ error, url, requestBodyValues }) {
|
|
|
31357
31357
|
}
|
|
31358
31358
|
const networkError = findNetworkError(error);
|
|
31359
31359
|
if (networkError != null) {
|
|
31360
|
-
if (APICallError.isInstance(error)) return new APICallError({
|
|
31360
|
+
if (APICallError$1.isInstance(error)) return new APICallError$1({
|
|
31361
31361
|
message: error.message,
|
|
31362
31362
|
cause: error.cause,
|
|
31363
31363
|
url: error.url,
|
|
@@ -31368,7 +31368,7 @@ function handleFetchError({ error, url, requestBodyValues }) {
|
|
|
31368
31368
|
data: error.data,
|
|
31369
31369
|
isRetryable: true
|
|
31370
31370
|
});
|
|
31371
|
-
return new APICallError({
|
|
31371
|
+
return new APICallError$1({
|
|
31372
31372
|
message: `Cannot connect to API: ${error instanceof Error ? error.message : networkError.message}`,
|
|
31373
31373
|
cause: error,
|
|
31374
31374
|
url,
|
|
@@ -31437,8 +31437,8 @@ const deleteFromApi = async ({ url, headers = {}, failedResponseHandler, success
|
|
|
31437
31437
|
requestBodyValues: {}
|
|
31438
31438
|
});
|
|
31439
31439
|
} catch (error) {
|
|
31440
|
-
if (isAbortError(error) || APICallError.isInstance(error)) throw error;
|
|
31441
|
-
throw new APICallError({
|
|
31440
|
+
if (isAbortError(error) || APICallError$1.isInstance(error)) throw error;
|
|
31441
|
+
throw new APICallError$1({
|
|
31442
31442
|
message: "Failed to process error response",
|
|
31443
31443
|
cause: error,
|
|
31444
31444
|
statusCode: response.status,
|
|
@@ -31457,9 +31457,9 @@ const deleteFromApi = async ({ url, headers = {}, failedResponseHandler, success
|
|
|
31457
31457
|
});
|
|
31458
31458
|
} catch (error) {
|
|
31459
31459
|
if (error instanceof Error) {
|
|
31460
|
-
if (isAbortError(error) || APICallError.isInstance(error)) throw error;
|
|
31460
|
+
if (isAbortError(error) || APICallError$1.isInstance(error)) throw error;
|
|
31461
31461
|
}
|
|
31462
|
-
throw new APICallError({
|
|
31462
|
+
throw new APICallError$1({
|
|
31463
31463
|
message: "Failed to process successful response",
|
|
31464
31464
|
cause: error,
|
|
31465
31465
|
statusCode: response.status,
|
|
@@ -31868,7 +31868,7 @@ async function cancelResponseBody(response) {
|
|
|
31868
31868
|
const name$1 = "AI_DownloadError";
|
|
31869
31869
|
const marker$1 = `vercel.ai.error.${name$1}`;
|
|
31870
31870
|
const symbol$1 = Symbol.for(marker$1);
|
|
31871
|
-
var DownloadError = class extends AISDKError {
|
|
31871
|
+
var DownloadError = class extends AISDKError$1 {
|
|
31872
31872
|
constructor({ url, statusCode, statusText, cause, message = cause == null ? `Failed to download ${url}: ${statusCode} ${statusText}` : `Failed to download ${url}: ${cause}` }) {
|
|
31873
31873
|
super({
|
|
31874
31874
|
name: name$1,
|
|
@@ -31881,7 +31881,7 @@ var DownloadError = class extends AISDKError {
|
|
|
31881
31881
|
this.statusText = statusText;
|
|
31882
31882
|
}
|
|
31883
31883
|
static isInstance(error) {
|
|
31884
|
-
return AISDKError.hasMarker(error, marker$1);
|
|
31884
|
+
return AISDKError$1.hasMarker(error, marker$1);
|
|
31885
31885
|
}
|
|
31886
31886
|
};
|
|
31887
31887
|
/**
|
|
@@ -32499,8 +32499,8 @@ const getFromApi = async ({ url, headers = {}, successfulResponseHandler, failed
|
|
|
32499
32499
|
requestBodyValues: {}
|
|
32500
32500
|
});
|
|
32501
32501
|
} catch (error) {
|
|
32502
|
-
if (isAbortError(error) || APICallError.isInstance(error)) throw error;
|
|
32503
|
-
throw new APICallError({
|
|
32502
|
+
if (isAbortError(error) || APICallError$1.isInstance(error)) throw error;
|
|
32503
|
+
throw new APICallError$1({
|
|
32504
32504
|
message: "Failed to process error response",
|
|
32505
32505
|
cause: error,
|
|
32506
32506
|
statusCode: response.status,
|
|
@@ -32519,9 +32519,9 @@ const getFromApi = async ({ url, headers = {}, successfulResponseHandler, failed
|
|
|
32519
32519
|
});
|
|
32520
32520
|
} catch (error) {
|
|
32521
32521
|
if (error instanceof Error) {
|
|
32522
|
-
if (isAbortError(error) || APICallError.isInstance(error)) throw error;
|
|
32522
|
+
if (isAbortError(error) || APICallError$1.isInstance(error)) throw error;
|
|
32523
32523
|
}
|
|
32524
|
-
throw new APICallError({
|
|
32524
|
+
throw new APICallError$1({
|
|
32525
32525
|
message: "Failed to process successful response",
|
|
32526
32526
|
cause: error,
|
|
32527
32527
|
statusCode: response.status,
|
|
@@ -33867,8 +33867,8 @@ const postMultipartStreamToApi = async ({ url, headers = {}, parts, failedRespon
|
|
|
33867
33867
|
requestBodyValues
|
|
33868
33868
|
});
|
|
33869
33869
|
} catch (error) {
|
|
33870
|
-
if (isAbortError(error) || APICallError.isInstance(error)) throw error;
|
|
33871
|
-
throw new APICallError({
|
|
33870
|
+
if (isAbortError(error) || APICallError$1.isInstance(error)) throw error;
|
|
33871
|
+
throw new APICallError$1({
|
|
33872
33872
|
message: "Failed to process error response",
|
|
33873
33873
|
cause: error,
|
|
33874
33874
|
statusCode: response.status,
|
|
@@ -33887,9 +33887,9 @@ const postMultipartStreamToApi = async ({ url, headers = {}, parts, failedRespon
|
|
|
33887
33887
|
});
|
|
33888
33888
|
} catch (error) {
|
|
33889
33889
|
if (error instanceof Error) {
|
|
33890
|
-
if (isAbortError(error) || APICallError.isInstance(error)) throw error;
|
|
33890
|
+
if (isAbortError(error) || APICallError$1.isInstance(error)) throw error;
|
|
33891
33891
|
}
|
|
33892
|
-
throw new APICallError({
|
|
33892
|
+
throw new APICallError$1({
|
|
33893
33893
|
message: "Failed to process successful response",
|
|
33894
33894
|
cause: error,
|
|
33895
33895
|
statusCode: response.status,
|
|
@@ -33953,8 +33953,8 @@ const postToApi = async ({ url, headers = {}, body, successfulResponseHandler, f
|
|
|
33953
33953
|
requestBodyValues: body.values
|
|
33954
33954
|
});
|
|
33955
33955
|
} catch (error) {
|
|
33956
|
-
if (isAbortError(error) || APICallError.isInstance(error)) throw error;
|
|
33957
|
-
throw new APICallError({
|
|
33956
|
+
if (isAbortError(error) || APICallError$1.isInstance(error)) throw error;
|
|
33957
|
+
throw new APICallError$1({
|
|
33958
33958
|
message: "Failed to process error response",
|
|
33959
33959
|
cause: error,
|
|
33960
33960
|
statusCode: response.status,
|
|
@@ -33973,9 +33973,9 @@ const postToApi = async ({ url, headers = {}, body, successfulResponseHandler, f
|
|
|
33973
33973
|
});
|
|
33974
33974
|
} catch (error) {
|
|
33975
33975
|
if (error instanceof Error) {
|
|
33976
|
-
if (isAbortError(error) || APICallError.isInstance(error)) throw error;
|
|
33976
|
+
if (isAbortError(error) || APICallError$1.isInstance(error)) throw error;
|
|
33977
33977
|
}
|
|
33978
|
-
throw new APICallError({
|
|
33978
|
+
throw new APICallError$1({
|
|
33979
33979
|
message: "Failed to process successful response",
|
|
33980
33980
|
cause: error,
|
|
33981
33981
|
statusCode: response.status,
|
|
@@ -34104,7 +34104,7 @@ function wrapResponseBodyStream({ stream, url, requestBodyValues, statusCode, re
|
|
|
34104
34104
|
return;
|
|
34105
34105
|
}
|
|
34106
34106
|
controller.error(handleFetchError({
|
|
34107
|
-
error: new APICallError({
|
|
34107
|
+
error: new APICallError$1({
|
|
34108
34108
|
message: "Failed to process successful response",
|
|
34109
34109
|
cause: error,
|
|
34110
34110
|
statusCode,
|
|
@@ -34140,7 +34140,7 @@ const createJsonErrorResponseHandler = ({ errorSchema, errorToMessage, isRetryab
|
|
|
34140
34140
|
const responseHeaders = extractResponseHeaders(response);
|
|
34141
34141
|
if (responseBody.trim() === "") return {
|
|
34142
34142
|
responseHeaders,
|
|
34143
|
-
value: new APICallError({
|
|
34143
|
+
value: new APICallError$1({
|
|
34144
34144
|
message: response.statusText,
|
|
34145
34145
|
url,
|
|
34146
34146
|
requestBodyValues,
|
|
@@ -34157,7 +34157,7 @@ const createJsonErrorResponseHandler = ({ errorSchema, errorToMessage, isRetryab
|
|
|
34157
34157
|
});
|
|
34158
34158
|
return {
|
|
34159
34159
|
responseHeaders,
|
|
34160
|
-
value: new APICallError({
|
|
34160
|
+
value: new APICallError$1({
|
|
34161
34161
|
message: errorToMessage(parsedError),
|
|
34162
34162
|
url,
|
|
34163
34163
|
requestBodyValues,
|
|
@@ -34171,7 +34171,7 @@ const createJsonErrorResponseHandler = ({ errorSchema, errorToMessage, isRetryab
|
|
|
34171
34171
|
} catch {
|
|
34172
34172
|
return {
|
|
34173
34173
|
responseHeaders,
|
|
34174
|
-
value: new APICallError({
|
|
34174
|
+
value: new APICallError$1({
|
|
34175
34175
|
message: response.statusText,
|
|
34176
34176
|
url,
|
|
34177
34177
|
requestBodyValues,
|
|
@@ -34210,7 +34210,7 @@ const createJsonResponseHandler = (responseSchema) => async ({ response, url, re
|
|
|
34210
34210
|
schema: responseSchema
|
|
34211
34211
|
});
|
|
34212
34212
|
const responseHeaders = extractResponseHeaders(response);
|
|
34213
|
-
if (!parsedResult.success) throw new APICallError({
|
|
34213
|
+
if (!parsedResult.success) throw new APICallError$1({
|
|
34214
34214
|
message: "Invalid JSON response",
|
|
34215
34215
|
cause: parsedResult.error,
|
|
34216
34216
|
statusCode: response.status,
|
|
@@ -34292,7 +34292,7 @@ async function* parseJsonLines({ stream, schema, url, maxLineBytes }) {
|
|
|
34292
34292
|
}
|
|
34293
34293
|
const createBinaryResponseHandler = () => async ({ response, url, requestBodyValues }) => {
|
|
34294
34294
|
const responseHeaders = extractResponseHeaders(response);
|
|
34295
|
-
if (!response.body) throw new APICallError({
|
|
34295
|
+
if (!response.body) throw new APICallError$1({
|
|
34296
34296
|
message: "Response body is empty",
|
|
34297
34297
|
url,
|
|
34298
34298
|
requestBodyValues,
|
|
@@ -34307,7 +34307,7 @@ const createBinaryResponseHandler = () => async ({ response, url, requestBodyVal
|
|
|
34307
34307
|
value: new Uint8Array(buffer)
|
|
34308
34308
|
};
|
|
34309
34309
|
} catch (error) {
|
|
34310
|
-
throw new APICallError({
|
|
34310
|
+
throw new APICallError$1({
|
|
34311
34311
|
message: "Failed to read response as array buffer",
|
|
34312
34312
|
url,
|
|
34313
34313
|
requestBodyValues,
|
|
@@ -34356,7 +34356,7 @@ function isJSONSerializable(value) {
|
|
|
34356
34356
|
const name = "AI_SerializationError";
|
|
34357
34357
|
const marker = `vercel.ai.error.${name}`;
|
|
34358
34358
|
const symbol = Symbol.for(marker);
|
|
34359
|
-
var SerializationError = class extends AISDKError {
|
|
34359
|
+
var SerializationError = class extends AISDKError$1 {
|
|
34360
34360
|
constructor({ message = "Failed to serialize value.", cause } = {}) {
|
|
34361
34361
|
super({
|
|
34362
34362
|
name,
|
|
@@ -34366,7 +34366,7 @@ var SerializationError = class extends AISDKError {
|
|
|
34366
34366
|
this[symbol] = true;
|
|
34367
34367
|
}
|
|
34368
34368
|
static isInstance(error) {
|
|
34369
|
-
return AISDKError.hasMarker(error, marker);
|
|
34369
|
+
return AISDKError$1.hasMarker(error, marker);
|
|
34370
34370
|
}
|
|
34371
34371
|
};
|
|
34372
34372
|
/**
|
|
@@ -35098,7 +35098,7 @@ async function raceWithTimeout(promise, timeoutMs) {
|
|
|
35098
35098
|
}
|
|
35099
35099
|
function createOpenAIStreamError({ frame, url, requestBodyValues, responseHeaders }) {
|
|
35100
35100
|
const streamError = createOpenAIProviderStreamError(frame);
|
|
35101
|
-
return new APICallError({
|
|
35101
|
+
return new APICallError$1({
|
|
35102
35102
|
message: streamError?.message ?? "OpenAI stream failed before any output was generated",
|
|
35103
35103
|
url,
|
|
35104
35104
|
requestBodyValues,
|
|
@@ -41160,7 +41160,7 @@ var OpenAIResponsesLanguageModel = class OpenAIResponsesLanguageModel {
|
|
|
41160
41160
|
abortSignal: options.abortSignal,
|
|
41161
41161
|
fetch: this.config.fetch
|
|
41162
41162
|
});
|
|
41163
|
-
if (response.error) throw new APICallError({
|
|
41163
|
+
if (response.error) throw new APICallError$1({
|
|
41164
41164
|
message: response.error.message,
|
|
41165
41165
|
url,
|
|
41166
41166
|
requestBodyValues: body,
|
|
@@ -41171,7 +41171,7 @@ var OpenAIResponsesLanguageModel = class OpenAIResponsesLanguageModel {
|
|
|
41171
41171
|
});
|
|
41172
41172
|
if (response.output == null) {
|
|
41173
41173
|
const detail = response.incomplete_details?.reason;
|
|
41174
|
-
throw new APICallError({
|
|
41174
|
+
throw new APICallError$1({
|
|
41175
41175
|
message: detail ? `Responses API returned no output (${detail})` : "Responses API returned no output",
|
|
41176
41176
|
url,
|
|
41177
41177
|
requestBodyValues: body,
|
|
@@ -42566,7 +42566,7 @@ function isOpenAIChatCompletionChunk(value) {
|
|
|
42566
42566
|
return chunk != null && Array.isArray(chunk.choices) && typeof chunk.type !== "string";
|
|
42567
42567
|
}
|
|
42568
42568
|
function createOpenAIResponsesChatCompletionsMismatchError({ value, cause, url, requestBodyValues, responseHeaders }) {
|
|
42569
|
-
return new APICallError({
|
|
42569
|
+
return new APICallError$1({
|
|
42570
42570
|
message: "Received a Chat Completions stream while using the OpenAI Responses API. The default OpenAI provider model uses the Responses API. If your custom baseURL targets a Chat Completions-compatible endpoint, use openai.chat('model-id') or createOpenAI(...).chat('model-id') instead. You can also use @ai-sdk/openai-compatible for OpenAI-compatible providers.",
|
|
42571
42571
|
url,
|
|
42572
42572
|
requestBodyValues,
|
|
@@ -69941,18 +69941,38 @@ function writeOperationalLog(record, logger = console) {
|
|
|
69941
69941
|
else logger.log(message);
|
|
69942
69942
|
} catch {}
|
|
69943
69943
|
}
|
|
69944
|
+
/**
|
|
69945
|
+
* What's safe to log of an error. An AI SDK error's message can quote what
|
|
69946
|
+
* the model was sent or returned, such as a value that failed validation, so
|
|
69947
|
+
* only its name is kept, and an API call's message, which is the provider's.
|
|
69948
|
+
*/
|
|
69949
|
+
function describeError(error) {
|
|
69950
|
+
if (!AISDKError.isInstance(error)) return {
|
|
69951
|
+
name: error.name,
|
|
69952
|
+
message: error.message,
|
|
69953
|
+
stack: error.stack
|
|
69954
|
+
};
|
|
69955
|
+
return APICallError.isInstance(error) ? {
|
|
69956
|
+
name: error.name,
|
|
69957
|
+
message: error.message
|
|
69958
|
+
} : { name: error.name };
|
|
69959
|
+
}
|
|
69944
69960
|
function errorAttributes(error) {
|
|
69945
69961
|
if (!(error instanceof Error)) return { error: String(error) };
|
|
69962
|
+
const { name, message, stack } = describeError(error);
|
|
69946
69963
|
const causes = [];
|
|
69947
69964
|
let cause = error.cause;
|
|
69948
69965
|
while (cause !== void 0 && causes.length < 5) {
|
|
69949
|
-
|
|
69966
|
+
if (cause instanceof Error) {
|
|
69967
|
+
const described = describeError(cause);
|
|
69968
|
+
causes.push(described.message ? `${described.name}: ${described.message}` : described.name);
|
|
69969
|
+
} else causes.push(String(cause));
|
|
69950
69970
|
cause = cause instanceof Error ? cause.cause : void 0;
|
|
69951
69971
|
}
|
|
69952
69972
|
return {
|
|
69953
|
-
error:
|
|
69954
|
-
errorType:
|
|
69955
|
-
stack
|
|
69973
|
+
error: message,
|
|
69974
|
+
errorType: name,
|
|
69975
|
+
stack,
|
|
69956
69976
|
...causes.length ? { causes } : {}
|
|
69957
69977
|
};
|
|
69958
69978
|
}
|
|
@@ -72127,7 +72147,10 @@ var Agent = class Agent extends Think {
|
|
|
72127
72147
|
for (const source of sources) try {
|
|
72128
72148
|
for (const descriptor of await source.list()) if (!byName.has(descriptor.name)) byName.set(descriptor.name, source);
|
|
72129
72149
|
} catch (error) {
|
|
72130
|
-
|
|
72150
|
+
logOperationalError("agent.skills.source.failed", error, {
|
|
72151
|
+
...this._logContext(),
|
|
72152
|
+
attributes: { skillSource: source.id }
|
|
72153
|
+
});
|
|
72131
72154
|
break;
|
|
72132
72155
|
}
|
|
72133
72156
|
return byName;
|
|
@@ -72407,7 +72430,7 @@ function ensureChatsTableExists(sql) {
|
|
|
72407
72430
|
ensureChatsTitleSetByUserColumnExists(sql);
|
|
72408
72431
|
ensureChatMessageFeedbackTableExists(sql);
|
|
72409
72432
|
} catch (error) {
|
|
72410
|
-
|
|
72433
|
+
logOperationalError("agent.chats.table.failed", error);
|
|
72411
72434
|
}
|
|
72412
72435
|
}
|
|
72413
72436
|
function ensureChatsFeedbackColumnsExist(sql) {
|
|
@@ -72501,8 +72524,12 @@ function chatSummaryInput(messages) {
|
|
|
72501
72524
|
recentMessages: messages.slice(-20)
|
|
72502
72525
|
};
|
|
72503
72526
|
}
|
|
72504
|
-
async function summariseChatWithAI(sql, durableObjectName, { completedTurns, recentMessages }, model) {
|
|
72527
|
+
async function summariseChatWithAI(sql, durableObjectName, { completedTurns, recentMessages }, model, logContext = {}) {
|
|
72505
72528
|
const chat = getChat(sql, durableObjectName);
|
|
72529
|
+
const failureContext = {
|
|
72530
|
+
...logContext,
|
|
72531
|
+
attributes: { chatName: durableObjectName }
|
|
72532
|
+
};
|
|
72506
72533
|
if (!(!chat || !chat.title || isChatSummaryDue(completedTurns))) return;
|
|
72507
72534
|
let systemPrompt = `
|
|
72508
72535
|
You are a helpful assistant that summarises chats.
|
|
@@ -72535,7 +72562,7 @@ async function summariseChatWithAI(sql, durableObjectName, { completedTurns, rec
|
|
|
72535
72562
|
}) })
|
|
72536
72563
|
});
|
|
72537
72564
|
if (!title || !summary) {
|
|
72538
|
-
|
|
72565
|
+
logOperationalError("assistant.chat.summary.failed", /* @__PURE__ */ new Error("The model gave no title or summary."), failureContext);
|
|
72539
72566
|
return;
|
|
72540
72567
|
}
|
|
72541
72568
|
sql`UPDATE chats
|
|
@@ -72545,10 +72572,7 @@ async function summariseChatWithAI(sql, durableObjectName, { completedTurns, rec
|
|
|
72545
72572
|
WHERE durable_object_name = ${durableObjectName}`;
|
|
72546
72573
|
console.info("[Assistant] Generated chat summary", { durableObjectName });
|
|
72547
72574
|
} catch (error) {
|
|
72548
|
-
|
|
72549
|
-
durableObjectName,
|
|
72550
|
-
error
|
|
72551
|
-
});
|
|
72575
|
+
logOperationalError("assistant.chat.summary.failed", error, failureContext);
|
|
72552
72576
|
}
|
|
72553
72577
|
}
|
|
72554
72578
|
const DELETE_CHAT_CALLBACK = "deleteChatCallback";
|
|
@@ -72833,7 +72857,7 @@ var Assistant = class extends Agent$1 {
|
|
|
72833
72857
|
async recordChatTurn(durableObjectName, summaryInput) {
|
|
72834
72858
|
touchChat(this.sql.bind(this), durableObjectName);
|
|
72835
72859
|
this.keepAliveWhile(async () => {
|
|
72836
|
-
await Promise.all([summaryInput && summariseChatWithAI(this.sql.bind(this), durableObjectName, summaryInput, this.fastModel), this.scheduleChatForAutoDeletion(durableObjectName).catch((error) => {
|
|
72860
|
+
await Promise.all([summaryInput && summariseChatWithAI(this.sql.bind(this), durableObjectName, summaryInput, this.fastModel, this._logContext()), this.scheduleChatForAutoDeletion(durableObjectName).catch((error) => {
|
|
72837
72861
|
logOperationalError("assistant.chat.reschedule.failed", error, {
|
|
72838
72862
|
agentName: this.constructor.name,
|
|
72839
72863
|
agentClass: this.constructor.name,
|
|
@@ -72933,9 +72957,9 @@ var Assistant = class extends Agent$1 {
|
|
|
72933
72957
|
negativeFeedbackCount: chat.negative_feedback_count
|
|
72934
72958
|
});
|
|
72935
72959
|
} catch (error) {
|
|
72936
|
-
|
|
72937
|
-
|
|
72938
|
-
|
|
72960
|
+
logOperationalError("assistant.chat.sync.failed", error, {
|
|
72961
|
+
...this._logContext(),
|
|
72962
|
+
attributes: { chatName: durableObjectName }
|
|
72939
72963
|
});
|
|
72940
72964
|
}
|
|
72941
72965
|
}
|
|
@@ -72943,9 +72967,9 @@ var Assistant = class extends Agent$1 {
|
|
|
72943
72967
|
try {
|
|
72944
72968
|
await deleteGlobalChat(this.env.AGENTS_DB, this.constructor.name, this.name, durableObjectName);
|
|
72945
72969
|
} catch (error) {
|
|
72946
|
-
|
|
72947
|
-
|
|
72948
|
-
|
|
72970
|
+
logOperationalError("assistant.chat.unlist.failed", error, {
|
|
72971
|
+
...this._logContext(),
|
|
72972
|
+
attributes: { chatName: durableObjectName }
|
|
72949
72973
|
});
|
|
72950
72974
|
}
|
|
72951
72975
|
}
|
|
@@ -73209,7 +73233,7 @@ function ensureFeedbackTableExists(sql) {
|
|
|
73209
73233
|
PRIMARY KEY (message_id)
|
|
73210
73234
|
)`;
|
|
73211
73235
|
} catch (error) {
|
|
73212
|
-
|
|
73236
|
+
logOperationalError("agent.feedback.table.failed", error);
|
|
73213
73237
|
}
|
|
73214
73238
|
}
|
|
73215
73239
|
const MESSAGE_FEEDBACK_COMMENT_LIMIT = 2e3;
|
|
@@ -73240,7 +73264,7 @@ function submitMessageFeedback(sql, messageId, rating, comment, now = /* @__PURE
|
|
|
73240
73264
|
comment = excluded.comment,
|
|
73241
73265
|
updated_at = excluded.updated_at`;
|
|
73242
73266
|
} catch (error) {
|
|
73243
|
-
|
|
73267
|
+
logOperationalError("agent.feedback.submit.failed", error, { attributes: { messageId } });
|
|
73244
73268
|
}
|
|
73245
73269
|
}
|
|
73246
73270
|
function clearMessageFeedback(sql) {
|
|
@@ -73487,7 +73511,7 @@ var ChatAgent = class extends Agent {
|
|
|
73487
73511
|
};
|
|
73488
73512
|
}
|
|
73489
73513
|
} catch (error) {
|
|
73490
|
-
|
|
73514
|
+
logOperationalError("agent.compaction.failed", error, this._logContext());
|
|
73491
73515
|
}
|
|
73492
73516
|
return config;
|
|
73493
73517
|
}
|
|
@@ -73639,9 +73663,7 @@ var ChatAgent = class extends Agent {
|
|
|
73639
73663
|
await parent.recordChatFeedback(this.name, messageId, rating);
|
|
73640
73664
|
} catch (error) {
|
|
73641
73665
|
logOperationalError("agent.feedback.summary.failed", error, {
|
|
73642
|
-
|
|
73643
|
-
agentClass: this.constructor.name,
|
|
73644
|
-
durableObjectName: this.name,
|
|
73666
|
+
...this._logContext(),
|
|
73645
73667
|
attributes: { messageId }
|
|
73646
73668
|
});
|
|
73647
73669
|
}
|