@kernl-sdk/ai 0.3.0 → 0.3.2

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.
@@ -1,4 +1,4 @@
1
1
 
2
- > @kernl-sdk/ai@0.2.10 build /Users/andjones/Documents/projects/kernl/packages/providers/ai
2
+ > @kernl-sdk/ai@0.3.2 build /home/runner/work/kernl/kernl/packages/providers/ai
3
3
  > tsc && tsc-alias --resolve-full-paths
4
4
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # @kernl/ai
2
2
 
3
+ ## 0.3.2
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [25e46e7]
8
+ - @kernl-sdk/shared@0.3.1
9
+ - @kernl-sdk/protocol@0.3.1
10
+ - @kernl-sdk/retrieval@0.1.5
11
+
12
+ ## 0.3.1
13
+
14
+ ### Patch Changes
15
+
16
+ - Updated dependencies [572ae80]
17
+ - @kernl-sdk/protocol@0.3.0
18
+ - @kernl-sdk/retrieval@0.1.4
19
+
3
20
  ## 0.3.0
4
21
 
5
22
  ### Minor Changes
@@ -969,7 +969,7 @@ describe.skipIf(SKIP_ANTHROPIC_TESTS)("AISDKLanguageModel - Anthropic", () => {
969
969
  describe.skipIf(SKIP_GOOGLE_TESTS)("AISDKLanguageModel - Google", () => {
970
970
  let gemini;
971
971
  beforeAll(() => {
972
- gemini = new AISDKLanguageModel(google("gemini-2.0-flash"));
972
+ gemini = new AISDKLanguageModel(google("gemini-2.5-flash-lite"));
973
973
  });
974
974
  describe("generate", () => {
975
975
  it("should generate a simple text response", async () => {
@@ -1,4 +1,4 @@
1
- import { anthropic as createAnthropicModel } from "@ai-sdk/anthropic";
1
+ import { anthropic as _anthropic } from "@ai-sdk/anthropic";
2
2
  import { AISDKLanguageModel } from "../language-model.js";
3
3
  /**
4
4
  * Create a kernl-compatible Anthropic language model.
@@ -12,7 +12,7 @@ import { AISDKLanguageModel } from "../language-model.js";
12
12
  * ```
13
13
  */
14
14
  export function anthropic(modelId) {
15
- const model = createAnthropicModel(modelId);
15
+ const model = _anthropic(modelId);
16
16
  return new AISDKLanguageModel(model);
17
17
  }
18
18
  // Note: Anthropic does not currently support embeddings
@@ -1,4 +1,4 @@
1
- import { google as createGoogleModel } from "@ai-sdk/google";
1
+ import { google as _google } from "@ai-sdk/google";
2
2
  import { AISDKLanguageModel } from "../language-model.js";
3
3
  import { AISDKEmbeddingModel } from "../embedding-model.js";
4
4
  import { registerEmbeddingProvider } from "@kernl-sdk/retrieval";
@@ -14,8 +14,8 @@ import { registerEmbeddingProvider } from "@kernl-sdk/retrieval";
14
14
  * ```
15
15
  */
16
16
  export function google(modelId) {
17
- const model = createGoogleModel(modelId);
17
+ const model = _google(modelId);
18
18
  return new AISDKLanguageModel(model);
19
19
  }
20
20
  // Auto-register Google embedding provider
21
- registerEmbeddingProvider("google", (id) => new AISDKEmbeddingModel(createGoogleModel.textEmbedding(id)));
21
+ registerEmbeddingProvider("google", (id) => new AISDKEmbeddingModel(_google.textEmbedding(id)));
@@ -1,4 +1,4 @@
1
- import { openai as createOpenAIModel } from "@ai-sdk/openai";
1
+ import { openai as _openai } from "@ai-sdk/openai";
2
2
  import { AISDKLanguageModel } from "../language-model.js";
3
3
  import { AISDKEmbeddingModel } from "../embedding-model.js";
4
4
  import { registerEmbeddingProvider } from "@kernl-sdk/retrieval";
@@ -14,8 +14,8 @@ import { registerEmbeddingProvider } from "@kernl-sdk/retrieval";
14
14
  * ```
15
15
  */
16
16
  export function openai(modelId) {
17
- const model = createOpenAIModel(modelId);
17
+ const model = _openai(modelId);
18
18
  return new AISDKLanguageModel(model);
19
19
  }
20
20
  // Auto-register OpenAI embedding provider
21
- registerEmbeddingProvider("openai", (id) => new AISDKEmbeddingModel(createOpenAIModel.embedding(id)));
21
+ registerEmbeddingProvider("openai", (id) => new AISDKEmbeddingModel(_openai.embedding(id)));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kernl-sdk/ai",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "description": "Vercel AI SDK adapter for kernl",
5
5
  "keywords": [
6
6
  "kernl",
@@ -68,9 +68,9 @@
68
68
  "vitest": "^4.0.8"
69
69
  },
70
70
  "dependencies": {
71
- "@kernl-sdk/protocol": "0.2.8",
72
- "@kernl-sdk/retrieval": "0.1.3",
73
- "@kernl-sdk/shared": "^0.3.0"
71
+ "@kernl-sdk/protocol": "0.3.1",
72
+ "@kernl-sdk/retrieval": "0.1.5",
73
+ "@kernl-sdk/shared": "^0.3.1"
74
74
  },
75
75
  "scripts": {
76
76
  "build": "tsc && tsc-alias --resolve-full-paths",
@@ -1,4 +1,4 @@
1
- import { anthropic as createAnthropicModel } from "@ai-sdk/anthropic";
1
+ import { anthropic as _anthropic } from "@ai-sdk/anthropic";
2
2
  import { AISDKLanguageModel } from "../language-model";
3
3
 
4
4
  /**
@@ -13,7 +13,7 @@ import { AISDKLanguageModel } from "../language-model";
13
13
  * ```
14
14
  */
15
15
  export function anthropic(modelId: string) {
16
- const model = createAnthropicModel(modelId);
16
+ const model = _anthropic(modelId);
17
17
  return new AISDKLanguageModel(model);
18
18
  }
19
19
 
@@ -1,4 +1,4 @@
1
- import { google as createGoogleModel } from "@ai-sdk/google";
1
+ import { google as _google } from "@ai-sdk/google";
2
2
  import { AISDKLanguageModel } from "../language-model";
3
3
  import { AISDKEmbeddingModel } from "../embedding-model";
4
4
  import { registerEmbeddingProvider } from "@kernl-sdk/retrieval";
@@ -15,11 +15,12 @@ import { registerEmbeddingProvider } from "@kernl-sdk/retrieval";
15
15
  * ```
16
16
  */
17
17
  export function google(modelId: string) {
18
- const model = createGoogleModel(modelId);
18
+ const model = _google(modelId);
19
19
  return new AISDKLanguageModel(model);
20
20
  }
21
21
 
22
22
  // Auto-register Google embedding provider
23
- registerEmbeddingProvider("google", (id) =>
24
- new AISDKEmbeddingModel(createGoogleModel.textEmbedding(id)),
23
+ registerEmbeddingProvider(
24
+ "google",
25
+ (id) => new AISDKEmbeddingModel(_google.textEmbedding(id)),
25
26
  );
@@ -1,4 +1,4 @@
1
- import { openai as createOpenAIModel } from "@ai-sdk/openai";
1
+ import { openai as _openai } from "@ai-sdk/openai";
2
2
  import { AISDKLanguageModel } from "../language-model";
3
3
  import { AISDKEmbeddingModel } from "../embedding-model";
4
4
  import { registerEmbeddingProvider } from "@kernl-sdk/retrieval";
@@ -15,11 +15,12 @@ import { registerEmbeddingProvider } from "@kernl-sdk/retrieval";
15
15
  * ```
16
16
  */
17
17
  export function openai(modelId: string) {
18
- const model = createOpenAIModel(modelId);
18
+ const model = _openai(modelId);
19
19
  return new AISDKLanguageModel(model);
20
20
  }
21
21
 
22
22
  // Auto-register OpenAI embedding provider
23
- registerEmbeddingProvider("openai", (id) =>
24
- new AISDKEmbeddingModel(createOpenAIModel.embedding(id)),
23
+ registerEmbeddingProvider(
24
+ "openai",
25
+ (id) => new AISDKEmbeddingModel(_openai.embedding(id)),
25
26
  );
@@ -1,4 +0,0 @@
1
-
2
- > @kernl-sdk/ai@0.2.6 check-types /Users/andjones/Documents/projects/kernl/packages/providers/ai
3
- > tsc --noEmit
4
-
@@ -1,4 +0,0 @@
1
- import type { Codec, LanguageModelItem } from "@kernl-sdk/protocol";
2
- import type { LanguageModelV3Message } from "ai";
3
- export declare const messages: Codec<LanguageModelItem[], LanguageModelV3Message[]>;
4
- //# sourceMappingURL=messages.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/convert/messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,KAAK,EACV,sBAAsB,EAMvB,MAAM,IAAI,CAAC;AAEZ,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,iBAAiB,EAAE,EAAE,sBAAsB,EAAE,CAwIzE,CAAC"}
@@ -1,130 +0,0 @@
1
- export const messages = {
2
- encode: (kernlItems) => {
3
- const aiMessages = [];
4
- for (const item of kernlItems) {
5
- if (item.kind === "message") {
6
- // Convert Kernl Message to AI SDK Message
7
- if (item.role === "system") {
8
- // System messages must have string content in AI SDK
9
- const textContent = item.content
10
- .filter((part) => part.kind === "text")
11
- .map((part) => (part.kind === "text" ? part.text : ""))
12
- .join("\n");
13
- aiMessages.push({
14
- role: "system",
15
- content: textContent,
16
- providerOptions: item.providerMetadata,
17
- });
18
- }
19
- else if (item.role === "user") {
20
- // User messages have array of text/file parts
21
- const content = [];
22
- for (const part of item.content) {
23
- if (part.kind === "text") {
24
- content.push({
25
- type: "text",
26
- text: part.text,
27
- providerOptions: part.providerMetadata,
28
- });
29
- }
30
- else if (part.kind === "file") {
31
- content.push({
32
- type: "file",
33
- filename: part.filename,
34
- data: part.data,
35
- mediaType: part.mimeType,
36
- providerOptions: part.providerMetadata,
37
- });
38
- }
39
- // TODO: Handle DataPart
40
- }
41
- aiMessages.push({
42
- role: "user",
43
- content,
44
- providerOptions: item.providerMetadata,
45
- });
46
- }
47
- else if (item.role === "assistant") {
48
- // Assistant messages can have text, file, reasoning, tool call parts
49
- const content = [];
50
- for (const part of item.content) {
51
- if (part.kind === "text") {
52
- content.push({
53
- type: "text",
54
- text: part.text,
55
- providerOptions: part.providerMetadata,
56
- });
57
- }
58
- else if (part.kind === "file") {
59
- content.push({
60
- type: "file",
61
- filename: part.filename,
62
- data: part.data,
63
- mediaType: part.mimeType,
64
- providerOptions: part.providerMetadata,
65
- });
66
- }
67
- // TODO: Handle DataPart
68
- }
69
- aiMessages.push({
70
- role: "assistant",
71
- content,
72
- providerOptions: item.providerMetadata,
73
- });
74
- }
75
- }
76
- else if (item.kind === "reasoning") {
77
- // Reasoning should be part of an assistant message
78
- // For now, create a standalone assistant message with reasoning
79
- aiMessages.push({
80
- role: "assistant",
81
- content: [
82
- {
83
- type: "reasoning",
84
- text: item.text,
85
- providerOptions: item.providerMetadata,
86
- },
87
- ],
88
- });
89
- }
90
- else if (item.kind === "tool-call") {
91
- // Tool calls should be part of an assistant message
92
- // For now, create a standalone assistant message with tool call
93
- aiMessages.push({
94
- role: "assistant",
95
- content: [
96
- {
97
- type: "tool-call",
98
- toolCallId: item.callId,
99
- toolName: item.toolId,
100
- input: JSON.parse(item.arguments),
101
- providerOptions: item.providerMetadata,
102
- },
103
- ],
104
- });
105
- }
106
- else if (item.kind === "tool-result") {
107
- // Tool results go into a separate 'tool' role message
108
- aiMessages.push({
109
- role: "tool",
110
- content: [
111
- {
112
- type: "tool-result",
113
- toolCallId: item.callId,
114
- toolName: item.toolId,
115
- output: {
116
- type: "json",
117
- value: item.result,
118
- },
119
- providerOptions: item.providerMetadata,
120
- },
121
- ],
122
- });
123
- }
124
- }
125
- return aiMessages;
126
- },
127
- decode: () => {
128
- throw new Error("codec:unimplemented");
129
- },
130
- };
package/dist/error.d.ts DELETED
@@ -1,8 +0,0 @@
1
- /**
2
- * Wrap AI SDK errors with additional context.
3
- *
4
- * @param error - The error from AI SDK
5
- * @param context - Additional context about where the error occurred
6
- */
7
- export declare function wrapError(error: unknown, context: string): Error;
8
- //# sourceMappingURL=error.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAShE"}
package/dist/error.js DELETED
@@ -1,15 +0,0 @@
1
- /**
2
- * Wrap AI SDK errors with additional context.
3
- *
4
- * @param error - The error from AI SDK
5
- * @param context - Additional context about where the error occurred
6
- */
7
- export function wrapError(error, context) {
8
- if (error instanceof Error) {
9
- const wrapped = new Error(`AI SDK error in ${context}: ${error.message}`);
10
- wrapped.stack = error.stack;
11
- wrapped.cause = error;
12
- return wrapped;
13
- }
14
- return new Error(`AI SDK error in ${context}: ${String(error)}`);
15
- }
package/dist/types.d.ts DELETED
@@ -1 +0,0 @@
1
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/dist/types.js DELETED
@@ -1 +0,0 @@
1
- "use strict";