@vybestack/llxprt-code-core 0.1.19-alpha → 0.1.19-beta
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/dist/src/code_assist/converter.d.ts +2 -1
- package/dist/src/code_assist/converter.js +1 -1
- package/dist/src/code_assist/converter.js.map +1 -1
- package/dist/src/code_assist/converter.test.js +48 -1
- package/dist/src/code_assist/converter.test.js.map +1 -1
- package/dist/src/code_assist/oauth2.js +2 -1
- package/dist/src/code_assist/oauth2.js.map +1 -1
- package/dist/src/code_assist/server.test.js +4 -1
- package/dist/src/code_assist/server.test.js.map +1 -1
- package/dist/src/config/config.d.ts +54 -1
- package/dist/src/config/config.ephemeral.test.d.ts +6 -0
- package/dist/src/config/config.ephemeral.test.js +152 -0
- package/dist/src/config/config.ephemeral.test.js.map +1 -0
- package/dist/src/config/config.js +92 -0
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/core/logger.d.ts +1 -0
- package/dist/src/core/logger.js +18 -0
- package/dist/src/core/logger.js.map +1 -1
- package/dist/src/core/logger.test.js +29 -0
- package/dist/src/core/logger.test.js.map +1 -1
- package/dist/src/core/loggingContentGenerator.d.ts +24 -0
- package/dist/src/core/loggingContentGenerator.js +89 -0
- package/dist/src/core/loggingContentGenerator.js.map +1 -0
- package/dist/src/core/nonInteractiveToolExecutor.js +17 -0
- package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
- package/dist/src/ide/ide-client.d.ts +1 -1
- package/dist/src/ide/ide-client.js +21 -7
- package/dist/src/ide/ide-client.js.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.js +3 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/providers/IProviderManager.d.ts +5 -0
- package/dist/src/providers/LoggingProviderWrapper.d.ts +53 -0
- package/dist/src/providers/LoggingProviderWrapper.js +347 -0
- package/dist/src/providers/LoggingProviderWrapper.js.map +1 -0
- package/dist/src/providers/ProviderManager.d.ts +20 -0
- package/dist/src/providers/ProviderManager.js +214 -1
- package/dist/src/providers/ProviderManager.js.map +1 -1
- package/dist/src/providers/logging/ProviderContentExtractor.d.ts +27 -0
- package/dist/src/providers/logging/ProviderContentExtractor.js +198 -0
- package/dist/src/providers/logging/ProviderContentExtractor.js.map +1 -0
- package/dist/src/providers/logging/ProviderPerformanceTracker.d.ts +43 -0
- package/dist/src/providers/logging/ProviderPerformanceTracker.js +98 -0
- package/dist/src/providers/logging/ProviderPerformanceTracker.js.map +1 -0
- package/dist/src/providers/types.d.ts +47 -0
- package/dist/src/services/git-stats-service.d.ts +32 -0
- package/dist/src/services/git-stats-service.js +22 -0
- package/dist/src/services/git-stats-service.js.map +1 -0
- package/dist/src/services/loopDetectionService.js +10 -6
- package/dist/src/services/loopDetectionService.js.map +1 -1
- package/dist/src/services/loopDetectionService.test.js +139 -0
- package/dist/src/services/loopDetectionService.test.js.map +1 -1
- package/dist/src/services/shellExecutionService.js +44 -8
- package/dist/src/services/shellExecutionService.js.map +1 -1
- package/dist/src/storage/ConversationFileWriter.d.ts +16 -0
- package/dist/src/storage/ConversationFileWriter.js +69 -0
- package/dist/src/storage/ConversationFileWriter.js.map +1 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +8 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +56 -3
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.d.ts +6 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +187 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +5 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +11 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
- package/dist/src/telemetry/constants.d.ts +5 -0
- package/dist/src/telemetry/constants.js +5 -0
- package/dist/src/telemetry/constants.js.map +1 -1
- package/dist/src/telemetry/loggers.d.ts +5 -1
- package/dist/src/telemetry/loggers.js +87 -1
- package/dist/src/telemetry/loggers.js.map +1 -1
- package/dist/src/telemetry/loggers.test.js +2 -1
- package/dist/src/telemetry/loggers.test.js.map +1 -1
- package/dist/src/telemetry/metrics.d.ts +2 -1
- package/dist/src/telemetry/metrics.js +7 -1
- package/dist/src/telemetry/metrics.js.map +1 -1
- package/dist/src/telemetry/metrics.test.js +50 -0
- package/dist/src/telemetry/metrics.test.js.map +1 -1
- package/dist/src/telemetry/tool-call-decision.d.ts +13 -0
- package/dist/src/telemetry/tool-call-decision.js +29 -0
- package/dist/src/telemetry/tool-call-decision.js.map +1 -0
- package/dist/src/telemetry/types.d.ts +56 -1
- package/dist/src/telemetry/types.js +123 -0
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.d.ts +2 -1
- package/dist/src/telemetry/uiTelemetry.js +1 -1
- package/dist/src/telemetry/uiTelemetry.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.test.js +2 -1
- package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
- package/dist/src/tools/diffOptions.d.ts +2 -0
- package/dist/src/tools/diffOptions.js +28 -0
- package/dist/src/tools/diffOptions.js.map +1 -1
- package/dist/src/tools/diffOptions.test.d.ts +6 -0
- package/dist/src/tools/diffOptions.test.js +119 -0
- package/dist/src/tools/diffOptions.test.js.map +1 -0
- package/dist/src/tools/edit.d.ts +4 -0
- package/dist/src/tools/edit.js +38 -8
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/edit.test.js +1 -0
- package/dist/src/tools/edit.test.js.map +1 -1
- package/dist/src/tools/mcp-client.d.ts +4 -3
- package/dist/src/tools/mcp-client.js +23 -6
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-client.test.js +44 -2
- package/dist/src/tools/mcp-client.test.js.map +1 -1
- package/dist/src/tools/read-file.js +34 -2
- package/dist/src/tools/read-file.js.map +1 -1
- package/dist/src/tools/read-file.test.js +8 -2
- package/dist/src/tools/read-file.test.js.map +1 -1
- package/dist/src/tools/shell.test.js +17 -0
- package/dist/src/tools/shell.test.js.map +1 -1
- package/dist/src/tools/todo-pause.d.ts +22 -0
- package/dist/src/tools/todo-pause.js +93 -0
- package/dist/src/tools/todo-pause.js.map +1 -0
- package/dist/src/tools/todo-pause.spec.d.ts +6 -0
- package/dist/src/tools/todo-pause.spec.js +287 -0
- package/dist/src/tools/todo-pause.spec.js.map +1 -0
- package/dist/src/tools/tool-error.d.ts +4 -0
- package/dist/src/tools/tool-error.js +4 -0
- package/dist/src/tools/tool-error.js.map +1 -1
- package/dist/src/tools/tool-registry.js +3 -3
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/tool-registry.test.js +2 -2
- package/dist/src/tools/tool-registry.test.js.map +1 -1
- package/dist/src/tools/tools.d.ts +7 -0
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/web-search.test.js +1 -0
- package/dist/src/tools/web-search.test.js.map +1 -1
- package/dist/src/tools/write-file.d.ts +4 -0
- package/dist/src/tools/write-file.js +90 -16
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/tools/write-file.test.js +5 -4
- package/dist/src/tools/write-file.test.js.map +1 -1
- package/dist/src/types/modelParams.d.ts +2 -0
- package/dist/src/utils/environmentContext.js +1 -1
- package/dist/src/utils/errors.d.ts +3 -0
- package/dist/src/utils/errors.js +6 -0
- package/dist/src/utils/errors.js.map +1 -1
- package/dist/src/utils/fileUtils.d.ts +7 -0
- package/dist/src/utils/fileUtils.js +9 -0
- package/dist/src/utils/fileUtils.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,17 +3,67 @@
|
|
|
3
3
|
* Copyright 2025 Vybestack LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import { LoggingProviderWrapper } from './LoggingProviderWrapper.js';
|
|
7
|
+
import { logProviderSwitch, logProviderCapability, } from '../telemetry/loggers.js';
|
|
8
|
+
import { ProviderSwitchEvent, ProviderCapabilityEvent, } from '../telemetry/types.js';
|
|
6
9
|
export class ProviderManager {
|
|
7
10
|
providers;
|
|
8
11
|
activeProviderName;
|
|
9
12
|
serverToolsProvider;
|
|
13
|
+
config;
|
|
14
|
+
providerCapabilities = new Map();
|
|
15
|
+
currentConversationId;
|
|
10
16
|
constructor() {
|
|
11
17
|
this.providers = new Map();
|
|
12
18
|
this.activeProviderName = ''; // No default provider
|
|
13
19
|
this.serverToolsProvider = null;
|
|
14
20
|
}
|
|
21
|
+
setConfig(config) {
|
|
22
|
+
const oldLoggingEnabled = this.config?.getConversationLoggingEnabled() ?? false;
|
|
23
|
+
const newLoggingEnabled = config.getConversationLoggingEnabled();
|
|
24
|
+
this.config = config;
|
|
25
|
+
// If logging state changed, update provider wrapping
|
|
26
|
+
if (oldLoggingEnabled !== newLoggingEnabled) {
|
|
27
|
+
this.updateProviderWrapping();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
updateProviderWrapping() {
|
|
31
|
+
// Re-wrap all providers based on current logging state
|
|
32
|
+
const loggingEnabled = this.config?.getConversationLoggingEnabled() ?? false;
|
|
33
|
+
const providers = new Map(this.providers);
|
|
34
|
+
for (const [name, provider] of providers) {
|
|
35
|
+
// Unwrap if it's already wrapped
|
|
36
|
+
let baseProvider = provider;
|
|
37
|
+
if ('wrappedProvider' in provider && provider.wrappedProvider) {
|
|
38
|
+
baseProvider = provider.wrappedProvider;
|
|
39
|
+
}
|
|
40
|
+
// Re-wrap based on current logging state
|
|
41
|
+
let finalProvider = baseProvider;
|
|
42
|
+
if (loggingEnabled) {
|
|
43
|
+
finalProvider = new LoggingProviderWrapper(baseProvider, this.config);
|
|
44
|
+
}
|
|
45
|
+
this.providers.set(name, finalProvider);
|
|
46
|
+
// Update server tools provider reference if needed
|
|
47
|
+
if (this.serverToolsProvider && this.serverToolsProvider.name === name) {
|
|
48
|
+
this.serverToolsProvider = finalProvider;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
15
52
|
registerProvider(provider) {
|
|
16
|
-
|
|
53
|
+
// Wrap provider with logging if conversation logging is enabled
|
|
54
|
+
let finalProvider = provider;
|
|
55
|
+
if (this.config?.getConversationLoggingEnabled()) {
|
|
56
|
+
finalProvider = new LoggingProviderWrapper(provider, this.config);
|
|
57
|
+
}
|
|
58
|
+
this.providers.set(provider.name, finalProvider);
|
|
59
|
+
// Capture provider capabilities
|
|
60
|
+
const capabilities = this.captureProviderCapabilities(provider);
|
|
61
|
+
this.providerCapabilities.set(provider.name, capabilities);
|
|
62
|
+
// Log provider capability information if logging enabled
|
|
63
|
+
if (this.config?.getConversationLoggingEnabled()) {
|
|
64
|
+
const context = this.createProviderContext(provider, capabilities);
|
|
65
|
+
logProviderCapability(this.config, new ProviderCapabilityEvent(provider.name, capabilities, context));
|
|
66
|
+
}
|
|
17
67
|
// If this is the default provider and no provider is active, set it as active
|
|
18
68
|
if (provider.isDefault && !this.activeProviderName) {
|
|
19
69
|
this.activeProviderName = provider.name;
|
|
@@ -44,6 +94,12 @@ export class ProviderManager {
|
|
|
44
94
|
}
|
|
45
95
|
}
|
|
46
96
|
}
|
|
97
|
+
// Log provider switch if conversation logging enabled
|
|
98
|
+
if (this.config?.getConversationLoggingEnabled() &&
|
|
99
|
+
previousProviderName &&
|
|
100
|
+
previousProviderName !== name) {
|
|
101
|
+
logProviderSwitch(this.config, new ProviderSwitchEvent(previousProviderName, name, this.generateConversationId(), this.isContextPreserved(previousProviderName, name)));
|
|
102
|
+
}
|
|
47
103
|
this.activeProviderName = name;
|
|
48
104
|
// If switching to Gemini, use it as both active and serverTools provider
|
|
49
105
|
// BUT only if we don't already have a Gemini serverToolsProvider with auth state
|
|
@@ -112,5 +168,162 @@ export class ProviderManager {
|
|
|
112
168
|
setServerToolsProvider(provider) {
|
|
113
169
|
this.serverToolsProvider = provider;
|
|
114
170
|
}
|
|
171
|
+
generateConversationId() {
|
|
172
|
+
// Generate unique conversation ID for session
|
|
173
|
+
return `conv_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
174
|
+
}
|
|
175
|
+
isContextPreserved(fromProvider, toProvider) {
|
|
176
|
+
// Analyze whether context can be preserved between providers
|
|
177
|
+
const fromCapabilities = this.providerCapabilities.get(fromProvider);
|
|
178
|
+
const toCapabilities = this.providerCapabilities.get(toProvider);
|
|
179
|
+
if (!fromCapabilities || !toCapabilities) {
|
|
180
|
+
return false; // Can't analyze without capabilities
|
|
181
|
+
}
|
|
182
|
+
// Context is better preserved between providers with similar capabilities
|
|
183
|
+
const capabilityScore = this.calculateCapabilityCompatibility(fromCapabilities, toCapabilities);
|
|
184
|
+
// Context is considered preserved if compatibility is high
|
|
185
|
+
return capabilityScore > 0.7;
|
|
186
|
+
}
|
|
187
|
+
captureProviderCapabilities(provider) {
|
|
188
|
+
return {
|
|
189
|
+
supportsStreaming: true, // All current providers support streaming
|
|
190
|
+
supportsTools: provider.getServerTools().length > 0,
|
|
191
|
+
supportsVision: this.detectVisionSupport(provider),
|
|
192
|
+
maxTokens: this.getProviderMaxTokens(provider),
|
|
193
|
+
supportedFormats: this.getSupportedToolFormats(provider),
|
|
194
|
+
hasModelSelection: typeof provider.setModel === 'function',
|
|
195
|
+
hasApiKeyConfig: typeof provider.setApiKey === 'function',
|
|
196
|
+
hasBaseUrlConfig: typeof provider.setBaseUrl === 'function',
|
|
197
|
+
supportsPaidMode: typeof provider.isPaidMode === 'function',
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
detectVisionSupport(provider) {
|
|
201
|
+
// Provider-specific vision detection logic
|
|
202
|
+
switch (provider.name) {
|
|
203
|
+
case 'gemini': {
|
|
204
|
+
return true;
|
|
205
|
+
}
|
|
206
|
+
case 'openai': {
|
|
207
|
+
const model = provider.getCurrentModel?.() || '';
|
|
208
|
+
return model.includes('vision') || model.includes('gpt-4');
|
|
209
|
+
}
|
|
210
|
+
case 'anthropic': {
|
|
211
|
+
const claudeModel = provider.getCurrentModel?.() || '';
|
|
212
|
+
return claudeModel.includes('claude-3');
|
|
213
|
+
}
|
|
214
|
+
default:
|
|
215
|
+
return false;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
getProviderMaxTokens(provider) {
|
|
219
|
+
const model = provider.getCurrentModel?.() || '';
|
|
220
|
+
switch (provider.name) {
|
|
221
|
+
case 'gemini':
|
|
222
|
+
if (model.includes('pro'))
|
|
223
|
+
return 32768;
|
|
224
|
+
if (model.includes('flash'))
|
|
225
|
+
return 8192;
|
|
226
|
+
return 8192;
|
|
227
|
+
case 'openai':
|
|
228
|
+
if (model.includes('gpt-4'))
|
|
229
|
+
return 8192;
|
|
230
|
+
if (model.includes('gpt-3.5'))
|
|
231
|
+
return 4096;
|
|
232
|
+
return 4096;
|
|
233
|
+
case 'anthropic':
|
|
234
|
+
if (model.includes('claude-3'))
|
|
235
|
+
return 200000;
|
|
236
|
+
return 100000;
|
|
237
|
+
default:
|
|
238
|
+
return 4096;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
getSupportedToolFormats(provider) {
|
|
242
|
+
switch (provider.name) {
|
|
243
|
+
case 'gemini':
|
|
244
|
+
return ['function_calling', 'gemini_tools'];
|
|
245
|
+
case 'openai':
|
|
246
|
+
return ['function_calling', 'json_schema', 'hermes'];
|
|
247
|
+
case 'anthropic':
|
|
248
|
+
return ['xml_tools', 'anthropic_tools'];
|
|
249
|
+
default:
|
|
250
|
+
return [];
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
createProviderContext(provider, capabilities) {
|
|
254
|
+
return {
|
|
255
|
+
providerName: provider.name,
|
|
256
|
+
currentModel: provider.getCurrentModel?.() || 'unknown',
|
|
257
|
+
toolFormat: provider.getToolFormat?.() || 'unknown',
|
|
258
|
+
isPaidMode: provider.isPaidMode?.() || false,
|
|
259
|
+
capabilities,
|
|
260
|
+
sessionStartTime: Date.now(),
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
calculateCapabilityCompatibility(from, to) {
|
|
264
|
+
let score = 0;
|
|
265
|
+
let totalChecks = 0;
|
|
266
|
+
// Check tool support compatibility
|
|
267
|
+
totalChecks++;
|
|
268
|
+
if (from.supportsTools === to.supportsTools)
|
|
269
|
+
score++;
|
|
270
|
+
// Check vision support compatibility
|
|
271
|
+
totalChecks++;
|
|
272
|
+
if (from.supportsVision === to.supportsVision)
|
|
273
|
+
score++;
|
|
274
|
+
// Check streaming compatibility (all providers support streaming currently)
|
|
275
|
+
totalChecks++;
|
|
276
|
+
if (from.supportsStreaming === to.supportsStreaming)
|
|
277
|
+
score++;
|
|
278
|
+
// Check tool format compatibility
|
|
279
|
+
totalChecks++;
|
|
280
|
+
const hasCommonFormats = from.supportedFormats.some((format) => to.supportedFormats.includes(format));
|
|
281
|
+
if (hasCommonFormats)
|
|
282
|
+
score++;
|
|
283
|
+
return score / totalChecks;
|
|
284
|
+
}
|
|
285
|
+
// Public API methods for provider capabilities
|
|
286
|
+
getCurrentConversationId() {
|
|
287
|
+
if (!this.currentConversationId) {
|
|
288
|
+
this.currentConversationId = this.generateConversationId();
|
|
289
|
+
}
|
|
290
|
+
return this.currentConversationId;
|
|
291
|
+
}
|
|
292
|
+
resetConversationContext() {
|
|
293
|
+
this.currentConversationId = this.generateConversationId();
|
|
294
|
+
}
|
|
295
|
+
getProviderCapabilities(providerName) {
|
|
296
|
+
const name = providerName || this.activeProviderName;
|
|
297
|
+
return this.providerCapabilities.get(name);
|
|
298
|
+
}
|
|
299
|
+
compareProviders(provider1, provider2) {
|
|
300
|
+
const cap1 = this.providerCapabilities.get(provider1);
|
|
301
|
+
const cap2 = this.providerCapabilities.get(provider2);
|
|
302
|
+
if (!cap1 || !cap2) {
|
|
303
|
+
throw new Error('Cannot compare providers: capabilities not available');
|
|
304
|
+
}
|
|
305
|
+
return {
|
|
306
|
+
provider1,
|
|
307
|
+
provider2,
|
|
308
|
+
capabilities: {
|
|
309
|
+
[provider1]: cap1,
|
|
310
|
+
[provider2]: cap2,
|
|
311
|
+
},
|
|
312
|
+
compatibility: this.calculateCapabilityCompatibility(cap1, cap2),
|
|
313
|
+
recommendation: this.generateProviderRecommendation(provider1, provider2, cap1, cap2),
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
generateProviderRecommendation(provider1, provider2, cap1, cap2) {
|
|
317
|
+
if (cap1.maxTokens > cap2.maxTokens) {
|
|
318
|
+
return `${provider1} supports longer contexts (${cap1.maxTokens} vs ${cap2.maxTokens} tokens)`;
|
|
319
|
+
}
|
|
320
|
+
if (cap1.supportsVision && !cap2.supportsVision) {
|
|
321
|
+
return `${provider1} supports vision capabilities`;
|
|
322
|
+
}
|
|
323
|
+
if (cap1.supportedFormats.length > cap2.supportedFormats.length) {
|
|
324
|
+
return `${provider1} supports more tool formats`;
|
|
325
|
+
}
|
|
326
|
+
return 'Providers have similar capabilities';
|
|
327
|
+
}
|
|
115
328
|
}
|
|
116
329
|
//# sourceMappingURL=ProviderManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderManager.js","sourceRoot":"","sources":["../../../src/providers/ProviderManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ProviderManager.js","sourceRoot":"","sources":["../../../src/providers/ProviderManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EACL,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAO/B,MAAM,OAAO,eAAe;IAClB,SAAS,CAAyB;IAClC,kBAAkB,CAAS;IAC3B,mBAAmB,CAAmB;IACtC,MAAM,CAAU;IAChB,oBAAoB,GAAsC,IAAI,GAAG,EAAE,CAAC;IACpE,qBAAqB,CAAU;IAEvC;QACE,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAqB,CAAC;QAC9C,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC,CAAC,sBAAsB;QACpD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAClC,CAAC;IAED,SAAS,CAAC,MAAc;QACtB,MAAM,iBAAiB,GACrB,IAAI,CAAC,MAAM,EAAE,6BAA6B,EAAE,IAAI,KAAK,CAAC;QACxD,MAAM,iBAAiB,GAAG,MAAM,CAAC,6BAA6B,EAAE,CAAC;QAEjE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,qDAAqD;QACrD,IAAI,iBAAiB,KAAK,iBAAiB,EAAE,CAAC;YAC5C,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAChC,CAAC;IACH,CAAC;IAEO,sBAAsB;QAC5B,uDAAuD;QACvD,MAAM,cAAc,GAClB,IAAI,CAAC,MAAM,EAAE,6BAA6B,EAAE,IAAI,KAAK,CAAC;QACxD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE1C,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,SAAS,EAAE,CAAC;YACzC,iCAAiC;YACjC,IAAI,YAAY,GAAG,QAAQ,CAAC;YAC5B,IAAI,iBAAiB,IAAI,QAAQ,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC;gBAC9D,YAAY,GAAG,QAAQ,CAAC,eAA4B,CAAC;YACvD,CAAC;YAED,yCAAyC;YACzC,IAAI,aAAa,GAAG,YAAY,CAAC;YACjC,IAAI,cAAc,EAAE,CAAC;gBACnB,aAAa,GAAG,IAAI,sBAAsB,CAAC,YAAY,EAAE,IAAI,CAAC,MAAO,CAAC,CAAC;YACzE,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;YAExC,mDAAmD;YACnD,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBACvE,IAAI,CAAC,mBAAmB,GAAG,aAAa,CAAC;YAC3C,CAAC;QACH,CAAC;IACH,CAAC;IAED,gBAAgB,CAAC,QAAmB;QAClC,gEAAgE;QAChE,IAAI,aAAa,GAAG,QAAQ,CAAC;QAC7B,IAAI,IAAI,CAAC,MAAM,EAAE,6BAA6B,EAAE,EAAE,CAAC;YACjD,aAAa,GAAG,IAAI,sBAAsB,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAEjD,gCAAgC;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;QAChE,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAE3D,yDAAyD;QACzD,IAAI,IAAI,CAAC,MAAM,EAAE,6BAA6B,EAAE,EAAE,CAAC;YACjD,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YACnE,qBAAqB,CACnB,IAAI,CAAC,MAAM,EACX,IAAI,uBAAuB,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,CAClE,CAAC;QACJ,CAAC;QAED,8EAA8E;QAC9E,IAAI,QAAQ,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACnD,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC1C,CAAC;QAED,wEAAwE;QACxE,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC5D,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC;QACtC,CAAC;QAED,8EAA8E;QAC9E,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,kBAAkB,KAAK,QAAQ,EAAE,CAAC;YACvE,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC;QACtC,CAAC;IACH,CAAC;IAED,iBAAiB,CAAC,IAAY;QAC5B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACxC,CAAC;QAED,kEAAkE;QAClE,MAAM,oBAAoB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAErD,0DAA0D;QAC1D,kDAAkD;QAClD,IAAI,oBAAoB,IAAI,oBAAoB,KAAK,IAAI,EAAE,CAAC;YAC1D,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAClE,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,UAAU,EAAE,CAAC;gBACpD,qEAAqE;gBACrE,IAAI,gBAAgB,KAAK,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBAClD,gBAAgB,CAAC,UAAU,EAAE,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;QAED,sDAAsD;QACtD,IACE,IAAI,CAAC,MAAM,EAAE,6BAA6B,EAAE;YAC5C,oBAAoB;YACpB,oBAAoB,KAAK,IAAI,EAC7B,CAAC;YACD,iBAAiB,CACf,IAAI,CAAC,MAAM,EACX,IAAI,mBAAmB,CACrB,oBAAoB,EACpB,IAAI,EACJ,IAAI,CAAC,sBAAsB,EAAE,EAC7B,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,IAAI,CAAC,CACpD,CACF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAE/B,yEAAyE;QACzE,iFAAiF;QACjF,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,8EAA8E;YAC9E,IACE,CAAC,IAAI,CAAC,mBAAmB;gBACzB,IAAI,CAAC,mBAAmB,CAAC,IAAI,KAAK,QAAQ,EAC1C,CAAC;gBACD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;YAC9D,CAAC;QACH,CAAC;QACD,oEAAoE;QACpE,2DAA2D;aACtD,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnE,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;QAClE,CAAC;IACH,CAAC;IAED,mBAAmB;QACjB,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;IAC/B,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC7D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,YAAqB;QAC5C,IAAI,QAA+B,CAAC;QAEpC,IAAI,YAAY,EAAE,CAAC;YACjB,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,aAAa,YAAY,aAAa,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACtC,CAAC;QAED,OAAO,QAAQ,CAAC,SAAS,EAAE,CAAC;IAC9B,CAAC;IAED,aAAa;QACX,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,qBAAqB;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAED,iBAAiB;QACf,OAAO,CACL,IAAI,CAAC,kBAAkB,KAAK,EAAE;YAC9B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAC5C,CAAC;IACJ,CAAC;IAED,sBAAsB;QACpB,yDAAyD;QACzD,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,mBAAmB,CAAC;QAClC,CAAC;QAED,4CAA4C;QAC5C,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAI,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,mBAAmB,GAAG,cAAc,CAAC;YAC1C,OAAO,cAAc,CAAC;QACxB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sBAAsB,CAAC,QAA0B;QAC/C,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC;IACtC,CAAC;IAEO,sBAAsB;QAC5B,8CAA8C;QAC9C,OAAO,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACzE,CAAC;IAEO,kBAAkB,CACxB,YAAoB,EACpB,UAAkB;QAElB,6DAA6D;QAC7D,MAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACrE,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAEjE,IAAI,CAAC,gBAAgB,IAAI,CAAC,cAAc,EAAE,CAAC;YACzC,OAAO,KAAK,CAAC,CAAC,qCAAqC;QACrD,CAAC;QAED,0EAA0E;QAC1E,MAAM,eAAe,GAAG,IAAI,CAAC,gCAAgC,CAC3D,gBAAgB,EAChB,cAAc,CACf,CAAC;QAEF,2DAA2D;QAC3D,OAAO,eAAe,GAAG,GAAG,CAAC;IAC/B,CAAC;IAEO,2BAA2B,CACjC,QAAmB;QAEnB,OAAO;YACL,iBAAiB,EAAE,IAAI,EAAE,0CAA0C;YACnE,aAAa,EAAE,QAAQ,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC;YACnD,cAAc,EAAE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;YAClD,SAAS,EAAE,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;YAC9C,gBAAgB,EAAE,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC;YACxD,iBAAiB,EAAE,OAAO,QAAQ,CAAC,QAAQ,KAAK,UAAU;YAC1D,eAAe,EAAE,OAAO,QAAQ,CAAC,SAAS,KAAK,UAAU;YACzD,gBAAgB,EAAE,OAAO,QAAQ,CAAC,UAAU,KAAK,UAAU;YAC3D,gBAAgB,EAAE,OAAO,QAAQ,CAAC,UAAU,KAAK,UAAU;SAC5D,CAAC;IACJ,CAAC;IAEO,mBAAmB,CAAC,QAAmB;QAC7C,2CAA2C;QAC3C,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;YACtB,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,OAAO,IAAI,CAAC;YACd,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,CAAC;gBACjD,OAAO,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC7D,CAAC;YACD,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,WAAW,GAAG,QAAQ,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,CAAC;gBACvD,OAAO,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC1C,CAAC;YACD;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;IAEO,oBAAoB,CAAC,QAAmB;QAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,CAAC;QAEjD,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;YACtB,KAAK,QAAQ;gBACX,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACxC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAAE,OAAO,IAAI,CAAC;gBACzC,OAAO,IAAI,CAAC;YACd,KAAK,QAAQ;gBACX,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAAE,OAAO,IAAI,CAAC;gBACzC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;oBAAE,OAAO,IAAI,CAAC;gBAC3C,OAAO,IAAI,CAAC;YACd,KAAK,WAAW;gBACd,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;oBAAE,OAAO,MAAM,CAAC;gBAC9C,OAAO,MAAM,CAAC;YAChB;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IAEO,uBAAuB,CAAC,QAAmB;QACjD,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;YACtB,KAAK,QAAQ;gBACX,OAAO,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;YAC9C,KAAK,QAAQ;gBACX,OAAO,CAAC,kBAAkB,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;YACvD,KAAK,WAAW;gBACd,OAAO,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;YAC1C;gBACE,OAAO,EAAE,CAAC;QACd,CAAC;IACH,CAAC;IAEO,qBAAqB,CAC3B,QAAmB,EACnB,YAAkC;QAElC,OAAO;YACL,YAAY,EAAE,QAAQ,CAAC,IAAI;YAC3B,YAAY,EAAE,QAAQ,CAAC,eAAe,EAAE,EAAE,IAAI,SAAS;YACvD,UAAU,EAAE,QAAQ,CAAC,aAAa,EAAE,EAAE,IAAI,SAAS;YACnD,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,EAAE,IAAI,KAAK;YAC5C,YAAY;YACZ,gBAAgB,EAAE,IAAI,CAAC,GAAG,EAAE;SAC7B,CAAC;IACJ,CAAC;IAEO,gCAAgC,CACtC,IAA0B,EAC1B,EAAwB;QAExB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,WAAW,GAAG,CAAC,CAAC;QAEpB,mCAAmC;QACnC,WAAW,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,aAAa,KAAK,EAAE,CAAC,aAAa;YAAE,KAAK,EAAE,CAAC;QAErD,qCAAqC;QACrC,WAAW,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,cAAc,KAAK,EAAE,CAAC,cAAc;YAAE,KAAK,EAAE,CAAC;QAEvD,4EAA4E;QAC5E,WAAW,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,iBAAiB,KAAK,EAAE,CAAC,iBAAiB;YAAE,KAAK,EAAE,CAAC;QAE7D,kCAAkC;QAClC,WAAW,EAAE,CAAC;QACd,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAC7D,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,CACrC,CAAC;QACF,IAAI,gBAAgB;YAAE,KAAK,EAAE,CAAC;QAE9B,OAAO,KAAK,GAAG,WAAW,CAAC;IAC7B,CAAC;IAED,+CAA+C;IAE/C,wBAAwB;QACtB,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAChC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC7D,CAAC;QACD,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACpC,CAAC;IAED,wBAAwB;QACtB,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAC7D,CAAC;IAED,uBAAuB,CACrB,YAAqB;QAErB,MAAM,IAAI,GAAG,YAAY,IAAI,IAAI,CAAC,kBAAkB,CAAC;QACrD,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,gBAAgB,CAAC,SAAiB,EAAE,SAAiB;QACnD,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEtD,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO;YACL,SAAS;YACT,SAAS;YACT,YAAY,EAAE;gBACZ,CAAC,SAAS,CAAC,EAAE,IAAI;gBACjB,CAAC,SAAS,CAAC,EAAE,IAAI;aAClB;YACD,aAAa,EAAE,IAAI,CAAC,gCAAgC,CAAC,IAAI,EAAE,IAAI,CAAC;YAChE,cAAc,EAAE,IAAI,CAAC,8BAA8B,CACjD,SAAS,EACT,SAAS,EACT,IAAI,EACJ,IAAI,CACL;SACF,CAAC;IACJ,CAAC;IAEO,8BAA8B,CACpC,SAAiB,EACjB,SAAiB,EACjB,IAA0B,EAC1B,IAA0B;QAE1B,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACpC,OAAO,GAAG,SAAS,8BAA8B,IAAI,CAAC,SAAS,OAAO,IAAI,CAAC,SAAS,UAAU,CAAC;QACjG,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YAChD,OAAO,GAAG,SAAS,+BAA+B,CAAC;QACrD,CAAC;QAED,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;YAChE,OAAO,GAAG,SAAS,6BAA6B,CAAC;QACnD,CAAC;QAED,OAAO,qCAAqC,CAAC;IAC/C,CAAC;CACF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Vybestack LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { ToolCall } from '../types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Utility class for extracting content and tool calls from provider-specific streaming responses
|
|
9
|
+
*/
|
|
10
|
+
export declare class ProviderContentExtractor {
|
|
11
|
+
/**
|
|
12
|
+
* Extract text content from a streaming chunk based on provider format
|
|
13
|
+
*/
|
|
14
|
+
extractContentFromChunk(chunk: unknown): string;
|
|
15
|
+
/**
|
|
16
|
+
* Extract tool calls from a streaming chunk based on provider format
|
|
17
|
+
*/
|
|
18
|
+
extractToolCallsFromChunk(chunk: unknown): ToolCall[];
|
|
19
|
+
private extractGeminiContent;
|
|
20
|
+
private extractOpenAIContent;
|
|
21
|
+
private extractAnthropicContent;
|
|
22
|
+
private extractGenericContent;
|
|
23
|
+
private extractGeminiToolCalls;
|
|
24
|
+
private extractOpenAIToolCalls;
|
|
25
|
+
private extractAnthropicToolCalls;
|
|
26
|
+
private generateToolCallId;
|
|
27
|
+
}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Vybestack LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Utility class for extracting content and tool calls from provider-specific streaming responses
|
|
8
|
+
*/
|
|
9
|
+
export class ProviderContentExtractor {
|
|
10
|
+
/**
|
|
11
|
+
* Extract text content from a streaming chunk based on provider format
|
|
12
|
+
*/
|
|
13
|
+
extractContentFromChunk(chunk) {
|
|
14
|
+
if (!chunk || typeof chunk !== 'object') {
|
|
15
|
+
return '';
|
|
16
|
+
}
|
|
17
|
+
try {
|
|
18
|
+
// Handle Gemini format
|
|
19
|
+
if ('candidates' in chunk &&
|
|
20
|
+
Array.isArray(chunk.candidates)) {
|
|
21
|
+
return this.extractGeminiContent(chunk);
|
|
22
|
+
}
|
|
23
|
+
// Handle OpenAI format
|
|
24
|
+
if ('choices' in chunk &&
|
|
25
|
+
Array.isArray(chunk.choices)) {
|
|
26
|
+
return this.extractOpenAIContent(chunk);
|
|
27
|
+
}
|
|
28
|
+
// Handle Anthropic format
|
|
29
|
+
if ('type' in chunk) {
|
|
30
|
+
return this.extractAnthropicContent(chunk);
|
|
31
|
+
}
|
|
32
|
+
// Fallback: try to extract any text content
|
|
33
|
+
return this.extractGenericContent(chunk);
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
console.warn('Error extracting content from chunk:', error);
|
|
37
|
+
return '';
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Extract tool calls from a streaming chunk based on provider format
|
|
42
|
+
*/
|
|
43
|
+
extractToolCallsFromChunk(chunk) {
|
|
44
|
+
if (!chunk || typeof chunk !== 'object') {
|
|
45
|
+
return [];
|
|
46
|
+
}
|
|
47
|
+
try {
|
|
48
|
+
// Handle Gemini function calls
|
|
49
|
+
if ('candidates' in chunk) {
|
|
50
|
+
return this.extractGeminiToolCalls(chunk);
|
|
51
|
+
}
|
|
52
|
+
// Handle OpenAI function calls
|
|
53
|
+
if ('choices' in chunk) {
|
|
54
|
+
return this.extractOpenAIToolCalls(chunk);
|
|
55
|
+
}
|
|
56
|
+
// Handle Anthropic tool use
|
|
57
|
+
if ('type' in chunk) {
|
|
58
|
+
return this.extractAnthropicToolCalls(chunk);
|
|
59
|
+
}
|
|
60
|
+
return [];
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
console.warn('Error extracting tool calls from chunk:', error);
|
|
64
|
+
return [];
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
extractGeminiContent(chunk) {
|
|
68
|
+
const candidates = chunk.candidates;
|
|
69
|
+
const candidate = candidates?.[0];
|
|
70
|
+
if (!candidate)
|
|
71
|
+
return '';
|
|
72
|
+
// Handle text content
|
|
73
|
+
const content = candidate.content;
|
|
74
|
+
const parts = content?.parts;
|
|
75
|
+
if (parts) {
|
|
76
|
+
const textParts = parts
|
|
77
|
+
.filter((part) => part.text)
|
|
78
|
+
.map((part) => part.text);
|
|
79
|
+
return textParts.join('');
|
|
80
|
+
}
|
|
81
|
+
return '';
|
|
82
|
+
}
|
|
83
|
+
extractOpenAIContent(chunk) {
|
|
84
|
+
const choices = chunk.choices;
|
|
85
|
+
const choice = choices?.[0];
|
|
86
|
+
if (!choice)
|
|
87
|
+
return '';
|
|
88
|
+
// Handle streaming content
|
|
89
|
+
const delta = choice.delta;
|
|
90
|
+
if (delta?.content) {
|
|
91
|
+
return delta.content;
|
|
92
|
+
}
|
|
93
|
+
// Handle complete content
|
|
94
|
+
const message = choice.message;
|
|
95
|
+
if (message?.content) {
|
|
96
|
+
return message.content;
|
|
97
|
+
}
|
|
98
|
+
return '';
|
|
99
|
+
}
|
|
100
|
+
extractAnthropicContent(chunk) {
|
|
101
|
+
// Handle different Anthropic event types
|
|
102
|
+
switch (chunk.type) {
|
|
103
|
+
case 'content_block_delta': {
|
|
104
|
+
const delta = chunk.delta;
|
|
105
|
+
return delta?.text || '';
|
|
106
|
+
}
|
|
107
|
+
case 'content_block_start': {
|
|
108
|
+
const contentBlock = chunk.content_block;
|
|
109
|
+
return contentBlock?.text || '';
|
|
110
|
+
}
|
|
111
|
+
case 'message_delta': {
|
|
112
|
+
const delta = chunk.delta;
|
|
113
|
+
return delta?.text || '';
|
|
114
|
+
}
|
|
115
|
+
default:
|
|
116
|
+
return '';
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
extractGenericContent(chunk) {
|
|
120
|
+
// Try common content patterns
|
|
121
|
+
if (chunk.text)
|
|
122
|
+
return chunk.text;
|
|
123
|
+
if (chunk.content)
|
|
124
|
+
return chunk.content;
|
|
125
|
+
if (chunk.message)
|
|
126
|
+
return chunk.message;
|
|
127
|
+
const delta = chunk.delta;
|
|
128
|
+
if (delta?.text)
|
|
129
|
+
return delta.text;
|
|
130
|
+
return '';
|
|
131
|
+
}
|
|
132
|
+
extractGeminiToolCalls(chunk) {
|
|
133
|
+
const candidates = chunk.candidates;
|
|
134
|
+
const candidate = candidates?.[0];
|
|
135
|
+
if (!candidate)
|
|
136
|
+
return [];
|
|
137
|
+
const content = candidate.content;
|
|
138
|
+
const parts = content?.parts;
|
|
139
|
+
if (!parts)
|
|
140
|
+
return [];
|
|
141
|
+
return parts
|
|
142
|
+
.filter((part) => part.functionCall)
|
|
143
|
+
.map((part) => ({
|
|
144
|
+
provider: 'gemini',
|
|
145
|
+
name: part.functionCall.name,
|
|
146
|
+
arguments: part.functionCall.args,
|
|
147
|
+
id: part.functionCall.id ||
|
|
148
|
+
this.generateToolCallId(),
|
|
149
|
+
}));
|
|
150
|
+
}
|
|
151
|
+
extractOpenAIToolCalls(chunk) {
|
|
152
|
+
const choices = chunk.choices;
|
|
153
|
+
const choice = choices?.[0];
|
|
154
|
+
if (!choice)
|
|
155
|
+
return [];
|
|
156
|
+
// Handle streaming tool calls
|
|
157
|
+
const delta = choice.delta;
|
|
158
|
+
const toolCalls = delta?.tool_calls;
|
|
159
|
+
if (toolCalls) {
|
|
160
|
+
return toolCalls.map((call) => ({
|
|
161
|
+
provider: 'openai',
|
|
162
|
+
name: call.function?.name,
|
|
163
|
+
arguments: call.function?.arguments,
|
|
164
|
+
id: call.id,
|
|
165
|
+
}));
|
|
166
|
+
}
|
|
167
|
+
// Handle complete tool calls
|
|
168
|
+
const message = choice.message;
|
|
169
|
+
const messageToolCalls = message?.tool_calls;
|
|
170
|
+
if (messageToolCalls) {
|
|
171
|
+
return messageToolCalls.map((call) => ({
|
|
172
|
+
provider: 'openai',
|
|
173
|
+
name: call.function.name,
|
|
174
|
+
arguments: JSON.parse(call.function.arguments ||
|
|
175
|
+
'{}'),
|
|
176
|
+
id: call.id,
|
|
177
|
+
}));
|
|
178
|
+
}
|
|
179
|
+
return [];
|
|
180
|
+
}
|
|
181
|
+
extractAnthropicToolCalls(chunk) {
|
|
182
|
+
if (chunk.type === 'tool_use') {
|
|
183
|
+
return [
|
|
184
|
+
{
|
|
185
|
+
provider: 'anthropic',
|
|
186
|
+
name: chunk.name,
|
|
187
|
+
arguments: chunk.input,
|
|
188
|
+
id: chunk.id,
|
|
189
|
+
},
|
|
190
|
+
];
|
|
191
|
+
}
|
|
192
|
+
return [];
|
|
193
|
+
}
|
|
194
|
+
generateToolCallId() {
|
|
195
|
+
return `tc_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=ProviderContentExtractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProviderContentExtractor.js","sourceRoot":"","sources":["../../../../src/providers/logging/ProviderContentExtractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Vybestack LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { ProviderPerformanceMetrics } from '../types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Performance tracking utility for provider operations
|
|
9
|
+
*/
|
|
10
|
+
export declare class ProviderPerformanceTracker {
|
|
11
|
+
private providerName;
|
|
12
|
+
private metrics;
|
|
13
|
+
constructor(providerName: string);
|
|
14
|
+
private initializeMetrics;
|
|
15
|
+
/**
|
|
16
|
+
* Record a streaming chunk being received
|
|
17
|
+
*/
|
|
18
|
+
recordChunk(chunkNumber: number, _contentLength: number): void;
|
|
19
|
+
/**
|
|
20
|
+
* Record completion of a request with performance data
|
|
21
|
+
*/
|
|
22
|
+
recordCompletion(totalTime: number, timeToFirstToken: number | null, tokenCount: number, chunkCount: number): void;
|
|
23
|
+
/**
|
|
24
|
+
* Record an error that occurred during request
|
|
25
|
+
*/
|
|
26
|
+
recordError(duration: number, error: string): void;
|
|
27
|
+
/**
|
|
28
|
+
* Get current performance metrics
|
|
29
|
+
*/
|
|
30
|
+
getLatestMetrics(): ProviderPerformanceMetrics;
|
|
31
|
+
/**
|
|
32
|
+
* Reset all metrics (useful for long-running sessions)
|
|
33
|
+
*/
|
|
34
|
+
reset(): void;
|
|
35
|
+
/**
|
|
36
|
+
* Estimate token count from text content (rough approximation)
|
|
37
|
+
*/
|
|
38
|
+
estimateTokenCount(text: string): number;
|
|
39
|
+
/**
|
|
40
|
+
* Get performance summary as human-readable string
|
|
41
|
+
*/
|
|
42
|
+
getPerformanceSummary(): string;
|
|
43
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Vybestack LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Performance tracking utility for provider operations
|
|
8
|
+
*/
|
|
9
|
+
export class ProviderPerformanceTracker {
|
|
10
|
+
providerName;
|
|
11
|
+
metrics;
|
|
12
|
+
constructor(providerName) {
|
|
13
|
+
this.providerName = providerName;
|
|
14
|
+
this.metrics = this.initializeMetrics();
|
|
15
|
+
}
|
|
16
|
+
initializeMetrics() {
|
|
17
|
+
return {
|
|
18
|
+
providerName: this.providerName,
|
|
19
|
+
totalRequests: 0,
|
|
20
|
+
totalTokens: 0,
|
|
21
|
+
averageLatency: 0,
|
|
22
|
+
timeToFirstToken: null,
|
|
23
|
+
tokensPerSecond: 0,
|
|
24
|
+
chunksReceived: 0,
|
|
25
|
+
errorRate: 0,
|
|
26
|
+
errors: [],
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Record a streaming chunk being received
|
|
31
|
+
*/
|
|
32
|
+
recordChunk(chunkNumber, _contentLength) {
|
|
33
|
+
// Track streaming performance
|
|
34
|
+
this.metrics.chunksReceived = chunkNumber;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Record completion of a request with performance data
|
|
38
|
+
*/
|
|
39
|
+
recordCompletion(totalTime, timeToFirstToken, tokenCount, chunkCount) {
|
|
40
|
+
this.metrics.totalRequests++;
|
|
41
|
+
this.metrics.totalTokens += tokenCount;
|
|
42
|
+
this.metrics.averageLatency =
|
|
43
|
+
(this.metrics.averageLatency * (this.metrics.totalRequests - 1) +
|
|
44
|
+
totalTime) /
|
|
45
|
+
this.metrics.totalRequests;
|
|
46
|
+
if (timeToFirstToken !== null) {
|
|
47
|
+
this.metrics.timeToFirstToken = timeToFirstToken;
|
|
48
|
+
}
|
|
49
|
+
if (totalTime > 0) {
|
|
50
|
+
this.metrics.tokensPerSecond = tokenCount / (totalTime / 1000);
|
|
51
|
+
}
|
|
52
|
+
this.metrics.chunksReceived = chunkCount;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Record an error that occurred during request
|
|
56
|
+
*/
|
|
57
|
+
recordError(duration, error) {
|
|
58
|
+
this.metrics.errors.push({
|
|
59
|
+
timestamp: Date.now(),
|
|
60
|
+
duration,
|
|
61
|
+
error: error.substring(0, 200), // Truncate long errors
|
|
62
|
+
});
|
|
63
|
+
// Update error rate
|
|
64
|
+
const totalAttempts = this.metrics.totalRequests + 1;
|
|
65
|
+
this.metrics.errorRate = this.metrics.errors.length / totalAttempts;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Get current performance metrics
|
|
69
|
+
*/
|
|
70
|
+
getLatestMetrics() {
|
|
71
|
+
return { ...this.metrics };
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Reset all metrics (useful for long-running sessions)
|
|
75
|
+
*/
|
|
76
|
+
reset() {
|
|
77
|
+
this.metrics = this.initializeMetrics();
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Estimate token count from text content (rough approximation)
|
|
81
|
+
*/
|
|
82
|
+
estimateTokenCount(text) {
|
|
83
|
+
// Rough token estimation (actual tokenization would be provider-specific)
|
|
84
|
+
return Math.ceil(text.length / 4); // Approximate tokens per character
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Get performance summary as human-readable string
|
|
88
|
+
*/
|
|
89
|
+
getPerformanceSummary() {
|
|
90
|
+
const metrics = this.metrics;
|
|
91
|
+
return (`Provider: ${metrics.providerName}, ` +
|
|
92
|
+
`Requests: ${metrics.totalRequests}, ` +
|
|
93
|
+
`Avg Latency: ${metrics.averageLatency.toFixed(2)}ms, ` +
|
|
94
|
+
`Tokens/sec: ${metrics.tokensPerSecond.toFixed(2)}, ` +
|
|
95
|
+
`Error Rate: ${(metrics.errorRate * 100).toFixed(1)}%`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=ProviderPerformanceTracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProviderPerformanceTracker.js","sourceRoot":"","sources":["../../../../src/providers/logging/ProviderPerformanceTracker.ts"],"names":[],"mappings":"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"}
|