gitlab-ai-provider 5.3.3 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/dist/gitlab-ai-provider-6.0.0.tgz +0 -0
- package/dist/index.d.mts +28 -47
- package/dist/index.d.ts +28 -47
- package/dist/index.js +193 -108
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +193 -108
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -5
- package/dist/gitlab-ai-provider-5.3.3.tgz +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,26 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## 6.0.0 (2026-03-26)
|
|
6
|
+
|
|
7
|
+
- feat!: migrate to AI SDK v6 (LanguageModelV3) ([21c1165](https://gitlab.com/vglafirov/gitlab-ai-provider/commit/21c1165))
|
|
8
|
+
- Merge branch 'ai-sdk-v6' into 'main' ([a527717](https://gitlab.com/vglafirov/gitlab-ai-provider/commit/a527717)), closes [#3](https://gitlab.com/vglafirov/gitlab-ai-provider/issues/3)
|
|
9
|
+
- chore: add .worktrees to .gitignore ([a7df2fb](https://gitlab.com/vglafirov/gitlab-ai-provider/commit/a7df2fb))
|
|
10
|
+
|
|
11
|
+
### BREAKING CHANGE
|
|
12
|
+
|
|
13
|
+
- This release migrates the provider to AI SDK v6 which
|
|
14
|
+
requires @ai-sdk/provider-utils v4+ and uses the LanguageModelV3 interface.
|
|
15
|
+
Consumers must upgrade to AI SDK v6 compatible tooling.
|
|
16
|
+
|
|
17
|
+
* Migrate models and provider to LanguageModelV3 for AI SDK v6
|
|
18
|
+
* Add AI SDK v6 support with updated streaming and tool-call handling
|
|
19
|
+
* Fix streaming tool-call handling and normalize v3 tool-result output
|
|
20
|
+
* Fix per-tool strict mode in OpenAI responses
|
|
21
|
+
* Fix unknown finish reason mapping for v6 compatibility
|
|
22
|
+
* Fix cache and add v3 contract tests
|
|
23
|
+
* Rebuild dist
|
|
24
|
+
|
|
5
25
|
## <small>5.3.3 (2026-03-25)</small>
|
|
6
26
|
|
|
7
27
|
- Merge branch 'vg/tools-fix' into 'main' ([d33e8c0](https://gitlab.com/vglafirov/gitlab-ai-provider/commit/d33e8c0))
|
|
Binary file
|
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { LanguageModelV3, LanguageModelV3CallOptions, LanguageModelV3GenerateResult, LanguageModelV3StreamResult, LanguageModelV3Content, LanguageModelV3FinishReason, LanguageModelV3Usage, LanguageModelV3StreamPart } from '@ai-sdk/provider';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
|
|
4
4
|
interface GitLabAnthropicConfig {
|
|
@@ -47,8 +47,8 @@ interface GitLabAnthropicConfig {
|
|
|
47
47
|
* for the duo-chat model. It connects to Claude through GitLab's cloud proxy
|
|
48
48
|
* at https://cloud.gitlab.com/ai/v1/proxy/anthropic/
|
|
49
49
|
*/
|
|
50
|
-
declare class GitLabAnthropicLanguageModel implements
|
|
51
|
-
readonly specificationVersion: "
|
|
50
|
+
declare class GitLabAnthropicLanguageModel implements LanguageModelV3 {
|
|
51
|
+
readonly specificationVersion: "v3";
|
|
52
52
|
readonly modelId: string;
|
|
53
53
|
readonly supportedUrls: Record<string, RegExp[]>;
|
|
54
54
|
private readonly config;
|
|
@@ -86,22 +86,10 @@ declare class GitLabAnthropicLanguageModel implements LanguageModelV2 {
|
|
|
86
86
|
* Convert Anthropic finish reason to AI SDK format
|
|
87
87
|
*/
|
|
88
88
|
private convertFinishReason;
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
finishReason: LanguageModelV2FinishReason;
|
|
92
|
-
usage: LanguageModelV2Usage;
|
|
93
|
-
warnings: LanguageModelV2CallWarning[];
|
|
94
|
-
}>;
|
|
89
|
+
private createUsage;
|
|
90
|
+
doGenerate(options: LanguageModelV3CallOptions): Promise<LanguageModelV3GenerateResult>;
|
|
95
91
|
private doGenerateWithRetry;
|
|
96
|
-
doStream(options:
|
|
97
|
-
stream: ReadableStream<LanguageModelV2StreamPart>;
|
|
98
|
-
request?: {
|
|
99
|
-
body?: unknown;
|
|
100
|
-
};
|
|
101
|
-
response?: {
|
|
102
|
-
headers?: Record<string, string>;
|
|
103
|
-
};
|
|
104
|
-
}>;
|
|
92
|
+
doStream(options: LanguageModelV3CallOptions): Promise<LanguageModelV3StreamResult>;
|
|
105
93
|
private doStreamWithRetry;
|
|
106
94
|
}
|
|
107
95
|
|
|
@@ -665,11 +653,11 @@ type WorkflowToolExecutor = (toolName: string, args: string, requestID: string)
|
|
|
665
653
|
/**
|
|
666
654
|
* GitLab Duo Agent Platform Language Model.
|
|
667
655
|
*
|
|
668
|
-
* Implements
|
|
656
|
+
* Implements LanguageModelV3 by bridging the DWS WebSocket protocol
|
|
669
657
|
* to the Vercel AI SDK stream part format.
|
|
670
658
|
*/
|
|
671
|
-
declare class GitLabWorkflowLanguageModel implements
|
|
672
|
-
readonly specificationVersion: "
|
|
659
|
+
declare class GitLabWorkflowLanguageModel implements LanguageModelV3 {
|
|
660
|
+
readonly specificationVersion: "v3";
|
|
673
661
|
readonly modelId: string;
|
|
674
662
|
readonly supportedUrls: Record<string, RegExp[]>;
|
|
675
663
|
private readonly config;
|
|
@@ -799,18 +787,10 @@ declare class GitLabWorkflowLanguageModel implements LanguageModelV2 {
|
|
|
799
787
|
* Useful for consumers that need to track workflow state.
|
|
800
788
|
*/
|
|
801
789
|
get workflowId(): string | null;
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
warnings: LanguageModelV2CallWarning[];
|
|
807
|
-
}>;
|
|
808
|
-
doStream(options: LanguageModelV2CallOptions): Promise<{
|
|
809
|
-
stream: ReadableStream<LanguageModelV2StreamPart>;
|
|
810
|
-
request?: {
|
|
811
|
-
body?: unknown;
|
|
812
|
-
};
|
|
813
|
-
}>;
|
|
790
|
+
private createUsage;
|
|
791
|
+
private createFinishReason;
|
|
792
|
+
doGenerate(options: LanguageModelV3CallOptions): Promise<LanguageModelV3GenerateResult>;
|
|
793
|
+
doStream(options: LanguageModelV3CallOptions): Promise<LanguageModelV3StreamResult>;
|
|
814
794
|
private handleWorkflowEvent;
|
|
815
795
|
private processCheckpoint;
|
|
816
796
|
private executeToolAndRespond;
|
|
@@ -845,10 +825,10 @@ declare class GitLabWorkflowLanguageModel implements LanguageModelV2 {
|
|
|
845
825
|
}
|
|
846
826
|
|
|
847
827
|
interface GitLabProvider {
|
|
848
|
-
(modelId: string):
|
|
849
|
-
readonly specificationVersion: '
|
|
850
|
-
languageModel(modelId: string):
|
|
851
|
-
chat(modelId: string):
|
|
828
|
+
(modelId: string): LanguageModelV3;
|
|
829
|
+
readonly specificationVersion: 'v3';
|
|
830
|
+
languageModel(modelId: string): LanguageModelV3;
|
|
831
|
+
chat(modelId: string): LanguageModelV3;
|
|
852
832
|
/**
|
|
853
833
|
* Create an agentic chat model with tool calling support
|
|
854
834
|
*
|
|
@@ -888,7 +868,7 @@ interface GitLabProvider {
|
|
|
888
868
|
* });
|
|
889
869
|
*/
|
|
890
870
|
workflowChat(modelId: string, options?: GitLabWorkflowOptions): GitLabWorkflowLanguageModel;
|
|
891
|
-
|
|
871
|
+
embeddingModel(modelId: string): never;
|
|
892
872
|
imageModel(modelId: string): never;
|
|
893
873
|
}
|
|
894
874
|
interface GitLabAgenticOptions {
|
|
@@ -1020,8 +1000,8 @@ interface GitLabOpenAIConfig {
|
|
|
1020
1000
|
*/
|
|
1021
1001
|
aiGatewayHeaders?: Record<string, string>;
|
|
1022
1002
|
}
|
|
1023
|
-
declare class GitLabOpenAILanguageModel implements
|
|
1024
|
-
readonly specificationVersion: "
|
|
1003
|
+
declare class GitLabOpenAILanguageModel implements LanguageModelV3 {
|
|
1004
|
+
readonly specificationVersion: "v3";
|
|
1025
1005
|
readonly modelId: string;
|
|
1026
1006
|
readonly supportedUrls: Record<string, RegExp[]>;
|
|
1027
1007
|
private readonly config;
|
|
@@ -1041,6 +1021,7 @@ declare class GitLabOpenAILanguageModel implements LanguageModelV2 {
|
|
|
1041
1021
|
private convertToolChoice;
|
|
1042
1022
|
private convertPrompt;
|
|
1043
1023
|
private convertFinishReason;
|
|
1024
|
+
private createUsage;
|
|
1044
1025
|
/**
|
|
1045
1026
|
* Convert tools to Responses API format
|
|
1046
1027
|
*/
|
|
@@ -1059,16 +1040,16 @@ declare class GitLabOpenAILanguageModel implements LanguageModelV2 {
|
|
|
1059
1040
|
* so we need to check the content for tool calls separately.
|
|
1060
1041
|
*/
|
|
1061
1042
|
private convertResponsesStatus;
|
|
1062
|
-
doGenerate(options:
|
|
1063
|
-
content:
|
|
1064
|
-
finishReason:
|
|
1065
|
-
usage:
|
|
1066
|
-
warnings:
|
|
1043
|
+
doGenerate(options: LanguageModelV3CallOptions): Promise<{
|
|
1044
|
+
content: LanguageModelV3Content[];
|
|
1045
|
+
finishReason: LanguageModelV3FinishReason;
|
|
1046
|
+
usage: LanguageModelV3Usage;
|
|
1047
|
+
warnings: [];
|
|
1067
1048
|
}>;
|
|
1068
1049
|
private doGenerateWithChatApi;
|
|
1069
1050
|
private doGenerateWithResponsesApi;
|
|
1070
|
-
doStream(options:
|
|
1071
|
-
stream: ReadableStream<
|
|
1051
|
+
doStream(options: LanguageModelV3CallOptions): Promise<{
|
|
1052
|
+
stream: ReadableStream<LanguageModelV3StreamPart>;
|
|
1072
1053
|
request?: {
|
|
1073
1054
|
body?: unknown;
|
|
1074
1055
|
};
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { LanguageModelV3, LanguageModelV3CallOptions, LanguageModelV3GenerateResult, LanguageModelV3StreamResult, LanguageModelV3Content, LanguageModelV3FinishReason, LanguageModelV3Usage, LanguageModelV3StreamPart } from '@ai-sdk/provider';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
|
|
4
4
|
interface GitLabAnthropicConfig {
|
|
@@ -47,8 +47,8 @@ interface GitLabAnthropicConfig {
|
|
|
47
47
|
* for the duo-chat model. It connects to Claude through GitLab's cloud proxy
|
|
48
48
|
* at https://cloud.gitlab.com/ai/v1/proxy/anthropic/
|
|
49
49
|
*/
|
|
50
|
-
declare class GitLabAnthropicLanguageModel implements
|
|
51
|
-
readonly specificationVersion: "
|
|
50
|
+
declare class GitLabAnthropicLanguageModel implements LanguageModelV3 {
|
|
51
|
+
readonly specificationVersion: "v3";
|
|
52
52
|
readonly modelId: string;
|
|
53
53
|
readonly supportedUrls: Record<string, RegExp[]>;
|
|
54
54
|
private readonly config;
|
|
@@ -86,22 +86,10 @@ declare class GitLabAnthropicLanguageModel implements LanguageModelV2 {
|
|
|
86
86
|
* Convert Anthropic finish reason to AI SDK format
|
|
87
87
|
*/
|
|
88
88
|
private convertFinishReason;
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
finishReason: LanguageModelV2FinishReason;
|
|
92
|
-
usage: LanguageModelV2Usage;
|
|
93
|
-
warnings: LanguageModelV2CallWarning[];
|
|
94
|
-
}>;
|
|
89
|
+
private createUsage;
|
|
90
|
+
doGenerate(options: LanguageModelV3CallOptions): Promise<LanguageModelV3GenerateResult>;
|
|
95
91
|
private doGenerateWithRetry;
|
|
96
|
-
doStream(options:
|
|
97
|
-
stream: ReadableStream<LanguageModelV2StreamPart>;
|
|
98
|
-
request?: {
|
|
99
|
-
body?: unknown;
|
|
100
|
-
};
|
|
101
|
-
response?: {
|
|
102
|
-
headers?: Record<string, string>;
|
|
103
|
-
};
|
|
104
|
-
}>;
|
|
92
|
+
doStream(options: LanguageModelV3CallOptions): Promise<LanguageModelV3StreamResult>;
|
|
105
93
|
private doStreamWithRetry;
|
|
106
94
|
}
|
|
107
95
|
|
|
@@ -665,11 +653,11 @@ type WorkflowToolExecutor = (toolName: string, args: string, requestID: string)
|
|
|
665
653
|
/**
|
|
666
654
|
* GitLab Duo Agent Platform Language Model.
|
|
667
655
|
*
|
|
668
|
-
* Implements
|
|
656
|
+
* Implements LanguageModelV3 by bridging the DWS WebSocket protocol
|
|
669
657
|
* to the Vercel AI SDK stream part format.
|
|
670
658
|
*/
|
|
671
|
-
declare class GitLabWorkflowLanguageModel implements
|
|
672
|
-
readonly specificationVersion: "
|
|
659
|
+
declare class GitLabWorkflowLanguageModel implements LanguageModelV3 {
|
|
660
|
+
readonly specificationVersion: "v3";
|
|
673
661
|
readonly modelId: string;
|
|
674
662
|
readonly supportedUrls: Record<string, RegExp[]>;
|
|
675
663
|
private readonly config;
|
|
@@ -799,18 +787,10 @@ declare class GitLabWorkflowLanguageModel implements LanguageModelV2 {
|
|
|
799
787
|
* Useful for consumers that need to track workflow state.
|
|
800
788
|
*/
|
|
801
789
|
get workflowId(): string | null;
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
warnings: LanguageModelV2CallWarning[];
|
|
807
|
-
}>;
|
|
808
|
-
doStream(options: LanguageModelV2CallOptions): Promise<{
|
|
809
|
-
stream: ReadableStream<LanguageModelV2StreamPart>;
|
|
810
|
-
request?: {
|
|
811
|
-
body?: unknown;
|
|
812
|
-
};
|
|
813
|
-
}>;
|
|
790
|
+
private createUsage;
|
|
791
|
+
private createFinishReason;
|
|
792
|
+
doGenerate(options: LanguageModelV3CallOptions): Promise<LanguageModelV3GenerateResult>;
|
|
793
|
+
doStream(options: LanguageModelV3CallOptions): Promise<LanguageModelV3StreamResult>;
|
|
814
794
|
private handleWorkflowEvent;
|
|
815
795
|
private processCheckpoint;
|
|
816
796
|
private executeToolAndRespond;
|
|
@@ -845,10 +825,10 @@ declare class GitLabWorkflowLanguageModel implements LanguageModelV2 {
|
|
|
845
825
|
}
|
|
846
826
|
|
|
847
827
|
interface GitLabProvider {
|
|
848
|
-
(modelId: string):
|
|
849
|
-
readonly specificationVersion: '
|
|
850
|
-
languageModel(modelId: string):
|
|
851
|
-
chat(modelId: string):
|
|
828
|
+
(modelId: string): LanguageModelV3;
|
|
829
|
+
readonly specificationVersion: 'v3';
|
|
830
|
+
languageModel(modelId: string): LanguageModelV3;
|
|
831
|
+
chat(modelId: string): LanguageModelV3;
|
|
852
832
|
/**
|
|
853
833
|
* Create an agentic chat model with tool calling support
|
|
854
834
|
*
|
|
@@ -888,7 +868,7 @@ interface GitLabProvider {
|
|
|
888
868
|
* });
|
|
889
869
|
*/
|
|
890
870
|
workflowChat(modelId: string, options?: GitLabWorkflowOptions): GitLabWorkflowLanguageModel;
|
|
891
|
-
|
|
871
|
+
embeddingModel(modelId: string): never;
|
|
892
872
|
imageModel(modelId: string): never;
|
|
893
873
|
}
|
|
894
874
|
interface GitLabAgenticOptions {
|
|
@@ -1020,8 +1000,8 @@ interface GitLabOpenAIConfig {
|
|
|
1020
1000
|
*/
|
|
1021
1001
|
aiGatewayHeaders?: Record<string, string>;
|
|
1022
1002
|
}
|
|
1023
|
-
declare class GitLabOpenAILanguageModel implements
|
|
1024
|
-
readonly specificationVersion: "
|
|
1003
|
+
declare class GitLabOpenAILanguageModel implements LanguageModelV3 {
|
|
1004
|
+
readonly specificationVersion: "v3";
|
|
1025
1005
|
readonly modelId: string;
|
|
1026
1006
|
readonly supportedUrls: Record<string, RegExp[]>;
|
|
1027
1007
|
private readonly config;
|
|
@@ -1041,6 +1021,7 @@ declare class GitLabOpenAILanguageModel implements LanguageModelV2 {
|
|
|
1041
1021
|
private convertToolChoice;
|
|
1042
1022
|
private convertPrompt;
|
|
1043
1023
|
private convertFinishReason;
|
|
1024
|
+
private createUsage;
|
|
1044
1025
|
/**
|
|
1045
1026
|
* Convert tools to Responses API format
|
|
1046
1027
|
*/
|
|
@@ -1059,16 +1040,16 @@ declare class GitLabOpenAILanguageModel implements LanguageModelV2 {
|
|
|
1059
1040
|
* so we need to check the content for tool calls separately.
|
|
1060
1041
|
*/
|
|
1061
1042
|
private convertResponsesStatus;
|
|
1062
|
-
doGenerate(options:
|
|
1063
|
-
content:
|
|
1064
|
-
finishReason:
|
|
1065
|
-
usage:
|
|
1066
|
-
warnings:
|
|
1043
|
+
doGenerate(options: LanguageModelV3CallOptions): Promise<{
|
|
1044
|
+
content: LanguageModelV3Content[];
|
|
1045
|
+
finishReason: LanguageModelV3FinishReason;
|
|
1046
|
+
usage: LanguageModelV3Usage;
|
|
1047
|
+
warnings: [];
|
|
1067
1048
|
}>;
|
|
1068
1049
|
private doGenerateWithChatApi;
|
|
1069
1050
|
private doGenerateWithResponsesApi;
|
|
1070
|
-
doStream(options:
|
|
1071
|
-
stream: ReadableStream<
|
|
1051
|
+
doStream(options: LanguageModelV3CallOptions): Promise<{
|
|
1052
|
+
stream: ReadableStream<LanguageModelV3StreamPart>;
|
|
1072
1053
|
request?: {
|
|
1073
1054
|
body?: unknown;
|
|
1074
1055
|
};
|