ai 6.0.0-beta.98 → 6.0.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 +829 -0
- package/README.md +17 -13
- package/dist/index.d.mts +931 -626
- package/dist/index.d.ts +931 -626
- package/dist/index.js +1409 -979
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1216 -780
- package/dist/index.mjs.map +1 -1
- package/dist/internal/index.d.mts +103 -6
- package/dist/internal/index.d.ts +103 -6
- package/dist/internal/index.js +124 -107
- package/dist/internal/index.js.map +1 -1
- package/dist/internal/index.mjs +97 -79
- package/dist/internal/index.mjs.map +1 -1
- package/dist/test/index.d.mts +19 -19
- package/dist/test/index.d.ts +19 -19
- package/dist/test/index.js +2 -2
- package/dist/test/index.js.map +1 -1
- package/dist/test/index.mjs +2 -2
- package/dist/test/index.mjs.map +1 -1
- package/package.json +5 -5
package/dist/index.js
CHANGED
|
@@ -4,8 +4,8 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
6
|
var __export = (target, all) => {
|
|
7
|
-
for (var
|
|
8
|
-
__defProp(target,
|
|
7
|
+
for (var name14 in all)
|
|
8
|
+
__defProp(target, name14, { get: all[name14], enumerable: true });
|
|
9
9
|
};
|
|
10
10
|
var __copyProps = (to, from, except, desc) => {
|
|
11
11
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
@@ -20,62 +20,57 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// src/index.ts
|
|
21
21
|
var src_exports = {};
|
|
22
22
|
__export(src_exports, {
|
|
23
|
-
AISDKError: () =>
|
|
24
|
-
APICallError: () =>
|
|
23
|
+
AISDKError: () => import_provider15.AISDKError,
|
|
24
|
+
APICallError: () => import_provider15.APICallError,
|
|
25
25
|
AbstractChat: () => AbstractChat,
|
|
26
26
|
DefaultChatTransport: () => DefaultChatTransport,
|
|
27
|
-
DownloadError: () => DownloadError,
|
|
28
|
-
EmptyResponseBodyError: () =>
|
|
27
|
+
DownloadError: () => import_provider_utils.DownloadError,
|
|
28
|
+
EmptyResponseBodyError: () => import_provider15.EmptyResponseBodyError,
|
|
29
29
|
Experimental_Agent: () => ToolLoopAgent,
|
|
30
30
|
HttpChatTransport: () => HttpChatTransport,
|
|
31
31
|
InvalidArgumentError: () => InvalidArgumentError,
|
|
32
32
|
InvalidDataContentError: () => InvalidDataContentError,
|
|
33
33
|
InvalidMessageRoleError: () => InvalidMessageRoleError,
|
|
34
|
-
InvalidPromptError: () =>
|
|
35
|
-
InvalidResponseDataError: () =>
|
|
34
|
+
InvalidPromptError: () => import_provider15.InvalidPromptError,
|
|
35
|
+
InvalidResponseDataError: () => import_provider15.InvalidResponseDataError,
|
|
36
36
|
InvalidStreamPartError: () => InvalidStreamPartError,
|
|
37
37
|
InvalidToolInputError: () => InvalidToolInputError,
|
|
38
|
-
JSONParseError: () =>
|
|
38
|
+
JSONParseError: () => import_provider15.JSONParseError,
|
|
39
39
|
JsonToSseTransformStream: () => JsonToSseTransformStream,
|
|
40
|
-
LoadAPIKeyError: () =>
|
|
41
|
-
LoadSettingError: () =>
|
|
40
|
+
LoadAPIKeyError: () => import_provider15.LoadAPIKeyError,
|
|
41
|
+
LoadSettingError: () => import_provider15.LoadSettingError,
|
|
42
42
|
MessageConversionError: () => MessageConversionError,
|
|
43
|
-
NoContentGeneratedError: () =>
|
|
43
|
+
NoContentGeneratedError: () => import_provider15.NoContentGeneratedError,
|
|
44
44
|
NoImageGeneratedError: () => NoImageGeneratedError,
|
|
45
45
|
NoObjectGeneratedError: () => NoObjectGeneratedError,
|
|
46
46
|
NoOutputGeneratedError: () => NoOutputGeneratedError,
|
|
47
47
|
NoSpeechGeneratedError: () => NoSpeechGeneratedError,
|
|
48
|
-
NoSuchModelError: () =>
|
|
48
|
+
NoSuchModelError: () => import_provider15.NoSuchModelError,
|
|
49
49
|
NoSuchProviderError: () => NoSuchProviderError,
|
|
50
50
|
NoSuchToolError: () => NoSuchToolError,
|
|
51
51
|
Output: () => output_exports,
|
|
52
52
|
RetryError: () => RetryError,
|
|
53
53
|
SerialJobExecutor: () => SerialJobExecutor,
|
|
54
54
|
TextStreamChatTransport: () => TextStreamChatTransport,
|
|
55
|
-
TooManyEmbeddingValuesForCallError: () =>
|
|
55
|
+
TooManyEmbeddingValuesForCallError: () => import_provider15.TooManyEmbeddingValuesForCallError,
|
|
56
56
|
ToolCallRepairError: () => ToolCallRepairError,
|
|
57
57
|
ToolLoopAgent: () => ToolLoopAgent,
|
|
58
|
-
TypeValidationError: () =>
|
|
58
|
+
TypeValidationError: () => import_provider15.TypeValidationError,
|
|
59
59
|
UI_MESSAGE_STREAM_HEADERS: () => UI_MESSAGE_STREAM_HEADERS,
|
|
60
|
-
UnsupportedFunctionalityError: () =>
|
|
60
|
+
UnsupportedFunctionalityError: () => import_provider15.UnsupportedFunctionalityError,
|
|
61
61
|
UnsupportedModelVersionError: () => UnsupportedModelVersionError,
|
|
62
|
-
|
|
62
|
+
addToolInputExamplesMiddleware: () => addToolInputExamplesMiddleware,
|
|
63
|
+
asSchema: () => import_provider_utils38.asSchema,
|
|
63
64
|
assistantModelMessageSchema: () => assistantModelMessageSchema,
|
|
64
65
|
callCompletionApi: () => callCompletionApi,
|
|
65
66
|
consumeStream: () => consumeStream,
|
|
66
67
|
convertFileListToFileUIParts: () => convertFileListToFileUIParts,
|
|
67
|
-
convertToCoreMessages: () => convertToCoreMessages,
|
|
68
68
|
convertToModelMessages: () => convertToModelMessages,
|
|
69
|
-
coreAssistantMessageSchema: () => coreAssistantMessageSchema,
|
|
70
|
-
coreMessageSchema: () => coreMessageSchema,
|
|
71
|
-
coreSystemMessageSchema: () => coreSystemMessageSchema,
|
|
72
|
-
coreToolMessageSchema: () => coreToolMessageSchema,
|
|
73
|
-
coreUserMessageSchema: () => coreUserMessageSchema,
|
|
74
69
|
cosineSimilarity: () => cosineSimilarity,
|
|
75
70
|
createAgentUIStream: () => createAgentUIStream,
|
|
76
71
|
createAgentUIStreamResponse: () => createAgentUIStreamResponse,
|
|
77
72
|
createGateway: () => import_gateway3.createGateway,
|
|
78
|
-
createIdGenerator: () =>
|
|
73
|
+
createIdGenerator: () => import_provider_utils38.createIdGenerator,
|
|
79
74
|
createProviderRegistry: () => createProviderRegistry,
|
|
80
75
|
createTextStreamResponse: () => createTextStreamResponse,
|
|
81
76
|
createUIMessageStream: () => createUIMessageStream,
|
|
@@ -83,19 +78,21 @@ __export(src_exports, {
|
|
|
83
78
|
customProvider: () => customProvider,
|
|
84
79
|
defaultEmbeddingSettingsMiddleware: () => defaultEmbeddingSettingsMiddleware,
|
|
85
80
|
defaultSettingsMiddleware: () => defaultSettingsMiddleware,
|
|
86
|
-
dynamicTool: () =>
|
|
81
|
+
dynamicTool: () => import_provider_utils38.dynamicTool,
|
|
87
82
|
embed: () => embed,
|
|
88
83
|
embedMany: () => embedMany,
|
|
89
84
|
experimental_createProviderRegistry: () => experimental_createProviderRegistry,
|
|
90
85
|
experimental_customProvider: () => experimental_customProvider,
|
|
91
|
-
experimental_generateImage: () =>
|
|
86
|
+
experimental_generateImage: () => experimental_generateImage,
|
|
92
87
|
experimental_generateSpeech: () => generateSpeech,
|
|
93
88
|
experimental_transcribe: () => transcribe,
|
|
94
89
|
extractReasoningMiddleware: () => extractReasoningMiddleware,
|
|
95
90
|
gateway: () => import_gateway3.gateway,
|
|
96
|
-
generateId: () =>
|
|
91
|
+
generateId: () => import_provider_utils38.generateId,
|
|
92
|
+
generateImage: () => generateImage,
|
|
97
93
|
generateObject: () => generateObject,
|
|
98
94
|
generateText: () => generateText,
|
|
95
|
+
getStaticToolName: () => getStaticToolName,
|
|
99
96
|
getTextFromDataUrl: () => getTextFromDataUrl,
|
|
100
97
|
getToolName: () => getToolName,
|
|
101
98
|
getToolOrDynamicToolName: () => getToolOrDynamicToolName,
|
|
@@ -104,14 +101,15 @@ __export(src_exports, {
|
|
|
104
101
|
isDeepEqualData: () => isDeepEqualData,
|
|
105
102
|
isFileUIPart: () => isFileUIPart,
|
|
106
103
|
isReasoningUIPart: () => isReasoningUIPart,
|
|
104
|
+
isStaticToolUIPart: () => isStaticToolUIPart,
|
|
107
105
|
isTextUIPart: () => isTextUIPart,
|
|
108
106
|
isToolOrDynamicToolUIPart: () => isToolOrDynamicToolUIPart,
|
|
109
107
|
isToolUIPart: () => isToolUIPart,
|
|
110
|
-
jsonSchema: () =>
|
|
108
|
+
jsonSchema: () => import_provider_utils38.jsonSchema,
|
|
111
109
|
lastAssistantMessageIsCompleteWithApprovalResponses: () => lastAssistantMessageIsCompleteWithApprovalResponses,
|
|
112
110
|
lastAssistantMessageIsCompleteWithToolCalls: () => lastAssistantMessageIsCompleteWithToolCalls,
|
|
113
111
|
modelMessageSchema: () => modelMessageSchema,
|
|
114
|
-
parseJsonEventStream: () =>
|
|
112
|
+
parseJsonEventStream: () => import_provider_utils38.parseJsonEventStream,
|
|
115
113
|
parsePartialJson: () => parsePartialJson,
|
|
116
114
|
pipeAgentUIStreamToResponse: () => pipeAgentUIStreamToResponse,
|
|
117
115
|
pipeTextStreamToResponse: () => pipeTextStreamToResponse,
|
|
@@ -127,7 +125,7 @@ __export(src_exports, {
|
|
|
127
125
|
streamObject: () => streamObject,
|
|
128
126
|
streamText: () => streamText,
|
|
129
127
|
systemModelMessageSchema: () => systemModelMessageSchema,
|
|
130
|
-
tool: () =>
|
|
128
|
+
tool: () => import_provider_utils38.tool,
|
|
131
129
|
toolModelMessageSchema: () => toolModelMessageSchema,
|
|
132
130
|
uiMessageChunkSchema: () => uiMessageChunkSchema,
|
|
133
131
|
userModelMessageSchema: () => userModelMessageSchema,
|
|
@@ -135,87 +133,17 @@ __export(src_exports, {
|
|
|
135
133
|
wrapEmbeddingModel: () => wrapEmbeddingModel,
|
|
136
134
|
wrapLanguageModel: () => wrapLanguageModel,
|
|
137
135
|
wrapProvider: () => wrapProvider,
|
|
138
|
-
zodSchema: () =>
|
|
136
|
+
zodSchema: () => import_provider_utils38.zodSchema
|
|
139
137
|
});
|
|
140
138
|
module.exports = __toCommonJS(src_exports);
|
|
141
139
|
var import_gateway3 = require("@ai-sdk/gateway");
|
|
142
|
-
var
|
|
140
|
+
var import_provider_utils38 = require("@ai-sdk/provider-utils");
|
|
143
141
|
|
|
144
142
|
// src/generate-text/generate-text.ts
|
|
145
|
-
var
|
|
146
|
-
|
|
147
|
-
// src/logger/log-warnings.ts
|
|
148
|
-
function formatWarning({
|
|
149
|
-
warning,
|
|
150
|
-
provider,
|
|
151
|
-
model
|
|
152
|
-
}) {
|
|
153
|
-
const prefix = `AI SDK Warning (${provider} / ${model}):`;
|
|
154
|
-
switch (warning.type) {
|
|
155
|
-
case "unsupported-setting": {
|
|
156
|
-
let message = `${prefix} The "${warning.setting}" setting is not supported.`;
|
|
157
|
-
if (warning.details) {
|
|
158
|
-
message += ` ${warning.details}`;
|
|
159
|
-
}
|
|
160
|
-
return message;
|
|
161
|
-
}
|
|
162
|
-
case "compatibility": {
|
|
163
|
-
let message = `${prefix} The "${warning.feature}" feature is not fully supported.`;
|
|
164
|
-
if (warning.details) {
|
|
165
|
-
message += ` ${warning.details}`;
|
|
166
|
-
}
|
|
167
|
-
return message;
|
|
168
|
-
}
|
|
169
|
-
case "unsupported-tool": {
|
|
170
|
-
const toolName = "name" in warning.tool ? warning.tool.name : "unknown tool";
|
|
171
|
-
let message = `${prefix} The tool "${toolName}" is not supported.`;
|
|
172
|
-
if (warning.details) {
|
|
173
|
-
message += ` ${warning.details}`;
|
|
174
|
-
}
|
|
175
|
-
return message;
|
|
176
|
-
}
|
|
177
|
-
case "other": {
|
|
178
|
-
return `${prefix} ${warning.message}`;
|
|
179
|
-
}
|
|
180
|
-
default: {
|
|
181
|
-
return `${prefix} ${JSON.stringify(warning, null, 2)}`;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
var FIRST_WARNING_INFO_MESSAGE = "AI SDK Warning System: To turn off warning logging, set the AI_SDK_LOG_WARNINGS global to false.";
|
|
186
|
-
var hasLoggedBefore = false;
|
|
187
|
-
var logWarnings = (options) => {
|
|
188
|
-
if (options.warnings.length === 0) {
|
|
189
|
-
return;
|
|
190
|
-
}
|
|
191
|
-
const logger = globalThis.AI_SDK_LOG_WARNINGS;
|
|
192
|
-
if (logger === false) {
|
|
193
|
-
return;
|
|
194
|
-
}
|
|
195
|
-
if (typeof logger === "function") {
|
|
196
|
-
logger(options);
|
|
197
|
-
return;
|
|
198
|
-
}
|
|
199
|
-
if (!hasLoggedBefore) {
|
|
200
|
-
hasLoggedBefore = true;
|
|
201
|
-
console.info(FIRST_WARNING_INFO_MESSAGE);
|
|
202
|
-
}
|
|
203
|
-
for (const warning of options.warnings) {
|
|
204
|
-
console.warn(
|
|
205
|
-
formatWarning({
|
|
206
|
-
warning,
|
|
207
|
-
provider: options.provider,
|
|
208
|
-
model: options.model
|
|
209
|
-
})
|
|
210
|
-
);
|
|
211
|
-
}
|
|
212
|
-
};
|
|
213
|
-
|
|
214
|
-
// src/model/resolve-model.ts
|
|
215
|
-
var import_gateway = require("@ai-sdk/gateway");
|
|
143
|
+
var import_provider_utils15 = require("@ai-sdk/provider-utils");
|
|
216
144
|
|
|
217
145
|
// src/error/index.ts
|
|
218
|
-
var
|
|
146
|
+
var import_provider15 = require("@ai-sdk/provider");
|
|
219
147
|
|
|
220
148
|
// src/error/invalid-argument-error.ts
|
|
221
149
|
var import_provider = require("@ai-sdk/provider");
|
|
@@ -494,25 +422,26 @@ var MessageConversionError = class extends import_provider13.AISDKError {
|
|
|
494
422
|
};
|
|
495
423
|
_a11 = symbol11;
|
|
496
424
|
|
|
497
|
-
// src/
|
|
425
|
+
// src/error/index.ts
|
|
426
|
+
var import_provider_utils = require("@ai-sdk/provider-utils");
|
|
427
|
+
|
|
428
|
+
// src/util/retry-error.ts
|
|
498
429
|
var import_provider14 = require("@ai-sdk/provider");
|
|
499
|
-
var name12 = "
|
|
430
|
+
var name12 = "AI_RetryError";
|
|
500
431
|
var marker12 = `vercel.ai.error.${name12}`;
|
|
501
432
|
var symbol12 = Symbol.for(marker12);
|
|
502
433
|
var _a12;
|
|
503
|
-
var
|
|
434
|
+
var RetryError = class extends import_provider14.AISDKError {
|
|
504
435
|
constructor({
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
cause,
|
|
509
|
-
message = cause == null ? `Failed to download ${url}: ${statusCode} ${statusText}` : `Failed to download ${url}: ${cause}`
|
|
436
|
+
message,
|
|
437
|
+
reason,
|
|
438
|
+
errors
|
|
510
439
|
}) {
|
|
511
|
-
super({ name: name12, message
|
|
440
|
+
super({ name: name12, message });
|
|
512
441
|
this[_a12] = true;
|
|
513
|
-
this.
|
|
514
|
-
this.
|
|
515
|
-
this.
|
|
442
|
+
this.reason = reason;
|
|
443
|
+
this.errors = errors;
|
|
444
|
+
this.lastError = errors[errors.length - 1];
|
|
516
445
|
}
|
|
517
446
|
static isInstance(error) {
|
|
518
447
|
return import_provider14.AISDKError.hasMarker(error, marker12);
|
|
@@ -520,35 +449,95 @@ var DownloadError = class extends import_provider14.AISDKError {
|
|
|
520
449
|
};
|
|
521
450
|
_a12 = symbol12;
|
|
522
451
|
|
|
523
|
-
// src/
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
452
|
+
// src/logger/log-warnings.ts
|
|
453
|
+
function formatWarning({
|
|
454
|
+
warning,
|
|
455
|
+
provider,
|
|
456
|
+
model
|
|
457
|
+
}) {
|
|
458
|
+
const prefix = `AI SDK Warning (${provider} / ${model}):`;
|
|
459
|
+
switch (warning.type) {
|
|
460
|
+
case "unsupported": {
|
|
461
|
+
let message = `${prefix} The feature "${warning.feature}" is not supported.`;
|
|
462
|
+
if (warning.details) {
|
|
463
|
+
message += ` ${warning.details}`;
|
|
464
|
+
}
|
|
465
|
+
return message;
|
|
466
|
+
}
|
|
467
|
+
case "compatibility": {
|
|
468
|
+
let message = `${prefix} The feature "${warning.feature}" is used in a compatibility mode.`;
|
|
469
|
+
if (warning.details) {
|
|
470
|
+
message += ` ${warning.details}`;
|
|
471
|
+
}
|
|
472
|
+
return message;
|
|
473
|
+
}
|
|
474
|
+
case "other": {
|
|
475
|
+
return `${prefix} ${warning.message}`;
|
|
476
|
+
}
|
|
477
|
+
default: {
|
|
478
|
+
return `${prefix} ${JSON.stringify(warning, null, 2)}`;
|
|
479
|
+
}
|
|
540
480
|
}
|
|
541
|
-
|
|
542
|
-
|
|
481
|
+
}
|
|
482
|
+
var FIRST_WARNING_INFO_MESSAGE = "AI SDK Warning System: To turn off warning logging, set the AI_SDK_LOG_WARNINGS global to false.";
|
|
483
|
+
var hasLoggedBefore = false;
|
|
484
|
+
var logWarnings = (options) => {
|
|
485
|
+
if (options.warnings.length === 0) {
|
|
486
|
+
return;
|
|
487
|
+
}
|
|
488
|
+
const logger = globalThis.AI_SDK_LOG_WARNINGS;
|
|
489
|
+
if (logger === false) {
|
|
490
|
+
return;
|
|
491
|
+
}
|
|
492
|
+
if (typeof logger === "function") {
|
|
493
|
+
logger(options);
|
|
494
|
+
return;
|
|
495
|
+
}
|
|
496
|
+
if (!hasLoggedBefore) {
|
|
497
|
+
hasLoggedBefore = true;
|
|
498
|
+
console.info(FIRST_WARNING_INFO_MESSAGE);
|
|
499
|
+
}
|
|
500
|
+
for (const warning of options.warnings) {
|
|
501
|
+
console.warn(
|
|
502
|
+
formatWarning({
|
|
503
|
+
warning,
|
|
504
|
+
provider: options.provider,
|
|
505
|
+
model: options.model
|
|
506
|
+
})
|
|
507
|
+
);
|
|
543
508
|
}
|
|
544
509
|
};
|
|
545
|
-
|
|
510
|
+
|
|
511
|
+
// src/model/resolve-model.ts
|
|
512
|
+
var import_gateway = require("@ai-sdk/gateway");
|
|
513
|
+
|
|
514
|
+
// src/util/log-v2-compatibility-warning.ts
|
|
515
|
+
function logV2CompatibilityWarning({
|
|
516
|
+
provider,
|
|
517
|
+
modelId
|
|
518
|
+
}) {
|
|
519
|
+
logWarnings({
|
|
520
|
+
warnings: [
|
|
521
|
+
{
|
|
522
|
+
type: "compatibility",
|
|
523
|
+
feature: "specificationVersion",
|
|
524
|
+
details: `Using v2 specification compatibility mode. Some features may not be available.`
|
|
525
|
+
}
|
|
526
|
+
],
|
|
527
|
+
provider,
|
|
528
|
+
model: modelId
|
|
529
|
+
});
|
|
530
|
+
}
|
|
546
531
|
|
|
547
532
|
// src/model/as-embedding-model-v3.ts
|
|
548
533
|
function asEmbeddingModelV3(model) {
|
|
549
534
|
if (model.specificationVersion === "v3") {
|
|
550
535
|
return model;
|
|
551
536
|
}
|
|
537
|
+
logV2CompatibilityWarning({
|
|
538
|
+
provider: model.provider,
|
|
539
|
+
modelId: model.modelId
|
|
540
|
+
});
|
|
552
541
|
return new Proxy(model, {
|
|
553
542
|
get(target, prop) {
|
|
554
543
|
if (prop === "specificationVersion")
|
|
@@ -558,11 +547,15 @@ function asEmbeddingModelV3(model) {
|
|
|
558
547
|
});
|
|
559
548
|
}
|
|
560
549
|
|
|
561
|
-
// src/model/as-
|
|
562
|
-
function
|
|
550
|
+
// src/model/as-image-model-v3.ts
|
|
551
|
+
function asImageModelV3(model) {
|
|
563
552
|
if (model.specificationVersion === "v3") {
|
|
564
553
|
return model;
|
|
565
554
|
}
|
|
555
|
+
logV2CompatibilityWarning({
|
|
556
|
+
provider: model.provider,
|
|
557
|
+
modelId: model.modelId
|
|
558
|
+
});
|
|
566
559
|
return new Proxy(model, {
|
|
567
560
|
get(target, prop) {
|
|
568
561
|
if (prop === "specificationVersion")
|
|
@@ -572,11 +565,94 @@ function asLanguageModelV3(model) {
|
|
|
572
565
|
});
|
|
573
566
|
}
|
|
574
567
|
|
|
568
|
+
// src/model/as-language-model-v3.ts
|
|
569
|
+
function asLanguageModelV3(model) {
|
|
570
|
+
if (model.specificationVersion === "v3") {
|
|
571
|
+
return model;
|
|
572
|
+
}
|
|
573
|
+
logV2CompatibilityWarning({
|
|
574
|
+
provider: model.provider,
|
|
575
|
+
modelId: model.modelId
|
|
576
|
+
});
|
|
577
|
+
return new Proxy(model, {
|
|
578
|
+
get(target, prop) {
|
|
579
|
+
switch (prop) {
|
|
580
|
+
case "specificationVersion":
|
|
581
|
+
return "v3";
|
|
582
|
+
case "doGenerate":
|
|
583
|
+
return async (...args) => {
|
|
584
|
+
const result = await target.doGenerate(...args);
|
|
585
|
+
return {
|
|
586
|
+
...result,
|
|
587
|
+
finishReason: convertV2FinishReasonToV3(result.finishReason),
|
|
588
|
+
usage: convertV2UsageToV3(result.usage)
|
|
589
|
+
};
|
|
590
|
+
};
|
|
591
|
+
case "doStream":
|
|
592
|
+
return async (...args) => {
|
|
593
|
+
const result = await target.doStream(...args);
|
|
594
|
+
return {
|
|
595
|
+
...result,
|
|
596
|
+
stream: convertV2StreamToV3(result.stream)
|
|
597
|
+
};
|
|
598
|
+
};
|
|
599
|
+
default:
|
|
600
|
+
return target[prop];
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
});
|
|
604
|
+
}
|
|
605
|
+
function convertV2StreamToV3(stream) {
|
|
606
|
+
return stream.pipeThrough(
|
|
607
|
+
new TransformStream({
|
|
608
|
+
transform(chunk, controller) {
|
|
609
|
+
switch (chunk.type) {
|
|
610
|
+
case "finish":
|
|
611
|
+
controller.enqueue({
|
|
612
|
+
...chunk,
|
|
613
|
+
finishReason: convertV2FinishReasonToV3(chunk.finishReason),
|
|
614
|
+
usage: convertV2UsageToV3(chunk.usage)
|
|
615
|
+
});
|
|
616
|
+
break;
|
|
617
|
+
default:
|
|
618
|
+
controller.enqueue(chunk);
|
|
619
|
+
break;
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
})
|
|
623
|
+
);
|
|
624
|
+
}
|
|
625
|
+
function convertV2FinishReasonToV3(finishReason) {
|
|
626
|
+
return {
|
|
627
|
+
unified: finishReason === "unknown" ? "other" : finishReason,
|
|
628
|
+
raw: void 0
|
|
629
|
+
};
|
|
630
|
+
}
|
|
631
|
+
function convertV2UsageToV3(usage) {
|
|
632
|
+
return {
|
|
633
|
+
inputTokens: {
|
|
634
|
+
total: usage.inputTokens,
|
|
635
|
+
noCache: void 0,
|
|
636
|
+
cacheRead: usage.cachedInputTokens,
|
|
637
|
+
cacheWrite: void 0
|
|
638
|
+
},
|
|
639
|
+
outputTokens: {
|
|
640
|
+
total: usage.outputTokens,
|
|
641
|
+
text: void 0,
|
|
642
|
+
reasoning: usage.reasoningTokens
|
|
643
|
+
}
|
|
644
|
+
};
|
|
645
|
+
}
|
|
646
|
+
|
|
575
647
|
// src/model/as-speech-model-v3.ts
|
|
576
648
|
function asSpeechModelV3(model) {
|
|
577
649
|
if (model.specificationVersion === "v3") {
|
|
578
650
|
return model;
|
|
579
651
|
}
|
|
652
|
+
logV2CompatibilityWarning({
|
|
653
|
+
provider: model.provider,
|
|
654
|
+
modelId: model.modelId
|
|
655
|
+
});
|
|
580
656
|
return new Proxy(model, {
|
|
581
657
|
get(target, prop) {
|
|
582
658
|
if (prop === "specificationVersion")
|
|
@@ -591,6 +667,10 @@ function asTranscriptionModelV3(model) {
|
|
|
591
667
|
if (model.specificationVersion === "v3") {
|
|
592
668
|
return model;
|
|
593
669
|
}
|
|
670
|
+
logV2CompatibilityWarning({
|
|
671
|
+
provider: model.provider,
|
|
672
|
+
modelId: model.modelId
|
|
673
|
+
});
|
|
594
674
|
return new Proxy(model, {
|
|
595
675
|
get(target, prop) {
|
|
596
676
|
if (prop === "specificationVersion")
|
|
@@ -627,12 +707,10 @@ function resolveEmbeddingModel(model) {
|
|
|
627
707
|
}
|
|
628
708
|
return asEmbeddingModelV3(model);
|
|
629
709
|
}
|
|
630
|
-
return getGlobalProvider().
|
|
631
|
-
model
|
|
632
|
-
);
|
|
710
|
+
return getGlobalProvider().embeddingModel(model);
|
|
633
711
|
}
|
|
634
712
|
function resolveTranscriptionModel(model) {
|
|
635
|
-
var
|
|
713
|
+
var _a14, _b;
|
|
636
714
|
if (typeof model !== "string") {
|
|
637
715
|
if (model.specificationVersion !== "v3" && model.specificationVersion !== "v2") {
|
|
638
716
|
const unsupportedModel = model;
|
|
@@ -644,10 +722,10 @@ function resolveTranscriptionModel(model) {
|
|
|
644
722
|
}
|
|
645
723
|
return asTranscriptionModelV3(model);
|
|
646
724
|
}
|
|
647
|
-
return (_b = (
|
|
725
|
+
return (_b = (_a14 = getGlobalProvider()).transcriptionModel) == null ? void 0 : _b.call(_a14, model);
|
|
648
726
|
}
|
|
649
727
|
function resolveSpeechModel(model) {
|
|
650
|
-
var
|
|
728
|
+
var _a14, _b;
|
|
651
729
|
if (typeof model !== "string") {
|
|
652
730
|
if (model.specificationVersion !== "v3" && model.specificationVersion !== "v2") {
|
|
653
731
|
const unsupportedModel = model;
|
|
@@ -659,18 +737,32 @@ function resolveSpeechModel(model) {
|
|
|
659
737
|
}
|
|
660
738
|
return asSpeechModelV3(model);
|
|
661
739
|
}
|
|
662
|
-
return (_b = (
|
|
740
|
+
return (_b = (_a14 = getGlobalProvider()).speechModel) == null ? void 0 : _b.call(_a14, model);
|
|
741
|
+
}
|
|
742
|
+
function resolveImageModel(model) {
|
|
743
|
+
if (typeof model !== "string") {
|
|
744
|
+
if (model.specificationVersion !== "v3" && model.specificationVersion !== "v2") {
|
|
745
|
+
const unsupportedModel = model;
|
|
746
|
+
throw new UnsupportedModelVersionError({
|
|
747
|
+
version: unsupportedModel.specificationVersion,
|
|
748
|
+
provider: unsupportedModel.provider,
|
|
749
|
+
modelId: unsupportedModel.modelId
|
|
750
|
+
});
|
|
751
|
+
}
|
|
752
|
+
return asImageModelV3(model);
|
|
753
|
+
}
|
|
754
|
+
return getGlobalProvider().imageModel(model);
|
|
663
755
|
}
|
|
664
756
|
function getGlobalProvider() {
|
|
665
|
-
var
|
|
666
|
-
return (
|
|
757
|
+
var _a14;
|
|
758
|
+
return (_a14 = globalThis.AI_SDK_DEFAULT_PROVIDER) != null ? _a14 : import_gateway.gateway;
|
|
667
759
|
}
|
|
668
760
|
|
|
669
761
|
// src/prompt/convert-to-language-model-prompt.ts
|
|
670
|
-
var
|
|
762
|
+
var import_provider_utils6 = require("@ai-sdk/provider-utils");
|
|
671
763
|
|
|
672
764
|
// src/util/detect-media-type.ts
|
|
673
|
-
var
|
|
765
|
+
var import_provider_utils2 = require("@ai-sdk/provider-utils");
|
|
674
766
|
var imageMediaTypeSignatures = [
|
|
675
767
|
{
|
|
676
768
|
mediaType: "image/gif",
|
|
@@ -826,7 +918,7 @@ var audioMediaTypeSignatures = [
|
|
|
826
918
|
}
|
|
827
919
|
];
|
|
828
920
|
var stripID3 = (data) => {
|
|
829
|
-
const bytes = typeof data === "string" ? (0,
|
|
921
|
+
const bytes = typeof data === "string" ? (0, import_provider_utils2.convertBase64ToUint8Array)(data) : data;
|
|
830
922
|
const id3Size = (bytes[6] & 127) << 21 | (bytes[7] & 127) << 14 | (bytes[8] & 127) << 7 | bytes[9] & 127;
|
|
831
923
|
return bytes.slice(id3Size + 10);
|
|
832
924
|
};
|
|
@@ -841,7 +933,7 @@ function detectMediaType({
|
|
|
841
933
|
signatures
|
|
842
934
|
}) {
|
|
843
935
|
const processedData = stripID3TagsIfPresent(data);
|
|
844
|
-
const bytes = typeof processedData === "string" ? (0,
|
|
936
|
+
const bytes = typeof processedData === "string" ? (0, import_provider_utils2.convertBase64ToUint8Array)(
|
|
845
937
|
processedData.substring(0, Math.min(processedData.length, 24))
|
|
846
938
|
) : processedData;
|
|
847
939
|
for (const signature of signatures) {
|
|
@@ -855,25 +947,26 @@ function detectMediaType({
|
|
|
855
947
|
}
|
|
856
948
|
|
|
857
949
|
// src/util/download/download.ts
|
|
858
|
-
var
|
|
950
|
+
var import_provider_utils3 = require("@ai-sdk/provider-utils");
|
|
951
|
+
var import_provider_utils4 = require("@ai-sdk/provider-utils");
|
|
859
952
|
|
|
860
953
|
// src/version.ts
|
|
861
|
-
var VERSION = true ? "6.0.0
|
|
954
|
+
var VERSION = true ? "6.0.0" : "0.0.0-test";
|
|
862
955
|
|
|
863
956
|
// src/util/download/download.ts
|
|
864
957
|
var download = async ({ url }) => {
|
|
865
|
-
var
|
|
958
|
+
var _a14;
|
|
866
959
|
const urlText = url.toString();
|
|
867
960
|
try {
|
|
868
961
|
const response = await fetch(urlText, {
|
|
869
|
-
headers: (0,
|
|
962
|
+
headers: (0, import_provider_utils4.withUserAgentSuffix)(
|
|
870
963
|
{},
|
|
871
964
|
`ai-sdk/${VERSION}`,
|
|
872
|
-
(0,
|
|
965
|
+
(0, import_provider_utils4.getRuntimeEnvironmentUserAgent)()
|
|
873
966
|
)
|
|
874
967
|
});
|
|
875
968
|
if (!response.ok) {
|
|
876
|
-
throw new DownloadError({
|
|
969
|
+
throw new import_provider_utils3.DownloadError({
|
|
877
970
|
url: urlText,
|
|
878
971
|
statusCode: response.status,
|
|
879
972
|
statusText: response.statusText
|
|
@@ -881,13 +974,13 @@ var download = async ({ url }) => {
|
|
|
881
974
|
}
|
|
882
975
|
return {
|
|
883
976
|
data: new Uint8Array(await response.arrayBuffer()),
|
|
884
|
-
mediaType: (
|
|
977
|
+
mediaType: (_a14 = response.headers.get("content-type")) != null ? _a14 : void 0
|
|
885
978
|
};
|
|
886
979
|
} catch (error) {
|
|
887
|
-
if (DownloadError.isInstance(error)) {
|
|
980
|
+
if (import_provider_utils3.DownloadError.isInstance(error)) {
|
|
888
981
|
throw error;
|
|
889
982
|
}
|
|
890
|
-
throw new DownloadError({ url: urlText, cause: error });
|
|
983
|
+
throw new import_provider_utils3.DownloadError({ url: urlText, cause: error });
|
|
891
984
|
}
|
|
892
985
|
};
|
|
893
986
|
|
|
@@ -899,8 +992,8 @@ var createDefaultDownloadFunction = (download2 = download) => (requestedDownload
|
|
|
899
992
|
);
|
|
900
993
|
|
|
901
994
|
// src/prompt/data-content.ts
|
|
902
|
-
var
|
|
903
|
-
var
|
|
995
|
+
var import_provider16 = require("@ai-sdk/provider");
|
|
996
|
+
var import_provider_utils5 = require("@ai-sdk/provider-utils");
|
|
904
997
|
var import_v4 = require("zod/v4");
|
|
905
998
|
|
|
906
999
|
// src/prompt/split-data-url.ts
|
|
@@ -927,8 +1020,8 @@ var dataContentSchema = import_v4.z.union([
|
|
|
927
1020
|
import_v4.z.custom(
|
|
928
1021
|
// Buffer might not be available in some environments such as CloudFlare:
|
|
929
1022
|
(value) => {
|
|
930
|
-
var
|
|
931
|
-
return (_b = (
|
|
1023
|
+
var _a14, _b;
|
|
1024
|
+
return (_b = (_a14 = globalThis.Buffer) == null ? void 0 : _a14.isBuffer(value)) != null ? _b : false;
|
|
932
1025
|
},
|
|
933
1026
|
{ message: "Must be a Buffer" }
|
|
934
1027
|
)
|
|
@@ -951,7 +1044,7 @@ function convertToLanguageModelV3DataContent(content) {
|
|
|
951
1044
|
content.toString()
|
|
952
1045
|
);
|
|
953
1046
|
if (dataUrlMediaType == null || base64Content == null) {
|
|
954
|
-
throw new
|
|
1047
|
+
throw new import_provider16.AISDKError({
|
|
955
1048
|
name: "InvalidDataContentError",
|
|
956
1049
|
message: `Invalid data URL format in content ${content.toString()}`
|
|
957
1050
|
});
|
|
@@ -965,9 +1058,9 @@ function convertDataContentToBase64String(content) {
|
|
|
965
1058
|
return content;
|
|
966
1059
|
}
|
|
967
1060
|
if (content instanceof ArrayBuffer) {
|
|
968
|
-
return (0,
|
|
1061
|
+
return (0, import_provider_utils5.convertUint8ArrayToBase64)(new Uint8Array(content));
|
|
969
1062
|
}
|
|
970
|
-
return (0,
|
|
1063
|
+
return (0, import_provider_utils5.convertUint8ArrayToBase64)(content);
|
|
971
1064
|
}
|
|
972
1065
|
function convertDataContentToUint8Array(content) {
|
|
973
1066
|
if (content instanceof Uint8Array) {
|
|
@@ -975,7 +1068,7 @@ function convertDataContentToUint8Array(content) {
|
|
|
975
1068
|
}
|
|
976
1069
|
if (typeof content === "string") {
|
|
977
1070
|
try {
|
|
978
|
-
return (0,
|
|
1071
|
+
return (0, import_provider_utils5.convertBase64ToUint8Array)(content);
|
|
979
1072
|
} catch (error) {
|
|
980
1073
|
throw new InvalidDataContentError({
|
|
981
1074
|
message: "Invalid data content. Content string is not a base64-encoded media.",
|
|
@@ -990,6 +1083,11 @@ function convertDataContentToUint8Array(content) {
|
|
|
990
1083
|
throw new InvalidDataContentError({ content });
|
|
991
1084
|
}
|
|
992
1085
|
|
|
1086
|
+
// src/util/as-array.ts
|
|
1087
|
+
function asArray(value) {
|
|
1088
|
+
return value === void 0 ? [] : Array.isArray(value) ? value : [value];
|
|
1089
|
+
}
|
|
1090
|
+
|
|
993
1091
|
// src/prompt/convert-to-language-model-prompt.ts
|
|
994
1092
|
async function convertToLanguageModelPrompt({
|
|
995
1093
|
prompt,
|
|
@@ -1002,7 +1100,11 @@ async function convertToLanguageModelPrompt({
|
|
|
1002
1100
|
supportedUrls
|
|
1003
1101
|
);
|
|
1004
1102
|
const messages = [
|
|
1005
|
-
...prompt.system != null ? [{ role: "system", content: prompt.system }] :
|
|
1103
|
+
...prompt.system != null ? typeof prompt.system === "string" ? [{ role: "system", content: prompt.system }] : asArray(prompt.system).map((message) => ({
|
|
1104
|
+
role: "system",
|
|
1105
|
+
content: message.content,
|
|
1106
|
+
providerOptions: message.providerOptions
|
|
1107
|
+
})) : [],
|
|
1006
1108
|
...prompt.messages.map(
|
|
1007
1109
|
(message) => convertToLanguageModelMessage({ message, downloadedAssets })
|
|
1008
1110
|
)
|
|
@@ -1142,8 +1244,8 @@ async function downloadAssets(messages, download2, supportedUrls) {
|
|
|
1142
1244
|
).flat().filter(
|
|
1143
1245
|
(part) => part.type === "image" || part.type === "file"
|
|
1144
1246
|
).map((part) => {
|
|
1145
|
-
var
|
|
1146
|
-
const mediaType = (
|
|
1247
|
+
var _a14;
|
|
1248
|
+
const mediaType = (_a14 = part.mediaType) != null ? _a14 : part.type === "image" ? "image/*" : void 0;
|
|
1147
1249
|
let data = part.type === "image" ? part.image : part.data;
|
|
1148
1250
|
if (typeof data === "string") {
|
|
1149
1251
|
try {
|
|
@@ -1156,7 +1258,7 @@ async function downloadAssets(messages, download2, supportedUrls) {
|
|
|
1156
1258
|
(part) => part.data instanceof URL
|
|
1157
1259
|
).map((part) => ({
|
|
1158
1260
|
url: part.data,
|
|
1159
|
-
isUrlSupportedByModel: part.mediaType != null && (0,
|
|
1261
|
+
isUrlSupportedByModel: part.mediaType != null && (0, import_provider_utils6.isUrlSupported)({
|
|
1160
1262
|
url: part.data.toString(),
|
|
1161
1263
|
mediaType: part.mediaType,
|
|
1162
1264
|
supportedUrls
|
|
@@ -1173,7 +1275,7 @@ async function downloadAssets(messages, download2, supportedUrls) {
|
|
|
1173
1275
|
);
|
|
1174
1276
|
}
|
|
1175
1277
|
function convertPartToLanguageModelPart(part, downloadedAssets) {
|
|
1176
|
-
var
|
|
1278
|
+
var _a14;
|
|
1177
1279
|
if (part.type === "text") {
|
|
1178
1280
|
return {
|
|
1179
1281
|
type: "text",
|
|
@@ -1206,7 +1308,7 @@ function convertPartToLanguageModelPart(part, downloadedAssets) {
|
|
|
1206
1308
|
switch (type) {
|
|
1207
1309
|
case "image": {
|
|
1208
1310
|
if (data instanceof Uint8Array || typeof data === "string") {
|
|
1209
|
-
mediaType = (
|
|
1311
|
+
mediaType = (_a14 = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _a14 : mediaType;
|
|
1210
1312
|
}
|
|
1211
1313
|
return {
|
|
1212
1314
|
type: "file",
|
|
@@ -1258,19 +1360,21 @@ function mapToolResultOutput(output) {
|
|
|
1258
1360
|
}
|
|
1259
1361
|
|
|
1260
1362
|
// src/prompt/create-tool-model-output.ts
|
|
1261
|
-
var
|
|
1262
|
-
function createToolModelOutput({
|
|
1363
|
+
var import_provider17 = require("@ai-sdk/provider");
|
|
1364
|
+
async function createToolModelOutput({
|
|
1365
|
+
toolCallId,
|
|
1366
|
+
input,
|
|
1263
1367
|
output,
|
|
1264
1368
|
tool: tool2,
|
|
1265
1369
|
errorMode
|
|
1266
1370
|
}) {
|
|
1267
1371
|
if (errorMode === "text") {
|
|
1268
|
-
return { type: "error-text", value: (0,
|
|
1372
|
+
return { type: "error-text", value: (0, import_provider17.getErrorMessage)(output) };
|
|
1269
1373
|
} else if (errorMode === "json") {
|
|
1270
1374
|
return { type: "error-json", value: toJSONValue(output) };
|
|
1271
1375
|
}
|
|
1272
1376
|
if (tool2 == null ? void 0 : tool2.toModelOutput) {
|
|
1273
|
-
return tool2.toModelOutput(output);
|
|
1377
|
+
return await tool2.toModelOutput({ toolCallId, input, output });
|
|
1274
1378
|
}
|
|
1275
1379
|
return typeof output === "string" ? { type: "text", value: output } : { type: "json", value: toJSONValue(output) };
|
|
1276
1380
|
}
|
|
@@ -1372,7 +1476,7 @@ function prepareCallSettings({
|
|
|
1372
1476
|
}
|
|
1373
1477
|
|
|
1374
1478
|
// src/prompt/prepare-tools-and-tool-choice.ts
|
|
1375
|
-
var
|
|
1479
|
+
var import_provider_utils7 = require("@ai-sdk/provider-utils");
|
|
1376
1480
|
|
|
1377
1481
|
// src/util/is-non-empty-object.ts
|
|
1378
1482
|
function isNonEmptyObject(object2) {
|
|
@@ -1392,10 +1496,10 @@ async function prepareToolsAndToolChoice({
|
|
|
1392
1496
|
};
|
|
1393
1497
|
}
|
|
1394
1498
|
const filteredTools = activeTools != null ? Object.entries(tools).filter(
|
|
1395
|
-
([
|
|
1499
|
+
([name14]) => activeTools.includes(name14)
|
|
1396
1500
|
) : Object.entries(tools);
|
|
1397
1501
|
const languageModelTools = [];
|
|
1398
|
-
for (const [
|
|
1502
|
+
for (const [name14, tool2] of filteredTools) {
|
|
1399
1503
|
const toolType = tool2.type;
|
|
1400
1504
|
switch (toolType) {
|
|
1401
1505
|
case void 0:
|
|
@@ -1403,16 +1507,18 @@ async function prepareToolsAndToolChoice({
|
|
|
1403
1507
|
case "function":
|
|
1404
1508
|
languageModelTools.push({
|
|
1405
1509
|
type: "function",
|
|
1406
|
-
name:
|
|
1510
|
+
name: name14,
|
|
1407
1511
|
description: tool2.description,
|
|
1408
|
-
inputSchema: await (0,
|
|
1409
|
-
|
|
1512
|
+
inputSchema: await (0, import_provider_utils7.asSchema)(tool2.inputSchema).jsonSchema,
|
|
1513
|
+
...tool2.inputExamples != null ? { inputExamples: tool2.inputExamples } : {},
|
|
1514
|
+
providerOptions: tool2.providerOptions,
|
|
1515
|
+
...tool2.strict != null ? { strict: tool2.strict } : {}
|
|
1410
1516
|
});
|
|
1411
1517
|
break;
|
|
1412
|
-
case "provider
|
|
1518
|
+
case "provider":
|
|
1413
1519
|
languageModelTools.push({
|
|
1414
|
-
type: "provider
|
|
1415
|
-
name:
|
|
1520
|
+
type: "provider",
|
|
1521
|
+
name: name14,
|
|
1416
1522
|
id: tool2.id,
|
|
1417
1523
|
args: tool2.args
|
|
1418
1524
|
});
|
|
@@ -1430,8 +1536,8 @@ async function prepareToolsAndToolChoice({
|
|
|
1430
1536
|
}
|
|
1431
1537
|
|
|
1432
1538
|
// src/prompt/standardize-prompt.ts
|
|
1433
|
-
var
|
|
1434
|
-
var
|
|
1539
|
+
var import_provider18 = require("@ai-sdk/provider");
|
|
1540
|
+
var import_provider_utils8 = require("@ai-sdk/provider-utils");
|
|
1435
1541
|
var import_v46 = require("zod/v4");
|
|
1436
1542
|
|
|
1437
1543
|
// src/prompt/message.ts
|
|
@@ -1603,7 +1709,6 @@ var systemModelMessageSchema = import_v45.z.object(
|
|
|
1603
1709
|
providerOptions: providerMetadataSchema.optional()
|
|
1604
1710
|
}
|
|
1605
1711
|
);
|
|
1606
|
-
var coreSystemMessageSchema = systemModelMessageSchema;
|
|
1607
1712
|
var userModelMessageSchema = import_v45.z.object({
|
|
1608
1713
|
role: import_v45.z.literal("user"),
|
|
1609
1714
|
content: import_v45.z.union([
|
|
@@ -1612,7 +1717,6 @@ var userModelMessageSchema = import_v45.z.object({
|
|
|
1612
1717
|
]),
|
|
1613
1718
|
providerOptions: providerMetadataSchema.optional()
|
|
1614
1719
|
});
|
|
1615
|
-
var coreUserMessageSchema = userModelMessageSchema;
|
|
1616
1720
|
var assistantModelMessageSchema = import_v45.z.object({
|
|
1617
1721
|
role: import_v45.z.literal("assistant"),
|
|
1618
1722
|
content: import_v45.z.union([
|
|
@@ -1630,39 +1734,38 @@ var assistantModelMessageSchema = import_v45.z.object({
|
|
|
1630
1734
|
]),
|
|
1631
1735
|
providerOptions: providerMetadataSchema.optional()
|
|
1632
1736
|
});
|
|
1633
|
-
var coreAssistantMessageSchema = assistantModelMessageSchema;
|
|
1634
1737
|
var toolModelMessageSchema = import_v45.z.object({
|
|
1635
1738
|
role: import_v45.z.literal("tool"),
|
|
1636
1739
|
content: import_v45.z.array(import_v45.z.union([toolResultPartSchema, toolApprovalResponseSchema])),
|
|
1637
1740
|
providerOptions: providerMetadataSchema.optional()
|
|
1638
1741
|
});
|
|
1639
|
-
var coreToolMessageSchema = toolModelMessageSchema;
|
|
1640
1742
|
var modelMessageSchema = import_v45.z.union([
|
|
1641
1743
|
systemModelMessageSchema,
|
|
1642
1744
|
userModelMessageSchema,
|
|
1643
1745
|
assistantModelMessageSchema,
|
|
1644
1746
|
toolModelMessageSchema
|
|
1645
1747
|
]);
|
|
1646
|
-
var coreMessageSchema = modelMessageSchema;
|
|
1647
1748
|
|
|
1648
1749
|
// src/prompt/standardize-prompt.ts
|
|
1649
1750
|
async function standardizePrompt(prompt) {
|
|
1650
1751
|
if (prompt.prompt == null && prompt.messages == null) {
|
|
1651
|
-
throw new
|
|
1752
|
+
throw new import_provider18.InvalidPromptError({
|
|
1652
1753
|
prompt,
|
|
1653
1754
|
message: "prompt or messages must be defined"
|
|
1654
1755
|
});
|
|
1655
1756
|
}
|
|
1656
1757
|
if (prompt.prompt != null && prompt.messages != null) {
|
|
1657
|
-
throw new
|
|
1758
|
+
throw new import_provider18.InvalidPromptError({
|
|
1658
1759
|
prompt,
|
|
1659
1760
|
message: "prompt and messages cannot be defined at the same time"
|
|
1660
1761
|
});
|
|
1661
1762
|
}
|
|
1662
|
-
if (prompt.system != null && typeof prompt.system !== "string")
|
|
1663
|
-
|
|
1763
|
+
if (prompt.system != null && typeof prompt.system !== "string" && !asArray(prompt.system).every(
|
|
1764
|
+
(message) => typeof message === "object" && message !== null && "role" in message && message.role === "system"
|
|
1765
|
+
)) {
|
|
1766
|
+
throw new import_provider18.InvalidPromptError({
|
|
1664
1767
|
prompt,
|
|
1665
|
-
message: "system must be a string"
|
|
1768
|
+
message: "system must be a string, SystemModelMessage, or array of SystemModelMessage"
|
|
1666
1769
|
});
|
|
1667
1770
|
}
|
|
1668
1771
|
let messages;
|
|
@@ -1673,25 +1776,25 @@ async function standardizePrompt(prompt) {
|
|
|
1673
1776
|
} else if (prompt.messages != null) {
|
|
1674
1777
|
messages = prompt.messages;
|
|
1675
1778
|
} else {
|
|
1676
|
-
throw new
|
|
1779
|
+
throw new import_provider18.InvalidPromptError({
|
|
1677
1780
|
prompt,
|
|
1678
1781
|
message: "prompt or messages must be defined"
|
|
1679
1782
|
});
|
|
1680
1783
|
}
|
|
1681
1784
|
if (messages.length === 0) {
|
|
1682
|
-
throw new
|
|
1785
|
+
throw new import_provider18.InvalidPromptError({
|
|
1683
1786
|
prompt,
|
|
1684
1787
|
message: "messages must not be empty"
|
|
1685
1788
|
});
|
|
1686
1789
|
}
|
|
1687
|
-
const validationResult = await (0,
|
|
1790
|
+
const validationResult = await (0, import_provider_utils8.safeValidateTypes)({
|
|
1688
1791
|
value: messages,
|
|
1689
1792
|
schema: import_v46.z.array(modelMessageSchema)
|
|
1690
1793
|
});
|
|
1691
1794
|
if (!validationResult.success) {
|
|
1692
|
-
throw new
|
|
1795
|
+
throw new import_provider18.InvalidPromptError({
|
|
1693
1796
|
prompt,
|
|
1694
|
-
message: "The messages
|
|
1797
|
+
message: "The messages do not match the ModelMessage[] schema.",
|
|
1695
1798
|
cause: validationResult.error
|
|
1696
1799
|
});
|
|
1697
1800
|
}
|
|
@@ -1703,16 +1806,30 @@ async function standardizePrompt(prompt) {
|
|
|
1703
1806
|
|
|
1704
1807
|
// src/prompt/wrap-gateway-error.ts
|
|
1705
1808
|
var import_gateway2 = require("@ai-sdk/gateway");
|
|
1706
|
-
var
|
|
1809
|
+
var import_provider19 = require("@ai-sdk/provider");
|
|
1707
1810
|
function wrapGatewayError(error) {
|
|
1708
|
-
if (import_gateway2.GatewayAuthenticationError.isInstance(error)
|
|
1709
|
-
return
|
|
1811
|
+
if (!import_gateway2.GatewayAuthenticationError.isInstance(error))
|
|
1812
|
+
return error;
|
|
1813
|
+
const isProductionEnv = (process == null ? void 0 : process.env.NODE_ENV) === "production";
|
|
1814
|
+
const moreInfoURL = "https://ai-sdk.dev/unauthenticated-ai-gateway";
|
|
1815
|
+
if (isProductionEnv) {
|
|
1816
|
+
return new import_provider19.AISDKError({
|
|
1710
1817
|
name: "GatewayError",
|
|
1711
|
-
message:
|
|
1712
|
-
cause: error
|
|
1818
|
+
message: `Unauthenticated. Configure AI_GATEWAY_API_KEY or use a provider module. Learn more: ${moreInfoURL}`
|
|
1713
1819
|
});
|
|
1714
1820
|
}
|
|
1715
|
-
return
|
|
1821
|
+
return Object.assign(
|
|
1822
|
+
new Error(`\x1B[1m\x1B[31mUnauthenticated request to AI Gateway.\x1B[0m
|
|
1823
|
+
|
|
1824
|
+
To authenticate, set the \x1B[33mAI_GATEWAY_API_KEY\x1B[0m environment variable with your API key.
|
|
1825
|
+
|
|
1826
|
+
Alternatively, you can use a provider module instead of the AI Gateway.
|
|
1827
|
+
|
|
1828
|
+
Learn more: \x1B[34m${moreInfoURL}\x1B[0m
|
|
1829
|
+
|
|
1830
|
+
`),
|
|
1831
|
+
{ name: "GatewayAuthenticationError" }
|
|
1832
|
+
);
|
|
1716
1833
|
}
|
|
1717
1834
|
|
|
1718
1835
|
// src/telemetry/assemble-operation-name.ts
|
|
@@ -1737,7 +1854,7 @@ function getBaseTelemetryAttributes({
|
|
|
1737
1854
|
telemetry,
|
|
1738
1855
|
headers
|
|
1739
1856
|
}) {
|
|
1740
|
-
var
|
|
1857
|
+
var _a14;
|
|
1741
1858
|
return {
|
|
1742
1859
|
"ai.model.provider": model.provider,
|
|
1743
1860
|
"ai.model.id": model.modelId,
|
|
@@ -1747,7 +1864,7 @@ function getBaseTelemetryAttributes({
|
|
|
1747
1864
|
return attributes;
|
|
1748
1865
|
}, {}),
|
|
1749
1866
|
// add metadata as attributes:
|
|
1750
|
-
...Object.entries((
|
|
1867
|
+
...Object.entries((_a14 = telemetry == null ? void 0 : telemetry.metadata) != null ? _a14 : {}).reduce(
|
|
1751
1868
|
(attributes, [key, value]) => {
|
|
1752
1869
|
attributes[`ai.telemetry.metadata.${key}`] = value;
|
|
1753
1870
|
return attributes;
|
|
@@ -1772,7 +1889,7 @@ var noopTracer = {
|
|
|
1772
1889
|
startSpan() {
|
|
1773
1890
|
return noopSpan;
|
|
1774
1891
|
},
|
|
1775
|
-
startActiveSpan(
|
|
1892
|
+
startActiveSpan(name14, arg1, arg2, arg3) {
|
|
1776
1893
|
if (typeof arg1 === "function") {
|
|
1777
1894
|
return arg1(noopSpan);
|
|
1778
1895
|
}
|
|
@@ -1842,14 +1959,14 @@ function getTracer({
|
|
|
1842
1959
|
// src/telemetry/record-span.ts
|
|
1843
1960
|
var import_api2 = require("@opentelemetry/api");
|
|
1844
1961
|
async function recordSpan({
|
|
1845
|
-
name:
|
|
1962
|
+
name: name14,
|
|
1846
1963
|
tracer,
|
|
1847
1964
|
attributes,
|
|
1848
1965
|
fn,
|
|
1849
1966
|
endWhenDone = true
|
|
1850
1967
|
}) {
|
|
1851
1968
|
return tracer.startActiveSpan(
|
|
1852
|
-
|
|
1969
|
+
name14,
|
|
1853
1970
|
{ attributes: await attributes },
|
|
1854
1971
|
async (span) => {
|
|
1855
1972
|
try {
|
|
@@ -1939,10 +2056,74 @@ function stringifyForTelemetry(prompt) {
|
|
|
1939
2056
|
}
|
|
1940
2057
|
|
|
1941
2058
|
// src/types/usage.ts
|
|
2059
|
+
function asLanguageModelUsage(usage) {
|
|
2060
|
+
return {
|
|
2061
|
+
inputTokens: usage.inputTokens.total,
|
|
2062
|
+
inputTokenDetails: {
|
|
2063
|
+
noCacheTokens: usage.inputTokens.noCache,
|
|
2064
|
+
cacheReadTokens: usage.inputTokens.cacheRead,
|
|
2065
|
+
cacheWriteTokens: usage.inputTokens.cacheWrite
|
|
2066
|
+
},
|
|
2067
|
+
outputTokens: usage.outputTokens.total,
|
|
2068
|
+
outputTokenDetails: {
|
|
2069
|
+
textTokens: usage.outputTokens.text,
|
|
2070
|
+
reasoningTokens: usage.outputTokens.reasoning
|
|
2071
|
+
},
|
|
2072
|
+
totalTokens: addTokenCounts(
|
|
2073
|
+
usage.inputTokens.total,
|
|
2074
|
+
usage.outputTokens.total
|
|
2075
|
+
),
|
|
2076
|
+
raw: usage.raw,
|
|
2077
|
+
reasoningTokens: usage.outputTokens.reasoning,
|
|
2078
|
+
cachedInputTokens: usage.inputTokens.cacheRead
|
|
2079
|
+
};
|
|
2080
|
+
}
|
|
2081
|
+
function createNullLanguageModelUsage() {
|
|
2082
|
+
return {
|
|
2083
|
+
inputTokens: void 0,
|
|
2084
|
+
inputTokenDetails: {
|
|
2085
|
+
noCacheTokens: void 0,
|
|
2086
|
+
cacheReadTokens: void 0,
|
|
2087
|
+
cacheWriteTokens: void 0
|
|
2088
|
+
},
|
|
2089
|
+
outputTokens: void 0,
|
|
2090
|
+
outputTokenDetails: {
|
|
2091
|
+
textTokens: void 0,
|
|
2092
|
+
reasoningTokens: void 0
|
|
2093
|
+
},
|
|
2094
|
+
totalTokens: void 0,
|
|
2095
|
+
raw: void 0
|
|
2096
|
+
};
|
|
2097
|
+
}
|
|
1942
2098
|
function addLanguageModelUsage(usage1, usage2) {
|
|
2099
|
+
var _a14, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
1943
2100
|
return {
|
|
1944
2101
|
inputTokens: addTokenCounts(usage1.inputTokens, usage2.inputTokens),
|
|
2102
|
+
inputTokenDetails: {
|
|
2103
|
+
noCacheTokens: addTokenCounts(
|
|
2104
|
+
(_a14 = usage1.inputTokenDetails) == null ? void 0 : _a14.noCacheTokens,
|
|
2105
|
+
(_b = usage2.inputTokenDetails) == null ? void 0 : _b.noCacheTokens
|
|
2106
|
+
),
|
|
2107
|
+
cacheReadTokens: addTokenCounts(
|
|
2108
|
+
(_c = usage1.inputTokenDetails) == null ? void 0 : _c.cacheReadTokens,
|
|
2109
|
+
(_d = usage2.inputTokenDetails) == null ? void 0 : _d.cacheReadTokens
|
|
2110
|
+
),
|
|
2111
|
+
cacheWriteTokens: addTokenCounts(
|
|
2112
|
+
(_e = usage1.inputTokenDetails) == null ? void 0 : _e.cacheWriteTokens,
|
|
2113
|
+
(_f = usage2.inputTokenDetails) == null ? void 0 : _f.cacheWriteTokens
|
|
2114
|
+
)
|
|
2115
|
+
},
|
|
1945
2116
|
outputTokens: addTokenCounts(usage1.outputTokens, usage2.outputTokens),
|
|
2117
|
+
outputTokenDetails: {
|
|
2118
|
+
textTokens: addTokenCounts(
|
|
2119
|
+
(_g = usage1.outputTokenDetails) == null ? void 0 : _g.textTokens,
|
|
2120
|
+
(_h = usage2.outputTokenDetails) == null ? void 0 : _h.textTokens
|
|
2121
|
+
),
|
|
2122
|
+
reasoningTokens: addTokenCounts(
|
|
2123
|
+
(_i = usage1.outputTokenDetails) == null ? void 0 : _i.reasoningTokens,
|
|
2124
|
+
(_j = usage2.outputTokenDetails) == null ? void 0 : _j.reasoningTokens
|
|
2125
|
+
)
|
|
2126
|
+
},
|
|
1946
2127
|
totalTokens: addTokenCounts(usage1.totalTokens, usage2.totalTokens),
|
|
1947
2128
|
reasoningTokens: addTokenCounts(
|
|
1948
2129
|
usage1.reasoningTokens,
|
|
@@ -1965,14 +2146,42 @@ function addImageModelUsage(usage1, usage2) {
|
|
|
1965
2146
|
};
|
|
1966
2147
|
}
|
|
1967
2148
|
|
|
1968
|
-
// src/util/
|
|
1969
|
-
function
|
|
1970
|
-
|
|
2149
|
+
// src/util/merge-objects.ts
|
|
2150
|
+
function mergeObjects(base, overrides) {
|
|
2151
|
+
if (base === void 0 && overrides === void 0) {
|
|
2152
|
+
return void 0;
|
|
2153
|
+
}
|
|
2154
|
+
if (base === void 0) {
|
|
2155
|
+
return overrides;
|
|
2156
|
+
}
|
|
2157
|
+
if (overrides === void 0) {
|
|
2158
|
+
return base;
|
|
2159
|
+
}
|
|
2160
|
+
const result = { ...base };
|
|
2161
|
+
for (const key in overrides) {
|
|
2162
|
+
if (Object.prototype.hasOwnProperty.call(overrides, key)) {
|
|
2163
|
+
const overridesValue = overrides[key];
|
|
2164
|
+
if (overridesValue === void 0)
|
|
2165
|
+
continue;
|
|
2166
|
+
const baseValue = key in base ? base[key] : void 0;
|
|
2167
|
+
const isSourceObject = overridesValue !== null && typeof overridesValue === "object" && !Array.isArray(overridesValue) && !(overridesValue instanceof Date) && !(overridesValue instanceof RegExp);
|
|
2168
|
+
const isTargetObject = baseValue !== null && baseValue !== void 0 && typeof baseValue === "object" && !Array.isArray(baseValue) && !(baseValue instanceof Date) && !(baseValue instanceof RegExp);
|
|
2169
|
+
if (isSourceObject && isTargetObject) {
|
|
2170
|
+
result[key] = mergeObjects(
|
|
2171
|
+
baseValue,
|
|
2172
|
+
overridesValue
|
|
2173
|
+
);
|
|
2174
|
+
} else {
|
|
2175
|
+
result[key] = overridesValue;
|
|
2176
|
+
}
|
|
2177
|
+
}
|
|
2178
|
+
}
|
|
2179
|
+
return result;
|
|
1971
2180
|
}
|
|
1972
2181
|
|
|
1973
2182
|
// src/util/retry-with-exponential-backoff.ts
|
|
1974
|
-
var
|
|
1975
|
-
var
|
|
2183
|
+
var import_provider20 = require("@ai-sdk/provider");
|
|
2184
|
+
var import_provider_utils9 = require("@ai-sdk/provider-utils");
|
|
1976
2185
|
function getRetryDelayInMs({
|
|
1977
2186
|
error,
|
|
1978
2187
|
exponentialBackoffDelay
|
|
@@ -2022,13 +2231,13 @@ async function _retryWithExponentialBackoff(f, {
|
|
|
2022
2231
|
try {
|
|
2023
2232
|
return await f();
|
|
2024
2233
|
} catch (error) {
|
|
2025
|
-
if ((0,
|
|
2234
|
+
if ((0, import_provider_utils9.isAbortError)(error)) {
|
|
2026
2235
|
throw error;
|
|
2027
2236
|
}
|
|
2028
2237
|
if (maxRetries === 0) {
|
|
2029
2238
|
throw error;
|
|
2030
2239
|
}
|
|
2031
|
-
const errorMessage = (0,
|
|
2240
|
+
const errorMessage = (0, import_provider_utils9.getErrorMessage)(error);
|
|
2032
2241
|
const newErrors = [...errors, error];
|
|
2033
2242
|
const tryNumber = newErrors.length;
|
|
2034
2243
|
if (tryNumber > maxRetries) {
|
|
@@ -2038,8 +2247,8 @@ async function _retryWithExponentialBackoff(f, {
|
|
|
2038
2247
|
errors: newErrors
|
|
2039
2248
|
});
|
|
2040
2249
|
}
|
|
2041
|
-
if (error instanceof Error &&
|
|
2042
|
-
await (0,
|
|
2250
|
+
if (error instanceof Error && import_provider20.APICallError.isInstance(error) && error.isRetryable === true && tryNumber <= maxRetries) {
|
|
2251
|
+
await (0, import_provider_utils9.delay)(
|
|
2043
2252
|
getRetryDelayInMs({
|
|
2044
2253
|
error,
|
|
2045
2254
|
exponentialBackoffDelay: delayInMs
|
|
@@ -2163,7 +2372,7 @@ function collectToolApprovals({
|
|
|
2163
2372
|
}
|
|
2164
2373
|
|
|
2165
2374
|
// src/generate-text/execute-tool-call.ts
|
|
2166
|
-
var
|
|
2375
|
+
var import_provider_utils10 = require("@ai-sdk/provider-utils");
|
|
2167
2376
|
async function executeToolCall({
|
|
2168
2377
|
toolCall,
|
|
2169
2378
|
tools,
|
|
@@ -2199,7 +2408,7 @@ async function executeToolCall({
|
|
|
2199
2408
|
fn: async (span) => {
|
|
2200
2409
|
let output;
|
|
2201
2410
|
try {
|
|
2202
|
-
const stream = (0,
|
|
2411
|
+
const stream = (0, import_provider_utils10.executeTool)({
|
|
2203
2412
|
execute: tool2.execute.bind(tool2),
|
|
2204
2413
|
input,
|
|
2205
2414
|
options: {
|
|
@@ -2229,7 +2438,8 @@ async function executeToolCall({
|
|
|
2229
2438
|
toolName,
|
|
2230
2439
|
input,
|
|
2231
2440
|
error,
|
|
2232
|
-
dynamic: tool2.type === "dynamic"
|
|
2441
|
+
dynamic: tool2.type === "dynamic",
|
|
2442
|
+
...toolCall.providerMetadata != null ? { providerMetadata: toolCall.providerMetadata } : {}
|
|
2233
2443
|
};
|
|
2234
2444
|
}
|
|
2235
2445
|
try {
|
|
@@ -2251,7 +2461,8 @@ async function executeToolCall({
|
|
|
2251
2461
|
toolName,
|
|
2252
2462
|
input,
|
|
2253
2463
|
output,
|
|
2254
|
-
dynamic: tool2.type === "dynamic"
|
|
2464
|
+
dynamic: tool2.type === "dynamic",
|
|
2465
|
+
...toolCall.providerMetadata != null ? { providerMetadata: toolCall.providerMetadata } : {}
|
|
2255
2466
|
};
|
|
2256
2467
|
}
|
|
2257
2468
|
});
|
|
@@ -2269,7 +2480,7 @@ function extractTextContent(content) {
|
|
|
2269
2480
|
}
|
|
2270
2481
|
|
|
2271
2482
|
// src/generate-text/generated-file.ts
|
|
2272
|
-
var
|
|
2483
|
+
var import_provider_utils11 = require("@ai-sdk/provider-utils");
|
|
2273
2484
|
var DefaultGeneratedFile = class {
|
|
2274
2485
|
constructor({
|
|
2275
2486
|
data,
|
|
@@ -2283,14 +2494,14 @@ var DefaultGeneratedFile = class {
|
|
|
2283
2494
|
// lazy conversion with caching to avoid unnecessary conversion overhead:
|
|
2284
2495
|
get base64() {
|
|
2285
2496
|
if (this.base64Data == null) {
|
|
2286
|
-
this.base64Data = (0,
|
|
2497
|
+
this.base64Data = (0, import_provider_utils11.convertUint8ArrayToBase64)(this.uint8ArrayData);
|
|
2287
2498
|
}
|
|
2288
2499
|
return this.base64Data;
|
|
2289
2500
|
}
|
|
2290
2501
|
// lazy conversion with caching to avoid unnecessary conversion overhead:
|
|
2291
2502
|
get uint8Array() {
|
|
2292
2503
|
if (this.uint8ArrayData == null) {
|
|
2293
|
-
this.uint8ArrayData = (0,
|
|
2504
|
+
this.uint8ArrayData = (0, import_provider_utils11.convertBase64ToUint8Array)(this.base64Data);
|
|
2294
2505
|
}
|
|
2295
2506
|
return this.uint8ArrayData;
|
|
2296
2507
|
}
|
|
@@ -2331,11 +2542,11 @@ __export(output_exports, {
|
|
|
2331
2542
|
object: () => object,
|
|
2332
2543
|
text: () => text
|
|
2333
2544
|
});
|
|
2334
|
-
var
|
|
2335
|
-
var
|
|
2545
|
+
var import_provider21 = require("@ai-sdk/provider");
|
|
2546
|
+
var import_provider_utils13 = require("@ai-sdk/provider-utils");
|
|
2336
2547
|
|
|
2337
2548
|
// src/util/parse-partial-json.ts
|
|
2338
|
-
var
|
|
2549
|
+
var import_provider_utils12 = require("@ai-sdk/provider-utils");
|
|
2339
2550
|
|
|
2340
2551
|
// src/util/fix-json.ts
|
|
2341
2552
|
function fixJson(input) {
|
|
@@ -2660,11 +2871,11 @@ async function parsePartialJson(jsonText) {
|
|
|
2660
2871
|
if (jsonText === void 0) {
|
|
2661
2872
|
return { value: void 0, state: "undefined-input" };
|
|
2662
2873
|
}
|
|
2663
|
-
let result = await (0,
|
|
2874
|
+
let result = await (0, import_provider_utils12.safeParseJSON)({ text: jsonText });
|
|
2664
2875
|
if (result.success) {
|
|
2665
2876
|
return { value: result.value, state: "successful-parse" };
|
|
2666
2877
|
}
|
|
2667
|
-
result = await (0,
|
|
2878
|
+
result = await (0, import_provider_utils12.safeParseJSON)({ text: fixJson(jsonText) });
|
|
2668
2879
|
if (result.success) {
|
|
2669
2880
|
return { value: result.value, state: "repaired-parse" };
|
|
2670
2881
|
}
|
|
@@ -2682,16 +2893,20 @@ var text = () => ({
|
|
|
2682
2893
|
}
|
|
2683
2894
|
});
|
|
2684
2895
|
var object = ({
|
|
2685
|
-
schema: inputSchema
|
|
2896
|
+
schema: inputSchema,
|
|
2897
|
+
name: name14,
|
|
2898
|
+
description
|
|
2686
2899
|
}) => {
|
|
2687
|
-
const schema = (0,
|
|
2900
|
+
const schema = (0, import_provider_utils13.asSchema)(inputSchema);
|
|
2688
2901
|
return {
|
|
2689
|
-
responseFormat: (0,
|
|
2902
|
+
responseFormat: (0, import_provider_utils13.resolve)(schema.jsonSchema).then((jsonSchema2) => ({
|
|
2690
2903
|
type: "json",
|
|
2691
|
-
schema: jsonSchema2
|
|
2904
|
+
schema: jsonSchema2,
|
|
2905
|
+
...name14 != null && { name: name14 },
|
|
2906
|
+
...description != null && { description }
|
|
2692
2907
|
})),
|
|
2693
2908
|
async parseCompleteOutput({ text: text2 }, context) {
|
|
2694
|
-
const parseResult = await (0,
|
|
2909
|
+
const parseResult = await (0, import_provider_utils13.safeParseJSON)({ text: text2 });
|
|
2695
2910
|
if (!parseResult.success) {
|
|
2696
2911
|
throw new NoObjectGeneratedError({
|
|
2697
2912
|
message: "No object generated: could not parse the response.",
|
|
@@ -2702,7 +2917,7 @@ var object = ({
|
|
|
2702
2917
|
finishReason: context.finishReason
|
|
2703
2918
|
});
|
|
2704
2919
|
}
|
|
2705
|
-
const validationResult = await (0,
|
|
2920
|
+
const validationResult = await (0, import_provider_utils13.safeValidateTypes)({
|
|
2706
2921
|
value: parseResult.value,
|
|
2707
2922
|
schema
|
|
2708
2923
|
});
|
|
@@ -2737,12 +2952,14 @@ var object = ({
|
|
|
2737
2952
|
};
|
|
2738
2953
|
};
|
|
2739
2954
|
var array = ({
|
|
2740
|
-
element: inputElementSchema
|
|
2955
|
+
element: inputElementSchema,
|
|
2956
|
+
name: name14,
|
|
2957
|
+
description
|
|
2741
2958
|
}) => {
|
|
2742
|
-
const elementSchema = (0,
|
|
2959
|
+
const elementSchema = (0, import_provider_utils13.asSchema)(inputElementSchema);
|
|
2743
2960
|
return {
|
|
2744
2961
|
// JSON schema that describes an array of elements:
|
|
2745
|
-
responseFormat: (0,
|
|
2962
|
+
responseFormat: (0, import_provider_utils13.resolve)(elementSchema.jsonSchema).then((jsonSchema2) => {
|
|
2746
2963
|
const { $schema, ...itemSchema } = jsonSchema2;
|
|
2747
2964
|
return {
|
|
2748
2965
|
type: "json",
|
|
@@ -2754,11 +2971,13 @@ var array = ({
|
|
|
2754
2971
|
},
|
|
2755
2972
|
required: ["elements"],
|
|
2756
2973
|
additionalProperties: false
|
|
2757
|
-
}
|
|
2974
|
+
},
|
|
2975
|
+
...name14 != null && { name: name14 },
|
|
2976
|
+
...description != null && { description }
|
|
2758
2977
|
};
|
|
2759
2978
|
}),
|
|
2760
2979
|
async parseCompleteOutput({ text: text2 }, context) {
|
|
2761
|
-
const parseResult = await (0,
|
|
2980
|
+
const parseResult = await (0, import_provider_utils13.safeParseJSON)({ text: text2 });
|
|
2762
2981
|
if (!parseResult.success) {
|
|
2763
2982
|
throw new NoObjectGeneratedError({
|
|
2764
2983
|
message: "No object generated: could not parse the response.",
|
|
@@ -2773,7 +2992,7 @@ var array = ({
|
|
|
2773
2992
|
if (outerValue == null || typeof outerValue !== "object" || !("elements" in outerValue) || !Array.isArray(outerValue.elements)) {
|
|
2774
2993
|
throw new NoObjectGeneratedError({
|
|
2775
2994
|
message: "No object generated: response did not match schema.",
|
|
2776
|
-
cause: new
|
|
2995
|
+
cause: new import_provider21.TypeValidationError({
|
|
2777
2996
|
value: outerValue,
|
|
2778
2997
|
cause: "response must be an object with an elements array"
|
|
2779
2998
|
}),
|
|
@@ -2784,7 +3003,7 @@ var array = ({
|
|
|
2784
3003
|
});
|
|
2785
3004
|
}
|
|
2786
3005
|
for (const element of outerValue.elements) {
|
|
2787
|
-
const validationResult = await (0,
|
|
3006
|
+
const validationResult = await (0, import_provider_utils13.safeValidateTypes)({
|
|
2788
3007
|
value: element,
|
|
2789
3008
|
schema: elementSchema
|
|
2790
3009
|
});
|
|
@@ -2817,7 +3036,7 @@ var array = ({
|
|
|
2817
3036
|
const rawElements = result.state === "repaired-parse" && outerValue.elements.length > 0 ? outerValue.elements.slice(0, -1) : outerValue.elements;
|
|
2818
3037
|
const parsedElements = [];
|
|
2819
3038
|
for (const rawElement of rawElements) {
|
|
2820
|
-
const validationResult = await (0,
|
|
3039
|
+
const validationResult = await (0, import_provider_utils13.safeValidateTypes)({
|
|
2821
3040
|
value: rawElement,
|
|
2822
3041
|
schema: elementSchema
|
|
2823
3042
|
});
|
|
@@ -2832,7 +3051,9 @@ var array = ({
|
|
|
2832
3051
|
};
|
|
2833
3052
|
};
|
|
2834
3053
|
var choice = ({
|
|
2835
|
-
options: choiceOptions
|
|
3054
|
+
options: choiceOptions,
|
|
3055
|
+
name: name14,
|
|
3056
|
+
description
|
|
2836
3057
|
}) => {
|
|
2837
3058
|
return {
|
|
2838
3059
|
// JSON schema that describes an enumeration:
|
|
@@ -2846,10 +3067,12 @@ var choice = ({
|
|
|
2846
3067
|
},
|
|
2847
3068
|
required: ["result"],
|
|
2848
3069
|
additionalProperties: false
|
|
2849
|
-
}
|
|
3070
|
+
},
|
|
3071
|
+
...name14 != null && { name: name14 },
|
|
3072
|
+
...description != null && { description }
|
|
2850
3073
|
}),
|
|
2851
3074
|
async parseCompleteOutput({ text: text2 }, context) {
|
|
2852
|
-
const parseResult = await (0,
|
|
3075
|
+
const parseResult = await (0, import_provider_utils13.safeParseJSON)({ text: text2 });
|
|
2853
3076
|
if (!parseResult.success) {
|
|
2854
3077
|
throw new NoObjectGeneratedError({
|
|
2855
3078
|
message: "No object generated: could not parse the response.",
|
|
@@ -2864,7 +3087,7 @@ var choice = ({
|
|
|
2864
3087
|
if (outerValue == null || typeof outerValue !== "object" || !("result" in outerValue) || typeof outerValue.result !== "string" || !choiceOptions.includes(outerValue.result)) {
|
|
2865
3088
|
throw new NoObjectGeneratedError({
|
|
2866
3089
|
message: "No object generated: response did not match schema.",
|
|
2867
|
-
cause: new
|
|
3090
|
+
cause: new import_provider21.TypeValidationError({
|
|
2868
3091
|
value: outerValue,
|
|
2869
3092
|
cause: "response must be an object that contains a choice value."
|
|
2870
3093
|
}),
|
|
@@ -2902,13 +3125,18 @@ var choice = ({
|
|
|
2902
3125
|
}
|
|
2903
3126
|
};
|
|
2904
3127
|
};
|
|
2905
|
-
var json = (
|
|
3128
|
+
var json = ({
|
|
3129
|
+
name: name14,
|
|
3130
|
+
description
|
|
3131
|
+
} = {}) => {
|
|
2906
3132
|
return {
|
|
2907
3133
|
responseFormat: Promise.resolve({
|
|
2908
|
-
type: "json"
|
|
3134
|
+
type: "json",
|
|
3135
|
+
...name14 != null && { name: name14 },
|
|
3136
|
+
...description != null && { description }
|
|
2909
3137
|
}),
|
|
2910
3138
|
async parseCompleteOutput({ text: text2 }, context) {
|
|
2911
|
-
const parseResult = await (0,
|
|
3139
|
+
const parseResult = await (0, import_provider_utils13.safeParseJSON)({ text: text2 });
|
|
2912
3140
|
if (!parseResult.success) {
|
|
2913
3141
|
throw new NoObjectGeneratedError({
|
|
2914
3142
|
message: "No object generated: could not parse the response.",
|
|
@@ -2938,7 +3166,7 @@ var json = () => {
|
|
|
2938
3166
|
};
|
|
2939
3167
|
|
|
2940
3168
|
// src/generate-text/parse-tool-call.ts
|
|
2941
|
-
var
|
|
3169
|
+
var import_provider_utils14 = require("@ai-sdk/provider-utils");
|
|
2942
3170
|
async function parseToolCall({
|
|
2943
3171
|
toolCall,
|
|
2944
3172
|
tools,
|
|
@@ -2946,7 +3174,7 @@ async function parseToolCall({
|
|
|
2946
3174
|
system,
|
|
2947
3175
|
messages
|
|
2948
3176
|
}) {
|
|
2949
|
-
var
|
|
3177
|
+
var _a14;
|
|
2950
3178
|
try {
|
|
2951
3179
|
if (tools == null) {
|
|
2952
3180
|
if (toolCall.providerExecuted && toolCall.dynamic) {
|
|
@@ -2967,7 +3195,7 @@ async function parseToolCall({
|
|
|
2967
3195
|
tools,
|
|
2968
3196
|
inputSchema: async ({ toolName }) => {
|
|
2969
3197
|
const { inputSchema } = tools[toolName];
|
|
2970
|
-
return await (0,
|
|
3198
|
+
return await (0, import_provider_utils14.asSchema)(inputSchema).jsonSchema;
|
|
2971
3199
|
},
|
|
2972
3200
|
system,
|
|
2973
3201
|
messages,
|
|
@@ -2985,7 +3213,7 @@ async function parseToolCall({
|
|
|
2985
3213
|
return await doParseToolCall({ toolCall: repairedToolCall, tools });
|
|
2986
3214
|
}
|
|
2987
3215
|
} catch (error) {
|
|
2988
|
-
const parsedInput = await (0,
|
|
3216
|
+
const parsedInput = await (0, import_provider_utils14.safeParseJSON)({ text: toolCall.input });
|
|
2989
3217
|
const input = parsedInput.success ? parsedInput.value : toolCall.input;
|
|
2990
3218
|
return {
|
|
2991
3219
|
type: "tool-call",
|
|
@@ -2995,12 +3223,14 @@ async function parseToolCall({
|
|
|
2995
3223
|
dynamic: true,
|
|
2996
3224
|
invalid: true,
|
|
2997
3225
|
error,
|
|
2998
|
-
title: (
|
|
3226
|
+
title: (_a14 = tools == null ? void 0 : tools[toolCall.toolName]) == null ? void 0 : _a14.title,
|
|
3227
|
+
providerExecuted: toolCall.providerExecuted,
|
|
3228
|
+
providerMetadata: toolCall.providerMetadata
|
|
2999
3229
|
};
|
|
3000
3230
|
}
|
|
3001
3231
|
}
|
|
3002
3232
|
async function parseProviderExecutedDynamicToolCall(toolCall) {
|
|
3003
|
-
const parseResult = toolCall.input.trim() === "" ? { success: true, value: {} } : await (0,
|
|
3233
|
+
const parseResult = toolCall.input.trim() === "" ? { success: true, value: {} } : await (0, import_provider_utils14.safeParseJSON)({ text: toolCall.input });
|
|
3004
3234
|
if (parseResult.success === false) {
|
|
3005
3235
|
throw new InvalidToolInputError({
|
|
3006
3236
|
toolName: toolCall.toolName,
|
|
@@ -3033,8 +3263,8 @@ async function doParseToolCall({
|
|
|
3033
3263
|
availableTools: Object.keys(tools)
|
|
3034
3264
|
});
|
|
3035
3265
|
}
|
|
3036
|
-
const schema = (0,
|
|
3037
|
-
const parseResult = toolCall.input.trim() === "" ? await (0,
|
|
3266
|
+
const schema = (0, import_provider_utils14.asSchema)(tool2.inputSchema);
|
|
3267
|
+
const parseResult = toolCall.input.trim() === "" ? await (0, import_provider_utils14.safeValidateTypes)({ value: {}, schema }) : await (0, import_provider_utils14.safeParseJSON)({ text: toolCall.input, schema });
|
|
3038
3268
|
if (parseResult.success === false) {
|
|
3039
3269
|
throw new InvalidToolInputError({
|
|
3040
3270
|
toolName,
|
|
@@ -3067,6 +3297,7 @@ var DefaultStepResult = class {
|
|
|
3067
3297
|
constructor({
|
|
3068
3298
|
content,
|
|
3069
3299
|
finishReason,
|
|
3300
|
+
rawFinishReason,
|
|
3070
3301
|
usage,
|
|
3071
3302
|
warnings,
|
|
3072
3303
|
request,
|
|
@@ -3075,6 +3306,7 @@ var DefaultStepResult = class {
|
|
|
3075
3306
|
}) {
|
|
3076
3307
|
this.content = content;
|
|
3077
3308
|
this.finishReason = finishReason;
|
|
3309
|
+
this.rawFinishReason = rawFinishReason;
|
|
3078
3310
|
this.usage = usage;
|
|
3079
3311
|
this.warnings = warnings;
|
|
3080
3312
|
this.request = request;
|
|
@@ -3130,8 +3362,8 @@ function stepCountIs(stepCount) {
|
|
|
3130
3362
|
}
|
|
3131
3363
|
function hasToolCall(toolName) {
|
|
3132
3364
|
return ({ steps }) => {
|
|
3133
|
-
var
|
|
3134
|
-
return (_c = (_b = (
|
|
3365
|
+
var _a14, _b, _c;
|
|
3366
|
+
return (_c = (_b = (_a14 = steps[steps.length - 1]) == null ? void 0 : _a14.toolCalls) == null ? void 0 : _b.some(
|
|
3135
3367
|
(toolCall) => toolCall.toolName === toolName
|
|
3136
3368
|
)) != null ? _c : false;
|
|
3137
3369
|
};
|
|
@@ -3144,92 +3376,118 @@ async function isStopConditionMet({
|
|
|
3144
3376
|
}
|
|
3145
3377
|
|
|
3146
3378
|
// src/generate-text/to-response-messages.ts
|
|
3147
|
-
function toResponseMessages({
|
|
3379
|
+
async function toResponseMessages({
|
|
3148
3380
|
content: inputContent,
|
|
3149
3381
|
tools
|
|
3150
3382
|
}) {
|
|
3151
3383
|
const responseMessages = [];
|
|
3152
|
-
const content =
|
|
3153
|
-
|
|
3154
|
-
|
|
3384
|
+
const content = [];
|
|
3385
|
+
for (const part of inputContent) {
|
|
3386
|
+
if (part.type === "source" || (part.type === "tool-result" || part.type === "tool-error") && !part.providerExecuted || part.type === "text" && part.text.length === 0) {
|
|
3387
|
+
continue;
|
|
3388
|
+
}
|
|
3155
3389
|
switch (part.type) {
|
|
3156
3390
|
case "text":
|
|
3157
|
-
|
|
3391
|
+
content.push({
|
|
3158
3392
|
type: "text",
|
|
3159
3393
|
text: part.text,
|
|
3160
3394
|
providerOptions: part.providerMetadata
|
|
3161
|
-
};
|
|
3395
|
+
});
|
|
3396
|
+
break;
|
|
3162
3397
|
case "reasoning":
|
|
3163
|
-
|
|
3398
|
+
content.push({
|
|
3164
3399
|
type: "reasoning",
|
|
3165
3400
|
text: part.text,
|
|
3166
3401
|
providerOptions: part.providerMetadata
|
|
3167
|
-
};
|
|
3402
|
+
});
|
|
3403
|
+
break;
|
|
3168
3404
|
case "file":
|
|
3169
|
-
|
|
3405
|
+
content.push({
|
|
3170
3406
|
type: "file",
|
|
3171
3407
|
data: part.file.base64,
|
|
3172
3408
|
mediaType: part.file.mediaType,
|
|
3173
3409
|
providerOptions: part.providerMetadata
|
|
3174
|
-
};
|
|
3410
|
+
});
|
|
3411
|
+
break;
|
|
3175
3412
|
case "tool-call":
|
|
3176
|
-
|
|
3413
|
+
content.push({
|
|
3177
3414
|
type: "tool-call",
|
|
3178
3415
|
toolCallId: part.toolCallId,
|
|
3179
3416
|
toolName: part.toolName,
|
|
3180
3417
|
input: part.input,
|
|
3181
3418
|
providerExecuted: part.providerExecuted,
|
|
3182
3419
|
providerOptions: part.providerMetadata
|
|
3183
|
-
};
|
|
3184
|
-
|
|
3185
|
-
|
|
3420
|
+
});
|
|
3421
|
+
break;
|
|
3422
|
+
case "tool-result": {
|
|
3423
|
+
const output = await createToolModelOutput({
|
|
3424
|
+
toolCallId: part.toolCallId,
|
|
3425
|
+
input: part.input,
|
|
3426
|
+
tool: tools == null ? void 0 : tools[part.toolName],
|
|
3427
|
+
output: part.output,
|
|
3428
|
+
errorMode: "none"
|
|
3429
|
+
});
|
|
3430
|
+
content.push({
|
|
3186
3431
|
type: "tool-result",
|
|
3187
3432
|
toolCallId: part.toolCallId,
|
|
3188
3433
|
toolName: part.toolName,
|
|
3189
|
-
output
|
|
3190
|
-
tool: tools == null ? void 0 : tools[part.toolName],
|
|
3191
|
-
output: part.output,
|
|
3192
|
-
errorMode: "none"
|
|
3193
|
-
}),
|
|
3194
|
-
providerExecuted: true,
|
|
3434
|
+
output,
|
|
3195
3435
|
providerOptions: part.providerMetadata
|
|
3196
|
-
};
|
|
3197
|
-
|
|
3198
|
-
|
|
3436
|
+
});
|
|
3437
|
+
break;
|
|
3438
|
+
}
|
|
3439
|
+
case "tool-error": {
|
|
3440
|
+
const output = await createToolModelOutput({
|
|
3441
|
+
toolCallId: part.toolCallId,
|
|
3442
|
+
input: part.input,
|
|
3443
|
+
tool: tools == null ? void 0 : tools[part.toolName],
|
|
3444
|
+
output: part.error,
|
|
3445
|
+
errorMode: "json"
|
|
3446
|
+
});
|
|
3447
|
+
content.push({
|
|
3199
3448
|
type: "tool-result",
|
|
3200
3449
|
toolCallId: part.toolCallId,
|
|
3201
3450
|
toolName: part.toolName,
|
|
3202
|
-
output
|
|
3203
|
-
tool: tools == null ? void 0 : tools[part.toolName],
|
|
3204
|
-
output: part.error,
|
|
3205
|
-
errorMode: "json"
|
|
3206
|
-
}),
|
|
3451
|
+
output,
|
|
3207
3452
|
providerOptions: part.providerMetadata
|
|
3208
|
-
};
|
|
3453
|
+
});
|
|
3454
|
+
break;
|
|
3455
|
+
}
|
|
3209
3456
|
case "tool-approval-request":
|
|
3210
|
-
|
|
3457
|
+
content.push({
|
|
3211
3458
|
type: "tool-approval-request",
|
|
3212
3459
|
approvalId: part.approvalId,
|
|
3213
3460
|
toolCallId: part.toolCall.toolCallId
|
|
3214
|
-
};
|
|
3461
|
+
});
|
|
3462
|
+
break;
|
|
3215
3463
|
}
|
|
3216
|
-
}
|
|
3464
|
+
}
|
|
3217
3465
|
if (content.length > 0) {
|
|
3218
3466
|
responseMessages.push({
|
|
3219
3467
|
role: "assistant",
|
|
3220
3468
|
content
|
|
3221
3469
|
});
|
|
3222
3470
|
}
|
|
3223
|
-
const toolResultContent =
|
|
3224
|
-
|
|
3225
|
-
|
|
3226
|
-
|
|
3227
|
-
|
|
3228
|
-
|
|
3229
|
-
|
|
3230
|
-
|
|
3231
|
-
|
|
3232
|
-
|
|
3471
|
+
const toolResultContent = [];
|
|
3472
|
+
for (const part of inputContent) {
|
|
3473
|
+
if (!(part.type === "tool-result" || part.type === "tool-error") || part.providerExecuted) {
|
|
3474
|
+
continue;
|
|
3475
|
+
}
|
|
3476
|
+
const output = await createToolModelOutput({
|
|
3477
|
+
toolCallId: part.toolCallId,
|
|
3478
|
+
input: part.input,
|
|
3479
|
+
tool: tools == null ? void 0 : tools[part.toolName],
|
|
3480
|
+
output: part.type === "tool-result" ? part.output : part.error,
|
|
3481
|
+
errorMode: part.type === "tool-error" ? "text" : "none"
|
|
3482
|
+
});
|
|
3483
|
+
toolResultContent.push({
|
|
3484
|
+
type: "tool-result",
|
|
3485
|
+
toolCallId: part.toolCallId,
|
|
3486
|
+
toolName: part.toolName,
|
|
3487
|
+
output,
|
|
3488
|
+
...part.providerMetadata != null ? { providerOptions: part.providerMetadata } : {}
|
|
3489
|
+
});
|
|
3490
|
+
}
|
|
3233
3491
|
if (toolResultContent.length > 0) {
|
|
3234
3492
|
responseMessages.push({
|
|
3235
3493
|
role: "tool",
|
|
@@ -3240,7 +3498,7 @@ function toResponseMessages({
|
|
|
3240
3498
|
}
|
|
3241
3499
|
|
|
3242
3500
|
// src/generate-text/generate-text.ts
|
|
3243
|
-
var originalGenerateId = (0,
|
|
3501
|
+
var originalGenerateId = (0, import_provider_utils15.createIdGenerator)({
|
|
3244
3502
|
prefix: "aitxt",
|
|
3245
3503
|
size: 24
|
|
3246
3504
|
});
|
|
@@ -3281,7 +3539,7 @@ async function generateText({
|
|
|
3281
3539
|
abortSignal
|
|
3282
3540
|
});
|
|
3283
3541
|
const callSettings = prepareCallSettings(settings);
|
|
3284
|
-
const headersWithUserAgent = (0,
|
|
3542
|
+
const headersWithUserAgent = (0, import_provider_utils15.withUserAgentSuffix)(
|
|
3285
3543
|
headers != null ? headers : {},
|
|
3286
3544
|
`ai/${VERSION}`
|
|
3287
3545
|
);
|
|
@@ -3319,7 +3577,7 @@ async function generateText({
|
|
|
3319
3577
|
}),
|
|
3320
3578
|
tracer,
|
|
3321
3579
|
fn: async (span) => {
|
|
3322
|
-
var
|
|
3580
|
+
var _a14, _b, _c, _d, _e, _f, _g, _h;
|
|
3323
3581
|
const initialMessages = initialPrompt.messages;
|
|
3324
3582
|
const responseMessages = [];
|
|
3325
3583
|
const { approvedToolApprovals, deniedToolApprovals } = collectToolApprovals({ messages: initialMessages });
|
|
@@ -3335,31 +3593,36 @@ async function generateText({
|
|
|
3335
3593
|
abortSignal,
|
|
3336
3594
|
experimental_context
|
|
3337
3595
|
});
|
|
3596
|
+
const toolContent = [];
|
|
3597
|
+
for (const output2 of toolOutputs) {
|
|
3598
|
+
const modelOutput = await createToolModelOutput({
|
|
3599
|
+
toolCallId: output2.toolCallId,
|
|
3600
|
+
input: output2.input,
|
|
3601
|
+
tool: tools == null ? void 0 : tools[output2.toolName],
|
|
3602
|
+
output: output2.type === "tool-result" ? output2.output : output2.error,
|
|
3603
|
+
errorMode: output2.type === "tool-error" ? "json" : "none"
|
|
3604
|
+
});
|
|
3605
|
+
toolContent.push({
|
|
3606
|
+
type: "tool-result",
|
|
3607
|
+
toolCallId: output2.toolCallId,
|
|
3608
|
+
toolName: output2.toolName,
|
|
3609
|
+
output: modelOutput
|
|
3610
|
+
});
|
|
3611
|
+
}
|
|
3612
|
+
for (const toolApproval of deniedToolApprovals) {
|
|
3613
|
+
toolContent.push({
|
|
3614
|
+
type: "tool-result",
|
|
3615
|
+
toolCallId: toolApproval.toolCall.toolCallId,
|
|
3616
|
+
toolName: toolApproval.toolCall.toolName,
|
|
3617
|
+
output: {
|
|
3618
|
+
type: "execution-denied",
|
|
3619
|
+
reason: toolApproval.approvalResponse.reason
|
|
3620
|
+
}
|
|
3621
|
+
});
|
|
3622
|
+
}
|
|
3338
3623
|
responseMessages.push({
|
|
3339
3624
|
role: "tool",
|
|
3340
|
-
content:
|
|
3341
|
-
// add regular tool results for approved tool calls:
|
|
3342
|
-
...toolOutputs.map((output2) => ({
|
|
3343
|
-
type: "tool-result",
|
|
3344
|
-
toolCallId: output2.toolCallId,
|
|
3345
|
-
toolName: output2.toolName,
|
|
3346
|
-
output: createToolModelOutput({
|
|
3347
|
-
tool: tools == null ? void 0 : tools[output2.toolName],
|
|
3348
|
-
output: output2.type === "tool-result" ? output2.output : output2.error,
|
|
3349
|
-
errorMode: output2.type === "tool-error" ? "json" : "none"
|
|
3350
|
-
})
|
|
3351
|
-
})),
|
|
3352
|
-
// add execution denied tool results for denied tool approvals:
|
|
3353
|
-
...deniedToolApprovals.map((toolApproval) => ({
|
|
3354
|
-
type: "tool-result",
|
|
3355
|
-
toolCallId: toolApproval.toolCall.toolCallId,
|
|
3356
|
-
toolName: toolApproval.toolCall.toolName,
|
|
3357
|
-
output: {
|
|
3358
|
-
type: "execution-denied",
|
|
3359
|
-
reason: toolApproval.approvalResponse.reason
|
|
3360
|
-
}
|
|
3361
|
-
}))
|
|
3362
|
-
]
|
|
3625
|
+
content: toolContent
|
|
3363
3626
|
});
|
|
3364
3627
|
}
|
|
3365
3628
|
const callSettings2 = prepareCallSettings(settings);
|
|
@@ -3367,16 +3630,18 @@ async function generateText({
|
|
|
3367
3630
|
let clientToolCalls = [];
|
|
3368
3631
|
let clientToolOutputs = [];
|
|
3369
3632
|
const steps = [];
|
|
3633
|
+
const pendingDeferredToolCalls = /* @__PURE__ */ new Map();
|
|
3370
3634
|
do {
|
|
3371
3635
|
const stepInputMessages = [...initialMessages, ...responseMessages];
|
|
3372
3636
|
const prepareStepResult = await (prepareStep == null ? void 0 : prepareStep({
|
|
3373
3637
|
model,
|
|
3374
3638
|
steps,
|
|
3375
3639
|
stepNumber: steps.length,
|
|
3376
|
-
messages: stepInputMessages
|
|
3640
|
+
messages: stepInputMessages,
|
|
3641
|
+
experimental_context
|
|
3377
3642
|
}));
|
|
3378
3643
|
const stepModel = resolveLanguageModel(
|
|
3379
|
-
(
|
|
3644
|
+
(_a14 = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _a14 : model
|
|
3380
3645
|
);
|
|
3381
3646
|
const promptMessages = await convertToLanguageModelPrompt({
|
|
3382
3647
|
prompt: {
|
|
@@ -3386,14 +3651,15 @@ async function generateText({
|
|
|
3386
3651
|
supportedUrls: await stepModel.supportedUrls,
|
|
3387
3652
|
download: download2
|
|
3388
3653
|
});
|
|
3654
|
+
experimental_context = (_d = prepareStepResult == null ? void 0 : prepareStepResult.experimental_context) != null ? _d : experimental_context;
|
|
3389
3655
|
const { toolChoice: stepToolChoice, tools: stepTools } = await prepareToolsAndToolChoice({
|
|
3390
3656
|
tools,
|
|
3391
|
-
toolChoice: (
|
|
3392
|
-
activeTools: (
|
|
3657
|
+
toolChoice: (_e = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _e : toolChoice,
|
|
3658
|
+
activeTools: (_f = prepareStepResult == null ? void 0 : prepareStepResult.activeTools) != null ? _f : activeTools
|
|
3393
3659
|
});
|
|
3394
3660
|
currentModelResponse = await retry(
|
|
3395
3661
|
() => {
|
|
3396
|
-
var
|
|
3662
|
+
var _a15;
|
|
3397
3663
|
return recordSpan({
|
|
3398
3664
|
name: "ai.generateText.doGenerate",
|
|
3399
3665
|
attributes: selectTelemetryAttributes({
|
|
@@ -3425,36 +3691,40 @@ async function generateText({
|
|
|
3425
3691
|
"gen_ai.request.max_tokens": settings.maxOutputTokens,
|
|
3426
3692
|
"gen_ai.request.presence_penalty": settings.presencePenalty,
|
|
3427
3693
|
"gen_ai.request.stop_sequences": settings.stopSequences,
|
|
3428
|
-
"gen_ai.request.temperature": (
|
|
3694
|
+
"gen_ai.request.temperature": (_a15 = settings.temperature) != null ? _a15 : void 0,
|
|
3429
3695
|
"gen_ai.request.top_k": settings.topK,
|
|
3430
3696
|
"gen_ai.request.top_p": settings.topP
|
|
3431
3697
|
}
|
|
3432
3698
|
}),
|
|
3433
3699
|
tracer,
|
|
3434
3700
|
fn: async (span2) => {
|
|
3435
|
-
var
|
|
3701
|
+
var _a16, _b2, _c2, _d2, _e2, _f2, _g2, _h2;
|
|
3702
|
+
const stepProviderOptions = mergeObjects(
|
|
3703
|
+
providerOptions,
|
|
3704
|
+
prepareStepResult == null ? void 0 : prepareStepResult.providerOptions
|
|
3705
|
+
);
|
|
3436
3706
|
const result = await stepModel.doGenerate({
|
|
3437
3707
|
...callSettings2,
|
|
3438
3708
|
tools: stepTools,
|
|
3439
3709
|
toolChoice: stepToolChoice,
|
|
3440
3710
|
responseFormat: await (output == null ? void 0 : output.responseFormat),
|
|
3441
3711
|
prompt: promptMessages,
|
|
3442
|
-
providerOptions,
|
|
3712
|
+
providerOptions: stepProviderOptions,
|
|
3443
3713
|
abortSignal,
|
|
3444
3714
|
headers: headersWithUserAgent
|
|
3445
3715
|
});
|
|
3446
3716
|
const responseData = {
|
|
3447
|
-
id: (_b2 = (
|
|
3717
|
+
id: (_b2 = (_a16 = result.response) == null ? void 0 : _a16.id) != null ? _b2 : generateId2(),
|
|
3448
3718
|
timestamp: (_d2 = (_c2 = result.response) == null ? void 0 : _c2.timestamp) != null ? _d2 : currentDate(),
|
|
3449
3719
|
modelId: (_f2 = (_e2 = result.response) == null ? void 0 : _e2.modelId) != null ? _f2 : stepModel.modelId,
|
|
3450
3720
|
headers: (_g2 = result.response) == null ? void 0 : _g2.headers,
|
|
3451
|
-
body: (
|
|
3721
|
+
body: (_h2 = result.response) == null ? void 0 : _h2.body
|
|
3452
3722
|
};
|
|
3453
3723
|
span2.setAttributes(
|
|
3454
3724
|
await selectTelemetryAttributes({
|
|
3455
3725
|
telemetry,
|
|
3456
3726
|
attributes: {
|
|
3457
|
-
"ai.response.finishReason": result.finishReason,
|
|
3727
|
+
"ai.response.finishReason": result.finishReason.unified,
|
|
3458
3728
|
"ai.response.text": {
|
|
3459
3729
|
output: () => extractTextContent(result.content)
|
|
3460
3730
|
},
|
|
@@ -3471,14 +3741,16 @@ async function generateText({
|
|
|
3471
3741
|
result.providerMetadata
|
|
3472
3742
|
),
|
|
3473
3743
|
// TODO rename telemetry attributes to inputTokens and outputTokens
|
|
3474
|
-
"ai.usage.promptTokens": result.usage.inputTokens,
|
|
3475
|
-
"ai.usage.completionTokens": result.usage.outputTokens,
|
|
3744
|
+
"ai.usage.promptTokens": result.usage.inputTokens.total,
|
|
3745
|
+
"ai.usage.completionTokens": result.usage.outputTokens.total,
|
|
3476
3746
|
// standardized gen-ai llm span attributes:
|
|
3477
|
-
"gen_ai.response.finish_reasons": [
|
|
3747
|
+
"gen_ai.response.finish_reasons": [
|
|
3748
|
+
result.finishReason.unified
|
|
3749
|
+
],
|
|
3478
3750
|
"gen_ai.response.id": responseData.id,
|
|
3479
3751
|
"gen_ai.response.model": responseData.modelId,
|
|
3480
|
-
"gen_ai.usage.input_tokens": result.usage.inputTokens,
|
|
3481
|
-
"gen_ai.usage.output_tokens": result.usage.outputTokens
|
|
3752
|
+
"gen_ai.usage.input_tokens": result.usage.inputTokens.total,
|
|
3753
|
+
"gen_ai.usage.output_tokens": result.usage.outputTokens.total
|
|
3482
3754
|
}
|
|
3483
3755
|
})
|
|
3484
3756
|
);
|
|
@@ -3541,7 +3813,7 @@ async function generateText({
|
|
|
3541
3813
|
toolCallId: toolCall.toolCallId,
|
|
3542
3814
|
toolName: toolCall.toolName,
|
|
3543
3815
|
input: toolCall.input,
|
|
3544
|
-
error: (0,
|
|
3816
|
+
error: (0, import_provider_utils15.getErrorMessage)(toolCall.error),
|
|
3545
3817
|
dynamic: true
|
|
3546
3818
|
});
|
|
3547
3819
|
}
|
|
@@ -3563,25 +3835,47 @@ async function generateText({
|
|
|
3563
3835
|
})
|
|
3564
3836
|
);
|
|
3565
3837
|
}
|
|
3838
|
+
for (const toolCall of stepToolCalls) {
|
|
3839
|
+
if (!toolCall.providerExecuted)
|
|
3840
|
+
continue;
|
|
3841
|
+
const tool2 = tools == null ? void 0 : tools[toolCall.toolName];
|
|
3842
|
+
if ((tool2 == null ? void 0 : tool2.type) === "provider" && tool2.supportsDeferredResults) {
|
|
3843
|
+
const hasResultInResponse = currentModelResponse.content.some(
|
|
3844
|
+
(part) => part.type === "tool-result" && part.toolCallId === toolCall.toolCallId
|
|
3845
|
+
);
|
|
3846
|
+
if (!hasResultInResponse) {
|
|
3847
|
+
pendingDeferredToolCalls.set(toolCall.toolCallId, {
|
|
3848
|
+
toolName: toolCall.toolName
|
|
3849
|
+
});
|
|
3850
|
+
}
|
|
3851
|
+
}
|
|
3852
|
+
}
|
|
3853
|
+
for (const part of currentModelResponse.content) {
|
|
3854
|
+
if (part.type === "tool-result") {
|
|
3855
|
+
pendingDeferredToolCalls.delete(part.toolCallId);
|
|
3856
|
+
}
|
|
3857
|
+
}
|
|
3566
3858
|
const stepContent = asContent({
|
|
3567
3859
|
content: currentModelResponse.content,
|
|
3568
3860
|
toolCalls: stepToolCalls,
|
|
3569
3861
|
toolOutputs: clientToolOutputs,
|
|
3570
|
-
toolApprovalRequests: Object.values(toolApprovalRequests)
|
|
3862
|
+
toolApprovalRequests: Object.values(toolApprovalRequests),
|
|
3863
|
+
tools
|
|
3571
3864
|
});
|
|
3572
3865
|
responseMessages.push(
|
|
3573
|
-
...toResponseMessages({
|
|
3866
|
+
...await toResponseMessages({
|
|
3574
3867
|
content: stepContent,
|
|
3575
3868
|
tools
|
|
3576
3869
|
})
|
|
3577
3870
|
);
|
|
3578
3871
|
const currentStepResult = new DefaultStepResult({
|
|
3579
3872
|
content: stepContent,
|
|
3580
|
-
finishReason: currentModelResponse.finishReason,
|
|
3581
|
-
|
|
3873
|
+
finishReason: currentModelResponse.finishReason.unified,
|
|
3874
|
+
rawFinishReason: currentModelResponse.finishReason.raw,
|
|
3875
|
+
usage: asLanguageModelUsage(currentModelResponse.usage),
|
|
3582
3876
|
warnings: currentModelResponse.warnings,
|
|
3583
3877
|
providerMetadata: currentModelResponse.providerMetadata,
|
|
3584
|
-
request: (
|
|
3878
|
+
request: (_g = currentModelResponse.request) != null ? _g : {},
|
|
3585
3879
|
response: {
|
|
3586
3880
|
...currentModelResponse.response,
|
|
3587
3881
|
// deep clone msgs to avoid mutating past messages in multi-step:
|
|
@@ -3589,23 +3883,24 @@ async function generateText({
|
|
|
3589
3883
|
}
|
|
3590
3884
|
});
|
|
3591
3885
|
logWarnings({
|
|
3592
|
-
warnings: (
|
|
3886
|
+
warnings: (_h = currentModelResponse.warnings) != null ? _h : [],
|
|
3593
3887
|
provider: stepModel.provider,
|
|
3594
3888
|
model: stepModel.modelId
|
|
3595
3889
|
});
|
|
3596
3890
|
steps.push(currentStepResult);
|
|
3597
3891
|
await (onStepFinish == null ? void 0 : onStepFinish(currentStepResult));
|
|
3598
3892
|
} while (
|
|
3599
|
-
//
|
|
3600
|
-
|
|
3601
|
-
|
|
3893
|
+
// Continue if:
|
|
3894
|
+
// 1. There are client tool calls that have all been executed, OR
|
|
3895
|
+
// 2. There are pending deferred results from provider-executed tools
|
|
3896
|
+
(clientToolCalls.length > 0 && clientToolOutputs.length === clientToolCalls.length || pendingDeferredToolCalls.size > 0) && // continue until a stop condition is met:
|
|
3602
3897
|
!await isStopConditionMet({ stopConditions, steps })
|
|
3603
3898
|
);
|
|
3604
3899
|
span.setAttributes(
|
|
3605
3900
|
await selectTelemetryAttributes({
|
|
3606
3901
|
telemetry,
|
|
3607
3902
|
attributes: {
|
|
3608
|
-
"ai.response.finishReason": currentModelResponse.finishReason,
|
|
3903
|
+
"ai.response.finishReason": currentModelResponse.finishReason.unified,
|
|
3609
3904
|
"ai.response.text": {
|
|
3610
3905
|
output: () => extractTextContent(currentModelResponse.content)
|
|
3611
3906
|
},
|
|
@@ -3619,8 +3914,8 @@ async function generateText({
|
|
|
3619
3914
|
currentModelResponse.providerMetadata
|
|
3620
3915
|
),
|
|
3621
3916
|
// TODO rename telemetry attributes to inputTokens and outputTokens
|
|
3622
|
-
"ai.usage.promptTokens": currentModelResponse.usage.inputTokens,
|
|
3623
|
-
"ai.usage.completionTokens": currentModelResponse.usage.outputTokens
|
|
3917
|
+
"ai.usage.promptTokens": currentModelResponse.usage.inputTokens.total,
|
|
3918
|
+
"ai.usage.completionTokens": currentModelResponse.usage.outputTokens.total
|
|
3624
3919
|
}
|
|
3625
3920
|
})
|
|
3626
3921
|
);
|
|
@@ -3639,6 +3934,7 @@ async function generateText({
|
|
|
3639
3934
|
);
|
|
3640
3935
|
await (onFinish == null ? void 0 : onFinish({
|
|
3641
3936
|
finishReason: lastStep.finishReason,
|
|
3937
|
+
rawFinishReason: lastStep.rawFinishReason,
|
|
3642
3938
|
usage: lastStep.usage,
|
|
3643
3939
|
content: lastStep.content,
|
|
3644
3940
|
text: lastStep.text,
|
|
@@ -3657,7 +3953,8 @@ async function generateText({
|
|
|
3657
3953
|
warnings: lastStep.warnings,
|
|
3658
3954
|
providerMetadata: lastStep.providerMetadata,
|
|
3659
3955
|
steps,
|
|
3660
|
-
totalUsage
|
|
3956
|
+
totalUsage,
|
|
3957
|
+
experimental_context
|
|
3661
3958
|
}));
|
|
3662
3959
|
let resolvedOutput;
|
|
3663
3960
|
if (lastStep.finishReason === "stop") {
|
|
@@ -3756,6 +4053,9 @@ var DefaultGenerateTextResult = class {
|
|
|
3756
4053
|
get finishReason() {
|
|
3757
4054
|
return this.finalStep.finishReason;
|
|
3758
4055
|
}
|
|
4056
|
+
get rawFinishReason() {
|
|
4057
|
+
return this.finalStep.rawFinishReason;
|
|
4058
|
+
}
|
|
3759
4059
|
get warnings() {
|
|
3760
4060
|
return this.finalStep.warnings;
|
|
3761
4061
|
}
|
|
@@ -3798,45 +4098,76 @@ function asContent({
|
|
|
3798
4098
|
content,
|
|
3799
4099
|
toolCalls,
|
|
3800
4100
|
toolOutputs,
|
|
3801
|
-
toolApprovalRequests
|
|
4101
|
+
toolApprovalRequests,
|
|
4102
|
+
tools
|
|
3802
4103
|
}) {
|
|
3803
|
-
|
|
3804
|
-
|
|
3805
|
-
|
|
3806
|
-
|
|
3807
|
-
|
|
3808
|
-
|
|
3809
|
-
|
|
3810
|
-
|
|
3811
|
-
|
|
3812
|
-
|
|
3813
|
-
|
|
3814
|
-
|
|
3815
|
-
|
|
3816
|
-
|
|
3817
|
-
|
|
3818
|
-
|
|
3819
|
-
|
|
3820
|
-
|
|
3821
|
-
|
|
3822
|
-
|
|
3823
|
-
|
|
3824
|
-
|
|
3825
|
-
|
|
4104
|
+
const contentParts = [];
|
|
4105
|
+
for (const part of content) {
|
|
4106
|
+
switch (part.type) {
|
|
4107
|
+
case "text":
|
|
4108
|
+
case "reasoning":
|
|
4109
|
+
case "source":
|
|
4110
|
+
contentParts.push(part);
|
|
4111
|
+
break;
|
|
4112
|
+
case "file": {
|
|
4113
|
+
contentParts.push({
|
|
4114
|
+
type: "file",
|
|
4115
|
+
file: new DefaultGeneratedFile(part),
|
|
4116
|
+
...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}
|
|
4117
|
+
});
|
|
4118
|
+
break;
|
|
4119
|
+
}
|
|
4120
|
+
case "tool-call": {
|
|
4121
|
+
contentParts.push(
|
|
4122
|
+
toolCalls.find((toolCall) => toolCall.toolCallId === part.toolCallId)
|
|
4123
|
+
);
|
|
4124
|
+
break;
|
|
4125
|
+
}
|
|
4126
|
+
case "tool-result": {
|
|
4127
|
+
const toolCall = toolCalls.find(
|
|
4128
|
+
(toolCall2) => toolCall2.toolCallId === part.toolCallId
|
|
4129
|
+
);
|
|
4130
|
+
if (toolCall == null) {
|
|
4131
|
+
const tool2 = tools == null ? void 0 : tools[part.toolName];
|
|
4132
|
+
const supportsDeferredResults = (tool2 == null ? void 0 : tool2.type) === "provider" && tool2.supportsDeferredResults;
|
|
4133
|
+
if (!supportsDeferredResults) {
|
|
3826
4134
|
throw new Error(`Tool call ${part.toolCallId} not found.`);
|
|
3827
4135
|
}
|
|
3828
4136
|
if (part.isError) {
|
|
3829
|
-
|
|
4137
|
+
contentParts.push({
|
|
3830
4138
|
type: "tool-error",
|
|
3831
4139
|
toolCallId: part.toolCallId,
|
|
3832
4140
|
toolName: part.toolName,
|
|
3833
|
-
input:
|
|
4141
|
+
input: void 0,
|
|
3834
4142
|
error: part.result,
|
|
3835
4143
|
providerExecuted: true,
|
|
3836
|
-
dynamic:
|
|
3837
|
-
};
|
|
4144
|
+
dynamic: part.dynamic
|
|
4145
|
+
});
|
|
4146
|
+
} else {
|
|
4147
|
+
contentParts.push({
|
|
4148
|
+
type: "tool-result",
|
|
4149
|
+
toolCallId: part.toolCallId,
|
|
4150
|
+
toolName: part.toolName,
|
|
4151
|
+
input: void 0,
|
|
4152
|
+
output: part.result,
|
|
4153
|
+
providerExecuted: true,
|
|
4154
|
+
dynamic: part.dynamic
|
|
4155
|
+
});
|
|
3838
4156
|
}
|
|
3839
|
-
|
|
4157
|
+
break;
|
|
4158
|
+
}
|
|
4159
|
+
if (part.isError) {
|
|
4160
|
+
contentParts.push({
|
|
4161
|
+
type: "tool-error",
|
|
4162
|
+
toolCallId: part.toolCallId,
|
|
4163
|
+
toolName: part.toolName,
|
|
4164
|
+
input: toolCall.input,
|
|
4165
|
+
error: part.result,
|
|
4166
|
+
providerExecuted: true,
|
|
4167
|
+
dynamic: toolCall.dynamic
|
|
4168
|
+
});
|
|
4169
|
+
} else {
|
|
4170
|
+
contentParts.push({
|
|
3840
4171
|
type: "tool-result",
|
|
3841
4172
|
toolCallId: part.toolCallId,
|
|
3842
4173
|
toolName: part.toolName,
|
|
@@ -3844,18 +4175,21 @@ function asContent({
|
|
|
3844
4175
|
output: part.result,
|
|
3845
4176
|
providerExecuted: true,
|
|
3846
4177
|
dynamic: toolCall.dynamic
|
|
3847
|
-
};
|
|
4178
|
+
});
|
|
3848
4179
|
}
|
|
4180
|
+
break;
|
|
3849
4181
|
}
|
|
3850
|
-
|
|
3851
|
-
|
|
3852
|
-
|
|
3853
|
-
|
|
4182
|
+
case "tool-approval-request": {
|
|
4183
|
+
break;
|
|
4184
|
+
}
|
|
4185
|
+
}
|
|
4186
|
+
}
|
|
4187
|
+
return [...contentParts, ...toolOutputs, ...toolApprovalRequests];
|
|
3854
4188
|
}
|
|
3855
4189
|
|
|
3856
4190
|
// src/generate-text/stream-text.ts
|
|
3857
|
-
var
|
|
3858
|
-
var
|
|
4191
|
+
var import_provider22 = require("@ai-sdk/provider");
|
|
4192
|
+
var import_provider_utils19 = require("@ai-sdk/provider-utils");
|
|
3859
4193
|
|
|
3860
4194
|
// src/util/prepare-headers.ts
|
|
3861
4195
|
function prepareHeaders(headers, defaultHeaders) {
|
|
@@ -3892,7 +4226,12 @@ function writeToServerResponse({
|
|
|
3892
4226
|
headers,
|
|
3893
4227
|
stream
|
|
3894
4228
|
}) {
|
|
3895
|
-
|
|
4229
|
+
const statusCode = status != null ? status : 200;
|
|
4230
|
+
if (statusText !== void 0) {
|
|
4231
|
+
response.writeHead(statusCode, statusText, headers);
|
|
4232
|
+
} else {
|
|
4233
|
+
response.writeHead(statusCode, headers);
|
|
4234
|
+
}
|
|
3896
4235
|
const reader = stream.getReader();
|
|
3897
4236
|
const read = async () => {
|
|
3898
4237
|
try {
|
|
@@ -3997,13 +4336,13 @@ function getResponseUIMessageId({
|
|
|
3997
4336
|
}
|
|
3998
4337
|
|
|
3999
4338
|
// src/ui/process-ui-message-stream.ts
|
|
4000
|
-
var
|
|
4339
|
+
var import_provider_utils17 = require("@ai-sdk/provider-utils");
|
|
4001
4340
|
|
|
4002
4341
|
// src/ui-message-stream/ui-message-chunks.ts
|
|
4003
4342
|
var import_v47 = require("zod/v4");
|
|
4004
|
-
var
|
|
4005
|
-
var uiMessageChunkSchema = (0,
|
|
4006
|
-
() => (0,
|
|
4343
|
+
var import_provider_utils16 = require("@ai-sdk/provider-utils");
|
|
4344
|
+
var uiMessageChunkSchema = (0, import_provider_utils16.lazySchema)(
|
|
4345
|
+
() => (0, import_provider_utils16.zodSchema)(
|
|
4007
4346
|
import_v47.z.union([
|
|
4008
4347
|
import_v47.z.strictObject({
|
|
4009
4348
|
type: import_v47.z.literal("text-start"),
|
|
@@ -4148,8 +4487,7 @@ var uiMessageChunkSchema = (0, import_provider_utils14.lazySchema)(
|
|
|
4148
4487
|
"content-filter",
|
|
4149
4488
|
"tool-calls",
|
|
4150
4489
|
"error",
|
|
4151
|
-
"other"
|
|
4152
|
-
"unknown"
|
|
4490
|
+
"other"
|
|
4153
4491
|
]).optional(),
|
|
4154
4492
|
messageMetadata: import_v47.z.unknown().optional()
|
|
4155
4493
|
}),
|
|
@@ -4167,39 +4505,6 @@ function isDataUIMessageChunk(chunk) {
|
|
|
4167
4505
|
return chunk.type.startsWith("data-");
|
|
4168
4506
|
}
|
|
4169
4507
|
|
|
4170
|
-
// src/util/merge-objects.ts
|
|
4171
|
-
function mergeObjects(base, overrides) {
|
|
4172
|
-
if (base === void 0 && overrides === void 0) {
|
|
4173
|
-
return void 0;
|
|
4174
|
-
}
|
|
4175
|
-
if (base === void 0) {
|
|
4176
|
-
return overrides;
|
|
4177
|
-
}
|
|
4178
|
-
if (overrides === void 0) {
|
|
4179
|
-
return base;
|
|
4180
|
-
}
|
|
4181
|
-
const result = { ...base };
|
|
4182
|
-
for (const key in overrides) {
|
|
4183
|
-
if (Object.prototype.hasOwnProperty.call(overrides, key)) {
|
|
4184
|
-
const overridesValue = overrides[key];
|
|
4185
|
-
if (overridesValue === void 0)
|
|
4186
|
-
continue;
|
|
4187
|
-
const baseValue = key in base ? base[key] : void 0;
|
|
4188
|
-
const isSourceObject = overridesValue !== null && typeof overridesValue === "object" && !Array.isArray(overridesValue) && !(overridesValue instanceof Date) && !(overridesValue instanceof RegExp);
|
|
4189
|
-
const isTargetObject = baseValue !== null && baseValue !== void 0 && typeof baseValue === "object" && !Array.isArray(baseValue) && !(baseValue instanceof Date) && !(baseValue instanceof RegExp);
|
|
4190
|
-
if (isSourceObject && isTargetObject) {
|
|
4191
|
-
result[key] = mergeObjects(
|
|
4192
|
-
baseValue,
|
|
4193
|
-
overridesValue
|
|
4194
|
-
);
|
|
4195
|
-
} else {
|
|
4196
|
-
result[key] = overridesValue;
|
|
4197
|
-
}
|
|
4198
|
-
}
|
|
4199
|
-
}
|
|
4200
|
-
return result;
|
|
4201
|
-
}
|
|
4202
|
-
|
|
4203
4508
|
// src/ui/ui-messages.ts
|
|
4204
4509
|
function isDataUIPart(part) {
|
|
4205
4510
|
return part.type.startsWith("data-");
|
|
@@ -4213,21 +4518,23 @@ function isFileUIPart(part) {
|
|
|
4213
4518
|
function isReasoningUIPart(part) {
|
|
4214
4519
|
return part.type === "reasoning";
|
|
4215
4520
|
}
|
|
4216
|
-
function
|
|
4521
|
+
function isStaticToolUIPart(part) {
|
|
4217
4522
|
return part.type.startsWith("tool-");
|
|
4218
4523
|
}
|
|
4219
4524
|
function isDynamicToolUIPart(part) {
|
|
4220
4525
|
return part.type === "dynamic-tool";
|
|
4221
4526
|
}
|
|
4222
|
-
function
|
|
4223
|
-
return
|
|
4527
|
+
function isToolUIPart(part) {
|
|
4528
|
+
return isStaticToolUIPart(part) || isDynamicToolUIPart(part);
|
|
4224
4529
|
}
|
|
4225
|
-
|
|
4530
|
+
var isToolOrDynamicToolUIPart = isToolUIPart;
|
|
4531
|
+
function getStaticToolName(part) {
|
|
4226
4532
|
return part.type.split("-").slice(1).join("-");
|
|
4227
4533
|
}
|
|
4228
|
-
function
|
|
4229
|
-
return isDynamicToolUIPart(part) ? part.toolName :
|
|
4534
|
+
function getToolName(part) {
|
|
4535
|
+
return isDynamicToolUIPart(part) ? part.toolName : getStaticToolName(part);
|
|
4230
4536
|
}
|
|
4537
|
+
var getToolOrDynamicToolName = getToolName;
|
|
4231
4538
|
|
|
4232
4539
|
// src/ui/process-ui-message-stream.ts
|
|
4233
4540
|
function createStreamingUIMessageState({
|
|
@@ -4259,11 +4566,9 @@ function processUIMessageStream({
|
|
|
4259
4566
|
new TransformStream({
|
|
4260
4567
|
async transform(chunk, controller) {
|
|
4261
4568
|
await runUpdateMessageJob(async ({ state, write }) => {
|
|
4262
|
-
var
|
|
4569
|
+
var _a14, _b, _c, _d;
|
|
4263
4570
|
function getToolInvocation(toolCallId) {
|
|
4264
|
-
const toolInvocations = state.message.parts.filter(
|
|
4265
|
-
isToolOrDynamicToolUIPart
|
|
4266
|
-
);
|
|
4571
|
+
const toolInvocations = state.message.parts.filter(isToolUIPart);
|
|
4267
4572
|
const toolInvocation = toolInvocations.find(
|
|
4268
4573
|
(invocation) => invocation.toolCallId === toolCallId
|
|
4269
4574
|
);
|
|
@@ -4275,9 +4580,9 @@ function processUIMessageStream({
|
|
|
4275
4580
|
return toolInvocation;
|
|
4276
4581
|
}
|
|
4277
4582
|
function updateToolPart(options) {
|
|
4278
|
-
var
|
|
4583
|
+
var _a15;
|
|
4279
4584
|
const part = state.message.parts.find(
|
|
4280
|
-
(part2) =>
|
|
4585
|
+
(part2) => isStaticToolUIPart(part2) && part2.toolCallId === options.toolCallId
|
|
4281
4586
|
);
|
|
4282
4587
|
const anyOptions = options;
|
|
4283
4588
|
const anyPart = part;
|
|
@@ -4291,7 +4596,7 @@ function processUIMessageStream({
|
|
|
4291
4596
|
if (options.title !== void 0) {
|
|
4292
4597
|
anyPart.title = options.title;
|
|
4293
4598
|
}
|
|
4294
|
-
anyPart.providerExecuted = (
|
|
4599
|
+
anyPart.providerExecuted = (_a15 = anyOptions.providerExecuted) != null ? _a15 : part.providerExecuted;
|
|
4295
4600
|
if (anyOptions.providerMetadata != null && part.state === "input-available") {
|
|
4296
4601
|
part.callProviderMetadata = anyOptions.providerMetadata;
|
|
4297
4602
|
}
|
|
@@ -4312,7 +4617,7 @@ function processUIMessageStream({
|
|
|
4312
4617
|
}
|
|
4313
4618
|
}
|
|
4314
4619
|
function updateDynamicToolPart(options) {
|
|
4315
|
-
var
|
|
4620
|
+
var _a15, _b2;
|
|
4316
4621
|
const part = state.message.parts.find(
|
|
4317
4622
|
(part2) => part2.type === "dynamic-tool" && part2.toolCallId === options.toolCallId
|
|
4318
4623
|
);
|
|
@@ -4324,7 +4629,7 @@ function processUIMessageStream({
|
|
|
4324
4629
|
anyPart.input = anyOptions.input;
|
|
4325
4630
|
anyPart.output = anyOptions.output;
|
|
4326
4631
|
anyPart.errorText = anyOptions.errorText;
|
|
4327
|
-
anyPart.rawInput = (
|
|
4632
|
+
anyPart.rawInput = (_a15 = anyOptions.rawInput) != null ? _a15 : anyPart.rawInput;
|
|
4328
4633
|
anyPart.preliminary = anyOptions.preliminary;
|
|
4329
4634
|
if (options.title !== void 0) {
|
|
4330
4635
|
anyPart.title = options.title;
|
|
@@ -4353,7 +4658,7 @@ function processUIMessageStream({
|
|
|
4353
4658
|
if (metadata != null) {
|
|
4354
4659
|
const mergedMetadata = state.message.metadata != null ? mergeObjects(state.message.metadata, metadata) : metadata;
|
|
4355
4660
|
if (messageMetadataSchema != null) {
|
|
4356
|
-
await (0,
|
|
4661
|
+
await (0, import_provider_utils17.validateTypes)({
|
|
4357
4662
|
value: mergedMetadata,
|
|
4358
4663
|
schema: messageMetadataSchema
|
|
4359
4664
|
});
|
|
@@ -4377,7 +4682,7 @@ function processUIMessageStream({
|
|
|
4377
4682
|
case "text-delta": {
|
|
4378
4683
|
const textPart = state.activeTextParts[chunk.id];
|
|
4379
4684
|
textPart.text += chunk.delta;
|
|
4380
|
-
textPart.providerMetadata = (
|
|
4685
|
+
textPart.providerMetadata = (_a14 = chunk.providerMetadata) != null ? _a14 : textPart.providerMetadata;
|
|
4381
4686
|
write();
|
|
4382
4687
|
break;
|
|
4383
4688
|
}
|
|
@@ -4449,7 +4754,7 @@ function processUIMessageStream({
|
|
|
4449
4754
|
break;
|
|
4450
4755
|
}
|
|
4451
4756
|
case "tool-input-start": {
|
|
4452
|
-
const toolInvocations = state.message.parts.filter(
|
|
4757
|
+
const toolInvocations = state.message.parts.filter(isStaticToolUIPart);
|
|
4453
4758
|
state.partialToolCalls[chunk.toolCallId] = {
|
|
4454
4759
|
text: "",
|
|
4455
4760
|
toolName: chunk.toolName,
|
|
@@ -4590,7 +4895,7 @@ function processUIMessageStream({
|
|
|
4590
4895
|
} else {
|
|
4591
4896
|
updateToolPart({
|
|
4592
4897
|
toolCallId: chunk.toolCallId,
|
|
4593
|
-
toolName:
|
|
4898
|
+
toolName: getStaticToolName(toolInvocation),
|
|
4594
4899
|
state: "output-available",
|
|
4595
4900
|
input: toolInvocation.input,
|
|
4596
4901
|
output: chunk.output,
|
|
@@ -4617,7 +4922,7 @@ function processUIMessageStream({
|
|
|
4617
4922
|
} else {
|
|
4618
4923
|
updateToolPart({
|
|
4619
4924
|
toolCallId: chunk.toolCallId,
|
|
4620
|
-
toolName:
|
|
4925
|
+
toolName: getStaticToolName(toolInvocation),
|
|
4621
4926
|
state: "output-error",
|
|
4622
4927
|
input: toolInvocation.input,
|
|
4623
4928
|
rawInput: toolInvocation.rawInput,
|
|
@@ -4672,7 +4977,7 @@ function processUIMessageStream({
|
|
|
4672
4977
|
default: {
|
|
4673
4978
|
if (isDataUIMessageChunk(chunk)) {
|
|
4674
4979
|
if ((dataPartSchemas == null ? void 0 : dataPartSchemas[chunk.type]) != null) {
|
|
4675
|
-
await (0,
|
|
4980
|
+
await (0, import_provider_utils17.validateTypes)({
|
|
4676
4981
|
value: chunk.data,
|
|
4677
4982
|
schema: dataPartSchemas[chunk.type]
|
|
4678
4983
|
});
|
|
@@ -4816,11 +5121,11 @@ function createAsyncIterableStream(source) {
|
|
|
4816
5121
|
const reader = this.getReader();
|
|
4817
5122
|
let finished = false;
|
|
4818
5123
|
async function cleanup(cancelStream) {
|
|
4819
|
-
var
|
|
5124
|
+
var _a14;
|
|
4820
5125
|
finished = true;
|
|
4821
5126
|
try {
|
|
4822
5127
|
if (cancelStream) {
|
|
4823
|
-
await ((
|
|
5128
|
+
await ((_a14 = reader.cancel) == null ? void 0 : _a14.call(reader));
|
|
4824
5129
|
}
|
|
4825
5130
|
} finally {
|
|
4826
5131
|
try {
|
|
@@ -4984,52 +5289,14 @@ function createStitchableStream() {
|
|
|
4984
5289
|
};
|
|
4985
5290
|
}
|
|
4986
5291
|
|
|
4987
|
-
// src/util/delayed-promise.ts
|
|
4988
|
-
var DelayedPromise = class {
|
|
4989
|
-
constructor() {
|
|
4990
|
-
this.status = { type: "pending" };
|
|
4991
|
-
this._resolve = void 0;
|
|
4992
|
-
this._reject = void 0;
|
|
4993
|
-
}
|
|
4994
|
-
get promise() {
|
|
4995
|
-
if (this._promise) {
|
|
4996
|
-
return this._promise;
|
|
4997
|
-
}
|
|
4998
|
-
this._promise = new Promise((resolve3, reject) => {
|
|
4999
|
-
if (this.status.type === "resolved") {
|
|
5000
|
-
resolve3(this.status.value);
|
|
5001
|
-
} else if (this.status.type === "rejected") {
|
|
5002
|
-
reject(this.status.error);
|
|
5003
|
-
}
|
|
5004
|
-
this._resolve = resolve3;
|
|
5005
|
-
this._reject = reject;
|
|
5006
|
-
});
|
|
5007
|
-
return this._promise;
|
|
5008
|
-
}
|
|
5009
|
-
resolve(value) {
|
|
5010
|
-
var _a15;
|
|
5011
|
-
this.status = { type: "resolved", value };
|
|
5012
|
-
if (this._promise) {
|
|
5013
|
-
(_a15 = this._resolve) == null ? void 0 : _a15.call(this, value);
|
|
5014
|
-
}
|
|
5015
|
-
}
|
|
5016
|
-
reject(error) {
|
|
5017
|
-
var _a15;
|
|
5018
|
-
this.status = { type: "rejected", error };
|
|
5019
|
-
if (this._promise) {
|
|
5020
|
-
(_a15 = this._reject) == null ? void 0 : _a15.call(this, error);
|
|
5021
|
-
}
|
|
5022
|
-
}
|
|
5023
|
-
};
|
|
5024
|
-
|
|
5025
5292
|
// src/util/now.ts
|
|
5026
5293
|
function now() {
|
|
5027
|
-
var
|
|
5028
|
-
return (_b = (
|
|
5294
|
+
var _a14, _b;
|
|
5295
|
+
return (_b = (_a14 = globalThis == null ? void 0 : globalThis.performance) == null ? void 0 : _a14.now()) != null ? _b : Date.now();
|
|
5029
5296
|
}
|
|
5030
5297
|
|
|
5031
5298
|
// src/generate-text/run-tools-transformation.ts
|
|
5032
|
-
var
|
|
5299
|
+
var import_provider_utils18 = require("@ai-sdk/provider-utils");
|
|
5033
5300
|
function runToolsTransformation({
|
|
5034
5301
|
tools,
|
|
5035
5302
|
generatorStream,
|
|
@@ -5094,8 +5361,9 @@ function runToolsTransformation({
|
|
|
5094
5361
|
case "finish": {
|
|
5095
5362
|
finishChunk = {
|
|
5096
5363
|
type: "finish",
|
|
5097
|
-
finishReason: chunk.finishReason,
|
|
5098
|
-
|
|
5364
|
+
finishReason: chunk.finishReason.unified,
|
|
5365
|
+
rawFinishReason: chunk.finishReason.raw,
|
|
5366
|
+
usage: asLanguageModelUsage(chunk.usage),
|
|
5099
5367
|
providerMetadata: chunk.providerMetadata
|
|
5100
5368
|
};
|
|
5101
5369
|
break;
|
|
@@ -5116,7 +5384,7 @@ function runToolsTransformation({
|
|
|
5116
5384
|
toolCallId: toolCall.toolCallId,
|
|
5117
5385
|
toolName: toolCall.toolName,
|
|
5118
5386
|
input: toolCall.input,
|
|
5119
|
-
error: (0,
|
|
5387
|
+
error: (0, import_provider_utils18.getErrorMessage)(toolCall.error),
|
|
5120
5388
|
dynamic: true,
|
|
5121
5389
|
title: toolCall.title
|
|
5122
5390
|
});
|
|
@@ -5199,6 +5467,9 @@ function runToolsTransformation({
|
|
|
5199
5467
|
}
|
|
5200
5468
|
break;
|
|
5201
5469
|
}
|
|
5470
|
+
case "tool-approval-request": {
|
|
5471
|
+
break;
|
|
5472
|
+
}
|
|
5202
5473
|
default: {
|
|
5203
5474
|
const _exhaustiveCheck = chunkType;
|
|
5204
5475
|
throw new Error(`Unhandled chunk type: ${_exhaustiveCheck}`);
|
|
@@ -5238,7 +5509,7 @@ function runToolsTransformation({
|
|
|
5238
5509
|
}
|
|
5239
5510
|
|
|
5240
5511
|
// src/generate-text/stream-text.ts
|
|
5241
|
-
var originalGenerateId2 = (0,
|
|
5512
|
+
var originalGenerateId2 = (0, import_provider_utils19.createIdGenerator)({
|
|
5242
5513
|
prefix: "aitxt",
|
|
5243
5514
|
size: 24
|
|
5244
5515
|
});
|
|
@@ -5334,7 +5605,7 @@ function createOutputTransformStream(output) {
|
|
|
5334
5605
|
}
|
|
5335
5606
|
return new TransformStream({
|
|
5336
5607
|
async transform(chunk, controller) {
|
|
5337
|
-
var
|
|
5608
|
+
var _a14;
|
|
5338
5609
|
if (chunk.type === "finish-step" && textChunk.length > 0) {
|
|
5339
5610
|
publishTextChunk({ controller });
|
|
5340
5611
|
}
|
|
@@ -5361,7 +5632,7 @@ function createOutputTransformStream(output) {
|
|
|
5361
5632
|
}
|
|
5362
5633
|
text2 += chunk.text;
|
|
5363
5634
|
textChunk += chunk.text;
|
|
5364
|
-
textProviderMetadata = (
|
|
5635
|
+
textProviderMetadata = (_a14 = chunk.providerMetadata) != null ? _a14 : textProviderMetadata;
|
|
5365
5636
|
const result = await output.parsePartialOutput({ text: text2 });
|
|
5366
5637
|
if (result !== void 0) {
|
|
5367
5638
|
const currentJson = JSON.stringify(result.partial);
|
|
@@ -5405,9 +5676,10 @@ var DefaultStreamTextResult = class {
|
|
|
5405
5676
|
experimental_context,
|
|
5406
5677
|
download: download2
|
|
5407
5678
|
}) {
|
|
5408
|
-
this._totalUsage = new DelayedPromise();
|
|
5409
|
-
this._finishReason = new DelayedPromise();
|
|
5410
|
-
this.
|
|
5679
|
+
this._totalUsage = new import_provider_utils19.DelayedPromise();
|
|
5680
|
+
this._finishReason = new import_provider_utils19.DelayedPromise();
|
|
5681
|
+
this._rawFinishReason = new import_provider_utils19.DelayedPromise();
|
|
5682
|
+
this._steps = new import_provider_utils19.DelayedPromise();
|
|
5411
5683
|
this.outputSpecification = output;
|
|
5412
5684
|
this.includeRawChunks = includeRawChunks;
|
|
5413
5685
|
this.tools = tools;
|
|
@@ -5415,16 +5687,18 @@ var DefaultStreamTextResult = class {
|
|
|
5415
5687
|
let recordedContent = [];
|
|
5416
5688
|
const recordedResponseMessages = [];
|
|
5417
5689
|
let recordedFinishReason = void 0;
|
|
5690
|
+
let recordedRawFinishReason = void 0;
|
|
5418
5691
|
let recordedTotalUsage = void 0;
|
|
5419
5692
|
let recordedRequest = {};
|
|
5420
5693
|
let recordedWarnings = [];
|
|
5421
5694
|
const recordedSteps = [];
|
|
5695
|
+
const pendingDeferredToolCalls = /* @__PURE__ */ new Map();
|
|
5422
5696
|
let rootSpan;
|
|
5423
5697
|
let activeTextContent = {};
|
|
5424
5698
|
let activeReasoningContent = {};
|
|
5425
5699
|
const eventProcessor = new TransformStream({
|
|
5426
5700
|
async transform(chunk, controller) {
|
|
5427
|
-
var
|
|
5701
|
+
var _a14, _b, _c, _d;
|
|
5428
5702
|
controller.enqueue(chunk);
|
|
5429
5703
|
const { part } = chunk;
|
|
5430
5704
|
if (part.type === "text-delta" || part.type === "reasoning-delta" || part.type === "source" || part.type === "tool-call" || part.type === "tool-result" || part.type === "tool-input-start" || part.type === "tool-input-delta" || part.type === "raw") {
|
|
@@ -5454,7 +5728,7 @@ var DefaultStreamTextResult = class {
|
|
|
5454
5728
|
return;
|
|
5455
5729
|
}
|
|
5456
5730
|
activeText.text += part.text;
|
|
5457
|
-
activeText.providerMetadata = (
|
|
5731
|
+
activeText.providerMetadata = (_a14 = part.providerMetadata) != null ? _a14 : activeText.providerMetadata;
|
|
5458
5732
|
}
|
|
5459
5733
|
if (part.type === "text-end") {
|
|
5460
5734
|
const activeText = activeTextContent[part.id];
|
|
@@ -5535,13 +5809,14 @@ var DefaultStreamTextResult = class {
|
|
|
5535
5809
|
recordedWarnings = part.warnings;
|
|
5536
5810
|
}
|
|
5537
5811
|
if (part.type === "finish-step") {
|
|
5538
|
-
const stepMessages = toResponseMessages({
|
|
5812
|
+
const stepMessages = await toResponseMessages({
|
|
5539
5813
|
content: recordedContent,
|
|
5540
5814
|
tools
|
|
5541
5815
|
});
|
|
5542
5816
|
const currentStepResult = new DefaultStepResult({
|
|
5543
5817
|
content: recordedContent,
|
|
5544
5818
|
finishReason: part.finishReason,
|
|
5819
|
+
rawFinishReason: part.rawFinishReason,
|
|
5545
5820
|
usage: part.usage,
|
|
5546
5821
|
warnings: recordedWarnings,
|
|
5547
5822
|
request: recordedRequest,
|
|
@@ -5564,6 +5839,7 @@ var DefaultStreamTextResult = class {
|
|
|
5564
5839
|
if (part.type === "finish") {
|
|
5565
5840
|
recordedTotalUsage = part.totalUsage;
|
|
5566
5841
|
recordedFinishReason = part.finishReason;
|
|
5842
|
+
recordedRawFinishReason = part.rawFinishReason;
|
|
5567
5843
|
}
|
|
5568
5844
|
},
|
|
5569
5845
|
async flush(controller) {
|
|
@@ -5573,22 +5849,21 @@ var DefaultStreamTextResult = class {
|
|
|
5573
5849
|
message: "No output generated. Check the stream for errors."
|
|
5574
5850
|
});
|
|
5575
5851
|
self._finishReason.reject(error);
|
|
5852
|
+
self._rawFinishReason.reject(error);
|
|
5576
5853
|
self._totalUsage.reject(error);
|
|
5577
5854
|
self._steps.reject(error);
|
|
5578
5855
|
return;
|
|
5579
5856
|
}
|
|
5580
|
-
const finishReason = recordedFinishReason != null ? recordedFinishReason : "
|
|
5581
|
-
const totalUsage = recordedTotalUsage != null ? recordedTotalUsage :
|
|
5582
|
-
inputTokens: void 0,
|
|
5583
|
-
outputTokens: void 0,
|
|
5584
|
-
totalTokens: void 0
|
|
5585
|
-
};
|
|
5857
|
+
const finishReason = recordedFinishReason != null ? recordedFinishReason : "other";
|
|
5858
|
+
const totalUsage = recordedTotalUsage != null ? recordedTotalUsage : createNullLanguageModelUsage();
|
|
5586
5859
|
self._finishReason.resolve(finishReason);
|
|
5860
|
+
self._rawFinishReason.resolve(recordedRawFinishReason);
|
|
5587
5861
|
self._totalUsage.resolve(totalUsage);
|
|
5588
5862
|
self._steps.resolve(recordedSteps);
|
|
5589
5863
|
const finalStep = recordedSteps[recordedSteps.length - 1];
|
|
5590
5864
|
await (onFinish == null ? void 0 : onFinish({
|
|
5591
|
-
finishReason,
|
|
5865
|
+
finishReason: finalStep.finishReason,
|
|
5866
|
+
rawFinishReason: finalStep.rawFinishReason,
|
|
5592
5867
|
totalUsage,
|
|
5593
5868
|
usage: finalStep.usage,
|
|
5594
5869
|
content: finalStep.content,
|
|
@@ -5607,7 +5882,8 @@ var DefaultStreamTextResult = class {
|
|
|
5607
5882
|
response: finalStep.response,
|
|
5608
5883
|
warnings: finalStep.warnings,
|
|
5609
5884
|
providerMetadata: finalStep.providerMetadata,
|
|
5610
|
-
steps: recordedSteps
|
|
5885
|
+
steps: recordedSteps,
|
|
5886
|
+
experimental_context
|
|
5611
5887
|
}));
|
|
5612
5888
|
rootSpan.setAttributes(
|
|
5613
5889
|
await selectTelemetryAttributes({
|
|
@@ -5617,8 +5893,8 @@ var DefaultStreamTextResult = class {
|
|
|
5617
5893
|
"ai.response.text": { output: () => finalStep.text },
|
|
5618
5894
|
"ai.response.toolCalls": {
|
|
5619
5895
|
output: () => {
|
|
5620
|
-
var
|
|
5621
|
-
return ((
|
|
5896
|
+
var _a14;
|
|
5897
|
+
return ((_a14 = finalStep.toolCalls) == null ? void 0 : _a14.length) ? JSON.stringify(finalStep.toolCalls) : void 0;
|
|
5622
5898
|
}
|
|
5623
5899
|
},
|
|
5624
5900
|
"ai.response.providerMetadata": JSON.stringify(
|
|
@@ -5665,7 +5941,7 @@ var DefaultStreamTextResult = class {
|
|
|
5665
5941
|
}
|
|
5666
5942
|
controller.enqueue(value);
|
|
5667
5943
|
} catch (error) {
|
|
5668
|
-
if ((0,
|
|
5944
|
+
if ((0, import_provider_utils19.isAbortError)(error) && (abortSignal == null ? void 0 : abortSignal.aborted)) {
|
|
5669
5945
|
abort();
|
|
5670
5946
|
} else {
|
|
5671
5947
|
controller.error(error);
|
|
@@ -5762,31 +6038,35 @@ var DefaultStreamTextResult = class {
|
|
|
5762
6038
|
}
|
|
5763
6039
|
})
|
|
5764
6040
|
);
|
|
6041
|
+
const content = [];
|
|
6042
|
+
for (const output2 of toolOutputs) {
|
|
6043
|
+
content.push({
|
|
6044
|
+
type: "tool-result",
|
|
6045
|
+
toolCallId: output2.toolCallId,
|
|
6046
|
+
toolName: output2.toolName,
|
|
6047
|
+
output: await createToolModelOutput({
|
|
6048
|
+
toolCallId: output2.toolCallId,
|
|
6049
|
+
input: output2.input,
|
|
6050
|
+
tool: tools == null ? void 0 : tools[output2.toolName],
|
|
6051
|
+
output: output2.type === "tool-result" ? output2.output : output2.error,
|
|
6052
|
+
errorMode: output2.type === "tool-error" ? "json" : "none"
|
|
6053
|
+
})
|
|
6054
|
+
});
|
|
6055
|
+
}
|
|
6056
|
+
for (const toolApproval of deniedToolApprovals) {
|
|
6057
|
+
content.push({
|
|
6058
|
+
type: "tool-result",
|
|
6059
|
+
toolCallId: toolApproval.toolCall.toolCallId,
|
|
6060
|
+
toolName: toolApproval.toolCall.toolName,
|
|
6061
|
+
output: {
|
|
6062
|
+
type: "execution-denied",
|
|
6063
|
+
reason: toolApproval.approvalResponse.reason
|
|
6064
|
+
}
|
|
6065
|
+
});
|
|
6066
|
+
}
|
|
5765
6067
|
initialResponseMessages.push({
|
|
5766
6068
|
role: "tool",
|
|
5767
|
-
content
|
|
5768
|
-
// add regular tool results for approved tool calls:
|
|
5769
|
-
...toolOutputs.map((output2) => ({
|
|
5770
|
-
type: "tool-result",
|
|
5771
|
-
toolCallId: output2.toolCallId,
|
|
5772
|
-
toolName: output2.toolName,
|
|
5773
|
-
output: createToolModelOutput({
|
|
5774
|
-
tool: tools == null ? void 0 : tools[output2.toolName],
|
|
5775
|
-
output: output2.type === "tool-result" ? output2.output : output2.error,
|
|
5776
|
-
errorMode: output2.type === "tool-error" ? "json" : "none"
|
|
5777
|
-
})
|
|
5778
|
-
})),
|
|
5779
|
-
// add execution denied tool results for denied tool approvals:
|
|
5780
|
-
...deniedToolApprovals.map((toolApproval) => ({
|
|
5781
|
-
type: "tool-result",
|
|
5782
|
-
toolCallId: toolApproval.toolCall.toolCallId,
|
|
5783
|
-
toolName: toolApproval.toolCall.toolName,
|
|
5784
|
-
output: {
|
|
5785
|
-
type: "execution-denied",
|
|
5786
|
-
reason: toolApproval.approvalResponse.reason
|
|
5787
|
-
}
|
|
5788
|
-
}))
|
|
5789
|
-
]
|
|
6069
|
+
content
|
|
5790
6070
|
});
|
|
5791
6071
|
} finally {
|
|
5792
6072
|
toolExecutionStepStreamController == null ? void 0 : toolExecutionStepStreamController.close();
|
|
@@ -5798,18 +6078,19 @@ var DefaultStreamTextResult = class {
|
|
|
5798
6078
|
responseMessages,
|
|
5799
6079
|
usage
|
|
5800
6080
|
}) {
|
|
5801
|
-
var
|
|
6081
|
+
var _a14, _b, _c, _d, _e, _f;
|
|
5802
6082
|
const includeRawChunks2 = self.includeRawChunks;
|
|
5803
|
-
stepFinish = new DelayedPromise();
|
|
6083
|
+
stepFinish = new import_provider_utils19.DelayedPromise();
|
|
5804
6084
|
const stepInputMessages = [...initialMessages, ...responseMessages];
|
|
5805
6085
|
const prepareStepResult = await (prepareStep == null ? void 0 : prepareStep({
|
|
5806
6086
|
model,
|
|
5807
6087
|
steps: recordedSteps,
|
|
5808
6088
|
stepNumber: recordedSteps.length,
|
|
5809
|
-
messages: stepInputMessages
|
|
6089
|
+
messages: stepInputMessages,
|
|
6090
|
+
experimental_context
|
|
5810
6091
|
}));
|
|
5811
6092
|
const stepModel = resolveLanguageModel(
|
|
5812
|
-
(
|
|
6093
|
+
(_a14 = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _a14 : model
|
|
5813
6094
|
);
|
|
5814
6095
|
const promptMessages = await convertToLanguageModelPrompt({
|
|
5815
6096
|
prompt: {
|
|
@@ -5824,6 +6105,11 @@ var DefaultStreamTextResult = class {
|
|
|
5824
6105
|
toolChoice: (_d = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _d : toolChoice,
|
|
5825
6106
|
activeTools: (_e = prepareStepResult == null ? void 0 : prepareStepResult.activeTools) != null ? _e : activeTools
|
|
5826
6107
|
});
|
|
6108
|
+
experimental_context = (_f = prepareStepResult == null ? void 0 : prepareStepResult.experimental_context) != null ? _f : experimental_context;
|
|
6109
|
+
const stepProviderOptions = mergeObjects(
|
|
6110
|
+
providerOptions,
|
|
6111
|
+
prepareStepResult == null ? void 0 : prepareStepResult.providerOptions
|
|
6112
|
+
);
|
|
5827
6113
|
const {
|
|
5828
6114
|
result: { stream: stream2, response, request },
|
|
5829
6115
|
doStreamSpan,
|
|
@@ -5877,7 +6163,7 @@ var DefaultStreamTextResult = class {
|
|
|
5877
6163
|
toolChoice: stepToolChoice,
|
|
5878
6164
|
responseFormat: await (output == null ? void 0 : output.responseFormat),
|
|
5879
6165
|
prompt: promptMessages,
|
|
5880
|
-
providerOptions,
|
|
6166
|
+
providerOptions: stepProviderOptions,
|
|
5881
6167
|
abortSignal,
|
|
5882
6168
|
headers,
|
|
5883
6169
|
includeRawChunks: includeRawChunks2
|
|
@@ -5902,12 +6188,9 @@ var DefaultStreamTextResult = class {
|
|
|
5902
6188
|
const stepToolOutputs = [];
|
|
5903
6189
|
let warnings;
|
|
5904
6190
|
const activeToolCallToolNames = {};
|
|
5905
|
-
let stepFinishReason = "
|
|
5906
|
-
let
|
|
5907
|
-
|
|
5908
|
-
outputTokens: void 0,
|
|
5909
|
-
totalTokens: void 0
|
|
5910
|
-
};
|
|
6191
|
+
let stepFinishReason = "other";
|
|
6192
|
+
let stepRawFinishReason = void 0;
|
|
6193
|
+
let stepUsage = createNullLanguageModelUsage();
|
|
5911
6194
|
let stepProviderMetadata;
|
|
5912
6195
|
let stepFirstChunk = true;
|
|
5913
6196
|
let stepResponse = {
|
|
@@ -5920,7 +6203,7 @@ var DefaultStreamTextResult = class {
|
|
|
5920
6203
|
streamWithToolResults.pipeThrough(
|
|
5921
6204
|
new TransformStream({
|
|
5922
6205
|
async transform(chunk, controller) {
|
|
5923
|
-
var
|
|
6206
|
+
var _a15, _b2, _c2, _d2, _e2;
|
|
5924
6207
|
if (chunk.type === "stream-start") {
|
|
5925
6208
|
warnings = chunk.warnings;
|
|
5926
6209
|
return;
|
|
@@ -5993,7 +6276,7 @@ var DefaultStreamTextResult = class {
|
|
|
5993
6276
|
}
|
|
5994
6277
|
case "response-metadata": {
|
|
5995
6278
|
stepResponse = {
|
|
5996
|
-
id: (
|
|
6279
|
+
id: (_a15 = chunk.id) != null ? _a15 : stepResponse.id,
|
|
5997
6280
|
timestamp: (_b2 = chunk.timestamp) != null ? _b2 : stepResponse.timestamp,
|
|
5998
6281
|
modelId: (_c2 = chunk.modelId) != null ? _c2 : stepResponse.modelId
|
|
5999
6282
|
};
|
|
@@ -6002,6 +6285,7 @@ var DefaultStreamTextResult = class {
|
|
|
6002
6285
|
case "finish": {
|
|
6003
6286
|
stepUsage = chunk.usage;
|
|
6004
6287
|
stepFinishReason = chunk.finishReason;
|
|
6288
|
+
stepRawFinishReason = chunk.rawFinishReason;
|
|
6005
6289
|
stepProviderMetadata = chunk.providerMetadata;
|
|
6006
6290
|
const msToFinish = now2() - startTimestampMs;
|
|
6007
6291
|
doStreamSpan.addEvent("ai.stream.finish");
|
|
@@ -6114,6 +6398,7 @@ var DefaultStreamTextResult = class {
|
|
|
6114
6398
|
controller.enqueue({
|
|
6115
6399
|
type: "finish-step",
|
|
6116
6400
|
finishReason: stepFinishReason,
|
|
6401
|
+
rawFinishReason: stepRawFinishReason,
|
|
6117
6402
|
usage: stepUsage,
|
|
6118
6403
|
providerMetadata: stepProviderMetadata,
|
|
6119
6404
|
response: {
|
|
@@ -6129,14 +6414,38 @@ var DefaultStreamTextResult = class {
|
|
|
6129
6414
|
const clientToolOutputs = stepToolOutputs.filter(
|
|
6130
6415
|
(toolOutput) => toolOutput.providerExecuted !== true
|
|
6131
6416
|
);
|
|
6132
|
-
|
|
6133
|
-
|
|
6134
|
-
|
|
6135
|
-
|
|
6136
|
-
|
|
6137
|
-
|
|
6417
|
+
for (const toolCall of stepToolCalls) {
|
|
6418
|
+
if (toolCall.providerExecuted !== true)
|
|
6419
|
+
continue;
|
|
6420
|
+
const tool2 = tools == null ? void 0 : tools[toolCall.toolName];
|
|
6421
|
+
if ((tool2 == null ? void 0 : tool2.type) === "provider" && tool2.supportsDeferredResults) {
|
|
6422
|
+
const hasResultInStep = stepToolOutputs.some(
|
|
6423
|
+
(output2) => output2.type === "tool-result" && output2.toolCallId === toolCall.toolCallId
|
|
6424
|
+
);
|
|
6425
|
+
if (!hasResultInStep) {
|
|
6426
|
+
pendingDeferredToolCalls.set(toolCall.toolCallId, {
|
|
6427
|
+
toolName: toolCall.toolName
|
|
6428
|
+
});
|
|
6429
|
+
}
|
|
6430
|
+
}
|
|
6431
|
+
}
|
|
6432
|
+
for (const output2 of stepToolOutputs) {
|
|
6433
|
+
if (output2.type === "tool-result") {
|
|
6434
|
+
pendingDeferredToolCalls.delete(output2.toolCallId);
|
|
6435
|
+
}
|
|
6436
|
+
}
|
|
6437
|
+
if (
|
|
6438
|
+
// Continue if:
|
|
6439
|
+
// 1. There are client tool calls that have all been executed, OR
|
|
6440
|
+
// 2. There are pending deferred results from provider-executed tools
|
|
6441
|
+
(clientToolCalls.length > 0 && clientToolOutputs.length === clientToolCalls.length || pendingDeferredToolCalls.size > 0) && // continue until a stop condition is met:
|
|
6442
|
+
!await isStopConditionMet({
|
|
6443
|
+
stopConditions,
|
|
6444
|
+
steps: recordedSteps
|
|
6445
|
+
})
|
|
6446
|
+
) {
|
|
6138
6447
|
responseMessages.push(
|
|
6139
|
-
...toResponseMessages({
|
|
6448
|
+
...await toResponseMessages({
|
|
6140
6449
|
content: (
|
|
6141
6450
|
// use transformed content to create the messages for the next step:
|
|
6142
6451
|
recordedSteps[recordedSteps.length - 1].content
|
|
@@ -6161,6 +6470,7 @@ var DefaultStreamTextResult = class {
|
|
|
6161
6470
|
controller.enqueue({
|
|
6162
6471
|
type: "finish",
|
|
6163
6472
|
finishReason: stepFinishReason,
|
|
6473
|
+
rawFinishReason: stepRawFinishReason,
|
|
6164
6474
|
totalUsage: combinedUsage
|
|
6165
6475
|
});
|
|
6166
6476
|
self.closeStream();
|
|
@@ -6173,11 +6483,7 @@ var DefaultStreamTextResult = class {
|
|
|
6173
6483
|
await streamStep({
|
|
6174
6484
|
currentStep: 0,
|
|
6175
6485
|
responseMessages: initialResponseMessages,
|
|
6176
|
-
usage:
|
|
6177
|
-
inputTokens: void 0,
|
|
6178
|
-
outputTokens: void 0,
|
|
6179
|
-
totalTokens: void 0
|
|
6180
|
-
}
|
|
6486
|
+
usage: createNullLanguageModelUsage()
|
|
6181
6487
|
});
|
|
6182
6488
|
}
|
|
6183
6489
|
}).catch((error) => {
|
|
@@ -6258,6 +6564,10 @@ var DefaultStreamTextResult = class {
|
|
|
6258
6564
|
this.consumeStream();
|
|
6259
6565
|
return this._finishReason.promise;
|
|
6260
6566
|
}
|
|
6567
|
+
get rawFinishReason() {
|
|
6568
|
+
this.consumeStream();
|
|
6569
|
+
return this._rawFinishReason.promise;
|
|
6570
|
+
}
|
|
6261
6571
|
/**
|
|
6262
6572
|
Split out a new stream from the original stream.
|
|
6263
6573
|
The original stream is replaced to allow for further splitting,
|
|
@@ -6296,14 +6606,14 @@ var DefaultStreamTextResult = class {
|
|
|
6296
6606
|
);
|
|
6297
6607
|
}
|
|
6298
6608
|
async consumeStream(options) {
|
|
6299
|
-
var
|
|
6609
|
+
var _a14;
|
|
6300
6610
|
try {
|
|
6301
6611
|
await consumeStream({
|
|
6302
6612
|
stream: this.fullStream,
|
|
6303
6613
|
onError: options == null ? void 0 : options.onError
|
|
6304
6614
|
});
|
|
6305
6615
|
} catch (error) {
|
|
6306
|
-
(
|
|
6616
|
+
(_a14 = options == null ? void 0 : options.onError) == null ? void 0 : _a14.call(options, error);
|
|
6307
6617
|
}
|
|
6308
6618
|
}
|
|
6309
6619
|
get experimental_partialOutputStream() {
|
|
@@ -6324,8 +6634,8 @@ var DefaultStreamTextResult = class {
|
|
|
6324
6634
|
}
|
|
6325
6635
|
get output() {
|
|
6326
6636
|
return this.finalStep.then((step) => {
|
|
6327
|
-
var
|
|
6328
|
-
const output = (
|
|
6637
|
+
var _a14;
|
|
6638
|
+
const output = (_a14 = this.outputSpecification) != null ? _a14 : text();
|
|
6329
6639
|
return output.parseCompleteOutput(
|
|
6330
6640
|
{ text: step.text },
|
|
6331
6641
|
{
|
|
@@ -6345,15 +6655,15 @@ var DefaultStreamTextResult = class {
|
|
|
6345
6655
|
sendSources = false,
|
|
6346
6656
|
sendStart = true,
|
|
6347
6657
|
sendFinish = true,
|
|
6348
|
-
onError =
|
|
6658
|
+
onError = import_provider22.getErrorMessage
|
|
6349
6659
|
} = {}) {
|
|
6350
6660
|
const responseMessageId = generateMessageId != null ? getResponseUIMessageId({
|
|
6351
6661
|
originalMessages,
|
|
6352
6662
|
responseMessageId: generateMessageId
|
|
6353
6663
|
}) : void 0;
|
|
6354
6664
|
const isDynamic = (part) => {
|
|
6355
|
-
var
|
|
6356
|
-
const tool2 = (
|
|
6665
|
+
var _a14;
|
|
6666
|
+
const tool2 = (_a14 = this.tools) == null ? void 0 : _a14[part.toolName];
|
|
6357
6667
|
if (tool2 == null) {
|
|
6358
6668
|
return part.dynamic;
|
|
6359
6669
|
}
|
|
@@ -6691,10 +7001,10 @@ var ToolLoopAgent = class {
|
|
|
6691
7001
|
return this.settings.tools;
|
|
6692
7002
|
}
|
|
6693
7003
|
async prepareCall(options) {
|
|
6694
|
-
var
|
|
7004
|
+
var _a14, _b, _c, _d;
|
|
6695
7005
|
const baseCallArgs = {
|
|
6696
7006
|
...this.settings,
|
|
6697
|
-
stopWhen: (
|
|
7007
|
+
stopWhen: (_a14 = this.settings.stopWhen) != null ? _a14 : stepCountIs(20),
|
|
6698
7008
|
...options
|
|
6699
7009
|
};
|
|
6700
7010
|
const preparedCallArgs = (_d = await ((_c = (_b = this.settings).prepareCall) == null ? void 0 : _c.call(_b, baseCallArgs))) != null ? _d : baseCallArgs;
|
|
@@ -6708,25 +7018,39 @@ var ToolLoopAgent = class {
|
|
|
6708
7018
|
/**
|
|
6709
7019
|
* Generates an output from the agent (non-streaming).
|
|
6710
7020
|
*/
|
|
6711
|
-
async generate(
|
|
6712
|
-
|
|
7021
|
+
async generate({
|
|
7022
|
+
abortSignal,
|
|
7023
|
+
...options
|
|
7024
|
+
}) {
|
|
7025
|
+
return generateText({
|
|
7026
|
+
...await this.prepareCall(options),
|
|
7027
|
+
abortSignal
|
|
7028
|
+
});
|
|
6713
7029
|
}
|
|
6714
7030
|
/**
|
|
6715
7031
|
* Streams an output from the agent (streaming).
|
|
6716
7032
|
*/
|
|
6717
|
-
async stream(
|
|
6718
|
-
|
|
7033
|
+
async stream({
|
|
7034
|
+
abortSignal,
|
|
7035
|
+
experimental_transform,
|
|
7036
|
+
...options
|
|
7037
|
+
}) {
|
|
7038
|
+
return streamText({
|
|
7039
|
+
...await this.prepareCall(options),
|
|
7040
|
+
abortSignal,
|
|
7041
|
+
experimental_transform
|
|
7042
|
+
});
|
|
6719
7043
|
}
|
|
6720
7044
|
};
|
|
6721
7045
|
|
|
6722
7046
|
// src/ui-message-stream/create-ui-message-stream.ts
|
|
6723
|
-
var
|
|
7047
|
+
var import_provider_utils20 = require("@ai-sdk/provider-utils");
|
|
6724
7048
|
function createUIMessageStream({
|
|
6725
7049
|
execute,
|
|
6726
|
-
onError =
|
|
7050
|
+
onError = import_provider_utils20.getErrorMessage,
|
|
6727
7051
|
originalMessages,
|
|
6728
7052
|
onFinish,
|
|
6729
|
-
generateId: generateId2 =
|
|
7053
|
+
generateId: generateId2 = import_provider_utils20.generateId
|
|
6730
7054
|
}) {
|
|
6731
7055
|
let controller;
|
|
6732
7056
|
const ongoingStreamPromises = [];
|
|
@@ -6812,7 +7136,7 @@ function readUIMessageStream({
|
|
|
6812
7136
|
onError,
|
|
6813
7137
|
terminateOnError = false
|
|
6814
7138
|
}) {
|
|
6815
|
-
var
|
|
7139
|
+
var _a14;
|
|
6816
7140
|
let controller;
|
|
6817
7141
|
let hasErrored = false;
|
|
6818
7142
|
const outputStream = new ReadableStream({
|
|
@@ -6821,7 +7145,7 @@ function readUIMessageStream({
|
|
|
6821
7145
|
}
|
|
6822
7146
|
});
|
|
6823
7147
|
const state = createStreamingUIMessageState({
|
|
6824
|
-
messageId: (
|
|
7148
|
+
messageId: (_a14 = message == null ? void 0 : message.id) != null ? _a14 : "",
|
|
6825
7149
|
lastMessage: message
|
|
6826
7150
|
});
|
|
6827
7151
|
const handleError = (error) => {
|
|
@@ -6854,14 +7178,14 @@ function readUIMessageStream({
|
|
|
6854
7178
|
}
|
|
6855
7179
|
|
|
6856
7180
|
// src/ui/convert-to-model-messages.ts
|
|
6857
|
-
var
|
|
6858
|
-
function convertToModelMessages(messages, options) {
|
|
7181
|
+
var import_provider_utils21 = require("@ai-sdk/provider-utils");
|
|
7182
|
+
async function convertToModelMessages(messages, options) {
|
|
6859
7183
|
const modelMessages = [];
|
|
6860
7184
|
if (options == null ? void 0 : options.ignoreIncompleteToolCalls) {
|
|
6861
7185
|
messages = messages.map((message) => ({
|
|
6862
7186
|
...message,
|
|
6863
7187
|
parts: message.parts.filter(
|
|
6864
|
-
(part) => !
|
|
7188
|
+
(part) => !isToolUIPart(part) || part.state !== "input-streaming" && part.state !== "input-available"
|
|
6865
7189
|
)
|
|
6866
7190
|
}));
|
|
6867
7191
|
}
|
|
@@ -6888,7 +7212,7 @@ function convertToModelMessages(messages, options) {
|
|
|
6888
7212
|
modelMessages.push({
|
|
6889
7213
|
role: "user",
|
|
6890
7214
|
content: message.parts.map((part) => {
|
|
6891
|
-
var
|
|
7215
|
+
var _a14;
|
|
6892
7216
|
if (isTextUIPart(part)) {
|
|
6893
7217
|
return {
|
|
6894
7218
|
type: "text",
|
|
@@ -6906,19 +7230,20 @@ function convertToModelMessages(messages, options) {
|
|
|
6906
7230
|
};
|
|
6907
7231
|
}
|
|
6908
7232
|
if (isDataUIPart(part)) {
|
|
6909
|
-
return (
|
|
7233
|
+
return (_a14 = options == null ? void 0 : options.convertDataPart) == null ? void 0 : _a14.call(
|
|
6910
7234
|
options,
|
|
6911
7235
|
part
|
|
6912
7236
|
);
|
|
6913
7237
|
}
|
|
6914
|
-
}).filter(
|
|
7238
|
+
}).filter(import_provider_utils21.isNonNullable)
|
|
6915
7239
|
});
|
|
6916
7240
|
break;
|
|
6917
7241
|
}
|
|
6918
7242
|
case "assistant": {
|
|
6919
7243
|
if (message.parts != null) {
|
|
6920
|
-
let
|
|
6921
|
-
|
|
7244
|
+
let block = [];
|
|
7245
|
+
async function processBlock() {
|
|
7246
|
+
var _a14, _b, _c, _d, _e, _f;
|
|
6922
7247
|
if (block.length === 0) {
|
|
6923
7248
|
return;
|
|
6924
7249
|
}
|
|
@@ -6943,14 +7268,14 @@ function convertToModelMessages(messages, options) {
|
|
|
6943
7268
|
text: part.text,
|
|
6944
7269
|
providerOptions: part.providerMetadata
|
|
6945
7270
|
});
|
|
6946
|
-
} else if (
|
|
6947
|
-
const toolName =
|
|
7271
|
+
} else if (isToolUIPart(part)) {
|
|
7272
|
+
const toolName = getToolName(part);
|
|
6948
7273
|
if (part.state !== "input-streaming") {
|
|
6949
7274
|
content.push({
|
|
6950
7275
|
type: "tool-call",
|
|
6951
7276
|
toolCallId: part.toolCallId,
|
|
6952
7277
|
toolName,
|
|
6953
|
-
input: part.state === "output-error" ? (
|
|
7278
|
+
input: part.state === "output-error" ? (_a14 = part.input) != null ? _a14 : "rawInput" in part ? part.rawInput : void 0 : part.input,
|
|
6954
7279
|
providerExecuted: part.providerExecuted,
|
|
6955
7280
|
...part.callProviderMetadata != null ? { providerOptions: part.callProviderMetadata } : {}
|
|
6956
7281
|
});
|
|
@@ -6966,11 +7291,14 @@ function convertToModelMessages(messages, options) {
|
|
|
6966
7291
|
type: "tool-result",
|
|
6967
7292
|
toolCallId: part.toolCallId,
|
|
6968
7293
|
toolName,
|
|
6969
|
-
output: createToolModelOutput({
|
|
7294
|
+
output: await createToolModelOutput({
|
|
7295
|
+
toolCallId: part.toolCallId,
|
|
7296
|
+
input: part.input,
|
|
6970
7297
|
output: part.state === "output-error" ? part.errorText : part.output,
|
|
6971
7298
|
tool: (_b = options == null ? void 0 : options.tools) == null ? void 0 : _b[toolName],
|
|
6972
7299
|
errorMode: part.state === "output-error" ? "json" : "none"
|
|
6973
|
-
})
|
|
7300
|
+
}),
|
|
7301
|
+
...part.callProviderMetadata != null ? { providerOptions: part.callProviderMetadata } : {}
|
|
6974
7302
|
});
|
|
6975
7303
|
}
|
|
6976
7304
|
}
|
|
@@ -6992,69 +7320,70 @@ function convertToModelMessages(messages, options) {
|
|
|
6992
7320
|
content
|
|
6993
7321
|
});
|
|
6994
7322
|
const toolParts = block.filter(
|
|
6995
|
-
(part) =>
|
|
7323
|
+
(part) => isToolUIPart(part) && part.providerExecuted !== true
|
|
6996
7324
|
);
|
|
6997
7325
|
if (toolParts.length > 0) {
|
|
6998
|
-
|
|
6999
|
-
|
|
7000
|
-
|
|
7001
|
-
(toolPart)
|
|
7002
|
-
|
|
7003
|
-
|
|
7004
|
-
|
|
7005
|
-
|
|
7006
|
-
|
|
7007
|
-
|
|
7008
|
-
|
|
7009
|
-
|
|
7326
|
+
{
|
|
7327
|
+
const content2 = [];
|
|
7328
|
+
for (const toolPart of toolParts) {
|
|
7329
|
+
if (((_d = toolPart.approval) == null ? void 0 : _d.approved) != null) {
|
|
7330
|
+
content2.push({
|
|
7331
|
+
type: "tool-approval-response",
|
|
7332
|
+
approvalId: toolPart.approval.id,
|
|
7333
|
+
approved: toolPart.approval.approved,
|
|
7334
|
+
reason: toolPart.approval.reason
|
|
7335
|
+
});
|
|
7336
|
+
}
|
|
7337
|
+
switch (toolPart.state) {
|
|
7338
|
+
case "output-denied": {
|
|
7339
|
+
content2.push({
|
|
7340
|
+
type: "tool-result",
|
|
7341
|
+
toolCallId: toolPart.toolCallId,
|
|
7342
|
+
toolName: getToolName(toolPart),
|
|
7343
|
+
output: {
|
|
7344
|
+
type: "error-text",
|
|
7345
|
+
value: (_e = toolPart.approval.reason) != null ? _e : "Tool execution denied."
|
|
7346
|
+
},
|
|
7347
|
+
...toolPart.callProviderMetadata != null ? { providerOptions: toolPart.callProviderMetadata } : {}
|
|
7010
7348
|
});
|
|
7349
|
+
break;
|
|
7011
7350
|
}
|
|
7012
|
-
|
|
7013
|
-
|
|
7014
|
-
|
|
7015
|
-
|
|
7016
|
-
|
|
7017
|
-
|
|
7018
|
-
|
|
7019
|
-
|
|
7020
|
-
value: (_b2 = toolPart.approval.reason) != null ? _b2 : "Tool execution denied."
|
|
7021
|
-
}
|
|
7022
|
-
});
|
|
7023
|
-
break;
|
|
7024
|
-
}
|
|
7025
|
-
case "output-error":
|
|
7026
|
-
case "output-available": {
|
|
7027
|
-
const toolName = getToolOrDynamicToolName(toolPart);
|
|
7028
|
-
outputs.push({
|
|
7029
|
-
type: "tool-result",
|
|
7351
|
+
case "output-error":
|
|
7352
|
+
case "output-available": {
|
|
7353
|
+
const toolName = getToolName(toolPart);
|
|
7354
|
+
content2.push({
|
|
7355
|
+
type: "tool-result",
|
|
7356
|
+
toolCallId: toolPart.toolCallId,
|
|
7357
|
+
toolName,
|
|
7358
|
+
output: await createToolModelOutput({
|
|
7030
7359
|
toolCallId: toolPart.toolCallId,
|
|
7031
|
-
|
|
7032
|
-
output:
|
|
7033
|
-
|
|
7034
|
-
|
|
7035
|
-
|
|
7036
|
-
|
|
7037
|
-
|
|
7038
|
-
|
|
7039
|
-
}
|
|
7360
|
+
input: toolPart.input,
|
|
7361
|
+
output: toolPart.state === "output-error" ? toolPart.errorText : toolPart.output,
|
|
7362
|
+
tool: (_f = options == null ? void 0 : options.tools) == null ? void 0 : _f[toolName],
|
|
7363
|
+
errorMode: toolPart.state === "output-error" ? "text" : "none"
|
|
7364
|
+
}),
|
|
7365
|
+
...toolPart.callProviderMetadata != null ? { providerOptions: toolPart.callProviderMetadata } : {}
|
|
7366
|
+
});
|
|
7367
|
+
break;
|
|
7040
7368
|
}
|
|
7041
|
-
return outputs;
|
|
7042
7369
|
}
|
|
7043
|
-
|
|
7044
|
-
|
|
7370
|
+
}
|
|
7371
|
+
modelMessages.push({
|
|
7372
|
+
role: "tool",
|
|
7373
|
+
content: content2
|
|
7374
|
+
});
|
|
7375
|
+
}
|
|
7045
7376
|
}
|
|
7046
7377
|
block = [];
|
|
7047
|
-
}
|
|
7048
|
-
var processBlock = processBlock2;
|
|
7049
|
-
let block = [];
|
|
7378
|
+
}
|
|
7050
7379
|
for (const part of message.parts) {
|
|
7051
|
-
if (isTextUIPart(part) || isReasoningUIPart(part) || isFileUIPart(part) ||
|
|
7380
|
+
if (isTextUIPart(part) || isReasoningUIPart(part) || isFileUIPart(part) || isToolUIPart(part) || isDataUIPart(part)) {
|
|
7052
7381
|
block.push(part);
|
|
7053
7382
|
} else if (part.type === "step-start") {
|
|
7054
|
-
|
|
7383
|
+
await processBlock();
|
|
7055
7384
|
}
|
|
7056
7385
|
}
|
|
7057
|
-
|
|
7386
|
+
await processBlock();
|
|
7058
7387
|
break;
|
|
7059
7388
|
}
|
|
7060
7389
|
break;
|
|
@@ -7070,14 +7399,13 @@ function convertToModelMessages(messages, options) {
|
|
|
7070
7399
|
}
|
|
7071
7400
|
return modelMessages;
|
|
7072
7401
|
}
|
|
7073
|
-
var convertToCoreMessages = convertToModelMessages;
|
|
7074
7402
|
|
|
7075
7403
|
// src/ui/validate-ui-messages.ts
|
|
7076
|
-
var
|
|
7077
|
-
var
|
|
7404
|
+
var import_provider23 = require("@ai-sdk/provider");
|
|
7405
|
+
var import_provider_utils22 = require("@ai-sdk/provider-utils");
|
|
7078
7406
|
var import_v48 = require("zod/v4");
|
|
7079
|
-
var uiMessagesSchema = (0,
|
|
7080
|
-
() => (0,
|
|
7407
|
+
var uiMessagesSchema = (0, import_provider_utils22.lazySchema)(
|
|
7408
|
+
() => (0, import_provider_utils22.zodSchema)(
|
|
7081
7409
|
import_v48.z.array(
|
|
7082
7410
|
import_v48.z.object({
|
|
7083
7411
|
id: import_v48.z.string(),
|
|
@@ -7351,13 +7679,13 @@ async function safeValidateUIMessages({
|
|
|
7351
7679
|
})
|
|
7352
7680
|
};
|
|
7353
7681
|
}
|
|
7354
|
-
const validatedMessages = await (0,
|
|
7682
|
+
const validatedMessages = await (0, import_provider_utils22.validateTypes)({
|
|
7355
7683
|
value: messages,
|
|
7356
7684
|
schema: uiMessagesSchema
|
|
7357
7685
|
});
|
|
7358
7686
|
if (metadataSchema) {
|
|
7359
7687
|
for (const message of validatedMessages) {
|
|
7360
|
-
await (0,
|
|
7688
|
+
await (0, import_provider_utils22.validateTypes)({
|
|
7361
7689
|
value: message.metadata,
|
|
7362
7690
|
schema: metadataSchema
|
|
7363
7691
|
});
|
|
@@ -7374,13 +7702,13 @@ async function safeValidateUIMessages({
|
|
|
7374
7702
|
if (!dataSchema) {
|
|
7375
7703
|
return {
|
|
7376
7704
|
success: false,
|
|
7377
|
-
error: new
|
|
7705
|
+
error: new import_provider23.TypeValidationError({
|
|
7378
7706
|
value: dataPart.data,
|
|
7379
7707
|
cause: `No data schema found for data part ${dataName}`
|
|
7380
7708
|
})
|
|
7381
7709
|
};
|
|
7382
7710
|
}
|
|
7383
|
-
await (0,
|
|
7711
|
+
await (0, import_provider_utils22.validateTypes)({
|
|
7384
7712
|
value: dataPart.data,
|
|
7385
7713
|
schema: dataSchema
|
|
7386
7714
|
});
|
|
@@ -7398,20 +7726,20 @@ async function safeValidateUIMessages({
|
|
|
7398
7726
|
if (!tool2) {
|
|
7399
7727
|
return {
|
|
7400
7728
|
success: false,
|
|
7401
|
-
error: new
|
|
7729
|
+
error: new import_provider23.TypeValidationError({
|
|
7402
7730
|
value: toolPart.input,
|
|
7403
7731
|
cause: `No tool schema found for tool part ${toolName}`
|
|
7404
7732
|
})
|
|
7405
7733
|
};
|
|
7406
7734
|
}
|
|
7407
7735
|
if (toolPart.state === "input-available" || toolPart.state === "output-available" || toolPart.state === "output-error") {
|
|
7408
|
-
await (0,
|
|
7736
|
+
await (0, import_provider_utils22.validateTypes)({
|
|
7409
7737
|
value: toolPart.input,
|
|
7410
7738
|
schema: tool2.inputSchema
|
|
7411
7739
|
});
|
|
7412
7740
|
}
|
|
7413
7741
|
if (toolPart.state === "output-available" && tool2.outputSchema) {
|
|
7414
|
-
await (0,
|
|
7742
|
+
await (0, import_provider_utils22.validateTypes)({
|
|
7415
7743
|
value: toolPart.output,
|
|
7416
7744
|
schema: tool2.outputSchema
|
|
7417
7745
|
});
|
|
@@ -7451,20 +7779,24 @@ async function validateUIMessages({
|
|
|
7451
7779
|
// src/agent/create-agent-ui-stream.ts
|
|
7452
7780
|
async function createAgentUIStream({
|
|
7453
7781
|
agent,
|
|
7454
|
-
|
|
7782
|
+
uiMessages,
|
|
7455
7783
|
options,
|
|
7784
|
+
abortSignal,
|
|
7785
|
+
experimental_transform,
|
|
7456
7786
|
...uiMessageStreamOptions
|
|
7457
7787
|
}) {
|
|
7458
7788
|
const validatedMessages = await validateUIMessages({
|
|
7459
|
-
messages,
|
|
7789
|
+
messages: uiMessages,
|
|
7460
7790
|
tools: agent.tools
|
|
7461
7791
|
});
|
|
7462
|
-
const modelMessages = convertToModelMessages(validatedMessages, {
|
|
7792
|
+
const modelMessages = await convertToModelMessages(validatedMessages, {
|
|
7463
7793
|
tools: agent.tools
|
|
7464
7794
|
});
|
|
7465
7795
|
const result = await agent.stream({
|
|
7466
7796
|
prompt: modelMessages,
|
|
7467
|
-
options
|
|
7797
|
+
options,
|
|
7798
|
+
abortSignal,
|
|
7799
|
+
experimental_transform
|
|
7468
7800
|
});
|
|
7469
7801
|
return result.toUIMessageStream(uiMessageStreamOptions);
|
|
7470
7802
|
}
|
|
@@ -7506,7 +7838,7 @@ async function pipeAgentUIStreamToResponse({
|
|
|
7506
7838
|
}
|
|
7507
7839
|
|
|
7508
7840
|
// src/embed/embed.ts
|
|
7509
|
-
var
|
|
7841
|
+
var import_provider_utils23 = require("@ai-sdk/provider-utils");
|
|
7510
7842
|
async function embed({
|
|
7511
7843
|
model: modelArg,
|
|
7512
7844
|
value,
|
|
@@ -7521,7 +7853,7 @@ async function embed({
|
|
|
7521
7853
|
maxRetries: maxRetriesArg,
|
|
7522
7854
|
abortSignal
|
|
7523
7855
|
});
|
|
7524
|
-
const headersWithUserAgent = (0,
|
|
7856
|
+
const headersWithUserAgent = (0, import_provider_utils23.withUserAgentSuffix)(
|
|
7525
7857
|
headers != null ? headers : {},
|
|
7526
7858
|
`ai/${VERSION}`
|
|
7527
7859
|
);
|
|
@@ -7544,7 +7876,7 @@ async function embed({
|
|
|
7544
7876
|
}),
|
|
7545
7877
|
tracer,
|
|
7546
7878
|
fn: async (span) => {
|
|
7547
|
-
const { embedding, usage, response, providerMetadata } = await retry(
|
|
7879
|
+
const { embedding, usage, warnings, response, providerMetadata } = await retry(
|
|
7548
7880
|
() => (
|
|
7549
7881
|
// nested spans to align with the embedMany telemetry data:
|
|
7550
7882
|
recordSpan({
|
|
@@ -7563,7 +7895,7 @@ async function embed({
|
|
|
7563
7895
|
}),
|
|
7564
7896
|
tracer,
|
|
7565
7897
|
fn: async (doEmbedSpan) => {
|
|
7566
|
-
var
|
|
7898
|
+
var _a14;
|
|
7567
7899
|
const modelResponse = await model.doEmbed({
|
|
7568
7900
|
values: [value],
|
|
7569
7901
|
abortSignal,
|
|
@@ -7571,7 +7903,7 @@ async function embed({
|
|
|
7571
7903
|
providerOptions
|
|
7572
7904
|
});
|
|
7573
7905
|
const embedding2 = modelResponse.embeddings[0];
|
|
7574
|
-
const usage2 = (
|
|
7906
|
+
const usage2 = (_a14 = modelResponse.usage) != null ? _a14 : { tokens: NaN };
|
|
7575
7907
|
doEmbedSpan.setAttributes(
|
|
7576
7908
|
await selectTelemetryAttributes({
|
|
7577
7909
|
telemetry,
|
|
@@ -7588,6 +7920,7 @@ async function embed({
|
|
|
7588
7920
|
return {
|
|
7589
7921
|
embedding: embedding2,
|
|
7590
7922
|
usage: usage2,
|
|
7923
|
+
warnings: modelResponse.warnings,
|
|
7591
7924
|
providerMetadata: modelResponse.providerMetadata,
|
|
7592
7925
|
response: modelResponse.response
|
|
7593
7926
|
};
|
|
@@ -7604,10 +7937,12 @@ async function embed({
|
|
|
7604
7937
|
}
|
|
7605
7938
|
})
|
|
7606
7939
|
);
|
|
7940
|
+
logWarnings({ warnings, provider: model.provider, model: model.modelId });
|
|
7607
7941
|
return new DefaultEmbedResult({
|
|
7608
7942
|
value,
|
|
7609
7943
|
embedding,
|
|
7610
7944
|
usage,
|
|
7945
|
+
warnings,
|
|
7611
7946
|
providerMetadata,
|
|
7612
7947
|
response
|
|
7613
7948
|
});
|
|
@@ -7619,13 +7954,14 @@ var DefaultEmbedResult = class {
|
|
|
7619
7954
|
this.value = options.value;
|
|
7620
7955
|
this.embedding = options.embedding;
|
|
7621
7956
|
this.usage = options.usage;
|
|
7957
|
+
this.warnings = options.warnings;
|
|
7622
7958
|
this.providerMetadata = options.providerMetadata;
|
|
7623
7959
|
this.response = options.response;
|
|
7624
7960
|
}
|
|
7625
7961
|
};
|
|
7626
7962
|
|
|
7627
7963
|
// src/embed/embed-many.ts
|
|
7628
|
-
var
|
|
7964
|
+
var import_provider_utils24 = require("@ai-sdk/provider-utils");
|
|
7629
7965
|
|
|
7630
7966
|
// src/util/split-array.ts
|
|
7631
7967
|
function splitArray(array2, chunkSize) {
|
|
@@ -7655,7 +7991,7 @@ async function embedMany({
|
|
|
7655
7991
|
maxRetries: maxRetriesArg,
|
|
7656
7992
|
abortSignal
|
|
7657
7993
|
});
|
|
7658
|
-
const headersWithUserAgent = (0,
|
|
7994
|
+
const headersWithUserAgent = (0, import_provider_utils24.withUserAgentSuffix)(
|
|
7659
7995
|
headers != null ? headers : {},
|
|
7660
7996
|
`ai/${VERSION}`
|
|
7661
7997
|
);
|
|
@@ -7681,64 +8017,63 @@ async function embedMany({
|
|
|
7681
8017
|
}),
|
|
7682
8018
|
tracer,
|
|
7683
8019
|
fn: async (span) => {
|
|
7684
|
-
var
|
|
8020
|
+
var _a14;
|
|
7685
8021
|
const [maxEmbeddingsPerCall, supportsParallelCalls] = await Promise.all([
|
|
7686
8022
|
model.maxEmbeddingsPerCall,
|
|
7687
8023
|
model.supportsParallelCalls
|
|
7688
8024
|
]);
|
|
7689
8025
|
if (maxEmbeddingsPerCall == null || maxEmbeddingsPerCall === Infinity) {
|
|
7690
|
-
const { embeddings: embeddings2, usage, response, providerMetadata: providerMetadata2 } = await retry(
|
|
7691
|
-
(
|
|
7692
|
-
|
|
7693
|
-
|
|
7694
|
-
|
|
7695
|
-
|
|
7696
|
-
|
|
7697
|
-
|
|
7698
|
-
|
|
7699
|
-
|
|
7700
|
-
|
|
7701
|
-
|
|
7702
|
-
|
|
7703
|
-
|
|
7704
|
-
input: () => values.map((value) => JSON.stringify(value))
|
|
7705
|
-
}
|
|
8026
|
+
const { embeddings: embeddings2, usage, warnings: warnings2, response, providerMetadata: providerMetadata2 } = await retry(() => {
|
|
8027
|
+
return recordSpan({
|
|
8028
|
+
name: "ai.embedMany.doEmbed",
|
|
8029
|
+
attributes: selectTelemetryAttributes({
|
|
8030
|
+
telemetry,
|
|
8031
|
+
attributes: {
|
|
8032
|
+
...assembleOperationName({
|
|
8033
|
+
operationId: "ai.embedMany.doEmbed",
|
|
8034
|
+
telemetry
|
|
8035
|
+
}),
|
|
8036
|
+
...baseTelemetryAttributes,
|
|
8037
|
+
// specific settings that only make sense on the outer level:
|
|
8038
|
+
"ai.values": {
|
|
8039
|
+
input: () => values.map((value) => JSON.stringify(value))
|
|
7706
8040
|
}
|
|
7707
|
-
}),
|
|
7708
|
-
tracer,
|
|
7709
|
-
fn: async (doEmbedSpan) => {
|
|
7710
|
-
var _a16;
|
|
7711
|
-
const modelResponse = await model.doEmbed({
|
|
7712
|
-
values,
|
|
7713
|
-
abortSignal,
|
|
7714
|
-
headers: headersWithUserAgent,
|
|
7715
|
-
providerOptions
|
|
7716
|
-
});
|
|
7717
|
-
const embeddings3 = modelResponse.embeddings;
|
|
7718
|
-
const usage2 = (_a16 = modelResponse.usage) != null ? _a16 : { tokens: NaN };
|
|
7719
|
-
doEmbedSpan.setAttributes(
|
|
7720
|
-
await selectTelemetryAttributes({
|
|
7721
|
-
telemetry,
|
|
7722
|
-
attributes: {
|
|
7723
|
-
"ai.embeddings": {
|
|
7724
|
-
output: () => embeddings3.map(
|
|
7725
|
-
(embedding) => JSON.stringify(embedding)
|
|
7726
|
-
)
|
|
7727
|
-
},
|
|
7728
|
-
"ai.usage.tokens": usage2.tokens
|
|
7729
|
-
}
|
|
7730
|
-
})
|
|
7731
|
-
);
|
|
7732
|
-
return {
|
|
7733
|
-
embeddings: embeddings3,
|
|
7734
|
-
usage: usage2,
|
|
7735
|
-
providerMetadata: modelResponse.providerMetadata,
|
|
7736
|
-
response: modelResponse.response
|
|
7737
|
-
};
|
|
7738
8041
|
}
|
|
7739
|
-
})
|
|
7740
|
-
|
|
7741
|
-
|
|
8042
|
+
}),
|
|
8043
|
+
tracer,
|
|
8044
|
+
fn: async (doEmbedSpan) => {
|
|
8045
|
+
var _a15;
|
|
8046
|
+
const modelResponse = await model.doEmbed({
|
|
8047
|
+
values,
|
|
8048
|
+
abortSignal,
|
|
8049
|
+
headers: headersWithUserAgent,
|
|
8050
|
+
providerOptions
|
|
8051
|
+
});
|
|
8052
|
+
const embeddings3 = modelResponse.embeddings;
|
|
8053
|
+
const usage2 = (_a15 = modelResponse.usage) != null ? _a15 : { tokens: NaN };
|
|
8054
|
+
doEmbedSpan.setAttributes(
|
|
8055
|
+
await selectTelemetryAttributes({
|
|
8056
|
+
telemetry,
|
|
8057
|
+
attributes: {
|
|
8058
|
+
"ai.embeddings": {
|
|
8059
|
+
output: () => embeddings3.map(
|
|
8060
|
+
(embedding) => JSON.stringify(embedding)
|
|
8061
|
+
)
|
|
8062
|
+
},
|
|
8063
|
+
"ai.usage.tokens": usage2.tokens
|
|
8064
|
+
}
|
|
8065
|
+
})
|
|
8066
|
+
);
|
|
8067
|
+
return {
|
|
8068
|
+
embeddings: embeddings3,
|
|
8069
|
+
usage: usage2,
|
|
8070
|
+
warnings: modelResponse.warnings,
|
|
8071
|
+
providerMetadata: modelResponse.providerMetadata,
|
|
8072
|
+
response: modelResponse.response
|
|
8073
|
+
};
|
|
8074
|
+
}
|
|
8075
|
+
});
|
|
8076
|
+
});
|
|
7742
8077
|
span.setAttributes(
|
|
7743
8078
|
await selectTelemetryAttributes({
|
|
7744
8079
|
telemetry,
|
|
@@ -7750,16 +8085,23 @@ async function embedMany({
|
|
|
7750
8085
|
}
|
|
7751
8086
|
})
|
|
7752
8087
|
);
|
|
8088
|
+
logWarnings({
|
|
8089
|
+
warnings: warnings2,
|
|
8090
|
+
provider: model.provider,
|
|
8091
|
+
model: model.modelId
|
|
8092
|
+
});
|
|
7753
8093
|
return new DefaultEmbedManyResult({
|
|
7754
8094
|
values,
|
|
7755
8095
|
embeddings: embeddings2,
|
|
7756
8096
|
usage,
|
|
8097
|
+
warnings: warnings2,
|
|
7757
8098
|
providerMetadata: providerMetadata2,
|
|
7758
8099
|
responses: [response]
|
|
7759
8100
|
});
|
|
7760
8101
|
}
|
|
7761
8102
|
const valueChunks = splitArray(values, maxEmbeddingsPerCall);
|
|
7762
8103
|
const embeddings = [];
|
|
8104
|
+
const warnings = [];
|
|
7763
8105
|
const responses = [];
|
|
7764
8106
|
let tokens = 0;
|
|
7765
8107
|
let providerMetadata;
|
|
@@ -7789,7 +8131,7 @@ async function embedMany({
|
|
|
7789
8131
|
}),
|
|
7790
8132
|
tracer,
|
|
7791
8133
|
fn: async (doEmbedSpan) => {
|
|
7792
|
-
var
|
|
8134
|
+
var _a15;
|
|
7793
8135
|
const modelResponse = await model.doEmbed({
|
|
7794
8136
|
values: chunk,
|
|
7795
8137
|
abortSignal,
|
|
@@ -7797,7 +8139,7 @@ async function embedMany({
|
|
|
7797
8139
|
providerOptions
|
|
7798
8140
|
});
|
|
7799
8141
|
const embeddings2 = modelResponse.embeddings;
|
|
7800
|
-
const usage = (
|
|
8142
|
+
const usage = (_a15 = modelResponse.usage) != null ? _a15 : { tokens: NaN };
|
|
7801
8143
|
doEmbedSpan.setAttributes(
|
|
7802
8144
|
await selectTelemetryAttributes({
|
|
7803
8145
|
telemetry,
|
|
@@ -7814,6 +8156,7 @@ async function embedMany({
|
|
|
7814
8156
|
return {
|
|
7815
8157
|
embeddings: embeddings2,
|
|
7816
8158
|
usage,
|
|
8159
|
+
warnings: modelResponse.warnings,
|
|
7817
8160
|
providerMetadata: modelResponse.providerMetadata,
|
|
7818
8161
|
response: modelResponse.response
|
|
7819
8162
|
};
|
|
@@ -7824,6 +8167,7 @@ async function embedMany({
|
|
|
7824
8167
|
);
|
|
7825
8168
|
for (const result of results) {
|
|
7826
8169
|
embeddings.push(...result.embeddings);
|
|
8170
|
+
warnings.push(...result.warnings);
|
|
7827
8171
|
responses.push(result.response);
|
|
7828
8172
|
tokens += result.usage.tokens;
|
|
7829
8173
|
if (result.providerMetadata) {
|
|
@@ -7834,7 +8178,7 @@ async function embedMany({
|
|
|
7834
8178
|
result.providerMetadata
|
|
7835
8179
|
)) {
|
|
7836
8180
|
providerMetadata[providerName] = {
|
|
7837
|
-
...(
|
|
8181
|
+
...(_a14 = providerMetadata[providerName]) != null ? _a14 : {},
|
|
7838
8182
|
...metadata
|
|
7839
8183
|
};
|
|
7840
8184
|
}
|
|
@@ -7853,10 +8197,16 @@ async function embedMany({
|
|
|
7853
8197
|
}
|
|
7854
8198
|
})
|
|
7855
8199
|
);
|
|
8200
|
+
logWarnings({
|
|
8201
|
+
warnings,
|
|
8202
|
+
provider: model.provider,
|
|
8203
|
+
model: model.modelId
|
|
8204
|
+
});
|
|
7856
8205
|
return new DefaultEmbedManyResult({
|
|
7857
8206
|
values,
|
|
7858
8207
|
embeddings,
|
|
7859
8208
|
usage: { tokens },
|
|
8209
|
+
warnings,
|
|
7860
8210
|
providerMetadata,
|
|
7861
8211
|
responses
|
|
7862
8212
|
});
|
|
@@ -7868,16 +8218,17 @@ var DefaultEmbedManyResult = class {
|
|
|
7868
8218
|
this.values = options.values;
|
|
7869
8219
|
this.embeddings = options.embeddings;
|
|
7870
8220
|
this.usage = options.usage;
|
|
8221
|
+
this.warnings = options.warnings;
|
|
7871
8222
|
this.providerMetadata = options.providerMetadata;
|
|
7872
8223
|
this.responses = options.responses;
|
|
7873
8224
|
}
|
|
7874
8225
|
};
|
|
7875
8226
|
|
|
7876
8227
|
// src/generate-image/generate-image.ts
|
|
7877
|
-
var
|
|
8228
|
+
var import_provider_utils25 = require("@ai-sdk/provider-utils");
|
|
7878
8229
|
async function generateImage({
|
|
7879
|
-
model,
|
|
7880
|
-
prompt,
|
|
8230
|
+
model: modelArg,
|
|
8231
|
+
prompt: promptArg,
|
|
7881
8232
|
n = 1,
|
|
7882
8233
|
maxImagesPerCall,
|
|
7883
8234
|
size,
|
|
@@ -7888,15 +8239,9 @@ async function generateImage({
|
|
|
7888
8239
|
abortSignal,
|
|
7889
8240
|
headers
|
|
7890
8241
|
}) {
|
|
7891
|
-
var
|
|
7892
|
-
|
|
7893
|
-
|
|
7894
|
-
version: model.specificationVersion,
|
|
7895
|
-
provider: model.provider,
|
|
7896
|
-
modelId: model.modelId
|
|
7897
|
-
});
|
|
7898
|
-
}
|
|
7899
|
-
const headersWithUserAgent = (0, import_provider_utils23.withUserAgentSuffix)(
|
|
8242
|
+
var _a14, _b;
|
|
8243
|
+
const model = resolveImageModel(modelArg);
|
|
8244
|
+
const headersWithUserAgent = (0, import_provider_utils25.withUserAgentSuffix)(
|
|
7900
8245
|
headers != null ? headers : {},
|
|
7901
8246
|
`ai/${VERSION}`
|
|
7902
8247
|
);
|
|
@@ -7904,7 +8249,7 @@ async function generateImage({
|
|
|
7904
8249
|
maxRetries: maxRetriesArg,
|
|
7905
8250
|
abortSignal
|
|
7906
8251
|
});
|
|
7907
|
-
const maxImagesPerCallWithDefault = (
|
|
8252
|
+
const maxImagesPerCallWithDefault = (_a14 = maxImagesPerCall != null ? maxImagesPerCall : await invokeModelMaxImagesPerCall(model)) != null ? _a14 : 1;
|
|
7908
8253
|
const callCount = Math.ceil(n / maxImagesPerCallWithDefault);
|
|
7909
8254
|
const callImageCounts = Array.from({ length: callCount }, (_, i) => {
|
|
7910
8255
|
if (i < callCount - 1) {
|
|
@@ -7915,9 +8260,12 @@ async function generateImage({
|
|
|
7915
8260
|
});
|
|
7916
8261
|
const results = await Promise.all(
|
|
7917
8262
|
callImageCounts.map(
|
|
7918
|
-
async (callImageCount) => retry(
|
|
7919
|
-
|
|
8263
|
+
async (callImageCount) => retry(() => {
|
|
8264
|
+
const { prompt, files, mask } = normalizePrompt(promptArg);
|
|
8265
|
+
return model.doGenerate({
|
|
7920
8266
|
prompt,
|
|
8267
|
+
files,
|
|
8268
|
+
mask,
|
|
7921
8269
|
n: callImageCount,
|
|
7922
8270
|
abortSignal,
|
|
7923
8271
|
headers: headersWithUserAgent,
|
|
@@ -7925,8 +8273,8 @@ async function generateImage({
|
|
|
7925
8273
|
aspectRatio,
|
|
7926
8274
|
seed,
|
|
7927
8275
|
providerOptions: providerOptions != null ? providerOptions : {}
|
|
7928
|
-
})
|
|
7929
|
-
)
|
|
8276
|
+
});
|
|
8277
|
+
})
|
|
7930
8278
|
)
|
|
7931
8279
|
);
|
|
7932
8280
|
const images = [];
|
|
@@ -7942,13 +8290,13 @@ async function generateImage({
|
|
|
7942
8290
|
images.push(
|
|
7943
8291
|
...result.images.map(
|
|
7944
8292
|
(image) => {
|
|
7945
|
-
var
|
|
8293
|
+
var _a15;
|
|
7946
8294
|
return new DefaultGeneratedFile({
|
|
7947
8295
|
data: image,
|
|
7948
|
-
mediaType: (
|
|
8296
|
+
mediaType: (_a15 = detectMediaType({
|
|
7949
8297
|
data: image,
|
|
7950
8298
|
signatures: imageMediaTypeSignatures
|
|
7951
|
-
})) != null ?
|
|
8299
|
+
})) != null ? _a15 : "image/png"
|
|
7952
8300
|
});
|
|
7953
8301
|
}
|
|
7954
8302
|
)
|
|
@@ -7959,10 +8307,26 @@ async function generateImage({
|
|
|
7959
8307
|
}
|
|
7960
8308
|
if (result.providerMetadata) {
|
|
7961
8309
|
for (const [providerName, metadata] of Object.entries(result.providerMetadata)) {
|
|
7962
|
-
(
|
|
7963
|
-
|
|
7964
|
-
|
|
7965
|
-
|
|
8310
|
+
if (providerName === "gateway") {
|
|
8311
|
+
const currentEntry = providerMetadata[providerName];
|
|
8312
|
+
if (currentEntry != null && typeof currentEntry === "object") {
|
|
8313
|
+
providerMetadata[providerName] = {
|
|
8314
|
+
...currentEntry,
|
|
8315
|
+
...metadata
|
|
8316
|
+
};
|
|
8317
|
+
} else {
|
|
8318
|
+
providerMetadata[providerName] = metadata;
|
|
8319
|
+
}
|
|
8320
|
+
const imagesValue = providerMetadata[providerName].images;
|
|
8321
|
+
if (Array.isArray(imagesValue) && imagesValue.length === 0) {
|
|
8322
|
+
delete providerMetadata[providerName].images;
|
|
8323
|
+
}
|
|
8324
|
+
} else {
|
|
8325
|
+
(_b = providerMetadata[providerName]) != null ? _b : providerMetadata[providerName] = { images: [] };
|
|
8326
|
+
providerMetadata[providerName].images.push(
|
|
8327
|
+
...result.providerMetadata[providerName].images
|
|
8328
|
+
);
|
|
8329
|
+
}
|
|
7966
8330
|
}
|
|
7967
8331
|
}
|
|
7968
8332
|
responses.push(result.response);
|
|
@@ -8000,9 +8364,53 @@ async function invokeModelMaxImagesPerCall(model) {
|
|
|
8000
8364
|
modelId: model.modelId
|
|
8001
8365
|
});
|
|
8002
8366
|
}
|
|
8367
|
+
function normalizePrompt(prompt) {
|
|
8368
|
+
if (typeof prompt === "string") {
|
|
8369
|
+
return { prompt, files: void 0, mask: void 0 };
|
|
8370
|
+
}
|
|
8371
|
+
return {
|
|
8372
|
+
prompt: prompt.text,
|
|
8373
|
+
files: prompt.images.map(toImageModelV3File),
|
|
8374
|
+
mask: prompt.mask ? toImageModelV3File(prompt.mask) : void 0
|
|
8375
|
+
};
|
|
8376
|
+
}
|
|
8377
|
+
function toImageModelV3File(dataContent) {
|
|
8378
|
+
if (typeof dataContent === "string" && dataContent.startsWith("http")) {
|
|
8379
|
+
return {
|
|
8380
|
+
type: "url",
|
|
8381
|
+
url: dataContent
|
|
8382
|
+
};
|
|
8383
|
+
}
|
|
8384
|
+
if (typeof dataContent === "string" && dataContent.startsWith("data:")) {
|
|
8385
|
+
const { mediaType: dataUrlMediaType, base64Content } = splitDataUrl(dataContent);
|
|
8386
|
+
if (base64Content != null) {
|
|
8387
|
+
const uint8Data2 = (0, import_provider_utils25.convertBase64ToUint8Array)(base64Content);
|
|
8388
|
+
return {
|
|
8389
|
+
type: "file",
|
|
8390
|
+
data: uint8Data2,
|
|
8391
|
+
mediaType: dataUrlMediaType || detectMediaType({
|
|
8392
|
+
data: uint8Data2,
|
|
8393
|
+
signatures: imageMediaTypeSignatures
|
|
8394
|
+
}) || "image/png"
|
|
8395
|
+
};
|
|
8396
|
+
}
|
|
8397
|
+
}
|
|
8398
|
+
const uint8Data = convertDataContentToUint8Array(dataContent);
|
|
8399
|
+
return {
|
|
8400
|
+
type: "file",
|
|
8401
|
+
data: uint8Data,
|
|
8402
|
+
mediaType: detectMediaType({
|
|
8403
|
+
data: uint8Data,
|
|
8404
|
+
signatures: imageMediaTypeSignatures
|
|
8405
|
+
}) || "image/png"
|
|
8406
|
+
};
|
|
8407
|
+
}
|
|
8408
|
+
|
|
8409
|
+
// src/generate-image/index.ts
|
|
8410
|
+
var experimental_generateImage = generateImage;
|
|
8003
8411
|
|
|
8004
8412
|
// src/generate-object/generate-object.ts
|
|
8005
|
-
var
|
|
8413
|
+
var import_provider_utils28 = require("@ai-sdk/provider-utils");
|
|
8006
8414
|
|
|
8007
8415
|
// src/generate-text/extract-reasoning-content.ts
|
|
8008
8416
|
function extractReasoningContent(content) {
|
|
@@ -8013,8 +8421,8 @@ function extractReasoningContent(content) {
|
|
|
8013
8421
|
}
|
|
8014
8422
|
|
|
8015
8423
|
// src/generate-object/output-strategy.ts
|
|
8016
|
-
var
|
|
8017
|
-
var
|
|
8424
|
+
var import_provider24 = require("@ai-sdk/provider");
|
|
8425
|
+
var import_provider_utils26 = require("@ai-sdk/provider-utils");
|
|
8018
8426
|
var noSchemaOutputStrategy = {
|
|
8019
8427
|
type: "no-schema",
|
|
8020
8428
|
jsonSchema: async () => void 0,
|
|
@@ -8034,7 +8442,7 @@ var noSchemaOutputStrategy = {
|
|
|
8034
8442
|
} : { success: true, value };
|
|
8035
8443
|
},
|
|
8036
8444
|
createElementStream() {
|
|
8037
|
-
throw new
|
|
8445
|
+
throw new import_provider24.UnsupportedFunctionalityError({
|
|
8038
8446
|
functionality: "element streams in no-schema mode"
|
|
8039
8447
|
});
|
|
8040
8448
|
}
|
|
@@ -8053,10 +8461,10 @@ var objectOutputStrategy = (schema) => ({
|
|
|
8053
8461
|
};
|
|
8054
8462
|
},
|
|
8055
8463
|
async validateFinalResult(value) {
|
|
8056
|
-
return (0,
|
|
8464
|
+
return (0, import_provider_utils26.safeValidateTypes)({ value, schema });
|
|
8057
8465
|
},
|
|
8058
8466
|
createElementStream() {
|
|
8059
|
-
throw new
|
|
8467
|
+
throw new import_provider24.UnsupportedFunctionalityError({
|
|
8060
8468
|
functionality: "element streams in object mode"
|
|
8061
8469
|
});
|
|
8062
8470
|
}
|
|
@@ -8085,11 +8493,11 @@ var arrayOutputStrategy = (schema) => {
|
|
|
8085
8493
|
isFirstDelta,
|
|
8086
8494
|
isFinalDelta
|
|
8087
8495
|
}) {
|
|
8088
|
-
var
|
|
8089
|
-
if (!(0,
|
|
8496
|
+
var _a14;
|
|
8497
|
+
if (!(0, import_provider24.isJSONObject)(value) || !(0, import_provider24.isJSONArray)(value.elements)) {
|
|
8090
8498
|
return {
|
|
8091
8499
|
success: false,
|
|
8092
|
-
error: new
|
|
8500
|
+
error: new import_provider24.TypeValidationError({
|
|
8093
8501
|
value,
|
|
8094
8502
|
cause: "value must be an object that contains an array of elements"
|
|
8095
8503
|
})
|
|
@@ -8099,7 +8507,7 @@ var arrayOutputStrategy = (schema) => {
|
|
|
8099
8507
|
const resultArray = [];
|
|
8100
8508
|
for (let i = 0; i < inputArray.length; i++) {
|
|
8101
8509
|
const element = inputArray[i];
|
|
8102
|
-
const result = await (0,
|
|
8510
|
+
const result = await (0, import_provider_utils26.safeValidateTypes)({ value: element, schema });
|
|
8103
8511
|
if (i === inputArray.length - 1 && !isFinalDelta) {
|
|
8104
8512
|
continue;
|
|
8105
8513
|
}
|
|
@@ -8108,7 +8516,7 @@ var arrayOutputStrategy = (schema) => {
|
|
|
8108
8516
|
}
|
|
8109
8517
|
resultArray.push(result.value);
|
|
8110
8518
|
}
|
|
8111
|
-
const publishedElementCount = (
|
|
8519
|
+
const publishedElementCount = (_a14 = latestObject == null ? void 0 : latestObject.length) != null ? _a14 : 0;
|
|
8112
8520
|
let textDelta = "";
|
|
8113
8521
|
if (isFirstDelta) {
|
|
8114
8522
|
textDelta += "[";
|
|
@@ -8129,10 +8537,10 @@ var arrayOutputStrategy = (schema) => {
|
|
|
8129
8537
|
};
|
|
8130
8538
|
},
|
|
8131
8539
|
async validateFinalResult(value) {
|
|
8132
|
-
if (!(0,
|
|
8540
|
+
if (!(0, import_provider24.isJSONObject)(value) || !(0, import_provider24.isJSONArray)(value.elements)) {
|
|
8133
8541
|
return {
|
|
8134
8542
|
success: false,
|
|
8135
|
-
error: new
|
|
8543
|
+
error: new import_provider24.TypeValidationError({
|
|
8136
8544
|
value,
|
|
8137
8545
|
cause: "value must be an object that contains an array of elements"
|
|
8138
8546
|
})
|
|
@@ -8140,7 +8548,7 @@ var arrayOutputStrategy = (schema) => {
|
|
|
8140
8548
|
}
|
|
8141
8549
|
const inputArray = value.elements;
|
|
8142
8550
|
for (const element of inputArray) {
|
|
8143
|
-
const result = await (0,
|
|
8551
|
+
const result = await (0, import_provider_utils26.safeValidateTypes)({ value: element, schema });
|
|
8144
8552
|
if (!result.success) {
|
|
8145
8553
|
return result;
|
|
8146
8554
|
}
|
|
@@ -8195,10 +8603,10 @@ var enumOutputStrategy = (enumValues) => {
|
|
|
8195
8603
|
additionalProperties: false
|
|
8196
8604
|
}),
|
|
8197
8605
|
async validateFinalResult(value) {
|
|
8198
|
-
if (!(0,
|
|
8606
|
+
if (!(0, import_provider24.isJSONObject)(value) || typeof value.result !== "string") {
|
|
8199
8607
|
return {
|
|
8200
8608
|
success: false,
|
|
8201
|
-
error: new
|
|
8609
|
+
error: new import_provider24.TypeValidationError({
|
|
8202
8610
|
value,
|
|
8203
8611
|
cause: 'value must be an object that contains a string in the "result" property.'
|
|
8204
8612
|
})
|
|
@@ -8207,17 +8615,17 @@ var enumOutputStrategy = (enumValues) => {
|
|
|
8207
8615
|
const result = value.result;
|
|
8208
8616
|
return enumValues.includes(result) ? { success: true, value: result } : {
|
|
8209
8617
|
success: false,
|
|
8210
|
-
error: new
|
|
8618
|
+
error: new import_provider24.TypeValidationError({
|
|
8211
8619
|
value,
|
|
8212
8620
|
cause: "value must be a string in the enum"
|
|
8213
8621
|
})
|
|
8214
8622
|
};
|
|
8215
8623
|
},
|
|
8216
8624
|
async validatePartialResult({ value, textDelta }) {
|
|
8217
|
-
if (!(0,
|
|
8625
|
+
if (!(0, import_provider24.isJSONObject)(value) || typeof value.result !== "string") {
|
|
8218
8626
|
return {
|
|
8219
8627
|
success: false,
|
|
8220
|
-
error: new
|
|
8628
|
+
error: new import_provider24.TypeValidationError({
|
|
8221
8629
|
value,
|
|
8222
8630
|
cause: 'value must be an object that contains a string in the "result" property.'
|
|
8223
8631
|
})
|
|
@@ -8230,7 +8638,7 @@ var enumOutputStrategy = (enumValues) => {
|
|
|
8230
8638
|
if (value.result.length === 0 || possibleEnumValues.length === 0) {
|
|
8231
8639
|
return {
|
|
8232
8640
|
success: false,
|
|
8233
|
-
error: new
|
|
8641
|
+
error: new import_provider24.TypeValidationError({
|
|
8234
8642
|
value,
|
|
8235
8643
|
cause: "value must be a string in the enum"
|
|
8236
8644
|
})
|
|
@@ -8245,7 +8653,7 @@ var enumOutputStrategy = (enumValues) => {
|
|
|
8245
8653
|
};
|
|
8246
8654
|
},
|
|
8247
8655
|
createElementStream() {
|
|
8248
|
-
throw new
|
|
8656
|
+
throw new import_provider24.UnsupportedFunctionalityError({
|
|
8249
8657
|
functionality: "element streams in enum mode"
|
|
8250
8658
|
});
|
|
8251
8659
|
}
|
|
@@ -8258,9 +8666,9 @@ function getOutputStrategy({
|
|
|
8258
8666
|
}) {
|
|
8259
8667
|
switch (output) {
|
|
8260
8668
|
case "object":
|
|
8261
|
-
return objectOutputStrategy((0,
|
|
8669
|
+
return objectOutputStrategy((0, import_provider_utils26.asSchema)(schema));
|
|
8262
8670
|
case "array":
|
|
8263
|
-
return arrayOutputStrategy((0,
|
|
8671
|
+
return arrayOutputStrategy((0, import_provider_utils26.asSchema)(schema));
|
|
8264
8672
|
case "enum":
|
|
8265
8673
|
return enumOutputStrategy(enumValues);
|
|
8266
8674
|
case "no-schema":
|
|
@@ -8273,10 +8681,10 @@ function getOutputStrategy({
|
|
|
8273
8681
|
}
|
|
8274
8682
|
|
|
8275
8683
|
// src/generate-object/parse-and-validate-object-result.ts
|
|
8276
|
-
var
|
|
8277
|
-
var
|
|
8684
|
+
var import_provider25 = require("@ai-sdk/provider");
|
|
8685
|
+
var import_provider_utils27 = require("@ai-sdk/provider-utils");
|
|
8278
8686
|
async function parseAndValidateObjectResult(result, outputStrategy, context) {
|
|
8279
|
-
const parseResult = await (0,
|
|
8687
|
+
const parseResult = await (0, import_provider_utils27.safeParseJSON)({ text: result });
|
|
8280
8688
|
if (!parseResult.success) {
|
|
8281
8689
|
throw new NoObjectGeneratedError({
|
|
8282
8690
|
message: "No object generated: could not parse the response.",
|
|
@@ -8311,7 +8719,7 @@ async function parseAndValidateObjectResultWithRepair(result, outputStrategy, re
|
|
|
8311
8719
|
try {
|
|
8312
8720
|
return await parseAndValidateObjectResult(result, outputStrategy, context);
|
|
8313
8721
|
} catch (error) {
|
|
8314
|
-
if (repairText != null && NoObjectGeneratedError.isInstance(error) && (
|
|
8722
|
+
if (repairText != null && NoObjectGeneratedError.isInstance(error) && (import_provider25.JSONParseError.isInstance(error.cause) || import_provider25.TypeValidationError.isInstance(error.cause))) {
|
|
8315
8723
|
const repairedText = await repairText({
|
|
8316
8724
|
text: result,
|
|
8317
8725
|
error: error.cause
|
|
@@ -8448,7 +8856,7 @@ function validateObjectGenerationInput({
|
|
|
8448
8856
|
}
|
|
8449
8857
|
|
|
8450
8858
|
// src/generate-object/generate-object.ts
|
|
8451
|
-
var originalGenerateId3 = (0,
|
|
8859
|
+
var originalGenerateId3 = (0, import_provider_utils28.createIdGenerator)({ prefix: "aiobj", size: 24 });
|
|
8452
8860
|
async function generateObject(options) {
|
|
8453
8861
|
const {
|
|
8454
8862
|
model: modelArg,
|
|
@@ -8493,7 +8901,7 @@ async function generateObject(options) {
|
|
|
8493
8901
|
enumValues
|
|
8494
8902
|
});
|
|
8495
8903
|
const callSettings = prepareCallSettings(settings);
|
|
8496
|
-
const headersWithUserAgent = (0,
|
|
8904
|
+
const headersWithUserAgent = (0, import_provider_utils28.withUserAgentSuffix)(
|
|
8497
8905
|
headers != null ? headers : {},
|
|
8498
8906
|
`ai/${VERSION}`
|
|
8499
8907
|
);
|
|
@@ -8528,7 +8936,7 @@ async function generateObject(options) {
|
|
|
8528
8936
|
}),
|
|
8529
8937
|
tracer,
|
|
8530
8938
|
fn: async (span) => {
|
|
8531
|
-
var
|
|
8939
|
+
var _a14;
|
|
8532
8940
|
let result;
|
|
8533
8941
|
let finishReason;
|
|
8534
8942
|
let usage;
|
|
@@ -8574,7 +8982,7 @@ async function generateObject(options) {
|
|
|
8574
8982
|
}),
|
|
8575
8983
|
tracer,
|
|
8576
8984
|
fn: async (span2) => {
|
|
8577
|
-
var
|
|
8985
|
+
var _a15, _b, _c, _d, _e, _f, _g, _h;
|
|
8578
8986
|
const result2 = await model.doGenerate({
|
|
8579
8987
|
responseFormat: {
|
|
8580
8988
|
type: "json",
|
|
@@ -8589,7 +8997,7 @@ async function generateObject(options) {
|
|
|
8589
8997
|
headers: headersWithUserAgent
|
|
8590
8998
|
});
|
|
8591
8999
|
const responseData = {
|
|
8592
|
-
id: (_b = (
|
|
9000
|
+
id: (_b = (_a15 = result2.response) == null ? void 0 : _a15.id) != null ? _b : generateId2(),
|
|
8593
9001
|
timestamp: (_d = (_c = result2.response) == null ? void 0 : _c.timestamp) != null ? _d : currentDate(),
|
|
8594
9002
|
modelId: (_f = (_e = result2.response) == null ? void 0 : _e.modelId) != null ? _f : model.modelId,
|
|
8595
9003
|
headers: (_g = result2.response) == null ? void 0 : _g.headers,
|
|
@@ -8601,15 +9009,15 @@ async function generateObject(options) {
|
|
|
8601
9009
|
throw new NoObjectGeneratedError({
|
|
8602
9010
|
message: "No object generated: the model did not return a response.",
|
|
8603
9011
|
response: responseData,
|
|
8604
|
-
usage: result2.usage,
|
|
8605
|
-
finishReason: result2.finishReason
|
|
9012
|
+
usage: asLanguageModelUsage(result2.usage),
|
|
9013
|
+
finishReason: result2.finishReason.unified
|
|
8606
9014
|
});
|
|
8607
9015
|
}
|
|
8608
9016
|
span2.setAttributes(
|
|
8609
9017
|
await selectTelemetryAttributes({
|
|
8610
9018
|
telemetry,
|
|
8611
9019
|
attributes: {
|
|
8612
|
-
"ai.response.finishReason": result2.finishReason,
|
|
9020
|
+
"ai.response.finishReason": result2.finishReason.unified,
|
|
8613
9021
|
"ai.response.object": { output: () => text2 },
|
|
8614
9022
|
"ai.response.id": responseData.id,
|
|
8615
9023
|
"ai.response.model": responseData.modelId,
|
|
@@ -8618,14 +9026,16 @@ async function generateObject(options) {
|
|
|
8618
9026
|
result2.providerMetadata
|
|
8619
9027
|
),
|
|
8620
9028
|
// TODO rename telemetry attributes to inputTokens and outputTokens
|
|
8621
|
-
"ai.usage.promptTokens": result2.usage.inputTokens,
|
|
8622
|
-
"ai.usage.completionTokens": result2.usage.outputTokens,
|
|
9029
|
+
"ai.usage.promptTokens": result2.usage.inputTokens.total,
|
|
9030
|
+
"ai.usage.completionTokens": result2.usage.outputTokens.total,
|
|
8623
9031
|
// standardized gen-ai llm span attributes:
|
|
8624
|
-
"gen_ai.response.finish_reasons": [
|
|
9032
|
+
"gen_ai.response.finish_reasons": [
|
|
9033
|
+
result2.finishReason.unified
|
|
9034
|
+
],
|
|
8625
9035
|
"gen_ai.response.id": responseData.id,
|
|
8626
9036
|
"gen_ai.response.model": responseData.modelId,
|
|
8627
|
-
"gen_ai.usage.input_tokens": result2.usage.inputTokens,
|
|
8628
|
-
"gen_ai.usage.output_tokens": result2.usage.outputTokens
|
|
9037
|
+
"gen_ai.usage.input_tokens": result2.usage.inputTokens.total,
|
|
9038
|
+
"gen_ai.usage.output_tokens": result2.usage.outputTokens.total
|
|
8629
9039
|
}
|
|
8630
9040
|
})
|
|
8631
9041
|
);
|
|
@@ -8639,11 +9049,11 @@ async function generateObject(options) {
|
|
|
8639
9049
|
})
|
|
8640
9050
|
);
|
|
8641
9051
|
result = generateResult.objectText;
|
|
8642
|
-
finishReason = generateResult.finishReason;
|
|
8643
|
-
usage = generateResult.usage;
|
|
9052
|
+
finishReason = generateResult.finishReason.unified;
|
|
9053
|
+
usage = asLanguageModelUsage(generateResult.usage);
|
|
8644
9054
|
warnings = generateResult.warnings;
|
|
8645
9055
|
resultProviderMetadata = generateResult.providerMetadata;
|
|
8646
|
-
request = (
|
|
9056
|
+
request = (_a14 = generateResult.request) != null ? _a14 : {};
|
|
8647
9057
|
response = generateResult.responseData;
|
|
8648
9058
|
reasoning = generateResult.reasoning;
|
|
8649
9059
|
logWarnings({
|
|
@@ -8706,9 +9116,9 @@ var DefaultGenerateObjectResult = class {
|
|
|
8706
9116
|
this.reasoning = options.reasoning;
|
|
8707
9117
|
}
|
|
8708
9118
|
toJsonResponse(init) {
|
|
8709
|
-
var
|
|
9119
|
+
var _a14;
|
|
8710
9120
|
return new Response(JSON.stringify(this.object), {
|
|
8711
|
-
status: (
|
|
9121
|
+
status: (_a14 = init == null ? void 0 : init.status) != null ? _a14 : 200,
|
|
8712
9122
|
headers: prepareHeaders(init == null ? void 0 : init.headers, {
|
|
8713
9123
|
"content-type": "application/json; charset=utf-8"
|
|
8714
9124
|
})
|
|
@@ -8717,7 +9127,7 @@ var DefaultGenerateObjectResult = class {
|
|
|
8717
9127
|
};
|
|
8718
9128
|
|
|
8719
9129
|
// src/generate-object/stream-object.ts
|
|
8720
|
-
var
|
|
9130
|
+
var import_provider_utils30 = require("@ai-sdk/provider-utils");
|
|
8721
9131
|
|
|
8722
9132
|
// src/util/cosine-similarity.ts
|
|
8723
9133
|
function cosineSimilarity(vector1, vector2) {
|
|
@@ -8827,15 +9237,15 @@ var SerialJobExecutor = class {
|
|
|
8827
9237
|
};
|
|
8828
9238
|
|
|
8829
9239
|
// src/util/simulate-readable-stream.ts
|
|
8830
|
-
var
|
|
9240
|
+
var import_provider_utils29 = require("@ai-sdk/provider-utils");
|
|
8831
9241
|
function simulateReadableStream({
|
|
8832
9242
|
chunks,
|
|
8833
9243
|
initialDelayInMs = 0,
|
|
8834
9244
|
chunkDelayInMs = 0,
|
|
8835
9245
|
_internal
|
|
8836
9246
|
}) {
|
|
8837
|
-
var
|
|
8838
|
-
const delay2 = (
|
|
9247
|
+
var _a14;
|
|
9248
|
+
const delay2 = (_a14 = _internal == null ? void 0 : _internal.delay) != null ? _a14 : import_provider_utils29.delay;
|
|
8839
9249
|
let index = 0;
|
|
8840
9250
|
return new ReadableStream({
|
|
8841
9251
|
async pull(controller) {
|
|
@@ -8850,7 +9260,7 @@ function simulateReadableStream({
|
|
|
8850
9260
|
}
|
|
8851
9261
|
|
|
8852
9262
|
// src/generate-object/stream-object.ts
|
|
8853
|
-
var originalGenerateId4 = (0,
|
|
9263
|
+
var originalGenerateId4 = (0, import_provider_utils30.createIdGenerator)({ prefix: "aiobj", size: 24 });
|
|
8854
9264
|
function streamObject(options) {
|
|
8855
9265
|
const {
|
|
8856
9266
|
model,
|
|
@@ -8940,13 +9350,13 @@ var DefaultStreamObjectResult = class {
|
|
|
8940
9350
|
currentDate,
|
|
8941
9351
|
now: now2
|
|
8942
9352
|
}) {
|
|
8943
|
-
this._object = new DelayedPromise();
|
|
8944
|
-
this._usage = new DelayedPromise();
|
|
8945
|
-
this._providerMetadata = new DelayedPromise();
|
|
8946
|
-
this._warnings = new DelayedPromise();
|
|
8947
|
-
this._request = new DelayedPromise();
|
|
8948
|
-
this._response = new DelayedPromise();
|
|
8949
|
-
this._finishReason = new DelayedPromise();
|
|
9353
|
+
this._object = new import_provider_utils30.DelayedPromise();
|
|
9354
|
+
this._usage = new import_provider_utils30.DelayedPromise();
|
|
9355
|
+
this._providerMetadata = new import_provider_utils30.DelayedPromise();
|
|
9356
|
+
this._warnings = new import_provider_utils30.DelayedPromise();
|
|
9357
|
+
this._request = new import_provider_utils30.DelayedPromise();
|
|
9358
|
+
this._response = new import_provider_utils30.DelayedPromise();
|
|
9359
|
+
this._finishReason = new import_provider_utils30.DelayedPromise();
|
|
8950
9360
|
const model = resolveLanguageModel(modelArg);
|
|
8951
9361
|
const { maxRetries, retry } = prepareRetries({
|
|
8952
9362
|
maxRetries: maxRetriesArg,
|
|
@@ -9074,11 +9484,7 @@ var DefaultStreamObjectResult = class {
|
|
|
9074
9484
|
);
|
|
9075
9485
|
self._request.resolve(request != null ? request : {});
|
|
9076
9486
|
let warnings;
|
|
9077
|
-
let usage =
|
|
9078
|
-
inputTokens: void 0,
|
|
9079
|
-
outputTokens: void 0,
|
|
9080
|
-
totalTokens: void 0
|
|
9081
|
-
};
|
|
9487
|
+
let usage = createNullLanguageModelUsage();
|
|
9082
9488
|
let finishReason;
|
|
9083
9489
|
let providerMetadata;
|
|
9084
9490
|
let object2;
|
|
@@ -9097,7 +9503,7 @@ var DefaultStreamObjectResult = class {
|
|
|
9097
9503
|
const transformedStream = stream.pipeThrough(new TransformStream(transformer)).pipeThrough(
|
|
9098
9504
|
new TransformStream({
|
|
9099
9505
|
async transform(chunk, controller) {
|
|
9100
|
-
var
|
|
9506
|
+
var _a14, _b, _c;
|
|
9101
9507
|
if (typeof chunk === "object" && chunk.type === "stream-start") {
|
|
9102
9508
|
warnings = chunk.warnings;
|
|
9103
9509
|
return;
|
|
@@ -9147,7 +9553,7 @@ var DefaultStreamObjectResult = class {
|
|
|
9147
9553
|
switch (chunk.type) {
|
|
9148
9554
|
case "response-metadata": {
|
|
9149
9555
|
fullResponse = {
|
|
9150
|
-
id: (
|
|
9556
|
+
id: (_a14 = chunk.id) != null ? _a14 : fullResponse.id,
|
|
9151
9557
|
timestamp: (_b = chunk.timestamp) != null ? _b : fullResponse.timestamp,
|
|
9152
9558
|
modelId: (_c = chunk.modelId) != null ? _c : fullResponse.modelId
|
|
9153
9559
|
};
|
|
@@ -9157,11 +9563,12 @@ var DefaultStreamObjectResult = class {
|
|
|
9157
9563
|
if (textDelta !== "") {
|
|
9158
9564
|
controller.enqueue({ type: "text-delta", textDelta });
|
|
9159
9565
|
}
|
|
9160
|
-
finishReason = chunk.finishReason;
|
|
9161
|
-
usage = chunk.usage;
|
|
9566
|
+
finishReason = chunk.finishReason.unified;
|
|
9567
|
+
usage = asLanguageModelUsage(chunk.usage);
|
|
9162
9568
|
providerMetadata = chunk.providerMetadata;
|
|
9163
9569
|
controller.enqueue({
|
|
9164
9570
|
...chunk,
|
|
9571
|
+
finishReason: chunk.finishReason.unified,
|
|
9165
9572
|
usage,
|
|
9166
9573
|
response: fullResponse
|
|
9167
9574
|
});
|
|
@@ -9177,7 +9584,7 @@ var DefaultStreamObjectResult = class {
|
|
|
9177
9584
|
...fullResponse,
|
|
9178
9585
|
headers: response == null ? void 0 : response.headers
|
|
9179
9586
|
});
|
|
9180
|
-
self._finishReason.resolve(finishReason != null ? finishReason : "
|
|
9587
|
+
self._finishReason.resolve(finishReason != null ? finishReason : "other");
|
|
9181
9588
|
try {
|
|
9182
9589
|
object2 = await parseAndValidateObjectResultWithRepair(
|
|
9183
9590
|
accumulatedText,
|
|
@@ -9377,7 +9784,7 @@ var DefaultStreamObjectResult = class {
|
|
|
9377
9784
|
};
|
|
9378
9785
|
|
|
9379
9786
|
// src/generate-speech/generate-speech.ts
|
|
9380
|
-
var
|
|
9787
|
+
var import_provider_utils31 = require("@ai-sdk/provider-utils");
|
|
9381
9788
|
|
|
9382
9789
|
// src/generate-speech/generated-audio-file.ts
|
|
9383
9790
|
var DefaultGeneratedAudioFile = class extends DefaultGeneratedFile {
|
|
@@ -9418,12 +9825,12 @@ async function generateSpeech({
|
|
|
9418
9825
|
abortSignal,
|
|
9419
9826
|
headers
|
|
9420
9827
|
}) {
|
|
9421
|
-
var
|
|
9828
|
+
var _a14;
|
|
9422
9829
|
const resolvedModel = resolveSpeechModel(model);
|
|
9423
9830
|
if (!resolvedModel) {
|
|
9424
9831
|
throw new Error("Model could not be resolved");
|
|
9425
9832
|
}
|
|
9426
|
-
const headersWithUserAgent = (0,
|
|
9833
|
+
const headersWithUserAgent = (0, import_provider_utils31.withUserAgentSuffix)(
|
|
9427
9834
|
headers != null ? headers : {},
|
|
9428
9835
|
`ai/${VERSION}`
|
|
9429
9836
|
);
|
|
@@ -9455,10 +9862,10 @@ async function generateSpeech({
|
|
|
9455
9862
|
return new DefaultSpeechResult({
|
|
9456
9863
|
audio: new DefaultGeneratedAudioFile({
|
|
9457
9864
|
data: result.audio,
|
|
9458
|
-
mediaType: (
|
|
9865
|
+
mediaType: (_a14 = detectMediaType({
|
|
9459
9866
|
data: result.audio,
|
|
9460
9867
|
signatures: audioMediaTypeSignatures
|
|
9461
|
-
})) != null ?
|
|
9868
|
+
})) != null ? _a14 : "audio/mp3"
|
|
9462
9869
|
}),
|
|
9463
9870
|
warnings: result.warnings,
|
|
9464
9871
|
responses: [result.response],
|
|
@@ -9467,11 +9874,11 @@ async function generateSpeech({
|
|
|
9467
9874
|
}
|
|
9468
9875
|
var DefaultSpeechResult = class {
|
|
9469
9876
|
constructor(options) {
|
|
9470
|
-
var
|
|
9877
|
+
var _a14;
|
|
9471
9878
|
this.audio = options.audio;
|
|
9472
9879
|
this.warnings = options.warnings;
|
|
9473
9880
|
this.responses = options.responses;
|
|
9474
|
-
this.providerMetadata = (
|
|
9881
|
+
this.providerMetadata = (_a14 = options.providerMetadata) != null ? _a14 : {};
|
|
9475
9882
|
}
|
|
9476
9883
|
};
|
|
9477
9884
|
|
|
@@ -9509,7 +9916,7 @@ function pruneMessages({
|
|
|
9509
9916
|
const keptToolCallIds = /* @__PURE__ */ new Set();
|
|
9510
9917
|
const keptApprovalIds = /* @__PURE__ */ new Set();
|
|
9511
9918
|
if (keepLastMessagesCount != null) {
|
|
9512
|
-
for (const message of messages.slice(
|
|
9919
|
+
for (const message of messages.slice(-keepLastMessagesCount)) {
|
|
9513
9920
|
if ((message.role === "assistant" || message.role === "tool") && typeof message.content !== "string") {
|
|
9514
9921
|
for (const part of message.content) {
|
|
9515
9922
|
if (part.type === "tool-call" || part.type === "tool-result") {
|
|
@@ -9555,8 +9962,8 @@ function pruneMessages({
|
|
|
9555
9962
|
}
|
|
9556
9963
|
|
|
9557
9964
|
// src/generate-text/smooth-stream.ts
|
|
9558
|
-
var
|
|
9559
|
-
var
|
|
9965
|
+
var import_provider_utils32 = require("@ai-sdk/provider-utils");
|
|
9966
|
+
var import_provider26 = require("@ai-sdk/provider");
|
|
9560
9967
|
var CHUNKING_REGEXPS = {
|
|
9561
9968
|
word: /\S+\s+/m,
|
|
9562
9969
|
line: /\n+/m
|
|
@@ -9564,7 +9971,7 @@ var CHUNKING_REGEXPS = {
|
|
|
9564
9971
|
function smoothStream({
|
|
9565
9972
|
delayInMs = 10,
|
|
9566
9973
|
chunking = "word",
|
|
9567
|
-
_internal: { delay: delay2 =
|
|
9974
|
+
_internal: { delay: delay2 = import_provider_utils32.delay } = {}
|
|
9568
9975
|
} = {}) {
|
|
9569
9976
|
let detectChunk;
|
|
9570
9977
|
if (typeof chunking === "function") {
|
|
@@ -9586,7 +9993,7 @@ function smoothStream({
|
|
|
9586
9993
|
} else {
|
|
9587
9994
|
const chunkingRegex = typeof chunking === "string" ? CHUNKING_REGEXPS[chunking] : chunking;
|
|
9588
9995
|
if (chunkingRegex == null) {
|
|
9589
|
-
throw new
|
|
9996
|
+
throw new import_provider26.InvalidArgumentError({
|
|
9590
9997
|
argument: "chunking",
|
|
9591
9998
|
message: `Chunking must be "word" or "line" or a RegExp. Received: ${chunking}`
|
|
9592
9999
|
});
|
|
@@ -9636,10 +10043,7 @@ function defaultEmbeddingSettingsMiddleware({
|
|
|
9636
10043
|
return {
|
|
9637
10044
|
specificationVersion: "v3",
|
|
9638
10045
|
transformParams: async ({ params }) => {
|
|
9639
|
-
return mergeObjects(
|
|
9640
|
-
settings,
|
|
9641
|
-
params
|
|
9642
|
-
);
|
|
10046
|
+
return mergeObjects(settings, params);
|
|
9643
10047
|
}
|
|
9644
10048
|
};
|
|
9645
10049
|
}
|
|
@@ -9894,6 +10298,47 @@ function simulateStreamingMiddleware() {
|
|
|
9894
10298
|
};
|
|
9895
10299
|
}
|
|
9896
10300
|
|
|
10301
|
+
// src/middleware/add-tool-input-examples-middleware.ts
|
|
10302
|
+
function defaultFormatExample(example) {
|
|
10303
|
+
return JSON.stringify(example.input);
|
|
10304
|
+
}
|
|
10305
|
+
function addToolInputExamplesMiddleware({
|
|
10306
|
+
prefix = "Input Examples:",
|
|
10307
|
+
format = defaultFormatExample,
|
|
10308
|
+
remove = true
|
|
10309
|
+
} = {}) {
|
|
10310
|
+
return {
|
|
10311
|
+
specificationVersion: "v3",
|
|
10312
|
+
transformParams: async ({ params }) => {
|
|
10313
|
+
var _a14;
|
|
10314
|
+
if (!((_a14 = params.tools) == null ? void 0 : _a14.length)) {
|
|
10315
|
+
return params;
|
|
10316
|
+
}
|
|
10317
|
+
const transformedTools = params.tools.map((tool2) => {
|
|
10318
|
+
var _a15;
|
|
10319
|
+
if (tool2.type !== "function" || !((_a15 = tool2.inputExamples) == null ? void 0 : _a15.length)) {
|
|
10320
|
+
return tool2;
|
|
10321
|
+
}
|
|
10322
|
+
const formattedExamples = tool2.inputExamples.map((example, index) => format(example, index)).join("\n");
|
|
10323
|
+
const examplesSection = `${prefix}
|
|
10324
|
+
${formattedExamples}`;
|
|
10325
|
+
const toolDescription = tool2.description ? `${tool2.description}
|
|
10326
|
+
|
|
10327
|
+
${examplesSection}` : examplesSection;
|
|
10328
|
+
return {
|
|
10329
|
+
...tool2,
|
|
10330
|
+
description: toolDescription,
|
|
10331
|
+
inputExamples: remove ? void 0 : tool2.inputExamples
|
|
10332
|
+
};
|
|
10333
|
+
});
|
|
10334
|
+
return {
|
|
10335
|
+
...params,
|
|
10336
|
+
tools: transformedTools
|
|
10337
|
+
};
|
|
10338
|
+
}
|
|
10339
|
+
};
|
|
10340
|
+
}
|
|
10341
|
+
|
|
9897
10342
|
// src/middleware/wrap-language-model.ts
|
|
9898
10343
|
var wrapLanguageModel = ({
|
|
9899
10344
|
model,
|
|
@@ -9918,7 +10363,7 @@ var doWrap = ({
|
|
|
9918
10363
|
modelId,
|
|
9919
10364
|
providerId
|
|
9920
10365
|
}) => {
|
|
9921
|
-
var
|
|
10366
|
+
var _a14, _b, _c;
|
|
9922
10367
|
async function doTransform({
|
|
9923
10368
|
params,
|
|
9924
10369
|
type
|
|
@@ -9927,7 +10372,7 @@ var doWrap = ({
|
|
|
9927
10372
|
}
|
|
9928
10373
|
return {
|
|
9929
10374
|
specificationVersion: "v3",
|
|
9930
|
-
provider: (
|
|
10375
|
+
provider: (_a14 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a14 : model.provider,
|
|
9931
10376
|
modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,
|
|
9932
10377
|
supportedUrls: (_c = overrideSupportedUrls == null ? void 0 : overrideSupportedUrls({ model })) != null ? _c : model.supportedUrls,
|
|
9933
10378
|
async doGenerate(params) {
|
|
@@ -9974,7 +10419,7 @@ var doWrap2 = ({
|
|
|
9974
10419
|
modelId,
|
|
9975
10420
|
providerId
|
|
9976
10421
|
}) => {
|
|
9977
|
-
var
|
|
10422
|
+
var _a14, _b, _c, _d;
|
|
9978
10423
|
async function doTransform({
|
|
9979
10424
|
params
|
|
9980
10425
|
}) {
|
|
@@ -9982,7 +10427,7 @@ var doWrap2 = ({
|
|
|
9982
10427
|
}
|
|
9983
10428
|
return {
|
|
9984
10429
|
specificationVersion: "v3",
|
|
9985
|
-
provider: (
|
|
10430
|
+
provider: (_a14 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a14 : model.provider,
|
|
9986
10431
|
modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,
|
|
9987
10432
|
maxEmbeddingsPerCall: (_c = overrideMaxEmbeddingsPerCall == null ? void 0 : overrideMaxEmbeddingsPerCall({ model })) != null ? _c : model.maxEmbeddingsPerCall,
|
|
9988
10433
|
supportsParallelCalls: (_d = overrideSupportsParallelCalls == null ? void 0 : overrideSupportsParallelCalls({ model })) != null ? _d : model.supportsParallelCalls,
|
|
@@ -9998,32 +10443,19 @@ var doWrap2 = ({
|
|
|
9998
10443
|
};
|
|
9999
10444
|
};
|
|
10000
10445
|
|
|
10001
|
-
// src/model/as-image-model-v3.ts
|
|
10002
|
-
function asImageModelV3(model) {
|
|
10003
|
-
if (model.specificationVersion === "v3") {
|
|
10004
|
-
return model;
|
|
10005
|
-
}
|
|
10006
|
-
return new Proxy(model, {
|
|
10007
|
-
get(target, prop) {
|
|
10008
|
-
if (prop === "specificationVersion")
|
|
10009
|
-
return "v3";
|
|
10010
|
-
return target[prop];
|
|
10011
|
-
}
|
|
10012
|
-
});
|
|
10013
|
-
}
|
|
10014
|
-
|
|
10015
10446
|
// src/model/as-provider-v3.ts
|
|
10016
10447
|
function asProviderV3(provider) {
|
|
10017
10448
|
if ("specificationVersion" in provider && provider.specificationVersion === "v3") {
|
|
10018
10449
|
return provider;
|
|
10019
10450
|
}
|
|
10451
|
+
const v2Provider = provider;
|
|
10020
10452
|
return {
|
|
10021
10453
|
specificationVersion: "v3",
|
|
10022
|
-
languageModel: (modelId) => asLanguageModelV3(
|
|
10023
|
-
|
|
10024
|
-
imageModel: (modelId) => asImageModelV3(
|
|
10025
|
-
transcriptionModel:
|
|
10026
|
-
speechModel:
|
|
10454
|
+
languageModel: (modelId) => asLanguageModelV3(v2Provider.languageModel(modelId)),
|
|
10455
|
+
embeddingModel: (modelId) => asEmbeddingModelV3(v2Provider.textEmbeddingModel(modelId)),
|
|
10456
|
+
imageModel: (modelId) => asImageModelV3(v2Provider.imageModel(modelId)),
|
|
10457
|
+
transcriptionModel: v2Provider.transcriptionModel ? (modelId) => asTranscriptionModelV3(v2Provider.transcriptionModel(modelId)) : void 0,
|
|
10458
|
+
speechModel: v2Provider.speechModel ? (modelId) => asSpeechModelV3(v2Provider.speechModel(modelId)) : void 0,
|
|
10027
10459
|
rerankingModel: void 0
|
|
10028
10460
|
// v2 providers don't have reranking models
|
|
10029
10461
|
};
|
|
@@ -10041,7 +10473,7 @@ function wrapProvider({
|
|
|
10041
10473
|
model: providerV3.languageModel(modelId),
|
|
10042
10474
|
middleware: languageModelMiddleware
|
|
10043
10475
|
}),
|
|
10044
|
-
|
|
10476
|
+
embeddingModel: providerV3.embeddingModel,
|
|
10045
10477
|
imageModel: providerV3.imageModel,
|
|
10046
10478
|
transcriptionModel: providerV3.transcriptionModel,
|
|
10047
10479
|
speechModel: providerV3.speechModel,
|
|
@@ -10050,10 +10482,10 @@ function wrapProvider({
|
|
|
10050
10482
|
}
|
|
10051
10483
|
|
|
10052
10484
|
// src/registry/custom-provider.ts
|
|
10053
|
-
var
|
|
10485
|
+
var import_provider27 = require("@ai-sdk/provider");
|
|
10054
10486
|
function customProvider({
|
|
10055
10487
|
languageModels,
|
|
10056
|
-
|
|
10488
|
+
embeddingModels,
|
|
10057
10489
|
imageModels,
|
|
10058
10490
|
transcriptionModels,
|
|
10059
10491
|
speechModels,
|
|
@@ -10070,16 +10502,16 @@ function customProvider({
|
|
|
10070
10502
|
if (fallbackProvider) {
|
|
10071
10503
|
return fallbackProvider.languageModel(modelId);
|
|
10072
10504
|
}
|
|
10073
|
-
throw new
|
|
10505
|
+
throw new import_provider27.NoSuchModelError({ modelId, modelType: "languageModel" });
|
|
10074
10506
|
},
|
|
10075
|
-
|
|
10076
|
-
if (
|
|
10077
|
-
return
|
|
10507
|
+
embeddingModel(modelId) {
|
|
10508
|
+
if (embeddingModels != null && modelId in embeddingModels) {
|
|
10509
|
+
return embeddingModels[modelId];
|
|
10078
10510
|
}
|
|
10079
10511
|
if (fallbackProvider) {
|
|
10080
|
-
return fallbackProvider.
|
|
10512
|
+
return fallbackProvider.embeddingModel(modelId);
|
|
10081
10513
|
}
|
|
10082
|
-
throw new
|
|
10514
|
+
throw new import_provider27.NoSuchModelError({ modelId, modelType: "embeddingModel" });
|
|
10083
10515
|
},
|
|
10084
10516
|
imageModel(modelId) {
|
|
10085
10517
|
if (imageModels != null && modelId in imageModels) {
|
|
@@ -10088,7 +10520,7 @@ function customProvider({
|
|
|
10088
10520
|
if (fallbackProvider == null ? void 0 : fallbackProvider.imageModel) {
|
|
10089
10521
|
return fallbackProvider.imageModel(modelId);
|
|
10090
10522
|
}
|
|
10091
|
-
throw new
|
|
10523
|
+
throw new import_provider27.NoSuchModelError({ modelId, modelType: "imageModel" });
|
|
10092
10524
|
},
|
|
10093
10525
|
transcriptionModel(modelId) {
|
|
10094
10526
|
if (transcriptionModels != null && modelId in transcriptionModels) {
|
|
@@ -10097,7 +10529,7 @@ function customProvider({
|
|
|
10097
10529
|
if (fallbackProvider == null ? void 0 : fallbackProvider.transcriptionModel) {
|
|
10098
10530
|
return fallbackProvider.transcriptionModel(modelId);
|
|
10099
10531
|
}
|
|
10100
|
-
throw new
|
|
10532
|
+
throw new import_provider27.NoSuchModelError({ modelId, modelType: "transcriptionModel" });
|
|
10101
10533
|
},
|
|
10102
10534
|
speechModel(modelId) {
|
|
10103
10535
|
if (speechModels != null && modelId in speechModels) {
|
|
@@ -10106,7 +10538,7 @@ function customProvider({
|
|
|
10106
10538
|
if (fallbackProvider == null ? void 0 : fallbackProvider.speechModel) {
|
|
10107
10539
|
return fallbackProvider.speechModel(modelId);
|
|
10108
10540
|
}
|
|
10109
|
-
throw new
|
|
10541
|
+
throw new import_provider27.NoSuchModelError({ modelId, modelType: "speechModel" });
|
|
10110
10542
|
},
|
|
10111
10543
|
rerankingModel(modelId) {
|
|
10112
10544
|
if (rerankingModels != null && modelId in rerankingModels) {
|
|
@@ -10115,19 +10547,19 @@ function customProvider({
|
|
|
10115
10547
|
if (fallbackProvider == null ? void 0 : fallbackProvider.rerankingModel) {
|
|
10116
10548
|
return fallbackProvider.rerankingModel(modelId);
|
|
10117
10549
|
}
|
|
10118
|
-
throw new
|
|
10550
|
+
throw new import_provider27.NoSuchModelError({ modelId, modelType: "rerankingModel" });
|
|
10119
10551
|
}
|
|
10120
10552
|
};
|
|
10121
10553
|
}
|
|
10122
10554
|
var experimental_customProvider = customProvider;
|
|
10123
10555
|
|
|
10124
10556
|
// src/registry/no-such-provider-error.ts
|
|
10125
|
-
var
|
|
10126
|
-
var
|
|
10127
|
-
var
|
|
10128
|
-
var
|
|
10129
|
-
var
|
|
10130
|
-
var NoSuchProviderError = class extends
|
|
10557
|
+
var import_provider28 = require("@ai-sdk/provider");
|
|
10558
|
+
var name13 = "AI_NoSuchProviderError";
|
|
10559
|
+
var marker13 = `vercel.ai.error.${name13}`;
|
|
10560
|
+
var symbol13 = Symbol.for(marker13);
|
|
10561
|
+
var _a13;
|
|
10562
|
+
var NoSuchProviderError = class extends import_provider28.NoSuchModelError {
|
|
10131
10563
|
constructor({
|
|
10132
10564
|
modelId,
|
|
10133
10565
|
modelType,
|
|
@@ -10135,19 +10567,19 @@ var NoSuchProviderError = class extends import_provider29.NoSuchModelError {
|
|
|
10135
10567
|
availableProviders,
|
|
10136
10568
|
message = `No such provider: ${providerId} (available providers: ${availableProviders.join()})`
|
|
10137
10569
|
}) {
|
|
10138
|
-
super({ errorName:
|
|
10139
|
-
this[
|
|
10570
|
+
super({ errorName: name13, modelId, modelType, message });
|
|
10571
|
+
this[_a13] = true;
|
|
10140
10572
|
this.providerId = providerId;
|
|
10141
10573
|
this.availableProviders = availableProviders;
|
|
10142
10574
|
}
|
|
10143
10575
|
static isInstance(error) {
|
|
10144
|
-
return
|
|
10576
|
+
return import_provider28.AISDKError.hasMarker(error, marker13);
|
|
10145
10577
|
}
|
|
10146
10578
|
};
|
|
10147
|
-
|
|
10579
|
+
_a13 = symbol13;
|
|
10148
10580
|
|
|
10149
10581
|
// src/registry/provider-registry.ts
|
|
10150
|
-
var
|
|
10582
|
+
var import_provider29 = require("@ai-sdk/provider");
|
|
10151
10583
|
function createProviderRegistry(providers, {
|
|
10152
10584
|
separator = ":",
|
|
10153
10585
|
languageModelMiddleware
|
|
@@ -10192,7 +10624,7 @@ var DefaultProviderRegistry = class {
|
|
|
10192
10624
|
splitId(id, modelType) {
|
|
10193
10625
|
const index = id.indexOf(this.separator);
|
|
10194
10626
|
if (index === -1) {
|
|
10195
|
-
throw new
|
|
10627
|
+
throw new import_provider29.NoSuchModelError({
|
|
10196
10628
|
modelId: id,
|
|
10197
10629
|
modelType,
|
|
10198
10630
|
message: `Invalid ${modelType} id for registry: ${id} (must be in the format "providerId${this.separator}modelId")`
|
|
@@ -10201,14 +10633,14 @@ var DefaultProviderRegistry = class {
|
|
|
10201
10633
|
return [id.slice(0, index), id.slice(index + this.separator.length)];
|
|
10202
10634
|
}
|
|
10203
10635
|
languageModel(id) {
|
|
10204
|
-
var
|
|
10636
|
+
var _a14, _b;
|
|
10205
10637
|
const [providerId, modelId] = this.splitId(id, "languageModel");
|
|
10206
|
-
let model = (_b = (
|
|
10207
|
-
|
|
10638
|
+
let model = (_b = (_a14 = this.getProvider(providerId, "languageModel")).languageModel) == null ? void 0 : _b.call(
|
|
10639
|
+
_a14,
|
|
10208
10640
|
modelId
|
|
10209
10641
|
);
|
|
10210
10642
|
if (model == null) {
|
|
10211
|
-
throw new
|
|
10643
|
+
throw new import_provider29.NoSuchModelError({ modelId: id, modelType: "languageModel" });
|
|
10212
10644
|
}
|
|
10213
10645
|
if (this.languageModelMiddleware != null) {
|
|
10214
10646
|
model = wrapLanguageModel({
|
|
@@ -10218,36 +10650,36 @@ var DefaultProviderRegistry = class {
|
|
|
10218
10650
|
}
|
|
10219
10651
|
return model;
|
|
10220
10652
|
}
|
|
10221
|
-
|
|
10222
|
-
var
|
|
10223
|
-
const [providerId, modelId] = this.splitId(id, "
|
|
10224
|
-
const provider = this.getProvider(providerId, "
|
|
10225
|
-
const model = (
|
|
10653
|
+
embeddingModel(id) {
|
|
10654
|
+
var _a14;
|
|
10655
|
+
const [providerId, modelId] = this.splitId(id, "embeddingModel");
|
|
10656
|
+
const provider = this.getProvider(providerId, "embeddingModel");
|
|
10657
|
+
const model = (_a14 = provider.embeddingModel) == null ? void 0 : _a14.call(provider, modelId);
|
|
10226
10658
|
if (model == null) {
|
|
10227
|
-
throw new
|
|
10659
|
+
throw new import_provider29.NoSuchModelError({
|
|
10228
10660
|
modelId: id,
|
|
10229
|
-
modelType: "
|
|
10661
|
+
modelType: "embeddingModel"
|
|
10230
10662
|
});
|
|
10231
10663
|
}
|
|
10232
10664
|
return model;
|
|
10233
10665
|
}
|
|
10234
10666
|
imageModel(id) {
|
|
10235
|
-
var
|
|
10667
|
+
var _a14;
|
|
10236
10668
|
const [providerId, modelId] = this.splitId(id, "imageModel");
|
|
10237
10669
|
const provider = this.getProvider(providerId, "imageModel");
|
|
10238
|
-
const model = (
|
|
10670
|
+
const model = (_a14 = provider.imageModel) == null ? void 0 : _a14.call(provider, modelId);
|
|
10239
10671
|
if (model == null) {
|
|
10240
|
-
throw new
|
|
10672
|
+
throw new import_provider29.NoSuchModelError({ modelId: id, modelType: "imageModel" });
|
|
10241
10673
|
}
|
|
10242
10674
|
return model;
|
|
10243
10675
|
}
|
|
10244
10676
|
transcriptionModel(id) {
|
|
10245
|
-
var
|
|
10677
|
+
var _a14;
|
|
10246
10678
|
const [providerId, modelId] = this.splitId(id, "transcriptionModel");
|
|
10247
10679
|
const provider = this.getProvider(providerId, "transcriptionModel");
|
|
10248
|
-
const model = (
|
|
10680
|
+
const model = (_a14 = provider.transcriptionModel) == null ? void 0 : _a14.call(provider, modelId);
|
|
10249
10681
|
if (model == null) {
|
|
10250
|
-
throw new
|
|
10682
|
+
throw new import_provider29.NoSuchModelError({
|
|
10251
10683
|
modelId: id,
|
|
10252
10684
|
modelType: "transcriptionModel"
|
|
10253
10685
|
});
|
|
@@ -10255,22 +10687,22 @@ var DefaultProviderRegistry = class {
|
|
|
10255
10687
|
return model;
|
|
10256
10688
|
}
|
|
10257
10689
|
speechModel(id) {
|
|
10258
|
-
var
|
|
10690
|
+
var _a14;
|
|
10259
10691
|
const [providerId, modelId] = this.splitId(id, "speechModel");
|
|
10260
10692
|
const provider = this.getProvider(providerId, "speechModel");
|
|
10261
|
-
const model = (
|
|
10693
|
+
const model = (_a14 = provider.speechModel) == null ? void 0 : _a14.call(provider, modelId);
|
|
10262
10694
|
if (model == null) {
|
|
10263
|
-
throw new
|
|
10695
|
+
throw new import_provider29.NoSuchModelError({ modelId: id, modelType: "speechModel" });
|
|
10264
10696
|
}
|
|
10265
10697
|
return model;
|
|
10266
10698
|
}
|
|
10267
10699
|
rerankingModel(id) {
|
|
10268
|
-
var
|
|
10700
|
+
var _a14;
|
|
10269
10701
|
const [providerId, modelId] = this.splitId(id, "rerankingModel");
|
|
10270
10702
|
const provider = this.getProvider(providerId, "rerankingModel");
|
|
10271
|
-
const model = (
|
|
10703
|
+
const model = (_a14 = provider.rerankingModel) == null ? void 0 : _a14.call(provider, modelId);
|
|
10272
10704
|
if (model == null) {
|
|
10273
|
-
throw new
|
|
10705
|
+
throw new import_provider29.NoSuchModelError({ modelId: id, modelType: "rerankingModel" });
|
|
10274
10706
|
}
|
|
10275
10707
|
return model;
|
|
10276
10708
|
}
|
|
@@ -10325,7 +10757,7 @@ async function rerank({
|
|
|
10325
10757
|
}),
|
|
10326
10758
|
tracer,
|
|
10327
10759
|
fn: async () => {
|
|
10328
|
-
var
|
|
10760
|
+
var _a14, _b;
|
|
10329
10761
|
const { ranking, response, providerMetadata, warnings } = await retry(
|
|
10330
10762
|
() => recordSpan({
|
|
10331
10763
|
name: "ai.rerank.doRerank",
|
|
@@ -10389,7 +10821,7 @@ async function rerank({
|
|
|
10389
10821
|
providerMetadata,
|
|
10390
10822
|
response: {
|
|
10391
10823
|
id: response == null ? void 0 : response.id,
|
|
10392
|
-
timestamp: (
|
|
10824
|
+
timestamp: (_a14 = response == null ? void 0 : response.timestamp) != null ? _a14 : /* @__PURE__ */ new Date(),
|
|
10393
10825
|
modelId: (_b = response == null ? void 0 : response.modelId) != null ? _b : model.modelId,
|
|
10394
10826
|
headers: response == null ? void 0 : response.headers,
|
|
10395
10827
|
body: response == null ? void 0 : response.body
|
|
@@ -10411,11 +10843,11 @@ var DefaultRerankResult = class {
|
|
|
10411
10843
|
};
|
|
10412
10844
|
|
|
10413
10845
|
// src/transcribe/transcribe.ts
|
|
10414
|
-
var
|
|
10846
|
+
var import_provider_utils33 = require("@ai-sdk/provider-utils");
|
|
10415
10847
|
|
|
10416
10848
|
// src/error/no-transcript-generated-error.ts
|
|
10417
|
-
var
|
|
10418
|
-
var NoTranscriptGeneratedError = class extends
|
|
10849
|
+
var import_provider30 = require("@ai-sdk/provider");
|
|
10850
|
+
var NoTranscriptGeneratedError = class extends import_provider30.AISDKError {
|
|
10419
10851
|
constructor(options) {
|
|
10420
10852
|
super({
|
|
10421
10853
|
name: "AI_NoTranscriptGeneratedError",
|
|
@@ -10442,23 +10874,23 @@ async function transcribe({
|
|
|
10442
10874
|
maxRetries: maxRetriesArg,
|
|
10443
10875
|
abortSignal
|
|
10444
10876
|
});
|
|
10445
|
-
const headersWithUserAgent = (0,
|
|
10877
|
+
const headersWithUserAgent = (0, import_provider_utils33.withUserAgentSuffix)(
|
|
10446
10878
|
headers != null ? headers : {},
|
|
10447
10879
|
`ai/${VERSION}`
|
|
10448
10880
|
);
|
|
10449
10881
|
const audioData = audio instanceof URL ? (await download({ url: audio })).data : convertDataContentToUint8Array(audio);
|
|
10450
10882
|
const result = await retry(
|
|
10451
10883
|
() => {
|
|
10452
|
-
var
|
|
10884
|
+
var _a14;
|
|
10453
10885
|
return resolvedModel.doGenerate({
|
|
10454
10886
|
audio: audioData,
|
|
10455
10887
|
abortSignal,
|
|
10456
10888
|
headers: headersWithUserAgent,
|
|
10457
10889
|
providerOptions,
|
|
10458
|
-
mediaType: (
|
|
10890
|
+
mediaType: (_a14 = detectMediaType({
|
|
10459
10891
|
data: audioData,
|
|
10460
10892
|
signatures: audioMediaTypeSignatures
|
|
10461
|
-
})) != null ?
|
|
10893
|
+
})) != null ? _a14 : "audio/wav"
|
|
10462
10894
|
});
|
|
10463
10895
|
}
|
|
10464
10896
|
);
|
|
@@ -10482,19 +10914,19 @@ async function transcribe({
|
|
|
10482
10914
|
}
|
|
10483
10915
|
var DefaultTranscriptionResult = class {
|
|
10484
10916
|
constructor(options) {
|
|
10485
|
-
var
|
|
10917
|
+
var _a14;
|
|
10486
10918
|
this.text = options.text;
|
|
10487
10919
|
this.segments = options.segments;
|
|
10488
10920
|
this.language = options.language;
|
|
10489
10921
|
this.durationInSeconds = options.durationInSeconds;
|
|
10490
10922
|
this.warnings = options.warnings;
|
|
10491
10923
|
this.responses = options.responses;
|
|
10492
|
-
this.providerMetadata = (
|
|
10924
|
+
this.providerMetadata = (_a14 = options.providerMetadata) != null ? _a14 : {};
|
|
10493
10925
|
}
|
|
10494
10926
|
};
|
|
10495
10927
|
|
|
10496
10928
|
// src/ui/call-completion-api.ts
|
|
10497
|
-
var
|
|
10929
|
+
var import_provider_utils34 = require("@ai-sdk/provider-utils");
|
|
10498
10930
|
|
|
10499
10931
|
// src/ui/process-text-stream.ts
|
|
10500
10932
|
async function processTextStream({
|
|
@@ -10528,7 +10960,7 @@ async function callCompletionApi({
|
|
|
10528
10960
|
onError,
|
|
10529
10961
|
fetch: fetch2 = getOriginalFetch()
|
|
10530
10962
|
}) {
|
|
10531
|
-
var
|
|
10963
|
+
var _a14;
|
|
10532
10964
|
try {
|
|
10533
10965
|
setLoading(true);
|
|
10534
10966
|
setError(void 0);
|
|
@@ -10542,13 +10974,13 @@ async function callCompletionApi({
|
|
|
10542
10974
|
...body
|
|
10543
10975
|
}),
|
|
10544
10976
|
credentials,
|
|
10545
|
-
headers: (0,
|
|
10977
|
+
headers: (0, import_provider_utils34.withUserAgentSuffix)(
|
|
10546
10978
|
{
|
|
10547
10979
|
"Content-Type": "application/json",
|
|
10548
10980
|
...headers
|
|
10549
10981
|
},
|
|
10550
10982
|
`ai-sdk/${VERSION}`,
|
|
10551
|
-
(0,
|
|
10983
|
+
(0, import_provider_utils34.getRuntimeEnvironmentUserAgent)()
|
|
10552
10984
|
),
|
|
10553
10985
|
signal: abortController.signal
|
|
10554
10986
|
}).catch((err) => {
|
|
@@ -10556,7 +10988,7 @@ async function callCompletionApi({
|
|
|
10556
10988
|
});
|
|
10557
10989
|
if (!response.ok) {
|
|
10558
10990
|
throw new Error(
|
|
10559
|
-
(
|
|
10991
|
+
(_a14 = await response.text()) != null ? _a14 : "Failed to fetch the chat response."
|
|
10560
10992
|
);
|
|
10561
10993
|
}
|
|
10562
10994
|
if (!response.body) {
|
|
@@ -10576,7 +11008,7 @@ async function callCompletionApi({
|
|
|
10576
11008
|
}
|
|
10577
11009
|
case "data": {
|
|
10578
11010
|
await consumeStream({
|
|
10579
|
-
stream: (0,
|
|
11011
|
+
stream: (0, import_provider_utils34.parseJsonEventStream)({
|
|
10580
11012
|
stream: response.body,
|
|
10581
11013
|
schema: uiMessageChunkSchema
|
|
10582
11014
|
}).pipeThrough(
|
|
@@ -10628,7 +11060,7 @@ async function callCompletionApi({
|
|
|
10628
11060
|
}
|
|
10629
11061
|
|
|
10630
11062
|
// src/ui/chat.ts
|
|
10631
|
-
var
|
|
11063
|
+
var import_provider_utils37 = require("@ai-sdk/provider-utils");
|
|
10632
11064
|
|
|
10633
11065
|
// src/ui/convert-file-list-to-file-ui-parts.ts
|
|
10634
11066
|
async function convertFileListToFileUIParts(files) {
|
|
@@ -10640,12 +11072,12 @@ async function convertFileListToFileUIParts(files) {
|
|
|
10640
11072
|
}
|
|
10641
11073
|
return Promise.all(
|
|
10642
11074
|
Array.from(files).map(async (file) => {
|
|
10643
|
-
const { name:
|
|
11075
|
+
const { name: name14, type } = file;
|
|
10644
11076
|
const dataUrl = await new Promise((resolve3, reject) => {
|
|
10645
11077
|
const reader = new FileReader();
|
|
10646
11078
|
reader.onload = (readerEvent) => {
|
|
10647
|
-
var
|
|
10648
|
-
resolve3((
|
|
11079
|
+
var _a14;
|
|
11080
|
+
resolve3((_a14 = readerEvent.target) == null ? void 0 : _a14.result);
|
|
10649
11081
|
};
|
|
10650
11082
|
reader.onerror = (error) => reject(error);
|
|
10651
11083
|
reader.readAsDataURL(file);
|
|
@@ -10653,7 +11085,7 @@ async function convertFileListToFileUIParts(files) {
|
|
|
10653
11085
|
return {
|
|
10654
11086
|
type: "file",
|
|
10655
11087
|
mediaType: type,
|
|
10656
|
-
filename:
|
|
11088
|
+
filename: name14,
|
|
10657
11089
|
url: dataUrl
|
|
10658
11090
|
};
|
|
10659
11091
|
})
|
|
@@ -10661,10 +11093,10 @@ async function convertFileListToFileUIParts(files) {
|
|
|
10661
11093
|
}
|
|
10662
11094
|
|
|
10663
11095
|
// src/ui/default-chat-transport.ts
|
|
10664
|
-
var
|
|
11096
|
+
var import_provider_utils36 = require("@ai-sdk/provider-utils");
|
|
10665
11097
|
|
|
10666
11098
|
// src/ui/http-chat-transport.ts
|
|
10667
|
-
var
|
|
11099
|
+
var import_provider_utils35 = require("@ai-sdk/provider-utils");
|
|
10668
11100
|
var HttpChatTransport = class {
|
|
10669
11101
|
constructor({
|
|
10670
11102
|
api = "/api/chat",
|
|
@@ -10687,15 +11119,15 @@ var HttpChatTransport = class {
|
|
|
10687
11119
|
abortSignal,
|
|
10688
11120
|
...options
|
|
10689
11121
|
}) {
|
|
10690
|
-
var
|
|
10691
|
-
const resolvedBody = await (0,
|
|
10692
|
-
const resolvedHeaders = await (0,
|
|
10693
|
-
const resolvedCredentials = await (0,
|
|
11122
|
+
var _a14, _b, _c, _d, _e;
|
|
11123
|
+
const resolvedBody = await (0, import_provider_utils35.resolve)(this.body);
|
|
11124
|
+
const resolvedHeaders = await (0, import_provider_utils35.resolve)(this.headers);
|
|
11125
|
+
const resolvedCredentials = await (0, import_provider_utils35.resolve)(this.credentials);
|
|
10694
11126
|
const baseHeaders = {
|
|
10695
|
-
...(0,
|
|
10696
|
-
...(0,
|
|
11127
|
+
...(0, import_provider_utils35.normalizeHeaders)(resolvedHeaders),
|
|
11128
|
+
...(0, import_provider_utils35.normalizeHeaders)(options.headers)
|
|
10697
11129
|
};
|
|
10698
|
-
const preparedRequest = await ((
|
|
11130
|
+
const preparedRequest = await ((_a14 = this.prepareSendMessagesRequest) == null ? void 0 : _a14.call(this, {
|
|
10699
11131
|
api: this.api,
|
|
10700
11132
|
id: options.chatId,
|
|
10701
11133
|
messages: options.messages,
|
|
@@ -10707,7 +11139,7 @@ var HttpChatTransport = class {
|
|
|
10707
11139
|
messageId: options.messageId
|
|
10708
11140
|
}));
|
|
10709
11141
|
const api = (_b = preparedRequest == null ? void 0 : preparedRequest.api) != null ? _b : this.api;
|
|
10710
|
-
const headers = (preparedRequest == null ? void 0 : preparedRequest.headers) !== void 0 ? (0,
|
|
11142
|
+
const headers = (preparedRequest == null ? void 0 : preparedRequest.headers) !== void 0 ? (0, import_provider_utils35.normalizeHeaders)(preparedRequest.headers) : baseHeaders;
|
|
10711
11143
|
const body = (preparedRequest == null ? void 0 : preparedRequest.body) !== void 0 ? preparedRequest.body : {
|
|
10712
11144
|
...resolvedBody,
|
|
10713
11145
|
...options.body,
|
|
@@ -10720,13 +11152,13 @@ var HttpChatTransport = class {
|
|
|
10720
11152
|
const fetch2 = (_d = this.fetch) != null ? _d : globalThis.fetch;
|
|
10721
11153
|
const response = await fetch2(api, {
|
|
10722
11154
|
method: "POST",
|
|
10723
|
-
headers: (0,
|
|
11155
|
+
headers: (0, import_provider_utils35.withUserAgentSuffix)(
|
|
10724
11156
|
{
|
|
10725
11157
|
"Content-Type": "application/json",
|
|
10726
11158
|
...headers
|
|
10727
11159
|
},
|
|
10728
11160
|
`ai-sdk/${VERSION}`,
|
|
10729
|
-
(0,
|
|
11161
|
+
(0, import_provider_utils35.getRuntimeEnvironmentUserAgent)()
|
|
10730
11162
|
),
|
|
10731
11163
|
body: JSON.stringify(body),
|
|
10732
11164
|
credentials,
|
|
@@ -10743,15 +11175,15 @@ var HttpChatTransport = class {
|
|
|
10743
11175
|
return this.processResponseStream(response.body);
|
|
10744
11176
|
}
|
|
10745
11177
|
async reconnectToStream(options) {
|
|
10746
|
-
var
|
|
10747
|
-
const resolvedBody = await (0,
|
|
10748
|
-
const resolvedHeaders = await (0,
|
|
10749
|
-
const resolvedCredentials = await (0,
|
|
11178
|
+
var _a14, _b, _c, _d, _e;
|
|
11179
|
+
const resolvedBody = await (0, import_provider_utils35.resolve)(this.body);
|
|
11180
|
+
const resolvedHeaders = await (0, import_provider_utils35.resolve)(this.headers);
|
|
11181
|
+
const resolvedCredentials = await (0, import_provider_utils35.resolve)(this.credentials);
|
|
10750
11182
|
const baseHeaders = {
|
|
10751
|
-
...(0,
|
|
10752
|
-
...(0,
|
|
11183
|
+
...(0, import_provider_utils35.normalizeHeaders)(resolvedHeaders),
|
|
11184
|
+
...(0, import_provider_utils35.normalizeHeaders)(options.headers)
|
|
10753
11185
|
};
|
|
10754
|
-
const preparedRequest = await ((
|
|
11186
|
+
const preparedRequest = await ((_a14 = this.prepareReconnectToStreamRequest) == null ? void 0 : _a14.call(this, {
|
|
10755
11187
|
api: this.api,
|
|
10756
11188
|
id: options.chatId,
|
|
10757
11189
|
body: { ...resolvedBody, ...options.body },
|
|
@@ -10760,15 +11192,15 @@ var HttpChatTransport = class {
|
|
|
10760
11192
|
requestMetadata: options.metadata
|
|
10761
11193
|
}));
|
|
10762
11194
|
const api = (_b = preparedRequest == null ? void 0 : preparedRequest.api) != null ? _b : `${this.api}/${options.chatId}/stream`;
|
|
10763
|
-
const headers = (preparedRequest == null ? void 0 : preparedRequest.headers) !== void 0 ? (0,
|
|
11195
|
+
const headers = (preparedRequest == null ? void 0 : preparedRequest.headers) !== void 0 ? (0, import_provider_utils35.normalizeHeaders)(preparedRequest.headers) : baseHeaders;
|
|
10764
11196
|
const credentials = (_c = preparedRequest == null ? void 0 : preparedRequest.credentials) != null ? _c : resolvedCredentials;
|
|
10765
11197
|
const fetch2 = (_d = this.fetch) != null ? _d : globalThis.fetch;
|
|
10766
11198
|
const response = await fetch2(api, {
|
|
10767
11199
|
method: "GET",
|
|
10768
|
-
headers: (0,
|
|
11200
|
+
headers: (0, import_provider_utils35.withUserAgentSuffix)(
|
|
10769
11201
|
headers,
|
|
10770
11202
|
`ai-sdk/${VERSION}`,
|
|
10771
|
-
(0,
|
|
11203
|
+
(0, import_provider_utils35.getRuntimeEnvironmentUserAgent)()
|
|
10772
11204
|
),
|
|
10773
11205
|
credentials
|
|
10774
11206
|
});
|
|
@@ -10793,7 +11225,7 @@ var DefaultChatTransport = class extends HttpChatTransport {
|
|
|
10793
11225
|
super(options);
|
|
10794
11226
|
}
|
|
10795
11227
|
processResponseStream(stream) {
|
|
10796
|
-
return (0,
|
|
11228
|
+
return (0, import_provider_utils36.parseJsonEventStream)({
|
|
10797
11229
|
stream,
|
|
10798
11230
|
schema: uiMessageChunkSchema
|
|
10799
11231
|
}).pipeThrough(
|
|
@@ -10812,7 +11244,7 @@ var DefaultChatTransport = class extends HttpChatTransport {
|
|
|
10812
11244
|
// src/ui/chat.ts
|
|
10813
11245
|
var AbstractChat = class {
|
|
10814
11246
|
constructor({
|
|
10815
|
-
generateId: generateId2 =
|
|
11247
|
+
generateId: generateId2 = import_provider_utils37.generateId,
|
|
10816
11248
|
id = generateId2(),
|
|
10817
11249
|
transport = new DefaultChatTransport(),
|
|
10818
11250
|
messageMetadataSchema,
|
|
@@ -10833,11 +11265,11 @@ var AbstractChat = class {
|
|
|
10833
11265
|
* If a messageId is provided, the message will be replaced.
|
|
10834
11266
|
*/
|
|
10835
11267
|
this.sendMessage = async (message, options) => {
|
|
10836
|
-
var
|
|
11268
|
+
var _a14, _b, _c, _d;
|
|
10837
11269
|
if (message == null) {
|
|
10838
11270
|
await this.makeRequest({
|
|
10839
11271
|
trigger: "submit-message",
|
|
10840
|
-
messageId: (
|
|
11272
|
+
messageId: (_a14 = this.lastMessage) == null ? void 0 : _a14.id,
|
|
10841
11273
|
...options
|
|
10842
11274
|
});
|
|
10843
11275
|
return;
|
|
@@ -10930,10 +11362,10 @@ var AbstractChat = class {
|
|
|
10930
11362
|
approved,
|
|
10931
11363
|
reason
|
|
10932
11364
|
}) => this.jobExecutor.run(async () => {
|
|
10933
|
-
var
|
|
11365
|
+
var _a14, _b;
|
|
10934
11366
|
const messages = this.state.messages;
|
|
10935
11367
|
const lastMessage = messages[messages.length - 1];
|
|
10936
|
-
const updatePart = (part) =>
|
|
11368
|
+
const updatePart = (part) => isToolUIPart(part) && part.state === "approval-requested" && part.approval.id === id ? {
|
|
10937
11369
|
...part,
|
|
10938
11370
|
state: "approval-responded",
|
|
10939
11371
|
approval: { id, approved, reason }
|
|
@@ -10945,7 +11377,7 @@ var AbstractChat = class {
|
|
|
10945
11377
|
if (this.activeResponse) {
|
|
10946
11378
|
this.activeResponse.state.message.parts = this.activeResponse.state.message.parts.map(updatePart);
|
|
10947
11379
|
}
|
|
10948
|
-
if (this.status !== "streaming" && this.status !== "submitted" && ((
|
|
11380
|
+
if (this.status !== "streaming" && this.status !== "submitted" && ((_a14 = this.sendAutomaticallyWhen) == null ? void 0 : _a14.call(this, { messages: this.state.messages }))) {
|
|
10949
11381
|
this.makeRequest({
|
|
10950
11382
|
trigger: "submit-message",
|
|
10951
11383
|
messageId: (_b = this.lastMessage) == null ? void 0 : _b.id
|
|
@@ -10959,10 +11391,10 @@ var AbstractChat = class {
|
|
|
10959
11391
|
output,
|
|
10960
11392
|
errorText
|
|
10961
11393
|
}) => this.jobExecutor.run(async () => {
|
|
10962
|
-
var
|
|
11394
|
+
var _a14, _b;
|
|
10963
11395
|
const messages = this.state.messages;
|
|
10964
11396
|
const lastMessage = messages[messages.length - 1];
|
|
10965
|
-
const updatePart = (part) =>
|
|
11397
|
+
const updatePart = (part) => isToolUIPart(part) && part.toolCallId === toolCallId ? { ...part, state, output, errorText } : part;
|
|
10966
11398
|
this.state.replaceMessage(messages.length - 1, {
|
|
10967
11399
|
...lastMessage,
|
|
10968
11400
|
parts: lastMessage.parts.map(updatePart)
|
|
@@ -10970,7 +11402,7 @@ var AbstractChat = class {
|
|
|
10970
11402
|
if (this.activeResponse) {
|
|
10971
11403
|
this.activeResponse.state.message.parts = this.activeResponse.state.message.parts.map(updatePart);
|
|
10972
11404
|
}
|
|
10973
|
-
if (this.status !== "streaming" && this.status !== "submitted" && ((
|
|
11405
|
+
if (this.status !== "streaming" && this.status !== "submitted" && ((_a14 = this.sendAutomaticallyWhen) == null ? void 0 : _a14.call(this, { messages: this.state.messages }))) {
|
|
10974
11406
|
this.makeRequest({
|
|
10975
11407
|
trigger: "submit-message",
|
|
10976
11408
|
messageId: (_b = this.lastMessage) == null ? void 0 : _b.id
|
|
@@ -10983,10 +11415,10 @@ var AbstractChat = class {
|
|
|
10983
11415
|
* Abort the current request immediately, keep the generated tokens if any.
|
|
10984
11416
|
*/
|
|
10985
11417
|
this.stop = async () => {
|
|
10986
|
-
var
|
|
11418
|
+
var _a14;
|
|
10987
11419
|
if (this.status !== "streaming" && this.status !== "submitted")
|
|
10988
11420
|
return;
|
|
10989
|
-
if ((
|
|
11421
|
+
if ((_a14 = this.activeResponse) == null ? void 0 : _a14.abortController) {
|
|
10990
11422
|
this.activeResponse.abortController.abort();
|
|
10991
11423
|
}
|
|
10992
11424
|
};
|
|
@@ -11041,7 +11473,7 @@ var AbstractChat = class {
|
|
|
11041
11473
|
body,
|
|
11042
11474
|
messageId
|
|
11043
11475
|
}) {
|
|
11044
|
-
var
|
|
11476
|
+
var _a14, _b, _c, _d;
|
|
11045
11477
|
this.setStatus({ status: "submitted", error: void 0 });
|
|
11046
11478
|
const lastMessage = this.lastMessage;
|
|
11047
11479
|
let isAbort = false;
|
|
@@ -11090,9 +11522,9 @@ var AbstractChat = class {
|
|
|
11090
11522
|
() => job({
|
|
11091
11523
|
state: activeResponse.state,
|
|
11092
11524
|
write: () => {
|
|
11093
|
-
var
|
|
11525
|
+
var _a15;
|
|
11094
11526
|
this.setStatus({ status: "streaming" });
|
|
11095
|
-
const replaceLastMessage = activeResponse.state.message.id === ((
|
|
11527
|
+
const replaceLastMessage = activeResponse.state.message.id === ((_a15 = this.lastMessage) == null ? void 0 : _a15.id);
|
|
11096
11528
|
if (replaceLastMessage) {
|
|
11097
11529
|
this.state.replaceMessage(
|
|
11098
11530
|
this.state.messages.length - 1,
|
|
@@ -11144,7 +11576,7 @@ var AbstractChat = class {
|
|
|
11144
11576
|
isAbort,
|
|
11145
11577
|
isDisconnect,
|
|
11146
11578
|
isError,
|
|
11147
|
-
finishReason: (
|
|
11579
|
+
finishReason: (_a14 = this.activeResponse) == null ? void 0 : _a14.state.finishReason
|
|
11148
11580
|
});
|
|
11149
11581
|
} catch (err) {
|
|
11150
11582
|
console.error(err);
|
|
@@ -11177,7 +11609,7 @@ function lastAssistantMessageIsCompleteWithApprovalResponses({
|
|
|
11177
11609
|
const lastStepStartIndex = message.parts.reduce((lastIndex, part, index) => {
|
|
11178
11610
|
return part.type === "step-start" ? index : lastIndex;
|
|
11179
11611
|
}, -1);
|
|
11180
|
-
const lastStepToolInvocations = message.parts.slice(lastStepStartIndex + 1).filter(
|
|
11612
|
+
const lastStepToolInvocations = message.parts.slice(lastStepStartIndex + 1).filter(isToolUIPart).filter((part) => !part.providerExecuted);
|
|
11181
11613
|
return (
|
|
11182
11614
|
// has at least one tool approval response
|
|
11183
11615
|
lastStepToolInvocations.filter((part) => part.state === "approval-responded").length > 0 && // all tool approvals must have a response
|
|
@@ -11201,7 +11633,7 @@ function lastAssistantMessageIsCompleteWithToolCalls({
|
|
|
11201
11633
|
const lastStepStartIndex = message.parts.reduce((lastIndex, part, index) => {
|
|
11202
11634
|
return part.type === "step-start" ? index : lastIndex;
|
|
11203
11635
|
}, -1);
|
|
11204
|
-
const lastStepToolInvocations = message.parts.slice(lastStepStartIndex + 1).filter(
|
|
11636
|
+
const lastStepToolInvocations = message.parts.slice(lastStepStartIndex + 1).filter(isToolUIPart).filter((part) => !part.providerExecuted);
|
|
11205
11637
|
return lastStepToolInvocations.length > 0 && lastStepToolInvocations.every(
|
|
11206
11638
|
(part) => part.state === "output-available" || part.state === "output-error"
|
|
11207
11639
|
);
|
|
@@ -11282,18 +11714,13 @@ var TextStreamChatTransport = class extends HttpChatTransport {
|
|
|
11282
11714
|
UI_MESSAGE_STREAM_HEADERS,
|
|
11283
11715
|
UnsupportedFunctionalityError,
|
|
11284
11716
|
UnsupportedModelVersionError,
|
|
11717
|
+
addToolInputExamplesMiddleware,
|
|
11285
11718
|
asSchema,
|
|
11286
11719
|
assistantModelMessageSchema,
|
|
11287
11720
|
callCompletionApi,
|
|
11288
11721
|
consumeStream,
|
|
11289
11722
|
convertFileListToFileUIParts,
|
|
11290
|
-
convertToCoreMessages,
|
|
11291
11723
|
convertToModelMessages,
|
|
11292
|
-
coreAssistantMessageSchema,
|
|
11293
|
-
coreMessageSchema,
|
|
11294
|
-
coreSystemMessageSchema,
|
|
11295
|
-
coreToolMessageSchema,
|
|
11296
|
-
coreUserMessageSchema,
|
|
11297
11724
|
cosineSimilarity,
|
|
11298
11725
|
createAgentUIStream,
|
|
11299
11726
|
createAgentUIStreamResponse,
|
|
@@ -11317,8 +11744,10 @@ var TextStreamChatTransport = class extends HttpChatTransport {
|
|
|
11317
11744
|
extractReasoningMiddleware,
|
|
11318
11745
|
gateway,
|
|
11319
11746
|
generateId,
|
|
11747
|
+
generateImage,
|
|
11320
11748
|
generateObject,
|
|
11321
11749
|
generateText,
|
|
11750
|
+
getStaticToolName,
|
|
11322
11751
|
getTextFromDataUrl,
|
|
11323
11752
|
getToolName,
|
|
11324
11753
|
getToolOrDynamicToolName,
|
|
@@ -11327,6 +11756,7 @@ var TextStreamChatTransport = class extends HttpChatTransport {
|
|
|
11327
11756
|
isDeepEqualData,
|
|
11328
11757
|
isFileUIPart,
|
|
11329
11758
|
isReasoningUIPart,
|
|
11759
|
+
isStaticToolUIPart,
|
|
11330
11760
|
isTextUIPart,
|
|
11331
11761
|
isToolOrDynamicToolUIPart,
|
|
11332
11762
|
isToolUIPart,
|