kimi-vercel-ai-sdk-provider 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,20 +1,15 @@
1
1
  # kimi-vercel-ai-sdk-provider
2
2
 
3
+ <img width="1600" height="1278" alt="image" src="https://github.com/user-attachments/assets/fcde2cc0-73e2-4d32-b1bc-b4d9eaca5a6a" />
4
+
3
5
  Native Kimi (Moonshot AI) provider for Vercel AI SDK.
4
6
 
5
7
  This is a native implementation with full support for Kimi-specific features, not a generic OpenAI-compatible wrapper.
6
8
 
7
- [![npm version](https://img.shields.io/npm/v/kimi-vercel-ai-sdk-provider
8
- .svg?style=flat-square)](https://www.npmjs.com/package/kimi-vercel-ai-sdk-provider
9
- )
10
- [![npm bundle size](https://img.shields.io/bundlephobia/minzip/kimi-vercel-ai-sdk-provider
11
- ?style=flat-square&label=bundle%20size)](https://bundlephobia.com/package/kimi-vercel-ai-sdk-provider
12
- )
13
- [![npm downloads](https://img.shields.io/npm/dm/kimi-vercel-ai-sdk-provider
14
- .svg?style=flat-square)](https://www.npmjs.com/package/kimi-vercel-ai-sdk-provider
15
- )
16
- [![license](https://img.shields.io/npm/l/kimi-vercel-ai-sdk-provider
17
- .svg?style=flat-square)](https://github.com/aaroniker/kimi-vercel-ai-sdk-provider/blob/main/LICENSE)
9
+ [![npm version](https://img.shields.io/npm/v/kimi-vercel-ai-sdk-provider.svg?style=flat-square)](https://www.npmjs.com/package/kimi-vercel-ai-sdk-provider)
10
+ [![npm bundle size](https://img.shields.io/bundlephobia/minzip/kimi-vercel-ai-sdk-provider?style=flat-square&label=bundle%20size)](https://bundlephobia.com/package/kimi-vercel-ai-sdk-provider)
11
+ [![npm downloads](https://img.shields.io/npm/dm/kimi-vercel-ai-sdk-provider.svg?style=flat-square)](https://www.npmjs.com/package/kimi-vercel-ai-sdk-provider)
12
+ [![license](https://img.shields.io/npm/l/kimi-vercel-ai-sdk-provider.svg?style=flat-square)](https://github.com/aaroniker/kimi-vercel-ai-sdk-provider/blob/main/LICENSE)
18
13
 
19
14
  ## Table of Contents
20
15
 
@@ -79,8 +74,7 @@ npm install kimi-vercel-ai-sdk-provider
79
74
  ### Kimi Chat (Standard)
80
75
 
81
76
  ```ts
82
- import { createKimi } from 'kimi-vercel-ai-sdk-provider
83
- ';
77
+ import { createKimi } from 'kimi-vercel-ai-sdk-provider';
84
78
  import { generateText, streamText } from 'ai';
85
79
 
86
80
  const kimi = createKimi({
package/dist/index.d.mts CHANGED
@@ -287,7 +287,8 @@ declare const kimiTools: {
287
287
  *
288
288
  * @example
289
289
  * ```ts
290
- * import { kimi, kimiTools } from 'ai-sdk-provider-kimi';
290
+ * import { kimi, kimiTools } from 'kimi-vercel-ai-sdk-provider
291
+ ';
291
292
  *
292
293
  * const result = await generateText({
293
294
  * model: kimi('kimi-k2.5'),
@@ -311,7 +312,8 @@ declare const kimiTools: {
311
312
  *
312
313
  * @example
313
314
  * ```ts
314
- * import { kimi, kimiTools } from 'ai-sdk-provider-kimi';
315
+ * import { kimi, kimiTools } from 'kimi-vercel-ai-sdk-provider
316
+ ';
315
317
  *
316
318
  * const result = await generateText({
317
319
  * model: kimi('kimi-k2.5'),
@@ -861,7 +863,8 @@ interface KimiProvider extends Omit<ProviderV3, 'specificationVersion'> {
861
863
  *
862
864
  * @example
863
865
  * ```ts
864
- * import { createKimi } from 'ai-sdk-provider-kimi';
866
+ * import { createKimi } from 'kimi-vercel-ai-sdk-provider
867
+ ';
865
868
  *
866
869
  * const kimi = createKimi({
867
870
  * apiKey: process.env.MOONSHOT_API_KEY,
@@ -899,7 +902,8 @@ declare function createKimi(options?: KimiProviderSettings): KimiProvider;
899
902
  *
900
903
  * @example
901
904
  * ```ts
902
- * import { kimi } from 'ai-sdk-provider-kimi';
905
+ * import { kimi } from 'kimi-vercel-ai-sdk-provider
906
+ ';
903
907
  *
904
908
  * const result = await generateText({
905
909
  * model: kimi('kimi-k2.5'),
@@ -1222,7 +1226,8 @@ interface KimiCodeProvider extends Omit<ProviderV3, 'specificationVersion'> {
1222
1226
  *
1223
1227
  * @example
1224
1228
  * ```ts
1225
- * import { createKimiCode } from 'ai-sdk-provider-kimi';
1229
+ * import { createKimiCode } from 'kimi-vercel-ai-sdk-provider
1230
+ ';
1226
1231
  *
1227
1232
  * const kimiCode = createKimiCode({
1228
1233
  * apiKey: process.env.KIMI_CODE_API_KEY,
@@ -1265,7 +1270,8 @@ declare function createKimiCode(options?: KimiCodeProviderSettings): KimiCodePro
1265
1270
  *
1266
1271
  * @example
1267
1272
  * ```ts
1268
- * import { kimiCode } from 'ai-sdk-provider-kimi';
1273
+ * import { kimiCode } from 'kimi-vercel-ai-sdk-provider
1274
+ ';
1269
1275
  *
1270
1276
  * const result = await generateText({
1271
1277
  * model: kimiCode(), // Uses default model
package/dist/index.d.ts CHANGED
@@ -287,7 +287,8 @@ declare const kimiTools: {
287
287
  *
288
288
  * @example
289
289
  * ```ts
290
- * import { kimi, kimiTools } from 'ai-sdk-provider-kimi';
290
+ * import { kimi, kimiTools } from 'kimi-vercel-ai-sdk-provider
291
+ ';
291
292
  *
292
293
  * const result = await generateText({
293
294
  * model: kimi('kimi-k2.5'),
@@ -311,7 +312,8 @@ declare const kimiTools: {
311
312
  *
312
313
  * @example
313
314
  * ```ts
314
- * import { kimi, kimiTools } from 'ai-sdk-provider-kimi';
315
+ * import { kimi, kimiTools } from 'kimi-vercel-ai-sdk-provider
316
+ ';
315
317
  *
316
318
  * const result = await generateText({
317
319
  * model: kimi('kimi-k2.5'),
@@ -861,7 +863,8 @@ interface KimiProvider extends Omit<ProviderV3, 'specificationVersion'> {
861
863
  *
862
864
  * @example
863
865
  * ```ts
864
- * import { createKimi } from 'ai-sdk-provider-kimi';
866
+ * import { createKimi } from 'kimi-vercel-ai-sdk-provider
867
+ ';
865
868
  *
866
869
  * const kimi = createKimi({
867
870
  * apiKey: process.env.MOONSHOT_API_KEY,
@@ -899,7 +902,8 @@ declare function createKimi(options?: KimiProviderSettings): KimiProvider;
899
902
  *
900
903
  * @example
901
904
  * ```ts
902
- * import { kimi } from 'ai-sdk-provider-kimi';
905
+ * import { kimi } from 'kimi-vercel-ai-sdk-provider
906
+ ';
903
907
  *
904
908
  * const result = await generateText({
905
909
  * model: kimi('kimi-k2.5'),
@@ -1222,7 +1226,8 @@ interface KimiCodeProvider extends Omit<ProviderV3, 'specificationVersion'> {
1222
1226
  *
1223
1227
  * @example
1224
1228
  * ```ts
1225
- * import { createKimiCode } from 'ai-sdk-provider-kimi';
1229
+ * import { createKimiCode } from 'kimi-vercel-ai-sdk-provider
1230
+ ';
1226
1231
  *
1227
1232
  * const kimiCode = createKimiCode({
1228
1233
  * apiKey: process.env.KIMI_CODE_API_KEY,
@@ -1265,7 +1270,8 @@ declare function createKimiCode(options?: KimiCodeProviderSettings): KimiCodePro
1265
1270
  *
1266
1271
  * @example
1267
1272
  * ```ts
1268
- * import { kimiCode } from 'ai-sdk-provider-kimi';
1273
+ * import { kimiCode } from 'kimi-vercel-ai-sdk-provider
1274
+ ';
1269
1275
  *
1270
1276
  * const result = await generateText({
1271
1277
  * model: kimiCode(), // Uses default model
package/dist/index.js CHANGED
@@ -77,7 +77,7 @@ var kimiErrorSchema = import_v4.z.union([
77
77
  error: import_v4.z.object({
78
78
  message: import_v4.z.string(),
79
79
  type: import_v4.z.string().nullish(),
80
- param: import_v4.z.any().nullish(),
80
+ param: import_v4.z.string().nullish(),
81
81
  code: import_v4.z.union([import_v4.z.string(), import_v4.z.number()]).nullish(),
82
82
  request_id: import_v4.z.string().nullish()
83
83
  })
@@ -306,24 +306,25 @@ function isBuiltinToolName(toolName) {
306
306
  }
307
307
  var kimiTools = {
308
308
  /**
309
- * Create a web search tool for use with Kimi models.
310
- *
311
- * @param config - Optional configuration
312
- * @returns A provider tool definition
313
- *
314
- * @example
315
- * ```ts
316
- * import { kimi, kimiTools } from 'ai-sdk-provider-kimi';
317
- *
318
- * const result = await generateText({
319
- * model: kimi('kimi-k2.5'),
320
- * tools: {
321
- * webSearch: kimiTools.webSearch(),
322
- * },
323
- * prompt: 'What are the latest AI news?',
324
- * });
325
- * ```
326
- */
309
+ * Create a web search tool for use with Kimi models.
310
+ *
311
+ * @param config - Optional configuration
312
+ * @returns A provider tool definition
313
+ *
314
+ * @example
315
+ * ```ts
316
+ * import { kimi, kimiTools } from 'kimi-vercel-ai-sdk-provider
317
+ ';
318
+ *
319
+ * const result = await generateText({
320
+ * model: kimi('kimi-k2.5'),
321
+ * tools: {
322
+ * webSearch: kimiTools.webSearch(),
323
+ * },
324
+ * prompt: 'What are the latest AI news?',
325
+ * });
326
+ * ```
327
+ */
327
328
  webSearch: (config) => {
328
329
  return {
329
330
  type: "provider",
@@ -332,24 +333,25 @@ var kimiTools = {
332
333
  };
333
334
  },
334
335
  /**
335
- * Create a code interpreter tool for use with Kimi models.
336
- *
337
- * @param config - Optional configuration
338
- * @returns A provider tool definition
339
- *
340
- * @example
341
- * ```ts
342
- * import { kimi, kimiTools } from 'ai-sdk-provider-kimi';
343
- *
344
- * const result = await generateText({
345
- * model: kimi('kimi-k2.5'),
346
- * tools: {
347
- * codeInterpreter: kimiTools.codeInterpreter(),
348
- * },
349
- * prompt: 'Calculate the factorial of 10',
350
- * });
351
- * ```
352
- */
336
+ * Create a code interpreter tool for use with Kimi models.
337
+ *
338
+ * @param config - Optional configuration
339
+ * @returns A provider tool definition
340
+ *
341
+ * @example
342
+ * ```ts
343
+ * import { kimi, kimiTools } from 'kimi-vercel-ai-sdk-provider
344
+ ';
345
+ *
346
+ * const result = await generateText({
347
+ * model: kimi('kimi-k2.5'),
348
+ * tools: {
349
+ * codeInterpreter: kimiTools.codeInterpreter(),
350
+ * },
351
+ * prompt: 'Calculate the factorial of 10',
352
+ * });
353
+ * ```
354
+ */
353
355
  codeInterpreter: (config) => {
354
356
  return {
355
357
  type: "provider",
@@ -1293,6 +1295,21 @@ var kimiTokenUsageSchema = import_v43.z.object({
1293
1295
  reasoning_tokens: import_v43.z.number().nullish()
1294
1296
  }).nullish()
1295
1297
  }).nullish();
1298
+ var kimiContentPartSchema = import_v43.z.union([
1299
+ import_v43.z.object({
1300
+ type: import_v43.z.literal("text"),
1301
+ text: import_v43.z.string()
1302
+ }),
1303
+ import_v43.z.object({
1304
+ type: import_v43.z.literal("image_url"),
1305
+ image_url: import_v43.z.object({
1306
+ url: import_v43.z.string()
1307
+ })
1308
+ }),
1309
+ import_v43.z.looseObject({
1310
+ type: import_v43.z.string()
1311
+ })
1312
+ ]);
1296
1313
  var kimiChatResponseSchema = import_v43.z.looseObject({
1297
1314
  id: import_v43.z.string().nullish(),
1298
1315
  created: import_v43.z.number().nullish(),
@@ -1301,7 +1318,7 @@ var kimiChatResponseSchema = import_v43.z.looseObject({
1301
1318
  import_v43.z.object({
1302
1319
  message: import_v43.z.object({
1303
1320
  role: import_v43.z.string().nullish(),
1304
- content: import_v43.z.union([import_v43.z.string(), import_v43.z.array(import_v43.z.any())]).nullish(),
1321
+ content: import_v43.z.union([import_v43.z.string(), import_v43.z.array(kimiContentPartSchema)]).nullish(),
1305
1322
  reasoning_content: import_v43.z.string().nullish(),
1306
1323
  reasoning: import_v43.z.string().nullish(),
1307
1324
  tool_calls: import_v43.z.array(
@@ -1818,7 +1835,7 @@ function guessFilename(attachment, contentType) {
1818
1835
  const urlPath = attachment.url.split("?")[0];
1819
1836
  const segments = urlPath.split("/");
1820
1837
  const lastSegment = segments[segments.length - 1];
1821
- if (lastSegment && lastSegment.includes(".")) {
1838
+ if (lastSegment.includes(".")) {
1822
1839
  return lastSegment;
1823
1840
  }
1824
1841
  }
@@ -1834,7 +1851,7 @@ function guessFilename(attachment, contentType) {
1834
1851
  }
1835
1852
 
1836
1853
  // src/version.ts
1837
- var VERSION = "0.2.0".length > 0 ? "0.2.0" : "0.0.0";
1854
+ var VERSION = "0.3.0".length > 0 ? "0.3.0" : "0.0.0";
1838
1855
 
1839
1856
  // src/kimi-provider.ts
1840
1857
  var GLOBAL_BASE_URL = "https://api.moonshot.ai/v1";