@clinebot/llms 0.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/README.md +198 -0
- package/dist/config-browser.d.ts +3 -0
- package/dist/config.d.ts +3 -0
- package/dist/index.browser.d.ts +4 -0
- package/dist/index.browser.js +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +7 -0
- package/dist/models/generated-access.d.ts +4 -0
- package/dist/models/generated-provider-loaders.d.ts +13 -0
- package/dist/models/generated.d.ts +14 -0
- package/dist/models/index.d.ts +43 -0
- package/dist/models/models-dev-catalog.d.ts +32 -0
- package/dist/models/providers/aihubmix.d.ts +5 -0
- package/dist/models/providers/anthropic.d.ts +53 -0
- package/dist/models/providers/asksage.d.ts +5 -0
- package/dist/models/providers/baseten.d.ts +5 -0
- package/dist/models/providers/bedrock.d.ts +7 -0
- package/dist/models/providers/cerebras.d.ts +7 -0
- package/dist/models/providers/claude-code.d.ts +4 -0
- package/dist/models/providers/cline.d.ts +34 -0
- package/dist/models/providers/deepseek.d.ts +8 -0
- package/dist/models/providers/dify.d.ts +5 -0
- package/dist/models/providers/doubao.d.ts +7 -0
- package/dist/models/providers/fireworks.d.ts +8 -0
- package/dist/models/providers/gemini.d.ts +9 -0
- package/dist/models/providers/groq.d.ts +8 -0
- package/dist/models/providers/hicap.d.ts +5 -0
- package/dist/models/providers/huawei-cloud-maas.d.ts +5 -0
- package/dist/models/providers/huggingface.d.ts +6 -0
- package/dist/models/providers/index.d.ts +45 -0
- package/dist/models/providers/litellm.d.ts +5 -0
- package/dist/models/providers/lmstudio.d.ts +5 -0
- package/dist/models/providers/minimax.d.ts +7 -0
- package/dist/models/providers/mistral.d.ts +5 -0
- package/dist/models/providers/moonshot.d.ts +7 -0
- package/dist/models/providers/nebius.d.ts +7 -0
- package/dist/models/providers/nous-research.d.ts +7 -0
- package/dist/models/providers/oca.d.ts +9 -0
- package/dist/models/providers/ollama.d.ts +5 -0
- package/dist/models/providers/openai-codex.d.ts +10 -0
- package/dist/models/providers/openai.d.ts +9 -0
- package/dist/models/providers/opencode.d.ts +10 -0
- package/dist/models/providers/openrouter.d.ts +7 -0
- package/dist/models/providers/qwen-code.d.ts +7 -0
- package/dist/models/providers/qwen.d.ts +7 -0
- package/dist/models/providers/requesty.d.ts +6 -0
- package/dist/models/providers/sambanova.d.ts +7 -0
- package/dist/models/providers/sapaicore.d.ts +7 -0
- package/dist/models/providers/together.d.ts +8 -0
- package/dist/models/providers/vercel-ai-gateway.d.ts +5 -0
- package/dist/models/providers/vertex.d.ts +7 -0
- package/dist/models/providers/xai.d.ts +8 -0
- package/dist/models/providers/zai.d.ts +7 -0
- package/dist/models/query.d.ts +181 -0
- package/dist/models/registry.d.ts +123 -0
- package/dist/models/schemas/index.d.ts +7 -0
- package/dist/models/schemas/model.d.ts +340 -0
- package/dist/models/schemas/query.d.ts +191 -0
- package/dist/providers/handlers/ai-sdk-community.d.ts +46 -0
- package/dist/providers/handlers/ai-sdk-provider-base.d.ts +32 -0
- package/dist/providers/handlers/anthropic-base.d.ts +26 -0
- package/dist/providers/handlers/asksage.d.ts +12 -0
- package/dist/providers/handlers/auth.d.ts +5 -0
- package/dist/providers/handlers/base.d.ts +55 -0
- package/dist/providers/handlers/bedrock-base.d.ts +23 -0
- package/dist/providers/handlers/bedrock-client.d.ts +4 -0
- package/dist/providers/handlers/community-sdk.d.ts +97 -0
- package/dist/providers/handlers/fetch-base.d.ts +18 -0
- package/dist/providers/handlers/gemini-base.d.ts +25 -0
- package/dist/providers/handlers/index.d.ts +19 -0
- package/dist/providers/handlers/openai-base.d.ts +54 -0
- package/dist/providers/handlers/openai-responses.d.ts +64 -0
- package/dist/providers/handlers/providers.d.ts +43 -0
- package/dist/providers/handlers/r1-base.d.ts +62 -0
- package/dist/providers/handlers/registry.d.ts +106 -0
- package/dist/providers/handlers/vertex.d.ts +32 -0
- package/dist/providers/index.d.ts +100 -0
- package/dist/providers/public.browser.d.ts +2 -0
- package/dist/providers/public.d.ts +3 -0
- package/dist/providers/shared/openai-compatible.d.ts +10 -0
- package/dist/providers/transform/ai-sdk-community-format.d.ts +9 -0
- package/dist/providers/transform/anthropic-format.d.ts +24 -0
- package/dist/providers/transform/content-format.d.ts +3 -0
- package/dist/providers/transform/gemini-format.d.ts +19 -0
- package/dist/providers/transform/index.d.ts +10 -0
- package/dist/providers/transform/openai-format.d.ts +36 -0
- package/dist/providers/transform/r1-format.d.ts +26 -0
- package/dist/providers/types/config.d.ts +261 -0
- package/dist/providers/types/handler.d.ts +71 -0
- package/dist/providers/types/index.d.ts +11 -0
- package/dist/providers/types/messages.d.ts +139 -0
- package/dist/providers/types/model-info.d.ts +32 -0
- package/dist/providers/types/provider-ids.d.ts +63 -0
- package/dist/providers/types/settings.d.ts +308 -0
- package/dist/providers/types/stream.d.ts +106 -0
- package/dist/providers/utils/index.d.ts +7 -0
- package/dist/providers/utils/retry.d.ts +38 -0
- package/dist/providers/utils/stream-processor.d.ts +110 -0
- package/dist/providers/utils/tool-processor.d.ts +34 -0
- package/dist/sdk.d.ts +18 -0
- package/dist/types.d.ts +60 -0
- package/package.json +66 -0
- package/src/catalog.ts +20 -0
- package/src/config-browser.ts +11 -0
- package/src/config.ts +49 -0
- package/src/index.browser.ts +9 -0
- package/src/index.ts +10 -0
- package/src/live-providers.test.ts +137 -0
- package/src/models/generated-access.ts +41 -0
- package/src/models/generated-provider-loaders.ts +166 -0
- package/src/models/generated.ts +11997 -0
- package/src/models/index.ts +271 -0
- package/src/models/models-dev-catalog.test.ts +161 -0
- package/src/models/models-dev-catalog.ts +161 -0
- package/src/models/providers/aihubmix.ts +19 -0
- package/src/models/providers/anthropic.ts +60 -0
- package/src/models/providers/asksage.ts +19 -0
- package/src/models/providers/baseten.ts +21 -0
- package/src/models/providers/bedrock.ts +30 -0
- package/src/models/providers/cerebras.ts +24 -0
- package/src/models/providers/claude-code.ts +51 -0
- package/src/models/providers/cline.ts +25 -0
- package/src/models/providers/deepseek.ts +33 -0
- package/src/models/providers/dify.ts +17 -0
- package/src/models/providers/doubao.ts +33 -0
- package/src/models/providers/fireworks.ts +34 -0
- package/src/models/providers/gemini.ts +43 -0
- package/src/models/providers/groq.ts +33 -0
- package/src/models/providers/hicap.ts +18 -0
- package/src/models/providers/huawei-cloud-maas.ts +18 -0
- package/src/models/providers/huggingface.ts +22 -0
- package/src/models/providers/index.ts +162 -0
- package/src/models/providers/litellm.ts +19 -0
- package/src/models/providers/lmstudio.ts +22 -0
- package/src/models/providers/minimax.ts +34 -0
- package/src/models/providers/mistral.ts +19 -0
- package/src/models/providers/moonshot.ts +34 -0
- package/src/models/providers/nebius.ts +24 -0
- package/src/models/providers/nous-research.ts +21 -0
- package/src/models/providers/oca.ts +30 -0
- package/src/models/providers/ollama.ts +18 -0
- package/src/models/providers/openai-codex.ts +30 -0
- package/src/models/providers/openai.ts +43 -0
- package/src/models/providers/opencode.ts +28 -0
- package/src/models/providers/openrouter.ts +24 -0
- package/src/models/providers/qwen-code.ts +33 -0
- package/src/models/providers/qwen.ts +34 -0
- package/src/models/providers/requesty.ts +23 -0
- package/src/models/providers/sambanova.ts +23 -0
- package/src/models/providers/sapaicore.ts +34 -0
- package/src/models/providers/together.ts +35 -0
- package/src/models/providers/vercel-ai-gateway.ts +23 -0
- package/src/models/providers/vertex.ts +36 -0
- package/src/models/providers/xai.ts +34 -0
- package/src/models/providers/zai.ts +25 -0
- package/src/models/query.ts +407 -0
- package/src/models/registry.ts +511 -0
- package/src/models/schemas/index.ts +62 -0
- package/src/models/schemas/model.ts +308 -0
- package/src/models/schemas/query.ts +336 -0
- package/src/providers/browser.ts +4 -0
- package/src/providers/handlers/ai-sdk-community.ts +226 -0
- package/src/providers/handlers/ai-sdk-provider-base.ts +193 -0
- package/src/providers/handlers/anthropic-base.ts +372 -0
- package/src/providers/handlers/asksage.test.ts +103 -0
- package/src/providers/handlers/asksage.ts +138 -0
- package/src/providers/handlers/auth.test.ts +19 -0
- package/src/providers/handlers/auth.ts +121 -0
- package/src/providers/handlers/base.test.ts +46 -0
- package/src/providers/handlers/base.ts +160 -0
- package/src/providers/handlers/bedrock-base.ts +390 -0
- package/src/providers/handlers/bedrock-client.ts +100 -0
- package/src/providers/handlers/codex.test.ts +123 -0
- package/src/providers/handlers/community-sdk.test.ts +288 -0
- package/src/providers/handlers/community-sdk.ts +392 -0
- package/src/providers/handlers/fetch-base.ts +68 -0
- package/src/providers/handlers/gemini-base.ts +302 -0
- package/src/providers/handlers/index.ts +67 -0
- package/src/providers/handlers/openai-base.ts +277 -0
- package/src/providers/handlers/openai-responses.ts +598 -0
- package/src/providers/handlers/providers.test.ts +120 -0
- package/src/providers/handlers/providers.ts +563 -0
- package/src/providers/handlers/r1-base.ts +280 -0
- package/src/providers/handlers/registry.ts +185 -0
- package/src/providers/handlers/vertex.test.ts +124 -0
- package/src/providers/handlers/vertex.ts +292 -0
- package/src/providers/index.ts +534 -0
- package/src/providers/public.browser.ts +20 -0
- package/src/providers/public.ts +51 -0
- package/src/providers/shared/openai-compatible.ts +63 -0
- package/src/providers/transform/ai-sdk-community-format.test.ts +73 -0
- package/src/providers/transform/ai-sdk-community-format.ts +115 -0
- package/src/providers/transform/anthropic-format.ts +218 -0
- package/src/providers/transform/content-format.ts +34 -0
- package/src/providers/transform/format-conversion.test.ts +310 -0
- package/src/providers/transform/gemini-format.ts +167 -0
- package/src/providers/transform/index.ts +22 -0
- package/src/providers/transform/openai-format.ts +247 -0
- package/src/providers/transform/r1-format.ts +287 -0
- package/src/providers/types/config.ts +388 -0
- package/src/providers/types/handler.ts +87 -0
- package/src/providers/types/index.ts +120 -0
- package/src/providers/types/messages.ts +158 -0
- package/src/providers/types/model-info.test.ts +57 -0
- package/src/providers/types/model-info.ts +65 -0
- package/src/providers/types/provider-ids.test.ts +12 -0
- package/src/providers/types/provider-ids.ts +89 -0
- package/src/providers/types/settings.test.ts +49 -0
- package/src/providers/types/settings.ts +533 -0
- package/src/providers/types/stream.ts +117 -0
- package/src/providers/utils/index.ts +27 -0
- package/src/providers/utils/retry.test.ts +140 -0
- package/src/providers/utils/retry.ts +188 -0
- package/src/providers/utils/stream-processor.test.ts +232 -0
- package/src/providers/utils/stream-processor.ts +472 -0
- package/src/providers/utils/tool-processor.test.ts +34 -0
- package/src/providers/utils/tool-processor.ts +111 -0
- package/src/sdk.ts +264 -0
- package/src/types.ts +79 -0
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model Query Schema Definitions
|
|
3
|
+
*
|
|
4
|
+
* Zod schemas for configuring model queries and filters.
|
|
5
|
+
* Users can use these to find models matching specific criteria.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
import { type ModelInfo } from "./model";
|
|
9
|
+
/**
|
|
10
|
+
* Configuration for querying models
|
|
11
|
+
*/
|
|
12
|
+
export declare const ModelQueryConfigSchema: z.ZodObject<{
|
|
13
|
+
providers: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
14
|
+
capabilities: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
15
|
+
images: "images";
|
|
16
|
+
tools: "tools";
|
|
17
|
+
streaming: "streaming";
|
|
18
|
+
"prompt-cache": "prompt-cache";
|
|
19
|
+
reasoning: "reasoning";
|
|
20
|
+
"reasoning-effort": "reasoning-effort";
|
|
21
|
+
"computer-use": "computer-use";
|
|
22
|
+
"global-endpoint": "global-endpoint";
|
|
23
|
+
structured_output: "structured_output";
|
|
24
|
+
temperature: "temperature";
|
|
25
|
+
files: "files";
|
|
26
|
+
}>>>;
|
|
27
|
+
anyCapabilities: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
28
|
+
images: "images";
|
|
29
|
+
tools: "tools";
|
|
30
|
+
streaming: "streaming";
|
|
31
|
+
"prompt-cache": "prompt-cache";
|
|
32
|
+
reasoning: "reasoning";
|
|
33
|
+
"reasoning-effort": "reasoning-effort";
|
|
34
|
+
"computer-use": "computer-use";
|
|
35
|
+
"global-endpoint": "global-endpoint";
|
|
36
|
+
structured_output: "structured_output";
|
|
37
|
+
temperature: "temperature";
|
|
38
|
+
files: "files";
|
|
39
|
+
}>>>;
|
|
40
|
+
excludeCapabilities: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
41
|
+
images: "images";
|
|
42
|
+
tools: "tools";
|
|
43
|
+
streaming: "streaming";
|
|
44
|
+
"prompt-cache": "prompt-cache";
|
|
45
|
+
reasoning: "reasoning";
|
|
46
|
+
"reasoning-effort": "reasoning-effort";
|
|
47
|
+
"computer-use": "computer-use";
|
|
48
|
+
"global-endpoint": "global-endpoint";
|
|
49
|
+
structured_output: "structured_output";
|
|
50
|
+
temperature: "temperature";
|
|
51
|
+
files: "files";
|
|
52
|
+
}>>>;
|
|
53
|
+
status: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
54
|
+
active: "active";
|
|
55
|
+
preview: "preview";
|
|
56
|
+
deprecated: "deprecated";
|
|
57
|
+
legacy: "legacy";
|
|
58
|
+
}>>>;
|
|
59
|
+
includeDeprecated: z.ZodOptional<z.ZodBoolean>;
|
|
60
|
+
apiFormat: z.ZodOptional<z.ZodEnum<{
|
|
61
|
+
default: "default";
|
|
62
|
+
"openai-responses": "openai-responses";
|
|
63
|
+
r1: "r1";
|
|
64
|
+
}>>;
|
|
65
|
+
minContextWindow: z.ZodOptional<z.ZodNumber>;
|
|
66
|
+
maxContextWindow: z.ZodOptional<z.ZodNumber>;
|
|
67
|
+
minMaxTokens: z.ZodOptional<z.ZodNumber>;
|
|
68
|
+
maxInputPrice: z.ZodOptional<z.ZodNumber>;
|
|
69
|
+
maxOutputPrice: z.ZodOptional<z.ZodNumber>;
|
|
70
|
+
search: z.ZodOptional<z.ZodString>;
|
|
71
|
+
hasThinking: z.ZodOptional<z.ZodBoolean>;
|
|
72
|
+
sortBy: z.ZodOptional<z.ZodEnum<{
|
|
73
|
+
outputPrice: "outputPrice";
|
|
74
|
+
name: "name";
|
|
75
|
+
maxTokens: "maxTokens";
|
|
76
|
+
contextWindow: "contextWindow";
|
|
77
|
+
inputPrice: "inputPrice";
|
|
78
|
+
}>>;
|
|
79
|
+
sortDirection: z.ZodOptional<z.ZodEnum<{
|
|
80
|
+
asc: "asc";
|
|
81
|
+
desc: "desc";
|
|
82
|
+
}>>;
|
|
83
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
84
|
+
}, z.core.$strip>;
|
|
85
|
+
export type ModelQueryConfig = z.infer<typeof ModelQueryConfigSchema>;
|
|
86
|
+
/**
|
|
87
|
+
* Result of a model query
|
|
88
|
+
*/
|
|
89
|
+
export declare const ModelQueryResultSchema: z.ZodObject<{
|
|
90
|
+
models: z.ZodArray<z.ZodObject<{
|
|
91
|
+
providerId: z.ZodString;
|
|
92
|
+
modelId: z.ZodString;
|
|
93
|
+
info: z.ZodAny;
|
|
94
|
+
}, z.core.$strip>>;
|
|
95
|
+
total: z.ZodNumber;
|
|
96
|
+
config: z.ZodObject<{
|
|
97
|
+
providers: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
98
|
+
capabilities: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
99
|
+
images: "images";
|
|
100
|
+
tools: "tools";
|
|
101
|
+
streaming: "streaming";
|
|
102
|
+
"prompt-cache": "prompt-cache";
|
|
103
|
+
reasoning: "reasoning";
|
|
104
|
+
"reasoning-effort": "reasoning-effort";
|
|
105
|
+
"computer-use": "computer-use";
|
|
106
|
+
"global-endpoint": "global-endpoint";
|
|
107
|
+
structured_output: "structured_output";
|
|
108
|
+
temperature: "temperature";
|
|
109
|
+
files: "files";
|
|
110
|
+
}>>>;
|
|
111
|
+
anyCapabilities: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
112
|
+
images: "images";
|
|
113
|
+
tools: "tools";
|
|
114
|
+
streaming: "streaming";
|
|
115
|
+
"prompt-cache": "prompt-cache";
|
|
116
|
+
reasoning: "reasoning";
|
|
117
|
+
"reasoning-effort": "reasoning-effort";
|
|
118
|
+
"computer-use": "computer-use";
|
|
119
|
+
"global-endpoint": "global-endpoint";
|
|
120
|
+
structured_output: "structured_output";
|
|
121
|
+
temperature: "temperature";
|
|
122
|
+
files: "files";
|
|
123
|
+
}>>>;
|
|
124
|
+
excludeCapabilities: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
125
|
+
images: "images";
|
|
126
|
+
tools: "tools";
|
|
127
|
+
streaming: "streaming";
|
|
128
|
+
"prompt-cache": "prompt-cache";
|
|
129
|
+
reasoning: "reasoning";
|
|
130
|
+
"reasoning-effort": "reasoning-effort";
|
|
131
|
+
"computer-use": "computer-use";
|
|
132
|
+
"global-endpoint": "global-endpoint";
|
|
133
|
+
structured_output: "structured_output";
|
|
134
|
+
temperature: "temperature";
|
|
135
|
+
files: "files";
|
|
136
|
+
}>>>;
|
|
137
|
+
status: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
138
|
+
active: "active";
|
|
139
|
+
preview: "preview";
|
|
140
|
+
deprecated: "deprecated";
|
|
141
|
+
legacy: "legacy";
|
|
142
|
+
}>>>;
|
|
143
|
+
includeDeprecated: z.ZodOptional<z.ZodBoolean>;
|
|
144
|
+
apiFormat: z.ZodOptional<z.ZodEnum<{
|
|
145
|
+
default: "default";
|
|
146
|
+
"openai-responses": "openai-responses";
|
|
147
|
+
r1: "r1";
|
|
148
|
+
}>>;
|
|
149
|
+
minContextWindow: z.ZodOptional<z.ZodNumber>;
|
|
150
|
+
maxContextWindow: z.ZodOptional<z.ZodNumber>;
|
|
151
|
+
minMaxTokens: z.ZodOptional<z.ZodNumber>;
|
|
152
|
+
maxInputPrice: z.ZodOptional<z.ZodNumber>;
|
|
153
|
+
maxOutputPrice: z.ZodOptional<z.ZodNumber>;
|
|
154
|
+
search: z.ZodOptional<z.ZodString>;
|
|
155
|
+
hasThinking: z.ZodOptional<z.ZodBoolean>;
|
|
156
|
+
sortBy: z.ZodOptional<z.ZodEnum<{
|
|
157
|
+
outputPrice: "outputPrice";
|
|
158
|
+
name: "name";
|
|
159
|
+
maxTokens: "maxTokens";
|
|
160
|
+
contextWindow: "contextWindow";
|
|
161
|
+
inputPrice: "inputPrice";
|
|
162
|
+
}>>;
|
|
163
|
+
sortDirection: z.ZodOptional<z.ZodEnum<{
|
|
164
|
+
asc: "asc";
|
|
165
|
+
desc: "desc";
|
|
166
|
+
}>>;
|
|
167
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
168
|
+
}, z.core.$strip>;
|
|
169
|
+
}, z.core.$strip>;
|
|
170
|
+
export type ModelQueryResult = z.infer<typeof ModelQueryResultSchema>;
|
|
171
|
+
export interface ModelMatch {
|
|
172
|
+
providerId: string;
|
|
173
|
+
modelId: string;
|
|
174
|
+
info: ModelInfo;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Check if a model matches the query config
|
|
178
|
+
*/
|
|
179
|
+
export declare function matchesQuery(modelId: string, info: ModelInfo, config: ModelQueryConfig): boolean;
|
|
180
|
+
/**
|
|
181
|
+
* Sort model results
|
|
182
|
+
*/
|
|
183
|
+
export declare function sortModels(models: ModelMatch[], sortBy: ModelQueryConfig["sortBy"], direction?: "asc" | "desc"): ModelMatch[];
|
|
184
|
+
/**
|
|
185
|
+
* Validate query config
|
|
186
|
+
*/
|
|
187
|
+
export declare function validateQueryConfig(data: unknown): ModelQueryConfig;
|
|
188
|
+
/**
|
|
189
|
+
* Safely validate query config (returns undefined on failure)
|
|
190
|
+
*/
|
|
191
|
+
export declare function safeValidateQueryConfig(data: unknown): ModelQueryConfig | undefined;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { ApiStream } from "../types";
|
|
2
|
+
export type { AiSdkMessage, AiSdkMessagePart, } from "../transform/ai-sdk-community-format";
|
|
3
|
+
export { toAiSdkMessages } from "../transform/ai-sdk-community-format";
|
|
4
|
+
type AiSdkStreamPart = {
|
|
5
|
+
type?: string;
|
|
6
|
+
[key: string]: unknown;
|
|
7
|
+
};
|
|
8
|
+
type AiSdkUsage = {
|
|
9
|
+
inputTokens?: unknown;
|
|
10
|
+
outputTokens?: unknown;
|
|
11
|
+
reasoningTokens?: unknown;
|
|
12
|
+
thoughtsTokenCount?: unknown;
|
|
13
|
+
cachedInputTokens?: unknown;
|
|
14
|
+
};
|
|
15
|
+
export type AiSdkStream = {
|
|
16
|
+
fullStream?: AsyncIterable<AiSdkStreamPart>;
|
|
17
|
+
textStream?: AsyncIterable<string>;
|
|
18
|
+
text?: Promise<string> | string;
|
|
19
|
+
usage?: Promise<Record<string, unknown>>;
|
|
20
|
+
};
|
|
21
|
+
type AiSdkUsageMetrics = {
|
|
22
|
+
inputTokens: number;
|
|
23
|
+
outputTokens: number;
|
|
24
|
+
thoughtsTokenCount: number;
|
|
25
|
+
cacheReadTokens: number;
|
|
26
|
+
cacheWriteTokens?: number;
|
|
27
|
+
};
|
|
28
|
+
export type EmitAiSdkStreamOptions = {
|
|
29
|
+
responseId: string;
|
|
30
|
+
errorMessage: string;
|
|
31
|
+
calculateCost: (inputTokens: number, outputTokens: number, cacheReadTokens: number) => number | undefined;
|
|
32
|
+
reasoningTypes?: string[];
|
|
33
|
+
enableToolCalls?: boolean;
|
|
34
|
+
toolCallArgsOrder?: Array<"args" | "input">;
|
|
35
|
+
toolCallFunctionIncludeId?: boolean;
|
|
36
|
+
enableTextFallback?: boolean;
|
|
37
|
+
resolveUsageMetrics?: (usage: AiSdkUsage, part?: AiSdkStreamPart) => AiSdkUsageMetrics;
|
|
38
|
+
};
|
|
39
|
+
export type LoadAiSdkOptions = {
|
|
40
|
+
beforeImport?: () => void;
|
|
41
|
+
};
|
|
42
|
+
export declare function loadAiSdkModule(options?: LoadAiSdkOptions): Promise<{
|
|
43
|
+
streamText: (input: Record<string, unknown>) => AiSdkStream;
|
|
44
|
+
}>;
|
|
45
|
+
export declare function numberOrZero(value: unknown): number;
|
|
46
|
+
export declare function emitAiSdkStream(stream: AiSdkStream, options: EmitAiSdkStreamOptions): ApiStream;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { ApiStream, HandlerModelInfo, ProviderConfig } from "../types";
|
|
2
|
+
import type { Message, ToolDefinition } from "../types/messages";
|
|
3
|
+
import { type EmitAiSdkStreamOptions, type LoadAiSdkOptions } from "./ai-sdk-community";
|
|
4
|
+
import { BaseHandler } from "./base";
|
|
5
|
+
type AiSdkCommunityProvider = (modelId: string, settings?: Record<string, unknown>) => unknown;
|
|
6
|
+
type CommunityProviderDefinition = {
|
|
7
|
+
moduleName: string;
|
|
8
|
+
createExportName: string;
|
|
9
|
+
providerExportName: string;
|
|
10
|
+
missingDependencyError: string;
|
|
11
|
+
};
|
|
12
|
+
export declare function resolveHandlerModel(config: ProviderConfig, defaultModelId?: string): HandlerModelInfo;
|
|
13
|
+
export declare abstract class AiSdkProviderHandler extends BaseHandler {
|
|
14
|
+
private provider;
|
|
15
|
+
private providerPromise;
|
|
16
|
+
protected abstract getProviderDefinition(): CommunityProviderDefinition;
|
|
17
|
+
protected abstract getDefaultModelId(): string;
|
|
18
|
+
protected getProviderCreateOptions(): Record<string, unknown> | undefined;
|
|
19
|
+
protected beforeLoadProviderModule(): Promise<void>;
|
|
20
|
+
protected getProviderModelSettings(): Record<string, unknown> | undefined;
|
|
21
|
+
protected getLoadAiSdkOptions(): LoadAiSdkOptions | undefined;
|
|
22
|
+
protected getStreamErrorMessage(): string;
|
|
23
|
+
protected getEmitStreamOptions(): Omit<EmitAiSdkStreamOptions, "responseId" | "errorMessage" | "calculateCost">;
|
|
24
|
+
protected getAssistantToolCallArgKey(): "args" | "input";
|
|
25
|
+
protected normalizeModelId(modelId: string): string;
|
|
26
|
+
protected ensureProvider(): Promise<AiSdkCommunityProvider>;
|
|
27
|
+
getModel(): HandlerModelInfo;
|
|
28
|
+
getMessages(systemPrompt: string, messages: Message[]): import("./ai-sdk-community").AiSdkMessage[];
|
|
29
|
+
createMessage(systemPrompt: string, messages: Message[], tools?: ToolDefinition[]): ApiStream;
|
|
30
|
+
private createMessageInternal;
|
|
31
|
+
}
|
|
32
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Anthropic Base Handler
|
|
3
|
+
*
|
|
4
|
+
* Handler for Anthropic's API using the official SDK.
|
|
5
|
+
* Supports prompt caching, extended thinking, and native tool calling.
|
|
6
|
+
*/
|
|
7
|
+
import { Anthropic } from "@anthropic-ai/sdk";
|
|
8
|
+
import { type ApiStream, type HandlerModelInfo, type ProviderConfig } from "../types";
|
|
9
|
+
import type { Message, ToolDefinition } from "../types/messages";
|
|
10
|
+
import { BaseHandler } from "./base";
|
|
11
|
+
/**
|
|
12
|
+
* Handler for Anthropic's API
|
|
13
|
+
*/
|
|
14
|
+
export declare class AnthropicHandler extends BaseHandler {
|
|
15
|
+
private client;
|
|
16
|
+
private ensureClient;
|
|
17
|
+
getModel(): HandlerModelInfo;
|
|
18
|
+
getMessages(_systemPrompt: string, messages: Message[]): Anthropic.MessageParam[];
|
|
19
|
+
createMessage(systemPrompt: string, messages: Message[], tools?: ToolDefinition[]): ApiStream;
|
|
20
|
+
private createMessageInternal;
|
|
21
|
+
private processChunk;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Create an Anthropic handler
|
|
25
|
+
*/
|
|
26
|
+
export declare function createAnthropicHandler(config: ProviderConfig): AnthropicHandler;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ApiStream, HandlerModelInfo, ProviderConfig } from "../types";
|
|
2
|
+
import type { Message } from "../types/messages";
|
|
3
|
+
import { FetchBaseHandler } from "./fetch-base";
|
|
4
|
+
export declare const DEFAULT_ASKSAGE_BASE_URL = "https://api.asksage.ai/server";
|
|
5
|
+
export declare class AskSageHandler extends FetchBaseHandler {
|
|
6
|
+
protected getDefaultBaseUrl(): string;
|
|
7
|
+
getModel(): HandlerModelInfo;
|
|
8
|
+
protected getJsonHeaders(extra?: Record<string, string>): Record<string, string>;
|
|
9
|
+
protected createMessageWithFetch(systemPrompt: string, messages: Message[]): ApiStream;
|
|
10
|
+
private serializeMessageContent;
|
|
11
|
+
}
|
|
12
|
+
export declare function createAskSageHandler(config: ProviderConfig): AskSageHandler;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { normalizeProviderId } from "../types/provider-ids";
|
|
2
|
+
export { normalizeProviderId };
|
|
3
|
+
export declare function getProviderEnvKeys(providerId: string): readonly string[];
|
|
4
|
+
export declare function resolveApiKeyForProvider(providerId: string, explicitApiKey: string | undefined, env?: Record<string, string | undefined>): string | undefined;
|
|
5
|
+
export declare function getMissingApiKeyError(providerId: string): string;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Handler
|
|
3
|
+
*
|
|
4
|
+
* Abstract base class that provides common functionality for all handlers.
|
|
5
|
+
*/
|
|
6
|
+
import type { ApiHandler, ApiStream, ApiStreamUsageChunk, HandlerModelInfo, ProviderConfig } from "../types";
|
|
7
|
+
import type { Message, ToolDefinition } from "../types/messages";
|
|
8
|
+
import type { ApiStreamChunk } from "../types/stream";
|
|
9
|
+
export declare const DEFAULT_REQUEST_HEADERS: Record<string, string>;
|
|
10
|
+
/**
|
|
11
|
+
* Base handler class with common functionality
|
|
12
|
+
*/
|
|
13
|
+
export declare abstract class BaseHandler implements ApiHandler {
|
|
14
|
+
protected config: ProviderConfig;
|
|
15
|
+
protected abortController: AbortController | undefined;
|
|
16
|
+
constructor(config: ProviderConfig);
|
|
17
|
+
/**
|
|
18
|
+
* Convert Cline messages to provider-specific format
|
|
19
|
+
* Must be implemented by subclasses
|
|
20
|
+
*/
|
|
21
|
+
abstract getMessages(systemPrompt: string, messages: Message[]): unknown;
|
|
22
|
+
/**
|
|
23
|
+
* Create a streaming message completion
|
|
24
|
+
* Must be implemented by subclasses
|
|
25
|
+
*/
|
|
26
|
+
abstract createMessage(systemPrompt: string, messages: Message[], tools?: ToolDefinition[]): ApiStream;
|
|
27
|
+
/**
|
|
28
|
+
* Get the current model configuration
|
|
29
|
+
* Can be overridden by subclasses for provider-specific logic
|
|
30
|
+
*/
|
|
31
|
+
getModel(): HandlerModelInfo;
|
|
32
|
+
/**
|
|
33
|
+
* Get usage information (optional)
|
|
34
|
+
* Override in subclasses that support this
|
|
35
|
+
*/
|
|
36
|
+
getApiStreamUsage(): Promise<ApiStreamUsageChunk | undefined>;
|
|
37
|
+
/**
|
|
38
|
+
* Get the abort signal for the current request
|
|
39
|
+
* Creates a new AbortController if one doesn't exist or was already aborted
|
|
40
|
+
* Combines with config.abortSignal if provided
|
|
41
|
+
*/
|
|
42
|
+
protected getAbortSignal(): AbortSignal;
|
|
43
|
+
/**
|
|
44
|
+
* Abort the current request
|
|
45
|
+
*/
|
|
46
|
+
abort(): void;
|
|
47
|
+
/**
|
|
48
|
+
* Helper to calculate cost from usage
|
|
49
|
+
*/
|
|
50
|
+
protected calculateCost(inputTokens: number, outputTokens: number, cacheReadTokens?: number): number | undefined;
|
|
51
|
+
protected createResponseId(): string;
|
|
52
|
+
protected withResponseId<T extends ApiStreamChunk>(chunk: T, responseId: string): T;
|
|
53
|
+
protected withResponseIdForAll(chunks: Iterable<ApiStreamChunk>, responseId: string): Generator<ApiStreamChunk>;
|
|
54
|
+
protected getRequestHeaders(): Record<string, string>;
|
|
55
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type ApiStream, type HandlerModelInfo, type ProviderConfig } from "../types";
|
|
2
|
+
import type { Message, ToolDefinition } from "../types/messages";
|
|
3
|
+
import { BaseHandler } from "./base";
|
|
4
|
+
type ModelMessagePart = Record<string, unknown>;
|
|
5
|
+
type ModelMessage = {
|
|
6
|
+
role: "system" | "user" | "assistant" | "tool";
|
|
7
|
+
content: string | ModelMessagePart[];
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Handler for AWS Bedrock using AI SDK's Amazon Bedrock provider.
|
|
11
|
+
*
|
|
12
|
+
* This handler is async-lazy loaded via createHandlerAsync.
|
|
13
|
+
*/
|
|
14
|
+
export declare class BedrockHandler extends BaseHandler {
|
|
15
|
+
private clientFactory;
|
|
16
|
+
private ensureClientFactory;
|
|
17
|
+
getModel(): HandlerModelInfo;
|
|
18
|
+
getMessages(systemPrompt: string, messages: Message[]): ModelMessage[];
|
|
19
|
+
createMessage(systemPrompt: string, messages: Message[], tools?: ToolDefinition[]): ApiStream;
|
|
20
|
+
private createMessageInternal;
|
|
21
|
+
}
|
|
22
|
+
export declare function createBedrockHandler(config: ProviderConfig): BedrockHandler;
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Community SDK Handlers
|
|
3
|
+
*
|
|
4
|
+
* Consolidated handlers for:
|
|
5
|
+
* - Codex CLI (`openai-codex`)
|
|
6
|
+
* - Claude Code (`claude-code`)
|
|
7
|
+
* - OpenCode (`opencode`)
|
|
8
|
+
* - Mistral (`mistral`)
|
|
9
|
+
* - Dify (`dify`)
|
|
10
|
+
* - SAP AI Core (`sapaicore`)
|
|
11
|
+
*/
|
|
12
|
+
import type { ProviderConfig } from "../types";
|
|
13
|
+
import type { EmitAiSdkStreamOptions } from "./ai-sdk-community";
|
|
14
|
+
import { AiSdkProviderHandler } from "./ai-sdk-provider-base";
|
|
15
|
+
export declare class CodexHandler extends AiSdkProviderHandler {
|
|
16
|
+
protected getProviderDefinition(): {
|
|
17
|
+
moduleName: string;
|
|
18
|
+
createExportName: string;
|
|
19
|
+
providerExportName: string;
|
|
20
|
+
missingDependencyError: string;
|
|
21
|
+
};
|
|
22
|
+
protected getDefaultModelId(): string;
|
|
23
|
+
protected beforeLoadProviderModule(): Promise<void>;
|
|
24
|
+
protected getProviderCreateOptions(): Record<string, unknown>;
|
|
25
|
+
protected getProviderModelSettings(): Record<string, unknown> | undefined;
|
|
26
|
+
protected getStreamErrorMessage(): string;
|
|
27
|
+
protected getEmitStreamOptions(): Omit<EmitAiSdkStreamOptions, "responseId" | "errorMessage" | "calculateCost">;
|
|
28
|
+
}
|
|
29
|
+
export declare class ClaudeCodeHandler extends AiSdkProviderHandler {
|
|
30
|
+
protected getProviderDefinition(): {
|
|
31
|
+
moduleName: string;
|
|
32
|
+
createExportName: string;
|
|
33
|
+
providerExportName: string;
|
|
34
|
+
missingDependencyError: string;
|
|
35
|
+
};
|
|
36
|
+
protected getDefaultModelId(): string;
|
|
37
|
+
protected getProviderCreateOptions(): Record<string, unknown> | undefined;
|
|
38
|
+
protected getLoadAiSdkOptions(): {
|
|
39
|
+
beforeImport: () => void;
|
|
40
|
+
};
|
|
41
|
+
protected getStreamErrorMessage(): string;
|
|
42
|
+
protected getEmitStreamOptions(): Omit<EmitAiSdkStreamOptions, "responseId" | "errorMessage" | "calculateCost">;
|
|
43
|
+
}
|
|
44
|
+
export declare class OpenCodeHandler extends AiSdkProviderHandler {
|
|
45
|
+
protected getProviderDefinition(): {
|
|
46
|
+
moduleName: string;
|
|
47
|
+
createExportName: string;
|
|
48
|
+
providerExportName: string;
|
|
49
|
+
missingDependencyError: string;
|
|
50
|
+
};
|
|
51
|
+
protected getDefaultModelId(): string;
|
|
52
|
+
protected getProviderCreateOptions(): Record<string, unknown>;
|
|
53
|
+
protected getProviderModelSettings(): Record<string, unknown> | undefined;
|
|
54
|
+
protected normalizeModelId(modelId: string): string;
|
|
55
|
+
protected getStreamErrorMessage(): string;
|
|
56
|
+
protected getEmitStreamOptions(): Omit<EmitAiSdkStreamOptions, "responseId" | "errorMessage" | "calculateCost">;
|
|
57
|
+
}
|
|
58
|
+
export declare class SapAiCoreHandler extends AiSdkProviderHandler {
|
|
59
|
+
protected getProviderDefinition(): {
|
|
60
|
+
moduleName: string;
|
|
61
|
+
createExportName: string;
|
|
62
|
+
providerExportName: string;
|
|
63
|
+
missingDependencyError: string;
|
|
64
|
+
};
|
|
65
|
+
protected getDefaultModelId(): string;
|
|
66
|
+
protected getProviderCreateOptions(): Record<string, unknown> | undefined;
|
|
67
|
+
protected getStreamErrorMessage(): string;
|
|
68
|
+
protected getEmitStreamOptions(): Omit<EmitAiSdkStreamOptions, "responseId" | "errorMessage" | "calculateCost">;
|
|
69
|
+
}
|
|
70
|
+
export declare class MistralHandler extends AiSdkProviderHandler {
|
|
71
|
+
protected getProviderDefinition(): {
|
|
72
|
+
moduleName: string;
|
|
73
|
+
createExportName: string;
|
|
74
|
+
providerExportName: string;
|
|
75
|
+
missingDependencyError: string;
|
|
76
|
+
};
|
|
77
|
+
protected getDefaultModelId(): string;
|
|
78
|
+
protected getStreamErrorMessage(): string;
|
|
79
|
+
}
|
|
80
|
+
export declare class DifyHandler extends AiSdkProviderHandler {
|
|
81
|
+
protected getProviderDefinition(): {
|
|
82
|
+
moduleName: string;
|
|
83
|
+
createExportName: string;
|
|
84
|
+
providerExportName: string;
|
|
85
|
+
missingDependencyError: string;
|
|
86
|
+
};
|
|
87
|
+
protected getDefaultModelId(): string;
|
|
88
|
+
protected getProviderCreateOptions(): Record<string, unknown> | undefined;
|
|
89
|
+
protected getProviderModelSettings(): Record<string, unknown> | undefined;
|
|
90
|
+
protected getStreamErrorMessage(): string;
|
|
91
|
+
}
|
|
92
|
+
export declare function createCodexHandler(config: ProviderConfig): CodexHandler;
|
|
93
|
+
export declare function createClaudeCodeHandler(config: ProviderConfig): ClaudeCodeHandler;
|
|
94
|
+
export declare function createOpenCodeHandler(config: ProviderConfig): OpenCodeHandler;
|
|
95
|
+
export declare function createSapAiCoreHandler(config: ProviderConfig): SapAiCoreHandler;
|
|
96
|
+
export declare function createMistralHandler(config: ProviderConfig): MistralHandler;
|
|
97
|
+
export declare function createDifyHandler(config: ProviderConfig): DifyHandler;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ApiStream } from "../types";
|
|
2
|
+
import type { Message, ToolDefinition } from "../types/messages";
|
|
3
|
+
import { BaseHandler } from "./base";
|
|
4
|
+
type JsonRecord = Record<string, unknown>;
|
|
5
|
+
export declare abstract class FetchBaseHandler extends BaseHandler {
|
|
6
|
+
protected abstract getDefaultBaseUrl(): string;
|
|
7
|
+
getMessages(systemPrompt: string, messages: Message[]): unknown;
|
|
8
|
+
protected getBaseUrl(): string;
|
|
9
|
+
protected getJsonHeaders(extra?: Record<string, string>): Record<string, string>;
|
|
10
|
+
protected fetchJson<T>(path: string, init: {
|
|
11
|
+
method?: string;
|
|
12
|
+
body?: JsonRecord;
|
|
13
|
+
headers?: Record<string, string>;
|
|
14
|
+
}): Promise<T>;
|
|
15
|
+
createMessage(systemPrompt: string, messages: Message[], tools?: ToolDefinition[]): ApiStream;
|
|
16
|
+
protected abstract createMessageWithFetch(systemPrompt: string, messages: Message[]): ApiStream;
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gemini Base Handler
|
|
3
|
+
*
|
|
4
|
+
* Handler for Google's Gemini API using the official SDK.
|
|
5
|
+
* Supports Vertex AI, thinking/reasoning, and native tool calling.
|
|
6
|
+
*/
|
|
7
|
+
import { type ApiStream, type HandlerModelInfo, type ProviderConfig } from "../types";
|
|
8
|
+
import type { Message, ToolDefinition } from "../types/messages";
|
|
9
|
+
import { BaseHandler } from "./base";
|
|
10
|
+
/**
|
|
11
|
+
* Handler for Google's Gemini API
|
|
12
|
+
*/
|
|
13
|
+
export declare class GeminiHandler extends BaseHandler {
|
|
14
|
+
private client;
|
|
15
|
+
private ensureClient;
|
|
16
|
+
getModel(): HandlerModelInfo;
|
|
17
|
+
getMessages(_systemPrompt: string, messages: Message[]): import("@google/genai").Content[];
|
|
18
|
+
createMessage(systemPrompt: string, messages: Message[], tools?: ToolDefinition[]): ApiStream;
|
|
19
|
+
private createMessageInternal;
|
|
20
|
+
private calculateGeminiCost;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Create a Gemini handler
|
|
24
|
+
*/
|
|
25
|
+
export declare function createGeminiHandler(config: ProviderConfig): GeminiHandler;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Handlers Index
|
|
3
|
+
*
|
|
4
|
+
* Re-exports all handler classes and factory functions.
|
|
5
|
+
*/
|
|
6
|
+
export { AnthropicHandler, createAnthropicHandler } from "./anthropic-base";
|
|
7
|
+
export { AskSageHandler, createAskSageHandler } from "./asksage";
|
|
8
|
+
export { getMissingApiKeyError, getProviderEnvKeys, normalizeProviderId, resolveApiKeyForProvider, } from "./auth";
|
|
9
|
+
export { BaseHandler } from "./base";
|
|
10
|
+
export { BedrockHandler, createBedrockHandler } from "./bedrock-base";
|
|
11
|
+
export { ClaudeCodeHandler, CodexHandler, createClaudeCodeHandler, createCodexHandler, createDifyHandler, createMistralHandler, createOpenCodeHandler, createSapAiCoreHandler, DifyHandler, MistralHandler, OpenCodeHandler, SapAiCoreHandler, } from "./community-sdk";
|
|
12
|
+
export { FetchBaseHandler } from "./fetch-base";
|
|
13
|
+
export { createGeminiHandler, GeminiHandler } from "./gemini-base";
|
|
14
|
+
export { createOpenAIHandler, OpenAIBaseHandler } from "./openai-base";
|
|
15
|
+
export { createOpenAIResponsesHandler, OpenAIResponsesHandler, } from "./openai-responses";
|
|
16
|
+
export { clearLiveModelsCatalogCache, clearPrivateModelsCatalogCache, DEFAULT_MODELS_CATALOG_URL, getLiveModelsCatalog, getProviderConfig, isOpenAICompatibleProvider, OPENAI_COMPATIBLE_PROVIDERS, type ProviderDefaults, resolveProviderConfig, } from "./providers";
|
|
17
|
+
export { createR1Handler, R1BaseHandler } from "./r1-base";
|
|
18
|
+
export { clearRegistry, getRegisteredHandler, getRegisteredHandlerAsync, getRegisteredProviderIds, hasRegisteredHandler, isRegisteredHandlerAsync, registerAsyncHandler, registerHandler, unregisterHandler, } from "./registry";
|
|
19
|
+
export { createVertexHandler, VertexHandler } from "./vertex";
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI Base Handler
|
|
3
|
+
*
|
|
4
|
+
* Base class for all handlers using the OpenAI SDK.
|
|
5
|
+
* This handles the common streaming logic and can be extended for:
|
|
6
|
+
* - Standard OpenAI API
|
|
7
|
+
* - OpenAI-compatible providers (DeepSeek, xAI, Together, etc.)
|
|
8
|
+
* - OpenRouter
|
|
9
|
+
* - Azure OpenAI
|
|
10
|
+
*/
|
|
11
|
+
import OpenAI from "openai";
|
|
12
|
+
import type { ChatCompletionChunk } from "openai/resources/chat/completions";
|
|
13
|
+
import type { ApiStream, HandlerModelInfo, ModelInfo, ProviderConfig } from "../types";
|
|
14
|
+
import type { Message, ToolDefinition } from "../types/messages";
|
|
15
|
+
import { ToolCallProcessor } from "../utils/tool-processor";
|
|
16
|
+
import { BaseHandler } from "./base";
|
|
17
|
+
/**
|
|
18
|
+
* Base handler for OpenAI SDK-based providers
|
|
19
|
+
*
|
|
20
|
+
* Uses ProviderConfig fields:
|
|
21
|
+
* - baseUrl: Base URL for the API
|
|
22
|
+
* - modelId: Model ID
|
|
23
|
+
* - knownModels: Known models with their info
|
|
24
|
+
* - headers: Custom headers
|
|
25
|
+
* - capabilities: Array of supported capabilities (reasoning, prompt-cache, etc.)
|
|
26
|
+
*/
|
|
27
|
+
export declare class OpenAIBaseHandler extends BaseHandler {
|
|
28
|
+
protected client: OpenAI | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* Ensure the OpenAI client is initialized
|
|
31
|
+
* Can be overridden for custom client creation (e.g., Azure)
|
|
32
|
+
*/
|
|
33
|
+
protected ensureClient(): OpenAI;
|
|
34
|
+
/**
|
|
35
|
+
* Get model info, falling back to provider defaults
|
|
36
|
+
*/
|
|
37
|
+
getModel(): HandlerModelInfo;
|
|
38
|
+
protected getDefaultModelInfo(): ModelInfo;
|
|
39
|
+
getMessages(systemPrompt: string, messages: Message[]): OpenAI.Chat.ChatCompletionMessageParam[];
|
|
40
|
+
/**
|
|
41
|
+
* Create a streaming message
|
|
42
|
+
*/
|
|
43
|
+
createMessage(systemPrompt: string, messages: Message[], tools?: ToolDefinition[]): ApiStream;
|
|
44
|
+
private createMessageInternal;
|
|
45
|
+
/**
|
|
46
|
+
* Process a single chunk from the stream
|
|
47
|
+
* Can be overridden for provider-specific handling
|
|
48
|
+
*/
|
|
49
|
+
protected processChunk(chunk: ChatCompletionChunk, toolCallProcessor: ToolCallProcessor, _modelInfo: ModelInfo, responseId: string): Generator<import("../types").ApiStreamChunk>;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Create an OpenAI-compatible handler
|
|
53
|
+
*/
|
|
54
|
+
export declare function createOpenAIHandler(config: ProviderConfig): OpenAIBaseHandler;
|