@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,388 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider Configuration Types
|
|
3
|
+
*
|
|
4
|
+
* Unified configuration interface for all providers.
|
|
5
|
+
* This replaces the per-provider config chaos with a single structure.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { ModelInfo } from "./model-info";
|
|
9
|
+
import {
|
|
10
|
+
BUILT_IN_PROVIDER,
|
|
11
|
+
BUILT_IN_PROVIDER_IDS,
|
|
12
|
+
type BuiltInProviderId,
|
|
13
|
+
isBuiltInProviderId,
|
|
14
|
+
normalizeProviderId,
|
|
15
|
+
} from "./provider-ids";
|
|
16
|
+
|
|
17
|
+
// Re-export for convenience
|
|
18
|
+
export {
|
|
19
|
+
BUILT_IN_PROVIDER,
|
|
20
|
+
BUILT_IN_PROVIDER_IDS,
|
|
21
|
+
type BuiltInProviderId,
|
|
22
|
+
isBuiltInProviderId,
|
|
23
|
+
normalizeProviderId,
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* All supported provider IDs (built-in + custom)
|
|
28
|
+
*
|
|
29
|
+
* Custom provider IDs can be registered via `registerHandler()` or `registerAsyncHandler()`.
|
|
30
|
+
* Any string is accepted to allow for custom handlers that extend BaseHandler.
|
|
31
|
+
*/
|
|
32
|
+
export type ProviderId = BuiltInProviderId | (string & {});
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Provider categories based on underlying SDK/protocol
|
|
36
|
+
*/
|
|
37
|
+
export type ProviderCategory =
|
|
38
|
+
| "anthropic" // Anthropic SDK
|
|
39
|
+
| "openai" // OpenAI SDK (native features)
|
|
40
|
+
| "openai-compat" // OpenAI-compatible APIs
|
|
41
|
+
| "openai-responses" // OpenAI-Responses APIs
|
|
42
|
+
| "gemini" // Google GenAI SDK
|
|
43
|
+
| "bedrock" // AWS Bedrock SDK
|
|
44
|
+
| "custom"; // Custom implementations
|
|
45
|
+
|
|
46
|
+
// =============================================================================
|
|
47
|
+
// Provider Capabilities
|
|
48
|
+
// =============================================================================
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Capabilities that a provider/model may support
|
|
52
|
+
*/
|
|
53
|
+
export type ProviderCapability =
|
|
54
|
+
| "reasoning" // Extended thinking/reasoning
|
|
55
|
+
| "prompt-cache" // Prompt caching
|
|
56
|
+
| "streaming" // Streaming responses
|
|
57
|
+
| "tools" // Tool/function calling
|
|
58
|
+
| "vision" // Image inputs
|
|
59
|
+
| "computer-use" // Computer use tools
|
|
60
|
+
| "oauth"; // OAuth authentication flow
|
|
61
|
+
|
|
62
|
+
// =============================================================================
|
|
63
|
+
// Configuration Components
|
|
64
|
+
// =============================================================================
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Authentication configuration
|
|
68
|
+
*/
|
|
69
|
+
export interface AuthConfig {
|
|
70
|
+
/** API key (most common) */
|
|
71
|
+
apiKey?: string;
|
|
72
|
+
/** OAuth access token */
|
|
73
|
+
accessToken?: string;
|
|
74
|
+
/** Refresh token for OAuth */
|
|
75
|
+
refreshToken?: string;
|
|
76
|
+
/** Account ID (for account-based auth) */
|
|
77
|
+
accountId?: string;
|
|
78
|
+
/** OAuth callback path (e.g., for Qwen Code) */
|
|
79
|
+
oauthPath?: string;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Endpoint configuration
|
|
84
|
+
*/
|
|
85
|
+
export interface EndpointConfig {
|
|
86
|
+
/** Base URL for the API */
|
|
87
|
+
baseUrl?: string;
|
|
88
|
+
/** Custom headers to include */
|
|
89
|
+
headers?: Record<string, string>;
|
|
90
|
+
/** Request timeout in milliseconds */
|
|
91
|
+
timeoutMs?: number;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Model configuration
|
|
96
|
+
*/
|
|
97
|
+
export interface ModelConfig {
|
|
98
|
+
/** Model identifier */
|
|
99
|
+
modelId: string;
|
|
100
|
+
/** Pre-fetched model info (optional - will use defaults if not provided) */
|
|
101
|
+
modelInfo?: ModelInfo;
|
|
102
|
+
/** Known models for this provider with their info */
|
|
103
|
+
knownModels?: Record<string, ModelInfo>;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Token limits configuration
|
|
108
|
+
*/
|
|
109
|
+
export interface TokenConfig {
|
|
110
|
+
/** Maximum context window tokens (overrides model default) */
|
|
111
|
+
maxContextTokens?: number;
|
|
112
|
+
/** Maximum output tokens (overrides model default) */
|
|
113
|
+
maxOutputTokens?: number;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Reasoning/thinking model configuration
|
|
118
|
+
*/
|
|
119
|
+
export interface ReasoningConfig {
|
|
120
|
+
/** Reasoning effort level */
|
|
121
|
+
reasoningEffort?: "low" | "medium" | "high";
|
|
122
|
+
/** Extended thinking budget in tokens */
|
|
123
|
+
thinkingBudgetTokens?: number;
|
|
124
|
+
/** Enable thinking with provider/model defaults when supported */
|
|
125
|
+
thinking?: boolean;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Region configuration (shared across cloud providers)
|
|
130
|
+
*/
|
|
131
|
+
export interface RegionConfig {
|
|
132
|
+
/** Cloud region (AWS, GCP, Azure, or provider-specific like Qwen's china/international) */
|
|
133
|
+
region?: string;
|
|
134
|
+
/** API line for region-specific routing (e.g., "china" | "international" for Qwen) */
|
|
135
|
+
apiLine?: "china" | "international";
|
|
136
|
+
/** Use cross-region inference (Bedrock) */
|
|
137
|
+
useCrossRegionInference?: boolean;
|
|
138
|
+
/** Use global inference (Bedrock) */
|
|
139
|
+
useGlobalInference?: boolean;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* AWS-specific configuration (for Bedrock)
|
|
144
|
+
*/
|
|
145
|
+
export interface AwsConfig {
|
|
146
|
+
accessKey?: string;
|
|
147
|
+
secretKey?: string;
|
|
148
|
+
sessionToken?: string;
|
|
149
|
+
authentication?: "iam" | "api-key" | "profile";
|
|
150
|
+
profile?: string;
|
|
151
|
+
usePromptCache?: boolean;
|
|
152
|
+
endpoint?: string;
|
|
153
|
+
customModelBaseId?: string;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Google Cloud configuration (for Vertex AI)
|
|
158
|
+
*/
|
|
159
|
+
export interface GcpConfig {
|
|
160
|
+
projectId?: string;
|
|
161
|
+
region?: string;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Azure configuration (for Azure OpenAI)
|
|
166
|
+
*/
|
|
167
|
+
export interface AzureConfig {
|
|
168
|
+
apiVersion?: string;
|
|
169
|
+
useIdentity?: boolean;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* SAP AI Core configuration
|
|
174
|
+
*/
|
|
175
|
+
export interface SapConfig {
|
|
176
|
+
clientId?: string;
|
|
177
|
+
clientSecret?: string;
|
|
178
|
+
tokenUrl?: string;
|
|
179
|
+
resourceGroup?: string;
|
|
180
|
+
deploymentId?: string;
|
|
181
|
+
useOrchestrationMode?: boolean;
|
|
182
|
+
api?: "orchestration" | "foundation-models";
|
|
183
|
+
defaultSettings?: Record<string, unknown>;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* OCA (Oracle Cloud AI) configuration
|
|
188
|
+
*/
|
|
189
|
+
export interface OcaConfig {
|
|
190
|
+
mode?: "internal" | "external";
|
|
191
|
+
usePromptCache?: boolean;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Codex CLI provider options
|
|
196
|
+
*/
|
|
197
|
+
export interface CodexConfig {
|
|
198
|
+
defaultSettings?: Record<string, unknown>;
|
|
199
|
+
modelSettings?: Record<string, unknown>;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Claude Code provider options
|
|
204
|
+
*/
|
|
205
|
+
export interface ClaudeCodeConfig {
|
|
206
|
+
[key: string]: unknown;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* OpenCode provider options
|
|
211
|
+
*/
|
|
212
|
+
export interface OpenCodeConfig {
|
|
213
|
+
hostname?: string;
|
|
214
|
+
port?: number;
|
|
215
|
+
autoStartServer?: boolean;
|
|
216
|
+
serverTimeout?: number;
|
|
217
|
+
defaultSettings?: Record<string, unknown>;
|
|
218
|
+
modelSettings?: Record<string, unknown>;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* Cloud provider configurations (grouped)
|
|
223
|
+
*/
|
|
224
|
+
export interface CloudConfig {
|
|
225
|
+
/** AWS/Bedrock options */
|
|
226
|
+
aws?: AwsConfig;
|
|
227
|
+
/** Google Cloud/Vertex options */
|
|
228
|
+
gcp?: GcpConfig;
|
|
229
|
+
/** Azure options */
|
|
230
|
+
azure?: AzureConfig;
|
|
231
|
+
/** SAP AI Core options */
|
|
232
|
+
sap?: SapConfig;
|
|
233
|
+
/** OCA options */
|
|
234
|
+
oca?: OcaConfig;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Provider-specific options that don't fit other categories
|
|
239
|
+
*/
|
|
240
|
+
export interface ProviderOptions {
|
|
241
|
+
/** OpenRouter provider sorting preference */
|
|
242
|
+
openRouterProviderSorting?: string;
|
|
243
|
+
/** Runtime model catalog refresh configuration */
|
|
244
|
+
modelCatalog?: ModelCatalogConfig;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Runtime model catalog refresh options
|
|
249
|
+
*/
|
|
250
|
+
export interface ModelCatalogConfig {
|
|
251
|
+
/** Fetch latest catalog at handler initialization */
|
|
252
|
+
loadLatestOnInit?: boolean;
|
|
253
|
+
/** Fetch provider-private models when auth is available */
|
|
254
|
+
loadPrivateOnAuth?: boolean;
|
|
255
|
+
/** Catalog endpoint URL */
|
|
256
|
+
url?: string;
|
|
257
|
+
/** Cache TTL for live catalog in milliseconds */
|
|
258
|
+
cacheTtlMs?: number;
|
|
259
|
+
/** Throw when live catalog refresh fails */
|
|
260
|
+
failOnError?: boolean;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
// =============================================================================
|
|
264
|
+
// Main Configuration Interface
|
|
265
|
+
// =============================================================================
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* Unified provider configuration interface
|
|
269
|
+
*
|
|
270
|
+
* This is the single configuration interface that clients provide.
|
|
271
|
+
* All provider-specific options are grouped into logical sub-interfaces.
|
|
272
|
+
*/
|
|
273
|
+
export interface ProviderConfig
|
|
274
|
+
extends AuthConfig,
|
|
275
|
+
EndpointConfig,
|
|
276
|
+
ModelConfig,
|
|
277
|
+
TokenConfig,
|
|
278
|
+
ReasoningConfig,
|
|
279
|
+
RegionConfig,
|
|
280
|
+
CloudConfig,
|
|
281
|
+
ProviderOptions {
|
|
282
|
+
/** Provider ID - determines which handler to use */
|
|
283
|
+
providerId: ProviderId;
|
|
284
|
+
|
|
285
|
+
/** Capabilities this provider/model supports */
|
|
286
|
+
capabilities?: ProviderCapability[];
|
|
287
|
+
|
|
288
|
+
/** Task/session ID for telemetry */
|
|
289
|
+
taskId?: string;
|
|
290
|
+
|
|
291
|
+
/** Retry callback */
|
|
292
|
+
onRetryAttempt?: (
|
|
293
|
+
attempt: number,
|
|
294
|
+
maxRetries: number,
|
|
295
|
+
delay: number,
|
|
296
|
+
error: unknown,
|
|
297
|
+
) => void;
|
|
298
|
+
|
|
299
|
+
/** AbortSignal for cancelling requests */
|
|
300
|
+
abortSignal?: AbortSignal;
|
|
301
|
+
|
|
302
|
+
/** Codex CLI-specific options */
|
|
303
|
+
codex?: CodexConfig;
|
|
304
|
+
|
|
305
|
+
/** Claude Code-specific options */
|
|
306
|
+
claudeCode?: ClaudeCodeConfig;
|
|
307
|
+
|
|
308
|
+
/** OpenCode-specific options */
|
|
309
|
+
opencode?: OpenCodeConfig;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
/**
|
|
313
|
+
* Simplified configuration for common use cases
|
|
314
|
+
*/
|
|
315
|
+
export interface SimpleProviderConfig {
|
|
316
|
+
providerId: ProviderId;
|
|
317
|
+
apiKey: string;
|
|
318
|
+
modelId: string;
|
|
319
|
+
baseUrl?: string;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* Create a full ProviderConfig from a simple config
|
|
324
|
+
*/
|
|
325
|
+
export function createConfig(simple: SimpleProviderConfig): ProviderConfig {
|
|
326
|
+
return {
|
|
327
|
+
providerId: simple.providerId,
|
|
328
|
+
apiKey: simple.apiKey,
|
|
329
|
+
modelId: simple.modelId,
|
|
330
|
+
baseUrl: simple.baseUrl,
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
// =============================================================================
|
|
335
|
+
// Helper Functions
|
|
336
|
+
// =============================================================================
|
|
337
|
+
|
|
338
|
+
/**
|
|
339
|
+
* Check if a provider config has a specific capability
|
|
340
|
+
*/
|
|
341
|
+
export function hasCapability(
|
|
342
|
+
config: ProviderConfig,
|
|
343
|
+
capability: ProviderCapability,
|
|
344
|
+
): boolean {
|
|
345
|
+
return config.capabilities?.includes(capability) ?? false;
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
/**
|
|
349
|
+
* Check if provider supports reasoning/thinking
|
|
350
|
+
*/
|
|
351
|
+
export function supportsReasoning(config: ProviderConfig): boolean {
|
|
352
|
+
return hasCapability(config, "reasoning");
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
/**
|
|
356
|
+
* Check if provider supports prompt caching
|
|
357
|
+
*/
|
|
358
|
+
export function supportsPromptCache(config: ProviderConfig): boolean {
|
|
359
|
+
return hasCapability(config, "prompt-cache");
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
// =============================================================================
|
|
363
|
+
// Deprecated Types (for backwards compatibility)
|
|
364
|
+
// =============================================================================
|
|
365
|
+
|
|
366
|
+
/**
|
|
367
|
+
* @deprecated Use ProviderConfig directly - all fields are now unified
|
|
368
|
+
*/
|
|
369
|
+
export type ProviderSpecificConfig = Pick<
|
|
370
|
+
ProviderConfig,
|
|
371
|
+
| "aws"
|
|
372
|
+
| "gcp"
|
|
373
|
+
| "azure"
|
|
374
|
+
| "sap"
|
|
375
|
+
| "oca"
|
|
376
|
+
| "maxContextTokens"
|
|
377
|
+
| "apiLine"
|
|
378
|
+
| "oauthPath"
|
|
379
|
+
| "openRouterProviderSorting"
|
|
380
|
+
>;
|
|
381
|
+
|
|
382
|
+
/**
|
|
383
|
+
* @deprecated Use ProviderConfig directly
|
|
384
|
+
*/
|
|
385
|
+
export type ProviderDefaultsConfig = Pick<
|
|
386
|
+
ProviderConfig,
|
|
387
|
+
"baseUrl" | "modelId" | "knownModels" | "headers" | "capabilities"
|
|
388
|
+
>;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Handler Interface Types
|
|
3
|
+
*
|
|
4
|
+
* Core interfaces that all provider handlers must implement.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { Message, ToolDefinition } from "./messages";
|
|
8
|
+
import type { ModelInfo } from "./model-info";
|
|
9
|
+
import type { ApiStream, ApiStreamUsageChunk } from "./stream";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Model information returned by handlers
|
|
13
|
+
*/
|
|
14
|
+
export interface HandlerModelInfo {
|
|
15
|
+
/** Model identifier */
|
|
16
|
+
id: string;
|
|
17
|
+
/** Model capabilities and pricing info */
|
|
18
|
+
info: ModelInfo;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Core API Handler interface
|
|
23
|
+
*
|
|
24
|
+
* All providers must implement this interface.
|
|
25
|
+
*/
|
|
26
|
+
export interface ApiHandler {
|
|
27
|
+
/**
|
|
28
|
+
* Convert Cline messages into provider-specific message format
|
|
29
|
+
*
|
|
30
|
+
* @param systemPrompt - The system prompt to use
|
|
31
|
+
* @param messages - Conversation history
|
|
32
|
+
* @returns Provider-specific messages payload
|
|
33
|
+
*/
|
|
34
|
+
getMessages(systemPrompt: string, messages: Message[]): unknown;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Create a streaming message completion
|
|
38
|
+
*
|
|
39
|
+
* @param systemPrompt - The system prompt to use
|
|
40
|
+
* @param messages - Conversation history
|
|
41
|
+
* @param tools - Optional tool definitions for native tool calling
|
|
42
|
+
* @returns An async generator yielding stream chunks
|
|
43
|
+
*/
|
|
44
|
+
createMessage(
|
|
45
|
+
systemPrompt: string,
|
|
46
|
+
messages: Message[],
|
|
47
|
+
tools?: ToolDefinition[],
|
|
48
|
+
): ApiStream;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Get the current model configuration
|
|
52
|
+
*/
|
|
53
|
+
getModel(): HandlerModelInfo;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Get usage information for the last API call (optional)
|
|
57
|
+
* Some providers can fetch this from a separate endpoint
|
|
58
|
+
*/
|
|
59
|
+
getApiStreamUsage?(): Promise<ApiStreamUsageChunk | undefined>;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Abort the current request (optional)
|
|
63
|
+
*/
|
|
64
|
+
abort?(): void;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Handler for simple single-turn completions
|
|
69
|
+
*/
|
|
70
|
+
export interface SingleCompletionHandler {
|
|
71
|
+
/**
|
|
72
|
+
* Complete a single prompt without streaming
|
|
73
|
+
*/
|
|
74
|
+
completePrompt(prompt: string): Promise<string>;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Factory function type for creating handlers
|
|
79
|
+
*/
|
|
80
|
+
export type HandlerFactory<TConfig = unknown> = (config: TConfig) => ApiHandler;
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Async factory for lazy-loaded handlers
|
|
84
|
+
*/
|
|
85
|
+
export type LazyHandlerFactory<TConfig = unknown> = (
|
|
86
|
+
config: TConfig,
|
|
87
|
+
) => Promise<ApiHandler>;
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types Index
|
|
3
|
+
*
|
|
4
|
+
* Re-exports all types from the types module.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
// Configuration types
|
|
8
|
+
export {
|
|
9
|
+
type AuthConfig,
|
|
10
|
+
type AwsConfig,
|
|
11
|
+
type AzureConfig,
|
|
12
|
+
BUILT_IN_PROVIDER,
|
|
13
|
+
BUILT_IN_PROVIDER_IDS,
|
|
14
|
+
type BuiltInProviderId,
|
|
15
|
+
type ClaudeCodeConfig,
|
|
16
|
+
type CloudConfig,
|
|
17
|
+
type CodexConfig,
|
|
18
|
+
createConfig,
|
|
19
|
+
type EndpointConfig,
|
|
20
|
+
type GcpConfig,
|
|
21
|
+
hasCapability,
|
|
22
|
+
isBuiltInProviderId,
|
|
23
|
+
type ModelCatalogConfig,
|
|
24
|
+
type ModelConfig,
|
|
25
|
+
normalizeProviderId,
|
|
26
|
+
type OcaConfig,
|
|
27
|
+
type OpenCodeConfig,
|
|
28
|
+
type ProviderCapability,
|
|
29
|
+
type ProviderCategory,
|
|
30
|
+
type ProviderConfig,
|
|
31
|
+
type ProviderDefaultsConfig,
|
|
32
|
+
type ProviderId,
|
|
33
|
+
type ProviderOptions,
|
|
34
|
+
type ProviderSpecificConfig,
|
|
35
|
+
type ReasoningConfig,
|
|
36
|
+
type RegionConfig,
|
|
37
|
+
type SapConfig,
|
|
38
|
+
type SimpleProviderConfig,
|
|
39
|
+
supportsPromptCache,
|
|
40
|
+
supportsReasoning,
|
|
41
|
+
type TokenConfig,
|
|
42
|
+
} from "./config";
|
|
43
|
+
// Handler types
|
|
44
|
+
export type {
|
|
45
|
+
ApiHandler,
|
|
46
|
+
HandlerFactory,
|
|
47
|
+
HandlerModelInfo,
|
|
48
|
+
LazyHandlerFactory,
|
|
49
|
+
SingleCompletionHandler,
|
|
50
|
+
} from "./handler";
|
|
51
|
+
|
|
52
|
+
// Message types
|
|
53
|
+
export type {
|
|
54
|
+
ContentBlock,
|
|
55
|
+
FileContent,
|
|
56
|
+
ImageContent,
|
|
57
|
+
Message,
|
|
58
|
+
MessageRole,
|
|
59
|
+
MessageWithMetadata,
|
|
60
|
+
RedactedThinkingContent,
|
|
61
|
+
TextContent,
|
|
62
|
+
ThinkingContent,
|
|
63
|
+
ToolDefinition,
|
|
64
|
+
ToolResultContent,
|
|
65
|
+
ToolUseContent,
|
|
66
|
+
} from "./messages";
|
|
67
|
+
// Model information types
|
|
68
|
+
export {
|
|
69
|
+
ApiFormat,
|
|
70
|
+
getModelPricing,
|
|
71
|
+
hasModelCapability,
|
|
72
|
+
type ModelCapability,
|
|
73
|
+
type ModelInfo,
|
|
74
|
+
type ModelPricing,
|
|
75
|
+
type ModelWithId,
|
|
76
|
+
type OpenAICompatibleModelInfo,
|
|
77
|
+
supportsModelThinking,
|
|
78
|
+
type ThinkingConfig,
|
|
79
|
+
} from "./model-info";
|
|
80
|
+
// Settings types and functions (Zod-based validation)
|
|
81
|
+
export {
|
|
82
|
+
type AuthSettings,
|
|
83
|
+
AuthSettingsSchema,
|
|
84
|
+
type AwsSettings,
|
|
85
|
+
AwsSettingsSchema,
|
|
86
|
+
type AzureSettings,
|
|
87
|
+
AzureSettingsSchema,
|
|
88
|
+
createProviderConfig,
|
|
89
|
+
type GcpSettings,
|
|
90
|
+
GcpSettingsSchema,
|
|
91
|
+
type ModelCatalogSettings,
|
|
92
|
+
ModelCatalogSettingsSchema,
|
|
93
|
+
type OcaSettings,
|
|
94
|
+
OcaSettingsSchema,
|
|
95
|
+
// Schemas
|
|
96
|
+
ProviderIdSchema,
|
|
97
|
+
// Types
|
|
98
|
+
type ProviderSettings,
|
|
99
|
+
ProviderSettingsSchema,
|
|
100
|
+
// Functions
|
|
101
|
+
parseSettings,
|
|
102
|
+
type ReasoningSettings,
|
|
103
|
+
ReasoningSettingsSchema,
|
|
104
|
+
type SapSettings,
|
|
105
|
+
SapSettingsSchema,
|
|
106
|
+
safeCreateProviderConfig,
|
|
107
|
+
safeParseSettings,
|
|
108
|
+
toProviderConfig,
|
|
109
|
+
} from "./settings";
|
|
110
|
+
// Stream types
|
|
111
|
+
export type {
|
|
112
|
+
ApiStream,
|
|
113
|
+
ApiStreamChunk,
|
|
114
|
+
ApiStreamDoneChunk,
|
|
115
|
+
ApiStreamReasoningChunk,
|
|
116
|
+
ApiStreamTextChunk,
|
|
117
|
+
ApiStreamToolCall,
|
|
118
|
+
ApiStreamToolCallsChunk,
|
|
119
|
+
ApiStreamUsageChunk,
|
|
120
|
+
} from "./stream";
|