@sashabogi/foundation 0.1.6 → 0.1.8

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 (113) hide show
  1. package/dist/cli/setup-wizard.d.ts +30 -0
  2. package/dist/cli/setup-wizard.d.ts.map +1 -0
  3. package/dist/cli/setup-wizard.js +1645 -0
  4. package/dist/cli/setup-wizard.js.map +1 -0
  5. package/dist/cli/test-connection.d.ts +76 -0
  6. package/dist/cli/test-connection.d.ts.map +1 -0
  7. package/dist/cli/test-connection.js +697 -0
  8. package/dist/cli/test-connection.js.map +1 -0
  9. package/dist/cli.d.ts +3 -1
  10. package/dist/cli.d.ts.map +1 -1
  11. package/dist/cli.js +50 -5
  12. package/dist/cli.js.map +1 -1
  13. package/dist/index.d.ts +1 -1
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +8 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/providers/anthropic.d.ts +178 -0
  18. package/dist/providers/anthropic.d.ts.map +1 -0
  19. package/dist/providers/anthropic.js +514 -0
  20. package/dist/providers/anthropic.js.map +1 -0
  21. package/dist/providers/base.d.ts +154 -0
  22. package/dist/providers/base.d.ts.map +1 -0
  23. package/dist/providers/base.js +227 -0
  24. package/dist/providers/base.js.map +1 -0
  25. package/dist/providers/deepseek.d.ts +23 -0
  26. package/dist/providers/deepseek.d.ts.map +1 -0
  27. package/dist/providers/deepseek.js +31 -0
  28. package/dist/providers/deepseek.js.map +1 -0
  29. package/dist/providers/fireworks.d.ts +23 -0
  30. package/dist/providers/fireworks.d.ts.map +1 -0
  31. package/dist/providers/fireworks.js +31 -0
  32. package/dist/providers/fireworks.js.map +1 -0
  33. package/dist/providers/gemini.d.ts +85 -0
  34. package/dist/providers/gemini.d.ts.map +1 -0
  35. package/dist/providers/gemini.js +414 -0
  36. package/dist/providers/gemini.js.map +1 -0
  37. package/dist/providers/groq.d.ts +23 -0
  38. package/dist/providers/groq.d.ts.map +1 -0
  39. package/dist/providers/groq.js +31 -0
  40. package/dist/providers/groq.js.map +1 -0
  41. package/dist/providers/index.d.ts +23 -0
  42. package/dist/providers/index.d.ts.map +1 -0
  43. package/dist/providers/index.js +27 -0
  44. package/dist/providers/index.js.map +1 -0
  45. package/dist/providers/kimi-code.d.ts +32 -0
  46. package/dist/providers/kimi-code.d.ts.map +1 -0
  47. package/dist/providers/kimi-code.js +46 -0
  48. package/dist/providers/kimi-code.js.map +1 -0
  49. package/dist/providers/kimi.d.ts +19 -0
  50. package/dist/providers/kimi.d.ts.map +1 -0
  51. package/dist/providers/kimi.js +27 -0
  52. package/dist/providers/kimi.js.map +1 -0
  53. package/dist/providers/manager.d.ts +144 -0
  54. package/dist/providers/manager.d.ts.map +1 -0
  55. package/dist/providers/manager.js +279 -0
  56. package/dist/providers/manager.js.map +1 -0
  57. package/dist/providers/ollama.d.ts +83 -0
  58. package/dist/providers/ollama.d.ts.map +1 -0
  59. package/dist/providers/ollama.js +450 -0
  60. package/dist/providers/ollama.js.map +1 -0
  61. package/dist/providers/openai.d.ts +91 -0
  62. package/dist/providers/openai.d.ts.map +1 -0
  63. package/dist/providers/openai.js +445 -0
  64. package/dist/providers/openai.js.map +1 -0
  65. package/dist/providers/openrouter.d.ts +23 -0
  66. package/dist/providers/openrouter.d.ts.map +1 -0
  67. package/dist/providers/openrouter.js +31 -0
  68. package/dist/providers/openrouter.js.map +1 -0
  69. package/dist/providers/perplexity.d.ts +34 -0
  70. package/dist/providers/perplexity.d.ts.map +1 -0
  71. package/dist/providers/perplexity.js +58 -0
  72. package/dist/providers/perplexity.js.map +1 -0
  73. package/dist/providers/together.d.ts +23 -0
  74. package/dist/providers/together.d.ts.map +1 -0
  75. package/dist/providers/together.js +31 -0
  76. package/dist/providers/together.js.map +1 -0
  77. package/dist/providers/types.d.ts +229 -0
  78. package/dist/providers/types.d.ts.map +1 -0
  79. package/dist/providers/types.js +73 -0
  80. package/dist/providers/types.js.map +1 -0
  81. package/dist/providers/zai.d.ts +19 -0
  82. package/dist/providers/zai.d.ts.map +1 -0
  83. package/dist/providers/zai.js +27 -0
  84. package/dist/providers/zai.js.map +1 -0
  85. package/dist/services/provider.service.d.ts +28 -0
  86. package/dist/services/provider.service.d.ts.map +1 -1
  87. package/dist/services/provider.service.js +137 -13
  88. package/dist/services/provider.service.js.map +1 -1
  89. package/dist/tools/demerzel/engine.d.ts +67 -0
  90. package/dist/tools/demerzel/engine.d.ts.map +1 -0
  91. package/dist/tools/demerzel/engine.js +401 -0
  92. package/dist/tools/demerzel/engine.js.map +1 -0
  93. package/dist/tools/demerzel/enhanced-snapshot.d.ts +67 -0
  94. package/dist/tools/demerzel/enhanced-snapshot.d.ts.map +1 -0
  95. package/dist/tools/demerzel/enhanced-snapshot.js +481 -0
  96. package/dist/tools/demerzel/enhanced-snapshot.js.map +1 -0
  97. package/dist/tools/demerzel/index.d.ts +11 -0
  98. package/dist/tools/demerzel/index.d.ts.map +1 -1
  99. package/dist/tools/demerzel/index.js +656 -85
  100. package/dist/tools/demerzel/index.js.map +1 -1
  101. package/dist/tools/demerzel/prompts.d.ts +26 -0
  102. package/dist/tools/demerzel/prompts.d.ts.map +1 -0
  103. package/dist/tools/demerzel/prompts.js +181 -0
  104. package/dist/tools/demerzel/prompts.js.map +1 -0
  105. package/dist/tools/demerzel/semantic-search.d.ts +54 -0
  106. package/dist/tools/demerzel/semantic-search.d.ts.map +1 -0
  107. package/dist/tools/demerzel/semantic-search.js +205 -0
  108. package/dist/tools/demerzel/semantic-search.js.map +1 -0
  109. package/dist/tools/demerzel/snapshot.d.ts +30 -0
  110. package/dist/tools/demerzel/snapshot.d.ts.map +1 -0
  111. package/dist/tools/demerzel/snapshot.js +169 -0
  112. package/dist/tools/demerzel/snapshot.js.map +1 -0
  113. package/package.json +2 -1
@@ -0,0 +1,414 @@
1
+ /**
2
+ * Google Gemini Provider Implementation
3
+ *
4
+ * Provider adapter for the Google Gemini API (Generative Language API).
5
+ * Handles message formatting, streaming, and tool use for Gemini models.
6
+ *
7
+ * Key differences from Anthropic format:
8
+ * - Messages use "contents" array with "parts" instead of "content"
9
+ * - System prompt is a separate "systemInstruction" field
10
+ * - Tool schemas use "parameters" (OpenAI style) in function declarations
11
+ * - Tool calls return "functionCall" parts, results use "functionResponse" parts
12
+ * - Auth via API key query param or Authorization header
13
+ */
14
+ import { BaseProvider } from './base.js';
15
+ // ============================================================================
16
+ // Gemini Provider Implementation
17
+ // ============================================================================
18
+ /**
19
+ * Google Gemini API provider adapter.
20
+ *
21
+ * Implements the Provider interface for Google's Gemini models.
22
+ * Handles:
23
+ * - Message format translation (our format -> Gemini format)
24
+ * - Streaming SSE event parsing
25
+ * - Tool use / function calling
26
+ * - Authentication via API key
27
+ */
28
+ export class GeminiProvider extends BaseProvider {
29
+ name = 'google';
30
+ static DEFAULT_BASE_URL = 'https://generativelanguage.googleapis.com/v1beta';
31
+ /** Default max tokens if not specified in request */
32
+ static DEFAULT_MAX_TOKENS = 4096;
33
+ constructor(config) {
34
+ super(config);
35
+ }
36
+ /**
37
+ * Build the full API URL with model and action.
38
+ * Gemini uses URL path for model selection and action.
39
+ *
40
+ * @param model - Model identifier
41
+ * @param action - API action (generateContent, streamGenerateContent)
42
+ * @returns Full API URL
43
+ */
44
+ buildUrl(model, action) {
45
+ const baseUrl = this.getBaseUrl(GeminiProvider.DEFAULT_BASE_URL);
46
+ const url = `${baseUrl}/models/${model}:${action}`;
47
+ // Gemini supports API key as query parameter
48
+ if (this.config.api_key) {
49
+ return `${url}?key=${this.config.api_key}`;
50
+ }
51
+ return url;
52
+ }
53
+ /**
54
+ * Build headers for Gemini API requests.
55
+ * Uses Bearer token if API key is provided (alternative to query param).
56
+ */
57
+ buildHeaders() {
58
+ const headers = {
59
+ 'Content-Type': 'application/json',
60
+ };
61
+ // Gemini also supports Authorization header (alternative to query param)
62
+ // We use query param by default, but support Bearer if explicitly configured
63
+ if (this.config.headers?.['Authorization']) {
64
+ headers['Authorization'] = this.config.headers['Authorization'];
65
+ }
66
+ // Add any custom headers from config
67
+ if (this.config.headers) {
68
+ Object.assign(headers, this.config.headers);
69
+ }
70
+ return headers;
71
+ }
72
+ /**
73
+ * Execute a completion request and return the full response.
74
+ */
75
+ async complete(request) {
76
+ const url = this.buildUrl(request.model, 'generateContent');
77
+ const geminiRequest = this.translateRequest(request);
78
+ const response = await this.makeRequest({
79
+ method: 'POST',
80
+ url,
81
+ headers: this.buildHeaders(),
82
+ body: geminiRequest,
83
+ timeoutMs: request.timeout_ms ?? this.defaultTimeoutMs,
84
+ });
85
+ return this.translateResponse(response, request.model);
86
+ }
87
+ /**
88
+ * Execute a streaming completion request.
89
+ */
90
+ async *completeStream(request) {
91
+ // Gemini uses streamGenerateContent endpoint with alt=sse query param
92
+ let url = this.buildUrl(request.model, 'streamGenerateContent');
93
+ // Add alt=sse for server-sent events format
94
+ url += url.includes('?') ? '&alt=sse' : '?alt=sse';
95
+ const geminiRequest = this.translateRequest(request);
96
+ const response = await this.makeStreamingRequest({
97
+ method: 'POST',
98
+ url,
99
+ headers: this.buildHeaders(),
100
+ body: geminiRequest,
101
+ timeoutMs: request.timeout_ms ?? this.defaultTimeoutMs,
102
+ stream: true,
103
+ });
104
+ if (!response.body) {
105
+ throw new Error('No response body for streaming request');
106
+ }
107
+ // Track state for content block management
108
+ let hasStartedContent = false;
109
+ let currentToolCallIndex = 0;
110
+ const activeToolCalls = new Map();
111
+ const reader = response.body.getReader();
112
+ const decoder = new TextDecoder();
113
+ let buffer = '';
114
+ try {
115
+ while (true) {
116
+ const { done, value } = await reader.read();
117
+ if (done) {
118
+ break;
119
+ }
120
+ buffer += decoder.decode(value, { stream: true });
121
+ // Process complete SSE events
122
+ const lines = buffer.split('\n');
123
+ buffer = lines.pop() || '';
124
+ for (const line of lines) {
125
+ const trimmed = line.trim();
126
+ if (!trimmed || trimmed === 'data: [DONE]') {
127
+ continue;
128
+ }
129
+ if (trimmed.startsWith('data: ')) {
130
+ const jsonStr = trimmed.slice(6);
131
+ try {
132
+ const chunk = JSON.parse(jsonStr);
133
+ const chunks = this.translateStreamChunk(chunk, hasStartedContent, currentToolCallIndex, activeToolCalls);
134
+ for (const streamChunk of chunks) {
135
+ // Track state for content block management
136
+ if (streamChunk.type === 'content_block_start' &&
137
+ streamChunk.content_block?.type === 'text') {
138
+ hasStartedContent = true;
139
+ }
140
+ if (streamChunk.type === 'content_block_start' &&
141
+ streamChunk.content_block?.type === 'tool_use') {
142
+ currentToolCallIndex++;
143
+ }
144
+ yield streamChunk;
145
+ }
146
+ }
147
+ catch {
148
+ // Skip malformed JSON chunks
149
+ }
150
+ }
151
+ }
152
+ }
153
+ }
154
+ finally {
155
+ reader.releaseLock();
156
+ }
157
+ // Emit message_stop at the end
158
+ yield { type: 'message_stop' };
159
+ }
160
+ /**
161
+ * Check if the Gemini API is available and credentials are valid.
162
+ */
163
+ async healthCheck() {
164
+ // List models endpoint to verify API key
165
+ const baseUrl = this.getBaseUrl(GeminiProvider.DEFAULT_BASE_URL);
166
+ let url = `${baseUrl}/models`;
167
+ if (this.config.api_key) {
168
+ url += `?key=${this.config.api_key}`;
169
+ }
170
+ await this.makeRequest({
171
+ method: 'GET',
172
+ url,
173
+ headers: this.buildHeaders(),
174
+ timeoutMs: 10000,
175
+ });
176
+ }
177
+ // ==========================================================================
178
+ // Translation Methods
179
+ // ==========================================================================
180
+ /**
181
+ * Translate Foundation request to Gemini format.
182
+ */
183
+ translateRequest(request) {
184
+ const geminiRequest = {
185
+ contents: this.translateMessages(request.messages),
186
+ };
187
+ // Add generation config if any options specified
188
+ const generationConfig = {};
189
+ if (request.temperature !== undefined) {
190
+ generationConfig.temperature = request.temperature;
191
+ }
192
+ if (request.max_tokens !== undefined) {
193
+ generationConfig.maxOutputTokens = request.max_tokens;
194
+ }
195
+ else {
196
+ generationConfig.maxOutputTokens = GeminiProvider.DEFAULT_MAX_TOKENS;
197
+ }
198
+ if (Object.keys(generationConfig).length > 0) {
199
+ geminiRequest.generationConfig = generationConfig;
200
+ }
201
+ // Translate tools if present
202
+ if (request.tools && request.tools.length > 0) {
203
+ geminiRequest.tools = [
204
+ {
205
+ functionDeclarations: this.translateTools(request.tools),
206
+ },
207
+ ];
208
+ }
209
+ return geminiRequest;
210
+ }
211
+ /**
212
+ * Translate messages from Foundation format to Gemini format.
213
+ *
214
+ * Key translations:
215
+ * - role: "user" -> "user", role: "assistant" -> "model"
216
+ * - Content blocks become parts
217
+ * - tool_use blocks become functionCall parts
218
+ * - tool_result blocks become functionResponse parts
219
+ */
220
+ translateMessages(messages) {
221
+ const geminiContents = [];
222
+ for (const message of messages) {
223
+ const role = message.role === 'assistant' ? 'model' : 'user';
224
+ const parts = [];
225
+ if (typeof message.content === 'string') {
226
+ // Simple string content
227
+ parts.push({ text: message.content });
228
+ }
229
+ else {
230
+ // Content blocks - translate each type
231
+ for (const block of message.content) {
232
+ switch (block.type) {
233
+ case 'text':
234
+ if (block.text) {
235
+ parts.push({ text: block.text });
236
+ }
237
+ break;
238
+ case 'tool_use':
239
+ if (block.name) {
240
+ parts.push({
241
+ functionCall: {
242
+ name: block.name,
243
+ args: block.input || {},
244
+ },
245
+ });
246
+ }
247
+ break;
248
+ case 'tool_result':
249
+ if (block.tool_use_id && block.content) {
250
+ // Gemini expects function name, not ID
251
+ // We need to track tool calls to map IDs to names
252
+ // For now, use the ID as name (caller should ensure consistency)
253
+ parts.push({
254
+ functionResponse: {
255
+ name: block.tool_use_id,
256
+ response: {
257
+ content: block.content,
258
+ },
259
+ },
260
+ });
261
+ }
262
+ break;
263
+ }
264
+ }
265
+ }
266
+ if (parts.length > 0) {
267
+ geminiContents.push({ role, parts });
268
+ }
269
+ }
270
+ return geminiContents;
271
+ }
272
+ /**
273
+ * Translate tools from Foundation format to Gemini function declarations.
274
+ */
275
+ translateTools(tools) {
276
+ return tools.map((tool) => ({
277
+ name: tool.name,
278
+ description: tool.description,
279
+ parameters: tool.input_schema,
280
+ }));
281
+ }
282
+ /**
283
+ * Translate Gemini response to Foundation format.
284
+ */
285
+ translateResponse(response, model) {
286
+ const candidate = response.candidates?.[0];
287
+ if (!candidate) {
288
+ throw new Error('No candidates in Gemini response');
289
+ }
290
+ const content = [];
291
+ let toolCallCounter = 0;
292
+ // Translate parts to content blocks
293
+ for (const part of candidate.content.parts) {
294
+ if (part.text !== undefined) {
295
+ content.push({
296
+ type: 'text',
297
+ text: part.text,
298
+ });
299
+ }
300
+ if (part.functionCall) {
301
+ // Generate a unique ID for the tool call
302
+ const toolId = `call_${Date.now()}_${toolCallCounter++}`;
303
+ content.push({
304
+ type: 'tool_use',
305
+ id: toolId,
306
+ name: part.functionCall.name,
307
+ input: part.functionCall.args,
308
+ });
309
+ }
310
+ }
311
+ // Map Gemini finish reason to Foundation stop_reason
312
+ let stopReason = 'end_turn';
313
+ switch (candidate.finishReason) {
314
+ case 'STOP':
315
+ stopReason = 'end_turn';
316
+ break;
317
+ case 'MAX_TOKENS':
318
+ stopReason = 'max_tokens';
319
+ break;
320
+ case 'SAFETY':
321
+ stopReason = 'content_filter';
322
+ break;
323
+ case 'RECITATION':
324
+ stopReason = 'content_filter';
325
+ break;
326
+ default:
327
+ stopReason = 'end_turn';
328
+ }
329
+ // Check if we have tool calls - that changes the stop reason
330
+ if (content.some((block) => block.type === 'tool_use')) {
331
+ stopReason = 'tool_use';
332
+ }
333
+ const result = {
334
+ id: `gemini-${Date.now()}`, // Gemini doesn't provide response ID
335
+ content,
336
+ model,
337
+ stop_reason: stopReason,
338
+ };
339
+ if (response.usageMetadata) {
340
+ result.usage = {
341
+ input_tokens: response.usageMetadata.promptTokenCount,
342
+ output_tokens: response.usageMetadata.candidatesTokenCount,
343
+ };
344
+ }
345
+ return result;
346
+ }
347
+ /**
348
+ * Translate Gemini streaming chunk to Foundation StreamChunk format.
349
+ */
350
+ translateStreamChunk(chunk, hasStartedContent, currentToolCallIndex, activeToolCalls) {
351
+ const chunks = [];
352
+ const candidate = chunk.candidates?.[0];
353
+ if (!candidate?.content?.parts) {
354
+ return chunks;
355
+ }
356
+ for (const part of candidate.content.parts) {
357
+ // Handle text content
358
+ if (part.text !== undefined) {
359
+ // Emit content_block_start if this is the first content
360
+ if (!hasStartedContent) {
361
+ chunks.push({
362
+ type: 'content_block_start',
363
+ index: 0,
364
+ content_block: {
365
+ type: 'text',
366
+ text: '',
367
+ },
368
+ });
369
+ }
370
+ // Emit content delta
371
+ chunks.push({
372
+ type: 'content_block_delta',
373
+ index: 0,
374
+ delta: {
375
+ type: 'text_delta',
376
+ text: part.text,
377
+ },
378
+ });
379
+ }
380
+ // Handle function calls
381
+ if (part.functionCall) {
382
+ const toolIndex = currentToolCallIndex;
383
+ const toolId = `call_${Date.now()}_${toolIndex}`;
384
+ // Track this tool call
385
+ activeToolCalls.set(toolIndex, {
386
+ id: toolId,
387
+ name: part.functionCall.name,
388
+ });
389
+ // Emit content_block_start for tool use
390
+ chunks.push({
391
+ type: 'content_block_start',
392
+ index: toolIndex + 1, // Offset by 1 since text is at index 0
393
+ content_block: {
394
+ type: 'tool_use',
395
+ id: toolId,
396
+ name: part.functionCall.name,
397
+ input: part.functionCall.args,
398
+ },
399
+ });
400
+ // Emit the full arguments as a delta (Gemini sends complete args)
401
+ chunks.push({
402
+ type: 'content_block_delta',
403
+ index: toolIndex + 1,
404
+ delta: {
405
+ type: 'input_json_delta',
406
+ text: JSON.stringify(part.functionCall.args),
407
+ },
408
+ });
409
+ }
410
+ }
411
+ return chunks;
412
+ }
413
+ }
414
+ //# sourceMappingURL=gemini.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Groq Provider Implementation
3
+ *
4
+ * Groq provides ultra-fast LPU inference (up to 18x faster than GPU).
5
+ * It uses an OpenAI-compatible API format.
6
+ * This provider extends OpenAIProvider with the correct name identifier.
7
+ */
8
+ import { OpenAIProvider } from './openai.js';
9
+ import type { ProviderConfig } from './types.js';
10
+ /**
11
+ * Groq API provider adapter.
12
+ *
13
+ * Uses OpenAI-compatible API format with Groq endpoints.
14
+ * Provides ultra-fast inference using custom LPU hardware.
15
+ *
16
+ * Default base URL: https://api.groq.com/openai/v1
17
+ * Available models: llama-3.3-70b-versatile, llama-3.1-8b-instant, mixtral-8x7b-32768, gemma2-9b-it
18
+ */
19
+ export declare class GroqProvider extends OpenAIProvider {
20
+ readonly name = "groq";
21
+ constructor(config: ProviderConfig);
22
+ }
23
+ //# sourceMappingURL=groq.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groq.d.ts","sourceRoot":"","sources":["../../src/providers/groq.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAKjD;;;;;;;;GAQG;AACH,qBAAa,YAAa,SAAQ,cAAc;IAC9C,SAAyB,IAAI,UAAU;gBAE3B,MAAM,EAAE,cAAc;CAQnC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Groq Provider Implementation
3
+ *
4
+ * Groq provides ultra-fast LPU inference (up to 18x faster than GPU).
5
+ * It uses an OpenAI-compatible API format.
6
+ * This provider extends OpenAIProvider with the correct name identifier.
7
+ */
8
+ import { OpenAIProvider } from './openai.js';
9
+ // Default base URL for Groq API
10
+ const GROQ_BASE_URL = 'https://api.groq.com/openai/v1';
11
+ /**
12
+ * Groq API provider adapter.
13
+ *
14
+ * Uses OpenAI-compatible API format with Groq endpoints.
15
+ * Provides ultra-fast inference using custom LPU hardware.
16
+ *
17
+ * Default base URL: https://api.groq.com/openai/v1
18
+ * Available models: llama-3.3-70b-versatile, llama-3.1-8b-instant, mixtral-8x7b-32768, gemma2-9b-it
19
+ */
20
+ export class GroqProvider extends OpenAIProvider {
21
+ name = 'groq';
22
+ constructor(config) {
23
+ // Ensure base_url defaults to Groq endpoint if not specified
24
+ const configWithDefaults = {
25
+ ...config,
26
+ base_url: config.base_url ?? GROQ_BASE_URL,
27
+ };
28
+ super(configWithDefaults);
29
+ }
30
+ }
31
+ //# sourceMappingURL=groq.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groq.js","sourceRoot":"","sources":["../../src/providers/groq.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,gCAAgC;AAChC,MAAM,aAAa,GAAG,gCAAgC,CAAC;AAEvD;;;;;;;;GAQG;AACH,MAAM,OAAO,YAAa,SAAQ,cAAc;IACrB,IAAI,GAAG,MAAM,CAAC;IAEvC,YAAY,MAAsB;QAChC,6DAA6D;QAC7D,MAAM,kBAAkB,GAAmB;YACzC,GAAG,MAAM;YACT,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,aAAa;SAC3C,CAAC;QACF,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC5B,CAAC;CACF"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Provider Module Exports
3
+ *
4
+ * This module provides a unified interface for interacting with various LLM providers.
5
+ * Supports 13+ providers including Anthropic, OpenAI, Google, and many OpenAI-compatible APIs.
6
+ */
7
+ export * from './types.js';
8
+ export { BaseProvider } from './base.js';
9
+ export { AnthropicProvider } from './anthropic.js';
10
+ export { OpenAIProvider } from './openai.js';
11
+ export { GeminiProvider } from './gemini.js';
12
+ export { OllamaProvider } from './ollama.js';
13
+ export { GroqProvider } from './groq.js';
14
+ export { TogetherProvider } from './together.js';
15
+ export { FireworksProvider } from './fireworks.js';
16
+ export { OpenRouterProvider } from './openrouter.js';
17
+ export { PerplexityProvider } from './perplexity.js';
18
+ export { KimiProvider } from './kimi.js';
19
+ export { KimiCodeProvider } from './kimi-code.js';
20
+ export { ZAIProvider } from './zai.js';
21
+ export { DeepSeekProvider } from './deepseek.js';
22
+ export { ProviderManager, createProvider, createProviderManager, type ProviderFactory, } from './manager.js';
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,cAAc,YAAY,CAAC;AAG3B,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGjD,OAAO,EACL,eAAe,EACf,cAAc,EACd,qBAAqB,EACrB,KAAK,eAAe,GACrB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Provider Module Exports
3
+ *
4
+ * This module provides a unified interface for interacting with various LLM providers.
5
+ * Supports 13+ providers including Anthropic, OpenAI, Google, and many OpenAI-compatible APIs.
6
+ */
7
+ // Types
8
+ export * from './types.js';
9
+ // Base class
10
+ export { BaseProvider } from './base.js';
11
+ // Provider implementations
12
+ export { AnthropicProvider } from './anthropic.js';
13
+ export { OpenAIProvider } from './openai.js';
14
+ export { GeminiProvider } from './gemini.js';
15
+ export { OllamaProvider } from './ollama.js';
16
+ export { GroqProvider } from './groq.js';
17
+ export { TogetherProvider } from './together.js';
18
+ export { FireworksProvider } from './fireworks.js';
19
+ export { OpenRouterProvider } from './openrouter.js';
20
+ export { PerplexityProvider } from './perplexity.js';
21
+ export { KimiProvider } from './kimi.js';
22
+ export { KimiCodeProvider } from './kimi-code.js';
23
+ export { ZAIProvider } from './zai.js';
24
+ export { DeepSeekProvider } from './deepseek.js';
25
+ // Manager
26
+ export { ProviderManager, createProvider, createProviderManager, } from './manager.js';
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,aAAa;AACb,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,2BAA2B;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,UAAU;AACV,OAAO,EACL,eAAe,EACf,cAAc,EACd,qBAAqB,GAEtB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Kimi Code Provider Implementation
3
+ *
4
+ * Kimi Code is a separate API endpoint from the regular Moonshot (Kimi) API.
5
+ * It uses the same API key but requires:
6
+ * - Different base URL: https://api.kimi.com/coding/v1
7
+ * - Special User-Agent header: claude-code/1.0
8
+ * - Model: kimi-for-coding
9
+ *
10
+ * The API is OpenAI-compatible, so we extend OpenAIProvider.
11
+ */
12
+ import { OpenAIProvider } from './openai.js';
13
+ import type { ProviderConfig } from './types.js';
14
+ /**
15
+ * Kimi Code API provider adapter.
16
+ *
17
+ * Uses OpenAI-compatible API format with the Kimi Code endpoint.
18
+ * CRITICAL: Requires User-Agent header set to 'claude-code/1.0' or the API rejects requests.
19
+ *
20
+ * Default base URL: https://api.kimi.com/coding/v1
21
+ * Default model: kimi-for-coding
22
+ */
23
+ export declare class KimiCodeProvider extends OpenAIProvider {
24
+ readonly name = "kimi-code";
25
+ constructor(config: ProviderConfig);
26
+ /**
27
+ * Build headers for Kimi Code API requests.
28
+ * CRITICAL: Adds the required User-Agent header that Kimi Code API mandates.
29
+ */
30
+ protected buildHeaders(): Record<string, string>;
31
+ }
32
+ //# sourceMappingURL=kimi-code.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kimi-code.d.ts","sourceRoot":"","sources":["../../src/providers/kimi-code.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAMjD;;;;;;;;GAQG;AACH,qBAAa,gBAAiB,SAAQ,cAAc;IAClD,SAAyB,IAAI,eAAe;gBAEhC,MAAM,EAAE,cAAc;IASlC;;;OAGG;cACgB,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAQ1D"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Kimi Code Provider Implementation
3
+ *
4
+ * Kimi Code is a separate API endpoint from the regular Moonshot (Kimi) API.
5
+ * It uses the same API key but requires:
6
+ * - Different base URL: https://api.kimi.com/coding/v1
7
+ * - Special User-Agent header: claude-code/1.0
8
+ * - Model: kimi-for-coding
9
+ *
10
+ * The API is OpenAI-compatible, so we extend OpenAIProvider.
11
+ */
12
+ import { OpenAIProvider } from './openai.js';
13
+ // Constants for Kimi Code API
14
+ const KIMI_CODE_BASE_URL = 'https://api.kimi.com/coding/v1';
15
+ const KIMI_CODE_USER_AGENT = 'claude-code/1.0';
16
+ /**
17
+ * Kimi Code API provider adapter.
18
+ *
19
+ * Uses OpenAI-compatible API format with the Kimi Code endpoint.
20
+ * CRITICAL: Requires User-Agent header set to 'claude-code/1.0' or the API rejects requests.
21
+ *
22
+ * Default base URL: https://api.kimi.com/coding/v1
23
+ * Default model: kimi-for-coding
24
+ */
25
+ export class KimiCodeProvider extends OpenAIProvider {
26
+ name = 'kimi-code';
27
+ constructor(config) {
28
+ // Ensure base_url defaults to Kimi Code endpoint if not specified
29
+ const configWithDefaults = {
30
+ ...config,
31
+ base_url: config.base_url ?? KIMI_CODE_BASE_URL,
32
+ };
33
+ super(configWithDefaults);
34
+ }
35
+ /**
36
+ * Build headers for Kimi Code API requests.
37
+ * CRITICAL: Adds the required User-Agent header that Kimi Code API mandates.
38
+ */
39
+ buildHeaders() {
40
+ const headers = super.buildHeaders();
41
+ // Kimi Code API requires this specific User-Agent header
42
+ headers['User-Agent'] = KIMI_CODE_USER_AGENT;
43
+ return headers;
44
+ }
45
+ }
46
+ //# sourceMappingURL=kimi-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kimi-code.js","sourceRoot":"","sources":["../../src/providers/kimi-code.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,8BAA8B;AAC9B,MAAM,kBAAkB,GAAG,gCAAgC,CAAC;AAC5D,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAE/C;;;;;;;;GAQG;AACH,MAAM,OAAO,gBAAiB,SAAQ,cAAc;IACzB,IAAI,GAAG,WAAW,CAAC;IAE5C,YAAY,MAAsB;QAChC,kEAAkE;QAClE,MAAM,kBAAkB,GAAmB;YACzC,GAAG,MAAM;YACT,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,kBAAkB;SAChD,CAAC;QACF,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACgB,YAAY;QAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;QAErC,yDAAyD;QACzD,OAAO,CAAC,YAAY,CAAC,GAAG,oBAAoB,CAAC;QAE7C,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Kimi (Moonshot AI) Provider Implementation
3
+ *
4
+ * Kimi uses an OpenAI-compatible API format.
5
+ * This provider extends OpenAIProvider with the correct name identifier.
6
+ */
7
+ import { OpenAIProvider } from './openai.js';
8
+ import type { ProviderConfig } from './types.js';
9
+ /**
10
+ * Kimi (Moonshot AI) API provider adapter.
11
+ *
12
+ * Uses OpenAI-compatible API format but with Kimi endpoints.
13
+ * Default base URL: https://api.moonshot.ai/v1
14
+ */
15
+ export declare class KimiProvider extends OpenAIProvider {
16
+ readonly name = "kimi";
17
+ constructor(config: ProviderConfig);
18
+ }
19
+ //# sourceMappingURL=kimi.d.ts.map