@defai.digital/provider-adapters 13.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +214 -0
- package/dist/cli-adapter.d.ts +23 -0
- package/dist/cli-adapter.d.ts.map +1 -0
- package/dist/cli-adapter.js +151 -0
- package/dist/cli-adapter.js.map +1 -0
- package/dist/error-classifier.d.ts +34 -0
- package/dist/error-classifier.d.ts.map +1 -0
- package/dist/error-classifier.js +257 -0
- package/dist/error-classifier.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/output-parser.d.ts +37 -0
- package/dist/output-parser.d.ts.map +1 -0
- package/dist/output-parser.js +251 -0
- package/dist/output-parser.js.map +1 -0
- package/dist/process-manager.d.ts +43 -0
- package/dist/process-manager.d.ts.map +1 -0
- package/dist/process-manager.js +184 -0
- package/dist/process-manager.js.map +1 -0
- package/dist/providers/claude.d.ts +18 -0
- package/dist/providers/claude.d.ts.map +1 -0
- package/dist/providers/claude.js +39 -0
- package/dist/providers/claude.js.map +1 -0
- package/dist/providers/codex.d.ts +18 -0
- package/dist/providers/codex.d.ts.map +1 -0
- package/dist/providers/codex.js +39 -0
- package/dist/providers/codex.js.map +1 -0
- package/dist/providers/gemini.d.ts +18 -0
- package/dist/providers/gemini.d.ts.map +1 -0
- package/dist/providers/gemini.js +39 -0
- package/dist/providers/gemini.js.map +1 -0
- package/dist/providers/glm.d.ts +18 -0
- package/dist/providers/glm.d.ts.map +1 -0
- package/dist/providers/glm.js +40 -0
- package/dist/providers/glm.js.map +1 -0
- package/dist/providers/grok.d.ts +18 -0
- package/dist/providers/grok.d.ts.map +1 -0
- package/dist/providers/grok.js +40 -0
- package/dist/providers/grok.js.map +1 -0
- package/dist/providers/index.d.ts +32 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +49 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/qwen.d.ts +18 -0
- package/dist/providers/qwen.d.ts.map +1 -0
- package/dist/providers/qwen.js +39 -0
- package/dist/providers/qwen.js.map +1 -0
- package/dist/registry.d.ts +73 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +145 -0
- package/dist/registry.js.map +1 -0
- package/dist/resilient-registry.d.ts +134 -0
- package/dist/resilient-registry.d.ts.map +1 -0
- package/dist/resilient-registry.js +296 -0
- package/dist/resilient-registry.js.map +1 -0
- package/dist/types.d.ts +238 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +14 -0
- package/dist/types.js.map +1 -0
- package/package.json +43 -0
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resilient Provider Registry
|
|
3
|
+
*
|
|
4
|
+
* Wraps the provider registry with production-grade resilience patterns:
|
|
5
|
+
* - Circuit Breaker: Prevents cascade failures
|
|
6
|
+
* - Rate Limiter: Prevents API limit violations
|
|
7
|
+
* - Metrics: Records request metrics for observability
|
|
8
|
+
*/
|
|
9
|
+
import { createProviderRegistry as createBaseRegistry } from './registry.js';
|
|
10
|
+
import { createCircuitBreaker, createRateLimiter, createMetricsCollector, } from '@defai.digital/resilience-domain';
|
|
11
|
+
import { CIRCUIT_FAILURE_THRESHOLD, CIRCUIT_RESET_TIMEOUT, CIRCUIT_FAILURE_WINDOW, CIRCUIT_QUEUE_TIMEOUT, RATE_LIMIT_RPM_DEFAULT, RETRY_DELAY_DEFAULT, } from '@defai.digital/contracts';
|
|
12
|
+
const DEFAULT_CONFIG = {
|
|
13
|
+
circuitBreaker: {
|
|
14
|
+
failureThreshold: CIRCUIT_FAILURE_THRESHOLD,
|
|
15
|
+
resetTimeoutMs: CIRCUIT_RESET_TIMEOUT,
|
|
16
|
+
halfOpenMaxAttempts: 1,
|
|
17
|
+
failureWindowMs: CIRCUIT_FAILURE_WINDOW,
|
|
18
|
+
},
|
|
19
|
+
rateLimiter: {
|
|
20
|
+
requestsPerMinute: RATE_LIMIT_RPM_DEFAULT,
|
|
21
|
+
maxQueueSize: 100,
|
|
22
|
+
queueTimeoutMs: CIRCUIT_QUEUE_TIMEOUT,
|
|
23
|
+
burstMultiplier: 1.5,
|
|
24
|
+
},
|
|
25
|
+
enableMetrics: true,
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Resilient provider registry that wraps calls with circuit breaker and rate limiting
|
|
29
|
+
*/
|
|
30
|
+
export class ResilientProviderRegistry {
|
|
31
|
+
baseRegistry;
|
|
32
|
+
resilientProviders = new Map();
|
|
33
|
+
rateLimiter;
|
|
34
|
+
metrics;
|
|
35
|
+
config;
|
|
36
|
+
constructor(baseRegistry, config) {
|
|
37
|
+
this.baseRegistry = baseRegistry;
|
|
38
|
+
// Deep merge config to preserve nested defaults
|
|
39
|
+
this.config = {
|
|
40
|
+
circuitBreaker: {
|
|
41
|
+
...DEFAULT_CONFIG.circuitBreaker,
|
|
42
|
+
...config?.circuitBreaker,
|
|
43
|
+
},
|
|
44
|
+
rateLimiter: {
|
|
45
|
+
...DEFAULT_CONFIG.rateLimiter,
|
|
46
|
+
...config?.rateLimiter,
|
|
47
|
+
},
|
|
48
|
+
enableMetrics: config?.enableMetrics ?? DEFAULT_CONFIG.enableMetrics,
|
|
49
|
+
};
|
|
50
|
+
// Create global rate limiter
|
|
51
|
+
this.rateLimiter = createRateLimiter(this.config.rateLimiter);
|
|
52
|
+
// Create metrics collector
|
|
53
|
+
this.metrics = this.config.enableMetrics ? createMetricsCollector() : null;
|
|
54
|
+
// Initialize circuit breakers for each provider
|
|
55
|
+
this.initializeProviders();
|
|
56
|
+
}
|
|
57
|
+
initializeProviders() {
|
|
58
|
+
for (const providerId of this.baseRegistry.getProviderIds()) {
|
|
59
|
+
const provider = this.baseRegistry.get(providerId);
|
|
60
|
+
if (provider) {
|
|
61
|
+
this.resilientProviders.set(providerId, {
|
|
62
|
+
provider,
|
|
63
|
+
circuitBreaker: createCircuitBreaker(this.config.circuitBreaker),
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Executes a completion request with resilience patterns
|
|
70
|
+
*/
|
|
71
|
+
async complete(request) {
|
|
72
|
+
const startTime = Date.now();
|
|
73
|
+
const provider = this.baseRegistry.getByModel(request.model);
|
|
74
|
+
if (provider === undefined) {
|
|
75
|
+
const error = {
|
|
76
|
+
category: 'not_found',
|
|
77
|
+
message: `No provider found for model: ${request.model}`,
|
|
78
|
+
shouldRetry: false,
|
|
79
|
+
shouldFallback: true,
|
|
80
|
+
retryAfterMs: null,
|
|
81
|
+
originalError: undefined,
|
|
82
|
+
};
|
|
83
|
+
return {
|
|
84
|
+
success: false,
|
|
85
|
+
requestId: request.requestId,
|
|
86
|
+
error,
|
|
87
|
+
latencyMs: 0,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
const resilient = this.resilientProviders.get(provider.providerId);
|
|
91
|
+
if (!resilient) {
|
|
92
|
+
// Fallback to direct call if no circuit breaker setup
|
|
93
|
+
return provider.complete(request);
|
|
94
|
+
}
|
|
95
|
+
// Check rate limit
|
|
96
|
+
const rateLimitResult = await this.rateLimiter.acquire();
|
|
97
|
+
if (!rateLimitResult.acquired) {
|
|
98
|
+
const error = {
|
|
99
|
+
category: 'rate_limit',
|
|
100
|
+
message: rateLimitResult.reason === 'queue-full'
|
|
101
|
+
? 'Rate limit queue is full'
|
|
102
|
+
: rateLimitResult.reason === 'timeout'
|
|
103
|
+
? 'Rate limit queue timeout'
|
|
104
|
+
: 'Rate limit exceeded',
|
|
105
|
+
shouldRetry: true,
|
|
106
|
+
shouldFallback: false,
|
|
107
|
+
retryAfterMs: rateLimitResult.retryAfterMs ?? RETRY_DELAY_DEFAULT,
|
|
108
|
+
originalError: undefined,
|
|
109
|
+
};
|
|
110
|
+
return {
|
|
111
|
+
success: false,
|
|
112
|
+
requestId: request.requestId,
|
|
113
|
+
error,
|
|
114
|
+
latencyMs: Date.now() - startTime,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
// Execute with circuit breaker protection
|
|
118
|
+
try {
|
|
119
|
+
const response = await resilient.circuitBreaker.execute(async () => {
|
|
120
|
+
const result = await provider.complete(request);
|
|
121
|
+
// Throw error for failed responses that should trip the circuit breaker
|
|
122
|
+
// This ensures the circuit breaker tracks provider failures, not just exceptions
|
|
123
|
+
if (!result.success && result.error?.shouldFallback) {
|
|
124
|
+
const error = new Error(result.error.message);
|
|
125
|
+
error.response = result;
|
|
126
|
+
throw error;
|
|
127
|
+
}
|
|
128
|
+
return result;
|
|
129
|
+
});
|
|
130
|
+
// Record success metrics
|
|
131
|
+
if (this.metrics && response.success) {
|
|
132
|
+
this.metrics.recordRequest({
|
|
133
|
+
timestamp: new Date().toISOString(),
|
|
134
|
+
providerId: provider.providerId,
|
|
135
|
+
operation: 'complete',
|
|
136
|
+
success: true,
|
|
137
|
+
durationMs: response.latencyMs,
|
|
138
|
+
inputTokens: response.usage?.inputTokens,
|
|
139
|
+
outputTokens: response.usage?.outputTokens,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
else if (this.metrics && !response.success) {
|
|
143
|
+
this.metrics.recordRequest({
|
|
144
|
+
timestamp: new Date().toISOString(),
|
|
145
|
+
providerId: provider.providerId,
|
|
146
|
+
operation: 'complete',
|
|
147
|
+
success: false,
|
|
148
|
+
durationMs: response.latencyMs,
|
|
149
|
+
errorCode: response.error?.category,
|
|
150
|
+
});
|
|
151
|
+
if (response.error) {
|
|
152
|
+
this.metrics.recordError({
|
|
153
|
+
timestamp: new Date().toISOString(),
|
|
154
|
+
code: response.error.category,
|
|
155
|
+
message: response.error.message,
|
|
156
|
+
providerId: provider.providerId,
|
|
157
|
+
operation: 'complete',
|
|
158
|
+
recoverable: response.error.shouldRetry,
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return response;
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
const latencyMs = Date.now() - startTime;
|
|
166
|
+
// Check if this is a provider failure (has attached response)
|
|
167
|
+
// We know it's a CompletionFailure because we only throw when success: false
|
|
168
|
+
const errorWithResponse = error;
|
|
169
|
+
if (errorWithResponse.response !== undefined && !errorWithResponse.response.success) {
|
|
170
|
+
// Return the original failed response - circuit breaker already recorded the failure
|
|
171
|
+
const response = errorWithResponse.response;
|
|
172
|
+
// Record failure metrics
|
|
173
|
+
if (this.metrics) {
|
|
174
|
+
this.metrics.recordRequest({
|
|
175
|
+
timestamp: new Date().toISOString(),
|
|
176
|
+
providerId: provider.providerId,
|
|
177
|
+
operation: 'complete',
|
|
178
|
+
success: false,
|
|
179
|
+
durationMs: response.latencyMs,
|
|
180
|
+
errorCode: response.error.category,
|
|
181
|
+
});
|
|
182
|
+
this.metrics.recordError({
|
|
183
|
+
timestamp: new Date().toISOString(),
|
|
184
|
+
code: response.error.category,
|
|
185
|
+
message: response.error.message,
|
|
186
|
+
providerId: provider.providerId,
|
|
187
|
+
operation: 'complete',
|
|
188
|
+
recoverable: response.error.shouldRetry,
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
return response;
|
|
192
|
+
}
|
|
193
|
+
// Record failure metrics for circuit breaker errors
|
|
194
|
+
if (this.metrics) {
|
|
195
|
+
this.metrics.recordRequest({
|
|
196
|
+
timestamp: new Date().toISOString(),
|
|
197
|
+
providerId: provider.providerId,
|
|
198
|
+
operation: 'complete',
|
|
199
|
+
success: false,
|
|
200
|
+
durationMs: latencyMs,
|
|
201
|
+
errorCode: 'circuit_open',
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
// Circuit breaker is open
|
|
205
|
+
const classifiedError = {
|
|
206
|
+
category: 'server',
|
|
207
|
+
message: error instanceof Error ? error.message : 'Circuit breaker is open',
|
|
208
|
+
shouldRetry: true,
|
|
209
|
+
shouldFallback: true,
|
|
210
|
+
retryAfterMs: CIRCUIT_RESET_TIMEOUT,
|
|
211
|
+
originalError: error instanceof Error ? error : undefined,
|
|
212
|
+
};
|
|
213
|
+
return {
|
|
214
|
+
success: false,
|
|
215
|
+
requestId: request.requestId,
|
|
216
|
+
error: classifiedError,
|
|
217
|
+
latencyMs,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Gets provider health status including circuit breaker state
|
|
223
|
+
*/
|
|
224
|
+
getProviderHealth(providerId) {
|
|
225
|
+
const resilient = this.resilientProviders.get(providerId);
|
|
226
|
+
return {
|
|
227
|
+
provider: resilient?.provider,
|
|
228
|
+
circuitState: resilient?.circuitBreaker.state,
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Gets metrics snapshot
|
|
233
|
+
*/
|
|
234
|
+
getMetrics() {
|
|
235
|
+
return this.metrics?.getStats();
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Gets rate limiter stats
|
|
239
|
+
*/
|
|
240
|
+
getRateLimiterStats() {
|
|
241
|
+
return this.rateLimiter.getStats();
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Resets circuit breaker for a provider
|
|
245
|
+
*/
|
|
246
|
+
resetCircuitBreaker(providerId) {
|
|
247
|
+
const resilient = this.resilientProviders.get(providerId);
|
|
248
|
+
resilient?.circuitBreaker.reset();
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Resets all circuit breakers
|
|
252
|
+
*/
|
|
253
|
+
resetAllCircuitBreakers() {
|
|
254
|
+
for (const resilient of this.resilientProviders.values()) {
|
|
255
|
+
resilient.circuitBreaker.reset();
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Checks health of all providers
|
|
260
|
+
*/
|
|
261
|
+
async checkAllHealth() {
|
|
262
|
+
return this.baseRegistry.checkAllHealth();
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Gets all provider IDs
|
|
266
|
+
*/
|
|
267
|
+
getProviderIds() {
|
|
268
|
+
return this.baseRegistry.getProviderIds();
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Gets all models
|
|
272
|
+
*/
|
|
273
|
+
getAllModels() {
|
|
274
|
+
return this.baseRegistry.getAllModels();
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Checks if model exists
|
|
278
|
+
*/
|
|
279
|
+
hasModel(model) {
|
|
280
|
+
return this.baseRegistry.hasModel(model);
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Gets the underlying base registry
|
|
284
|
+
*/
|
|
285
|
+
get base() {
|
|
286
|
+
return this.baseRegistry;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Creates a resilient provider registry with default providers
|
|
291
|
+
*/
|
|
292
|
+
export function createResilientProviderRegistry(config) {
|
|
293
|
+
const baseRegistry = createBaseRegistry();
|
|
294
|
+
return new ResilientProviderRegistry(baseRegistry, config);
|
|
295
|
+
}
|
|
296
|
+
//# sourceMappingURL=resilient-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resilient-registry.js","sourceRoot":"","sources":["../src/resilient-registry.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider adapter types (CLI-based)
|
|
3
|
+
*
|
|
4
|
+
* DESIGN: AutomatosX does NOT manage credentials.
|
|
5
|
+
* Each provider CLI handles its own authentication:
|
|
6
|
+
* - claude, gemini, codex: Official CLIs with built-in auth
|
|
7
|
+
* - qwen: Qwen CLI with DashScope auth
|
|
8
|
+
* - ax-glm: GLM CLI wrapper (handles ZAI_API_KEY)
|
|
9
|
+
* - ax-grok: Grok CLI wrapper (handles XAI_API_KEY)
|
|
10
|
+
*
|
|
11
|
+
* INV-MEM-003: Adapters must not accept domain objects directly
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Message role in a conversation
|
|
15
|
+
*/
|
|
16
|
+
export type MessageRole = 'user' | 'assistant' | 'system';
|
|
17
|
+
/**
|
|
18
|
+
* A message in a conversation
|
|
19
|
+
*/
|
|
20
|
+
export interface Message {
|
|
21
|
+
role: MessageRole;
|
|
22
|
+
content: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Request to generate a completion
|
|
26
|
+
*/
|
|
27
|
+
export interface CompletionRequest {
|
|
28
|
+
/**
|
|
29
|
+
* Unique request identifier
|
|
30
|
+
*/
|
|
31
|
+
requestId: string;
|
|
32
|
+
/**
|
|
33
|
+
* The model to use for completion
|
|
34
|
+
*/
|
|
35
|
+
model: string;
|
|
36
|
+
/**
|
|
37
|
+
* Messages to send to the model
|
|
38
|
+
*/
|
|
39
|
+
messages: Message[];
|
|
40
|
+
/**
|
|
41
|
+
* Maximum tokens to generate
|
|
42
|
+
*/
|
|
43
|
+
maxTokens?: number | undefined;
|
|
44
|
+
/**
|
|
45
|
+
* Temperature for sampling (0-1)
|
|
46
|
+
*/
|
|
47
|
+
temperature?: number | undefined;
|
|
48
|
+
/**
|
|
49
|
+
* Stop sequences
|
|
50
|
+
*/
|
|
51
|
+
stopSequences?: string[] | undefined;
|
|
52
|
+
/**
|
|
53
|
+
* System prompt (if not included in messages)
|
|
54
|
+
*/
|
|
55
|
+
systemPrompt?: string | undefined;
|
|
56
|
+
/**
|
|
57
|
+
* Request timeout in milliseconds
|
|
58
|
+
*/
|
|
59
|
+
timeout?: number | undefined;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Token usage information
|
|
63
|
+
*/
|
|
64
|
+
export interface TokenUsage {
|
|
65
|
+
inputTokens: number;
|
|
66
|
+
outputTokens: number;
|
|
67
|
+
totalTokens: number;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Successful completion response
|
|
71
|
+
*/
|
|
72
|
+
export interface CompletionSuccess {
|
|
73
|
+
success: true;
|
|
74
|
+
requestId: string;
|
|
75
|
+
content: string;
|
|
76
|
+
model: string;
|
|
77
|
+
usage: TokenUsage;
|
|
78
|
+
stopReason: 'end_turn' | 'max_tokens' | 'stop_sequence' | 'unknown';
|
|
79
|
+
latencyMs: number;
|
|
80
|
+
cached: boolean;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Failed completion response
|
|
84
|
+
*/
|
|
85
|
+
export interface CompletionFailure {
|
|
86
|
+
success: false;
|
|
87
|
+
requestId: string;
|
|
88
|
+
error: ClassifiedError;
|
|
89
|
+
latencyMs: number;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Completion response (discriminated union)
|
|
93
|
+
*/
|
|
94
|
+
export type CompletionResponse = CompletionSuccess | CompletionFailure;
|
|
95
|
+
/**
|
|
96
|
+
* Error categories for classification
|
|
97
|
+
*/
|
|
98
|
+
export type ErrorCategory = 'authentication' | 'quota' | 'rate_limit' | 'validation' | 'network' | 'server' | 'timeout' | 'not_found' | 'configuration' | 'unknown';
|
|
99
|
+
/**
|
|
100
|
+
* Classified error with retry/fallback guidance
|
|
101
|
+
*/
|
|
102
|
+
export interface ClassifiedError {
|
|
103
|
+
category: ErrorCategory;
|
|
104
|
+
message: string;
|
|
105
|
+
shouldRetry: boolean;
|
|
106
|
+
shouldFallback: boolean;
|
|
107
|
+
retryAfterMs: number | null;
|
|
108
|
+
originalError: unknown;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Health check result
|
|
112
|
+
*/
|
|
113
|
+
export interface HealthCheckResult {
|
|
114
|
+
providerId: string;
|
|
115
|
+
timestamp: number;
|
|
116
|
+
status: 'healthy' | 'degraded' | 'unhealthy';
|
|
117
|
+
latencyMs: number;
|
|
118
|
+
details: {
|
|
119
|
+
cliAvailable: boolean;
|
|
120
|
+
cliCommand: string;
|
|
121
|
+
version?: string | undefined;
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Model configuration
|
|
126
|
+
*/
|
|
127
|
+
export interface ModelConfig {
|
|
128
|
+
modelId: string;
|
|
129
|
+
name: string;
|
|
130
|
+
contextWindow: number;
|
|
131
|
+
capabilities: ('text' | 'code' | 'vision')[];
|
|
132
|
+
isDefault?: boolean | undefined;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* CLI provider configuration
|
|
136
|
+
* No API keys - CLIs handle their own authentication
|
|
137
|
+
*/
|
|
138
|
+
export interface CLIProviderConfig {
|
|
139
|
+
/**
|
|
140
|
+
* Provider identifier (e.g., 'claude', 'gemini')
|
|
141
|
+
*/
|
|
142
|
+
providerId: string;
|
|
143
|
+
/**
|
|
144
|
+
* CLI command name (e.g., 'claude', 'gemini')
|
|
145
|
+
*/
|
|
146
|
+
command: string;
|
|
147
|
+
/**
|
|
148
|
+
* Default CLI arguments
|
|
149
|
+
*/
|
|
150
|
+
args: readonly string[];
|
|
151
|
+
/**
|
|
152
|
+
* Environment variables to set (non-secret)
|
|
153
|
+
*/
|
|
154
|
+
env: Readonly<Record<string, string>>;
|
|
155
|
+
/**
|
|
156
|
+
* Expected output format
|
|
157
|
+
*/
|
|
158
|
+
outputFormat: 'json' | 'stream-json' | 'text';
|
|
159
|
+
/**
|
|
160
|
+
* Default timeout in milliseconds
|
|
161
|
+
*/
|
|
162
|
+
timeout: number;
|
|
163
|
+
/**
|
|
164
|
+
* Available models
|
|
165
|
+
*/
|
|
166
|
+
models: readonly ModelConfig[];
|
|
167
|
+
/**
|
|
168
|
+
* How the prompt is passed to the CLI
|
|
169
|
+
* - 'stdin': Write prompt to stdin (default for claude, gemini, codex)
|
|
170
|
+
* - 'arg': Pass prompt as command-line argument (for ax-glm, ax-grok)
|
|
171
|
+
*/
|
|
172
|
+
promptStyle?: 'stdin' | 'arg' | undefined;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* LLM Provider interface (CLI-based)
|
|
176
|
+
*/
|
|
177
|
+
export interface LLMProvider {
|
|
178
|
+
/**
|
|
179
|
+
* Provider identifier (e.g., 'claude', 'gemini', 'ax-glm', 'ax-grok')
|
|
180
|
+
*/
|
|
181
|
+
readonly providerId: string;
|
|
182
|
+
/**
|
|
183
|
+
* Provider configuration
|
|
184
|
+
*/
|
|
185
|
+
readonly config: CLIProviderConfig;
|
|
186
|
+
/**
|
|
187
|
+
* Generates a completion
|
|
188
|
+
*/
|
|
189
|
+
complete(request: CompletionRequest): Promise<CompletionResponse>;
|
|
190
|
+
/**
|
|
191
|
+
* Checks if the provider is available and healthy
|
|
192
|
+
*/
|
|
193
|
+
checkHealth(): Promise<HealthCheckResult>;
|
|
194
|
+
/**
|
|
195
|
+
* Checks if a model is supported
|
|
196
|
+
*/
|
|
197
|
+
supportsModel(model: string): boolean;
|
|
198
|
+
/**
|
|
199
|
+
* Gets available models
|
|
200
|
+
*/
|
|
201
|
+
getModels(): readonly ModelConfig[];
|
|
202
|
+
/**
|
|
203
|
+
* Checks if the provider is available
|
|
204
|
+
*/
|
|
205
|
+
isAvailable(): Promise<boolean>;
|
|
206
|
+
/**
|
|
207
|
+
* Estimates token count for text (approximate)
|
|
208
|
+
*/
|
|
209
|
+
estimateTokens(text: string): number;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Result of spawning a CLI process
|
|
213
|
+
*/
|
|
214
|
+
export interface SpawnResult {
|
|
215
|
+
stdout: string;
|
|
216
|
+
stderr: string;
|
|
217
|
+
exitCode: number;
|
|
218
|
+
timedOut: boolean;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Options for spawning a CLI process
|
|
222
|
+
*/
|
|
223
|
+
export interface SpawnOptions {
|
|
224
|
+
command: string;
|
|
225
|
+
args: readonly string[];
|
|
226
|
+
stdin: string;
|
|
227
|
+
env: Readonly<Record<string, string | undefined>>;
|
|
228
|
+
timeout: number;
|
|
229
|
+
cwd?: string | undefined;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Parsed output from CLI
|
|
233
|
+
*/
|
|
234
|
+
export interface ParsedOutput {
|
|
235
|
+
content: string;
|
|
236
|
+
metadata?: Record<string, unknown> | undefined;
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,EAAE,OAAO,EAAE,CAAC;IAEpB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAE/B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEjC;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAErC;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAElC;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,IAAI,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,UAAU,CAAC;IAClB,UAAU,EAAE,UAAU,GAAG,YAAY,GAAG,eAAe,GAAG,SAAS,CAAC;IACpE,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,KAAK,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,eAAe,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;AAEvE;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,gBAAgB,GAChB,OAAO,GACP,YAAY,GACZ,YAAY,GACZ,SAAS,GACT,QAAQ,GACR,SAAS,GACT,WAAW,GACX,eAAe,GACf,SAAS,CAAC;AAEd;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE;QACP,YAAY,EAAE,OAAO,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC9B,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC;IAC7C,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IAExB;;OAEG;IACH,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAEtC;;OAEG;IACH,YAAY,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM,CAAC;IAE9C;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IAE/B;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC;CAC3C;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAEnC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAElE;;OAEG;IACH,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE1C;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAEtC;;OAEG;IACH,SAAS,IAAI,SAAS,WAAW,EAAE,CAAC;IAEpC;;OAEG;IACH,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAEhC;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CAChD"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider adapter types (CLI-based)
|
|
3
|
+
*
|
|
4
|
+
* DESIGN: AutomatosX does NOT manage credentials.
|
|
5
|
+
* Each provider CLI handles its own authentication:
|
|
6
|
+
* - claude, gemini, codex: Official CLIs with built-in auth
|
|
7
|
+
* - qwen: Qwen CLI with DashScope auth
|
|
8
|
+
* - ax-glm: GLM CLI wrapper (handles ZAI_API_KEY)
|
|
9
|
+
* - ax-grok: Grok CLI wrapper (handles XAI_API_KEY)
|
|
10
|
+
*
|
|
11
|
+
* INV-MEM-003: Adapters must not accept domain objects directly
|
|
12
|
+
*/
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG"}
|
package/package.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@defai.digital/provider-adapters",
|
|
3
|
+
"version": "13.0.3",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"author": "DEFAI Private Limited",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "https://github.com/defai-digital/automatosx.git",
|
|
10
|
+
"directory": "packages/adapters/providers"
|
|
11
|
+
},
|
|
12
|
+
"homepage": "https://github.com/defai-digital/automatosx#readme",
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/defai-digital/automatosx/issues"
|
|
15
|
+
},
|
|
16
|
+
"exports": {
|
|
17
|
+
".": {
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"import": "./dist/index.js"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"files": [
|
|
23
|
+
"dist"
|
|
24
|
+
],
|
|
25
|
+
"engines": {
|
|
26
|
+
"node": ">=20.0.0"
|
|
27
|
+
},
|
|
28
|
+
"publishConfig": {
|
|
29
|
+
"access": "public"
|
|
30
|
+
},
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"@defai.digital/contracts": "13.0.3",
|
|
33
|
+
"@defai.digital/routing-engine": "13.0.3",
|
|
34
|
+
"@defai.digital/resilience-domain": "13.0.3"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"typescript": "^5.7.2"
|
|
38
|
+
},
|
|
39
|
+
"scripts": {
|
|
40
|
+
"build": "tsc --build",
|
|
41
|
+
"clean": "rm -rf dist"
|
|
42
|
+
}
|
|
43
|
+
}
|