ai 5.0.0-canary.9 → 5.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 +1312 -0
- package/README.md +5 -5
- package/dist/index.d.mts +3049 -3827
- package/dist/index.d.ts +3049 -3827
- package/dist/index.js +8598 -8499
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +8703 -8554
- package/dist/index.mjs.map +1 -1
- package/dist/internal/index.d.mts +49 -613
- package/dist/internal/index.d.ts +49 -613
- package/dist/internal/index.js +702 -1133
- package/dist/internal/index.js.map +1 -1
- package/dist/internal/index.mjs +688 -1104
- package/dist/internal/index.mjs.map +1 -1
- package/dist/mcp-stdio/index.d.mts +16 -96
- package/dist/mcp-stdio/index.d.ts +16 -96
- package/dist/mcp-stdio/index.js +90 -93
- package/dist/mcp-stdio/index.js.map +1 -1
- package/dist/mcp-stdio/index.mjs +33 -48
- package/dist/mcp-stdio/index.mjs.map +1 -1
- package/dist/test/index.d.mts +64 -12
- package/dist/test/index.d.ts +64 -12
- package/dist/test/index.js +137 -13
- package/dist/test/index.js.map +1 -1
- package/dist/test/index.mjs +135 -13
- package/dist/test/index.mjs.map +1 -1
- package/internal.d.ts +1 -0
- package/mcp-stdio.d.ts +1 -0
- package/package.json +30 -18
- package/test.d.ts +1 -0
package/dist/test/index.mjs
CHANGED
@@ -1,15 +1,17 @@
|
|
1
1
|
// test/index.ts
|
2
2
|
import {
|
3
|
+
convertArrayToAsyncIterable,
|
3
4
|
convertArrayToReadableStream,
|
5
|
+
convertReadableStreamToArray,
|
4
6
|
mockId
|
5
7
|
} from "@ai-sdk/provider-utils/test";
|
6
8
|
|
7
|
-
//
|
9
|
+
// src/test/not-implemented.ts
|
8
10
|
function notImplemented() {
|
9
11
|
throw new Error("Not implemented");
|
10
12
|
}
|
11
13
|
|
12
|
-
//
|
14
|
+
// src/test/mock-embedding-model-v2.ts
|
13
15
|
var MockEmbeddingModelV2 = class {
|
14
16
|
constructor({
|
15
17
|
provider = "mock-provider",
|
@@ -27,29 +29,143 @@ var MockEmbeddingModelV2 = class {
|
|
27
29
|
}
|
28
30
|
};
|
29
31
|
|
30
|
-
//
|
32
|
+
// src/test/mock-image-model-v2.ts
|
33
|
+
var MockImageModelV2 = class {
|
34
|
+
constructor({
|
35
|
+
provider = "mock-provider",
|
36
|
+
modelId = "mock-model-id",
|
37
|
+
maxImagesPerCall = 1,
|
38
|
+
doGenerate = notImplemented
|
39
|
+
} = {}) {
|
40
|
+
this.specificationVersion = "v2";
|
41
|
+
this.provider = provider;
|
42
|
+
this.modelId = modelId;
|
43
|
+
this.maxImagesPerCall = maxImagesPerCall;
|
44
|
+
this.doGenerate = doGenerate;
|
45
|
+
}
|
46
|
+
};
|
47
|
+
|
48
|
+
// src/test/mock-language-model-v2.ts
|
31
49
|
var MockLanguageModelV2 = class {
|
32
50
|
constructor({
|
33
51
|
provider = "mock-provider",
|
34
52
|
modelId = "mock-model-id",
|
35
|
-
|
53
|
+
supportedUrls = {},
|
36
54
|
doGenerate = notImplemented,
|
37
|
-
doStream = notImplemented
|
38
|
-
|
39
|
-
|
55
|
+
doStream = notImplemented
|
56
|
+
} = {}) {
|
57
|
+
this.specificationVersion = "v2";
|
58
|
+
this.doGenerateCalls = [];
|
59
|
+
this.doStreamCalls = [];
|
60
|
+
this.provider = provider;
|
61
|
+
this.modelId = modelId;
|
62
|
+
this.doGenerate = async (options) => {
|
63
|
+
this.doGenerateCalls.push(options);
|
64
|
+
if (typeof doGenerate === "function") {
|
65
|
+
return doGenerate(options);
|
66
|
+
} else if (Array.isArray(doGenerate)) {
|
67
|
+
return doGenerate[this.doGenerateCalls.length];
|
68
|
+
} else {
|
69
|
+
return doGenerate;
|
70
|
+
}
|
71
|
+
};
|
72
|
+
this.doStream = async (options) => {
|
73
|
+
this.doStreamCalls.push(options);
|
74
|
+
if (typeof doStream === "function") {
|
75
|
+
return doStream(options);
|
76
|
+
} else if (Array.isArray(doStream)) {
|
77
|
+
return doStream[this.doStreamCalls.length];
|
78
|
+
} else {
|
79
|
+
return doStream;
|
80
|
+
}
|
81
|
+
};
|
82
|
+
this._supportedUrls = typeof supportedUrls === "function" ? supportedUrls : async () => supportedUrls;
|
83
|
+
}
|
84
|
+
get supportedUrls() {
|
85
|
+
return this._supportedUrls();
|
86
|
+
}
|
87
|
+
};
|
88
|
+
|
89
|
+
// src/test/mock-provider-v2.ts
|
90
|
+
import {
|
91
|
+
NoSuchModelError
|
92
|
+
} from "@ai-sdk/provider";
|
93
|
+
var MockProviderV2 = class {
|
94
|
+
constructor({
|
95
|
+
languageModels,
|
96
|
+
embeddingModels,
|
97
|
+
imageModels,
|
98
|
+
transcriptionModels,
|
99
|
+
speechModels
|
100
|
+
} = {}) {
|
101
|
+
this.languageModel = (modelId) => {
|
102
|
+
if (!(languageModels == null ? void 0 : languageModels[modelId])) {
|
103
|
+
throw new NoSuchModelError({ modelId, modelType: "languageModel" });
|
104
|
+
}
|
105
|
+
return languageModels[modelId];
|
106
|
+
};
|
107
|
+
this.textEmbeddingModel = (modelId) => {
|
108
|
+
if (!(embeddingModels == null ? void 0 : embeddingModels[modelId])) {
|
109
|
+
throw new NoSuchModelError({
|
110
|
+
modelId,
|
111
|
+
modelType: "textEmbeddingModel"
|
112
|
+
});
|
113
|
+
}
|
114
|
+
return embeddingModels[modelId];
|
115
|
+
};
|
116
|
+
this.imageModel = (modelId) => {
|
117
|
+
if (!(imageModels == null ? void 0 : imageModels[modelId])) {
|
118
|
+
throw new NoSuchModelError({ modelId, modelType: "imageModel" });
|
119
|
+
}
|
120
|
+
return imageModels[modelId];
|
121
|
+
};
|
122
|
+
this.transcriptionModel = (modelId) => {
|
123
|
+
if (!(transcriptionModels == null ? void 0 : transcriptionModels[modelId])) {
|
124
|
+
throw new NoSuchModelError({
|
125
|
+
modelId,
|
126
|
+
modelType: "transcriptionModel"
|
127
|
+
});
|
128
|
+
}
|
129
|
+
return transcriptionModels[modelId];
|
130
|
+
};
|
131
|
+
this.speechModel = (modelId) => {
|
132
|
+
if (!(speechModels == null ? void 0 : speechModels[modelId])) {
|
133
|
+
throw new NoSuchModelError({ modelId, modelType: "speechModel" });
|
134
|
+
}
|
135
|
+
return speechModels[modelId];
|
136
|
+
};
|
137
|
+
}
|
138
|
+
};
|
139
|
+
|
140
|
+
// src/test/mock-speech-model-v2.ts
|
141
|
+
var MockSpeechModelV2 = class {
|
142
|
+
constructor({
|
143
|
+
provider = "mock-provider",
|
144
|
+
modelId = "mock-model-id",
|
145
|
+
doGenerate = notImplemented
|
146
|
+
} = {}) {
|
147
|
+
this.specificationVersion = "v2";
|
148
|
+
this.provider = provider;
|
149
|
+
this.modelId = modelId;
|
150
|
+
this.doGenerate = doGenerate;
|
151
|
+
}
|
152
|
+
};
|
153
|
+
|
154
|
+
// src/test/mock-transcription-model-v2.ts
|
155
|
+
var MockTranscriptionModelV2 = class {
|
156
|
+
constructor({
|
157
|
+
provider = "mock-provider",
|
158
|
+
modelId = "mock-model-id",
|
159
|
+
doGenerate = notImplemented
|
40
160
|
} = {}) {
|
41
161
|
this.specificationVersion = "v2";
|
42
162
|
this.provider = provider;
|
43
163
|
this.modelId = modelId;
|
44
164
|
this.doGenerate = doGenerate;
|
45
|
-
this.doStream = doStream;
|
46
|
-
this.supportsUrl = supportsUrl;
|
47
|
-
this.defaultObjectGenerationMode = defaultObjectGenerationMode;
|
48
|
-
this.supportsStructuredOutputs = supportsStructuredOutputs;
|
49
165
|
}
|
50
166
|
};
|
51
167
|
|
52
|
-
//
|
168
|
+
// src/test/mock-values.ts
|
53
169
|
function mockValues(...values) {
|
54
170
|
let counter = 0;
|
55
171
|
return () => {
|
@@ -58,7 +174,7 @@ function mockValues(...values) {
|
|
58
174
|
};
|
59
175
|
}
|
60
176
|
|
61
|
-
//
|
177
|
+
// src/util/simulate-readable-stream.ts
|
62
178
|
import { delay as delayFunction } from "@ai-sdk/provider-utils";
|
63
179
|
function simulateReadableStream({
|
64
180
|
chunks,
|
@@ -85,8 +201,14 @@ function simulateReadableStream({
|
|
85
201
|
var simulateReadableStream2 = simulateReadableStream;
|
86
202
|
export {
|
87
203
|
MockEmbeddingModelV2,
|
204
|
+
MockImageModelV2,
|
88
205
|
MockLanguageModelV2,
|
206
|
+
MockProviderV2,
|
207
|
+
MockSpeechModelV2,
|
208
|
+
MockTranscriptionModelV2,
|
209
|
+
convertArrayToAsyncIterable,
|
89
210
|
convertArrayToReadableStream,
|
211
|
+
convertReadableStreamToArray,
|
90
212
|
mockId,
|
91
213
|
mockValues,
|
92
214
|
simulateReadableStream2 as simulateReadableStream
|
package/dist/test/index.mjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../test/index.ts","../../core/test/not-implemented.ts","../../core/test/mock-embedding-model-v2.ts","../../core/test/mock-language-model-v1.ts","../../core/test/mock-values.ts","../../core/util/simulate-readable-stream.ts"],"sourcesContent":["export {\n convertArrayToReadableStream,\n mockId,\n} from '@ai-sdk/provider-utils/test';\nexport { MockEmbeddingModelV2 } from '../core/test/mock-embedding-model-v2';\nexport { MockLanguageModelV2 } from '../core/test/mock-language-model-v1';\nexport { mockValues } from '../core/test/mock-values';\n\nimport { simulateReadableStream as originalSimulateReadableStream } from '../core/util/simulate-readable-stream';\n\n/**\n * @deprecated Use `simulateReadableStream` from `ai` instead.\n */\nexport const simulateReadableStream = originalSimulateReadableStream;\n","export function notImplemented(): never {\n throw new Error('Not implemented');\n}\n","import { EmbeddingModelV2 } from '@ai-sdk/provider';\nimport { Embedding } from '../types';\nimport { EmbeddingModelUsage } from '../types/usage';\nimport { notImplemented } from './not-implemented';\n\nexport class MockEmbeddingModelV2<VALUE> implements EmbeddingModelV2<VALUE> {\n readonly specificationVersion = 'v2';\n\n readonly provider: EmbeddingModelV2<VALUE>['provider'];\n readonly modelId: EmbeddingModelV2<VALUE>['modelId'];\n readonly maxEmbeddingsPerCall: EmbeddingModelV2<VALUE>['maxEmbeddingsPerCall'];\n readonly supportsParallelCalls: EmbeddingModelV2<VALUE>['supportsParallelCalls'];\n\n doEmbed: EmbeddingModelV2<VALUE>['doEmbed'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n maxEmbeddingsPerCall = 1,\n supportsParallelCalls = false,\n doEmbed = notImplemented,\n }: {\n provider?: EmbeddingModelV2<VALUE>['provider'];\n modelId?: EmbeddingModelV2<VALUE>['modelId'];\n maxEmbeddingsPerCall?:\n | EmbeddingModelV2<VALUE>['maxEmbeddingsPerCall']\n | null;\n supportsParallelCalls?: EmbeddingModelV2<VALUE>['supportsParallelCalls'];\n doEmbed?: EmbeddingModelV2<VALUE>['doEmbed'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.maxEmbeddingsPerCall = maxEmbeddingsPerCall ?? undefined;\n this.supportsParallelCalls = supportsParallelCalls;\n this.doEmbed = doEmbed;\n }\n}\n\nexport function mockEmbed<VALUE>(\n expectedValues: Array<VALUE>,\n embeddings: Array<Embedding>,\n usage?: EmbeddingModelUsage,\n response: Awaited<\n ReturnType<EmbeddingModelV2<VALUE>['doEmbed']>\n >['response'] = { headers: {}, body: {} },\n): EmbeddingModelV2<VALUE>['doEmbed'] {\n return async ({ values }) => {\n assert.deepStrictEqual(expectedValues, values);\n return { embeddings, usage, response };\n };\n}\n","import { LanguageModelV2 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockLanguageModelV2 implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly provider: LanguageModelV2['provider'];\n readonly modelId: LanguageModelV2['modelId'];\n\n supportsUrl: LanguageModelV2['supportsUrl'];\n doGenerate: LanguageModelV2['doGenerate'];\n doStream: LanguageModelV2['doStream'];\n\n readonly defaultObjectGenerationMode: LanguageModelV2['defaultObjectGenerationMode'];\n readonly supportsStructuredOutputs: LanguageModelV2['supportsStructuredOutputs'];\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n supportsUrl = undefined,\n doGenerate = notImplemented,\n doStream = notImplemented,\n defaultObjectGenerationMode = undefined,\n supportsStructuredOutputs = undefined,\n }: {\n provider?: LanguageModelV2['provider'];\n modelId?: LanguageModelV2['modelId'];\n supportsUrl?: LanguageModelV2['supportsUrl'];\n doGenerate?: LanguageModelV2['doGenerate'];\n doStream?: LanguageModelV2['doStream'];\n defaultObjectGenerationMode?: LanguageModelV2['defaultObjectGenerationMode'];\n supportsStructuredOutputs?: LanguageModelV2['supportsStructuredOutputs'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.doGenerate = doGenerate;\n this.doStream = doStream;\n this.supportsUrl = supportsUrl;\n\n this.defaultObjectGenerationMode = defaultObjectGenerationMode;\n this.supportsStructuredOutputs = supportsStructuredOutputs;\n }\n}\n","export function mockValues<T>(...values: T[]): () => T {\n let counter = 0;\n return () => values[counter++] ?? values[values.length - 1];\n}\n","import { delay as delayFunction } from '@ai-sdk/provider-utils';\n\n/**\n * Creates a ReadableStream that emits the provided values with an optional delay between each value.\n *\n * @param options - The configuration options\n * @param options.chunks - Array of values to be emitted by the stream\n * @param options.initialDelayInMs - Optional initial delay in milliseconds before emitting the first value (default: 0). Can be set to `null` to skip the initial delay. The difference between `initialDelayInMs: null` and `initialDelayInMs: 0` is that `initialDelayInMs: null` will emit the values without any delay, while `initialDelayInMs: 0` will emit the values with a delay of 0 milliseconds.\n * @param options.chunkDelayInMs - Optional delay in milliseconds between emitting each value (default: 0). Can be set to `null` to skip the delay. The difference between `chunkDelayInMs: null` and `chunkDelayInMs: 0` is that `chunkDelayInMs: null` will emit the values without any delay, while `chunkDelayInMs: 0` will emit the values with a delay of 0 milliseconds.\n * @returns A ReadableStream that emits the provided values\n */\nexport function simulateReadableStream<T>({\n chunks,\n initialDelayInMs = 0,\n chunkDelayInMs = 0,\n _internal,\n}: {\n chunks: T[];\n initialDelayInMs?: number | null;\n chunkDelayInMs?: number | null;\n _internal?: {\n delay?: (ms: number | null) => Promise<void>;\n };\n}): ReadableStream<T> {\n const delay = _internal?.delay ?? delayFunction;\n\n let index = 0;\n\n return new ReadableStream({\n async pull(controller) {\n if (index < chunks.length) {\n await delay(index === 0 ? initialDelayInMs : chunkDelayInMs);\n controller.enqueue(chunks[index++]);\n } else {\n controller.close();\n }\n },\n });\n}\n"],"mappings":";AAAA;AAAA,EACE;AAAA,EACA;AAAA,OACK;;;ACHA,SAAS,iBAAwB;AACtC,QAAM,IAAI,MAAM,iBAAiB;AACnC;;;ACGO,IAAM,uBAAN,MAAqE;AAAA,EAU1E,YAAY;AAAA,IACV,WAAW;AAAA,IACX,UAAU;AAAA,IACV,uBAAuB;AAAA,IACvB,wBAAwB;AAAA,IACxB,UAAU;AAAA,EACZ,IAQI,CAAC,GAAG;AAvBR,SAAS,uBAAuB;AAwB9B,SAAK,WAAW;AAChB,SAAK,UAAU;AACf,SAAK,uBAAuB,sDAAwB;AACpD,SAAK,wBAAwB;AAC7B,SAAK,UAAU;AAAA,EACjB;AACF;;;ACjCO,IAAM,sBAAN,MAAqD;AAAA,EAY1D,YAAY;AAAA,IACV,WAAW;AAAA,IACX,UAAU;AAAA,IACV,cAAc;AAAA,IACd,aAAa;AAAA,IACb,WAAW;AAAA,IACX,8BAA8B;AAAA,IAC9B,4BAA4B;AAAA,EAC9B,IAQI,CAAC,GAAG;AA3BR,SAAS,uBAAuB;AA4B9B,SAAK,WAAW;AAChB,SAAK,UAAU;AACf,SAAK,aAAa;AAClB,SAAK,WAAW;AAChB,SAAK,cAAc;AAEnB,SAAK,8BAA8B;AACnC,SAAK,4BAA4B;AAAA,EACnC;AACF;;;ACzCO,SAAS,cAAiB,QAAsB;AACrD,MAAI,UAAU;AACd,SAAO,MAAG;AAFZ;AAEe,wBAAO,SAAS,MAAhB,YAAqB,OAAO,OAAO,SAAS,CAAC;AAAA;AAC5D;;;ACHA,SAAS,SAAS,qBAAqB;AAWhC,SAAS,uBAA0B;AAAA,EACxC;AAAA,EACA,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB;AACF,GAOsB;AAvBtB;AAwBE,QAAM,SAAQ,4CAAW,UAAX,YAAoB;AAElC,MAAI,QAAQ;AAEZ,SAAO,IAAI,eAAe;AAAA,IACxB,MAAM,KAAK,YAAY;AACrB,UAAI,QAAQ,OAAO,QAAQ;AACzB,cAAM,MAAM,UAAU,IAAI,mBAAmB,cAAc;AAC3D,mBAAW,QAAQ,OAAO,OAAO,CAAC;AAAA,MACpC,OAAO;AACL,mBAAW,MAAM;AAAA,MACnB;AAAA,IACF;AAAA,EACF,CAAC;AACH;;;ALzBO,IAAMA,0BAAyB;","names":["simulateReadableStream"]}
|
1
|
+
{"version":3,"sources":["../../test/index.ts","../../src/test/not-implemented.ts","../../src/test/mock-embedding-model-v2.ts","../../src/test/mock-image-model-v2.ts","../../src/test/mock-language-model-v2.ts","../../src/test/mock-provider-v2.ts","../../src/test/mock-speech-model-v2.ts","../../src/test/mock-transcription-model-v2.ts","../../src/test/mock-values.ts","../../src/util/simulate-readable-stream.ts"],"sourcesContent":["export {\n convertArrayToAsyncIterable,\n convertArrayToReadableStream,\n convertReadableStreamToArray,\n mockId,\n} from '@ai-sdk/provider-utils/test';\nexport { MockEmbeddingModelV2 } from '../src/test/mock-embedding-model-v2';\nexport { MockImageModelV2 } from '../src/test/mock-image-model-v2';\nexport { MockLanguageModelV2 } from '../src/test/mock-language-model-v2';\nexport { MockProviderV2 } from '../src/test/mock-provider-v2';\nexport { MockSpeechModelV2 } from '../src/test/mock-speech-model-v2';\nexport { MockTranscriptionModelV2 } from '../src/test/mock-transcription-model-v2';\nexport { mockValues } from '../src/test/mock-values';\n\nimport { simulateReadableStream as originalSimulateReadableStream } from '../src/util/simulate-readable-stream';\n\n/**\n * @deprecated Use `simulateReadableStream` from `ai` instead.\n */\nexport const simulateReadableStream = originalSimulateReadableStream;\n","export function notImplemented(): never {\n throw new Error('Not implemented');\n}\n","import { EmbeddingModelV2 } from '@ai-sdk/provider';\nimport { Embedding } from '../types';\nimport { EmbeddingModelUsage } from '../types/usage';\nimport { notImplemented } from './not-implemented';\n\nexport class MockEmbeddingModelV2<VALUE> implements EmbeddingModelV2<VALUE> {\n readonly specificationVersion = 'v2';\n\n readonly provider: EmbeddingModelV2<VALUE>['provider'];\n readonly modelId: EmbeddingModelV2<VALUE>['modelId'];\n readonly maxEmbeddingsPerCall: EmbeddingModelV2<VALUE>['maxEmbeddingsPerCall'];\n readonly supportsParallelCalls: EmbeddingModelV2<VALUE>['supportsParallelCalls'];\n\n doEmbed: EmbeddingModelV2<VALUE>['doEmbed'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n maxEmbeddingsPerCall = 1,\n supportsParallelCalls = false,\n doEmbed = notImplemented,\n }: {\n provider?: EmbeddingModelV2<VALUE>['provider'];\n modelId?: EmbeddingModelV2<VALUE>['modelId'];\n maxEmbeddingsPerCall?:\n | EmbeddingModelV2<VALUE>['maxEmbeddingsPerCall']\n | null;\n supportsParallelCalls?: EmbeddingModelV2<VALUE>['supportsParallelCalls'];\n doEmbed?: EmbeddingModelV2<VALUE>['doEmbed'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.maxEmbeddingsPerCall = maxEmbeddingsPerCall ?? undefined;\n this.supportsParallelCalls = supportsParallelCalls;\n this.doEmbed = doEmbed;\n }\n}\n\nexport function mockEmbed<VALUE>(\n expectedValues: Array<VALUE>,\n embeddings: Array<Embedding>,\n usage?: EmbeddingModelUsage,\n response: Awaited<\n ReturnType<EmbeddingModelV2<VALUE>['doEmbed']>\n >['response'] = { headers: {}, body: {} },\n providerMetadata?: Awaited<\n ReturnType<EmbeddingModelV2<VALUE>['doEmbed']>\n >['providerMetadata'],\n): EmbeddingModelV2<VALUE>['doEmbed'] {\n return async ({ values }) => {\n assert.deepStrictEqual(expectedValues, values);\n return { embeddings, usage, response, providerMetadata };\n };\n}\n","import { ImageModelV2 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockImageModelV2 implements ImageModelV2 {\n readonly specificationVersion = 'v2';\n readonly provider: ImageModelV2['provider'];\n readonly modelId: ImageModelV2['modelId'];\n readonly maxImagesPerCall: ImageModelV2['maxImagesPerCall'];\n\n doGenerate: ImageModelV2['doGenerate'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n maxImagesPerCall = 1,\n doGenerate = notImplemented,\n }: {\n provider?: ImageModelV2['provider'];\n modelId?: ImageModelV2['modelId'];\n maxImagesPerCall?: ImageModelV2['maxImagesPerCall'];\n doGenerate?: ImageModelV2['doGenerate'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.maxImagesPerCall = maxImagesPerCall;\n this.doGenerate = doGenerate;\n }\n}\n","import { LanguageModelV2 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockLanguageModelV2 implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n private _supportedUrls: () => LanguageModelV2['supportedUrls'];\n\n readonly provider: LanguageModelV2['provider'];\n readonly modelId: LanguageModelV2['modelId'];\n\n doGenerate: LanguageModelV2['doGenerate'];\n doStream: LanguageModelV2['doStream'];\n\n doGenerateCalls: Parameters<LanguageModelV2['doGenerate']>[0][] = [];\n doStreamCalls: Parameters<LanguageModelV2['doStream']>[0][] = [];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n supportedUrls = {},\n doGenerate = notImplemented,\n doStream = notImplemented,\n }: {\n provider?: LanguageModelV2['provider'];\n modelId?: LanguageModelV2['modelId'];\n supportedUrls?:\n | LanguageModelV2['supportedUrls']\n | (() => LanguageModelV2['supportedUrls']);\n doGenerate?:\n | LanguageModelV2['doGenerate']\n | Awaited<ReturnType<LanguageModelV2['doGenerate']>>\n | Awaited<ReturnType<LanguageModelV2['doGenerate']>>[];\n doStream?:\n | LanguageModelV2['doStream']\n | Awaited<ReturnType<LanguageModelV2['doStream']>>\n | Awaited<ReturnType<LanguageModelV2['doStream']>>[];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.doGenerate = async options => {\n this.doGenerateCalls.push(options);\n\n if (typeof doGenerate === 'function') {\n return doGenerate(options);\n } else if (Array.isArray(doGenerate)) {\n return doGenerate[this.doGenerateCalls.length];\n } else {\n return doGenerate;\n }\n };\n this.doStream = async options => {\n this.doStreamCalls.push(options);\n\n if (typeof doStream === 'function') {\n return doStream(options);\n } else if (Array.isArray(doStream)) {\n return doStream[this.doStreamCalls.length];\n } else {\n return doStream;\n }\n };\n this._supportedUrls =\n typeof supportedUrls === 'function'\n ? supportedUrls\n : async () => supportedUrls;\n }\n\n get supportedUrls() {\n return this._supportedUrls();\n }\n}\n","import {\n EmbeddingModelV2,\n ImageModelV2,\n LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n SpeechModelV2,\n TranscriptionModelV2,\n} from '@ai-sdk/provider';\n\nexport class MockProviderV2 implements ProviderV2 {\n languageModel: ProviderV2['languageModel'];\n textEmbeddingModel: ProviderV2['textEmbeddingModel'];\n imageModel: ProviderV2['imageModel'];\n transcriptionModel: ProviderV2['transcriptionModel'];\n speechModel: ProviderV2['speechModel'];\n\n constructor({\n languageModels,\n embeddingModels,\n imageModels,\n transcriptionModels,\n speechModels,\n }: {\n languageModels?: Record<string, LanguageModelV2>;\n embeddingModels?: Record<string, EmbeddingModelV2<string>>;\n imageModels?: Record<string, ImageModelV2>;\n transcriptionModels?: Record<string, TranscriptionModelV2>;\n speechModels?: Record<string, SpeechModelV2>;\n } = {}) {\n this.languageModel = (modelId: string) => {\n if (!languageModels?.[modelId]) {\n throw new NoSuchModelError({ modelId, modelType: 'languageModel' });\n }\n return languageModels[modelId];\n };\n this.textEmbeddingModel = (modelId: string) => {\n if (!embeddingModels?.[modelId]) {\n throw new NoSuchModelError({\n modelId,\n modelType: 'textEmbeddingModel',\n });\n }\n return embeddingModels[modelId];\n };\n this.imageModel = (modelId: string) => {\n if (!imageModels?.[modelId]) {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n }\n return imageModels[modelId];\n };\n this.transcriptionModel = (modelId: string) => {\n if (!transcriptionModels?.[modelId]) {\n throw new NoSuchModelError({\n modelId,\n modelType: 'transcriptionModel',\n });\n }\n return transcriptionModels[modelId];\n };\n this.speechModel = (modelId: string) => {\n if (!speechModels?.[modelId]) {\n throw new NoSuchModelError({ modelId, modelType: 'speechModel' });\n }\n return speechModels[modelId];\n };\n }\n}\n","import { SpeechModelV2 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockSpeechModelV2 implements SpeechModelV2 {\n readonly specificationVersion = 'v2';\n readonly provider: SpeechModelV2['provider'];\n readonly modelId: SpeechModelV2['modelId'];\n\n doGenerate: SpeechModelV2['doGenerate'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n doGenerate = notImplemented,\n }: {\n provider?: SpeechModelV2['provider'];\n modelId?: SpeechModelV2['modelId'];\n doGenerate?: SpeechModelV2['doGenerate'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.doGenerate = doGenerate;\n }\n}\n","import { TranscriptionModelV2 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockTranscriptionModelV2 implements TranscriptionModelV2 {\n readonly specificationVersion = 'v2';\n readonly provider: TranscriptionModelV2['provider'];\n readonly modelId: TranscriptionModelV2['modelId'];\n\n doGenerate: TranscriptionModelV2['doGenerate'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n doGenerate = notImplemented,\n }: {\n provider?: TranscriptionModelV2['provider'];\n modelId?: TranscriptionModelV2['modelId'];\n doGenerate?: TranscriptionModelV2['doGenerate'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.doGenerate = doGenerate;\n }\n}\n","export function mockValues<T>(...values: T[]): () => T {\n let counter = 0;\n return () => values[counter++] ?? values[values.length - 1];\n}\n","import { delay as delayFunction } from '@ai-sdk/provider-utils';\n\n/**\n * Creates a ReadableStream that emits the provided values with an optional delay between each value.\n *\n * @param options - The configuration options\n * @param options.chunks - Array of values to be emitted by the stream\n * @param options.initialDelayInMs - Optional initial delay in milliseconds before emitting the first value (default: 0). Can be set to `null` to skip the initial delay. The difference between `initialDelayInMs: null` and `initialDelayInMs: 0` is that `initialDelayInMs: null` will emit the values without any delay, while `initialDelayInMs: 0` will emit the values with a delay of 0 milliseconds.\n * @param options.chunkDelayInMs - Optional delay in milliseconds between emitting each value (default: 0). Can be set to `null` to skip the delay. The difference between `chunkDelayInMs: null` and `chunkDelayInMs: 0` is that `chunkDelayInMs: null` will emit the values without any delay, while `chunkDelayInMs: 0` will emit the values with a delay of 0 milliseconds.\n * @returns A ReadableStream that emits the provided values\n */\nexport function simulateReadableStream<T>({\n chunks,\n initialDelayInMs = 0,\n chunkDelayInMs = 0,\n _internal,\n}: {\n chunks: T[];\n initialDelayInMs?: number | null;\n chunkDelayInMs?: number | null;\n _internal?: {\n delay?: (ms: number | null) => Promise<void>;\n };\n}): ReadableStream<T> {\n const delay = _internal?.delay ?? delayFunction;\n\n let index = 0;\n\n return new ReadableStream({\n async pull(controller) {\n if (index < chunks.length) {\n await delay(index === 0 ? initialDelayInMs : chunkDelayInMs);\n controller.enqueue(chunks[index++]);\n } else {\n controller.close();\n }\n },\n });\n}\n"],"mappings":"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","names":["simulateReadableStream"]}
|
package/internal.d.ts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
export * from './dist/internal';
|
package/mcp-stdio.d.ts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
export * from './dist/mcp-stdio';
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "ai",
|
3
|
-
"version": "5.0.
|
3
|
+
"version": "5.0.1",
|
4
4
|
"description": "AI SDK by Vercel - The AI Toolkit for TypeScript and JavaScript",
|
5
5
|
"license": "Apache-2.0",
|
6
6
|
"sideEffects": false,
|
@@ -9,7 +9,10 @@
|
|
9
9
|
"types": "./dist/index.d.ts",
|
10
10
|
"files": [
|
11
11
|
"dist/**/*",
|
12
|
-
"CHANGELOG.md"
|
12
|
+
"CHANGELOG.md",
|
13
|
+
"internal.d.ts",
|
14
|
+
"mcp-stdio.d.ts",
|
15
|
+
"test.d.ts"
|
13
16
|
],
|
14
17
|
"exports": {
|
15
18
|
"./package.json": "./package.json",
|
@@ -38,24 +41,24 @@
|
|
38
41
|
}
|
39
42
|
},
|
40
43
|
"dependencies": {
|
41
|
-
"@ai-sdk/provider": "2.0.0-canary.7",
|
42
|
-
"@ai-sdk/provider-utils": "3.0.0-canary.8",
|
43
44
|
"@opentelemetry/api": "1.9.0",
|
44
|
-
"
|
45
|
+
"@ai-sdk/gateway": "1.0.0",
|
46
|
+
"@ai-sdk/provider": "2.0.0",
|
47
|
+
"@ai-sdk/provider-utils": "3.0.0"
|
45
48
|
},
|
46
49
|
"devDependencies": {
|
47
|
-
"@types/json-schema": "7.0.15",
|
48
50
|
"@edge-runtime/vm": "^5.0.0",
|
51
|
+
"@types/json-schema": "7.0.15",
|
49
52
|
"@types/node": "20.17.24",
|
50
53
|
"eslint": "8.57.1",
|
51
54
|
"tsup": "^7.2.0",
|
52
55
|
"typescript": "5.8.3",
|
53
|
-
"zod": "3.
|
56
|
+
"zod": "3.25.76",
|
54
57
|
"@vercel/ai-tsconfig": "0.0.0",
|
55
58
|
"eslint-config-vercel-ai": "0.0.0"
|
56
59
|
},
|
57
60
|
"peerDependencies": {
|
58
|
-
"zod": "^3.
|
61
|
+
"zod": "^3.25.76 || ^4"
|
59
62
|
},
|
60
63
|
"engines": {
|
61
64
|
"node": ">=18"
|
@@ -63,7 +66,7 @@
|
|
63
66
|
"publishConfig": {
|
64
67
|
"access": "public"
|
65
68
|
},
|
66
|
-
"homepage": "https://sdk.
|
69
|
+
"homepage": "https://ai-sdk.dev/docs",
|
67
70
|
"repository": {
|
68
71
|
"type": "git",
|
69
72
|
"url": "git+https://github.com/vercel/ai.git"
|
@@ -74,23 +77,32 @@
|
|
74
77
|
"keywords": [
|
75
78
|
"ai",
|
76
79
|
"vercel",
|
77
|
-
"
|
78
|
-
"
|
80
|
+
"sdk",
|
81
|
+
"mcp",
|
82
|
+
"tool-calling",
|
83
|
+
"tools",
|
84
|
+
"structured-output",
|
85
|
+
"agent",
|
86
|
+
"agentic",
|
87
|
+
"generative",
|
88
|
+
"chatbot",
|
89
|
+
"prompt",
|
90
|
+
"inference",
|
91
|
+
"llm",
|
92
|
+
"language-model",
|
93
|
+
"streaming"
|
79
94
|
],
|
80
95
|
"scripts": {
|
81
96
|
"build": "pnpm clean && tsup --tsconfig tsconfig.build.json",
|
82
|
-
"build:watch": "pnpm clean && tsup --watch",
|
97
|
+
"build:watch": "pnpm clean && tsup --watch --tsconfig tsconfig.build.json",
|
83
98
|
"clean": "rm -rf dist *.tsbuildinfo",
|
84
99
|
"lint": "eslint \"./**/*.ts*\"",
|
85
100
|
"type-check": "tsc --build",
|
86
101
|
"prettier-check": "prettier --check \"./**/*.ts*\"",
|
87
102
|
"test": "pnpm test:node && pnpm test:edge",
|
103
|
+
"test:update": "pnpm test:node -u",
|
104
|
+
"test:watch": "vitest --config vitest.node.config.js",
|
88
105
|
"test:edge": "vitest --config vitest.edge.config.js --run",
|
89
|
-
"test:
|
90
|
-
"test:node": "vitest --config vitest.node.config.js --run",
|
91
|
-
"test:node:watch": "vitest --config vitest.node.config.js",
|
92
|
-
"test:node:core": "pnpm vitest --config vitest.node.config.js --run ./core/",
|
93
|
-
"test:node:core:watch": "pnpm vitest --config vitest.node.config.js ./core/",
|
94
|
-
"test:node:util": "pnpm vitest --config vitest.node.config.js --run ./util/"
|
106
|
+
"test:node": "vitest --config vitest.node.config.js --run"
|
95
107
|
}
|
96
108
|
}
|
package/test.d.ts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
export * from './dist/test';
|