ai 6.0.0-beta.99 → 6.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +830 -0
- package/README.md +17 -13
- package/dist/index.d.mts +924 -624
- package/dist/index.d.ts +924 -624
- package/dist/index.js +1394 -976
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1209 -785
- 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.
|
|
954
|
+
var VERSION = true ? "6.0.1" : "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;
|
|
@@ -6722,23 +7032,25 @@ var ToolLoopAgent = class {
|
|
|
6722
7032
|
*/
|
|
6723
7033
|
async stream({
|
|
6724
7034
|
abortSignal,
|
|
7035
|
+
experimental_transform,
|
|
6725
7036
|
...options
|
|
6726
7037
|
}) {
|
|
6727
7038
|
return streamText({
|
|
6728
7039
|
...await this.prepareCall(options),
|
|
6729
|
-
abortSignal
|
|
7040
|
+
abortSignal,
|
|
7041
|
+
experimental_transform
|
|
6730
7042
|
});
|
|
6731
7043
|
}
|
|
6732
7044
|
};
|
|
6733
7045
|
|
|
6734
7046
|
// src/ui-message-stream/create-ui-message-stream.ts
|
|
6735
|
-
var
|
|
7047
|
+
var import_provider_utils20 = require("@ai-sdk/provider-utils");
|
|
6736
7048
|
function createUIMessageStream({
|
|
6737
7049
|
execute,
|
|
6738
|
-
onError =
|
|
7050
|
+
onError = import_provider_utils20.getErrorMessage,
|
|
6739
7051
|
originalMessages,
|
|
6740
7052
|
onFinish,
|
|
6741
|
-
generateId: generateId2 =
|
|
7053
|
+
generateId: generateId2 = import_provider_utils20.generateId
|
|
6742
7054
|
}) {
|
|
6743
7055
|
let controller;
|
|
6744
7056
|
const ongoingStreamPromises = [];
|
|
@@ -6824,7 +7136,7 @@ function readUIMessageStream({
|
|
|
6824
7136
|
onError,
|
|
6825
7137
|
terminateOnError = false
|
|
6826
7138
|
}) {
|
|
6827
|
-
var
|
|
7139
|
+
var _a14;
|
|
6828
7140
|
let controller;
|
|
6829
7141
|
let hasErrored = false;
|
|
6830
7142
|
const outputStream = new ReadableStream({
|
|
@@ -6833,7 +7145,7 @@ function readUIMessageStream({
|
|
|
6833
7145
|
}
|
|
6834
7146
|
});
|
|
6835
7147
|
const state = createStreamingUIMessageState({
|
|
6836
|
-
messageId: (
|
|
7148
|
+
messageId: (_a14 = message == null ? void 0 : message.id) != null ? _a14 : "",
|
|
6837
7149
|
lastMessage: message
|
|
6838
7150
|
});
|
|
6839
7151
|
const handleError = (error) => {
|
|
@@ -6866,14 +7178,14 @@ function readUIMessageStream({
|
|
|
6866
7178
|
}
|
|
6867
7179
|
|
|
6868
7180
|
// src/ui/convert-to-model-messages.ts
|
|
6869
|
-
var
|
|
6870
|
-
function convertToModelMessages(messages, options) {
|
|
7181
|
+
var import_provider_utils21 = require("@ai-sdk/provider-utils");
|
|
7182
|
+
async function convertToModelMessages(messages, options) {
|
|
6871
7183
|
const modelMessages = [];
|
|
6872
7184
|
if (options == null ? void 0 : options.ignoreIncompleteToolCalls) {
|
|
6873
7185
|
messages = messages.map((message) => ({
|
|
6874
7186
|
...message,
|
|
6875
7187
|
parts: message.parts.filter(
|
|
6876
|
-
(part) => !
|
|
7188
|
+
(part) => !isToolUIPart(part) || part.state !== "input-streaming" && part.state !== "input-available"
|
|
6877
7189
|
)
|
|
6878
7190
|
}));
|
|
6879
7191
|
}
|
|
@@ -6900,7 +7212,7 @@ function convertToModelMessages(messages, options) {
|
|
|
6900
7212
|
modelMessages.push({
|
|
6901
7213
|
role: "user",
|
|
6902
7214
|
content: message.parts.map((part) => {
|
|
6903
|
-
var
|
|
7215
|
+
var _a14;
|
|
6904
7216
|
if (isTextUIPart(part)) {
|
|
6905
7217
|
return {
|
|
6906
7218
|
type: "text",
|
|
@@ -6918,19 +7230,20 @@ function convertToModelMessages(messages, options) {
|
|
|
6918
7230
|
};
|
|
6919
7231
|
}
|
|
6920
7232
|
if (isDataUIPart(part)) {
|
|
6921
|
-
return (
|
|
7233
|
+
return (_a14 = options == null ? void 0 : options.convertDataPart) == null ? void 0 : _a14.call(
|
|
6922
7234
|
options,
|
|
6923
7235
|
part
|
|
6924
7236
|
);
|
|
6925
7237
|
}
|
|
6926
|
-
}).filter(
|
|
7238
|
+
}).filter(import_provider_utils21.isNonNullable)
|
|
6927
7239
|
});
|
|
6928
7240
|
break;
|
|
6929
7241
|
}
|
|
6930
7242
|
case "assistant": {
|
|
6931
7243
|
if (message.parts != null) {
|
|
6932
|
-
let
|
|
6933
|
-
|
|
7244
|
+
let block = [];
|
|
7245
|
+
async function processBlock() {
|
|
7246
|
+
var _a14, _b, _c, _d, _e, _f;
|
|
6934
7247
|
if (block.length === 0) {
|
|
6935
7248
|
return;
|
|
6936
7249
|
}
|
|
@@ -6955,14 +7268,14 @@ function convertToModelMessages(messages, options) {
|
|
|
6955
7268
|
text: part.text,
|
|
6956
7269
|
providerOptions: part.providerMetadata
|
|
6957
7270
|
});
|
|
6958
|
-
} else if (
|
|
6959
|
-
const toolName =
|
|
7271
|
+
} else if (isToolUIPart(part)) {
|
|
7272
|
+
const toolName = getToolName(part);
|
|
6960
7273
|
if (part.state !== "input-streaming") {
|
|
6961
7274
|
content.push({
|
|
6962
7275
|
type: "tool-call",
|
|
6963
7276
|
toolCallId: part.toolCallId,
|
|
6964
7277
|
toolName,
|
|
6965
|
-
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,
|
|
6966
7279
|
providerExecuted: part.providerExecuted,
|
|
6967
7280
|
...part.callProviderMetadata != null ? { providerOptions: part.callProviderMetadata } : {}
|
|
6968
7281
|
});
|
|
@@ -6978,11 +7291,14 @@ function convertToModelMessages(messages, options) {
|
|
|
6978
7291
|
type: "tool-result",
|
|
6979
7292
|
toolCallId: part.toolCallId,
|
|
6980
7293
|
toolName,
|
|
6981
|
-
output: createToolModelOutput({
|
|
7294
|
+
output: await createToolModelOutput({
|
|
7295
|
+
toolCallId: part.toolCallId,
|
|
7296
|
+
input: part.input,
|
|
6982
7297
|
output: part.state === "output-error" ? part.errorText : part.output,
|
|
6983
7298
|
tool: (_b = options == null ? void 0 : options.tools) == null ? void 0 : _b[toolName],
|
|
6984
7299
|
errorMode: part.state === "output-error" ? "json" : "none"
|
|
6985
|
-
})
|
|
7300
|
+
}),
|
|
7301
|
+
...part.callProviderMetadata != null ? { providerOptions: part.callProviderMetadata } : {}
|
|
6986
7302
|
});
|
|
6987
7303
|
}
|
|
6988
7304
|
}
|
|
@@ -7004,69 +7320,70 @@ function convertToModelMessages(messages, options) {
|
|
|
7004
7320
|
content
|
|
7005
7321
|
});
|
|
7006
7322
|
const toolParts = block.filter(
|
|
7007
|
-
(part) =>
|
|
7323
|
+
(part) => isToolUIPart(part) && part.providerExecuted !== true
|
|
7008
7324
|
);
|
|
7009
7325
|
if (toolParts.length > 0) {
|
|
7010
|
-
|
|
7011
|
-
|
|
7012
|
-
|
|
7013
|
-
(toolPart)
|
|
7014
|
-
|
|
7015
|
-
|
|
7016
|
-
|
|
7017
|
-
|
|
7018
|
-
|
|
7019
|
-
|
|
7020
|
-
|
|
7021
|
-
|
|
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 } : {}
|
|
7022
7348
|
});
|
|
7349
|
+
break;
|
|
7023
7350
|
}
|
|
7024
|
-
|
|
7025
|
-
|
|
7026
|
-
|
|
7027
|
-
|
|
7028
|
-
|
|
7029
|
-
|
|
7030
|
-
|
|
7031
|
-
|
|
7032
|
-
value: (_b2 = toolPart.approval.reason) != null ? _b2 : "Tool execution denied."
|
|
7033
|
-
}
|
|
7034
|
-
});
|
|
7035
|
-
break;
|
|
7036
|
-
}
|
|
7037
|
-
case "output-error":
|
|
7038
|
-
case "output-available": {
|
|
7039
|
-
const toolName = getToolOrDynamicToolName(toolPart);
|
|
7040
|
-
outputs.push({
|
|
7041
|
-
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({
|
|
7042
7359
|
toolCallId: toolPart.toolCallId,
|
|
7043
|
-
|
|
7044
|
-
output:
|
|
7045
|
-
|
|
7046
|
-
|
|
7047
|
-
|
|
7048
|
-
|
|
7049
|
-
|
|
7050
|
-
|
|
7051
|
-
}
|
|
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;
|
|
7052
7368
|
}
|
|
7053
|
-
return outputs;
|
|
7054
7369
|
}
|
|
7055
|
-
|
|
7056
|
-
|
|
7370
|
+
}
|
|
7371
|
+
modelMessages.push({
|
|
7372
|
+
role: "tool",
|
|
7373
|
+
content: content2
|
|
7374
|
+
});
|
|
7375
|
+
}
|
|
7057
7376
|
}
|
|
7058
7377
|
block = [];
|
|
7059
|
-
}
|
|
7060
|
-
var processBlock = processBlock2;
|
|
7061
|
-
let block = [];
|
|
7378
|
+
}
|
|
7062
7379
|
for (const part of message.parts) {
|
|
7063
|
-
if (isTextUIPart(part) || isReasoningUIPart(part) || isFileUIPart(part) ||
|
|
7380
|
+
if (isTextUIPart(part) || isReasoningUIPart(part) || isFileUIPart(part) || isToolUIPart(part) || isDataUIPart(part)) {
|
|
7064
7381
|
block.push(part);
|
|
7065
7382
|
} else if (part.type === "step-start") {
|
|
7066
|
-
|
|
7383
|
+
await processBlock();
|
|
7067
7384
|
}
|
|
7068
7385
|
}
|
|
7069
|
-
|
|
7386
|
+
await processBlock();
|
|
7070
7387
|
break;
|
|
7071
7388
|
}
|
|
7072
7389
|
break;
|
|
@@ -7082,14 +7399,13 @@ function convertToModelMessages(messages, options) {
|
|
|
7082
7399
|
}
|
|
7083
7400
|
return modelMessages;
|
|
7084
7401
|
}
|
|
7085
|
-
var convertToCoreMessages = convertToModelMessages;
|
|
7086
7402
|
|
|
7087
7403
|
// src/ui/validate-ui-messages.ts
|
|
7088
|
-
var
|
|
7089
|
-
var
|
|
7404
|
+
var import_provider23 = require("@ai-sdk/provider");
|
|
7405
|
+
var import_provider_utils22 = require("@ai-sdk/provider-utils");
|
|
7090
7406
|
var import_v48 = require("zod/v4");
|
|
7091
|
-
var uiMessagesSchema = (0,
|
|
7092
|
-
() => (0,
|
|
7407
|
+
var uiMessagesSchema = (0, import_provider_utils22.lazySchema)(
|
|
7408
|
+
() => (0, import_provider_utils22.zodSchema)(
|
|
7093
7409
|
import_v48.z.array(
|
|
7094
7410
|
import_v48.z.object({
|
|
7095
7411
|
id: import_v48.z.string(),
|
|
@@ -7363,13 +7679,13 @@ async function safeValidateUIMessages({
|
|
|
7363
7679
|
})
|
|
7364
7680
|
};
|
|
7365
7681
|
}
|
|
7366
|
-
const validatedMessages = await (0,
|
|
7682
|
+
const validatedMessages = await (0, import_provider_utils22.validateTypes)({
|
|
7367
7683
|
value: messages,
|
|
7368
7684
|
schema: uiMessagesSchema
|
|
7369
7685
|
});
|
|
7370
7686
|
if (metadataSchema) {
|
|
7371
7687
|
for (const message of validatedMessages) {
|
|
7372
|
-
await (0,
|
|
7688
|
+
await (0, import_provider_utils22.validateTypes)({
|
|
7373
7689
|
value: message.metadata,
|
|
7374
7690
|
schema: metadataSchema
|
|
7375
7691
|
});
|
|
@@ -7386,13 +7702,13 @@ async function safeValidateUIMessages({
|
|
|
7386
7702
|
if (!dataSchema) {
|
|
7387
7703
|
return {
|
|
7388
7704
|
success: false,
|
|
7389
|
-
error: new
|
|
7705
|
+
error: new import_provider23.TypeValidationError({
|
|
7390
7706
|
value: dataPart.data,
|
|
7391
7707
|
cause: `No data schema found for data part ${dataName}`
|
|
7392
7708
|
})
|
|
7393
7709
|
};
|
|
7394
7710
|
}
|
|
7395
|
-
await (0,
|
|
7711
|
+
await (0, import_provider_utils22.validateTypes)({
|
|
7396
7712
|
value: dataPart.data,
|
|
7397
7713
|
schema: dataSchema
|
|
7398
7714
|
});
|
|
@@ -7410,20 +7726,20 @@ async function safeValidateUIMessages({
|
|
|
7410
7726
|
if (!tool2) {
|
|
7411
7727
|
return {
|
|
7412
7728
|
success: false,
|
|
7413
|
-
error: new
|
|
7729
|
+
error: new import_provider23.TypeValidationError({
|
|
7414
7730
|
value: toolPart.input,
|
|
7415
7731
|
cause: `No tool schema found for tool part ${toolName}`
|
|
7416
7732
|
})
|
|
7417
7733
|
};
|
|
7418
7734
|
}
|
|
7419
7735
|
if (toolPart.state === "input-available" || toolPart.state === "output-available" || toolPart.state === "output-error") {
|
|
7420
|
-
await (0,
|
|
7736
|
+
await (0, import_provider_utils22.validateTypes)({
|
|
7421
7737
|
value: toolPart.input,
|
|
7422
7738
|
schema: tool2.inputSchema
|
|
7423
7739
|
});
|
|
7424
7740
|
}
|
|
7425
7741
|
if (toolPart.state === "output-available" && tool2.outputSchema) {
|
|
7426
|
-
await (0,
|
|
7742
|
+
await (0, import_provider_utils22.validateTypes)({
|
|
7427
7743
|
value: toolPart.output,
|
|
7428
7744
|
schema: tool2.outputSchema
|
|
7429
7745
|
});
|
|
@@ -7463,20 +7779,24 @@ async function validateUIMessages({
|
|
|
7463
7779
|
// src/agent/create-agent-ui-stream.ts
|
|
7464
7780
|
async function createAgentUIStream({
|
|
7465
7781
|
agent,
|
|
7466
|
-
|
|
7782
|
+
uiMessages,
|
|
7467
7783
|
options,
|
|
7784
|
+
abortSignal,
|
|
7785
|
+
experimental_transform,
|
|
7468
7786
|
...uiMessageStreamOptions
|
|
7469
7787
|
}) {
|
|
7470
7788
|
const validatedMessages = await validateUIMessages({
|
|
7471
|
-
messages,
|
|
7789
|
+
messages: uiMessages,
|
|
7472
7790
|
tools: agent.tools
|
|
7473
7791
|
});
|
|
7474
|
-
const modelMessages = convertToModelMessages(validatedMessages, {
|
|
7792
|
+
const modelMessages = await convertToModelMessages(validatedMessages, {
|
|
7475
7793
|
tools: agent.tools
|
|
7476
7794
|
});
|
|
7477
7795
|
const result = await agent.stream({
|
|
7478
7796
|
prompt: modelMessages,
|
|
7479
|
-
options
|
|
7797
|
+
options,
|
|
7798
|
+
abortSignal,
|
|
7799
|
+
experimental_transform
|
|
7480
7800
|
});
|
|
7481
7801
|
return result.toUIMessageStream(uiMessageStreamOptions);
|
|
7482
7802
|
}
|
|
@@ -7518,7 +7838,7 @@ async function pipeAgentUIStreamToResponse({
|
|
|
7518
7838
|
}
|
|
7519
7839
|
|
|
7520
7840
|
// src/embed/embed.ts
|
|
7521
|
-
var
|
|
7841
|
+
var import_provider_utils23 = require("@ai-sdk/provider-utils");
|
|
7522
7842
|
async function embed({
|
|
7523
7843
|
model: modelArg,
|
|
7524
7844
|
value,
|
|
@@ -7533,7 +7853,7 @@ async function embed({
|
|
|
7533
7853
|
maxRetries: maxRetriesArg,
|
|
7534
7854
|
abortSignal
|
|
7535
7855
|
});
|
|
7536
|
-
const headersWithUserAgent = (0,
|
|
7856
|
+
const headersWithUserAgent = (0, import_provider_utils23.withUserAgentSuffix)(
|
|
7537
7857
|
headers != null ? headers : {},
|
|
7538
7858
|
`ai/${VERSION}`
|
|
7539
7859
|
);
|
|
@@ -7556,7 +7876,7 @@ async function embed({
|
|
|
7556
7876
|
}),
|
|
7557
7877
|
tracer,
|
|
7558
7878
|
fn: async (span) => {
|
|
7559
|
-
const { embedding, usage, response, providerMetadata } = await retry(
|
|
7879
|
+
const { embedding, usage, warnings, response, providerMetadata } = await retry(
|
|
7560
7880
|
() => (
|
|
7561
7881
|
// nested spans to align with the embedMany telemetry data:
|
|
7562
7882
|
recordSpan({
|
|
@@ -7575,7 +7895,7 @@ async function embed({
|
|
|
7575
7895
|
}),
|
|
7576
7896
|
tracer,
|
|
7577
7897
|
fn: async (doEmbedSpan) => {
|
|
7578
|
-
var
|
|
7898
|
+
var _a14;
|
|
7579
7899
|
const modelResponse = await model.doEmbed({
|
|
7580
7900
|
values: [value],
|
|
7581
7901
|
abortSignal,
|
|
@@ -7583,7 +7903,7 @@ async function embed({
|
|
|
7583
7903
|
providerOptions
|
|
7584
7904
|
});
|
|
7585
7905
|
const embedding2 = modelResponse.embeddings[0];
|
|
7586
|
-
const usage2 = (
|
|
7906
|
+
const usage2 = (_a14 = modelResponse.usage) != null ? _a14 : { tokens: NaN };
|
|
7587
7907
|
doEmbedSpan.setAttributes(
|
|
7588
7908
|
await selectTelemetryAttributes({
|
|
7589
7909
|
telemetry,
|
|
@@ -7600,6 +7920,7 @@ async function embed({
|
|
|
7600
7920
|
return {
|
|
7601
7921
|
embedding: embedding2,
|
|
7602
7922
|
usage: usage2,
|
|
7923
|
+
warnings: modelResponse.warnings,
|
|
7603
7924
|
providerMetadata: modelResponse.providerMetadata,
|
|
7604
7925
|
response: modelResponse.response
|
|
7605
7926
|
};
|
|
@@ -7616,10 +7937,12 @@ async function embed({
|
|
|
7616
7937
|
}
|
|
7617
7938
|
})
|
|
7618
7939
|
);
|
|
7940
|
+
logWarnings({ warnings, provider: model.provider, model: model.modelId });
|
|
7619
7941
|
return new DefaultEmbedResult({
|
|
7620
7942
|
value,
|
|
7621
7943
|
embedding,
|
|
7622
7944
|
usage,
|
|
7945
|
+
warnings,
|
|
7623
7946
|
providerMetadata,
|
|
7624
7947
|
response
|
|
7625
7948
|
});
|
|
@@ -7631,13 +7954,14 @@ var DefaultEmbedResult = class {
|
|
|
7631
7954
|
this.value = options.value;
|
|
7632
7955
|
this.embedding = options.embedding;
|
|
7633
7956
|
this.usage = options.usage;
|
|
7957
|
+
this.warnings = options.warnings;
|
|
7634
7958
|
this.providerMetadata = options.providerMetadata;
|
|
7635
7959
|
this.response = options.response;
|
|
7636
7960
|
}
|
|
7637
7961
|
};
|
|
7638
7962
|
|
|
7639
7963
|
// src/embed/embed-many.ts
|
|
7640
|
-
var
|
|
7964
|
+
var import_provider_utils24 = require("@ai-sdk/provider-utils");
|
|
7641
7965
|
|
|
7642
7966
|
// src/util/split-array.ts
|
|
7643
7967
|
function splitArray(array2, chunkSize) {
|
|
@@ -7667,7 +7991,7 @@ async function embedMany({
|
|
|
7667
7991
|
maxRetries: maxRetriesArg,
|
|
7668
7992
|
abortSignal
|
|
7669
7993
|
});
|
|
7670
|
-
const headersWithUserAgent = (0,
|
|
7994
|
+
const headersWithUserAgent = (0, import_provider_utils24.withUserAgentSuffix)(
|
|
7671
7995
|
headers != null ? headers : {},
|
|
7672
7996
|
`ai/${VERSION}`
|
|
7673
7997
|
);
|
|
@@ -7693,64 +8017,63 @@ async function embedMany({
|
|
|
7693
8017
|
}),
|
|
7694
8018
|
tracer,
|
|
7695
8019
|
fn: async (span) => {
|
|
7696
|
-
var
|
|
8020
|
+
var _a14;
|
|
7697
8021
|
const [maxEmbeddingsPerCall, supportsParallelCalls] = await Promise.all([
|
|
7698
8022
|
model.maxEmbeddingsPerCall,
|
|
7699
8023
|
model.supportsParallelCalls
|
|
7700
8024
|
]);
|
|
7701
8025
|
if (maxEmbeddingsPerCall == null || maxEmbeddingsPerCall === Infinity) {
|
|
7702
|
-
const { embeddings: embeddings2, usage, response, providerMetadata: providerMetadata2 } = await retry(
|
|
7703
|
-
(
|
|
7704
|
-
|
|
7705
|
-
|
|
7706
|
-
|
|
7707
|
-
|
|
7708
|
-
|
|
7709
|
-
|
|
7710
|
-
|
|
7711
|
-
|
|
7712
|
-
|
|
7713
|
-
|
|
7714
|
-
|
|
7715
|
-
|
|
7716
|
-
input: () => values.map((value) => JSON.stringify(value))
|
|
7717
|
-
}
|
|
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))
|
|
7718
8040
|
}
|
|
7719
|
-
}),
|
|
7720
|
-
tracer,
|
|
7721
|
-
fn: async (doEmbedSpan) => {
|
|
7722
|
-
var _a16;
|
|
7723
|
-
const modelResponse = await model.doEmbed({
|
|
7724
|
-
values,
|
|
7725
|
-
abortSignal,
|
|
7726
|
-
headers: headersWithUserAgent,
|
|
7727
|
-
providerOptions
|
|
7728
|
-
});
|
|
7729
|
-
const embeddings3 = modelResponse.embeddings;
|
|
7730
|
-
const usage2 = (_a16 = modelResponse.usage) != null ? _a16 : { tokens: NaN };
|
|
7731
|
-
doEmbedSpan.setAttributes(
|
|
7732
|
-
await selectTelemetryAttributes({
|
|
7733
|
-
telemetry,
|
|
7734
|
-
attributes: {
|
|
7735
|
-
"ai.embeddings": {
|
|
7736
|
-
output: () => embeddings3.map(
|
|
7737
|
-
(embedding) => JSON.stringify(embedding)
|
|
7738
|
-
)
|
|
7739
|
-
},
|
|
7740
|
-
"ai.usage.tokens": usage2.tokens
|
|
7741
|
-
}
|
|
7742
|
-
})
|
|
7743
|
-
);
|
|
7744
|
-
return {
|
|
7745
|
-
embeddings: embeddings3,
|
|
7746
|
-
usage: usage2,
|
|
7747
|
-
providerMetadata: modelResponse.providerMetadata,
|
|
7748
|
-
response: modelResponse.response
|
|
7749
|
-
};
|
|
7750
8041
|
}
|
|
7751
|
-
})
|
|
7752
|
-
|
|
7753
|
-
|
|
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
|
+
});
|
|
7754
8077
|
span.setAttributes(
|
|
7755
8078
|
await selectTelemetryAttributes({
|
|
7756
8079
|
telemetry,
|
|
@@ -7762,16 +8085,23 @@ async function embedMany({
|
|
|
7762
8085
|
}
|
|
7763
8086
|
})
|
|
7764
8087
|
);
|
|
8088
|
+
logWarnings({
|
|
8089
|
+
warnings: warnings2,
|
|
8090
|
+
provider: model.provider,
|
|
8091
|
+
model: model.modelId
|
|
8092
|
+
});
|
|
7765
8093
|
return new DefaultEmbedManyResult({
|
|
7766
8094
|
values,
|
|
7767
8095
|
embeddings: embeddings2,
|
|
7768
8096
|
usage,
|
|
8097
|
+
warnings: warnings2,
|
|
7769
8098
|
providerMetadata: providerMetadata2,
|
|
7770
8099
|
responses: [response]
|
|
7771
8100
|
});
|
|
7772
8101
|
}
|
|
7773
8102
|
const valueChunks = splitArray(values, maxEmbeddingsPerCall);
|
|
7774
8103
|
const embeddings = [];
|
|
8104
|
+
const warnings = [];
|
|
7775
8105
|
const responses = [];
|
|
7776
8106
|
let tokens = 0;
|
|
7777
8107
|
let providerMetadata;
|
|
@@ -7801,7 +8131,7 @@ async function embedMany({
|
|
|
7801
8131
|
}),
|
|
7802
8132
|
tracer,
|
|
7803
8133
|
fn: async (doEmbedSpan) => {
|
|
7804
|
-
var
|
|
8134
|
+
var _a15;
|
|
7805
8135
|
const modelResponse = await model.doEmbed({
|
|
7806
8136
|
values: chunk,
|
|
7807
8137
|
abortSignal,
|
|
@@ -7809,7 +8139,7 @@ async function embedMany({
|
|
|
7809
8139
|
providerOptions
|
|
7810
8140
|
});
|
|
7811
8141
|
const embeddings2 = modelResponse.embeddings;
|
|
7812
|
-
const usage = (
|
|
8142
|
+
const usage = (_a15 = modelResponse.usage) != null ? _a15 : { tokens: NaN };
|
|
7813
8143
|
doEmbedSpan.setAttributes(
|
|
7814
8144
|
await selectTelemetryAttributes({
|
|
7815
8145
|
telemetry,
|
|
@@ -7826,6 +8156,7 @@ async function embedMany({
|
|
|
7826
8156
|
return {
|
|
7827
8157
|
embeddings: embeddings2,
|
|
7828
8158
|
usage,
|
|
8159
|
+
warnings: modelResponse.warnings,
|
|
7829
8160
|
providerMetadata: modelResponse.providerMetadata,
|
|
7830
8161
|
response: modelResponse.response
|
|
7831
8162
|
};
|
|
@@ -7836,6 +8167,7 @@ async function embedMany({
|
|
|
7836
8167
|
);
|
|
7837
8168
|
for (const result of results) {
|
|
7838
8169
|
embeddings.push(...result.embeddings);
|
|
8170
|
+
warnings.push(...result.warnings);
|
|
7839
8171
|
responses.push(result.response);
|
|
7840
8172
|
tokens += result.usage.tokens;
|
|
7841
8173
|
if (result.providerMetadata) {
|
|
@@ -7846,7 +8178,7 @@ async function embedMany({
|
|
|
7846
8178
|
result.providerMetadata
|
|
7847
8179
|
)) {
|
|
7848
8180
|
providerMetadata[providerName] = {
|
|
7849
|
-
...(
|
|
8181
|
+
...(_a14 = providerMetadata[providerName]) != null ? _a14 : {},
|
|
7850
8182
|
...metadata
|
|
7851
8183
|
};
|
|
7852
8184
|
}
|
|
@@ -7865,10 +8197,16 @@ async function embedMany({
|
|
|
7865
8197
|
}
|
|
7866
8198
|
})
|
|
7867
8199
|
);
|
|
8200
|
+
logWarnings({
|
|
8201
|
+
warnings,
|
|
8202
|
+
provider: model.provider,
|
|
8203
|
+
model: model.modelId
|
|
8204
|
+
});
|
|
7868
8205
|
return new DefaultEmbedManyResult({
|
|
7869
8206
|
values,
|
|
7870
8207
|
embeddings,
|
|
7871
8208
|
usage: { tokens },
|
|
8209
|
+
warnings,
|
|
7872
8210
|
providerMetadata,
|
|
7873
8211
|
responses
|
|
7874
8212
|
});
|
|
@@ -7880,16 +8218,17 @@ var DefaultEmbedManyResult = class {
|
|
|
7880
8218
|
this.values = options.values;
|
|
7881
8219
|
this.embeddings = options.embeddings;
|
|
7882
8220
|
this.usage = options.usage;
|
|
8221
|
+
this.warnings = options.warnings;
|
|
7883
8222
|
this.providerMetadata = options.providerMetadata;
|
|
7884
8223
|
this.responses = options.responses;
|
|
7885
8224
|
}
|
|
7886
8225
|
};
|
|
7887
8226
|
|
|
7888
8227
|
// src/generate-image/generate-image.ts
|
|
7889
|
-
var
|
|
8228
|
+
var import_provider_utils25 = require("@ai-sdk/provider-utils");
|
|
7890
8229
|
async function generateImage({
|
|
7891
|
-
model,
|
|
7892
|
-
prompt,
|
|
8230
|
+
model: modelArg,
|
|
8231
|
+
prompt: promptArg,
|
|
7893
8232
|
n = 1,
|
|
7894
8233
|
maxImagesPerCall,
|
|
7895
8234
|
size,
|
|
@@ -7900,15 +8239,9 @@ async function generateImage({
|
|
|
7900
8239
|
abortSignal,
|
|
7901
8240
|
headers
|
|
7902
8241
|
}) {
|
|
7903
|
-
var
|
|
7904
|
-
|
|
7905
|
-
|
|
7906
|
-
version: model.specificationVersion,
|
|
7907
|
-
provider: model.provider,
|
|
7908
|
-
modelId: model.modelId
|
|
7909
|
-
});
|
|
7910
|
-
}
|
|
7911
|
-
const headersWithUserAgent = (0, import_provider_utils23.withUserAgentSuffix)(
|
|
8242
|
+
var _a14, _b;
|
|
8243
|
+
const model = resolveImageModel(modelArg);
|
|
8244
|
+
const headersWithUserAgent = (0, import_provider_utils25.withUserAgentSuffix)(
|
|
7912
8245
|
headers != null ? headers : {},
|
|
7913
8246
|
`ai/${VERSION}`
|
|
7914
8247
|
);
|
|
@@ -7916,7 +8249,7 @@ async function generateImage({
|
|
|
7916
8249
|
maxRetries: maxRetriesArg,
|
|
7917
8250
|
abortSignal
|
|
7918
8251
|
});
|
|
7919
|
-
const maxImagesPerCallWithDefault = (
|
|
8252
|
+
const maxImagesPerCallWithDefault = (_a14 = maxImagesPerCall != null ? maxImagesPerCall : await invokeModelMaxImagesPerCall(model)) != null ? _a14 : 1;
|
|
7920
8253
|
const callCount = Math.ceil(n / maxImagesPerCallWithDefault);
|
|
7921
8254
|
const callImageCounts = Array.from({ length: callCount }, (_, i) => {
|
|
7922
8255
|
if (i < callCount - 1) {
|
|
@@ -7927,9 +8260,12 @@ async function generateImage({
|
|
|
7927
8260
|
});
|
|
7928
8261
|
const results = await Promise.all(
|
|
7929
8262
|
callImageCounts.map(
|
|
7930
|
-
async (callImageCount) => retry(
|
|
7931
|
-
|
|
8263
|
+
async (callImageCount) => retry(() => {
|
|
8264
|
+
const { prompt, files, mask } = normalizePrompt(promptArg);
|
|
8265
|
+
return model.doGenerate({
|
|
7932
8266
|
prompt,
|
|
8267
|
+
files,
|
|
8268
|
+
mask,
|
|
7933
8269
|
n: callImageCount,
|
|
7934
8270
|
abortSignal,
|
|
7935
8271
|
headers: headersWithUserAgent,
|
|
@@ -7937,8 +8273,8 @@ async function generateImage({
|
|
|
7937
8273
|
aspectRatio,
|
|
7938
8274
|
seed,
|
|
7939
8275
|
providerOptions: providerOptions != null ? providerOptions : {}
|
|
7940
|
-
})
|
|
7941
|
-
)
|
|
8276
|
+
});
|
|
8277
|
+
})
|
|
7942
8278
|
)
|
|
7943
8279
|
);
|
|
7944
8280
|
const images = [];
|
|
@@ -7954,13 +8290,13 @@ async function generateImage({
|
|
|
7954
8290
|
images.push(
|
|
7955
8291
|
...result.images.map(
|
|
7956
8292
|
(image) => {
|
|
7957
|
-
var
|
|
8293
|
+
var _a15;
|
|
7958
8294
|
return new DefaultGeneratedFile({
|
|
7959
8295
|
data: image,
|
|
7960
|
-
mediaType: (
|
|
8296
|
+
mediaType: (_a15 = detectMediaType({
|
|
7961
8297
|
data: image,
|
|
7962
8298
|
signatures: imageMediaTypeSignatures
|
|
7963
|
-
})) != null ?
|
|
8299
|
+
})) != null ? _a15 : "image/png"
|
|
7964
8300
|
});
|
|
7965
8301
|
}
|
|
7966
8302
|
)
|
|
@@ -7971,10 +8307,26 @@ async function generateImage({
|
|
|
7971
8307
|
}
|
|
7972
8308
|
if (result.providerMetadata) {
|
|
7973
8309
|
for (const [providerName, metadata] of Object.entries(result.providerMetadata)) {
|
|
7974
|
-
(
|
|
7975
|
-
|
|
7976
|
-
|
|
7977
|
-
|
|
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
|
+
}
|
|
7978
8330
|
}
|
|
7979
8331
|
}
|
|
7980
8332
|
responses.push(result.response);
|
|
@@ -8012,9 +8364,53 @@ async function invokeModelMaxImagesPerCall(model) {
|
|
|
8012
8364
|
modelId: model.modelId
|
|
8013
8365
|
});
|
|
8014
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;
|
|
8015
8411
|
|
|
8016
8412
|
// src/generate-object/generate-object.ts
|
|
8017
|
-
var
|
|
8413
|
+
var import_provider_utils28 = require("@ai-sdk/provider-utils");
|
|
8018
8414
|
|
|
8019
8415
|
// src/generate-text/extract-reasoning-content.ts
|
|
8020
8416
|
function extractReasoningContent(content) {
|
|
@@ -8025,8 +8421,8 @@ function extractReasoningContent(content) {
|
|
|
8025
8421
|
}
|
|
8026
8422
|
|
|
8027
8423
|
// src/generate-object/output-strategy.ts
|
|
8028
|
-
var
|
|
8029
|
-
var
|
|
8424
|
+
var import_provider24 = require("@ai-sdk/provider");
|
|
8425
|
+
var import_provider_utils26 = require("@ai-sdk/provider-utils");
|
|
8030
8426
|
var noSchemaOutputStrategy = {
|
|
8031
8427
|
type: "no-schema",
|
|
8032
8428
|
jsonSchema: async () => void 0,
|
|
@@ -8046,7 +8442,7 @@ var noSchemaOutputStrategy = {
|
|
|
8046
8442
|
} : { success: true, value };
|
|
8047
8443
|
},
|
|
8048
8444
|
createElementStream() {
|
|
8049
|
-
throw new
|
|
8445
|
+
throw new import_provider24.UnsupportedFunctionalityError({
|
|
8050
8446
|
functionality: "element streams in no-schema mode"
|
|
8051
8447
|
});
|
|
8052
8448
|
}
|
|
@@ -8065,10 +8461,10 @@ var objectOutputStrategy = (schema) => ({
|
|
|
8065
8461
|
};
|
|
8066
8462
|
},
|
|
8067
8463
|
async validateFinalResult(value) {
|
|
8068
|
-
return (0,
|
|
8464
|
+
return (0, import_provider_utils26.safeValidateTypes)({ value, schema });
|
|
8069
8465
|
},
|
|
8070
8466
|
createElementStream() {
|
|
8071
|
-
throw new
|
|
8467
|
+
throw new import_provider24.UnsupportedFunctionalityError({
|
|
8072
8468
|
functionality: "element streams in object mode"
|
|
8073
8469
|
});
|
|
8074
8470
|
}
|
|
@@ -8097,11 +8493,11 @@ var arrayOutputStrategy = (schema) => {
|
|
|
8097
8493
|
isFirstDelta,
|
|
8098
8494
|
isFinalDelta
|
|
8099
8495
|
}) {
|
|
8100
|
-
var
|
|
8101
|
-
if (!(0,
|
|
8496
|
+
var _a14;
|
|
8497
|
+
if (!(0, import_provider24.isJSONObject)(value) || !(0, import_provider24.isJSONArray)(value.elements)) {
|
|
8102
8498
|
return {
|
|
8103
8499
|
success: false,
|
|
8104
|
-
error: new
|
|
8500
|
+
error: new import_provider24.TypeValidationError({
|
|
8105
8501
|
value,
|
|
8106
8502
|
cause: "value must be an object that contains an array of elements"
|
|
8107
8503
|
})
|
|
@@ -8111,7 +8507,7 @@ var arrayOutputStrategy = (schema) => {
|
|
|
8111
8507
|
const resultArray = [];
|
|
8112
8508
|
for (let i = 0; i < inputArray.length; i++) {
|
|
8113
8509
|
const element = inputArray[i];
|
|
8114
|
-
const result = await (0,
|
|
8510
|
+
const result = await (0, import_provider_utils26.safeValidateTypes)({ value: element, schema });
|
|
8115
8511
|
if (i === inputArray.length - 1 && !isFinalDelta) {
|
|
8116
8512
|
continue;
|
|
8117
8513
|
}
|
|
@@ -8120,7 +8516,7 @@ var arrayOutputStrategy = (schema) => {
|
|
|
8120
8516
|
}
|
|
8121
8517
|
resultArray.push(result.value);
|
|
8122
8518
|
}
|
|
8123
|
-
const publishedElementCount = (
|
|
8519
|
+
const publishedElementCount = (_a14 = latestObject == null ? void 0 : latestObject.length) != null ? _a14 : 0;
|
|
8124
8520
|
let textDelta = "";
|
|
8125
8521
|
if (isFirstDelta) {
|
|
8126
8522
|
textDelta += "[";
|
|
@@ -8141,10 +8537,10 @@ var arrayOutputStrategy = (schema) => {
|
|
|
8141
8537
|
};
|
|
8142
8538
|
},
|
|
8143
8539
|
async validateFinalResult(value) {
|
|
8144
|
-
if (!(0,
|
|
8540
|
+
if (!(0, import_provider24.isJSONObject)(value) || !(0, import_provider24.isJSONArray)(value.elements)) {
|
|
8145
8541
|
return {
|
|
8146
8542
|
success: false,
|
|
8147
|
-
error: new
|
|
8543
|
+
error: new import_provider24.TypeValidationError({
|
|
8148
8544
|
value,
|
|
8149
8545
|
cause: "value must be an object that contains an array of elements"
|
|
8150
8546
|
})
|
|
@@ -8152,7 +8548,7 @@ var arrayOutputStrategy = (schema) => {
|
|
|
8152
8548
|
}
|
|
8153
8549
|
const inputArray = value.elements;
|
|
8154
8550
|
for (const element of inputArray) {
|
|
8155
|
-
const result = await (0,
|
|
8551
|
+
const result = await (0, import_provider_utils26.safeValidateTypes)({ value: element, schema });
|
|
8156
8552
|
if (!result.success) {
|
|
8157
8553
|
return result;
|
|
8158
8554
|
}
|
|
@@ -8207,10 +8603,10 @@ var enumOutputStrategy = (enumValues) => {
|
|
|
8207
8603
|
additionalProperties: false
|
|
8208
8604
|
}),
|
|
8209
8605
|
async validateFinalResult(value) {
|
|
8210
|
-
if (!(0,
|
|
8606
|
+
if (!(0, import_provider24.isJSONObject)(value) || typeof value.result !== "string") {
|
|
8211
8607
|
return {
|
|
8212
8608
|
success: false,
|
|
8213
|
-
error: new
|
|
8609
|
+
error: new import_provider24.TypeValidationError({
|
|
8214
8610
|
value,
|
|
8215
8611
|
cause: 'value must be an object that contains a string in the "result" property.'
|
|
8216
8612
|
})
|
|
@@ -8219,17 +8615,17 @@ var enumOutputStrategy = (enumValues) => {
|
|
|
8219
8615
|
const result = value.result;
|
|
8220
8616
|
return enumValues.includes(result) ? { success: true, value: result } : {
|
|
8221
8617
|
success: false,
|
|
8222
|
-
error: new
|
|
8618
|
+
error: new import_provider24.TypeValidationError({
|
|
8223
8619
|
value,
|
|
8224
8620
|
cause: "value must be a string in the enum"
|
|
8225
8621
|
})
|
|
8226
8622
|
};
|
|
8227
8623
|
},
|
|
8228
8624
|
async validatePartialResult({ value, textDelta }) {
|
|
8229
|
-
if (!(0,
|
|
8625
|
+
if (!(0, import_provider24.isJSONObject)(value) || typeof value.result !== "string") {
|
|
8230
8626
|
return {
|
|
8231
8627
|
success: false,
|
|
8232
|
-
error: new
|
|
8628
|
+
error: new import_provider24.TypeValidationError({
|
|
8233
8629
|
value,
|
|
8234
8630
|
cause: 'value must be an object that contains a string in the "result" property.'
|
|
8235
8631
|
})
|
|
@@ -8242,7 +8638,7 @@ var enumOutputStrategy = (enumValues) => {
|
|
|
8242
8638
|
if (value.result.length === 0 || possibleEnumValues.length === 0) {
|
|
8243
8639
|
return {
|
|
8244
8640
|
success: false,
|
|
8245
|
-
error: new
|
|
8641
|
+
error: new import_provider24.TypeValidationError({
|
|
8246
8642
|
value,
|
|
8247
8643
|
cause: "value must be a string in the enum"
|
|
8248
8644
|
})
|
|
@@ -8257,7 +8653,7 @@ var enumOutputStrategy = (enumValues) => {
|
|
|
8257
8653
|
};
|
|
8258
8654
|
},
|
|
8259
8655
|
createElementStream() {
|
|
8260
|
-
throw new
|
|
8656
|
+
throw new import_provider24.UnsupportedFunctionalityError({
|
|
8261
8657
|
functionality: "element streams in enum mode"
|
|
8262
8658
|
});
|
|
8263
8659
|
}
|
|
@@ -8270,9 +8666,9 @@ function getOutputStrategy({
|
|
|
8270
8666
|
}) {
|
|
8271
8667
|
switch (output) {
|
|
8272
8668
|
case "object":
|
|
8273
|
-
return objectOutputStrategy((0,
|
|
8669
|
+
return objectOutputStrategy((0, import_provider_utils26.asSchema)(schema));
|
|
8274
8670
|
case "array":
|
|
8275
|
-
return arrayOutputStrategy((0,
|
|
8671
|
+
return arrayOutputStrategy((0, import_provider_utils26.asSchema)(schema));
|
|
8276
8672
|
case "enum":
|
|
8277
8673
|
return enumOutputStrategy(enumValues);
|
|
8278
8674
|
case "no-schema":
|
|
@@ -8285,10 +8681,10 @@ function getOutputStrategy({
|
|
|
8285
8681
|
}
|
|
8286
8682
|
|
|
8287
8683
|
// src/generate-object/parse-and-validate-object-result.ts
|
|
8288
|
-
var
|
|
8289
|
-
var
|
|
8684
|
+
var import_provider25 = require("@ai-sdk/provider");
|
|
8685
|
+
var import_provider_utils27 = require("@ai-sdk/provider-utils");
|
|
8290
8686
|
async function parseAndValidateObjectResult(result, outputStrategy, context) {
|
|
8291
|
-
const parseResult = await (0,
|
|
8687
|
+
const parseResult = await (0, import_provider_utils27.safeParseJSON)({ text: result });
|
|
8292
8688
|
if (!parseResult.success) {
|
|
8293
8689
|
throw new NoObjectGeneratedError({
|
|
8294
8690
|
message: "No object generated: could not parse the response.",
|
|
@@ -8323,7 +8719,7 @@ async function parseAndValidateObjectResultWithRepair(result, outputStrategy, re
|
|
|
8323
8719
|
try {
|
|
8324
8720
|
return await parseAndValidateObjectResult(result, outputStrategy, context);
|
|
8325
8721
|
} catch (error) {
|
|
8326
|
-
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))) {
|
|
8327
8723
|
const repairedText = await repairText({
|
|
8328
8724
|
text: result,
|
|
8329
8725
|
error: error.cause
|
|
@@ -8460,7 +8856,7 @@ function validateObjectGenerationInput({
|
|
|
8460
8856
|
}
|
|
8461
8857
|
|
|
8462
8858
|
// src/generate-object/generate-object.ts
|
|
8463
|
-
var originalGenerateId3 = (0,
|
|
8859
|
+
var originalGenerateId3 = (0, import_provider_utils28.createIdGenerator)({ prefix: "aiobj", size: 24 });
|
|
8464
8860
|
async function generateObject(options) {
|
|
8465
8861
|
const {
|
|
8466
8862
|
model: modelArg,
|
|
@@ -8505,7 +8901,7 @@ async function generateObject(options) {
|
|
|
8505
8901
|
enumValues
|
|
8506
8902
|
});
|
|
8507
8903
|
const callSettings = prepareCallSettings(settings);
|
|
8508
|
-
const headersWithUserAgent = (0,
|
|
8904
|
+
const headersWithUserAgent = (0, import_provider_utils28.withUserAgentSuffix)(
|
|
8509
8905
|
headers != null ? headers : {},
|
|
8510
8906
|
`ai/${VERSION}`
|
|
8511
8907
|
);
|
|
@@ -8540,7 +8936,7 @@ async function generateObject(options) {
|
|
|
8540
8936
|
}),
|
|
8541
8937
|
tracer,
|
|
8542
8938
|
fn: async (span) => {
|
|
8543
|
-
var
|
|
8939
|
+
var _a14;
|
|
8544
8940
|
let result;
|
|
8545
8941
|
let finishReason;
|
|
8546
8942
|
let usage;
|
|
@@ -8586,7 +8982,7 @@ async function generateObject(options) {
|
|
|
8586
8982
|
}),
|
|
8587
8983
|
tracer,
|
|
8588
8984
|
fn: async (span2) => {
|
|
8589
|
-
var
|
|
8985
|
+
var _a15, _b, _c, _d, _e, _f, _g, _h;
|
|
8590
8986
|
const result2 = await model.doGenerate({
|
|
8591
8987
|
responseFormat: {
|
|
8592
8988
|
type: "json",
|
|
@@ -8601,7 +8997,7 @@ async function generateObject(options) {
|
|
|
8601
8997
|
headers: headersWithUserAgent
|
|
8602
8998
|
});
|
|
8603
8999
|
const responseData = {
|
|
8604
|
-
id: (_b = (
|
|
9000
|
+
id: (_b = (_a15 = result2.response) == null ? void 0 : _a15.id) != null ? _b : generateId2(),
|
|
8605
9001
|
timestamp: (_d = (_c = result2.response) == null ? void 0 : _c.timestamp) != null ? _d : currentDate(),
|
|
8606
9002
|
modelId: (_f = (_e = result2.response) == null ? void 0 : _e.modelId) != null ? _f : model.modelId,
|
|
8607
9003
|
headers: (_g = result2.response) == null ? void 0 : _g.headers,
|
|
@@ -8613,15 +9009,15 @@ async function generateObject(options) {
|
|
|
8613
9009
|
throw new NoObjectGeneratedError({
|
|
8614
9010
|
message: "No object generated: the model did not return a response.",
|
|
8615
9011
|
response: responseData,
|
|
8616
|
-
usage: result2.usage,
|
|
8617
|
-
finishReason: result2.finishReason
|
|
9012
|
+
usage: asLanguageModelUsage(result2.usage),
|
|
9013
|
+
finishReason: result2.finishReason.unified
|
|
8618
9014
|
});
|
|
8619
9015
|
}
|
|
8620
9016
|
span2.setAttributes(
|
|
8621
9017
|
await selectTelemetryAttributes({
|
|
8622
9018
|
telemetry,
|
|
8623
9019
|
attributes: {
|
|
8624
|
-
"ai.response.finishReason": result2.finishReason,
|
|
9020
|
+
"ai.response.finishReason": result2.finishReason.unified,
|
|
8625
9021
|
"ai.response.object": { output: () => text2 },
|
|
8626
9022
|
"ai.response.id": responseData.id,
|
|
8627
9023
|
"ai.response.model": responseData.modelId,
|
|
@@ -8630,14 +9026,16 @@ async function generateObject(options) {
|
|
|
8630
9026
|
result2.providerMetadata
|
|
8631
9027
|
),
|
|
8632
9028
|
// TODO rename telemetry attributes to inputTokens and outputTokens
|
|
8633
|
-
"ai.usage.promptTokens": result2.usage.inputTokens,
|
|
8634
|
-
"ai.usage.completionTokens": result2.usage.outputTokens,
|
|
9029
|
+
"ai.usage.promptTokens": result2.usage.inputTokens.total,
|
|
9030
|
+
"ai.usage.completionTokens": result2.usage.outputTokens.total,
|
|
8635
9031
|
// standardized gen-ai llm span attributes:
|
|
8636
|
-
"gen_ai.response.finish_reasons": [
|
|
9032
|
+
"gen_ai.response.finish_reasons": [
|
|
9033
|
+
result2.finishReason.unified
|
|
9034
|
+
],
|
|
8637
9035
|
"gen_ai.response.id": responseData.id,
|
|
8638
9036
|
"gen_ai.response.model": responseData.modelId,
|
|
8639
|
-
"gen_ai.usage.input_tokens": result2.usage.inputTokens,
|
|
8640
|
-
"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
|
|
8641
9039
|
}
|
|
8642
9040
|
})
|
|
8643
9041
|
);
|
|
@@ -8651,11 +9049,11 @@ async function generateObject(options) {
|
|
|
8651
9049
|
})
|
|
8652
9050
|
);
|
|
8653
9051
|
result = generateResult.objectText;
|
|
8654
|
-
finishReason = generateResult.finishReason;
|
|
8655
|
-
usage = generateResult.usage;
|
|
9052
|
+
finishReason = generateResult.finishReason.unified;
|
|
9053
|
+
usage = asLanguageModelUsage(generateResult.usage);
|
|
8656
9054
|
warnings = generateResult.warnings;
|
|
8657
9055
|
resultProviderMetadata = generateResult.providerMetadata;
|
|
8658
|
-
request = (
|
|
9056
|
+
request = (_a14 = generateResult.request) != null ? _a14 : {};
|
|
8659
9057
|
response = generateResult.responseData;
|
|
8660
9058
|
reasoning = generateResult.reasoning;
|
|
8661
9059
|
logWarnings({
|
|
@@ -8718,9 +9116,9 @@ var DefaultGenerateObjectResult = class {
|
|
|
8718
9116
|
this.reasoning = options.reasoning;
|
|
8719
9117
|
}
|
|
8720
9118
|
toJsonResponse(init) {
|
|
8721
|
-
var
|
|
9119
|
+
var _a14;
|
|
8722
9120
|
return new Response(JSON.stringify(this.object), {
|
|
8723
|
-
status: (
|
|
9121
|
+
status: (_a14 = init == null ? void 0 : init.status) != null ? _a14 : 200,
|
|
8724
9122
|
headers: prepareHeaders(init == null ? void 0 : init.headers, {
|
|
8725
9123
|
"content-type": "application/json; charset=utf-8"
|
|
8726
9124
|
})
|
|
@@ -8729,7 +9127,7 @@ var DefaultGenerateObjectResult = class {
|
|
|
8729
9127
|
};
|
|
8730
9128
|
|
|
8731
9129
|
// src/generate-object/stream-object.ts
|
|
8732
|
-
var
|
|
9130
|
+
var import_provider_utils30 = require("@ai-sdk/provider-utils");
|
|
8733
9131
|
|
|
8734
9132
|
// src/util/cosine-similarity.ts
|
|
8735
9133
|
function cosineSimilarity(vector1, vector2) {
|
|
@@ -8839,15 +9237,15 @@ var SerialJobExecutor = class {
|
|
|
8839
9237
|
};
|
|
8840
9238
|
|
|
8841
9239
|
// src/util/simulate-readable-stream.ts
|
|
8842
|
-
var
|
|
9240
|
+
var import_provider_utils29 = require("@ai-sdk/provider-utils");
|
|
8843
9241
|
function simulateReadableStream({
|
|
8844
9242
|
chunks,
|
|
8845
9243
|
initialDelayInMs = 0,
|
|
8846
9244
|
chunkDelayInMs = 0,
|
|
8847
9245
|
_internal
|
|
8848
9246
|
}) {
|
|
8849
|
-
var
|
|
8850
|
-
const delay2 = (
|
|
9247
|
+
var _a14;
|
|
9248
|
+
const delay2 = (_a14 = _internal == null ? void 0 : _internal.delay) != null ? _a14 : import_provider_utils29.delay;
|
|
8851
9249
|
let index = 0;
|
|
8852
9250
|
return new ReadableStream({
|
|
8853
9251
|
async pull(controller) {
|
|
@@ -8862,7 +9260,7 @@ function simulateReadableStream({
|
|
|
8862
9260
|
}
|
|
8863
9261
|
|
|
8864
9262
|
// src/generate-object/stream-object.ts
|
|
8865
|
-
var originalGenerateId4 = (0,
|
|
9263
|
+
var originalGenerateId4 = (0, import_provider_utils30.createIdGenerator)({ prefix: "aiobj", size: 24 });
|
|
8866
9264
|
function streamObject(options) {
|
|
8867
9265
|
const {
|
|
8868
9266
|
model,
|
|
@@ -8952,13 +9350,13 @@ var DefaultStreamObjectResult = class {
|
|
|
8952
9350
|
currentDate,
|
|
8953
9351
|
now: now2
|
|
8954
9352
|
}) {
|
|
8955
|
-
this._object = new DelayedPromise();
|
|
8956
|
-
this._usage = new DelayedPromise();
|
|
8957
|
-
this._providerMetadata = new DelayedPromise();
|
|
8958
|
-
this._warnings = new DelayedPromise();
|
|
8959
|
-
this._request = new DelayedPromise();
|
|
8960
|
-
this._response = new DelayedPromise();
|
|
8961
|
-
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();
|
|
8962
9360
|
const model = resolveLanguageModel(modelArg);
|
|
8963
9361
|
const { maxRetries, retry } = prepareRetries({
|
|
8964
9362
|
maxRetries: maxRetriesArg,
|
|
@@ -9086,11 +9484,7 @@ var DefaultStreamObjectResult = class {
|
|
|
9086
9484
|
);
|
|
9087
9485
|
self._request.resolve(request != null ? request : {});
|
|
9088
9486
|
let warnings;
|
|
9089
|
-
let usage =
|
|
9090
|
-
inputTokens: void 0,
|
|
9091
|
-
outputTokens: void 0,
|
|
9092
|
-
totalTokens: void 0
|
|
9093
|
-
};
|
|
9487
|
+
let usage = createNullLanguageModelUsage();
|
|
9094
9488
|
let finishReason;
|
|
9095
9489
|
let providerMetadata;
|
|
9096
9490
|
let object2;
|
|
@@ -9109,7 +9503,7 @@ var DefaultStreamObjectResult = class {
|
|
|
9109
9503
|
const transformedStream = stream.pipeThrough(new TransformStream(transformer)).pipeThrough(
|
|
9110
9504
|
new TransformStream({
|
|
9111
9505
|
async transform(chunk, controller) {
|
|
9112
|
-
var
|
|
9506
|
+
var _a14, _b, _c;
|
|
9113
9507
|
if (typeof chunk === "object" && chunk.type === "stream-start") {
|
|
9114
9508
|
warnings = chunk.warnings;
|
|
9115
9509
|
return;
|
|
@@ -9159,7 +9553,7 @@ var DefaultStreamObjectResult = class {
|
|
|
9159
9553
|
switch (chunk.type) {
|
|
9160
9554
|
case "response-metadata": {
|
|
9161
9555
|
fullResponse = {
|
|
9162
|
-
id: (
|
|
9556
|
+
id: (_a14 = chunk.id) != null ? _a14 : fullResponse.id,
|
|
9163
9557
|
timestamp: (_b = chunk.timestamp) != null ? _b : fullResponse.timestamp,
|
|
9164
9558
|
modelId: (_c = chunk.modelId) != null ? _c : fullResponse.modelId
|
|
9165
9559
|
};
|
|
@@ -9169,11 +9563,12 @@ var DefaultStreamObjectResult = class {
|
|
|
9169
9563
|
if (textDelta !== "") {
|
|
9170
9564
|
controller.enqueue({ type: "text-delta", textDelta });
|
|
9171
9565
|
}
|
|
9172
|
-
finishReason = chunk.finishReason;
|
|
9173
|
-
usage = chunk.usage;
|
|
9566
|
+
finishReason = chunk.finishReason.unified;
|
|
9567
|
+
usage = asLanguageModelUsage(chunk.usage);
|
|
9174
9568
|
providerMetadata = chunk.providerMetadata;
|
|
9175
9569
|
controller.enqueue({
|
|
9176
9570
|
...chunk,
|
|
9571
|
+
finishReason: chunk.finishReason.unified,
|
|
9177
9572
|
usage,
|
|
9178
9573
|
response: fullResponse
|
|
9179
9574
|
});
|
|
@@ -9189,7 +9584,7 @@ var DefaultStreamObjectResult = class {
|
|
|
9189
9584
|
...fullResponse,
|
|
9190
9585
|
headers: response == null ? void 0 : response.headers
|
|
9191
9586
|
});
|
|
9192
|
-
self._finishReason.resolve(finishReason != null ? finishReason : "
|
|
9587
|
+
self._finishReason.resolve(finishReason != null ? finishReason : "other");
|
|
9193
9588
|
try {
|
|
9194
9589
|
object2 = await parseAndValidateObjectResultWithRepair(
|
|
9195
9590
|
accumulatedText,
|
|
@@ -9389,7 +9784,7 @@ var DefaultStreamObjectResult = class {
|
|
|
9389
9784
|
};
|
|
9390
9785
|
|
|
9391
9786
|
// src/generate-speech/generate-speech.ts
|
|
9392
|
-
var
|
|
9787
|
+
var import_provider_utils31 = require("@ai-sdk/provider-utils");
|
|
9393
9788
|
|
|
9394
9789
|
// src/generate-speech/generated-audio-file.ts
|
|
9395
9790
|
var DefaultGeneratedAudioFile = class extends DefaultGeneratedFile {
|
|
@@ -9430,12 +9825,12 @@ async function generateSpeech({
|
|
|
9430
9825
|
abortSignal,
|
|
9431
9826
|
headers
|
|
9432
9827
|
}) {
|
|
9433
|
-
var
|
|
9828
|
+
var _a14;
|
|
9434
9829
|
const resolvedModel = resolveSpeechModel(model);
|
|
9435
9830
|
if (!resolvedModel) {
|
|
9436
9831
|
throw new Error("Model could not be resolved");
|
|
9437
9832
|
}
|
|
9438
|
-
const headersWithUserAgent = (0,
|
|
9833
|
+
const headersWithUserAgent = (0, import_provider_utils31.withUserAgentSuffix)(
|
|
9439
9834
|
headers != null ? headers : {},
|
|
9440
9835
|
`ai/${VERSION}`
|
|
9441
9836
|
);
|
|
@@ -9467,10 +9862,10 @@ async function generateSpeech({
|
|
|
9467
9862
|
return new DefaultSpeechResult({
|
|
9468
9863
|
audio: new DefaultGeneratedAudioFile({
|
|
9469
9864
|
data: result.audio,
|
|
9470
|
-
mediaType: (
|
|
9865
|
+
mediaType: (_a14 = detectMediaType({
|
|
9471
9866
|
data: result.audio,
|
|
9472
9867
|
signatures: audioMediaTypeSignatures
|
|
9473
|
-
})) != null ?
|
|
9868
|
+
})) != null ? _a14 : "audio/mp3"
|
|
9474
9869
|
}),
|
|
9475
9870
|
warnings: result.warnings,
|
|
9476
9871
|
responses: [result.response],
|
|
@@ -9479,11 +9874,11 @@ async function generateSpeech({
|
|
|
9479
9874
|
}
|
|
9480
9875
|
var DefaultSpeechResult = class {
|
|
9481
9876
|
constructor(options) {
|
|
9482
|
-
var
|
|
9877
|
+
var _a14;
|
|
9483
9878
|
this.audio = options.audio;
|
|
9484
9879
|
this.warnings = options.warnings;
|
|
9485
9880
|
this.responses = options.responses;
|
|
9486
|
-
this.providerMetadata = (
|
|
9881
|
+
this.providerMetadata = (_a14 = options.providerMetadata) != null ? _a14 : {};
|
|
9487
9882
|
}
|
|
9488
9883
|
};
|
|
9489
9884
|
|
|
@@ -9521,7 +9916,7 @@ function pruneMessages({
|
|
|
9521
9916
|
const keptToolCallIds = /* @__PURE__ */ new Set();
|
|
9522
9917
|
const keptApprovalIds = /* @__PURE__ */ new Set();
|
|
9523
9918
|
if (keepLastMessagesCount != null) {
|
|
9524
|
-
for (const message of messages.slice(
|
|
9919
|
+
for (const message of messages.slice(-keepLastMessagesCount)) {
|
|
9525
9920
|
if ((message.role === "assistant" || message.role === "tool") && typeof message.content !== "string") {
|
|
9526
9921
|
for (const part of message.content) {
|
|
9527
9922
|
if (part.type === "tool-call" || part.type === "tool-result") {
|
|
@@ -9567,8 +9962,8 @@ function pruneMessages({
|
|
|
9567
9962
|
}
|
|
9568
9963
|
|
|
9569
9964
|
// src/generate-text/smooth-stream.ts
|
|
9570
|
-
var
|
|
9571
|
-
var
|
|
9965
|
+
var import_provider_utils32 = require("@ai-sdk/provider-utils");
|
|
9966
|
+
var import_provider26 = require("@ai-sdk/provider");
|
|
9572
9967
|
var CHUNKING_REGEXPS = {
|
|
9573
9968
|
word: /\S+\s+/m,
|
|
9574
9969
|
line: /\n+/m
|
|
@@ -9576,7 +9971,7 @@ var CHUNKING_REGEXPS = {
|
|
|
9576
9971
|
function smoothStream({
|
|
9577
9972
|
delayInMs = 10,
|
|
9578
9973
|
chunking = "word",
|
|
9579
|
-
_internal: { delay: delay2 =
|
|
9974
|
+
_internal: { delay: delay2 = import_provider_utils32.delay } = {}
|
|
9580
9975
|
} = {}) {
|
|
9581
9976
|
let detectChunk;
|
|
9582
9977
|
if (typeof chunking === "function") {
|
|
@@ -9598,7 +9993,7 @@ function smoothStream({
|
|
|
9598
9993
|
} else {
|
|
9599
9994
|
const chunkingRegex = typeof chunking === "string" ? CHUNKING_REGEXPS[chunking] : chunking;
|
|
9600
9995
|
if (chunkingRegex == null) {
|
|
9601
|
-
throw new
|
|
9996
|
+
throw new import_provider26.InvalidArgumentError({
|
|
9602
9997
|
argument: "chunking",
|
|
9603
9998
|
message: `Chunking must be "word" or "line" or a RegExp. Received: ${chunking}`
|
|
9604
9999
|
});
|
|
@@ -9648,10 +10043,7 @@ function defaultEmbeddingSettingsMiddleware({
|
|
|
9648
10043
|
return {
|
|
9649
10044
|
specificationVersion: "v3",
|
|
9650
10045
|
transformParams: async ({ params }) => {
|
|
9651
|
-
return mergeObjects(
|
|
9652
|
-
settings,
|
|
9653
|
-
params
|
|
9654
|
-
);
|
|
10046
|
+
return mergeObjects(settings, params);
|
|
9655
10047
|
}
|
|
9656
10048
|
};
|
|
9657
10049
|
}
|
|
@@ -9906,6 +10298,47 @@ function simulateStreamingMiddleware() {
|
|
|
9906
10298
|
};
|
|
9907
10299
|
}
|
|
9908
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
|
+
|
|
9909
10342
|
// src/middleware/wrap-language-model.ts
|
|
9910
10343
|
var wrapLanguageModel = ({
|
|
9911
10344
|
model,
|
|
@@ -9930,7 +10363,7 @@ var doWrap = ({
|
|
|
9930
10363
|
modelId,
|
|
9931
10364
|
providerId
|
|
9932
10365
|
}) => {
|
|
9933
|
-
var
|
|
10366
|
+
var _a14, _b, _c;
|
|
9934
10367
|
async function doTransform({
|
|
9935
10368
|
params,
|
|
9936
10369
|
type
|
|
@@ -9939,7 +10372,7 @@ var doWrap = ({
|
|
|
9939
10372
|
}
|
|
9940
10373
|
return {
|
|
9941
10374
|
specificationVersion: "v3",
|
|
9942
|
-
provider: (
|
|
10375
|
+
provider: (_a14 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a14 : model.provider,
|
|
9943
10376
|
modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,
|
|
9944
10377
|
supportedUrls: (_c = overrideSupportedUrls == null ? void 0 : overrideSupportedUrls({ model })) != null ? _c : model.supportedUrls,
|
|
9945
10378
|
async doGenerate(params) {
|
|
@@ -9986,7 +10419,7 @@ var doWrap2 = ({
|
|
|
9986
10419
|
modelId,
|
|
9987
10420
|
providerId
|
|
9988
10421
|
}) => {
|
|
9989
|
-
var
|
|
10422
|
+
var _a14, _b, _c, _d;
|
|
9990
10423
|
async function doTransform({
|
|
9991
10424
|
params
|
|
9992
10425
|
}) {
|
|
@@ -9994,7 +10427,7 @@ var doWrap2 = ({
|
|
|
9994
10427
|
}
|
|
9995
10428
|
return {
|
|
9996
10429
|
specificationVersion: "v3",
|
|
9997
|
-
provider: (
|
|
10430
|
+
provider: (_a14 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a14 : model.provider,
|
|
9998
10431
|
modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,
|
|
9999
10432
|
maxEmbeddingsPerCall: (_c = overrideMaxEmbeddingsPerCall == null ? void 0 : overrideMaxEmbeddingsPerCall({ model })) != null ? _c : model.maxEmbeddingsPerCall,
|
|
10000
10433
|
supportsParallelCalls: (_d = overrideSupportsParallelCalls == null ? void 0 : overrideSupportsParallelCalls({ model })) != null ? _d : model.supportsParallelCalls,
|
|
@@ -10010,32 +10443,19 @@ var doWrap2 = ({
|
|
|
10010
10443
|
};
|
|
10011
10444
|
};
|
|
10012
10445
|
|
|
10013
|
-
// src/model/as-image-model-v3.ts
|
|
10014
|
-
function asImageModelV3(model) {
|
|
10015
|
-
if (model.specificationVersion === "v3") {
|
|
10016
|
-
return model;
|
|
10017
|
-
}
|
|
10018
|
-
return new Proxy(model, {
|
|
10019
|
-
get(target, prop) {
|
|
10020
|
-
if (prop === "specificationVersion")
|
|
10021
|
-
return "v3";
|
|
10022
|
-
return target[prop];
|
|
10023
|
-
}
|
|
10024
|
-
});
|
|
10025
|
-
}
|
|
10026
|
-
|
|
10027
10446
|
// src/model/as-provider-v3.ts
|
|
10028
10447
|
function asProviderV3(provider) {
|
|
10029
10448
|
if ("specificationVersion" in provider && provider.specificationVersion === "v3") {
|
|
10030
10449
|
return provider;
|
|
10031
10450
|
}
|
|
10451
|
+
const v2Provider = provider;
|
|
10032
10452
|
return {
|
|
10033
10453
|
specificationVersion: "v3",
|
|
10034
|
-
languageModel: (modelId) => asLanguageModelV3(
|
|
10035
|
-
|
|
10036
|
-
imageModel: (modelId) => asImageModelV3(
|
|
10037
|
-
transcriptionModel:
|
|
10038
|
-
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,
|
|
10039
10459
|
rerankingModel: void 0
|
|
10040
10460
|
// v2 providers don't have reranking models
|
|
10041
10461
|
};
|
|
@@ -10053,7 +10473,7 @@ function wrapProvider({
|
|
|
10053
10473
|
model: providerV3.languageModel(modelId),
|
|
10054
10474
|
middleware: languageModelMiddleware
|
|
10055
10475
|
}),
|
|
10056
|
-
|
|
10476
|
+
embeddingModel: providerV3.embeddingModel,
|
|
10057
10477
|
imageModel: providerV3.imageModel,
|
|
10058
10478
|
transcriptionModel: providerV3.transcriptionModel,
|
|
10059
10479
|
speechModel: providerV3.speechModel,
|
|
@@ -10062,10 +10482,10 @@ function wrapProvider({
|
|
|
10062
10482
|
}
|
|
10063
10483
|
|
|
10064
10484
|
// src/registry/custom-provider.ts
|
|
10065
|
-
var
|
|
10485
|
+
var import_provider27 = require("@ai-sdk/provider");
|
|
10066
10486
|
function customProvider({
|
|
10067
10487
|
languageModels,
|
|
10068
|
-
|
|
10488
|
+
embeddingModels,
|
|
10069
10489
|
imageModels,
|
|
10070
10490
|
transcriptionModels,
|
|
10071
10491
|
speechModels,
|
|
@@ -10082,16 +10502,16 @@ function customProvider({
|
|
|
10082
10502
|
if (fallbackProvider) {
|
|
10083
10503
|
return fallbackProvider.languageModel(modelId);
|
|
10084
10504
|
}
|
|
10085
|
-
throw new
|
|
10505
|
+
throw new import_provider27.NoSuchModelError({ modelId, modelType: "languageModel" });
|
|
10086
10506
|
},
|
|
10087
|
-
|
|
10088
|
-
if (
|
|
10089
|
-
return
|
|
10507
|
+
embeddingModel(modelId) {
|
|
10508
|
+
if (embeddingModels != null && modelId in embeddingModels) {
|
|
10509
|
+
return embeddingModels[modelId];
|
|
10090
10510
|
}
|
|
10091
10511
|
if (fallbackProvider) {
|
|
10092
|
-
return fallbackProvider.
|
|
10512
|
+
return fallbackProvider.embeddingModel(modelId);
|
|
10093
10513
|
}
|
|
10094
|
-
throw new
|
|
10514
|
+
throw new import_provider27.NoSuchModelError({ modelId, modelType: "embeddingModel" });
|
|
10095
10515
|
},
|
|
10096
10516
|
imageModel(modelId) {
|
|
10097
10517
|
if (imageModels != null && modelId in imageModels) {
|
|
@@ -10100,7 +10520,7 @@ function customProvider({
|
|
|
10100
10520
|
if (fallbackProvider == null ? void 0 : fallbackProvider.imageModel) {
|
|
10101
10521
|
return fallbackProvider.imageModel(modelId);
|
|
10102
10522
|
}
|
|
10103
|
-
throw new
|
|
10523
|
+
throw new import_provider27.NoSuchModelError({ modelId, modelType: "imageModel" });
|
|
10104
10524
|
},
|
|
10105
10525
|
transcriptionModel(modelId) {
|
|
10106
10526
|
if (transcriptionModels != null && modelId in transcriptionModels) {
|
|
@@ -10109,7 +10529,7 @@ function customProvider({
|
|
|
10109
10529
|
if (fallbackProvider == null ? void 0 : fallbackProvider.transcriptionModel) {
|
|
10110
10530
|
return fallbackProvider.transcriptionModel(modelId);
|
|
10111
10531
|
}
|
|
10112
|
-
throw new
|
|
10532
|
+
throw new import_provider27.NoSuchModelError({ modelId, modelType: "transcriptionModel" });
|
|
10113
10533
|
},
|
|
10114
10534
|
speechModel(modelId) {
|
|
10115
10535
|
if (speechModels != null && modelId in speechModels) {
|
|
@@ -10118,7 +10538,7 @@ function customProvider({
|
|
|
10118
10538
|
if (fallbackProvider == null ? void 0 : fallbackProvider.speechModel) {
|
|
10119
10539
|
return fallbackProvider.speechModel(modelId);
|
|
10120
10540
|
}
|
|
10121
|
-
throw new
|
|
10541
|
+
throw new import_provider27.NoSuchModelError({ modelId, modelType: "speechModel" });
|
|
10122
10542
|
},
|
|
10123
10543
|
rerankingModel(modelId) {
|
|
10124
10544
|
if (rerankingModels != null && modelId in rerankingModels) {
|
|
@@ -10127,19 +10547,19 @@ function customProvider({
|
|
|
10127
10547
|
if (fallbackProvider == null ? void 0 : fallbackProvider.rerankingModel) {
|
|
10128
10548
|
return fallbackProvider.rerankingModel(modelId);
|
|
10129
10549
|
}
|
|
10130
|
-
throw new
|
|
10550
|
+
throw new import_provider27.NoSuchModelError({ modelId, modelType: "rerankingModel" });
|
|
10131
10551
|
}
|
|
10132
10552
|
};
|
|
10133
10553
|
}
|
|
10134
10554
|
var experimental_customProvider = customProvider;
|
|
10135
10555
|
|
|
10136
10556
|
// src/registry/no-such-provider-error.ts
|
|
10137
|
-
var
|
|
10138
|
-
var
|
|
10139
|
-
var
|
|
10140
|
-
var
|
|
10141
|
-
var
|
|
10142
|
-
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 {
|
|
10143
10563
|
constructor({
|
|
10144
10564
|
modelId,
|
|
10145
10565
|
modelType,
|
|
@@ -10147,19 +10567,19 @@ var NoSuchProviderError = class extends import_provider29.NoSuchModelError {
|
|
|
10147
10567
|
availableProviders,
|
|
10148
10568
|
message = `No such provider: ${providerId} (available providers: ${availableProviders.join()})`
|
|
10149
10569
|
}) {
|
|
10150
|
-
super({ errorName:
|
|
10151
|
-
this[
|
|
10570
|
+
super({ errorName: name13, modelId, modelType, message });
|
|
10571
|
+
this[_a13] = true;
|
|
10152
10572
|
this.providerId = providerId;
|
|
10153
10573
|
this.availableProviders = availableProviders;
|
|
10154
10574
|
}
|
|
10155
10575
|
static isInstance(error) {
|
|
10156
|
-
return
|
|
10576
|
+
return import_provider28.AISDKError.hasMarker(error, marker13);
|
|
10157
10577
|
}
|
|
10158
10578
|
};
|
|
10159
|
-
|
|
10579
|
+
_a13 = symbol13;
|
|
10160
10580
|
|
|
10161
10581
|
// src/registry/provider-registry.ts
|
|
10162
|
-
var
|
|
10582
|
+
var import_provider29 = require("@ai-sdk/provider");
|
|
10163
10583
|
function createProviderRegistry(providers, {
|
|
10164
10584
|
separator = ":",
|
|
10165
10585
|
languageModelMiddleware
|
|
@@ -10204,7 +10624,7 @@ var DefaultProviderRegistry = class {
|
|
|
10204
10624
|
splitId(id, modelType) {
|
|
10205
10625
|
const index = id.indexOf(this.separator);
|
|
10206
10626
|
if (index === -1) {
|
|
10207
|
-
throw new
|
|
10627
|
+
throw new import_provider29.NoSuchModelError({
|
|
10208
10628
|
modelId: id,
|
|
10209
10629
|
modelType,
|
|
10210
10630
|
message: `Invalid ${modelType} id for registry: ${id} (must be in the format "providerId${this.separator}modelId")`
|
|
@@ -10213,14 +10633,14 @@ var DefaultProviderRegistry = class {
|
|
|
10213
10633
|
return [id.slice(0, index), id.slice(index + this.separator.length)];
|
|
10214
10634
|
}
|
|
10215
10635
|
languageModel(id) {
|
|
10216
|
-
var
|
|
10636
|
+
var _a14, _b;
|
|
10217
10637
|
const [providerId, modelId] = this.splitId(id, "languageModel");
|
|
10218
|
-
let model = (_b = (
|
|
10219
|
-
|
|
10638
|
+
let model = (_b = (_a14 = this.getProvider(providerId, "languageModel")).languageModel) == null ? void 0 : _b.call(
|
|
10639
|
+
_a14,
|
|
10220
10640
|
modelId
|
|
10221
10641
|
);
|
|
10222
10642
|
if (model == null) {
|
|
10223
|
-
throw new
|
|
10643
|
+
throw new import_provider29.NoSuchModelError({ modelId: id, modelType: "languageModel" });
|
|
10224
10644
|
}
|
|
10225
10645
|
if (this.languageModelMiddleware != null) {
|
|
10226
10646
|
model = wrapLanguageModel({
|
|
@@ -10230,36 +10650,36 @@ var DefaultProviderRegistry = class {
|
|
|
10230
10650
|
}
|
|
10231
10651
|
return model;
|
|
10232
10652
|
}
|
|
10233
|
-
|
|
10234
|
-
var
|
|
10235
|
-
const [providerId, modelId] = this.splitId(id, "
|
|
10236
|
-
const provider = this.getProvider(providerId, "
|
|
10237
|
-
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);
|
|
10238
10658
|
if (model == null) {
|
|
10239
|
-
throw new
|
|
10659
|
+
throw new import_provider29.NoSuchModelError({
|
|
10240
10660
|
modelId: id,
|
|
10241
|
-
modelType: "
|
|
10661
|
+
modelType: "embeddingModel"
|
|
10242
10662
|
});
|
|
10243
10663
|
}
|
|
10244
10664
|
return model;
|
|
10245
10665
|
}
|
|
10246
10666
|
imageModel(id) {
|
|
10247
|
-
var
|
|
10667
|
+
var _a14;
|
|
10248
10668
|
const [providerId, modelId] = this.splitId(id, "imageModel");
|
|
10249
10669
|
const provider = this.getProvider(providerId, "imageModel");
|
|
10250
|
-
const model = (
|
|
10670
|
+
const model = (_a14 = provider.imageModel) == null ? void 0 : _a14.call(provider, modelId);
|
|
10251
10671
|
if (model == null) {
|
|
10252
|
-
throw new
|
|
10672
|
+
throw new import_provider29.NoSuchModelError({ modelId: id, modelType: "imageModel" });
|
|
10253
10673
|
}
|
|
10254
10674
|
return model;
|
|
10255
10675
|
}
|
|
10256
10676
|
transcriptionModel(id) {
|
|
10257
|
-
var
|
|
10677
|
+
var _a14;
|
|
10258
10678
|
const [providerId, modelId] = this.splitId(id, "transcriptionModel");
|
|
10259
10679
|
const provider = this.getProvider(providerId, "transcriptionModel");
|
|
10260
|
-
const model = (
|
|
10680
|
+
const model = (_a14 = provider.transcriptionModel) == null ? void 0 : _a14.call(provider, modelId);
|
|
10261
10681
|
if (model == null) {
|
|
10262
|
-
throw new
|
|
10682
|
+
throw new import_provider29.NoSuchModelError({
|
|
10263
10683
|
modelId: id,
|
|
10264
10684
|
modelType: "transcriptionModel"
|
|
10265
10685
|
});
|
|
@@ -10267,22 +10687,22 @@ var DefaultProviderRegistry = class {
|
|
|
10267
10687
|
return model;
|
|
10268
10688
|
}
|
|
10269
10689
|
speechModel(id) {
|
|
10270
|
-
var
|
|
10690
|
+
var _a14;
|
|
10271
10691
|
const [providerId, modelId] = this.splitId(id, "speechModel");
|
|
10272
10692
|
const provider = this.getProvider(providerId, "speechModel");
|
|
10273
|
-
const model = (
|
|
10693
|
+
const model = (_a14 = provider.speechModel) == null ? void 0 : _a14.call(provider, modelId);
|
|
10274
10694
|
if (model == null) {
|
|
10275
|
-
throw new
|
|
10695
|
+
throw new import_provider29.NoSuchModelError({ modelId: id, modelType: "speechModel" });
|
|
10276
10696
|
}
|
|
10277
10697
|
return model;
|
|
10278
10698
|
}
|
|
10279
10699
|
rerankingModel(id) {
|
|
10280
|
-
var
|
|
10700
|
+
var _a14;
|
|
10281
10701
|
const [providerId, modelId] = this.splitId(id, "rerankingModel");
|
|
10282
10702
|
const provider = this.getProvider(providerId, "rerankingModel");
|
|
10283
|
-
const model = (
|
|
10703
|
+
const model = (_a14 = provider.rerankingModel) == null ? void 0 : _a14.call(provider, modelId);
|
|
10284
10704
|
if (model == null) {
|
|
10285
|
-
throw new
|
|
10705
|
+
throw new import_provider29.NoSuchModelError({ modelId: id, modelType: "rerankingModel" });
|
|
10286
10706
|
}
|
|
10287
10707
|
return model;
|
|
10288
10708
|
}
|
|
@@ -10337,7 +10757,7 @@ async function rerank({
|
|
|
10337
10757
|
}),
|
|
10338
10758
|
tracer,
|
|
10339
10759
|
fn: async () => {
|
|
10340
|
-
var
|
|
10760
|
+
var _a14, _b;
|
|
10341
10761
|
const { ranking, response, providerMetadata, warnings } = await retry(
|
|
10342
10762
|
() => recordSpan({
|
|
10343
10763
|
name: "ai.rerank.doRerank",
|
|
@@ -10401,7 +10821,7 @@ async function rerank({
|
|
|
10401
10821
|
providerMetadata,
|
|
10402
10822
|
response: {
|
|
10403
10823
|
id: response == null ? void 0 : response.id,
|
|
10404
|
-
timestamp: (
|
|
10824
|
+
timestamp: (_a14 = response == null ? void 0 : response.timestamp) != null ? _a14 : /* @__PURE__ */ new Date(),
|
|
10405
10825
|
modelId: (_b = response == null ? void 0 : response.modelId) != null ? _b : model.modelId,
|
|
10406
10826
|
headers: response == null ? void 0 : response.headers,
|
|
10407
10827
|
body: response == null ? void 0 : response.body
|
|
@@ -10423,11 +10843,11 @@ var DefaultRerankResult = class {
|
|
|
10423
10843
|
};
|
|
10424
10844
|
|
|
10425
10845
|
// src/transcribe/transcribe.ts
|
|
10426
|
-
var
|
|
10846
|
+
var import_provider_utils33 = require("@ai-sdk/provider-utils");
|
|
10427
10847
|
|
|
10428
10848
|
// src/error/no-transcript-generated-error.ts
|
|
10429
|
-
var
|
|
10430
|
-
var NoTranscriptGeneratedError = class extends
|
|
10849
|
+
var import_provider30 = require("@ai-sdk/provider");
|
|
10850
|
+
var NoTranscriptGeneratedError = class extends import_provider30.AISDKError {
|
|
10431
10851
|
constructor(options) {
|
|
10432
10852
|
super({
|
|
10433
10853
|
name: "AI_NoTranscriptGeneratedError",
|
|
@@ -10454,23 +10874,23 @@ async function transcribe({
|
|
|
10454
10874
|
maxRetries: maxRetriesArg,
|
|
10455
10875
|
abortSignal
|
|
10456
10876
|
});
|
|
10457
|
-
const headersWithUserAgent = (0,
|
|
10877
|
+
const headersWithUserAgent = (0, import_provider_utils33.withUserAgentSuffix)(
|
|
10458
10878
|
headers != null ? headers : {},
|
|
10459
10879
|
`ai/${VERSION}`
|
|
10460
10880
|
);
|
|
10461
10881
|
const audioData = audio instanceof URL ? (await download({ url: audio })).data : convertDataContentToUint8Array(audio);
|
|
10462
10882
|
const result = await retry(
|
|
10463
10883
|
() => {
|
|
10464
|
-
var
|
|
10884
|
+
var _a14;
|
|
10465
10885
|
return resolvedModel.doGenerate({
|
|
10466
10886
|
audio: audioData,
|
|
10467
10887
|
abortSignal,
|
|
10468
10888
|
headers: headersWithUserAgent,
|
|
10469
10889
|
providerOptions,
|
|
10470
|
-
mediaType: (
|
|
10890
|
+
mediaType: (_a14 = detectMediaType({
|
|
10471
10891
|
data: audioData,
|
|
10472
10892
|
signatures: audioMediaTypeSignatures
|
|
10473
|
-
})) != null ?
|
|
10893
|
+
})) != null ? _a14 : "audio/wav"
|
|
10474
10894
|
});
|
|
10475
10895
|
}
|
|
10476
10896
|
);
|
|
@@ -10494,19 +10914,19 @@ async function transcribe({
|
|
|
10494
10914
|
}
|
|
10495
10915
|
var DefaultTranscriptionResult = class {
|
|
10496
10916
|
constructor(options) {
|
|
10497
|
-
var
|
|
10917
|
+
var _a14;
|
|
10498
10918
|
this.text = options.text;
|
|
10499
10919
|
this.segments = options.segments;
|
|
10500
10920
|
this.language = options.language;
|
|
10501
10921
|
this.durationInSeconds = options.durationInSeconds;
|
|
10502
10922
|
this.warnings = options.warnings;
|
|
10503
10923
|
this.responses = options.responses;
|
|
10504
|
-
this.providerMetadata = (
|
|
10924
|
+
this.providerMetadata = (_a14 = options.providerMetadata) != null ? _a14 : {};
|
|
10505
10925
|
}
|
|
10506
10926
|
};
|
|
10507
10927
|
|
|
10508
10928
|
// src/ui/call-completion-api.ts
|
|
10509
|
-
var
|
|
10929
|
+
var import_provider_utils34 = require("@ai-sdk/provider-utils");
|
|
10510
10930
|
|
|
10511
10931
|
// src/ui/process-text-stream.ts
|
|
10512
10932
|
async function processTextStream({
|
|
@@ -10540,7 +10960,7 @@ async function callCompletionApi({
|
|
|
10540
10960
|
onError,
|
|
10541
10961
|
fetch: fetch2 = getOriginalFetch()
|
|
10542
10962
|
}) {
|
|
10543
|
-
var
|
|
10963
|
+
var _a14;
|
|
10544
10964
|
try {
|
|
10545
10965
|
setLoading(true);
|
|
10546
10966
|
setError(void 0);
|
|
@@ -10554,13 +10974,13 @@ async function callCompletionApi({
|
|
|
10554
10974
|
...body
|
|
10555
10975
|
}),
|
|
10556
10976
|
credentials,
|
|
10557
|
-
headers: (0,
|
|
10977
|
+
headers: (0, import_provider_utils34.withUserAgentSuffix)(
|
|
10558
10978
|
{
|
|
10559
10979
|
"Content-Type": "application/json",
|
|
10560
10980
|
...headers
|
|
10561
10981
|
},
|
|
10562
10982
|
`ai-sdk/${VERSION}`,
|
|
10563
|
-
(0,
|
|
10983
|
+
(0, import_provider_utils34.getRuntimeEnvironmentUserAgent)()
|
|
10564
10984
|
),
|
|
10565
10985
|
signal: abortController.signal
|
|
10566
10986
|
}).catch((err) => {
|
|
@@ -10568,7 +10988,7 @@ async function callCompletionApi({
|
|
|
10568
10988
|
});
|
|
10569
10989
|
if (!response.ok) {
|
|
10570
10990
|
throw new Error(
|
|
10571
|
-
(
|
|
10991
|
+
(_a14 = await response.text()) != null ? _a14 : "Failed to fetch the chat response."
|
|
10572
10992
|
);
|
|
10573
10993
|
}
|
|
10574
10994
|
if (!response.body) {
|
|
@@ -10588,7 +11008,7 @@ async function callCompletionApi({
|
|
|
10588
11008
|
}
|
|
10589
11009
|
case "data": {
|
|
10590
11010
|
await consumeStream({
|
|
10591
|
-
stream: (0,
|
|
11011
|
+
stream: (0, import_provider_utils34.parseJsonEventStream)({
|
|
10592
11012
|
stream: response.body,
|
|
10593
11013
|
schema: uiMessageChunkSchema
|
|
10594
11014
|
}).pipeThrough(
|
|
@@ -10640,7 +11060,7 @@ async function callCompletionApi({
|
|
|
10640
11060
|
}
|
|
10641
11061
|
|
|
10642
11062
|
// src/ui/chat.ts
|
|
10643
|
-
var
|
|
11063
|
+
var import_provider_utils37 = require("@ai-sdk/provider-utils");
|
|
10644
11064
|
|
|
10645
11065
|
// src/ui/convert-file-list-to-file-ui-parts.ts
|
|
10646
11066
|
async function convertFileListToFileUIParts(files) {
|
|
@@ -10652,12 +11072,12 @@ async function convertFileListToFileUIParts(files) {
|
|
|
10652
11072
|
}
|
|
10653
11073
|
return Promise.all(
|
|
10654
11074
|
Array.from(files).map(async (file) => {
|
|
10655
|
-
const { name:
|
|
11075
|
+
const { name: name14, type } = file;
|
|
10656
11076
|
const dataUrl = await new Promise((resolve3, reject) => {
|
|
10657
11077
|
const reader = new FileReader();
|
|
10658
11078
|
reader.onload = (readerEvent) => {
|
|
10659
|
-
var
|
|
10660
|
-
resolve3((
|
|
11079
|
+
var _a14;
|
|
11080
|
+
resolve3((_a14 = readerEvent.target) == null ? void 0 : _a14.result);
|
|
10661
11081
|
};
|
|
10662
11082
|
reader.onerror = (error) => reject(error);
|
|
10663
11083
|
reader.readAsDataURL(file);
|
|
@@ -10665,7 +11085,7 @@ async function convertFileListToFileUIParts(files) {
|
|
|
10665
11085
|
return {
|
|
10666
11086
|
type: "file",
|
|
10667
11087
|
mediaType: type,
|
|
10668
|
-
filename:
|
|
11088
|
+
filename: name14,
|
|
10669
11089
|
url: dataUrl
|
|
10670
11090
|
};
|
|
10671
11091
|
})
|
|
@@ -10673,10 +11093,10 @@ async function convertFileListToFileUIParts(files) {
|
|
|
10673
11093
|
}
|
|
10674
11094
|
|
|
10675
11095
|
// src/ui/default-chat-transport.ts
|
|
10676
|
-
var
|
|
11096
|
+
var import_provider_utils36 = require("@ai-sdk/provider-utils");
|
|
10677
11097
|
|
|
10678
11098
|
// src/ui/http-chat-transport.ts
|
|
10679
|
-
var
|
|
11099
|
+
var import_provider_utils35 = require("@ai-sdk/provider-utils");
|
|
10680
11100
|
var HttpChatTransport = class {
|
|
10681
11101
|
constructor({
|
|
10682
11102
|
api = "/api/chat",
|
|
@@ -10699,15 +11119,15 @@ var HttpChatTransport = class {
|
|
|
10699
11119
|
abortSignal,
|
|
10700
11120
|
...options
|
|
10701
11121
|
}) {
|
|
10702
|
-
var
|
|
10703
|
-
const resolvedBody = await (0,
|
|
10704
|
-
const resolvedHeaders = await (0,
|
|
10705
|
-
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);
|
|
10706
11126
|
const baseHeaders = {
|
|
10707
|
-
...(0,
|
|
10708
|
-
...(0,
|
|
11127
|
+
...(0, import_provider_utils35.normalizeHeaders)(resolvedHeaders),
|
|
11128
|
+
...(0, import_provider_utils35.normalizeHeaders)(options.headers)
|
|
10709
11129
|
};
|
|
10710
|
-
const preparedRequest = await ((
|
|
11130
|
+
const preparedRequest = await ((_a14 = this.prepareSendMessagesRequest) == null ? void 0 : _a14.call(this, {
|
|
10711
11131
|
api: this.api,
|
|
10712
11132
|
id: options.chatId,
|
|
10713
11133
|
messages: options.messages,
|
|
@@ -10719,7 +11139,7 @@ var HttpChatTransport = class {
|
|
|
10719
11139
|
messageId: options.messageId
|
|
10720
11140
|
}));
|
|
10721
11141
|
const api = (_b = preparedRequest == null ? void 0 : preparedRequest.api) != null ? _b : this.api;
|
|
10722
|
-
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;
|
|
10723
11143
|
const body = (preparedRequest == null ? void 0 : preparedRequest.body) !== void 0 ? preparedRequest.body : {
|
|
10724
11144
|
...resolvedBody,
|
|
10725
11145
|
...options.body,
|
|
@@ -10732,13 +11152,13 @@ var HttpChatTransport = class {
|
|
|
10732
11152
|
const fetch2 = (_d = this.fetch) != null ? _d : globalThis.fetch;
|
|
10733
11153
|
const response = await fetch2(api, {
|
|
10734
11154
|
method: "POST",
|
|
10735
|
-
headers: (0,
|
|
11155
|
+
headers: (0, import_provider_utils35.withUserAgentSuffix)(
|
|
10736
11156
|
{
|
|
10737
11157
|
"Content-Type": "application/json",
|
|
10738
11158
|
...headers
|
|
10739
11159
|
},
|
|
10740
11160
|
`ai-sdk/${VERSION}`,
|
|
10741
|
-
(0,
|
|
11161
|
+
(0, import_provider_utils35.getRuntimeEnvironmentUserAgent)()
|
|
10742
11162
|
),
|
|
10743
11163
|
body: JSON.stringify(body),
|
|
10744
11164
|
credentials,
|
|
@@ -10755,15 +11175,15 @@ var HttpChatTransport = class {
|
|
|
10755
11175
|
return this.processResponseStream(response.body);
|
|
10756
11176
|
}
|
|
10757
11177
|
async reconnectToStream(options) {
|
|
10758
|
-
var
|
|
10759
|
-
const resolvedBody = await (0,
|
|
10760
|
-
const resolvedHeaders = await (0,
|
|
10761
|
-
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);
|
|
10762
11182
|
const baseHeaders = {
|
|
10763
|
-
...(0,
|
|
10764
|
-
...(0,
|
|
11183
|
+
...(0, import_provider_utils35.normalizeHeaders)(resolvedHeaders),
|
|
11184
|
+
...(0, import_provider_utils35.normalizeHeaders)(options.headers)
|
|
10765
11185
|
};
|
|
10766
|
-
const preparedRequest = await ((
|
|
11186
|
+
const preparedRequest = await ((_a14 = this.prepareReconnectToStreamRequest) == null ? void 0 : _a14.call(this, {
|
|
10767
11187
|
api: this.api,
|
|
10768
11188
|
id: options.chatId,
|
|
10769
11189
|
body: { ...resolvedBody, ...options.body },
|
|
@@ -10772,15 +11192,15 @@ var HttpChatTransport = class {
|
|
|
10772
11192
|
requestMetadata: options.metadata
|
|
10773
11193
|
}));
|
|
10774
11194
|
const api = (_b = preparedRequest == null ? void 0 : preparedRequest.api) != null ? _b : `${this.api}/${options.chatId}/stream`;
|
|
10775
|
-
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;
|
|
10776
11196
|
const credentials = (_c = preparedRequest == null ? void 0 : preparedRequest.credentials) != null ? _c : resolvedCredentials;
|
|
10777
11197
|
const fetch2 = (_d = this.fetch) != null ? _d : globalThis.fetch;
|
|
10778
11198
|
const response = await fetch2(api, {
|
|
10779
11199
|
method: "GET",
|
|
10780
|
-
headers: (0,
|
|
11200
|
+
headers: (0, import_provider_utils35.withUserAgentSuffix)(
|
|
10781
11201
|
headers,
|
|
10782
11202
|
`ai-sdk/${VERSION}`,
|
|
10783
|
-
(0,
|
|
11203
|
+
(0, import_provider_utils35.getRuntimeEnvironmentUserAgent)()
|
|
10784
11204
|
),
|
|
10785
11205
|
credentials
|
|
10786
11206
|
});
|
|
@@ -10805,7 +11225,7 @@ var DefaultChatTransport = class extends HttpChatTransport {
|
|
|
10805
11225
|
super(options);
|
|
10806
11226
|
}
|
|
10807
11227
|
processResponseStream(stream) {
|
|
10808
|
-
return (0,
|
|
11228
|
+
return (0, import_provider_utils36.parseJsonEventStream)({
|
|
10809
11229
|
stream,
|
|
10810
11230
|
schema: uiMessageChunkSchema
|
|
10811
11231
|
}).pipeThrough(
|
|
@@ -10824,7 +11244,7 @@ var DefaultChatTransport = class extends HttpChatTransport {
|
|
|
10824
11244
|
// src/ui/chat.ts
|
|
10825
11245
|
var AbstractChat = class {
|
|
10826
11246
|
constructor({
|
|
10827
|
-
generateId: generateId2 =
|
|
11247
|
+
generateId: generateId2 = import_provider_utils37.generateId,
|
|
10828
11248
|
id = generateId2(),
|
|
10829
11249
|
transport = new DefaultChatTransport(),
|
|
10830
11250
|
messageMetadataSchema,
|
|
@@ -10845,11 +11265,11 @@ var AbstractChat = class {
|
|
|
10845
11265
|
* If a messageId is provided, the message will be replaced.
|
|
10846
11266
|
*/
|
|
10847
11267
|
this.sendMessage = async (message, options) => {
|
|
10848
|
-
var
|
|
11268
|
+
var _a14, _b, _c, _d;
|
|
10849
11269
|
if (message == null) {
|
|
10850
11270
|
await this.makeRequest({
|
|
10851
11271
|
trigger: "submit-message",
|
|
10852
|
-
messageId: (
|
|
11272
|
+
messageId: (_a14 = this.lastMessage) == null ? void 0 : _a14.id,
|
|
10853
11273
|
...options
|
|
10854
11274
|
});
|
|
10855
11275
|
return;
|
|
@@ -10942,10 +11362,10 @@ var AbstractChat = class {
|
|
|
10942
11362
|
approved,
|
|
10943
11363
|
reason
|
|
10944
11364
|
}) => this.jobExecutor.run(async () => {
|
|
10945
|
-
var
|
|
11365
|
+
var _a14, _b;
|
|
10946
11366
|
const messages = this.state.messages;
|
|
10947
11367
|
const lastMessage = messages[messages.length - 1];
|
|
10948
|
-
const updatePart = (part) =>
|
|
11368
|
+
const updatePart = (part) => isToolUIPart(part) && part.state === "approval-requested" && part.approval.id === id ? {
|
|
10949
11369
|
...part,
|
|
10950
11370
|
state: "approval-responded",
|
|
10951
11371
|
approval: { id, approved, reason }
|
|
@@ -10957,7 +11377,7 @@ var AbstractChat = class {
|
|
|
10957
11377
|
if (this.activeResponse) {
|
|
10958
11378
|
this.activeResponse.state.message.parts = this.activeResponse.state.message.parts.map(updatePart);
|
|
10959
11379
|
}
|
|
10960
|
-
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 }))) {
|
|
10961
11381
|
this.makeRequest({
|
|
10962
11382
|
trigger: "submit-message",
|
|
10963
11383
|
messageId: (_b = this.lastMessage) == null ? void 0 : _b.id
|
|
@@ -10971,10 +11391,10 @@ var AbstractChat = class {
|
|
|
10971
11391
|
output,
|
|
10972
11392
|
errorText
|
|
10973
11393
|
}) => this.jobExecutor.run(async () => {
|
|
10974
|
-
var
|
|
11394
|
+
var _a14, _b;
|
|
10975
11395
|
const messages = this.state.messages;
|
|
10976
11396
|
const lastMessage = messages[messages.length - 1];
|
|
10977
|
-
const updatePart = (part) =>
|
|
11397
|
+
const updatePart = (part) => isToolUIPart(part) && part.toolCallId === toolCallId ? { ...part, state, output, errorText } : part;
|
|
10978
11398
|
this.state.replaceMessage(messages.length - 1, {
|
|
10979
11399
|
...lastMessage,
|
|
10980
11400
|
parts: lastMessage.parts.map(updatePart)
|
|
@@ -10982,7 +11402,7 @@ var AbstractChat = class {
|
|
|
10982
11402
|
if (this.activeResponse) {
|
|
10983
11403
|
this.activeResponse.state.message.parts = this.activeResponse.state.message.parts.map(updatePart);
|
|
10984
11404
|
}
|
|
10985
|
-
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 }))) {
|
|
10986
11406
|
this.makeRequest({
|
|
10987
11407
|
trigger: "submit-message",
|
|
10988
11408
|
messageId: (_b = this.lastMessage) == null ? void 0 : _b.id
|
|
@@ -10995,10 +11415,10 @@ var AbstractChat = class {
|
|
|
10995
11415
|
* Abort the current request immediately, keep the generated tokens if any.
|
|
10996
11416
|
*/
|
|
10997
11417
|
this.stop = async () => {
|
|
10998
|
-
var
|
|
11418
|
+
var _a14;
|
|
10999
11419
|
if (this.status !== "streaming" && this.status !== "submitted")
|
|
11000
11420
|
return;
|
|
11001
|
-
if ((
|
|
11421
|
+
if ((_a14 = this.activeResponse) == null ? void 0 : _a14.abortController) {
|
|
11002
11422
|
this.activeResponse.abortController.abort();
|
|
11003
11423
|
}
|
|
11004
11424
|
};
|
|
@@ -11053,7 +11473,7 @@ var AbstractChat = class {
|
|
|
11053
11473
|
body,
|
|
11054
11474
|
messageId
|
|
11055
11475
|
}) {
|
|
11056
|
-
var
|
|
11476
|
+
var _a14, _b, _c, _d;
|
|
11057
11477
|
this.setStatus({ status: "submitted", error: void 0 });
|
|
11058
11478
|
const lastMessage = this.lastMessage;
|
|
11059
11479
|
let isAbort = false;
|
|
@@ -11102,9 +11522,9 @@ var AbstractChat = class {
|
|
|
11102
11522
|
() => job({
|
|
11103
11523
|
state: activeResponse.state,
|
|
11104
11524
|
write: () => {
|
|
11105
|
-
var
|
|
11525
|
+
var _a15;
|
|
11106
11526
|
this.setStatus({ status: "streaming" });
|
|
11107
|
-
const replaceLastMessage = activeResponse.state.message.id === ((
|
|
11527
|
+
const replaceLastMessage = activeResponse.state.message.id === ((_a15 = this.lastMessage) == null ? void 0 : _a15.id);
|
|
11108
11528
|
if (replaceLastMessage) {
|
|
11109
11529
|
this.state.replaceMessage(
|
|
11110
11530
|
this.state.messages.length - 1,
|
|
@@ -11156,7 +11576,7 @@ var AbstractChat = class {
|
|
|
11156
11576
|
isAbort,
|
|
11157
11577
|
isDisconnect,
|
|
11158
11578
|
isError,
|
|
11159
|
-
finishReason: (
|
|
11579
|
+
finishReason: (_a14 = this.activeResponse) == null ? void 0 : _a14.state.finishReason
|
|
11160
11580
|
});
|
|
11161
11581
|
} catch (err) {
|
|
11162
11582
|
console.error(err);
|
|
@@ -11189,7 +11609,7 @@ function lastAssistantMessageIsCompleteWithApprovalResponses({
|
|
|
11189
11609
|
const lastStepStartIndex = message.parts.reduce((lastIndex, part, index) => {
|
|
11190
11610
|
return part.type === "step-start" ? index : lastIndex;
|
|
11191
11611
|
}, -1);
|
|
11192
|
-
const lastStepToolInvocations = message.parts.slice(lastStepStartIndex + 1).filter(
|
|
11612
|
+
const lastStepToolInvocations = message.parts.slice(lastStepStartIndex + 1).filter(isToolUIPart).filter((part) => !part.providerExecuted);
|
|
11193
11613
|
return (
|
|
11194
11614
|
// has at least one tool approval response
|
|
11195
11615
|
lastStepToolInvocations.filter((part) => part.state === "approval-responded").length > 0 && // all tool approvals must have a response
|
|
@@ -11213,7 +11633,7 @@ function lastAssistantMessageIsCompleteWithToolCalls({
|
|
|
11213
11633
|
const lastStepStartIndex = message.parts.reduce((lastIndex, part, index) => {
|
|
11214
11634
|
return part.type === "step-start" ? index : lastIndex;
|
|
11215
11635
|
}, -1);
|
|
11216
|
-
const lastStepToolInvocations = message.parts.slice(lastStepStartIndex + 1).filter(
|
|
11636
|
+
const lastStepToolInvocations = message.parts.slice(lastStepStartIndex + 1).filter(isToolUIPart).filter((part) => !part.providerExecuted);
|
|
11217
11637
|
return lastStepToolInvocations.length > 0 && lastStepToolInvocations.every(
|
|
11218
11638
|
(part) => part.state === "output-available" || part.state === "output-error"
|
|
11219
11639
|
);
|
|
@@ -11294,18 +11714,13 @@ var TextStreamChatTransport = class extends HttpChatTransport {
|
|
|
11294
11714
|
UI_MESSAGE_STREAM_HEADERS,
|
|
11295
11715
|
UnsupportedFunctionalityError,
|
|
11296
11716
|
UnsupportedModelVersionError,
|
|
11717
|
+
addToolInputExamplesMiddleware,
|
|
11297
11718
|
asSchema,
|
|
11298
11719
|
assistantModelMessageSchema,
|
|
11299
11720
|
callCompletionApi,
|
|
11300
11721
|
consumeStream,
|
|
11301
11722
|
convertFileListToFileUIParts,
|
|
11302
|
-
convertToCoreMessages,
|
|
11303
11723
|
convertToModelMessages,
|
|
11304
|
-
coreAssistantMessageSchema,
|
|
11305
|
-
coreMessageSchema,
|
|
11306
|
-
coreSystemMessageSchema,
|
|
11307
|
-
coreToolMessageSchema,
|
|
11308
|
-
coreUserMessageSchema,
|
|
11309
11724
|
cosineSimilarity,
|
|
11310
11725
|
createAgentUIStream,
|
|
11311
11726
|
createAgentUIStreamResponse,
|
|
@@ -11329,8 +11744,10 @@ var TextStreamChatTransport = class extends HttpChatTransport {
|
|
|
11329
11744
|
extractReasoningMiddleware,
|
|
11330
11745
|
gateway,
|
|
11331
11746
|
generateId,
|
|
11747
|
+
generateImage,
|
|
11332
11748
|
generateObject,
|
|
11333
11749
|
generateText,
|
|
11750
|
+
getStaticToolName,
|
|
11334
11751
|
getTextFromDataUrl,
|
|
11335
11752
|
getToolName,
|
|
11336
11753
|
getToolOrDynamicToolName,
|
|
@@ -11339,6 +11756,7 @@ var TextStreamChatTransport = class extends HttpChatTransport {
|
|
|
11339
11756
|
isDeepEqualData,
|
|
11340
11757
|
isFileUIPart,
|
|
11341
11758
|
isReasoningUIPart,
|
|
11759
|
+
isStaticToolUIPart,
|
|
11342
11760
|
isTextUIPart,
|
|
11343
11761
|
isToolOrDynamicToolUIPart,
|
|
11344
11762
|
isToolUIPart,
|