@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.
Files changed (143) hide show
  1. package/dist/src/code_assist/converter.d.ts +2 -1
  2. package/dist/src/code_assist/converter.js +1 -1
  3. package/dist/src/code_assist/converter.js.map +1 -1
  4. package/dist/src/code_assist/converter.test.js +48 -1
  5. package/dist/src/code_assist/converter.test.js.map +1 -1
  6. package/dist/src/code_assist/oauth2.js +2 -1
  7. package/dist/src/code_assist/oauth2.js.map +1 -1
  8. package/dist/src/code_assist/server.test.js +4 -1
  9. package/dist/src/code_assist/server.test.js.map +1 -1
  10. package/dist/src/config/config.d.ts +54 -1
  11. package/dist/src/config/config.ephemeral.test.d.ts +6 -0
  12. package/dist/src/config/config.ephemeral.test.js +152 -0
  13. package/dist/src/config/config.ephemeral.test.js.map +1 -0
  14. package/dist/src/config/config.js +92 -0
  15. package/dist/src/config/config.js.map +1 -1
  16. package/dist/src/core/logger.d.ts +1 -0
  17. package/dist/src/core/logger.js +18 -0
  18. package/dist/src/core/logger.js.map +1 -1
  19. package/dist/src/core/logger.test.js +29 -0
  20. package/dist/src/core/logger.test.js.map +1 -1
  21. package/dist/src/core/loggingContentGenerator.d.ts +24 -0
  22. package/dist/src/core/loggingContentGenerator.js +89 -0
  23. package/dist/src/core/loggingContentGenerator.js.map +1 -0
  24. package/dist/src/core/nonInteractiveToolExecutor.js +17 -0
  25. package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
  26. package/dist/src/ide/ide-client.d.ts +1 -1
  27. package/dist/src/ide/ide-client.js +21 -7
  28. package/dist/src/ide/ide-client.js.map +1 -1
  29. package/dist/src/index.d.ts +2 -0
  30. package/dist/src/index.js +3 -0
  31. package/dist/src/index.js.map +1 -1
  32. package/dist/src/providers/IProviderManager.d.ts +5 -0
  33. package/dist/src/providers/LoggingProviderWrapper.d.ts +53 -0
  34. package/dist/src/providers/LoggingProviderWrapper.js +347 -0
  35. package/dist/src/providers/LoggingProviderWrapper.js.map +1 -0
  36. package/dist/src/providers/ProviderManager.d.ts +20 -0
  37. package/dist/src/providers/ProviderManager.js +214 -1
  38. package/dist/src/providers/ProviderManager.js.map +1 -1
  39. package/dist/src/providers/logging/ProviderContentExtractor.d.ts +27 -0
  40. package/dist/src/providers/logging/ProviderContentExtractor.js +198 -0
  41. package/dist/src/providers/logging/ProviderContentExtractor.js.map +1 -0
  42. package/dist/src/providers/logging/ProviderPerformanceTracker.d.ts +43 -0
  43. package/dist/src/providers/logging/ProviderPerformanceTracker.js +98 -0
  44. package/dist/src/providers/logging/ProviderPerformanceTracker.js.map +1 -0
  45. package/dist/src/providers/types.d.ts +47 -0
  46. package/dist/src/services/git-stats-service.d.ts +32 -0
  47. package/dist/src/services/git-stats-service.js +22 -0
  48. package/dist/src/services/git-stats-service.js.map +1 -0
  49. package/dist/src/services/loopDetectionService.js +10 -6
  50. package/dist/src/services/loopDetectionService.js.map +1 -1
  51. package/dist/src/services/loopDetectionService.test.js +139 -0
  52. package/dist/src/services/loopDetectionService.test.js.map +1 -1
  53. package/dist/src/services/shellExecutionService.js +44 -8
  54. package/dist/src/services/shellExecutionService.js.map +1 -1
  55. package/dist/src/storage/ConversationFileWriter.d.ts +16 -0
  56. package/dist/src/storage/ConversationFileWriter.js +69 -0
  57. package/dist/src/storage/ConversationFileWriter.js.map +1 -0
  58. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +8 -0
  59. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +56 -3
  60. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  61. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.d.ts +6 -0
  62. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +187 -0
  63. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -0
  64. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +5 -1
  65. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +11 -0
  66. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  67. package/dist/src/telemetry/constants.d.ts +5 -0
  68. package/dist/src/telemetry/constants.js +5 -0
  69. package/dist/src/telemetry/constants.js.map +1 -1
  70. package/dist/src/telemetry/loggers.d.ts +5 -1
  71. package/dist/src/telemetry/loggers.js +87 -1
  72. package/dist/src/telemetry/loggers.js.map +1 -1
  73. package/dist/src/telemetry/loggers.test.js +2 -1
  74. package/dist/src/telemetry/loggers.test.js.map +1 -1
  75. package/dist/src/telemetry/metrics.d.ts +2 -1
  76. package/dist/src/telemetry/metrics.js +7 -1
  77. package/dist/src/telemetry/metrics.js.map +1 -1
  78. package/dist/src/telemetry/metrics.test.js +50 -0
  79. package/dist/src/telemetry/metrics.test.js.map +1 -1
  80. package/dist/src/telemetry/tool-call-decision.d.ts +13 -0
  81. package/dist/src/telemetry/tool-call-decision.js +29 -0
  82. package/dist/src/telemetry/tool-call-decision.js.map +1 -0
  83. package/dist/src/telemetry/types.d.ts +56 -1
  84. package/dist/src/telemetry/types.js +123 -0
  85. package/dist/src/telemetry/types.js.map +1 -1
  86. package/dist/src/telemetry/uiTelemetry.d.ts +2 -1
  87. package/dist/src/telemetry/uiTelemetry.js +1 -1
  88. package/dist/src/telemetry/uiTelemetry.js.map +1 -1
  89. package/dist/src/telemetry/uiTelemetry.test.js +2 -1
  90. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  91. package/dist/src/tools/diffOptions.d.ts +2 -0
  92. package/dist/src/tools/diffOptions.js +28 -0
  93. package/dist/src/tools/diffOptions.js.map +1 -1
  94. package/dist/src/tools/diffOptions.test.d.ts +6 -0
  95. package/dist/src/tools/diffOptions.test.js +119 -0
  96. package/dist/src/tools/diffOptions.test.js.map +1 -0
  97. package/dist/src/tools/edit.d.ts +4 -0
  98. package/dist/src/tools/edit.js +38 -8
  99. package/dist/src/tools/edit.js.map +1 -1
  100. package/dist/src/tools/edit.test.js +1 -0
  101. package/dist/src/tools/edit.test.js.map +1 -1
  102. package/dist/src/tools/mcp-client.d.ts +4 -3
  103. package/dist/src/tools/mcp-client.js +23 -6
  104. package/dist/src/tools/mcp-client.js.map +1 -1
  105. package/dist/src/tools/mcp-client.test.js +44 -2
  106. package/dist/src/tools/mcp-client.test.js.map +1 -1
  107. package/dist/src/tools/read-file.js +34 -2
  108. package/dist/src/tools/read-file.js.map +1 -1
  109. package/dist/src/tools/read-file.test.js +8 -2
  110. package/dist/src/tools/read-file.test.js.map +1 -1
  111. package/dist/src/tools/shell.test.js +17 -0
  112. package/dist/src/tools/shell.test.js.map +1 -1
  113. package/dist/src/tools/todo-pause.d.ts +22 -0
  114. package/dist/src/tools/todo-pause.js +93 -0
  115. package/dist/src/tools/todo-pause.js.map +1 -0
  116. package/dist/src/tools/todo-pause.spec.d.ts +6 -0
  117. package/dist/src/tools/todo-pause.spec.js +287 -0
  118. package/dist/src/tools/todo-pause.spec.js.map +1 -0
  119. package/dist/src/tools/tool-error.d.ts +4 -0
  120. package/dist/src/tools/tool-error.js +4 -0
  121. package/dist/src/tools/tool-error.js.map +1 -1
  122. package/dist/src/tools/tool-registry.js +3 -3
  123. package/dist/src/tools/tool-registry.js.map +1 -1
  124. package/dist/src/tools/tool-registry.test.js +2 -2
  125. package/dist/src/tools/tool-registry.test.js.map +1 -1
  126. package/dist/src/tools/tools.d.ts +7 -0
  127. package/dist/src/tools/tools.js.map +1 -1
  128. package/dist/src/tools/web-search.test.js +1 -0
  129. package/dist/src/tools/web-search.test.js.map +1 -1
  130. package/dist/src/tools/write-file.d.ts +4 -0
  131. package/dist/src/tools/write-file.js +90 -16
  132. package/dist/src/tools/write-file.js.map +1 -1
  133. package/dist/src/tools/write-file.test.js +5 -4
  134. package/dist/src/tools/write-file.test.js.map +1 -1
  135. package/dist/src/types/modelParams.d.ts +2 -0
  136. package/dist/src/utils/environmentContext.js +1 -1
  137. package/dist/src/utils/errors.d.ts +3 -0
  138. package/dist/src/utils/errors.js +6 -0
  139. package/dist/src/utils/errors.js.map +1 -1
  140. package/dist/src/utils/fileUtils.d.ts +7 -0
  141. package/dist/src/utils/fileUtils.js +9 -0
  142. package/dist/src/utils/fileUtils.js.map +1 -1
  143. 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
- this.providers.set(provider.name, provider);
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":"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"}
@@ -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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"}