@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.
Files changed (62) hide show
  1. package/LICENSE +214 -0
  2. package/dist/cli-adapter.d.ts +23 -0
  3. package/dist/cli-adapter.d.ts.map +1 -0
  4. package/dist/cli-adapter.js +151 -0
  5. package/dist/cli-adapter.js.map +1 -0
  6. package/dist/error-classifier.d.ts +34 -0
  7. package/dist/error-classifier.d.ts.map +1 -0
  8. package/dist/error-classifier.js +257 -0
  9. package/dist/error-classifier.js.map +1 -0
  10. package/dist/index.d.ts +19 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +25 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/output-parser.d.ts +37 -0
  15. package/dist/output-parser.d.ts.map +1 -0
  16. package/dist/output-parser.js +251 -0
  17. package/dist/output-parser.js.map +1 -0
  18. package/dist/process-manager.d.ts +43 -0
  19. package/dist/process-manager.d.ts.map +1 -0
  20. package/dist/process-manager.js +184 -0
  21. package/dist/process-manager.js.map +1 -0
  22. package/dist/providers/claude.d.ts +18 -0
  23. package/dist/providers/claude.d.ts.map +1 -0
  24. package/dist/providers/claude.js +39 -0
  25. package/dist/providers/claude.js.map +1 -0
  26. package/dist/providers/codex.d.ts +18 -0
  27. package/dist/providers/codex.d.ts.map +1 -0
  28. package/dist/providers/codex.js +39 -0
  29. package/dist/providers/codex.js.map +1 -0
  30. package/dist/providers/gemini.d.ts +18 -0
  31. package/dist/providers/gemini.d.ts.map +1 -0
  32. package/dist/providers/gemini.js +39 -0
  33. package/dist/providers/gemini.js.map +1 -0
  34. package/dist/providers/glm.d.ts +18 -0
  35. package/dist/providers/glm.d.ts.map +1 -0
  36. package/dist/providers/glm.js +40 -0
  37. package/dist/providers/glm.js.map +1 -0
  38. package/dist/providers/grok.d.ts +18 -0
  39. package/dist/providers/grok.d.ts.map +1 -0
  40. package/dist/providers/grok.js +40 -0
  41. package/dist/providers/grok.js.map +1 -0
  42. package/dist/providers/index.d.ts +32 -0
  43. package/dist/providers/index.d.ts.map +1 -0
  44. package/dist/providers/index.js +49 -0
  45. package/dist/providers/index.js.map +1 -0
  46. package/dist/providers/qwen.d.ts +18 -0
  47. package/dist/providers/qwen.d.ts.map +1 -0
  48. package/dist/providers/qwen.js +39 -0
  49. package/dist/providers/qwen.js.map +1 -0
  50. package/dist/registry.d.ts +73 -0
  51. package/dist/registry.d.ts.map +1 -0
  52. package/dist/registry.js +145 -0
  53. package/dist/registry.js.map +1 -0
  54. package/dist/resilient-registry.d.ts +134 -0
  55. package/dist/resilient-registry.d.ts.map +1 -0
  56. package/dist/resilient-registry.js +296 -0
  57. package/dist/resilient-registry.js.map +1 -0
  58. package/dist/types.d.ts +238 -0
  59. package/dist/types.d.ts.map +1 -0
  60. package/dist/types.js +14 -0
  61. package/dist/types.js.map +1 -0
  62. package/package.json +43 -0
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Qwen CLI provider configuration
3
+ *
4
+ * CLI: qwen
5
+ * Auth: Handled entirely by Qwen CLI (DashScope auth)
6
+ * Model: Uses CLI's default model (we don't specify)
7
+ *
8
+ * @see https://github.com/QwenLM/qwen-code
9
+ */
10
+ import { TIMEOUT_PROVIDER_DEFAULT } from '@defai.digital/contracts';
11
+ /**
12
+ * Qwen provider configuration
13
+ *
14
+ * Design: AutomatosX does NOT manage credentials or model selection.
15
+ * The Qwen CLI handles all authentication and uses its configured default model.
16
+ */
17
+ export const qwenConfig = {
18
+ providerId: 'qwen',
19
+ command: 'qwen',
20
+ args: [],
21
+ env: {
22
+ // Non-interactive mode flags
23
+ TERM: 'dumb',
24
+ NO_COLOR: '1',
25
+ CI: 'true',
26
+ },
27
+ outputFormat: 'text',
28
+ timeout: TIMEOUT_PROVIDER_DEFAULT,
29
+ models: [
30
+ {
31
+ modelId: 'default',
32
+ name: 'Qwen Default',
33
+ contextWindow: 131000,
34
+ capabilities: ['text', 'code'],
35
+ isDefault: true,
36
+ },
37
+ ],
38
+ };
39
+ //# sourceMappingURL=qwen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qwen.js","sourceRoot":"","sources":["../../src/providers/qwen.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAGpE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAsB;IAC3C,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,MAAM;IACf,IAAI,EAAE,EAAE;IACR,GAAG,EAAE;QACH,6BAA6B;QAC7B,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,GAAG;QACb,EAAE,EAAE,MAAM;KACX;IACD,YAAY,EAAE,MAAM;IACpB,OAAO,EAAE,wBAAwB;IACjC,MAAM,EAAE;QACN;YACE,OAAO,EAAE,SAAS;YAClB,IAAI,EAAE,cAAc;YACpB,aAAa,EAAE,MAAM;YACrB,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;YAC9B,SAAS,EAAE,IAAI;SAChB;KACF;CACF,CAAC"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Provider registry for managing CLI-based LLM providers
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 with ZAI_API_KEY
9
+ * - ax-grok: Grok CLI with XAI_API_KEY
10
+ */
11
+ import type { LLMProvider, CompletionRequest, CompletionResponse, HealthCheckResult, CLIProviderConfig, ModelConfig } from './types.js';
12
+ /**
13
+ * Provider registry for managing multiple LLM providers
14
+ */
15
+ export declare class ProviderRegistry {
16
+ private readonly providers;
17
+ /**
18
+ * Registers a provider from configuration
19
+ */
20
+ registerFromConfig(config: CLIProviderConfig): void;
21
+ /**
22
+ * Registers a provider instance directly
23
+ */
24
+ register(provider: LLMProvider): void;
25
+ /**
26
+ * Gets a provider by ID
27
+ */
28
+ get(providerId: string): LLMProvider | undefined;
29
+ /**
30
+ * Gets a provider by model name
31
+ */
32
+ getByModel(model: string): LLMProvider | undefined;
33
+ /**
34
+ * Executes a completion request, routing to the appropriate provider
35
+ */
36
+ complete(request: CompletionRequest): Promise<CompletionResponse>;
37
+ /**
38
+ * Checks health of all registered providers
39
+ */
40
+ checkAllHealth(): Promise<Map<string, HealthCheckResult>>;
41
+ /**
42
+ * Gets all providers that are currently available
43
+ */
44
+ getAvailableProviders(): Promise<LLMProvider[]>;
45
+ /**
46
+ * Gets all registered provider IDs
47
+ */
48
+ getProviderIds(): string[];
49
+ /**
50
+ * Gets all available models across all providers
51
+ */
52
+ getAllModels(): {
53
+ providerId: string;
54
+ model: ModelConfig;
55
+ }[];
56
+ /**
57
+ * Checks if a model is available in any registered provider
58
+ */
59
+ hasModel(model: string): boolean;
60
+ /**
61
+ * Gets the number of registered providers
62
+ */
63
+ get size(): number;
64
+ }
65
+ /**
66
+ * Creates a provider registry with all default providers registered
67
+ */
68
+ export declare function createProviderRegistry(): ProviderRegistry;
69
+ /**
70
+ * Creates an empty provider registry
71
+ */
72
+ export declare function createEmptyRegistry(): ProviderRegistry;
73
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EAEZ,MAAM,YAAY,CAAC;AAIpB;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkC;IAE5D;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAKnD;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI;IAIrC;;OAEG;IACH,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIhD;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IASlD;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAwBvE;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAc/D;;OAEG;IACG,qBAAqB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAcrD;;OAEG;IACH,cAAc,IAAI,MAAM,EAAE;IAI1B;;OAEG;IACH,YAAY,IAAI;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,WAAW,CAAA;KAAE,EAAE;IAY5D;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIhC;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,gBAAgB,CASzD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,gBAAgB,CAEtD"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Provider registry for managing CLI-based LLM providers
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 with ZAI_API_KEY
9
+ * - ax-grok: Grok CLI with XAI_API_KEY
10
+ */
11
+ import { createCLIAdapter } from './cli-adapter.js';
12
+ import { ALL_PROVIDER_CONFIGS } from './providers/index.js';
13
+ /**
14
+ * Provider registry for managing multiple LLM providers
15
+ */
16
+ export class ProviderRegistry {
17
+ providers = new Map();
18
+ /**
19
+ * Registers a provider from configuration
20
+ */
21
+ registerFromConfig(config) {
22
+ const adapter = createCLIAdapter(config);
23
+ this.providers.set(config.providerId, adapter);
24
+ }
25
+ /**
26
+ * Registers a provider instance directly
27
+ */
28
+ register(provider) {
29
+ this.providers.set(provider.providerId, provider);
30
+ }
31
+ /**
32
+ * Gets a provider by ID
33
+ */
34
+ get(providerId) {
35
+ return this.providers.get(providerId);
36
+ }
37
+ /**
38
+ * Gets a provider by model name
39
+ */
40
+ getByModel(model) {
41
+ for (const provider of this.providers.values()) {
42
+ if (provider.supportsModel(model)) {
43
+ return provider;
44
+ }
45
+ }
46
+ return undefined;
47
+ }
48
+ /**
49
+ * Executes a completion request, routing to the appropriate provider
50
+ */
51
+ async complete(request) {
52
+ const provider = this.getByModel(request.model);
53
+ if (provider === undefined) {
54
+ const error = {
55
+ category: 'not_found',
56
+ message: `No provider found for model: ${request.model}`,
57
+ shouldRetry: false,
58
+ shouldFallback: true,
59
+ retryAfterMs: null,
60
+ originalError: undefined,
61
+ };
62
+ return {
63
+ success: false,
64
+ requestId: request.requestId,
65
+ error,
66
+ latencyMs: 0,
67
+ };
68
+ }
69
+ return provider.complete(request);
70
+ }
71
+ /**
72
+ * Checks health of all registered providers
73
+ */
74
+ async checkAllHealth() {
75
+ const results = new Map();
76
+ const healthChecks = [...this.providers.entries()].map(async ([providerId, provider]) => {
77
+ const result = await provider.checkHealth();
78
+ results.set(providerId, result);
79
+ });
80
+ await Promise.all(healthChecks);
81
+ return results;
82
+ }
83
+ /**
84
+ * Gets all providers that are currently available
85
+ */
86
+ async getAvailableProviders() {
87
+ const available = [];
88
+ const checks = [...this.providers.values()].map(async (provider) => {
89
+ const isAvailable = await provider.isAvailable();
90
+ if (isAvailable) {
91
+ available.push(provider);
92
+ }
93
+ });
94
+ await Promise.all(checks);
95
+ return available;
96
+ }
97
+ /**
98
+ * Gets all registered provider IDs
99
+ */
100
+ getProviderIds() {
101
+ return [...this.providers.keys()];
102
+ }
103
+ /**
104
+ * Gets all available models across all providers
105
+ */
106
+ getAllModels() {
107
+ const models = [];
108
+ for (const provider of this.providers.values()) {
109
+ for (const model of provider.getModels()) {
110
+ models.push({ providerId: provider.providerId, model });
111
+ }
112
+ }
113
+ return models;
114
+ }
115
+ /**
116
+ * Checks if a model is available in any registered provider
117
+ */
118
+ hasModel(model) {
119
+ return this.getByModel(model) !== undefined;
120
+ }
121
+ /**
122
+ * Gets the number of registered providers
123
+ */
124
+ get size() {
125
+ return this.providers.size;
126
+ }
127
+ }
128
+ /**
129
+ * Creates a provider registry with all default providers registered
130
+ */
131
+ export function createProviderRegistry() {
132
+ const registry = new ProviderRegistry();
133
+ // Register all CLI-based providers
134
+ for (const config of ALL_PROVIDER_CONFIGS) {
135
+ registry.registerFromConfig(config);
136
+ }
137
+ return registry;
138
+ }
139
+ /**
140
+ * Creates an empty provider registry
141
+ */
142
+ export function createEmptyRegistry() {
143
+ return new ProviderRegistry();
144
+ }
145
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,134 @@
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 type { LLMProvider, CompletionRequest, CompletionResponse, HealthCheckResult, ModelConfig } from './types.js';
10
+ import { ProviderRegistry } from './registry.js';
11
+ import { type CircuitBreakerConfig, type RateLimiterConfig } from '@defai.digital/contracts/resilience/v1';
12
+ /**
13
+ * Configuration for resilient provider registry
14
+ */
15
+ export interface ResilientRegistryConfig {
16
+ /** Circuit breaker configuration (per provider) */
17
+ circuitBreaker?: Partial<CircuitBreakerConfig>;
18
+ /** Rate limiter configuration (global) */
19
+ rateLimiter?: Partial<RateLimiterConfig>;
20
+ /** Enable metrics collection */
21
+ enableMetrics?: boolean;
22
+ }
23
+ /**
24
+ * Resilient provider registry that wraps calls with circuit breaker and rate limiting
25
+ */
26
+ export declare class ResilientProviderRegistry {
27
+ private readonly baseRegistry;
28
+ private readonly resilientProviders;
29
+ private readonly rateLimiter;
30
+ private readonly metrics;
31
+ private readonly config;
32
+ constructor(baseRegistry: ProviderRegistry, config?: ResilientRegistryConfig);
33
+ private initializeProviders;
34
+ /**
35
+ * Executes a completion request with resilience patterns
36
+ */
37
+ complete(request: CompletionRequest): Promise<CompletionResponse>;
38
+ /**
39
+ * Gets provider health status including circuit breaker state
40
+ */
41
+ getProviderHealth(providerId: string): {
42
+ provider: LLMProvider | undefined;
43
+ circuitState: string | undefined;
44
+ };
45
+ /**
46
+ * Gets metrics snapshot
47
+ */
48
+ getMetrics(): {
49
+ errors: Record<string, number>;
50
+ generatedAt: string;
51
+ tokens: {
52
+ input: number;
53
+ total: number;
54
+ output: number;
55
+ };
56
+ requests: {
57
+ success: number;
58
+ total: number;
59
+ failure: number;
60
+ successRate: number;
61
+ };
62
+ timeRange: {
63
+ start: string;
64
+ end: string;
65
+ };
66
+ cost: {
67
+ estimated: number;
68
+ perRequest: number;
69
+ };
70
+ latency: {
71
+ count: number;
72
+ min: number;
73
+ max: number;
74
+ p50: number;
75
+ p95: number;
76
+ p99: number;
77
+ mean: number;
78
+ };
79
+ byProvider: Record<string, {
80
+ tokens: number;
81
+ requests: number;
82
+ failures: number;
83
+ latencyP50: number;
84
+ }>;
85
+ } | undefined;
86
+ /**
87
+ * Gets rate limiter stats
88
+ */
89
+ getRateLimiterStats(): {
90
+ windowStart: string;
91
+ queueSize: number;
92
+ tokensUsed: number;
93
+ requestsAllowed: number;
94
+ requestsRejected: number;
95
+ availableCapacity: number;
96
+ nextRefillMs: number;
97
+ };
98
+ /**
99
+ * Resets circuit breaker for a provider
100
+ */
101
+ resetCircuitBreaker(providerId: string): void;
102
+ /**
103
+ * Resets all circuit breakers
104
+ */
105
+ resetAllCircuitBreakers(): void;
106
+ /**
107
+ * Checks health of all providers
108
+ */
109
+ checkAllHealth(): Promise<Map<string, HealthCheckResult>>;
110
+ /**
111
+ * Gets all provider IDs
112
+ */
113
+ getProviderIds(): string[];
114
+ /**
115
+ * Gets all models
116
+ */
117
+ getAllModels(): {
118
+ providerId: string;
119
+ model: ModelConfig;
120
+ }[];
121
+ /**
122
+ * Checks if model exists
123
+ */
124
+ hasModel(model: string): boolean;
125
+ /**
126
+ * Gets the underlying base registry
127
+ */
128
+ get base(): ProviderRegistry;
129
+ }
130
+ /**
131
+ * Creates a resilient provider registry with default providers
132
+ */
133
+ export declare function createResilientProviderRegistry(config?: ResilientRegistryConfig): ResilientProviderRegistry;
134
+ //# sourceMappingURL=resilient-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resilient-registry.d.ts","sourceRoot":"","sources":["../src/resilient-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,WAAW,EAEZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,gBAAgB,EAAgD,MAAM,eAAe,CAAC;AAS/F,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACvB,MAAM,wCAAwC,CAAC;AAUhD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,mDAAmD;IACnD,cAAc,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAE/C,0CAA0C;IAC1C,WAAW,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAEzC,gCAAgC;IAChC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AA0BD;;GAEG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmB;IAChD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAwC;IAC3E,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;gBAGzD,YAAY,EAAE,gBAAgB,EAC9B,MAAM,CAAC,EAAE,uBAAuB;IA0BlC,OAAO,CAAC,mBAAmB;IAY3B;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAqKvE;;OAEG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG;QACrC,QAAQ,EAAE,WAAW,GAAG,SAAS,CAAC;QAClC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;KAClC;IAQD;;OAEG;IACH,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAIV;;OAEG;IACH,mBAAmB;;;;;;;;;IAInB;;OAEG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAK7C;;OAEG;IACH,uBAAuB,IAAI,IAAI;IAM/B;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAI/D;;OAEG;IACH,cAAc,IAAI,MAAM,EAAE;IAI1B;;OAEG;IACH,YAAY,IAAI;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,WAAW,CAAA;KAAE,EAAE;IAI5D;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIhC;;OAEG;IACH,IAAI,IAAI,IAAI,gBAAgB,CAE3B;CACF;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAC7C,MAAM,CAAC,EAAE,uBAAuB,GAC/B,yBAAyB,CAG3B"}