@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.
Files changed (219) hide show
  1. package/README.md +198 -0
  2. package/dist/config-browser.d.ts +3 -0
  3. package/dist/config.d.ts +3 -0
  4. package/dist/index.browser.d.ts +4 -0
  5. package/dist/index.browser.js +1 -0
  6. package/dist/index.d.ts +5 -0
  7. package/dist/index.js +7 -0
  8. package/dist/models/generated-access.d.ts +4 -0
  9. package/dist/models/generated-provider-loaders.d.ts +13 -0
  10. package/dist/models/generated.d.ts +14 -0
  11. package/dist/models/index.d.ts +43 -0
  12. package/dist/models/models-dev-catalog.d.ts +32 -0
  13. package/dist/models/providers/aihubmix.d.ts +5 -0
  14. package/dist/models/providers/anthropic.d.ts +53 -0
  15. package/dist/models/providers/asksage.d.ts +5 -0
  16. package/dist/models/providers/baseten.d.ts +5 -0
  17. package/dist/models/providers/bedrock.d.ts +7 -0
  18. package/dist/models/providers/cerebras.d.ts +7 -0
  19. package/dist/models/providers/claude-code.d.ts +4 -0
  20. package/dist/models/providers/cline.d.ts +34 -0
  21. package/dist/models/providers/deepseek.d.ts +8 -0
  22. package/dist/models/providers/dify.d.ts +5 -0
  23. package/dist/models/providers/doubao.d.ts +7 -0
  24. package/dist/models/providers/fireworks.d.ts +8 -0
  25. package/dist/models/providers/gemini.d.ts +9 -0
  26. package/dist/models/providers/groq.d.ts +8 -0
  27. package/dist/models/providers/hicap.d.ts +5 -0
  28. package/dist/models/providers/huawei-cloud-maas.d.ts +5 -0
  29. package/dist/models/providers/huggingface.d.ts +6 -0
  30. package/dist/models/providers/index.d.ts +45 -0
  31. package/dist/models/providers/litellm.d.ts +5 -0
  32. package/dist/models/providers/lmstudio.d.ts +5 -0
  33. package/dist/models/providers/minimax.d.ts +7 -0
  34. package/dist/models/providers/mistral.d.ts +5 -0
  35. package/dist/models/providers/moonshot.d.ts +7 -0
  36. package/dist/models/providers/nebius.d.ts +7 -0
  37. package/dist/models/providers/nous-research.d.ts +7 -0
  38. package/dist/models/providers/oca.d.ts +9 -0
  39. package/dist/models/providers/ollama.d.ts +5 -0
  40. package/dist/models/providers/openai-codex.d.ts +10 -0
  41. package/dist/models/providers/openai.d.ts +9 -0
  42. package/dist/models/providers/opencode.d.ts +10 -0
  43. package/dist/models/providers/openrouter.d.ts +7 -0
  44. package/dist/models/providers/qwen-code.d.ts +7 -0
  45. package/dist/models/providers/qwen.d.ts +7 -0
  46. package/dist/models/providers/requesty.d.ts +6 -0
  47. package/dist/models/providers/sambanova.d.ts +7 -0
  48. package/dist/models/providers/sapaicore.d.ts +7 -0
  49. package/dist/models/providers/together.d.ts +8 -0
  50. package/dist/models/providers/vercel-ai-gateway.d.ts +5 -0
  51. package/dist/models/providers/vertex.d.ts +7 -0
  52. package/dist/models/providers/xai.d.ts +8 -0
  53. package/dist/models/providers/zai.d.ts +7 -0
  54. package/dist/models/query.d.ts +181 -0
  55. package/dist/models/registry.d.ts +123 -0
  56. package/dist/models/schemas/index.d.ts +7 -0
  57. package/dist/models/schemas/model.d.ts +340 -0
  58. package/dist/models/schemas/query.d.ts +191 -0
  59. package/dist/providers/handlers/ai-sdk-community.d.ts +46 -0
  60. package/dist/providers/handlers/ai-sdk-provider-base.d.ts +32 -0
  61. package/dist/providers/handlers/anthropic-base.d.ts +26 -0
  62. package/dist/providers/handlers/asksage.d.ts +12 -0
  63. package/dist/providers/handlers/auth.d.ts +5 -0
  64. package/dist/providers/handlers/base.d.ts +55 -0
  65. package/dist/providers/handlers/bedrock-base.d.ts +23 -0
  66. package/dist/providers/handlers/bedrock-client.d.ts +4 -0
  67. package/dist/providers/handlers/community-sdk.d.ts +97 -0
  68. package/dist/providers/handlers/fetch-base.d.ts +18 -0
  69. package/dist/providers/handlers/gemini-base.d.ts +25 -0
  70. package/dist/providers/handlers/index.d.ts +19 -0
  71. package/dist/providers/handlers/openai-base.d.ts +54 -0
  72. package/dist/providers/handlers/openai-responses.d.ts +64 -0
  73. package/dist/providers/handlers/providers.d.ts +43 -0
  74. package/dist/providers/handlers/r1-base.d.ts +62 -0
  75. package/dist/providers/handlers/registry.d.ts +106 -0
  76. package/dist/providers/handlers/vertex.d.ts +32 -0
  77. package/dist/providers/index.d.ts +100 -0
  78. package/dist/providers/public.browser.d.ts +2 -0
  79. package/dist/providers/public.d.ts +3 -0
  80. package/dist/providers/shared/openai-compatible.d.ts +10 -0
  81. package/dist/providers/transform/ai-sdk-community-format.d.ts +9 -0
  82. package/dist/providers/transform/anthropic-format.d.ts +24 -0
  83. package/dist/providers/transform/content-format.d.ts +3 -0
  84. package/dist/providers/transform/gemini-format.d.ts +19 -0
  85. package/dist/providers/transform/index.d.ts +10 -0
  86. package/dist/providers/transform/openai-format.d.ts +36 -0
  87. package/dist/providers/transform/r1-format.d.ts +26 -0
  88. package/dist/providers/types/config.d.ts +261 -0
  89. package/dist/providers/types/handler.d.ts +71 -0
  90. package/dist/providers/types/index.d.ts +11 -0
  91. package/dist/providers/types/messages.d.ts +139 -0
  92. package/dist/providers/types/model-info.d.ts +32 -0
  93. package/dist/providers/types/provider-ids.d.ts +63 -0
  94. package/dist/providers/types/settings.d.ts +308 -0
  95. package/dist/providers/types/stream.d.ts +106 -0
  96. package/dist/providers/utils/index.d.ts +7 -0
  97. package/dist/providers/utils/retry.d.ts +38 -0
  98. package/dist/providers/utils/stream-processor.d.ts +110 -0
  99. package/dist/providers/utils/tool-processor.d.ts +34 -0
  100. package/dist/sdk.d.ts +18 -0
  101. package/dist/types.d.ts +60 -0
  102. package/package.json +66 -0
  103. package/src/catalog.ts +20 -0
  104. package/src/config-browser.ts +11 -0
  105. package/src/config.ts +49 -0
  106. package/src/index.browser.ts +9 -0
  107. package/src/index.ts +10 -0
  108. package/src/live-providers.test.ts +137 -0
  109. package/src/models/generated-access.ts +41 -0
  110. package/src/models/generated-provider-loaders.ts +166 -0
  111. package/src/models/generated.ts +11997 -0
  112. package/src/models/index.ts +271 -0
  113. package/src/models/models-dev-catalog.test.ts +161 -0
  114. package/src/models/models-dev-catalog.ts +161 -0
  115. package/src/models/providers/aihubmix.ts +19 -0
  116. package/src/models/providers/anthropic.ts +60 -0
  117. package/src/models/providers/asksage.ts +19 -0
  118. package/src/models/providers/baseten.ts +21 -0
  119. package/src/models/providers/bedrock.ts +30 -0
  120. package/src/models/providers/cerebras.ts +24 -0
  121. package/src/models/providers/claude-code.ts +51 -0
  122. package/src/models/providers/cline.ts +25 -0
  123. package/src/models/providers/deepseek.ts +33 -0
  124. package/src/models/providers/dify.ts +17 -0
  125. package/src/models/providers/doubao.ts +33 -0
  126. package/src/models/providers/fireworks.ts +34 -0
  127. package/src/models/providers/gemini.ts +43 -0
  128. package/src/models/providers/groq.ts +33 -0
  129. package/src/models/providers/hicap.ts +18 -0
  130. package/src/models/providers/huawei-cloud-maas.ts +18 -0
  131. package/src/models/providers/huggingface.ts +22 -0
  132. package/src/models/providers/index.ts +162 -0
  133. package/src/models/providers/litellm.ts +19 -0
  134. package/src/models/providers/lmstudio.ts +22 -0
  135. package/src/models/providers/minimax.ts +34 -0
  136. package/src/models/providers/mistral.ts +19 -0
  137. package/src/models/providers/moonshot.ts +34 -0
  138. package/src/models/providers/nebius.ts +24 -0
  139. package/src/models/providers/nous-research.ts +21 -0
  140. package/src/models/providers/oca.ts +30 -0
  141. package/src/models/providers/ollama.ts +18 -0
  142. package/src/models/providers/openai-codex.ts +30 -0
  143. package/src/models/providers/openai.ts +43 -0
  144. package/src/models/providers/opencode.ts +28 -0
  145. package/src/models/providers/openrouter.ts +24 -0
  146. package/src/models/providers/qwen-code.ts +33 -0
  147. package/src/models/providers/qwen.ts +34 -0
  148. package/src/models/providers/requesty.ts +23 -0
  149. package/src/models/providers/sambanova.ts +23 -0
  150. package/src/models/providers/sapaicore.ts +34 -0
  151. package/src/models/providers/together.ts +35 -0
  152. package/src/models/providers/vercel-ai-gateway.ts +23 -0
  153. package/src/models/providers/vertex.ts +36 -0
  154. package/src/models/providers/xai.ts +34 -0
  155. package/src/models/providers/zai.ts +25 -0
  156. package/src/models/query.ts +407 -0
  157. package/src/models/registry.ts +511 -0
  158. package/src/models/schemas/index.ts +62 -0
  159. package/src/models/schemas/model.ts +308 -0
  160. package/src/models/schemas/query.ts +336 -0
  161. package/src/providers/browser.ts +4 -0
  162. package/src/providers/handlers/ai-sdk-community.ts +226 -0
  163. package/src/providers/handlers/ai-sdk-provider-base.ts +193 -0
  164. package/src/providers/handlers/anthropic-base.ts +372 -0
  165. package/src/providers/handlers/asksage.test.ts +103 -0
  166. package/src/providers/handlers/asksage.ts +138 -0
  167. package/src/providers/handlers/auth.test.ts +19 -0
  168. package/src/providers/handlers/auth.ts +121 -0
  169. package/src/providers/handlers/base.test.ts +46 -0
  170. package/src/providers/handlers/base.ts +160 -0
  171. package/src/providers/handlers/bedrock-base.ts +390 -0
  172. package/src/providers/handlers/bedrock-client.ts +100 -0
  173. package/src/providers/handlers/codex.test.ts +123 -0
  174. package/src/providers/handlers/community-sdk.test.ts +288 -0
  175. package/src/providers/handlers/community-sdk.ts +392 -0
  176. package/src/providers/handlers/fetch-base.ts +68 -0
  177. package/src/providers/handlers/gemini-base.ts +302 -0
  178. package/src/providers/handlers/index.ts +67 -0
  179. package/src/providers/handlers/openai-base.ts +277 -0
  180. package/src/providers/handlers/openai-responses.ts +598 -0
  181. package/src/providers/handlers/providers.test.ts +120 -0
  182. package/src/providers/handlers/providers.ts +563 -0
  183. package/src/providers/handlers/r1-base.ts +280 -0
  184. package/src/providers/handlers/registry.ts +185 -0
  185. package/src/providers/handlers/vertex.test.ts +124 -0
  186. package/src/providers/handlers/vertex.ts +292 -0
  187. package/src/providers/index.ts +534 -0
  188. package/src/providers/public.browser.ts +20 -0
  189. package/src/providers/public.ts +51 -0
  190. package/src/providers/shared/openai-compatible.ts +63 -0
  191. package/src/providers/transform/ai-sdk-community-format.test.ts +73 -0
  192. package/src/providers/transform/ai-sdk-community-format.ts +115 -0
  193. package/src/providers/transform/anthropic-format.ts +218 -0
  194. package/src/providers/transform/content-format.ts +34 -0
  195. package/src/providers/transform/format-conversion.test.ts +310 -0
  196. package/src/providers/transform/gemini-format.ts +167 -0
  197. package/src/providers/transform/index.ts +22 -0
  198. package/src/providers/transform/openai-format.ts +247 -0
  199. package/src/providers/transform/r1-format.ts +287 -0
  200. package/src/providers/types/config.ts +388 -0
  201. package/src/providers/types/handler.ts +87 -0
  202. package/src/providers/types/index.ts +120 -0
  203. package/src/providers/types/messages.ts +158 -0
  204. package/src/providers/types/model-info.test.ts +57 -0
  205. package/src/providers/types/model-info.ts +65 -0
  206. package/src/providers/types/provider-ids.test.ts +12 -0
  207. package/src/providers/types/provider-ids.ts +89 -0
  208. package/src/providers/types/settings.test.ts +49 -0
  209. package/src/providers/types/settings.ts +533 -0
  210. package/src/providers/types/stream.ts +117 -0
  211. package/src/providers/utils/index.ts +27 -0
  212. package/src/providers/utils/retry.test.ts +140 -0
  213. package/src/providers/utils/retry.ts +188 -0
  214. package/src/providers/utils/stream-processor.test.ts +232 -0
  215. package/src/providers/utils/stream-processor.ts +472 -0
  216. package/src/providers/utils/tool-processor.test.ts +34 -0
  217. package/src/providers/utils/tool-processor.ts +111 -0
  218. package/src/sdk.ts +264 -0
  219. package/src/types.ts +79 -0
@@ -0,0 +1,261 @@
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
+ import type { ModelInfo } from "./model-info";
8
+ import { BUILT_IN_PROVIDER, BUILT_IN_PROVIDER_IDS, type BuiltInProviderId, isBuiltInProviderId, normalizeProviderId } from "./provider-ids";
9
+ export { BUILT_IN_PROVIDER, BUILT_IN_PROVIDER_IDS, type BuiltInProviderId, isBuiltInProviderId, normalizeProviderId, };
10
+ /**
11
+ * All supported provider IDs (built-in + custom)
12
+ *
13
+ * Custom provider IDs can be registered via `registerHandler()` or `registerAsyncHandler()`.
14
+ * Any string is accepted to allow for custom handlers that extend BaseHandler.
15
+ */
16
+ export type ProviderId = BuiltInProviderId | (string & {});
17
+ /**
18
+ * Provider categories based on underlying SDK/protocol
19
+ */
20
+ export type ProviderCategory = "anthropic" | "openai" | "openai-compat" | "openai-responses" | "gemini" | "bedrock" | "custom";
21
+ /**
22
+ * Capabilities that a provider/model may support
23
+ */
24
+ export type ProviderCapability = "reasoning" | "prompt-cache" | "streaming" | "tools" | "vision" | "computer-use" | "oauth";
25
+ /**
26
+ * Authentication configuration
27
+ */
28
+ export interface AuthConfig {
29
+ /** API key (most common) */
30
+ apiKey?: string;
31
+ /** OAuth access token */
32
+ accessToken?: string;
33
+ /** Refresh token for OAuth */
34
+ refreshToken?: string;
35
+ /** Account ID (for account-based auth) */
36
+ accountId?: string;
37
+ /** OAuth callback path (e.g., for Qwen Code) */
38
+ oauthPath?: string;
39
+ }
40
+ /**
41
+ * Endpoint configuration
42
+ */
43
+ export interface EndpointConfig {
44
+ /** Base URL for the API */
45
+ baseUrl?: string;
46
+ /** Custom headers to include */
47
+ headers?: Record<string, string>;
48
+ /** Request timeout in milliseconds */
49
+ timeoutMs?: number;
50
+ }
51
+ /**
52
+ * Model configuration
53
+ */
54
+ export interface ModelConfig {
55
+ /** Model identifier */
56
+ modelId: string;
57
+ /** Pre-fetched model info (optional - will use defaults if not provided) */
58
+ modelInfo?: ModelInfo;
59
+ /** Known models for this provider with their info */
60
+ knownModels?: Record<string, ModelInfo>;
61
+ }
62
+ /**
63
+ * Token limits configuration
64
+ */
65
+ export interface TokenConfig {
66
+ /** Maximum context window tokens (overrides model default) */
67
+ maxContextTokens?: number;
68
+ /** Maximum output tokens (overrides model default) */
69
+ maxOutputTokens?: number;
70
+ }
71
+ /**
72
+ * Reasoning/thinking model configuration
73
+ */
74
+ export interface ReasoningConfig {
75
+ /** Reasoning effort level */
76
+ reasoningEffort?: "low" | "medium" | "high";
77
+ /** Extended thinking budget in tokens */
78
+ thinkingBudgetTokens?: number;
79
+ /** Enable thinking with provider/model defaults when supported */
80
+ thinking?: boolean;
81
+ }
82
+ /**
83
+ * Region configuration (shared across cloud providers)
84
+ */
85
+ export interface RegionConfig {
86
+ /** Cloud region (AWS, GCP, Azure, or provider-specific like Qwen's china/international) */
87
+ region?: string;
88
+ /** API line for region-specific routing (e.g., "china" | "international" for Qwen) */
89
+ apiLine?: "china" | "international";
90
+ /** Use cross-region inference (Bedrock) */
91
+ useCrossRegionInference?: boolean;
92
+ /** Use global inference (Bedrock) */
93
+ useGlobalInference?: boolean;
94
+ }
95
+ /**
96
+ * AWS-specific configuration (for Bedrock)
97
+ */
98
+ export interface AwsConfig {
99
+ accessKey?: string;
100
+ secretKey?: string;
101
+ sessionToken?: string;
102
+ authentication?: "iam" | "api-key" | "profile";
103
+ profile?: string;
104
+ usePromptCache?: boolean;
105
+ endpoint?: string;
106
+ customModelBaseId?: string;
107
+ }
108
+ /**
109
+ * Google Cloud configuration (for Vertex AI)
110
+ */
111
+ export interface GcpConfig {
112
+ projectId?: string;
113
+ region?: string;
114
+ }
115
+ /**
116
+ * Azure configuration (for Azure OpenAI)
117
+ */
118
+ export interface AzureConfig {
119
+ apiVersion?: string;
120
+ useIdentity?: boolean;
121
+ }
122
+ /**
123
+ * SAP AI Core configuration
124
+ */
125
+ export interface SapConfig {
126
+ clientId?: string;
127
+ clientSecret?: string;
128
+ tokenUrl?: string;
129
+ resourceGroup?: string;
130
+ deploymentId?: string;
131
+ useOrchestrationMode?: boolean;
132
+ api?: "orchestration" | "foundation-models";
133
+ defaultSettings?: Record<string, unknown>;
134
+ }
135
+ /**
136
+ * OCA (Oracle Cloud AI) configuration
137
+ */
138
+ export interface OcaConfig {
139
+ mode?: "internal" | "external";
140
+ usePromptCache?: boolean;
141
+ }
142
+ /**
143
+ * Codex CLI provider options
144
+ */
145
+ export interface CodexConfig {
146
+ defaultSettings?: Record<string, unknown>;
147
+ modelSettings?: Record<string, unknown>;
148
+ }
149
+ /**
150
+ * Claude Code provider options
151
+ */
152
+ export interface ClaudeCodeConfig {
153
+ [key: string]: unknown;
154
+ }
155
+ /**
156
+ * OpenCode provider options
157
+ */
158
+ export interface OpenCodeConfig {
159
+ hostname?: string;
160
+ port?: number;
161
+ autoStartServer?: boolean;
162
+ serverTimeout?: number;
163
+ defaultSettings?: Record<string, unknown>;
164
+ modelSettings?: Record<string, unknown>;
165
+ }
166
+ /**
167
+ * Cloud provider configurations (grouped)
168
+ */
169
+ export interface CloudConfig {
170
+ /** AWS/Bedrock options */
171
+ aws?: AwsConfig;
172
+ /** Google Cloud/Vertex options */
173
+ gcp?: GcpConfig;
174
+ /** Azure options */
175
+ azure?: AzureConfig;
176
+ /** SAP AI Core options */
177
+ sap?: SapConfig;
178
+ /** OCA options */
179
+ oca?: OcaConfig;
180
+ }
181
+ /**
182
+ * Provider-specific options that don't fit other categories
183
+ */
184
+ export interface ProviderOptions {
185
+ /** OpenRouter provider sorting preference */
186
+ openRouterProviderSorting?: string;
187
+ /** Runtime model catalog refresh configuration */
188
+ modelCatalog?: ModelCatalogConfig;
189
+ }
190
+ /**
191
+ * Runtime model catalog refresh options
192
+ */
193
+ export interface ModelCatalogConfig {
194
+ /** Fetch latest catalog at handler initialization */
195
+ loadLatestOnInit?: boolean;
196
+ /** Fetch provider-private models when auth is available */
197
+ loadPrivateOnAuth?: boolean;
198
+ /** Catalog endpoint URL */
199
+ url?: string;
200
+ /** Cache TTL for live catalog in milliseconds */
201
+ cacheTtlMs?: number;
202
+ /** Throw when live catalog refresh fails */
203
+ failOnError?: boolean;
204
+ }
205
+ /**
206
+ * Unified provider configuration interface
207
+ *
208
+ * This is the single configuration interface that clients provide.
209
+ * All provider-specific options are grouped into logical sub-interfaces.
210
+ */
211
+ export interface ProviderConfig extends AuthConfig, EndpointConfig, ModelConfig, TokenConfig, ReasoningConfig, RegionConfig, CloudConfig, ProviderOptions {
212
+ /** Provider ID - determines which handler to use */
213
+ providerId: ProviderId;
214
+ /** Capabilities this provider/model supports */
215
+ capabilities?: ProviderCapability[];
216
+ /** Task/session ID for telemetry */
217
+ taskId?: string;
218
+ /** Retry callback */
219
+ onRetryAttempt?: (attempt: number, maxRetries: number, delay: number, error: unknown) => void;
220
+ /** AbortSignal for cancelling requests */
221
+ abortSignal?: AbortSignal;
222
+ /** Codex CLI-specific options */
223
+ codex?: CodexConfig;
224
+ /** Claude Code-specific options */
225
+ claudeCode?: ClaudeCodeConfig;
226
+ /** OpenCode-specific options */
227
+ opencode?: OpenCodeConfig;
228
+ }
229
+ /**
230
+ * Simplified configuration for common use cases
231
+ */
232
+ export interface SimpleProviderConfig {
233
+ providerId: ProviderId;
234
+ apiKey: string;
235
+ modelId: string;
236
+ baseUrl?: string;
237
+ }
238
+ /**
239
+ * Create a full ProviderConfig from a simple config
240
+ */
241
+ export declare function createConfig(simple: SimpleProviderConfig): ProviderConfig;
242
+ /**
243
+ * Check if a provider config has a specific capability
244
+ */
245
+ export declare function hasCapability(config: ProviderConfig, capability: ProviderCapability): boolean;
246
+ /**
247
+ * Check if provider supports reasoning/thinking
248
+ */
249
+ export declare function supportsReasoning(config: ProviderConfig): boolean;
250
+ /**
251
+ * Check if provider supports prompt caching
252
+ */
253
+ export declare function supportsPromptCache(config: ProviderConfig): boolean;
254
+ /**
255
+ * @deprecated Use ProviderConfig directly - all fields are now unified
256
+ */
257
+ export type ProviderSpecificConfig = Pick<ProviderConfig, "aws" | "gcp" | "azure" | "sap" | "oca" | "maxContextTokens" | "apiLine" | "oauthPath" | "openRouterProviderSorting">;
258
+ /**
259
+ * @deprecated Use ProviderConfig directly
260
+ */
261
+ export type ProviderDefaultsConfig = Pick<ProviderConfig, "baseUrl" | "modelId" | "knownModels" | "headers" | "capabilities">;
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Handler Interface Types
3
+ *
4
+ * Core interfaces that all provider handlers must implement.
5
+ */
6
+ import type { Message, ToolDefinition } from "./messages";
7
+ import type { ModelInfo } from "./model-info";
8
+ import type { ApiStream, ApiStreamUsageChunk } from "./stream";
9
+ /**
10
+ * Model information returned by handlers
11
+ */
12
+ export interface HandlerModelInfo {
13
+ /** Model identifier */
14
+ id: string;
15
+ /** Model capabilities and pricing info */
16
+ info: ModelInfo;
17
+ }
18
+ /**
19
+ * Core API Handler interface
20
+ *
21
+ * All providers must implement this interface.
22
+ */
23
+ export interface ApiHandler {
24
+ /**
25
+ * Convert Cline messages into provider-specific message format
26
+ *
27
+ * @param systemPrompt - The system prompt to use
28
+ * @param messages - Conversation history
29
+ * @returns Provider-specific messages payload
30
+ */
31
+ getMessages(systemPrompt: string, messages: Message[]): unknown;
32
+ /**
33
+ * Create a streaming message completion
34
+ *
35
+ * @param systemPrompt - The system prompt to use
36
+ * @param messages - Conversation history
37
+ * @param tools - Optional tool definitions for native tool calling
38
+ * @returns An async generator yielding stream chunks
39
+ */
40
+ createMessage(systemPrompt: string, messages: Message[], tools?: ToolDefinition[]): ApiStream;
41
+ /**
42
+ * Get the current model configuration
43
+ */
44
+ getModel(): HandlerModelInfo;
45
+ /**
46
+ * Get usage information for the last API call (optional)
47
+ * Some providers can fetch this from a separate endpoint
48
+ */
49
+ getApiStreamUsage?(): Promise<ApiStreamUsageChunk | undefined>;
50
+ /**
51
+ * Abort the current request (optional)
52
+ */
53
+ abort?(): void;
54
+ }
55
+ /**
56
+ * Handler for simple single-turn completions
57
+ */
58
+ export interface SingleCompletionHandler {
59
+ /**
60
+ * Complete a single prompt without streaming
61
+ */
62
+ completePrompt(prompt: string): Promise<string>;
63
+ }
64
+ /**
65
+ * Factory function type for creating handlers
66
+ */
67
+ export type HandlerFactory<TConfig = unknown> = (config: TConfig) => ApiHandler;
68
+ /**
69
+ * Async factory for lazy-loaded handlers
70
+ */
71
+ export type LazyHandlerFactory<TConfig = unknown> = (config: TConfig) => Promise<ApiHandler>;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Types Index
3
+ *
4
+ * Re-exports all types from the types module.
5
+ */
6
+ export { type AuthConfig, type AwsConfig, type AzureConfig, BUILT_IN_PROVIDER, BUILT_IN_PROVIDER_IDS, type BuiltInProviderId, type ClaudeCodeConfig, type CloudConfig, type CodexConfig, createConfig, type EndpointConfig, type GcpConfig, hasCapability, isBuiltInProviderId, type ModelCatalogConfig, type ModelConfig, normalizeProviderId, type OcaConfig, type OpenCodeConfig, type ProviderCapability, type ProviderCategory, type ProviderConfig, type ProviderDefaultsConfig, type ProviderId, type ProviderOptions, type ProviderSpecificConfig, type ReasoningConfig, type RegionConfig, type SapConfig, type SimpleProviderConfig, supportsPromptCache, supportsReasoning, type TokenConfig, } from "./config";
7
+ export type { ApiHandler, HandlerFactory, HandlerModelInfo, LazyHandlerFactory, SingleCompletionHandler, } from "./handler";
8
+ export type { ContentBlock, FileContent, ImageContent, Message, MessageRole, MessageWithMetadata, RedactedThinkingContent, TextContent, ThinkingContent, ToolDefinition, ToolResultContent, ToolUseContent, } from "./messages";
9
+ export { ApiFormat, getModelPricing, hasModelCapability, type ModelCapability, type ModelInfo, type ModelPricing, type ModelWithId, type OpenAICompatibleModelInfo, supportsModelThinking, type ThinkingConfig, } from "./model-info";
10
+ export { type AuthSettings, AuthSettingsSchema, type AwsSettings, AwsSettingsSchema, type AzureSettings, AzureSettingsSchema, createProviderConfig, type GcpSettings, GcpSettingsSchema, type ModelCatalogSettings, ModelCatalogSettingsSchema, type OcaSettings, OcaSettingsSchema, ProviderIdSchema, type ProviderSettings, ProviderSettingsSchema, parseSettings, type ReasoningSettings, ReasoningSettingsSchema, type SapSettings, SapSettingsSchema, safeCreateProviderConfig, safeParseSettings, toProviderConfig, } from "./settings";
11
+ export type { ApiStream, ApiStreamChunk, ApiStreamDoneChunk, ApiStreamReasoningChunk, ApiStreamTextChunk, ApiStreamToolCall, ApiStreamToolCallsChunk, ApiStreamUsageChunk, } from "./stream";
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Message Types
3
+ *
4
+ * Standardized message format for input to providers.
5
+ * This is a simplified, provider-agnostic format that can be
6
+ * converted to any provider's native format.
7
+ */
8
+ /**
9
+ * Message roles
10
+ */
11
+ export type MessageRole = "user" | "assistant";
12
+ /**
13
+ * Text content block
14
+ */
15
+ export interface TextContent {
16
+ type: "text";
17
+ text: string;
18
+ /** Thought signature for this text part (Gemini) */
19
+ signature?: string;
20
+ }
21
+ /**
22
+ * File content block for Cline
23
+ */
24
+ export interface FileContent {
25
+ type: "file";
26
+ content: string;
27
+ /** Absolute Path */
28
+ path: string;
29
+ source?: string;
30
+ }
31
+ /**
32
+ * Image content block
33
+ */
34
+ export interface ImageContent {
35
+ type: "image";
36
+ /** Base64 encoded image data */
37
+ data: string;
38
+ /** MIME type (e.g., "image/png", "image/jpeg") */
39
+ mediaType: string;
40
+ }
41
+ /**
42
+ * Tool use content block (assistant's tool call)
43
+ */
44
+ export interface ToolUseContent {
45
+ type: "tool_use";
46
+ /** Unique ID for this tool call */
47
+ id: string;
48
+ /** Name of the tool being called */
49
+ name: string;
50
+ /** Arguments for the tool call */
51
+ input: Record<string, unknown>;
52
+ /** Thought signature for this function call part (Gemini) */
53
+ signature?: string;
54
+ }
55
+ /**
56
+ * Tool result content block (user's response to tool call)
57
+ */
58
+ export interface ToolResultContent {
59
+ type: "tool_result";
60
+ /** ID of the tool call this is responding to */
61
+ tool_use_id: string;
62
+ /** Result content (can be text or error) */
63
+ content: string | Array<TextContent | ImageContent | FileContent>;
64
+ /** Whether this result represents an error */
65
+ is_error?: boolean;
66
+ }
67
+ /**
68
+ * Thinking/reasoning content block
69
+ */
70
+ export interface ThinkingContent {
71
+ type: "thinking";
72
+ /** The thinking/reasoning text */
73
+ thinking: string;
74
+ /** Signature for the thinking block (provider-specific) */
75
+ signature?: string;
76
+ }
77
+ /**
78
+ * Redacted thinking content block
79
+ */
80
+ export interface RedactedThinkingContent {
81
+ type: "redacted_thinking";
82
+ /** Encrypted/redacted data */
83
+ data: string;
84
+ }
85
+ /**
86
+ * Union of all content block types
87
+ */
88
+ export type ContentBlock = TextContent | ImageContent | ToolUseContent | ToolResultContent | ThinkingContent | FileContent | RedactedThinkingContent;
89
+ /**
90
+ * A single message in the conversation
91
+ */
92
+ export interface Message {
93
+ /** Message role */
94
+ role: MessageRole;
95
+ /** Message content - can be a simple string or array of content blocks */
96
+ content: string | ContentBlock[];
97
+ }
98
+ /**
99
+ * Extended message with metadata (used for storage/history)
100
+ */
101
+ export interface MessageWithMetadata extends Message {
102
+ /** Unique message ID */
103
+ id?: string;
104
+ /** Provider ID used to generate this message */
105
+ providerId?: string;
106
+ /** Model ID used to generate this message */
107
+ modelId?: string;
108
+ /** Model info at the time of generation */
109
+ modelInfo?: {
110
+ id: string;
111
+ provider: string;
112
+ };
113
+ /** Token usage metrics */
114
+ metrics?: {
115
+ inputTokens?: number;
116
+ outputTokens?: number;
117
+ cacheReadTokens?: number;
118
+ cacheWriteTokens?: number;
119
+ cost?: number;
120
+ };
121
+ /** Timestamp of when the message was created */
122
+ ts?: number;
123
+ }
124
+ /**
125
+ * Tool definition for native tool calling
126
+ */
127
+ export interface ToolDefinition {
128
+ /** Tool name */
129
+ name: string;
130
+ /** Tool description */
131
+ description: string;
132
+ /** JSON Schema for the tool's input parameters */
133
+ inputSchema: {
134
+ type: "object";
135
+ properties: Record<string, unknown>;
136
+ required?: string[];
137
+ additionalProperties?: boolean;
138
+ };
139
+ }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Model Information Types
3
+ *
4
+ * Re-exports model types from @clinebot/models (the single source of truth)
5
+ * and provides provider-specific helpers and aliases.
6
+ */
7
+ import type { ModelCapability, ModelInfo, ModelPricing, ThinkingConfig } from "../../models/schemas/model";
8
+ import { ApiFormat } from "../../models/schemas/model";
9
+ export type { ModelCapability, ModelInfo, ModelPricing, ThinkingConfig };
10
+ export { ApiFormat };
11
+ export type { ApiFormat as ApiFormatType } from "../../models/schemas/model";
12
+ /**
13
+ * Check if a model has a specific capability
14
+ */
15
+ export declare function hasModelCapability(info: ModelInfo, capability: ModelCapability): boolean;
16
+ /**
17
+ * Check if a model supports explicit thinking/reasoning controls.
18
+ */
19
+ export declare function supportsModelThinking(info: ModelInfo): boolean;
20
+ /**
21
+ * Get pricing for a model
22
+ */
23
+ export declare function getModelPricing(info: ModelInfo): ModelPricing;
24
+ /**
25
+ * Model with its identifier
26
+ */
27
+ export interface ModelWithId {
28
+ id: string;
29
+ info: ModelInfo;
30
+ }
31
+ /** Alias for ModelInfo - all model types use the same interface */
32
+ export type OpenAICompatibleModelInfo = ModelInfo;
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Built-in provider IDs
3
+ *
4
+ * Single source of truth for all built-in provider identifiers.
5
+ * Use BUILT_IN_PROVIDER_IDS for runtime operations (validation, iteration)
6
+ * Use BuiltInProviderId type for compile-time type safety
7
+ */
8
+ export declare enum BUILT_IN_PROVIDER {
9
+ ANTHROPIC = "anthropic",
10
+ CLAUDE_CODE = "claude-code",
11
+ CLINE = "cline",
12
+ OPENAI = "openai",// OpenAi Completions
13
+ OPENAI_NATIVE = "openai-native",
14
+ OPENAI_CODEX = "openai-codex",
15
+ OPENCODE = "opencode",
16
+ BEDROCK = "bedrock",
17
+ VERTEX = "vertex",
18
+ GEMINI = "gemini",
19
+ OLLAMA = "ollama",
20
+ LMSTUDIO = "lmstudio",
21
+ DEEPSEEK = "deepseek",
22
+ XAI = "xai",
23
+ TOGETHER = "together",
24
+ FIREWORKS = "fireworks",
25
+ GROQ = "groq",
26
+ CEREBRAS = "cerebras",
27
+ SAMBANOVA = "sambanova",
28
+ NEBIUS = "nebius",
29
+ BASETEN = "baseten",
30
+ REQUESTY = "requesty",
31
+ LITELLM = "litellm",
32
+ HUGGINGFACE = "huggingface",
33
+ VERCEL_AI_GATEWAY = "vercel-ai-gateway",
34
+ AIHUBMIX = "aihubmix",
35
+ HICAP = "hicap",
36
+ NOUS_RESEARCH = "nousResearch",
37
+ HUAWEI_CLOUD_MAAS = "huawei-cloud-maas",
38
+ QWEN = "qwen",
39
+ QWEN_CODE = "qwen-code",
40
+ DOUBAO = "doubao",
41
+ MISTRAL = "mistral",
42
+ MOONSHOT = "moonshot",
43
+ ASKSAGE = "asksage",
44
+ ZAI = "zai",
45
+ MINIMAX = "minimax",
46
+ DIFY = "dify",
47
+ OCA = "oca",
48
+ SAPAICORE = "sapaicore",
49
+ OPENROUTER = "openrouter"
50
+ }
51
+ /**
52
+ * Provider ID aliases normalized to canonical built-in IDs.
53
+ *
54
+ * Keep this map as the single source of truth for alias handling.
55
+ */
56
+ export declare const PROVIDER_ID_ALIASES: Record<string, BUILT_IN_PROVIDER>;
57
+ export declare const BUILT_IN_PROVIDER_IDS: [BUILT_IN_PROVIDER, ...BUILT_IN_PROVIDER[]];
58
+ /** Type derived from the array - use for type annotations */
59
+ export type BuiltInProviderId = (typeof BUILT_IN_PROVIDER_IDS)[number];
60
+ /** Check if a string is a valid built-in provider ID */
61
+ export declare function isBuiltInProviderId(id: string): id is BuiltInProviderId;
62
+ /** Normalize provider aliases to canonical IDs */
63
+ export declare function normalizeProviderId(providerId: string): string;