@ai-orchestration/core 0.2.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.
- package/README.md +16 -0
- package/dist/cjs/core/errors.d.ts +21 -0
- package/dist/cjs/core/errors.d.ts.map +1 -0
- package/dist/cjs/core/errors.js +40 -0
- package/dist/cjs/core/errors.js.map +1 -0
- package/dist/cjs/core/interfaces.d.ts +166 -0
- package/dist/cjs/core/interfaces.d.ts.map +1 -0
- package/dist/cjs/core/interfaces.js +6 -0
- package/dist/cjs/core/interfaces.js.map +1 -0
- package/dist/cjs/core/metrics.d.ts +161 -0
- package/dist/cjs/core/metrics.d.ts.map +1 -0
- package/dist/cjs/core/metrics.js +282 -0
- package/dist/cjs/core/metrics.js.map +1 -0
- package/dist/cjs/core/orchestrator.d.ts +97 -0
- package/dist/cjs/core/orchestrator.d.ts.map +1 -0
- package/dist/cjs/core/orchestrator.js +402 -0
- package/dist/cjs/core/orchestrator.js.map +1 -0
- package/dist/cjs/core/types.d.ts +111 -0
- package/dist/cjs/core/types.d.ts.map +1 -0
- package/dist/cjs/core/types.js +6 -0
- package/dist/cjs/core/types.js.map +1 -0
- package/dist/cjs/factory/index.d.ts +14 -0
- package/dist/cjs/factory/index.d.ts.map +1 -0
- package/dist/cjs/factory/index.js +208 -0
- package/dist/cjs/factory/index.js.map +1 -0
- package/dist/cjs/index.d.ts +16 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +37 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/providers/base.d.ts +30 -0
- package/dist/cjs/providers/base.d.ts.map +1 -0
- package/dist/cjs/providers/base.js +35 -0
- package/dist/cjs/providers/base.js.map +1 -0
- package/dist/cjs/providers/cerebras.d.ts +26 -0
- package/dist/cjs/providers/cerebras.d.ts.map +1 -0
- package/dist/cjs/providers/cerebras.js +207 -0
- package/dist/cjs/providers/cerebras.js.map +1 -0
- package/dist/cjs/providers/gemini.d.ts +26 -0
- package/dist/cjs/providers/gemini.d.ts.map +1 -0
- package/dist/cjs/providers/gemini.js +180 -0
- package/dist/cjs/providers/gemini.js.map +1 -0
- package/dist/cjs/providers/groq.d.ts +26 -0
- package/dist/cjs/providers/groq.d.ts.map +1 -0
- package/dist/cjs/providers/groq.js +242 -0
- package/dist/cjs/providers/groq.js.map +1 -0
- package/dist/cjs/providers/index.d.ts +15 -0
- package/dist/cjs/providers/index.d.ts.map +1 -0
- package/dist/cjs/providers/index.js +19 -0
- package/dist/cjs/providers/index.js.map +1 -0
- package/dist/cjs/providers/local.d.ts +27 -0
- package/dist/cjs/providers/local.d.ts.map +1 -0
- package/dist/cjs/providers/local.js +205 -0
- package/dist/cjs/providers/local.js.map +1 -0
- package/dist/cjs/providers/openrouter.d.ts +26 -0
- package/dist/cjs/providers/openrouter.d.ts.map +1 -0
- package/dist/cjs/providers/openrouter.js +187 -0
- package/dist/cjs/providers/openrouter.js.map +1 -0
- package/dist/cjs/strategies/base.d.ts +16 -0
- package/dist/cjs/strategies/base.d.ts.map +1 -0
- package/dist/cjs/strategies/base.js +25 -0
- package/dist/cjs/strategies/base.js.map +1 -0
- package/dist/cjs/strategies/fallback.d.ts +14 -0
- package/dist/cjs/strategies/fallback.d.ts.map +1 -0
- package/dist/cjs/strategies/fallback.js +32 -0
- package/dist/cjs/strategies/fallback.js.map +1 -0
- package/dist/cjs/strategies/health-aware.d.ts +20 -0
- package/dist/cjs/strategies/health-aware.d.ts.map +1 -0
- package/dist/cjs/strategies/health-aware.js +108 -0
- package/dist/cjs/strategies/health-aware.js.map +1 -0
- package/dist/cjs/strategies/index.d.ts +14 -0
- package/dist/cjs/strategies/index.d.ts.map +1 -0
- package/dist/cjs/strategies/index.js +19 -0
- package/dist/cjs/strategies/index.js.map +1 -0
- package/dist/cjs/strategies/priority.d.ts +18 -0
- package/dist/cjs/strategies/priority.d.ts.map +1 -0
- package/dist/cjs/strategies/priority.js +39 -0
- package/dist/cjs/strategies/priority.js.map +1 -0
- package/dist/cjs/strategies/round-robin.d.ts +10 -0
- package/dist/cjs/strategies/round-robin.d.ts.map +1 -0
- package/dist/cjs/strategies/round-robin.js +28 -0
- package/dist/cjs/strategies/round-robin.js.map +1 -0
- package/dist/cjs/strategies/weighted.d.ts +20 -0
- package/dist/cjs/strategies/weighted.d.ts.map +1 -0
- package/dist/cjs/strategies/weighted.js +61 -0
- package/dist/cjs/strategies/weighted.js.map +1 -0
- package/dist/esm/core/errors.d.ts +21 -0
- package/dist/esm/core/errors.d.ts.map +1 -0
- package/dist/esm/core/errors.js +33 -0
- package/dist/esm/core/errors.js.map +1 -0
- package/dist/esm/core/interfaces.d.ts +166 -0
- package/dist/esm/core/interfaces.d.ts.map +1 -0
- package/dist/esm/core/interfaces.js +5 -0
- package/dist/esm/core/interfaces.js.map +1 -0
- package/dist/esm/core/metrics.d.ts +161 -0
- package/dist/esm/core/metrics.d.ts.map +1 -0
- package/dist/esm/core/metrics.js +278 -0
- package/dist/esm/core/metrics.js.map +1 -0
- package/dist/esm/core/orchestrator.d.ts +97 -0
- package/dist/esm/core/orchestrator.d.ts.map +1 -0
- package/dist/esm/core/orchestrator.js +398 -0
- package/dist/esm/core/orchestrator.js.map +1 -0
- package/dist/esm/core/types.d.ts +111 -0
- package/dist/esm/core/types.d.ts.map +1 -0
- package/dist/esm/core/types.js +5 -0
- package/dist/esm/core/types.js.map +1 -0
- package/dist/esm/factory/index.d.ts +14 -0
- package/dist/esm/factory/index.d.ts.map +1 -0
- package/dist/esm/factory/index.js +204 -0
- package/dist/esm/factory/index.js.map +1 -0
- package/dist/esm/index.d.ts +16 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +16 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/providers/base.d.ts +30 -0
- package/dist/esm/providers/base.d.ts.map +1 -0
- package/dist/esm/providers/base.js +31 -0
- package/dist/esm/providers/base.js.map +1 -0
- package/dist/esm/providers/cerebras.d.ts +26 -0
- package/dist/esm/providers/cerebras.d.ts.map +1 -0
- package/dist/esm/providers/cerebras.js +203 -0
- package/dist/esm/providers/cerebras.js.map +1 -0
- package/dist/esm/providers/gemini.d.ts +26 -0
- package/dist/esm/providers/gemini.d.ts.map +1 -0
- package/dist/esm/providers/gemini.js +176 -0
- package/dist/esm/providers/gemini.js.map +1 -0
- package/dist/esm/providers/groq.d.ts +26 -0
- package/dist/esm/providers/groq.d.ts.map +1 -0
- package/dist/esm/providers/groq.js +238 -0
- package/dist/esm/providers/groq.js.map +1 -0
- package/dist/esm/providers/index.d.ts +15 -0
- package/dist/esm/providers/index.d.ts.map +1 -0
- package/dist/esm/providers/index.js +10 -0
- package/dist/esm/providers/index.js.map +1 -0
- package/dist/esm/providers/local.d.ts +27 -0
- package/dist/esm/providers/local.d.ts.map +1 -0
- package/dist/esm/providers/local.js +201 -0
- package/dist/esm/providers/local.js.map +1 -0
- package/dist/esm/providers/openrouter.d.ts +26 -0
- package/dist/esm/providers/openrouter.d.ts.map +1 -0
- package/dist/esm/providers/openrouter.js +183 -0
- package/dist/esm/providers/openrouter.js.map +1 -0
- package/dist/esm/strategies/base.d.ts +16 -0
- package/dist/esm/strategies/base.d.ts.map +1 -0
- package/dist/esm/strategies/base.js +21 -0
- package/dist/esm/strategies/base.js.map +1 -0
- package/dist/esm/strategies/fallback.d.ts +14 -0
- package/dist/esm/strategies/fallback.d.ts.map +1 -0
- package/dist/esm/strategies/fallback.js +28 -0
- package/dist/esm/strategies/fallback.js.map +1 -0
- package/dist/esm/strategies/health-aware.d.ts +20 -0
- package/dist/esm/strategies/health-aware.d.ts.map +1 -0
- package/dist/esm/strategies/health-aware.js +104 -0
- package/dist/esm/strategies/health-aware.js.map +1 -0
- package/dist/esm/strategies/index.d.ts +14 -0
- package/dist/esm/strategies/index.d.ts.map +1 -0
- package/dist/esm/strategies/index.js +10 -0
- package/dist/esm/strategies/index.js.map +1 -0
- package/dist/esm/strategies/priority.d.ts +18 -0
- package/dist/esm/strategies/priority.d.ts.map +1 -0
- package/dist/esm/strategies/priority.js +35 -0
- package/dist/esm/strategies/priority.js.map +1 -0
- package/dist/esm/strategies/round-robin.d.ts +10 -0
- package/dist/esm/strategies/round-robin.d.ts.map +1 -0
- package/dist/esm/strategies/round-robin.js +24 -0
- package/dist/esm/strategies/round-robin.js.map +1 -0
- package/dist/esm/strategies/weighted.d.ts +20 -0
- package/dist/esm/strategies/weighted.d.ts.map +1 -0
- package/dist/esm/strategies/weighted.js +57 -0
- package/dist/esm/strategies/weighted.js.map +1 -0
- package/examples/metrics.ts +1 -0
- package/package.json +15 -6
- package/tsconfig.cjs.json +9 -0
- package/tsconfig.esm.json +9 -0
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Factory for creating orchestrators from configuration
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createOrchestrator = createOrchestrator;
|
|
7
|
+
exports.isValidOrchestratorConfig = isValidOrchestratorConfig;
|
|
8
|
+
const orchestrator_js_1 = require("../core/orchestrator.js");
|
|
9
|
+
const errors_js_1 = require("../core/errors.js");
|
|
10
|
+
const index_js_1 = require("../strategies/index.js");
|
|
11
|
+
const index_js_2 = require("../providers/index.js");
|
|
12
|
+
/**
|
|
13
|
+
* Create a provider instance from configuration
|
|
14
|
+
*/
|
|
15
|
+
function createProvider(config) {
|
|
16
|
+
const { type, id, enabled = true, apiKey, baseURL, model, ...rest } = config;
|
|
17
|
+
if (!id || typeof id !== 'string') {
|
|
18
|
+
throw new errors_js_1.ConfigurationError(`Provider must have a valid id`);
|
|
19
|
+
}
|
|
20
|
+
if (!type || typeof type !== 'string') {
|
|
21
|
+
throw new errors_js_1.ConfigurationError(`Provider ${id} must have a type`);
|
|
22
|
+
}
|
|
23
|
+
if (!enabled) {
|
|
24
|
+
throw new errors_js_1.ConfigurationError(`Provider ${id} is disabled`);
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
switch (type.toLowerCase()) {
|
|
28
|
+
case 'groq':
|
|
29
|
+
if (!apiKey) {
|
|
30
|
+
throw new errors_js_1.ConfigurationError(`Provider ${id} (groq) requires apiKey`);
|
|
31
|
+
}
|
|
32
|
+
return new index_js_2.GroqProvider({
|
|
33
|
+
id,
|
|
34
|
+
apiKey,
|
|
35
|
+
model,
|
|
36
|
+
baseURL,
|
|
37
|
+
...rest,
|
|
38
|
+
});
|
|
39
|
+
case 'openrouter':
|
|
40
|
+
if (!apiKey) {
|
|
41
|
+
throw new errors_js_1.ConfigurationError(`Provider ${id} (openrouter) requires apiKey`);
|
|
42
|
+
}
|
|
43
|
+
return new index_js_2.OpenRouterProvider({
|
|
44
|
+
id,
|
|
45
|
+
apiKey,
|
|
46
|
+
model,
|
|
47
|
+
baseURL,
|
|
48
|
+
...rest,
|
|
49
|
+
});
|
|
50
|
+
case 'gemini':
|
|
51
|
+
if (!apiKey) {
|
|
52
|
+
throw new errors_js_1.ConfigurationError(`Provider ${id} (gemini) requires apiKey`);
|
|
53
|
+
}
|
|
54
|
+
return new index_js_2.GeminiProvider({
|
|
55
|
+
id,
|
|
56
|
+
apiKey,
|
|
57
|
+
model,
|
|
58
|
+
baseURL,
|
|
59
|
+
...rest,
|
|
60
|
+
});
|
|
61
|
+
case 'cerebras':
|
|
62
|
+
if (!apiKey) {
|
|
63
|
+
throw new errors_js_1.ConfigurationError(`Provider ${id} (cerebras) requires apiKey`);
|
|
64
|
+
}
|
|
65
|
+
return new index_js_2.CerebrasProvider({
|
|
66
|
+
id,
|
|
67
|
+
apiKey,
|
|
68
|
+
model,
|
|
69
|
+
baseURL,
|
|
70
|
+
...rest,
|
|
71
|
+
});
|
|
72
|
+
case 'local':
|
|
73
|
+
if (!baseURL) {
|
|
74
|
+
throw new errors_js_1.ConfigurationError(`Provider ${id} (local) requires baseURL`);
|
|
75
|
+
}
|
|
76
|
+
return new index_js_2.LocalProvider({
|
|
77
|
+
id,
|
|
78
|
+
baseURL,
|
|
79
|
+
model,
|
|
80
|
+
apiKey,
|
|
81
|
+
...rest,
|
|
82
|
+
});
|
|
83
|
+
default:
|
|
84
|
+
throw new errors_js_1.ConfigurationError(`Unknown provider type: ${type}`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
if (error instanceof errors_js_1.ConfigurationError) {
|
|
89
|
+
throw error;
|
|
90
|
+
}
|
|
91
|
+
throw new errors_js_1.ProviderError(`Failed to create provider ${id}`, id, error instanceof Error ? error : new Error(String(error)));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Create a strategy instance from configuration
|
|
96
|
+
*/
|
|
97
|
+
function createStrategy(config) {
|
|
98
|
+
const { type, ...rest } = config;
|
|
99
|
+
if (!type || typeof type !== 'string') {
|
|
100
|
+
throw new errors_js_1.ConfigurationError('Strategy must have a type');
|
|
101
|
+
}
|
|
102
|
+
try {
|
|
103
|
+
switch (type.toLowerCase()) {
|
|
104
|
+
case 'round-robin':
|
|
105
|
+
case 'roundrobin':
|
|
106
|
+
return new index_js_1.RoundRobinStrategy();
|
|
107
|
+
case 'priority':
|
|
108
|
+
return new index_js_1.PriorityStrategy(rest);
|
|
109
|
+
case 'fallback':
|
|
110
|
+
return new index_js_1.FallbackStrategy(rest);
|
|
111
|
+
case 'weighted':
|
|
112
|
+
return new index_js_1.WeightedStrategy(rest);
|
|
113
|
+
case 'health-aware':
|
|
114
|
+
case 'healthaware':
|
|
115
|
+
return new index_js_1.HealthAwareStrategy(rest);
|
|
116
|
+
default:
|
|
117
|
+
throw new errors_js_1.ConfigurationError(`Unknown strategy type: ${type}`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
if (error instanceof errors_js_1.ConfigurationError) {
|
|
122
|
+
throw error;
|
|
123
|
+
}
|
|
124
|
+
throw new errors_js_1.ConfigurationError(`Failed to create strategy: ${error instanceof Error ? error.message : String(error)}`, error instanceof Error ? error : undefined);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Create an orchestrator from configuration
|
|
129
|
+
*/
|
|
130
|
+
function createOrchestrator(config) {
|
|
131
|
+
// Validate configuration
|
|
132
|
+
if (!isValidOrchestratorConfig(config)) {
|
|
133
|
+
throw new errors_js_1.ConfigurationError('Invalid orchestrator configuration');
|
|
134
|
+
}
|
|
135
|
+
if (config.providers.length === 0) {
|
|
136
|
+
throw new errors_js_1.ConfigurationError('At least one provider is required');
|
|
137
|
+
}
|
|
138
|
+
// Create strategy
|
|
139
|
+
const strategy = createStrategy(config.strategy);
|
|
140
|
+
// Merge health check config (support deprecated fields for backward compatibility)
|
|
141
|
+
const healthCheckConfig = config.healthCheck
|
|
142
|
+
? {
|
|
143
|
+
...config.healthCheck,
|
|
144
|
+
enabled: config.healthCheck.enabled ??
|
|
145
|
+
config.enableHealthChecks ??
|
|
146
|
+
false,
|
|
147
|
+
interval: config.healthCheck.interval ?? config.healthCheckInterval,
|
|
148
|
+
}
|
|
149
|
+
: config.enableHealthChecks || config.healthCheckInterval
|
|
150
|
+
? {
|
|
151
|
+
enabled: config.enableHealthChecks ?? true,
|
|
152
|
+
interval: config.healthCheckInterval,
|
|
153
|
+
}
|
|
154
|
+
: undefined;
|
|
155
|
+
// Create orchestrator with new configuration options
|
|
156
|
+
const orchestrator = new orchestrator_js_1.Orchestrator(strategy, {
|
|
157
|
+
maxRetries: config.maxRetries,
|
|
158
|
+
requestTimeout: config.requestTimeout,
|
|
159
|
+
retryDelay: config.retryDelay,
|
|
160
|
+
circuitBreaker: config.circuitBreaker,
|
|
161
|
+
healthCheck: healthCheckConfig,
|
|
162
|
+
enableMetrics: config.enableMetrics,
|
|
163
|
+
onMetricsEvent: config.onMetricsEvent,
|
|
164
|
+
});
|
|
165
|
+
// Register providers
|
|
166
|
+
const registeredProviders = [];
|
|
167
|
+
for (const providerConfig of config.providers) {
|
|
168
|
+
if (providerConfig.enabled !== false) {
|
|
169
|
+
try {
|
|
170
|
+
const provider = createProvider(providerConfig);
|
|
171
|
+
orchestrator.registerProvider(provider);
|
|
172
|
+
registeredProviders.push(providerConfig.id);
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
console.warn(`Failed to create provider ${providerConfig.id}:`, error instanceof Error ? error.message : String(error));
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
if (registeredProviders.length === 0) {
|
|
180
|
+
throw new errors_js_1.ConfigurationError('No providers could be created. Check your configuration.');
|
|
181
|
+
}
|
|
182
|
+
// Start health checks if enabled
|
|
183
|
+
if (healthCheckConfig?.enabled) {
|
|
184
|
+
orchestrator.startHealthChecks(healthCheckConfig.interval);
|
|
185
|
+
}
|
|
186
|
+
return orchestrator;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Type guard to check if a config is valid
|
|
190
|
+
*/
|
|
191
|
+
function isValidOrchestratorConfig(config) {
|
|
192
|
+
if (!config || typeof config !== 'object') {
|
|
193
|
+
return false;
|
|
194
|
+
}
|
|
195
|
+
const c = config;
|
|
196
|
+
if (!Array.isArray(c.providers) || c.providers.length === 0) {
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
199
|
+
if (!c.strategy || typeof c.strategy !== 'object') {
|
|
200
|
+
return false;
|
|
201
|
+
}
|
|
202
|
+
const strategy = c.strategy;
|
|
203
|
+
if (typeof strategy.type !== 'string') {
|
|
204
|
+
return false;
|
|
205
|
+
}
|
|
206
|
+
return true;
|
|
207
|
+
}
|
|
208
|
+
//# 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,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AI Orchestration Framework
|
|
4
|
+
* Main entry point
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.isValidOrchestratorConfig = exports.createOrchestrator = exports.LocalProvider = exports.CerebrasProvider = exports.GeminiProvider = exports.OpenRouterProvider = exports.GroqProvider = exports.HealthAwareStrategy = exports.WeightedStrategy = exports.FallbackStrategy = exports.PriorityStrategy = exports.RoundRobinStrategy = exports.ConfigurationError = exports.OrchestratorError = exports.StrategyError = exports.ProviderError = exports.MetricsCollector = exports.Orchestrator = void 0;
|
|
8
|
+
// Core exports
|
|
9
|
+
var orchestrator_js_1 = require("./core/orchestrator.js");
|
|
10
|
+
Object.defineProperty(exports, "Orchestrator", { enumerable: true, get: function () { return orchestrator_js_1.Orchestrator; } });
|
|
11
|
+
var metrics_js_1 = require("./core/metrics.js");
|
|
12
|
+
Object.defineProperty(exports, "MetricsCollector", { enumerable: true, get: function () { return metrics_js_1.MetricsCollector; } });
|
|
13
|
+
// Error exports
|
|
14
|
+
var errors_js_1 = require("./core/errors.js");
|
|
15
|
+
Object.defineProperty(exports, "ProviderError", { enumerable: true, get: function () { return errors_js_1.ProviderError; } });
|
|
16
|
+
Object.defineProperty(exports, "StrategyError", { enumerable: true, get: function () { return errors_js_1.StrategyError; } });
|
|
17
|
+
Object.defineProperty(exports, "OrchestratorError", { enumerable: true, get: function () { return errors_js_1.OrchestratorError; } });
|
|
18
|
+
Object.defineProperty(exports, "ConfigurationError", { enumerable: true, get: function () { return errors_js_1.ConfigurationError; } });
|
|
19
|
+
// Strategy exports
|
|
20
|
+
var index_js_1 = require("./strategies/index.js");
|
|
21
|
+
Object.defineProperty(exports, "RoundRobinStrategy", { enumerable: true, get: function () { return index_js_1.RoundRobinStrategy; } });
|
|
22
|
+
Object.defineProperty(exports, "PriorityStrategy", { enumerable: true, get: function () { return index_js_1.PriorityStrategy; } });
|
|
23
|
+
Object.defineProperty(exports, "FallbackStrategy", { enumerable: true, get: function () { return index_js_1.FallbackStrategy; } });
|
|
24
|
+
Object.defineProperty(exports, "WeightedStrategy", { enumerable: true, get: function () { return index_js_1.WeightedStrategy; } });
|
|
25
|
+
Object.defineProperty(exports, "HealthAwareStrategy", { enumerable: true, get: function () { return index_js_1.HealthAwareStrategy; } });
|
|
26
|
+
// Provider exports
|
|
27
|
+
var index_js_2 = require("./providers/index.js");
|
|
28
|
+
Object.defineProperty(exports, "GroqProvider", { enumerable: true, get: function () { return index_js_2.GroqProvider; } });
|
|
29
|
+
Object.defineProperty(exports, "OpenRouterProvider", { enumerable: true, get: function () { return index_js_2.OpenRouterProvider; } });
|
|
30
|
+
Object.defineProperty(exports, "GeminiProvider", { enumerable: true, get: function () { return index_js_2.GeminiProvider; } });
|
|
31
|
+
Object.defineProperty(exports, "CerebrasProvider", { enumerable: true, get: function () { return index_js_2.CerebrasProvider; } });
|
|
32
|
+
Object.defineProperty(exports, "LocalProvider", { enumerable: true, get: function () { return index_js_2.LocalProvider; } });
|
|
33
|
+
// Factory exports
|
|
34
|
+
var index_js_3 = require("./factory/index.js");
|
|
35
|
+
Object.defineProperty(exports, "createOrchestrator", { enumerable: true, get: function () { return index_js_3.createOrchestrator; } });
|
|
36
|
+
Object.defineProperty(exports, "isValidOrchestratorConfig", { enumerable: true, get: function () { return index_js_3.isValidOrchestratorConfig; } });
|
|
37
|
+
//# 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,0DAAsD;AAA7C,+GAAA,YAAY,OAAA;AACrB,gDAAqD;AAA5C,8GAAA,gBAAgB,OAAA;AAkCzB,gBAAgB;AAChB,8CAK0B;AAJxB,0GAAA,aAAa,OAAA;AACb,0GAAA,aAAa,OAAA;AACb,8GAAA,iBAAiB,OAAA;AACjB,+GAAA,kBAAkB,OAAA;AAGpB,mBAAmB;AACnB,kDAM+B;AAL7B,8GAAA,kBAAkB,OAAA;AAClB,4GAAA,gBAAgB,OAAA;AAChB,4GAAA,gBAAgB,OAAA;AAChB,4GAAA,gBAAgB,OAAA;AAChB,+GAAA,mBAAmB,OAAA;AASrB,mBAAmB;AACnB,iDAM8B;AAL5B,wGAAA,YAAY,OAAA;AACZ,8GAAA,kBAAkB,OAAA;AAClB,0GAAA,cAAc,OAAA;AACd,4GAAA,gBAAgB,OAAA;AAChB,yGAAA,aAAa,OAAA;AAUf,kBAAkB;AAClB,+CAG4B;AAF1B,8GAAA,kBAAkB,OAAA;AAClB,qHAAA,yBAAyB,OAAA"}
|
|
@@ -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,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Base provider implementation with common utilities
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.BaseProvider = void 0;
|
|
7
|
+
class BaseProvider {
|
|
8
|
+
/**
|
|
9
|
+
* Default health check implementation
|
|
10
|
+
* Uses a minimal chat request to verify the provider is working
|
|
11
|
+
*/
|
|
12
|
+
async defaultHealthCheck() {
|
|
13
|
+
try {
|
|
14
|
+
const start = Date.now();
|
|
15
|
+
// Try a minimal chat request with minimal options
|
|
16
|
+
// Note: Some providers may not support all options, so we use minimal ones
|
|
17
|
+
await this.chat([{ role: 'user', content: 'ping' }], { maxTokens: 5, temperature: 0 });
|
|
18
|
+
const latency = Date.now() - start;
|
|
19
|
+
return {
|
|
20
|
+
healthy: true,
|
|
21
|
+
latency,
|
|
22
|
+
lastChecked: new Date(),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
return {
|
|
27
|
+
healthy: false,
|
|
28
|
+
lastChecked: new Date(),
|
|
29
|
+
error: error instanceof Error ? error.message : String(error),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.BaseProvider = BaseProvider;
|
|
35
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/providers/base.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAYH,MAAsB,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;AAxDD,oCAwDC"}
|
|
@@ -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,207 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Cerebras provider implementation
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.CerebrasProvider = void 0;
|
|
7
|
+
const base_js_1 = require("./base.js");
|
|
8
|
+
class CerebrasProvider extends base_js_1.BaseProvider {
|
|
9
|
+
constructor(config) {
|
|
10
|
+
super();
|
|
11
|
+
this.id = config.id;
|
|
12
|
+
this.apiKey = config.apiKey;
|
|
13
|
+
// Default model based on Cerebras documentation
|
|
14
|
+
this.model = config.model || 'llama-3.3-70b';
|
|
15
|
+
// Cerebras Inference API endpoint (OpenAI-compatible)
|
|
16
|
+
this.baseURL = config.baseURL || 'https://api.cerebras.ai/v1';
|
|
17
|
+
this.metadata = {
|
|
18
|
+
id: this.id,
|
|
19
|
+
name: 'Cerebras',
|
|
20
|
+
model: this.model,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
async checkHealth() {
|
|
24
|
+
return this.defaultHealthCheck();
|
|
25
|
+
}
|
|
26
|
+
async chat(messages, options) {
|
|
27
|
+
// Build request body, converting camelCase to snake_case for Cerebras API
|
|
28
|
+
const requestBody = {
|
|
29
|
+
model: this.model,
|
|
30
|
+
messages: this.formatMessages(messages),
|
|
31
|
+
};
|
|
32
|
+
// Add options, converting camelCase to snake_case
|
|
33
|
+
if (options?.temperature !== undefined)
|
|
34
|
+
requestBody.temperature = options.temperature;
|
|
35
|
+
if (options?.maxTokens !== undefined)
|
|
36
|
+
requestBody.max_tokens = options.maxTokens;
|
|
37
|
+
if (options?.topP !== undefined)
|
|
38
|
+
requestBody.top_p = options.topP;
|
|
39
|
+
if (options?.stopSequences !== undefined)
|
|
40
|
+
requestBody.stop = options.stopSequences;
|
|
41
|
+
if (options?.frequencyPenalty !== undefined)
|
|
42
|
+
requestBody.frequency_penalty = options.frequencyPenalty;
|
|
43
|
+
if (options?.presencePenalty !== undefined)
|
|
44
|
+
requestBody.presence_penalty = options.presencePenalty;
|
|
45
|
+
if (options?.seed !== undefined && options.seed !== null)
|
|
46
|
+
requestBody.seed = options.seed;
|
|
47
|
+
if (options?.user !== undefined)
|
|
48
|
+
requestBody.user = options.user;
|
|
49
|
+
// Exclude framework-specific options that shouldn't be sent to the API
|
|
50
|
+
const { maxTokens, topP, stopSequences, responseLanguage, timeout, frequencyPenalty, presencePenalty, seed, user, ...restOptions } = options || {};
|
|
51
|
+
// Add any additional provider-specific options
|
|
52
|
+
Object.assign(requestBody, restOptions);
|
|
53
|
+
const response = await fetch(`${this.baseURL}/chat/completions`, {
|
|
54
|
+
method: 'POST',
|
|
55
|
+
headers: {
|
|
56
|
+
'Content-Type': 'application/json',
|
|
57
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
58
|
+
'User-Agent': '@ai-orchestration/core/0.1.0', // Required by Cerebras to avoid CloudFront blocking
|
|
59
|
+
},
|
|
60
|
+
body: JSON.stringify(requestBody),
|
|
61
|
+
});
|
|
62
|
+
if (!response.ok) {
|
|
63
|
+
const error = await response.text();
|
|
64
|
+
throw new Error(`Cerebras API error: ${response.status} ${error}`);
|
|
65
|
+
}
|
|
66
|
+
const data = await response.json();
|
|
67
|
+
return this.parseResponse(data);
|
|
68
|
+
}
|
|
69
|
+
async chatStream(messages, options) {
|
|
70
|
+
// Build request body, converting camelCase to snake_case for Cerebras API
|
|
71
|
+
const requestBody = {
|
|
72
|
+
model: this.model,
|
|
73
|
+
messages: this.formatMessages(messages),
|
|
74
|
+
stream: true,
|
|
75
|
+
};
|
|
76
|
+
// Add options, converting camelCase to snake_case
|
|
77
|
+
if (options?.temperature !== undefined)
|
|
78
|
+
requestBody.temperature = options.temperature;
|
|
79
|
+
if (options?.maxTokens !== undefined)
|
|
80
|
+
requestBody.max_tokens = options.maxTokens;
|
|
81
|
+
if (options?.topP !== undefined)
|
|
82
|
+
requestBody.top_p = options.topP;
|
|
83
|
+
if (options?.stopSequences !== undefined)
|
|
84
|
+
requestBody.stop = options.stopSequences;
|
|
85
|
+
if (options?.frequencyPenalty !== undefined)
|
|
86
|
+
requestBody.frequency_penalty = options.frequencyPenalty;
|
|
87
|
+
if (options?.presencePenalty !== undefined)
|
|
88
|
+
requestBody.presence_penalty = options.presencePenalty;
|
|
89
|
+
if (options?.seed !== undefined && options.seed !== null)
|
|
90
|
+
requestBody.seed = options.seed;
|
|
91
|
+
if (options?.user !== undefined)
|
|
92
|
+
requestBody.user = options.user;
|
|
93
|
+
// Exclude framework-specific options that shouldn't be sent to the API
|
|
94
|
+
const { maxTokens, topP, stopSequences, responseLanguage, timeout, frequencyPenalty, presencePenalty, seed, user, ...restOptions } = options || {};
|
|
95
|
+
// Add any additional provider-specific options
|
|
96
|
+
Object.assign(requestBody, restOptions);
|
|
97
|
+
const response = await fetch(`${this.baseURL}/chat/completions`, {
|
|
98
|
+
method: 'POST',
|
|
99
|
+
headers: {
|
|
100
|
+
'Content-Type': 'application/json',
|
|
101
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
102
|
+
'User-Agent': '@ai-orchestration/core/0.1.0', // Required by Cerebras to avoid CloudFront blocking
|
|
103
|
+
},
|
|
104
|
+
body: JSON.stringify(requestBody),
|
|
105
|
+
});
|
|
106
|
+
if (!response.ok) {
|
|
107
|
+
const error = await response.text();
|
|
108
|
+
throw new Error(`Cerebras API error: ${response.status} ${error}`);
|
|
109
|
+
}
|
|
110
|
+
if (!response.body) {
|
|
111
|
+
throw new Error('No response body');
|
|
112
|
+
}
|
|
113
|
+
return this.parseStream(response.body);
|
|
114
|
+
}
|
|
115
|
+
formatMessages(messages) {
|
|
116
|
+
return messages.map((msg) => ({
|
|
117
|
+
role: msg.role,
|
|
118
|
+
content: msg.content,
|
|
119
|
+
}));
|
|
120
|
+
}
|
|
121
|
+
parseResponse(response) {
|
|
122
|
+
const data = response;
|
|
123
|
+
const choice = data.choices?.[0];
|
|
124
|
+
if (!choice?.message?.content) {
|
|
125
|
+
throw new Error('Invalid response format from Cerebras');
|
|
126
|
+
}
|
|
127
|
+
return {
|
|
128
|
+
content: choice.message.content,
|
|
129
|
+
usage: data.usage
|
|
130
|
+
? {
|
|
131
|
+
promptTokens: data.usage.prompt_tokens ?? 0,
|
|
132
|
+
completionTokens: data.usage.completion_tokens ?? 0,
|
|
133
|
+
totalTokens: data.usage.total_tokens ?? 0,
|
|
134
|
+
}
|
|
135
|
+
: undefined,
|
|
136
|
+
model: data.model,
|
|
137
|
+
finishReason: choice.finish_reason,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
parseStream(stream) {
|
|
141
|
+
const reader = stream.getReader();
|
|
142
|
+
const decoder = new TextDecoder();
|
|
143
|
+
return new ReadableStream({
|
|
144
|
+
async start(controller) {
|
|
145
|
+
try {
|
|
146
|
+
while (true) {
|
|
147
|
+
const { done, value } = await reader.read();
|
|
148
|
+
if (done) {
|
|
149
|
+
controller.close();
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
const chunk = decoder.decode(value);
|
|
153
|
+
const lines = chunk.split('\n').filter((line) => line.trim());
|
|
154
|
+
for (const line of lines) {
|
|
155
|
+
if (line.startsWith('data: ')) {
|
|
156
|
+
const data = line.slice(6);
|
|
157
|
+
if (data === '[DONE]') {
|
|
158
|
+
controller.close();
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
try {
|
|
162
|
+
const parsed = JSON.parse(data);
|
|
163
|
+
const choice = parsed.choices?.[0];
|
|
164
|
+
const delta = choice?.delta;
|
|
165
|
+
if (delta?.content) {
|
|
166
|
+
controller.enqueue({
|
|
167
|
+
content: delta.content,
|
|
168
|
+
done: false,
|
|
169
|
+
finishReason: choice?.finish_reason,
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
if (choice?.finish_reason) {
|
|
173
|
+
controller.enqueue({
|
|
174
|
+
content: '',
|
|
175
|
+
done: true,
|
|
176
|
+
finishReason: choice.finish_reason,
|
|
177
|
+
usage: parsed.usage
|
|
178
|
+
? {
|
|
179
|
+
promptTokens: parsed.usage.prompt_tokens,
|
|
180
|
+
completionTokens: parsed.usage.completion_tokens,
|
|
181
|
+
totalTokens: parsed.usage.total_tokens,
|
|
182
|
+
}
|
|
183
|
+
: undefined,
|
|
184
|
+
});
|
|
185
|
+
controller.close();
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
catch {
|
|
190
|
+
// Skip invalid JSON
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
controller.error(error);
|
|
198
|
+
}
|
|
199
|
+
finally {
|
|
200
|
+
reader.releaseLock();
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
exports.CerebrasProvider = CerebrasProvider;
|
|
207
|
+
//# 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"}
|