@sashabogi/foundation 0.1.6 → 0.1.7

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 (109) 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 +47 -4
  12. package/dist/cli.js.map +1 -1
  13. package/dist/providers/anthropic.d.ts +178 -0
  14. package/dist/providers/anthropic.d.ts.map +1 -0
  15. package/dist/providers/anthropic.js +514 -0
  16. package/dist/providers/anthropic.js.map +1 -0
  17. package/dist/providers/base.d.ts +154 -0
  18. package/dist/providers/base.d.ts.map +1 -0
  19. package/dist/providers/base.js +227 -0
  20. package/dist/providers/base.js.map +1 -0
  21. package/dist/providers/deepseek.d.ts +23 -0
  22. package/dist/providers/deepseek.d.ts.map +1 -0
  23. package/dist/providers/deepseek.js +31 -0
  24. package/dist/providers/deepseek.js.map +1 -0
  25. package/dist/providers/fireworks.d.ts +23 -0
  26. package/dist/providers/fireworks.d.ts.map +1 -0
  27. package/dist/providers/fireworks.js +31 -0
  28. package/dist/providers/fireworks.js.map +1 -0
  29. package/dist/providers/gemini.d.ts +85 -0
  30. package/dist/providers/gemini.d.ts.map +1 -0
  31. package/dist/providers/gemini.js +414 -0
  32. package/dist/providers/gemini.js.map +1 -0
  33. package/dist/providers/groq.d.ts +23 -0
  34. package/dist/providers/groq.d.ts.map +1 -0
  35. package/dist/providers/groq.js +31 -0
  36. package/dist/providers/groq.js.map +1 -0
  37. package/dist/providers/index.d.ts +23 -0
  38. package/dist/providers/index.d.ts.map +1 -0
  39. package/dist/providers/index.js +27 -0
  40. package/dist/providers/index.js.map +1 -0
  41. package/dist/providers/kimi-code.d.ts +32 -0
  42. package/dist/providers/kimi-code.d.ts.map +1 -0
  43. package/dist/providers/kimi-code.js +46 -0
  44. package/dist/providers/kimi-code.js.map +1 -0
  45. package/dist/providers/kimi.d.ts +19 -0
  46. package/dist/providers/kimi.d.ts.map +1 -0
  47. package/dist/providers/kimi.js +27 -0
  48. package/dist/providers/kimi.js.map +1 -0
  49. package/dist/providers/manager.d.ts +144 -0
  50. package/dist/providers/manager.d.ts.map +1 -0
  51. package/dist/providers/manager.js +279 -0
  52. package/dist/providers/manager.js.map +1 -0
  53. package/dist/providers/ollama.d.ts +83 -0
  54. package/dist/providers/ollama.d.ts.map +1 -0
  55. package/dist/providers/ollama.js +450 -0
  56. package/dist/providers/ollama.js.map +1 -0
  57. package/dist/providers/openai.d.ts +91 -0
  58. package/dist/providers/openai.d.ts.map +1 -0
  59. package/dist/providers/openai.js +445 -0
  60. package/dist/providers/openai.js.map +1 -0
  61. package/dist/providers/openrouter.d.ts +23 -0
  62. package/dist/providers/openrouter.d.ts.map +1 -0
  63. package/dist/providers/openrouter.js +31 -0
  64. package/dist/providers/openrouter.js.map +1 -0
  65. package/dist/providers/perplexity.d.ts +34 -0
  66. package/dist/providers/perplexity.d.ts.map +1 -0
  67. package/dist/providers/perplexity.js +58 -0
  68. package/dist/providers/perplexity.js.map +1 -0
  69. package/dist/providers/together.d.ts +23 -0
  70. package/dist/providers/together.d.ts.map +1 -0
  71. package/dist/providers/together.js +31 -0
  72. package/dist/providers/together.js.map +1 -0
  73. package/dist/providers/types.d.ts +229 -0
  74. package/dist/providers/types.d.ts.map +1 -0
  75. package/dist/providers/types.js +73 -0
  76. package/dist/providers/types.js.map +1 -0
  77. package/dist/providers/zai.d.ts +19 -0
  78. package/dist/providers/zai.d.ts.map +1 -0
  79. package/dist/providers/zai.js +27 -0
  80. package/dist/providers/zai.js.map +1 -0
  81. package/dist/services/provider.service.d.ts +28 -0
  82. package/dist/services/provider.service.d.ts.map +1 -1
  83. package/dist/services/provider.service.js +137 -13
  84. package/dist/services/provider.service.js.map +1 -1
  85. package/dist/tools/demerzel/engine.d.ts +67 -0
  86. package/dist/tools/demerzel/engine.d.ts.map +1 -0
  87. package/dist/tools/demerzel/engine.js +401 -0
  88. package/dist/tools/demerzel/engine.js.map +1 -0
  89. package/dist/tools/demerzel/enhanced-snapshot.d.ts +67 -0
  90. package/dist/tools/demerzel/enhanced-snapshot.d.ts.map +1 -0
  91. package/dist/tools/demerzel/enhanced-snapshot.js +481 -0
  92. package/dist/tools/demerzel/enhanced-snapshot.js.map +1 -0
  93. package/dist/tools/demerzel/index.d.ts +11 -0
  94. package/dist/tools/demerzel/index.d.ts.map +1 -1
  95. package/dist/tools/demerzel/index.js +656 -85
  96. package/dist/tools/demerzel/index.js.map +1 -1
  97. package/dist/tools/demerzel/prompts.d.ts +26 -0
  98. package/dist/tools/demerzel/prompts.d.ts.map +1 -0
  99. package/dist/tools/demerzel/prompts.js +181 -0
  100. package/dist/tools/demerzel/prompts.js.map +1 -0
  101. package/dist/tools/demerzel/semantic-search.d.ts +54 -0
  102. package/dist/tools/demerzel/semantic-search.d.ts.map +1 -0
  103. package/dist/tools/demerzel/semantic-search.js +205 -0
  104. package/dist/tools/demerzel/semantic-search.js.map +1 -0
  105. package/dist/tools/demerzel/snapshot.d.ts +30 -0
  106. package/dist/tools/demerzel/snapshot.d.ts.map +1 -0
  107. package/dist/tools/demerzel/snapshot.js +169 -0
  108. package/dist/tools/demerzel/snapshot.js.map +1 -0
  109. package/package.json +2 -1
@@ -0,0 +1,227 @@
1
+ /**
2
+ * Base Provider Implementation
3
+ *
4
+ * Abstract base class that implements common functionality for all LLM providers.
5
+ * Handles authentication headers, error handling, timeout management, and
6
+ * provides the interface that concrete providers must implement.
7
+ */
8
+ import { ProviderError, RateLimitError, AuthenticationError, TimeoutError, } from './types.js';
9
+ /**
10
+ * Abstract base class for LLM providers.
11
+ *
12
+ * Provides common functionality including:
13
+ * - Authentication header management
14
+ * - HTTP request helpers with timeout support
15
+ * - Standardized error handling
16
+ * - Response parsing utilities
17
+ *
18
+ * Concrete providers must implement:
19
+ * - complete(): Execute a completion request
20
+ * - completeStream(): Execute a streaming completion request
21
+ * - healthCheck(): Verify provider connectivity
22
+ */
23
+ export class BaseProvider {
24
+ /** Provider configuration */
25
+ config;
26
+ /** Default timeout in milliseconds (3 minutes for complex LLM operations) */
27
+ defaultTimeoutMs = 180000;
28
+ /**
29
+ * Create a new provider instance.
30
+ *
31
+ * @param config - Provider-specific configuration (API keys, URLs, etc.)
32
+ */
33
+ constructor(config) {
34
+ this.config = config;
35
+ }
36
+ /**
37
+ * Build common HTTP headers for provider requests.
38
+ * Includes authentication and content-type headers.
39
+ *
40
+ * @returns Headers object for HTTP requests
41
+ */
42
+ buildHeaders() {
43
+ const headers = {
44
+ 'Content-Type': 'application/json',
45
+ };
46
+ // Add API key authentication if configured
47
+ if (this.config.api_key) {
48
+ headers['Authorization'] = `Bearer ${this.config.api_key}`;
49
+ }
50
+ // Add any custom headers from config
51
+ if (this.config.headers) {
52
+ Object.assign(headers, this.config.headers);
53
+ }
54
+ return headers;
55
+ }
56
+ /**
57
+ * Make an HTTP request to the provider API with timeout support.
58
+ *
59
+ * @param options - Request options
60
+ * @returns Promise resolving to the parsed JSON response
61
+ * @throws ProviderError for API errors
62
+ * @throws TimeoutError if the request times out
63
+ */
64
+ async makeRequest(options) {
65
+ const { method, url, headers, body, timeoutMs = this.defaultTimeoutMs } = options;
66
+ // Create abort controller for timeout
67
+ const controller = new AbortController();
68
+ const timeoutId = setTimeout(() => { controller.abort(); }, timeoutMs);
69
+ try {
70
+ const fetchOptions = {
71
+ method,
72
+ headers,
73
+ signal: controller.signal,
74
+ };
75
+ if (body) {
76
+ fetchOptions.body = JSON.stringify(body);
77
+ }
78
+ const response = await fetch(url, fetchOptions);
79
+ // Clear timeout on successful response
80
+ clearTimeout(timeoutId);
81
+ // Handle non-OK responses
82
+ if (!response.ok) {
83
+ await this.handleErrorResponse(response);
84
+ }
85
+ // Parse and return JSON response
86
+ return (await response.json());
87
+ }
88
+ catch (error) {
89
+ clearTimeout(timeoutId);
90
+ this.handleRequestError(error, timeoutMs);
91
+ // handleRequestError always throws, but TypeScript needs this
92
+ throw error;
93
+ }
94
+ }
95
+ /**
96
+ * Make a streaming HTTP request to the provider API.
97
+ *
98
+ * @param options - Request options
99
+ * @returns Response object for streaming
100
+ * @throws ProviderError for API errors
101
+ * @throws TimeoutError if the connection times out
102
+ */
103
+ async makeStreamingRequest(options) {
104
+ const { method, url, headers, body, timeoutMs = this.defaultTimeoutMs } = options;
105
+ // Create abort controller for timeout
106
+ const controller = new AbortController();
107
+ const timeoutId = setTimeout(() => { controller.abort(); }, timeoutMs);
108
+ try {
109
+ const fetchOptions = {
110
+ method,
111
+ headers,
112
+ signal: controller.signal,
113
+ };
114
+ if (body) {
115
+ fetchOptions.body = JSON.stringify(body);
116
+ }
117
+ const response = await fetch(url, fetchOptions);
118
+ // Clear timeout once we have a response (streaming will handle its own timing)
119
+ clearTimeout(timeoutId);
120
+ // Handle non-OK responses
121
+ if (!response.ok) {
122
+ await this.handleErrorResponse(response);
123
+ }
124
+ return response;
125
+ }
126
+ catch (error) {
127
+ clearTimeout(timeoutId);
128
+ this.handleRequestError(error, timeoutMs);
129
+ // handleRequestError always throws, but TypeScript needs this
130
+ throw error;
131
+ }
132
+ }
133
+ /**
134
+ * Handle HTTP error responses from provider APIs.
135
+ * Throws appropriate error types based on status code.
136
+ *
137
+ * @param response - The HTTP response object
138
+ * @throws RateLimitError for 429 responses
139
+ * @throws AuthenticationError for 401 responses
140
+ * @throws ProviderError for other error responses
141
+ */
142
+ async handleErrorResponse(response) {
143
+ let errorMessage = `HTTP ${response.status}: ${response.statusText}`;
144
+ let retryAfterMs;
145
+ // Try to parse error details from response body
146
+ try {
147
+ const errorBody = (await response.json());
148
+ if (errorBody.error?.message) {
149
+ errorMessage = errorBody.error.message;
150
+ }
151
+ else if (errorBody.message) {
152
+ errorMessage = errorBody.message;
153
+ }
154
+ }
155
+ catch {
156
+ // Ignore JSON parse errors, use default message
157
+ }
158
+ // Check for retry-after header on rate limits
159
+ const retryAfter = response.headers.get('retry-after');
160
+ if (retryAfter) {
161
+ retryAfterMs = parseInt(retryAfter, 10) * 1000;
162
+ }
163
+ // Throw appropriate error type based on status
164
+ switch (response.status) {
165
+ case 401:
166
+ case 403:
167
+ throw new AuthenticationError(this.name);
168
+ case 429:
169
+ throw new RateLimitError(this.name, retryAfterMs);
170
+ default:
171
+ throw new ProviderError(errorMessage, this.name, response.status);
172
+ }
173
+ }
174
+ /**
175
+ * Handle request-level errors (network, timeout, etc.).
176
+ *
177
+ * @param error - The caught error
178
+ * @param timeoutMs - The timeout that was configured
179
+ * @throws TimeoutError for abort errors
180
+ * @throws ProviderError for other errors
181
+ */
182
+ handleRequestError(error, timeoutMs) {
183
+ // Check if this is an abort error (timeout)
184
+ if (error instanceof Error) {
185
+ if (error.name === 'AbortError') {
186
+ throw new TimeoutError(this.name, timeoutMs);
187
+ }
188
+ // Re-throw if it's already one of our error types
189
+ if (error instanceof ProviderError ||
190
+ error instanceof RateLimitError ||
191
+ error instanceof AuthenticationError ||
192
+ error instanceof TimeoutError) {
193
+ throw error;
194
+ }
195
+ // Wrap other errors
196
+ throw new ProviderError(error.message, this.name, undefined, error);
197
+ }
198
+ // Handle non-Error objects
199
+ throw new ProviderError(String(error), this.name);
200
+ }
201
+ /**
202
+ * Get the base URL for API requests.
203
+ * Uses configured base_url or returns the default for the provider.
204
+ *
205
+ * @param defaultUrl - Default URL if not configured
206
+ * @returns The base URL to use for requests
207
+ */
208
+ getBaseUrl(defaultUrl) {
209
+ return this.config.base_url || defaultUrl;
210
+ }
211
+ /**
212
+ * Create an AbortController with a timeout.
213
+ * Useful for streaming requests where we need to track the controller.
214
+ *
215
+ * @param timeoutMs - Timeout in milliseconds
216
+ * @returns Object containing the controller and a cleanup function
217
+ */
218
+ createTimeoutController(timeoutMs) {
219
+ const controller = new AbortController();
220
+ const timeoutId = setTimeout(() => { controller.abort(); }, timeoutMs);
221
+ return {
222
+ controller,
223
+ cleanup: () => { clearTimeout(timeoutId); },
224
+ };
225
+ }
226
+ }
227
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/providers/base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * DeepSeek Provider Implementation
3
+ *
4
+ * DeepSeek provides high-quality open models.
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
+ * DeepSeek API provider adapter.
12
+ *
13
+ * Uses OpenAI-compatible API format with DeepSeek endpoints.
14
+ * Provides access to DeepSeek's powerful models.
15
+ *
16
+ * Default base URL: https://api.deepseek.com
17
+ * Available models: deepseek-chat, deepseek-coder, deepseek-reasoner
18
+ */
19
+ export declare class DeepSeekProvider extends OpenAIProvider {
20
+ readonly name = "deepseek";
21
+ constructor(config: ProviderConfig);
22
+ }
23
+ //# sourceMappingURL=deepseek.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deepseek.d.ts","sourceRoot":"","sources":["../../src/providers/deepseek.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,gBAAiB,SAAQ,cAAc;IAClD,SAAyB,IAAI,cAAc;gBAE/B,MAAM,EAAE,cAAc;CAQnC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * DeepSeek Provider Implementation
3
+ *
4
+ * DeepSeek provides high-quality open models.
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 DeepSeek API
10
+ const DEEPSEEK_BASE_URL = 'https://api.deepseek.com';
11
+ /**
12
+ * DeepSeek API provider adapter.
13
+ *
14
+ * Uses OpenAI-compatible API format with DeepSeek endpoints.
15
+ * Provides access to DeepSeek's powerful models.
16
+ *
17
+ * Default base URL: https://api.deepseek.com
18
+ * Available models: deepseek-chat, deepseek-coder, deepseek-reasoner
19
+ */
20
+ export class DeepSeekProvider extends OpenAIProvider {
21
+ name = 'deepseek';
22
+ constructor(config) {
23
+ // Ensure base_url defaults to DeepSeek endpoint if not specified
24
+ const configWithDefaults = {
25
+ ...config,
26
+ base_url: config.base_url ?? DEEPSEEK_BASE_URL,
27
+ };
28
+ super(configWithDefaults);
29
+ }
30
+ }
31
+ //# sourceMappingURL=deepseek.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deepseek.js","sourceRoot":"","sources":["../../src/providers/deepseek.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,oCAAoC;AACpC,MAAM,iBAAiB,GAAG,0BAA0B,CAAC;AAErD;;;;;;;;GAQG;AACH,MAAM,OAAO,gBAAiB,SAAQ,cAAc;IACzB,IAAI,GAAG,UAAU,CAAC;IAE3C,YAAY,MAAsB;QAChC,iEAAiE;QACjE,MAAM,kBAAkB,GAAmB;YACzC,GAAG,MAAM;YACT,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,iBAAiB;SAC/C,CAAC;QACF,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC5B,CAAC;CACF"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Fireworks AI Provider Implementation
3
+ *
4
+ * Fireworks AI provides fast inference for DeepSeek, Llama, and other open models.
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
+ * Fireworks AI API provider adapter.
12
+ *
13
+ * Uses OpenAI-compatible API format with Fireworks AI endpoints.
14
+ * Provides fast inference for DeepSeek, Llama, and other models.
15
+ *
16
+ * Default base URL: https://api.fireworks.ai/inference/v1
17
+ * Available models: accounts/fireworks/models/llama-v3p3-70b-instruct, accounts/fireworks/models/deepseek-v3
18
+ */
19
+ export declare class FireworksProvider extends OpenAIProvider {
20
+ readonly name = "fireworks";
21
+ constructor(config: ProviderConfig);
22
+ }
23
+ //# sourceMappingURL=fireworks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fireworks.d.ts","sourceRoot":"","sources":["../../src/providers/fireworks.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,iBAAkB,SAAQ,cAAc;IACnD,SAAyB,IAAI,eAAe;gBAEhC,MAAM,EAAE,cAAc;CAQnC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Fireworks AI Provider Implementation
3
+ *
4
+ * Fireworks AI provides fast inference for DeepSeek, Llama, and other open models.
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 Fireworks AI API
10
+ const FIREWORKS_BASE_URL = 'https://api.fireworks.ai/inference/v1';
11
+ /**
12
+ * Fireworks AI API provider adapter.
13
+ *
14
+ * Uses OpenAI-compatible API format with Fireworks AI endpoints.
15
+ * Provides fast inference for DeepSeek, Llama, and other models.
16
+ *
17
+ * Default base URL: https://api.fireworks.ai/inference/v1
18
+ * Available models: accounts/fireworks/models/llama-v3p3-70b-instruct, accounts/fireworks/models/deepseek-v3
19
+ */
20
+ export class FireworksProvider extends OpenAIProvider {
21
+ name = 'fireworks';
22
+ constructor(config) {
23
+ // Ensure base_url defaults to Fireworks AI endpoint if not specified
24
+ const configWithDefaults = {
25
+ ...config,
26
+ base_url: config.base_url ?? FIREWORKS_BASE_URL,
27
+ };
28
+ super(configWithDefaults);
29
+ }
30
+ }
31
+ //# sourceMappingURL=fireworks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fireworks.js","sourceRoot":"","sources":["../../src/providers/fireworks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,wCAAwC;AACxC,MAAM,kBAAkB,GAAG,uCAAuC,CAAC;AAEnE;;;;;;;;GAQG;AACH,MAAM,OAAO,iBAAkB,SAAQ,cAAc;IAC1B,IAAI,GAAG,WAAW,CAAC;IAE5C,YAAY,MAAsB;QAChC,qEAAqE;QACrE,MAAM,kBAAkB,GAAmB;YACzC,GAAG,MAAM;YACT,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,kBAAkB;SAChD,CAAC;QACF,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC5B,CAAC;CACF"}
@@ -0,0 +1,85 @@
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
+ import type { CompletionRequest, CompletionResponse, StreamChunk, ProviderConfig } from './types.js';
16
+ /**
17
+ * Google Gemini API provider adapter.
18
+ *
19
+ * Implements the Provider interface for Google's Gemini models.
20
+ * Handles:
21
+ * - Message format translation (our format -> Gemini format)
22
+ * - Streaming SSE event parsing
23
+ * - Tool use / function calling
24
+ * - Authentication via API key
25
+ */
26
+ export declare class GeminiProvider extends BaseProvider {
27
+ readonly name = "google";
28
+ private static readonly DEFAULT_BASE_URL;
29
+ /** Default max tokens if not specified in request */
30
+ private static readonly DEFAULT_MAX_TOKENS;
31
+ constructor(config: ProviderConfig);
32
+ /**
33
+ * Build the full API URL with model and action.
34
+ * Gemini uses URL path for model selection and action.
35
+ *
36
+ * @param model - Model identifier
37
+ * @param action - API action (generateContent, streamGenerateContent)
38
+ * @returns Full API URL
39
+ */
40
+ private buildUrl;
41
+ /**
42
+ * Build headers for Gemini API requests.
43
+ * Uses Bearer token if API key is provided (alternative to query param).
44
+ */
45
+ protected buildHeaders(): Record<string, string>;
46
+ /**
47
+ * Execute a completion request and return the full response.
48
+ */
49
+ complete(request: CompletionRequest): Promise<CompletionResponse>;
50
+ /**
51
+ * Execute a streaming completion request.
52
+ */
53
+ completeStream(request: CompletionRequest): AsyncIterable<StreamChunk>;
54
+ /**
55
+ * Check if the Gemini API is available and credentials are valid.
56
+ */
57
+ healthCheck(): Promise<void>;
58
+ /**
59
+ * Translate Foundation request to Gemini format.
60
+ */
61
+ private translateRequest;
62
+ /**
63
+ * Translate messages from Foundation format to Gemini format.
64
+ *
65
+ * Key translations:
66
+ * - role: "user" -> "user", role: "assistant" -> "model"
67
+ * - Content blocks become parts
68
+ * - tool_use blocks become functionCall parts
69
+ * - tool_result blocks become functionResponse parts
70
+ */
71
+ private translateMessages;
72
+ /**
73
+ * Translate tools from Foundation format to Gemini function declarations.
74
+ */
75
+ private translateTools;
76
+ /**
77
+ * Translate Gemini response to Foundation format.
78
+ */
79
+ private translateResponse;
80
+ /**
81
+ * Translate Gemini streaming chunk to Foundation StreamChunk format.
82
+ */
83
+ private translateStreamChunk;
84
+ }
85
+ //# sourceMappingURL=gemini.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EAIX,cAAc,EACf,MAAM,YAAY,CAAC;AAqHpB;;;;;;;;;GASG;AACH,qBAAa,cAAe,SAAQ,YAAY;IAC9C,SAAgB,IAAI,YAAY;IAEhC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAsD;IAE9F,qDAAqD;IACrD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAQ;gBAEtC,MAAM,EAAE,cAAc;IAIlC;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ;IAYhB;;;OAGG;cACgB,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAmBzD;;OAEG;IACU,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAe9E;;OAEG;IACW,cAAc,CAAC,OAAO,EAAE,iBAAiB,GAAG,aAAa,CAAC,WAAW,CAAC;IAwFpF;;OAEG;IACU,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBzC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAgCxB;;;;;;;;OAQG;IACH,OAAO,CAAC,iBAAiB;IA0DzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAQtB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAuEzB;;OAEG;IACH,OAAO,CAAC,oBAAoB;CA4E7B"}