@ai-orchestration/core 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) hide show
  1. package/README.md +145 -5
  2. package/dist/cjs/core/errors.d.ts +21 -0
  3. package/dist/cjs/core/errors.d.ts.map +1 -0
  4. package/dist/cjs/core/errors.js +40 -0
  5. package/dist/cjs/core/errors.js.map +1 -0
  6. package/dist/cjs/core/interfaces.d.ts +166 -0
  7. package/dist/cjs/core/interfaces.d.ts.map +1 -0
  8. package/dist/cjs/core/interfaces.js +6 -0
  9. package/dist/cjs/core/interfaces.js.map +1 -0
  10. package/dist/cjs/core/metrics.d.ts +161 -0
  11. package/dist/cjs/core/metrics.d.ts.map +1 -0
  12. package/dist/cjs/core/metrics.js +282 -0
  13. package/dist/cjs/core/metrics.js.map +1 -0
  14. package/dist/cjs/core/orchestrator.d.ts +97 -0
  15. package/dist/cjs/core/orchestrator.d.ts.map +1 -0
  16. package/dist/cjs/core/orchestrator.js +402 -0
  17. package/dist/cjs/core/orchestrator.js.map +1 -0
  18. package/dist/cjs/core/types.d.ts +111 -0
  19. package/dist/cjs/core/types.d.ts.map +1 -0
  20. package/dist/cjs/core/types.js +6 -0
  21. package/dist/cjs/core/types.js.map +1 -0
  22. package/dist/cjs/factory/index.d.ts +14 -0
  23. package/dist/cjs/factory/index.d.ts.map +1 -0
  24. package/dist/cjs/factory/index.js +208 -0
  25. package/dist/cjs/factory/index.js.map +1 -0
  26. package/dist/cjs/index.d.ts +16 -0
  27. package/dist/cjs/index.d.ts.map +1 -0
  28. package/dist/cjs/index.js +37 -0
  29. package/dist/cjs/index.js.map +1 -0
  30. package/dist/cjs/providers/base.d.ts +30 -0
  31. package/dist/cjs/providers/base.d.ts.map +1 -0
  32. package/dist/cjs/providers/base.js +35 -0
  33. package/dist/cjs/providers/base.js.map +1 -0
  34. package/dist/cjs/providers/cerebras.d.ts +26 -0
  35. package/dist/cjs/providers/cerebras.d.ts.map +1 -0
  36. package/dist/cjs/providers/cerebras.js +207 -0
  37. package/dist/cjs/providers/cerebras.js.map +1 -0
  38. package/dist/cjs/providers/gemini.d.ts +26 -0
  39. package/dist/cjs/providers/gemini.d.ts.map +1 -0
  40. package/dist/cjs/providers/gemini.js +180 -0
  41. package/dist/cjs/providers/gemini.js.map +1 -0
  42. package/dist/cjs/providers/groq.d.ts +26 -0
  43. package/dist/cjs/providers/groq.d.ts.map +1 -0
  44. package/dist/cjs/providers/groq.js +242 -0
  45. package/dist/cjs/providers/groq.js.map +1 -0
  46. package/dist/cjs/providers/index.d.ts +15 -0
  47. package/dist/cjs/providers/index.d.ts.map +1 -0
  48. package/dist/cjs/providers/index.js +19 -0
  49. package/dist/cjs/providers/index.js.map +1 -0
  50. package/dist/cjs/providers/local.d.ts +27 -0
  51. package/dist/cjs/providers/local.d.ts.map +1 -0
  52. package/dist/cjs/providers/local.js +205 -0
  53. package/dist/cjs/providers/local.js.map +1 -0
  54. package/dist/cjs/providers/openrouter.d.ts +26 -0
  55. package/dist/cjs/providers/openrouter.d.ts.map +1 -0
  56. package/dist/cjs/providers/openrouter.js +187 -0
  57. package/dist/cjs/providers/openrouter.js.map +1 -0
  58. package/dist/cjs/strategies/base.d.ts +16 -0
  59. package/dist/cjs/strategies/base.d.ts.map +1 -0
  60. package/dist/cjs/strategies/base.js +25 -0
  61. package/dist/cjs/strategies/base.js.map +1 -0
  62. package/dist/cjs/strategies/fallback.d.ts +14 -0
  63. package/dist/cjs/strategies/fallback.d.ts.map +1 -0
  64. package/dist/cjs/strategies/fallback.js +32 -0
  65. package/dist/cjs/strategies/fallback.js.map +1 -0
  66. package/dist/cjs/strategies/health-aware.d.ts +20 -0
  67. package/dist/cjs/strategies/health-aware.d.ts.map +1 -0
  68. package/dist/cjs/strategies/health-aware.js +108 -0
  69. package/dist/cjs/strategies/health-aware.js.map +1 -0
  70. package/dist/cjs/strategies/index.d.ts +14 -0
  71. package/dist/cjs/strategies/index.d.ts.map +1 -0
  72. package/dist/cjs/strategies/index.js +19 -0
  73. package/dist/cjs/strategies/index.js.map +1 -0
  74. package/dist/cjs/strategies/priority.d.ts +18 -0
  75. package/dist/cjs/strategies/priority.d.ts.map +1 -0
  76. package/dist/cjs/strategies/priority.js +39 -0
  77. package/dist/cjs/strategies/priority.js.map +1 -0
  78. package/dist/cjs/strategies/round-robin.d.ts +10 -0
  79. package/dist/cjs/strategies/round-robin.d.ts.map +1 -0
  80. package/dist/cjs/strategies/round-robin.js +28 -0
  81. package/dist/cjs/strategies/round-robin.js.map +1 -0
  82. package/dist/cjs/strategies/weighted.d.ts +20 -0
  83. package/dist/cjs/strategies/weighted.d.ts.map +1 -0
  84. package/dist/cjs/strategies/weighted.js +61 -0
  85. package/dist/cjs/strategies/weighted.js.map +1 -0
  86. package/dist/core/interfaces.d.ts +80 -1
  87. package/dist/core/interfaces.d.ts.map +1 -1
  88. package/dist/core/metrics.d.ts +161 -0
  89. package/dist/core/metrics.d.ts.map +1 -0
  90. package/dist/core/metrics.js +276 -0
  91. package/dist/core/metrics.js.map +1 -0
  92. package/dist/core/orchestrator.d.ts +45 -3
  93. package/dist/core/orchestrator.d.ts.map +1 -1
  94. package/dist/core/orchestrator.js +271 -11
  95. package/dist/core/orchestrator.js.map +1 -1
  96. package/dist/core/types.d.ts +39 -0
  97. package/dist/core/types.d.ts.map +1 -1
  98. package/dist/esm/core/errors.d.ts +21 -0
  99. package/dist/esm/core/errors.d.ts.map +1 -0
  100. package/dist/esm/core/errors.js +33 -0
  101. package/dist/esm/core/errors.js.map +1 -0
  102. package/dist/esm/core/interfaces.d.ts +166 -0
  103. package/dist/esm/core/interfaces.d.ts.map +1 -0
  104. package/dist/esm/core/interfaces.js +5 -0
  105. package/dist/esm/core/interfaces.js.map +1 -0
  106. package/dist/esm/core/metrics.d.ts +161 -0
  107. package/dist/esm/core/metrics.d.ts.map +1 -0
  108. package/dist/esm/core/metrics.js +278 -0
  109. package/dist/esm/core/metrics.js.map +1 -0
  110. package/dist/esm/core/orchestrator.d.ts +97 -0
  111. package/dist/esm/core/orchestrator.d.ts.map +1 -0
  112. package/dist/esm/core/orchestrator.js +398 -0
  113. package/dist/esm/core/orchestrator.js.map +1 -0
  114. package/dist/esm/core/types.d.ts +111 -0
  115. package/dist/esm/core/types.d.ts.map +1 -0
  116. package/dist/esm/core/types.js +5 -0
  117. package/dist/esm/core/types.js.map +1 -0
  118. package/dist/esm/factory/index.d.ts +14 -0
  119. package/dist/esm/factory/index.d.ts.map +1 -0
  120. package/dist/esm/factory/index.js +204 -0
  121. package/dist/esm/factory/index.js.map +1 -0
  122. package/dist/esm/index.d.ts +16 -0
  123. package/dist/esm/index.d.ts.map +1 -0
  124. package/dist/esm/index.js +16 -0
  125. package/dist/esm/index.js.map +1 -0
  126. package/dist/esm/providers/base.d.ts +30 -0
  127. package/dist/esm/providers/base.d.ts.map +1 -0
  128. package/dist/esm/providers/base.js +31 -0
  129. package/dist/esm/providers/base.js.map +1 -0
  130. package/dist/esm/providers/cerebras.d.ts +26 -0
  131. package/dist/esm/providers/cerebras.d.ts.map +1 -0
  132. package/dist/esm/providers/cerebras.js +203 -0
  133. package/dist/esm/providers/cerebras.js.map +1 -0
  134. package/dist/esm/providers/gemini.d.ts +26 -0
  135. package/dist/esm/providers/gemini.d.ts.map +1 -0
  136. package/dist/esm/providers/gemini.js +176 -0
  137. package/dist/esm/providers/gemini.js.map +1 -0
  138. package/dist/esm/providers/groq.d.ts +26 -0
  139. package/dist/esm/providers/groq.d.ts.map +1 -0
  140. package/dist/esm/providers/groq.js +238 -0
  141. package/dist/esm/providers/groq.js.map +1 -0
  142. package/dist/esm/providers/index.d.ts +15 -0
  143. package/dist/esm/providers/index.d.ts.map +1 -0
  144. package/dist/esm/providers/index.js +10 -0
  145. package/dist/esm/providers/index.js.map +1 -0
  146. package/dist/esm/providers/local.d.ts +27 -0
  147. package/dist/esm/providers/local.d.ts.map +1 -0
  148. package/dist/esm/providers/local.js +201 -0
  149. package/dist/esm/providers/local.js.map +1 -0
  150. package/dist/esm/providers/openrouter.d.ts +26 -0
  151. package/dist/esm/providers/openrouter.d.ts.map +1 -0
  152. package/dist/esm/providers/openrouter.js +183 -0
  153. package/dist/esm/providers/openrouter.js.map +1 -0
  154. package/dist/esm/strategies/base.d.ts +16 -0
  155. package/dist/esm/strategies/base.d.ts.map +1 -0
  156. package/dist/esm/strategies/base.js +21 -0
  157. package/dist/esm/strategies/base.js.map +1 -0
  158. package/dist/esm/strategies/fallback.d.ts +14 -0
  159. package/dist/esm/strategies/fallback.d.ts.map +1 -0
  160. package/dist/esm/strategies/fallback.js +28 -0
  161. package/dist/esm/strategies/fallback.js.map +1 -0
  162. package/dist/esm/strategies/health-aware.d.ts +20 -0
  163. package/dist/esm/strategies/health-aware.d.ts.map +1 -0
  164. package/dist/esm/strategies/health-aware.js +104 -0
  165. package/dist/esm/strategies/health-aware.js.map +1 -0
  166. package/dist/esm/strategies/index.d.ts +14 -0
  167. package/dist/esm/strategies/index.d.ts.map +1 -0
  168. package/dist/esm/strategies/index.js +10 -0
  169. package/dist/esm/strategies/index.js.map +1 -0
  170. package/dist/esm/strategies/priority.d.ts +18 -0
  171. package/dist/esm/strategies/priority.d.ts.map +1 -0
  172. package/dist/esm/strategies/priority.js +35 -0
  173. package/dist/esm/strategies/priority.js.map +1 -0
  174. package/dist/esm/strategies/round-robin.d.ts +10 -0
  175. package/dist/esm/strategies/round-robin.d.ts.map +1 -0
  176. package/dist/esm/strategies/round-robin.js +24 -0
  177. package/dist/esm/strategies/round-robin.js.map +1 -0
  178. package/dist/esm/strategies/weighted.d.ts +20 -0
  179. package/dist/esm/strategies/weighted.d.ts.map +1 -0
  180. package/dist/esm/strategies/weighted.js +57 -0
  181. package/dist/esm/strategies/weighted.js.map +1 -0
  182. package/dist/factory/index.d.ts.map +1 -1
  183. package/dist/factory/index.js +27 -7
  184. package/dist/factory/index.js.map +1 -1
  185. package/dist/index.d.ts +3 -1
  186. package/dist/index.d.ts.map +1 -1
  187. package/dist/index.js +1 -0
  188. package/dist/index.js.map +1 -1
  189. package/dist/providers/cerebras.d.ts.map +1 -1
  190. package/dist/providers/cerebras.js +22 -4
  191. package/dist/providers/cerebras.js.map +1 -1
  192. package/dist/providers/groq.d.ts.map +1 -1
  193. package/dist/providers/groq.js +22 -4
  194. package/dist/providers/groq.js.map +1 -1
  195. package/dist/providers/local.d.ts.map +1 -1
  196. package/dist/providers/local.js +9 -1
  197. package/dist/providers/local.js.map +1 -1
  198. package/dist/providers/openrouter.d.ts.map +1 -1
  199. package/dist/providers/openrouter.js +18 -2
  200. package/dist/providers/openrouter.js.map +1 -1
  201. package/docs/CHANGELOG.md +36 -0
  202. package/examples/README.md +205 -0
  203. package/examples/basic.ts +51 -17
  204. package/examples/chat-app/config.json +20 -1
  205. package/examples/chat-app/index.ts +41 -2
  206. package/examples/config.example.json +26 -4
  207. package/examples/language.ts +160 -0
  208. package/examples/metrics.ts +151 -0
  209. package/examples/strategies.ts +4 -2
  210. package/examples/test-local.ts +6 -6
  211. package/package.json +20 -7
  212. package/tsconfig.cjs.json +9 -0
  213. package/tsconfig.esm.json +9 -0
@@ -0,0 +1,204 @@
1
+ /**
2
+ * Factory for creating orchestrators from configuration
3
+ */
4
+ import { Orchestrator } from '../core/orchestrator.js';
5
+ import { ConfigurationError, ProviderError } from '../core/errors.js';
6
+ import { RoundRobinStrategy, PriorityStrategy, FallbackStrategy, WeightedStrategy, HealthAwareStrategy, } from '../strategies/index.js';
7
+ import { GroqProvider, OpenRouterProvider, GeminiProvider, CerebrasProvider, LocalProvider, } from '../providers/index.js';
8
+ /**
9
+ * Create a provider instance from configuration
10
+ */
11
+ function createProvider(config) {
12
+ const { type, id, enabled = true, apiKey, baseURL, model, ...rest } = config;
13
+ if (!id || typeof id !== 'string') {
14
+ throw new ConfigurationError(`Provider must have a valid id`);
15
+ }
16
+ if (!type || typeof type !== 'string') {
17
+ throw new ConfigurationError(`Provider ${id} must have a type`);
18
+ }
19
+ if (!enabled) {
20
+ throw new ConfigurationError(`Provider ${id} is disabled`);
21
+ }
22
+ try {
23
+ switch (type.toLowerCase()) {
24
+ case 'groq':
25
+ if (!apiKey) {
26
+ throw new ConfigurationError(`Provider ${id} (groq) requires apiKey`);
27
+ }
28
+ return new GroqProvider({
29
+ id,
30
+ apiKey,
31
+ model,
32
+ baseURL,
33
+ ...rest,
34
+ });
35
+ case 'openrouter':
36
+ if (!apiKey) {
37
+ throw new ConfigurationError(`Provider ${id} (openrouter) requires apiKey`);
38
+ }
39
+ return new OpenRouterProvider({
40
+ id,
41
+ apiKey,
42
+ model,
43
+ baseURL,
44
+ ...rest,
45
+ });
46
+ case 'gemini':
47
+ if (!apiKey) {
48
+ throw new ConfigurationError(`Provider ${id} (gemini) requires apiKey`);
49
+ }
50
+ return new GeminiProvider({
51
+ id,
52
+ apiKey,
53
+ model,
54
+ baseURL,
55
+ ...rest,
56
+ });
57
+ case 'cerebras':
58
+ if (!apiKey) {
59
+ throw new ConfigurationError(`Provider ${id} (cerebras) requires apiKey`);
60
+ }
61
+ return new CerebrasProvider({
62
+ id,
63
+ apiKey,
64
+ model,
65
+ baseURL,
66
+ ...rest,
67
+ });
68
+ case 'local':
69
+ if (!baseURL) {
70
+ throw new ConfigurationError(`Provider ${id} (local) requires baseURL`);
71
+ }
72
+ return new LocalProvider({
73
+ id,
74
+ baseURL,
75
+ model,
76
+ apiKey,
77
+ ...rest,
78
+ });
79
+ default:
80
+ throw new ConfigurationError(`Unknown provider type: ${type}`);
81
+ }
82
+ }
83
+ catch (error) {
84
+ if (error instanceof ConfigurationError) {
85
+ throw error;
86
+ }
87
+ throw new ProviderError(`Failed to create provider ${id}`, id, error instanceof Error ? error : new Error(String(error)));
88
+ }
89
+ }
90
+ /**
91
+ * Create a strategy instance from configuration
92
+ */
93
+ function createStrategy(config) {
94
+ const { type, ...rest } = config;
95
+ if (!type || typeof type !== 'string') {
96
+ throw new ConfigurationError('Strategy must have a type');
97
+ }
98
+ try {
99
+ switch (type.toLowerCase()) {
100
+ case 'round-robin':
101
+ case 'roundrobin':
102
+ return new RoundRobinStrategy();
103
+ case 'priority':
104
+ return new PriorityStrategy(rest);
105
+ case 'fallback':
106
+ return new FallbackStrategy(rest);
107
+ case 'weighted':
108
+ return new WeightedStrategy(rest);
109
+ case 'health-aware':
110
+ case 'healthaware':
111
+ return new HealthAwareStrategy(rest);
112
+ default:
113
+ throw new ConfigurationError(`Unknown strategy type: ${type}`);
114
+ }
115
+ }
116
+ catch (error) {
117
+ if (error instanceof ConfigurationError) {
118
+ throw error;
119
+ }
120
+ throw new ConfigurationError(`Failed to create strategy: ${error instanceof Error ? error.message : String(error)}`, error instanceof Error ? error : undefined);
121
+ }
122
+ }
123
+ /**
124
+ * Create an orchestrator from configuration
125
+ */
126
+ export function createOrchestrator(config) {
127
+ // Validate configuration
128
+ if (!isValidOrchestratorConfig(config)) {
129
+ throw new ConfigurationError('Invalid orchestrator configuration');
130
+ }
131
+ if (config.providers.length === 0) {
132
+ throw new ConfigurationError('At least one provider is required');
133
+ }
134
+ // Create strategy
135
+ const strategy = createStrategy(config.strategy);
136
+ // Merge health check config (support deprecated fields for backward compatibility)
137
+ const healthCheckConfig = config.healthCheck
138
+ ? {
139
+ ...config.healthCheck,
140
+ enabled: config.healthCheck.enabled ??
141
+ config.enableHealthChecks ??
142
+ false,
143
+ interval: config.healthCheck.interval ?? config.healthCheckInterval,
144
+ }
145
+ : config.enableHealthChecks || config.healthCheckInterval
146
+ ? {
147
+ enabled: config.enableHealthChecks ?? true,
148
+ interval: config.healthCheckInterval,
149
+ }
150
+ : undefined;
151
+ // Create orchestrator with new configuration options
152
+ const orchestrator = new Orchestrator(strategy, {
153
+ maxRetries: config.maxRetries,
154
+ requestTimeout: config.requestTimeout,
155
+ retryDelay: config.retryDelay,
156
+ circuitBreaker: config.circuitBreaker,
157
+ healthCheck: healthCheckConfig,
158
+ enableMetrics: config.enableMetrics,
159
+ onMetricsEvent: config.onMetricsEvent,
160
+ });
161
+ // Register providers
162
+ const registeredProviders = [];
163
+ for (const providerConfig of config.providers) {
164
+ if (providerConfig.enabled !== false) {
165
+ try {
166
+ const provider = createProvider(providerConfig);
167
+ orchestrator.registerProvider(provider);
168
+ registeredProviders.push(providerConfig.id);
169
+ }
170
+ catch (error) {
171
+ console.warn(`Failed to create provider ${providerConfig.id}:`, error instanceof Error ? error.message : String(error));
172
+ }
173
+ }
174
+ }
175
+ if (registeredProviders.length === 0) {
176
+ throw new ConfigurationError('No providers could be created. Check your configuration.');
177
+ }
178
+ // Start health checks if enabled
179
+ if (healthCheckConfig?.enabled) {
180
+ orchestrator.startHealthChecks(healthCheckConfig.interval);
181
+ }
182
+ return orchestrator;
183
+ }
184
+ /**
185
+ * Type guard to check if a config is valid
186
+ */
187
+ export function isValidOrchestratorConfig(config) {
188
+ if (!config || typeof config !== 'object') {
189
+ return false;
190
+ }
191
+ const c = config;
192
+ if (!Array.isArray(c.providers) || c.providers.length === 0) {
193
+ return false;
194
+ }
195
+ if (!c.strategy || typeof c.strategy !== 'object') {
196
+ return false;
197
+ }
198
+ const strategy = c.strategy;
199
+ if (typeof strategy.type !== 'string') {
200
+ return false;
201
+ }
202
+ return true;
203
+ }
204
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/factory/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * AI Orchestration Framework
3
+ * Main entry point
4
+ */
5
+ export { Orchestrator } from './core/orchestrator.js';
6
+ export { MetricsCollector } from './core/metrics.js';
7
+ export type { AIService, SelectionStrategy, ChatMessage, ChatOptions, ChatResponse, ChatChunk, ProviderHealth, ProviderMetadata, SelectionContext, ProviderConfig, StrategyConfig, OrchestratorConfig, CircuitBreakerConfig, HealthCheckConfig, } from './core/interfaces.js';
8
+ export type { ProviderMetrics, StrategyMetrics, OrchestratorMetrics, MetricsEvent, MetricsCallback, } from './core/metrics.js';
9
+ export type { ChatMessage as ChatMessageType, ChatOptions as ChatOptionsType, ChatResponse as ChatResponseType, ChatChunk as ChatChunkType, ProviderHealth as ProviderHealthType, ProviderMetadata as ProviderMetadataType, } from './core/types.js';
10
+ export { ProviderError, StrategyError, OrchestratorError, ConfigurationError, } from './core/errors.js';
11
+ export { RoundRobinStrategy, PriorityStrategy, FallbackStrategy, WeightedStrategy, HealthAwareStrategy, } from './strategies/index.js';
12
+ export type { PriorityStrategyConfig, FallbackStrategyConfig, WeightedStrategyConfig, HealthAwareStrategyConfig, } from './strategies/index.js';
13
+ export { GroqProvider, OpenRouterProvider, GeminiProvider, CerebrasProvider, LocalProvider, } from './providers/index.js';
14
+ export type { GroqProviderConfig, OpenRouterProviderConfig, GeminiProviderConfig, CerebrasProviderConfig, LocalProviderConfig, } from './providers/index.js';
15
+ export { createOrchestrator, isValidOrchestratorConfig, } from './factory/index.js';
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,YAAY,EACV,SAAS,EACT,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,YAAY,EACZ,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,WAAW,IAAI,eAAe,EAC9B,WAAW,IAAI,eAAe,EAC9B,YAAY,IAAI,gBAAgB,EAChC,SAAS,IAAI,aAAa,EAC1B,cAAc,IAAI,kBAAkB,EACpC,gBAAgB,IAAI,oBAAoB,GACzC,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * AI Orchestration Framework
3
+ * Main entry point
4
+ */
5
+ // Core exports
6
+ export { Orchestrator } from './core/orchestrator.js';
7
+ export { MetricsCollector } from './core/metrics.js';
8
+ // Error exports
9
+ export { ProviderError, StrategyError, OrchestratorError, ConfigurationError, } from './core/errors.js';
10
+ // Strategy exports
11
+ export { RoundRobinStrategy, PriorityStrategy, FallbackStrategy, WeightedStrategy, HealthAwareStrategy, } from './strategies/index.js';
12
+ // Provider exports
13
+ export { GroqProvider, OpenRouterProvider, GeminiProvider, CerebrasProvider, LocalProvider, } from './providers/index.js';
14
+ // Factory exports
15
+ export { createOrchestrator, isValidOrchestratorConfig, } from './factory/index.js';
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAe;AACf,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAkCrD,gBAAgB;AAChB,OAAO,EACL,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAE1B,mBAAmB;AACnB,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAQ/B,mBAAmB;AACnB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,aAAa,GACd,MAAM,sBAAsB,CAAC;AAS9B,kBAAkB;AAClB,OAAO,EACL,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Base provider implementation with common utilities
3
+ */
4
+ import type { AIService } from '../core/interfaces.js';
5
+ import type { ChatMessage, ChatOptions, ChatResponse, ChatChunk, ProviderHealth, ProviderMetadata } from '../core/types.js';
6
+ export declare abstract class BaseProvider implements AIService {
7
+ abstract readonly id: string;
8
+ abstract readonly metadata: ProviderMetadata;
9
+ abstract checkHealth(): Promise<ProviderHealth>;
10
+ abstract chat(messages: ChatMessage[], options?: ChatOptions): Promise<ChatResponse>;
11
+ abstract chatStream(messages: ChatMessage[], options?: ChatOptions): Promise<ReadableStream<ChatChunk>>;
12
+ /**
13
+ * Convert messages to provider-specific format
14
+ */
15
+ protected abstract formatMessages(messages: ChatMessage[]): unknown;
16
+ /**
17
+ * Convert provider response to standard format
18
+ */
19
+ protected abstract parseResponse(response: unknown): ChatResponse;
20
+ /**
21
+ * Convert provider stream to standard format
22
+ */
23
+ protected abstract parseStream(stream: ReadableStream<unknown>): ReadableStream<ChatChunk>;
24
+ /**
25
+ * Default health check implementation
26
+ * Uses a minimal chat request to verify the provider is working
27
+ */
28
+ protected defaultHealthCheck(): Promise<ProviderHealth>;
29
+ }
30
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/providers/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,SAAS,EACT,cAAc,EACd,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAE1B,8BAAsB,YAAa,YAAW,SAAS;IACrD,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IAE7C,QAAQ,CAAC,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC;IAC/C,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IACpF,QAAQ,CAAC,UAAU,CACjB,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAErC;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,OAAO;IAEnE;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,GAAG,YAAY;IAEjE;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,WAAW,CAC5B,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,GAC9B,cAAc,CAAC,SAAS,CAAC;IAE5B;;;OAGG;cACa,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC;CAwB9D"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Base provider implementation with common utilities
3
+ */
4
+ export class BaseProvider {
5
+ /**
6
+ * Default health check implementation
7
+ * Uses a minimal chat request to verify the provider is working
8
+ */
9
+ async defaultHealthCheck() {
10
+ try {
11
+ const start = Date.now();
12
+ // Try a minimal chat request with minimal options
13
+ // Note: Some providers may not support all options, so we use minimal ones
14
+ await this.chat([{ role: 'user', content: 'ping' }], { maxTokens: 5, temperature: 0 });
15
+ const latency = Date.now() - start;
16
+ return {
17
+ healthy: true,
18
+ latency,
19
+ lastChecked: new Date(),
20
+ };
21
+ }
22
+ catch (error) {
23
+ return {
24
+ healthy: false,
25
+ lastChecked: new Date(),
26
+ error: error instanceof Error ? error.message : String(error),
27
+ };
28
+ }
29
+ }
30
+ }
31
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/providers/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH,MAAM,OAAgB,YAAY;IA4BhC;;;OAGG;IACO,KAAK,CAAC,kBAAkB;QAChC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACzB,kDAAkD;YAClD,2EAA2E;YAC3E,MAAM,IAAI,CAAC,IAAI,CACb,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EACnC,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CACjC,CAAC;YACF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;YAEnC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO;gBACP,WAAW,EAAE,IAAI,IAAI,EAAE;aACxB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,WAAW,EAAE,IAAI,IAAI,EAAE;gBACvB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Cerebras provider implementation
3
+ */
4
+ import { BaseProvider } from './base.js';
5
+ import type { ChatMessage, ChatOptions, ChatResponse, ChatChunk, ProviderHealth, ProviderMetadata } from '../core/types.js';
6
+ export interface CerebrasProviderConfig {
7
+ id: string;
8
+ apiKey: string;
9
+ model?: string;
10
+ baseURL?: string;
11
+ }
12
+ export declare class CerebrasProvider extends BaseProvider {
13
+ readonly id: string;
14
+ readonly metadata: ProviderMetadata;
15
+ private apiKey;
16
+ private model;
17
+ private baseURL;
18
+ constructor(config: CerebrasProviderConfig);
19
+ checkHealth(): Promise<ProviderHealth>;
20
+ chat(messages: ChatMessage[], options?: ChatOptions): Promise<ChatResponse>;
21
+ chatStream(messages: ChatMessage[], options?: ChatOptions): Promise<ReadableStream<ChatChunk>>;
22
+ protected formatMessages(messages: ChatMessage[]): unknown;
23
+ protected parseResponse(response: unknown): ChatResponse;
24
+ protected parseStream(stream: ReadableStream<unknown>): ReadableStream<ChatChunk>;
25
+ }
26
+ //# sourceMappingURL=cerebras.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cerebras.d.ts","sourceRoot":"","sources":["../../../src/providers/cerebras.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,SAAS,EACT,cAAc,EACd,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,sBAAsB;IAgBpC,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC;IAItC,IAAI,CACR,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,YAAY,CAAC;IAqDlB,UAAU,CACd,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAyDrC,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,OAAO;IAO1D,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,GAAG,YAAY;IAiCxD,SAAS,CAAC,WAAW,CACnB,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,GAC9B,cAAc,CAAC,SAAS,CAAC;CAoE7B"}
@@ -0,0 +1,203 @@
1
+ /**
2
+ * Cerebras provider implementation
3
+ */
4
+ import { BaseProvider } from './base.js';
5
+ export class CerebrasProvider extends BaseProvider {
6
+ constructor(config) {
7
+ super();
8
+ this.id = config.id;
9
+ this.apiKey = config.apiKey;
10
+ // Default model based on Cerebras documentation
11
+ this.model = config.model || 'llama-3.3-70b';
12
+ // Cerebras Inference API endpoint (OpenAI-compatible)
13
+ this.baseURL = config.baseURL || 'https://api.cerebras.ai/v1';
14
+ this.metadata = {
15
+ id: this.id,
16
+ name: 'Cerebras',
17
+ model: this.model,
18
+ };
19
+ }
20
+ async checkHealth() {
21
+ return this.defaultHealthCheck();
22
+ }
23
+ async chat(messages, options) {
24
+ // Build request body, converting camelCase to snake_case for Cerebras API
25
+ const requestBody = {
26
+ model: this.model,
27
+ messages: this.formatMessages(messages),
28
+ };
29
+ // Add options, converting camelCase to snake_case
30
+ if (options?.temperature !== undefined)
31
+ requestBody.temperature = options.temperature;
32
+ if (options?.maxTokens !== undefined)
33
+ requestBody.max_tokens = options.maxTokens;
34
+ if (options?.topP !== undefined)
35
+ requestBody.top_p = options.topP;
36
+ if (options?.stopSequences !== undefined)
37
+ requestBody.stop = options.stopSequences;
38
+ if (options?.frequencyPenalty !== undefined)
39
+ requestBody.frequency_penalty = options.frequencyPenalty;
40
+ if (options?.presencePenalty !== undefined)
41
+ requestBody.presence_penalty = options.presencePenalty;
42
+ if (options?.seed !== undefined && options.seed !== null)
43
+ requestBody.seed = options.seed;
44
+ if (options?.user !== undefined)
45
+ requestBody.user = options.user;
46
+ // Exclude framework-specific options that shouldn't be sent to the API
47
+ const { maxTokens, topP, stopSequences, responseLanguage, timeout, frequencyPenalty, presencePenalty, seed, user, ...restOptions } = options || {};
48
+ // Add any additional provider-specific options
49
+ Object.assign(requestBody, restOptions);
50
+ const response = await fetch(`${this.baseURL}/chat/completions`, {
51
+ method: 'POST',
52
+ headers: {
53
+ 'Content-Type': 'application/json',
54
+ Authorization: `Bearer ${this.apiKey}`,
55
+ 'User-Agent': '@ai-orchestration/core/0.1.0', // Required by Cerebras to avoid CloudFront blocking
56
+ },
57
+ body: JSON.stringify(requestBody),
58
+ });
59
+ if (!response.ok) {
60
+ const error = await response.text();
61
+ throw new Error(`Cerebras API error: ${response.status} ${error}`);
62
+ }
63
+ const data = await response.json();
64
+ return this.parseResponse(data);
65
+ }
66
+ async chatStream(messages, options) {
67
+ // Build request body, converting camelCase to snake_case for Cerebras API
68
+ const requestBody = {
69
+ model: this.model,
70
+ messages: this.formatMessages(messages),
71
+ stream: true,
72
+ };
73
+ // Add options, converting camelCase to snake_case
74
+ if (options?.temperature !== undefined)
75
+ requestBody.temperature = options.temperature;
76
+ if (options?.maxTokens !== undefined)
77
+ requestBody.max_tokens = options.maxTokens;
78
+ if (options?.topP !== undefined)
79
+ requestBody.top_p = options.topP;
80
+ if (options?.stopSequences !== undefined)
81
+ requestBody.stop = options.stopSequences;
82
+ if (options?.frequencyPenalty !== undefined)
83
+ requestBody.frequency_penalty = options.frequencyPenalty;
84
+ if (options?.presencePenalty !== undefined)
85
+ requestBody.presence_penalty = options.presencePenalty;
86
+ if (options?.seed !== undefined && options.seed !== null)
87
+ requestBody.seed = options.seed;
88
+ if (options?.user !== undefined)
89
+ requestBody.user = options.user;
90
+ // Exclude framework-specific options that shouldn't be sent to the API
91
+ const { maxTokens, topP, stopSequences, responseLanguage, timeout, frequencyPenalty, presencePenalty, seed, user, ...restOptions } = options || {};
92
+ // Add any additional provider-specific options
93
+ Object.assign(requestBody, restOptions);
94
+ const response = await fetch(`${this.baseURL}/chat/completions`, {
95
+ method: 'POST',
96
+ headers: {
97
+ 'Content-Type': 'application/json',
98
+ Authorization: `Bearer ${this.apiKey}`,
99
+ 'User-Agent': '@ai-orchestration/core/0.1.0', // Required by Cerebras to avoid CloudFront blocking
100
+ },
101
+ body: JSON.stringify(requestBody),
102
+ });
103
+ if (!response.ok) {
104
+ const error = await response.text();
105
+ throw new Error(`Cerebras API error: ${response.status} ${error}`);
106
+ }
107
+ if (!response.body) {
108
+ throw new Error('No response body');
109
+ }
110
+ return this.parseStream(response.body);
111
+ }
112
+ formatMessages(messages) {
113
+ return messages.map((msg) => ({
114
+ role: msg.role,
115
+ content: msg.content,
116
+ }));
117
+ }
118
+ parseResponse(response) {
119
+ const data = response;
120
+ const choice = data.choices?.[0];
121
+ if (!choice?.message?.content) {
122
+ throw new Error('Invalid response format from Cerebras');
123
+ }
124
+ return {
125
+ content: choice.message.content,
126
+ usage: data.usage
127
+ ? {
128
+ promptTokens: data.usage.prompt_tokens ?? 0,
129
+ completionTokens: data.usage.completion_tokens ?? 0,
130
+ totalTokens: data.usage.total_tokens ?? 0,
131
+ }
132
+ : undefined,
133
+ model: data.model,
134
+ finishReason: choice.finish_reason,
135
+ };
136
+ }
137
+ parseStream(stream) {
138
+ const reader = stream.getReader();
139
+ const decoder = new TextDecoder();
140
+ return new ReadableStream({
141
+ async start(controller) {
142
+ try {
143
+ while (true) {
144
+ const { done, value } = await reader.read();
145
+ if (done) {
146
+ controller.close();
147
+ break;
148
+ }
149
+ const chunk = decoder.decode(value);
150
+ const lines = chunk.split('\n').filter((line) => line.trim());
151
+ for (const line of lines) {
152
+ if (line.startsWith('data: ')) {
153
+ const data = line.slice(6);
154
+ if (data === '[DONE]') {
155
+ controller.close();
156
+ return;
157
+ }
158
+ try {
159
+ const parsed = JSON.parse(data);
160
+ const choice = parsed.choices?.[0];
161
+ const delta = choice?.delta;
162
+ if (delta?.content) {
163
+ controller.enqueue({
164
+ content: delta.content,
165
+ done: false,
166
+ finishReason: choice?.finish_reason,
167
+ });
168
+ }
169
+ if (choice?.finish_reason) {
170
+ controller.enqueue({
171
+ content: '',
172
+ done: true,
173
+ finishReason: choice.finish_reason,
174
+ usage: parsed.usage
175
+ ? {
176
+ promptTokens: parsed.usage.prompt_tokens,
177
+ completionTokens: parsed.usage.completion_tokens,
178
+ totalTokens: parsed.usage.total_tokens,
179
+ }
180
+ : undefined,
181
+ });
182
+ controller.close();
183
+ return;
184
+ }
185
+ }
186
+ catch {
187
+ // Skip invalid JSON
188
+ }
189
+ }
190
+ }
191
+ }
192
+ }
193
+ catch (error) {
194
+ controller.error(error);
195
+ }
196
+ finally {
197
+ reader.releaseLock();
198
+ }
199
+ },
200
+ });
201
+ }
202
+ }
203
+ //# sourceMappingURL=cerebras.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cerebras.js","sourceRoot":"","sources":["../../../src/providers/cerebras.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Google Gemini provider implementation
3
+ */
4
+ import { BaseProvider } from './base.js';
5
+ import type { ChatMessage, ChatOptions, ChatResponse, ChatChunk, ProviderHealth, ProviderMetadata } from '../core/types.js';
6
+ export interface GeminiProviderConfig {
7
+ id: string;
8
+ apiKey: string;
9
+ model?: string;
10
+ baseURL?: string;
11
+ }
12
+ export declare class GeminiProvider extends BaseProvider {
13
+ readonly id: string;
14
+ readonly metadata: ProviderMetadata;
15
+ private apiKey;
16
+ private model;
17
+ private baseURL;
18
+ constructor(config: GeminiProviderConfig);
19
+ checkHealth(): Promise<ProviderHealth>;
20
+ chat(messages: ChatMessage[], options?: ChatOptions): Promise<ChatResponse>;
21
+ chatStream(messages: ChatMessage[], options?: ChatOptions): Promise<ReadableStream<ChatChunk>>;
22
+ protected formatMessages(messages: ChatMessage[]): unknown;
23
+ protected parseResponse(response: unknown): ChatResponse;
24
+ protected parseStream(stream: ReadableStream<unknown>): ReadableStream<ChatChunk>;
25
+ }
26
+ //# sourceMappingURL=gemini.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,SAAS,EACT,cAAc,EACd,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,cAAe,SAAQ,YAAY;IAC9C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,oBAAoB;IAelC,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC;IAItC,IAAI,CACR,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,YAAY,CAAC;IA8BlB,UAAU,CACd,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAiCrC,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,OAAO;IAW1D,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,GAAG,YAAY;IAoCxD,SAAS,CAAC,WAAW,CACnB,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,GAC9B,cAAc,CAAC,SAAS,CAAC;CA0E7B"}