@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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -5,10 +5,15 @@
5
5
  */
6
6
  import { IProvider } from './IProvider.js';
7
7
  import { IModel } from './IModel.js';
8
+ import { Config } from '../config/config.js';
8
9
  /**
9
10
  * Manager for handling multiple providers
10
11
  */
11
12
  export interface IProviderManager {
13
+ /**
14
+ * Set the configuration for the provider manager
15
+ */
16
+ setConfig(config: Config): void;
12
17
  /**
13
18
  * Register a provider
14
19
  */
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { IProvider, IModel, ITool, IMessage } from './IProvider.js';
7
+ import { Config } from '../config/config.js';
8
+ export interface ConversationDataRedactor {
9
+ redactMessage(message: IMessage, provider: string): IMessage;
10
+ redactToolCall(tool: ITool): ITool;
11
+ redactResponseContent(content: string, provider: string): string;
12
+ }
13
+ /**
14
+ * A minimal logging wrapper that acts as a transparent passthrough to the wrapped provider.
15
+ * Only intercepts generateChatCompletion to log conversations while forwarding all other
16
+ * methods directly to the wrapped provider without modification.
17
+ */
18
+ export declare class LoggingProviderWrapper implements IProvider {
19
+ private readonly wrapped;
20
+ private readonly config;
21
+ private conversationId;
22
+ private turnNumber;
23
+ private redactor;
24
+ constructor(wrapped: IProvider, config: Config, redactor?: ConversationDataRedactor);
25
+ /**
26
+ * Access to the wrapped provider for unwrapping if needed
27
+ */
28
+ get wrappedProvider(): IProvider;
29
+ get name(): string;
30
+ get isDefault(): boolean | undefined;
31
+ getModels(): Promise<IModel[]>;
32
+ generateChatCompletion(messages: IMessage[], tools?: ITool[], toolFormat?: string): AsyncIterableIterator<unknown>;
33
+ private logRequest;
34
+ private logResponseStream;
35
+ private extractSimpleContent;
36
+ private logResponse;
37
+ private generateConversationId;
38
+ private generatePromptId;
39
+ private logToolCall;
40
+ setModel?(modelId: string): void;
41
+ getCurrentModel?(): string;
42
+ setApiKey?(apiKey: string): void;
43
+ setBaseUrl?(baseUrl?: string): void;
44
+ getToolFormat?(): string;
45
+ setToolFormatOverride?(format: string | null): void;
46
+ isPaidMode?(): boolean;
47
+ clearState?(): void;
48
+ setConfig?(config: unknown): void;
49
+ getServerTools(): string[];
50
+ invokeServerTool(toolName: string, params: unknown, config?: unknown): Promise<unknown>;
51
+ setModelParams?(params: Record<string, unknown> | undefined): void;
52
+ getModelParams?(): Record<string, unknown> | undefined;
53
+ }
@@ -0,0 +1,347 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { logConversationRequest, logConversationResponse, } from '../telemetry/loggers.js';
7
+ import { ConversationRequestEvent, ConversationResponseEvent, } from '../telemetry/types.js';
8
+ import { getConversationFileWriter } from '../storage/ConversationFileWriter.js';
9
+ // Simple redactor that works with RedactionConfig
10
+ class ConfigBasedRedactor {
11
+ redactionConfig;
12
+ constructor(redactionConfig) {
13
+ this.redactionConfig = redactionConfig;
14
+ }
15
+ redactMessage(message, providerName) {
16
+ if (!this.shouldRedact()) {
17
+ return message;
18
+ }
19
+ const redactedMessage = { ...message };
20
+ if (typeof redactedMessage.content === 'string') {
21
+ redactedMessage.content = this.redactContent(redactedMessage.content, providerName);
22
+ }
23
+ // Redact tool_calls if present
24
+ if (redactedMessage.tool_calls) {
25
+ redactedMessage.tool_calls = redactedMessage.tool_calls.map((call) => ({
26
+ ...call,
27
+ function: {
28
+ ...call.function,
29
+ arguments: this.redactContent(call.function.arguments, providerName),
30
+ },
31
+ }));
32
+ }
33
+ return redactedMessage;
34
+ }
35
+ redactToolCall(tool) {
36
+ if (!this.shouldRedact()) {
37
+ return tool;
38
+ }
39
+ const redactedTool = { ...tool };
40
+ if (redactedTool.function.parameters && tool.function.name) {
41
+ const redactedParams = this.redactContent(JSON.stringify(redactedTool.function.parameters), 'global');
42
+ try {
43
+ redactedTool.function.parameters = JSON.parse(redactedParams);
44
+ }
45
+ catch {
46
+ // If parsing fails, keep original parameters
47
+ redactedTool.function.parameters = tool.function.parameters;
48
+ }
49
+ }
50
+ return redactedTool;
51
+ }
52
+ redactResponseContent(content, providerName) {
53
+ if (!this.shouldRedact()) {
54
+ return content;
55
+ }
56
+ return this.redactContent(content, providerName);
57
+ }
58
+ shouldRedact() {
59
+ return (this.redactionConfig.redactApiKeys ||
60
+ this.redactionConfig.redactCredentials ||
61
+ this.redactionConfig.redactFilePaths ||
62
+ this.redactionConfig.redactUrls ||
63
+ this.redactionConfig.redactEmails ||
64
+ this.redactionConfig.redactPersonalInfo);
65
+ }
66
+ redactContent(content, _providerName) {
67
+ let redacted = content;
68
+ // Apply basic API key redaction if enabled
69
+ if (this.redactionConfig.redactApiKeys) {
70
+ redacted = redacted.replace(/sk-[a-zA-Z0-9]{32,}/g, '[REDACTED-API-KEY]');
71
+ redacted = redacted.replace(/sk-proj-[a-zA-Z0-9]{48}/g, '[REDACTED-OPENAI-PROJECT-KEY]');
72
+ redacted = redacted.replace(/sk-ant-[a-zA-Z0-9\-_]{95}/g, '[REDACTED-ANTHROPIC-KEY]');
73
+ redacted = redacted.replace(/AIza[0-9A-Za-z\-_]{35}/g, '[REDACTED-GOOGLE-KEY]');
74
+ }
75
+ // Apply credential redaction if enabled
76
+ if (this.redactionConfig.redactCredentials) {
77
+ redacted = redacted.replace(/(?:password|pwd|pass)[=:\s]+[^\s\n\r]+/gi, 'password=[REDACTED]');
78
+ redacted = redacted.replace(/bearer [a-zA-Z0-9-_.]{16,}/gi, 'bearer [REDACTED-BEARER-TOKEN]');
79
+ }
80
+ // Apply file path redaction if enabled
81
+ if (this.redactionConfig.redactFilePaths) {
82
+ redacted = redacted.replace(/\/[^"\s]*\.ssh\/[^"\s]*/g, '[REDACTED-SSH-PATH]');
83
+ redacted = redacted.replace(/\/[^"\s]*\.env[^"\s]*/g, '[REDACTED-ENV-FILE]');
84
+ redacted = redacted.replace(/\/home\/[^/\s"]+/g, '[REDACTED-HOME-DIR]');
85
+ redacted = redacted.replace(/\/Users\/[^/\s"]+/g, '[REDACTED-USER-DIR]');
86
+ }
87
+ // Apply email redaction if enabled
88
+ if (this.redactionConfig.redactEmails) {
89
+ redacted = redacted.replace(/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g, '[REDACTED-EMAIL]');
90
+ }
91
+ // Apply personal info redaction if enabled
92
+ if (this.redactionConfig.redactPersonalInfo) {
93
+ redacted = redacted.replace(/\b\d{3}-\d{3}-\d{4}\b/g, '[REDACTED-PHONE]');
94
+ redacted = redacted.replace(/\b\d{4}[-\s]?\d{4}[-\s]?\d{4}[-\s]?\d{4}\b/g, '[REDACTED-CC-NUMBER]');
95
+ }
96
+ return redacted;
97
+ }
98
+ }
99
+ /**
100
+ * A minimal logging wrapper that acts as a transparent passthrough to the wrapped provider.
101
+ * Only intercepts generateChatCompletion to log conversations while forwarding all other
102
+ * methods directly to the wrapped provider without modification.
103
+ */
104
+ export class LoggingProviderWrapper {
105
+ wrapped;
106
+ config;
107
+ conversationId;
108
+ turnNumber = 0;
109
+ redactor;
110
+ constructor(wrapped, config, redactor) {
111
+ this.wrapped = wrapped;
112
+ this.config = config;
113
+ this.conversationId = this.generateConversationId();
114
+ this.redactor =
115
+ redactor || new ConfigBasedRedactor(config.getRedactionConfig());
116
+ }
117
+ /**
118
+ * Access to the wrapped provider for unwrapping if needed
119
+ */
120
+ get wrappedProvider() {
121
+ return this.wrapped;
122
+ }
123
+ // Passthrough properties
124
+ get name() {
125
+ return this.wrapped.name;
126
+ }
127
+ get isDefault() {
128
+ return this.wrapped.isDefault;
129
+ }
130
+ // Passthrough methods - delegate everything to wrapped provider
131
+ async getModels() {
132
+ return this.wrapped.getModels();
133
+ }
134
+ // Only method that includes logging - everything else is passthrough
135
+ async *generateChatCompletion(messages, tools, toolFormat) {
136
+ const promptId = this.generatePromptId();
137
+ this.turnNumber++;
138
+ // Log request if logging is enabled
139
+ if (this.config.getConversationLoggingEnabled()) {
140
+ await this.logRequest(messages, tools, toolFormat, promptId);
141
+ }
142
+ // Get stream from wrapped provider
143
+ const stream = this.wrapped.generateChatCompletion(messages, tools, toolFormat);
144
+ // If logging not enabled, just pass through
145
+ if (!this.config.getConversationLoggingEnabled()) {
146
+ yield* stream;
147
+ return;
148
+ }
149
+ // Log the response stream
150
+ yield* this.logResponseStream(stream, promptId);
151
+ }
152
+ async logRequest(messages, tools, toolFormat, promptId) {
153
+ try {
154
+ // Apply redaction to messages and tools
155
+ const redactedMessages = messages.map((msg) => this.redactor.redactMessage(msg, this.wrapped.name));
156
+ const redactedTools = tools?.map((tool) => this.redactor.redactToolCall(tool));
157
+ const event = new ConversationRequestEvent(this.wrapped.name, this.conversationId, this.turnNumber, promptId || this.generatePromptId(), redactedMessages, redactedTools, toolFormat);
158
+ logConversationRequest(this.config, event);
159
+ // Also write to disk
160
+ const fileWriter = getConversationFileWriter(this.config.getConversationLogPath());
161
+ fileWriter.writeRequest(this.wrapped.name, redactedMessages, {
162
+ conversationId: this.conversationId,
163
+ turnNumber: this.turnNumber,
164
+ promptId: promptId || this.generatePromptId(),
165
+ tools: redactedTools,
166
+ toolFormat,
167
+ });
168
+ }
169
+ catch (error) {
170
+ // Log error but don't fail the request
171
+ console.warn('Failed to log conversation request:', error);
172
+ }
173
+ }
174
+ async *logResponseStream(stream, promptId) {
175
+ const startTime = performance.now();
176
+ let responseContent = '';
177
+ let responseComplete = false;
178
+ try {
179
+ for await (const chunk of stream) {
180
+ // Simple content extraction - just try to get text from common chunk formats
181
+ const content = this.extractSimpleContent(chunk);
182
+ if (content) {
183
+ responseContent += content;
184
+ }
185
+ yield chunk;
186
+ }
187
+ responseComplete = true;
188
+ }
189
+ catch (error) {
190
+ const errorTime = performance.now();
191
+ await this.logResponse('', promptId, errorTime - startTime, false, error);
192
+ throw error;
193
+ }
194
+ if (responseComplete) {
195
+ const totalTime = performance.now() - startTime;
196
+ await this.logResponse(responseContent, promptId, totalTime, true);
197
+ }
198
+ }
199
+ // Simple content extraction without complex provider-specific logic
200
+ extractSimpleContent(chunk) {
201
+ if (!chunk || typeof chunk !== 'object') {
202
+ return '';
203
+ }
204
+ const obj = chunk;
205
+ // Try common content paths
206
+ if (obj.choices && Array.isArray(obj.choices)) {
207
+ const choice = obj.choices[0];
208
+ if (choice?.delta && typeof choice.delta === 'object') {
209
+ const delta = choice.delta;
210
+ if (typeof delta.content === 'string') {
211
+ return delta.content;
212
+ }
213
+ }
214
+ }
215
+ return '';
216
+ }
217
+ async logResponse(content, promptId, duration, success, error) {
218
+ try {
219
+ const redactedContent = this.redactor.redactResponseContent(content, this.wrapped.name);
220
+ const event = new ConversationResponseEvent(this.wrapped.name, this.conversationId, this.turnNumber, promptId, redactedContent, duration, success, error ? String(error) : undefined);
221
+ logConversationResponse(this.config, event);
222
+ // Also write to disk
223
+ const fileWriter = getConversationFileWriter(this.config.getConversationLogPath());
224
+ fileWriter.writeResponse(this.wrapped.name, redactedContent, {
225
+ conversationId: this.conversationId,
226
+ turnNumber: this.turnNumber,
227
+ promptId,
228
+ duration,
229
+ success,
230
+ error: error ? String(error) : undefined,
231
+ });
232
+ }
233
+ catch (logError) {
234
+ console.warn('Failed to log conversation response:', logError);
235
+ }
236
+ }
237
+ generateConversationId() {
238
+ return `conv_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
239
+ }
240
+ generatePromptId() {
241
+ return `prompt_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
242
+ }
243
+ async logToolCall(toolName, params, result, startTime, success, error) {
244
+ try {
245
+ const endTime = Date.now();
246
+ const duration = endTime - startTime;
247
+ // Extract git stats from result metadata if available
248
+ let gitStats = null;
249
+ if (result && typeof result === 'object' && 'metadata' in result) {
250
+ const metadata = result
251
+ .metadata;
252
+ if (metadata && metadata.gitStats) {
253
+ gitStats = metadata.gitStats;
254
+ }
255
+ }
256
+ const _entry = {
257
+ type: 'tool_call',
258
+ tool: toolName,
259
+ timestamp: new Date(startTime).toISOString(),
260
+ duration,
261
+ success,
262
+ conversationId: this.conversationId,
263
+ turnNumber: this.turnNumber,
264
+ // Include git stats if present
265
+ gitStats,
266
+ error: error ? String(error) : undefined,
267
+ };
268
+ // Write to disk
269
+ const fileWriter = getConversationFileWriter(this.config.getConversationLogPath());
270
+ fileWriter.writeToolCall(this.wrapped.name, toolName, {
271
+ conversationId: this.conversationId,
272
+ turnNumber: this.turnNumber,
273
+ params: this.redactor.redactToolCall({
274
+ type: 'function',
275
+ function: { name: toolName, parameters: params },
276
+ }).function.parameters,
277
+ result,
278
+ duration,
279
+ success,
280
+ error: error ? String(error) : undefined,
281
+ gitStats,
282
+ });
283
+ }
284
+ catch (logError) {
285
+ console.warn('Failed to log tool call:', logError);
286
+ }
287
+ }
288
+ // All other methods are simple passthroughs to wrapped provider
289
+ setModel(modelId) {
290
+ this.wrapped.setModel?.(modelId);
291
+ }
292
+ getCurrentModel() {
293
+ return this.wrapped.getCurrentModel?.() ?? '';
294
+ }
295
+ setApiKey(apiKey) {
296
+ this.wrapped.setApiKey?.(apiKey);
297
+ }
298
+ setBaseUrl(baseUrl) {
299
+ this.wrapped.setBaseUrl?.(baseUrl);
300
+ }
301
+ getToolFormat() {
302
+ return this.wrapped.getToolFormat?.() ?? '';
303
+ }
304
+ setToolFormatOverride(format) {
305
+ this.wrapped.setToolFormatOverride?.(format);
306
+ }
307
+ isPaidMode() {
308
+ return this.wrapped.isPaidMode?.() ?? false;
309
+ }
310
+ clearState() {
311
+ this.wrapped.clearState?.();
312
+ // Reset conversation logging state
313
+ this.conversationId = this.generateConversationId();
314
+ this.turnNumber = 0;
315
+ }
316
+ setConfig(config) {
317
+ this.wrapped.setConfig?.(config);
318
+ }
319
+ getServerTools() {
320
+ return this.wrapped.getServerTools();
321
+ }
322
+ async invokeServerTool(toolName, params, config) {
323
+ const startTime = Date.now();
324
+ try {
325
+ const result = await this.wrapped.invokeServerTool(toolName, params, config);
326
+ // Log tool call if logging is enabled and result has metadata
327
+ if (this.config.getConversationLoggingEnabled()) {
328
+ await this.logToolCall(toolName, params, result, startTime, true);
329
+ }
330
+ return result;
331
+ }
332
+ catch (error) {
333
+ // Log failed tool call if logging is enabled
334
+ if (this.config.getConversationLoggingEnabled()) {
335
+ await this.logToolCall(toolName, params, null, startTime, false, error);
336
+ }
337
+ throw error;
338
+ }
339
+ }
340
+ setModelParams(params) {
341
+ this.wrapped.setModelParams?.(params);
342
+ }
343
+ getModelParams() {
344
+ return this.wrapped.getModelParams?.();
345
+ }
346
+ }
347
+ //# sourceMappingURL=LoggingProviderWrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoggingProviderWrapper.js","sourceRoot":"","sources":["../../../src/providers/LoggingProviderWrapper.ts"],"names":[],"mappings":"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"}
@@ -6,11 +6,18 @@
6
6
  import { IProvider } from './IProvider.js';
7
7
  import { IModel } from './IModel.js';
8
8
  import { IProviderManager } from './IProviderManager.js';
9
+ import { Config } from '../config/config.js';
10
+ import type { ProviderCapabilities, ProviderComparison } from './types.js';
9
11
  export declare class ProviderManager implements IProviderManager {
10
12
  private providers;
11
13
  private activeProviderName;
12
14
  private serverToolsProvider;
15
+ private config?;
16
+ private providerCapabilities;
17
+ private currentConversationId?;
13
18
  constructor();
19
+ setConfig(config: Config): void;
20
+ private updateProviderWrapping;
14
21
  registerProvider(provider: IProvider): void;
15
22
  setActiveProvider(name: string): void;
16
23
  clearActiveProvider(): void;
@@ -21,4 +28,17 @@ export declare class ProviderManager implements IProviderManager {
21
28
  hasActiveProvider(): boolean;
22
29
  getServerToolsProvider(): IProvider | null;
23
30
  setServerToolsProvider(provider: IProvider | null): void;
31
+ private generateConversationId;
32
+ private isContextPreserved;
33
+ private captureProviderCapabilities;
34
+ private detectVisionSupport;
35
+ private getProviderMaxTokens;
36
+ private getSupportedToolFormats;
37
+ private createProviderContext;
38
+ private calculateCapabilityCompatibility;
39
+ getCurrentConversationId(): string;
40
+ resetConversationContext(): void;
41
+ getProviderCapabilities(providerName?: string): ProviderCapabilities | undefined;
42
+ compareProviders(provider1: string, provider2: string): ProviderComparison;
43
+ private generateProviderRecommendation;
24
44
  }