@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,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,4 @@
1
+ import type { ProviderConfig } from "../types";
2
+ type BedrockFactory = (modelId: string) => unknown;
3
+ export declare function createBedrockClient(config: ProviderConfig, defaultHeaders: Record<string, string>): Promise<BedrockFactory>;
4
+ 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;