@vybestack/llxprt-code-telemetry 0.10.0-nightly.260613.1adad3b34

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 (71) hide show
  1. package/dist/.last_build +0 -0
  2. package/dist/index.d.ts +11 -0
  3. package/dist/index.js +15 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/src/debug/ConfigurationManager.d.ts +33 -0
  6. package/dist/src/debug/ConfigurationManager.js +226 -0
  7. package/dist/src/debug/ConfigurationManager.js.map +1 -0
  8. package/dist/src/debug/DebugLogger.d.ts +46 -0
  9. package/dist/src/debug/DebugLogger.js +286 -0
  10. package/dist/src/debug/DebugLogger.js.map +1 -0
  11. package/dist/src/debug/FileOutput.d.ts +28 -0
  12. package/dist/src/debug/FileOutput.js +190 -0
  13. package/dist/src/debug/FileOutput.js.map +1 -0
  14. package/dist/src/debug/MockConfigurationManager.d.ts +28 -0
  15. package/dist/src/debug/MockConfigurationManager.js +45 -0
  16. package/dist/src/debug/MockConfigurationManager.js.map +1 -0
  17. package/dist/src/debug/MockFileOutput.d.ts +22 -0
  18. package/dist/src/debug/MockFileOutput.js +23 -0
  19. package/dist/src/debug/MockFileOutput.js.map +1 -0
  20. package/dist/src/debug/index.d.ts +10 -0
  21. package/dist/src/debug/index.js +11 -0
  22. package/dist/src/debug/index.js.map +1 -0
  23. package/dist/src/debug/types.d.ts +25 -0
  24. package/dist/src/debug/types.js +2 -0
  25. package/dist/src/debug/types.js.map +1 -0
  26. package/dist/src/internal/interfaces.d.ts +143 -0
  27. package/dist/src/internal/interfaces.js +37 -0
  28. package/dist/src/internal/interfaces.js.map +1 -0
  29. package/dist/src/telemetry/constants.d.ts +35 -0
  30. package/dist/src/telemetry/constants.js +36 -0
  31. package/dist/src/telemetry/constants.js.map +1 -0
  32. package/dist/src/telemetry/file-exporters.d.ts +28 -0
  33. package/dist/src/telemetry/file-exporters.js +89 -0
  34. package/dist/src/telemetry/file-exporters.js.map +1 -0
  35. package/dist/src/telemetry/index.d.ts +24 -0
  36. package/dist/src/telemetry/index.js +24 -0
  37. package/dist/src/telemetry/index.js.map +1 -0
  38. package/dist/src/telemetry/loggers.d.ts +46 -0
  39. package/dist/src/telemetry/loggers.js +543 -0
  40. package/dist/src/telemetry/loggers.js.map +1 -0
  41. package/dist/src/telemetry/metrics.d.ts +24 -0
  42. package/dist/src/telemetry/metrics.js +153 -0
  43. package/dist/src/telemetry/metrics.js.map +1 -0
  44. package/dist/src/telemetry/sdk.d.ts +10 -0
  45. package/dist/src/telemetry/sdk.js +138 -0
  46. package/dist/src/telemetry/sdk.js.map +1 -0
  47. package/dist/src/telemetry/tool-call-decision.d.ts +13 -0
  48. package/dist/src/telemetry/tool-call-decision.js +30 -0
  49. package/dist/src/telemetry/tool-call-decision.js.map +1 -0
  50. package/dist/src/telemetry/types.d.ts +380 -0
  51. package/dist/src/telemetry/types.js +620 -0
  52. package/dist/src/telemetry/types.js.map +1 -0
  53. package/dist/src/telemetry/uiTelemetry.d.ts +104 -0
  54. package/dist/src/telemetry/uiTelemetry.js +183 -0
  55. package/dist/src/telemetry/uiTelemetry.js.map +1 -0
  56. package/dist/src/utils/debugLogger.d.ts +10 -0
  57. package/dist/src/utils/debugLogger.js +11 -0
  58. package/dist/src/utils/debugLogger.js.map +1 -0
  59. package/dist/src/utils/index.d.ts +9 -0
  60. package/dist/src/utils/index.js +10 -0
  61. package/dist/src/utils/index.js.map +1 -0
  62. package/dist/src/utils/paths.d.ts +10 -0
  63. package/dist/src/utils/paths.js +11 -0
  64. package/dist/src/utils/paths.js.map +1 -0
  65. package/dist/src/utils/safeJsonStringify.d.ts +13 -0
  66. package/dist/src/utils/safeJsonStringify.js +25 -0
  67. package/dist/src/utils/safeJsonStringify.js.map +1 -0
  68. package/dist/src/utils/session.d.ts +6 -0
  69. package/dist/src/utils/session.js +8 -0
  70. package/dist/src/utils/session.js.map +1 -0
  71. package/package.json +80 -0
@@ -0,0 +1,543 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { logs, } from '@opentelemetry/api-logs';
7
+ import { SemanticAttributes } from '@opentelemetry/semantic-conventions';
8
+ import { EVENT_API_ERROR, EVENT_API_REQUEST, EVENT_API_RESPONSE, EVENT_CLI_CONFIG, EVENT_HOOK_CALL, EVENT_TOOL_CALL, EVENT_USER_PROMPT, EVENT_NEXT_SPEAKER_CHECK, SERVICE_NAME, EVENT_SLASH_COMMAND, EVENT_TOOL_OUTPUT_TRUNCATED, EVENT_FILE_OPERATION, EVENT_MALFORMED_JSON_RESPONSE, EVENT_MODEL_ROUTING, EVENT_EXTENSION_INSTALL, EVENT_EXTENSION_UNINSTALL, EVENT_EXTENSION_ENABLE, EVENT_EXTENSION_DISABLE, } from './constants.js';
9
+ import { recordApiErrorMetrics, recordTokenUsageMetrics, recordApiResponseMetrics, recordToolCallMetrics, recordFileOperationMetric, recordModelRoutingMetrics, } from './metrics.js';
10
+ import { isTelemetrySdkInitialized } from './sdk.js';
11
+ import { uiTelemetryService } from './uiTelemetry.js';
12
+ import { safeJsonStringify } from '../utils/safeJsonStringify.js';
13
+ import { debugLogger } from '../utils/debugLogger.js';
14
+ const shouldLogUserPrompts = (config) => config.getTelemetryLogPromptsEnabled();
15
+ function getCommonAttributes(config) {
16
+ return {
17
+ 'session.id': config.getSessionId(),
18
+ };
19
+ }
20
+ export function logCliConfiguration(config, event) {
21
+ if (!isTelemetrySdkInitialized())
22
+ return;
23
+ const attributes = {
24
+ ...getCommonAttributes(config),
25
+ 'event.name': EVENT_CLI_CONFIG,
26
+ 'event.timestamp': new Date().toISOString(),
27
+ model: event.model,
28
+ embedding_model: event.embedding_model,
29
+ sandbox_enabled: event.sandbox_enabled,
30
+ core_tools_enabled: event.core_tools_enabled,
31
+ approval_mode: event.approval_mode,
32
+ api_key_enabled: event.api_key_enabled,
33
+ vertex_ai_enabled: event.vertex_ai_enabled,
34
+ log_user_prompts_enabled: event.telemetry_log_user_prompts_enabled,
35
+ file_filtering_respect_git_ignore: event.file_filtering_respect_git_ignore,
36
+ debug_mode: event.debug_enabled,
37
+ mcp_servers: event.mcp_servers,
38
+ };
39
+ const logger = logs.getLogger(SERVICE_NAME);
40
+ const logRecord = {
41
+ body: 'CLI configuration loaded.',
42
+ attributes,
43
+ };
44
+ logger.emit(logRecord);
45
+ }
46
+ export function logUserPrompt(config, event) {
47
+ if (!isTelemetrySdkInitialized())
48
+ return;
49
+ const attributes = {
50
+ ...getCommonAttributes(config),
51
+ 'event.name': EVENT_USER_PROMPT,
52
+ 'event.timestamp': new Date().toISOString(),
53
+ prompt_length: event.prompt_length,
54
+ };
55
+ if (shouldLogUserPrompts(config)) {
56
+ attributes.prompt = event.prompt;
57
+ }
58
+ const logger = logs.getLogger(SERVICE_NAME);
59
+ const logRecord = {
60
+ body: `User prompt. Length: ${event.prompt_length}.`,
61
+ attributes,
62
+ };
63
+ logger.emit(logRecord);
64
+ }
65
+ export function logToolCall(config, event) {
66
+ if (process.env.VERBOSE === 'true') {
67
+ debugLogger.error(`[TELEMETRY] logToolCall: ${event.function_name}`);
68
+ }
69
+ if (!isTelemetrySdkInitialized()) {
70
+ if (process.env.VERBOSE === 'true') {
71
+ debugLogger.error(`[TELEMETRY] SDK not initialized, skipping log`);
72
+ }
73
+ return;
74
+ }
75
+ const uiEvent = {
76
+ ...event,
77
+ 'event.name': EVENT_TOOL_CALL,
78
+ 'event.timestamp': new Date().toISOString(),
79
+ };
80
+ uiTelemetryService.addEvent(uiEvent);
81
+ const { metadata, ...eventWithoutMetadata } = event;
82
+ const attributes = {
83
+ ...getCommonAttributes(config),
84
+ ...eventWithoutMetadata,
85
+ 'event.name': EVENT_TOOL_CALL,
86
+ 'event.timestamp': new Date().toISOString(),
87
+ function_args: safeJsonStringify(event.function_args, 2),
88
+ };
89
+ // Handle metadata separately to ensure proper typing
90
+ if (metadata) {
91
+ for (const [key, value] of Object.entries(metadata)) {
92
+ attributes[`metadata.${key}`] =
93
+ typeof value === 'object' ? safeJsonStringify(value) : String(value);
94
+ }
95
+ }
96
+ if (event.error) {
97
+ attributes['error.message'] = event.error;
98
+ if (event.error_type) {
99
+ attributes['error.type'] = event.error_type;
100
+ }
101
+ }
102
+ const logger = logs.getLogger(SERVICE_NAME);
103
+ const logRecord = {
104
+ body: `Tool call: ${event.function_name}${event.decision != null ? `. Decision: ${event.decision}` : ''}. Success: ${event.success}. Duration: ${event.duration_ms}ms.`,
105
+ attributes,
106
+ };
107
+ logger.emit(logRecord);
108
+ recordToolCallMetrics(config, event.function_name, event.duration_ms, event.success, event.decision, event.tool_type);
109
+ }
110
+ export function logHookCall(config, event) {
111
+ if (!isTelemetrySdkInitialized())
112
+ return;
113
+ const attributes = {
114
+ ...getCommonAttributes(config),
115
+ ...event,
116
+ 'event.name': EVENT_HOOK_CALL,
117
+ 'event.timestamp': new Date().toISOString(),
118
+ hook_input: safeJsonStringify(event.hook_input),
119
+ hook_output: safeJsonStringify(event.hook_output),
120
+ };
121
+ const logger = logs.getLogger(SERVICE_NAME);
122
+ const logRecord = {
123
+ body: `Hook call: ${event.hook_event_name}. Success: ${event.success}. Duration: ${event.duration_ms}ms.`,
124
+ attributes,
125
+ };
126
+ logger.emit(logRecord);
127
+ }
128
+ export function logToolOutputTruncated(config, event) {
129
+ if (!isTelemetrySdkInitialized())
130
+ return;
131
+ const attributes = {
132
+ ...getCommonAttributes(config),
133
+ ...event,
134
+ 'event.name': EVENT_TOOL_OUTPUT_TRUNCATED,
135
+ 'event.timestamp': new Date().toISOString(),
136
+ };
137
+ const logger = logs.getLogger(SERVICE_NAME);
138
+ const logRecord = {
139
+ body: `Tool output truncated for ${event.tool_name}.`,
140
+ attributes,
141
+ };
142
+ logger.emit(logRecord);
143
+ }
144
+ export function logFileOperation(config, event) {
145
+ if (!isTelemetrySdkInitialized())
146
+ return;
147
+ const attributes = {
148
+ ...getCommonAttributes(config),
149
+ 'event.name': EVENT_FILE_OPERATION,
150
+ 'event.timestamp': new Date().toISOString(),
151
+ tool_name: event.tool_name,
152
+ operation: event.operation,
153
+ };
154
+ if (event.lines !== undefined &&
155
+ event.lines !== 0 &&
156
+ !Number.isNaN(event.lines)) {
157
+ attributes['lines'] = event.lines;
158
+ }
159
+ if (event.mimetype) {
160
+ attributes['mimetype'] = event.mimetype;
161
+ }
162
+ if (event.extension) {
163
+ attributes['extension'] = event.extension;
164
+ }
165
+ if (event.programming_language) {
166
+ attributes['programming_language'] = event.programming_language;
167
+ }
168
+ const logger = logs.getLogger(SERVICE_NAME);
169
+ const logRecord = {
170
+ body: `File operation: ${event.operation}. Lines: ${event.lines}.`,
171
+ attributes,
172
+ };
173
+ logger.emit(logRecord);
174
+ recordFileOperationMetric(config, event.operation, event.lines, event.mimetype, event.extension);
175
+ }
176
+ export function logApiRequest(config, event) {
177
+ if (!isTelemetrySdkInitialized())
178
+ return;
179
+ const attributes = {
180
+ ...getCommonAttributes(config),
181
+ ...event,
182
+ 'event.name': EVENT_API_REQUEST,
183
+ 'event.timestamp': new Date().toISOString(),
184
+ };
185
+ const logger = logs.getLogger(SERVICE_NAME);
186
+ const logRecord = {
187
+ body: `API request to ${event.model}.`,
188
+ attributes,
189
+ };
190
+ logger.emit(logRecord);
191
+ }
192
+ export function logApiError(config, event) {
193
+ if (!isTelemetrySdkInitialized())
194
+ return;
195
+ const uiEvent = {
196
+ ...event,
197
+ 'event.name': EVENT_API_ERROR,
198
+ 'event.timestamp': new Date().toISOString(),
199
+ };
200
+ uiTelemetryService.addEvent(uiEvent);
201
+ const attributes = {
202
+ ...getCommonAttributes(config),
203
+ ...event,
204
+ 'event.name': EVENT_API_ERROR,
205
+ 'event.timestamp': new Date().toISOString(),
206
+ ['error.message']: event.error,
207
+ model_name: event.model,
208
+ duration: event.duration_ms,
209
+ };
210
+ if (event.error_type) {
211
+ attributes['error.type'] = event.error_type;
212
+ }
213
+ if (typeof event.status_code === 'number') {
214
+ attributes[SemanticAttributes.HTTP_STATUS_CODE] = event.status_code;
215
+ }
216
+ const logger = logs.getLogger(SERVICE_NAME);
217
+ const logRecord = {
218
+ body: `API error for ${event.model}. Error: ${event.error}. Duration: ${event.duration_ms}ms.`,
219
+ attributes,
220
+ };
221
+ logger.emit(logRecord);
222
+ recordApiErrorMetrics(config, event.model, event.duration_ms, event.status_code, event.error_type);
223
+ }
224
+ export function logApiResponse(config, event) {
225
+ if (!isTelemetrySdkInitialized())
226
+ return;
227
+ const uiEvent = {
228
+ ...event,
229
+ 'event.name': EVENT_API_RESPONSE,
230
+ 'event.timestamp': new Date().toISOString(),
231
+ };
232
+ uiTelemetryService.addEvent(uiEvent);
233
+ const attributes = {
234
+ ...getCommonAttributes(config),
235
+ ...event,
236
+ 'event.name': EVENT_API_RESPONSE,
237
+ 'event.timestamp': new Date().toISOString(),
238
+ };
239
+ if (event.response_text) {
240
+ attributes.response_text = event.response_text;
241
+ }
242
+ if (event.error) {
243
+ attributes['error.message'] = event.error;
244
+ }
245
+ else if (event.status_code !== undefined &&
246
+ typeof event.status_code === 'number') {
247
+ attributes[SemanticAttributes.HTTP_STATUS_CODE] = event.status_code;
248
+ }
249
+ const logger = logs.getLogger(SERVICE_NAME);
250
+ const logRecord = {
251
+ // eslint-disable-next-line sonarjs/expression-complexity -- Existing structure is intentionally preserved; refactoring this boundary is outside the lint slice.
252
+ body: `API response from ${event.model}. Status: ${event.status_code !== undefined && event.status_code !== '' && event.status_code !== 0 && !(typeof event.status_code === 'number' && Number.isNaN(event.status_code)) ? event.status_code : 'N/A'}. Duration: ${event.duration_ms}ms.`,
253
+ attributes,
254
+ };
255
+ logger.emit(logRecord);
256
+ recordApiResponseMetrics(config, event.model, event.duration_ms, event.status_code, event.error);
257
+ recordTokenUsageMetrics(config, event.model, event.input_token_count, 'input');
258
+ recordTokenUsageMetrics(config, event.model, event.output_token_count, 'output');
259
+ recordTokenUsageMetrics(config, event.model, event.cached_content_token_count, 'cache');
260
+ recordTokenUsageMetrics(config, event.model, event.thoughts_token_count, 'thought');
261
+ recordTokenUsageMetrics(config, event.model, event.tool_token_count, 'tool');
262
+ }
263
+ export function logLoopDetected(config, event) {
264
+ if (!isTelemetrySdkInitialized())
265
+ return;
266
+ const attributes = {
267
+ ...getCommonAttributes(config),
268
+ ...event,
269
+ };
270
+ const logger = logs.getLogger(SERVICE_NAME);
271
+ const logRecord = {
272
+ body: `Loop detected. Type: ${event.loop_type}.`,
273
+ attributes,
274
+ };
275
+ logger.emit(logRecord);
276
+ }
277
+ export function logNextSpeakerCheck(config, event) {
278
+ if (!isTelemetrySdkInitialized())
279
+ return;
280
+ const attributes = {
281
+ ...getCommonAttributes(config),
282
+ ...event,
283
+ 'event.name': EVENT_NEXT_SPEAKER_CHECK,
284
+ };
285
+ const logger = logs.getLogger(SERVICE_NAME);
286
+ const logRecord = {
287
+ body: `Next speaker check.`,
288
+ attributes,
289
+ };
290
+ logger.emit(logRecord);
291
+ }
292
+ export function logSlashCommand(config, event) {
293
+ if (!isTelemetrySdkInitialized())
294
+ return;
295
+ const attributes = {
296
+ ...getCommonAttributes(config),
297
+ ...event,
298
+ 'event.name': EVENT_SLASH_COMMAND,
299
+ };
300
+ const logger = logs.getLogger(SERVICE_NAME);
301
+ const logRecord = {
302
+ body: `Slash command: ${event.command}.`,
303
+ attributes,
304
+ };
305
+ logger.emit(logRecord);
306
+ }
307
+ // Generic function to log telemetry events to the configured system
308
+ function logTelemetryEvent(config, event) {
309
+ if (!isTelemetrySdkInitialized())
310
+ return;
311
+ const logger = logs.getLogger(SERVICE_NAME);
312
+ const eventObj = event;
313
+ const attributes = {
314
+ ...getCommonAttributes(config),
315
+ 'event.name': eventObj['event.name'],
316
+ 'event.timestamp': eventObj['event.timestamp'],
317
+ };
318
+ // Add other event properties, ensuring they are compatible with LogAttributes
319
+ Object.keys(eventObj).forEach((key) => {
320
+ if (key !== 'event.name' &&
321
+ key !== 'event.timestamp' &&
322
+ eventObj[key] !== undefined) {
323
+ const value = eventObj[key];
324
+ // Convert complex objects to strings to ensure compatibility with LogAttributes
325
+ if (typeof value === 'object' && value !== null) {
326
+ attributes[key] = JSON.stringify(value);
327
+ }
328
+ else if (typeof value === 'string' ||
329
+ typeof value === 'number' ||
330
+ typeof value === 'boolean') {
331
+ attributes[key] = value;
332
+ }
333
+ }
334
+ });
335
+ const logRecord = {
336
+ body: `Telemetry event: ${eventObj['event.name']}`,
337
+ attributes,
338
+ };
339
+ logger.emit(logRecord);
340
+ }
341
+ export function logConversationRequest(config, event) {
342
+ if (!config.getConversationLoggingEnabled()) {
343
+ return;
344
+ }
345
+ try {
346
+ logTelemetryEvent(config, event);
347
+ }
348
+ catch (error) {
349
+ debugLogger.warn('Failed to log conversation request:', error);
350
+ }
351
+ }
352
+ export function logConversationResponse(config, event) {
353
+ if (!config.getConversationLoggingEnabled()) {
354
+ return;
355
+ }
356
+ try {
357
+ logTelemetryEvent(config, event);
358
+ }
359
+ catch (error) {
360
+ debugLogger.warn('Failed to log conversation response:', error);
361
+ }
362
+ }
363
+ export function logProviderSwitch(config, event) {
364
+ if (!config.getConversationLoggingEnabled()) {
365
+ return;
366
+ }
367
+ try {
368
+ logTelemetryEvent(config, event);
369
+ }
370
+ catch (error) {
371
+ debugLogger.warn('Failed to log provider switch:', error);
372
+ }
373
+ }
374
+ export function logProviderCapability(config, event) {
375
+ if (!config.getConversationLoggingEnabled()) {
376
+ return;
377
+ }
378
+ try {
379
+ logTelemetryEvent(config, event);
380
+ }
381
+ catch (error) {
382
+ debugLogger.warn('Failed to log provider capability:', error);
383
+ }
384
+ }
385
+ export function logKittySequenceOverflow(config, event) {
386
+ if (!isTelemetrySdkInitialized())
387
+ return;
388
+ const attributes = {
389
+ ...getCommonAttributes(config),
390
+ ...event,
391
+ };
392
+ const logger = logs.getLogger(SERVICE_NAME);
393
+ const logRecord = {
394
+ body: `Kitty sequence overflow. Length: ${event.sequence_length}.`,
395
+ attributes,
396
+ };
397
+ logger.emit(logRecord);
398
+ }
399
+ /**
400
+ * Logs token usage per conversation turn.
401
+ * @param config The configuration object.
402
+ * @param event The TokenUsageEvent to log.
403
+ */
404
+ export function logTokenUsage(config, event) {
405
+ if (!isTelemetrySdkInitialized())
406
+ return;
407
+ const attributes = {
408
+ ...getCommonAttributes(config),
409
+ ...event,
410
+ };
411
+ const logger = logs.getLogger(SERVICE_NAME);
412
+ const logRecord = {
413
+ body: `Token usage. Provider: ${event.provider}, ConversationId: ${event.conversationId}, Input: ${event.input}, Output: ${event.output}, Cache: ${event.cache}, Tool: ${event.tool}, Thought: ${event.thought}, Total: ${event.total}.`,
414
+ attributes,
415
+ };
416
+ logger.emit(logRecord);
417
+ }
418
+ /**
419
+ * Logs performance metrics such as tokens per minute.
420
+ * @param config The configuration object.
421
+ * @param event The PerformanceMetricsEvent to log.
422
+ */
423
+ export function logPerformanceMetrics(config, event) {
424
+ if (!isTelemetrySdkInitialized())
425
+ return;
426
+ const attributes = {
427
+ ...getCommonAttributes(config),
428
+ ...event,
429
+ };
430
+ const logger = logs.getLogger(SERVICE_NAME);
431
+ const logRecord = {
432
+ body: `Performance metrics. Provider: ${event.provider}, TokensPerMinute: ${event.tokensPerMinute}, ThrottleWaitTimeMs: ${event.throttleWaitTimeMs}, TotalRequests: ${event.totalRequests}, ErrorRate: ${event.errorRate}.`,
433
+ attributes,
434
+ };
435
+ logger.emit(logRecord);
436
+ }
437
+ export function logMalformedJsonResponse(config, event) {
438
+ if (!isTelemetrySdkInitialized())
439
+ return;
440
+ const attributes = {
441
+ ...getCommonAttributes(config),
442
+ 'event.name': EVENT_MALFORMED_JSON_RESPONSE,
443
+ 'event.timestamp': new Date().toISOString(),
444
+ model: event.model,
445
+ };
446
+ const logger = logs.getLogger(SERVICE_NAME);
447
+ const logRecord = {
448
+ body: `Malformed JSON response from ${event.model}.`,
449
+ attributes,
450
+ };
451
+ logger.emit(logRecord);
452
+ }
453
+ export function logModelRouting(config, event) {
454
+ if (!isTelemetrySdkInitialized())
455
+ return;
456
+ const attributes = {
457
+ ...getCommonAttributes(config),
458
+ model: event.model,
459
+ source: event.source,
460
+ contextLimit: event.contextLimit,
461
+ reason: event.reason,
462
+ fallback: event.fallback,
463
+ 'event.name': EVENT_MODEL_ROUTING,
464
+ };
465
+ const logger = logs.getLogger(SERVICE_NAME);
466
+ const logRecord = {
467
+ body: `Model routing decision. Model: ${event.model}, Source: ${event.source}`,
468
+ attributes,
469
+ };
470
+ logger.emit(logRecord);
471
+ recordModelRoutingMetrics(config, event);
472
+ }
473
+ export function logExtensionInstallEvent(config, event) {
474
+ if (!isTelemetrySdkInitialized())
475
+ return;
476
+ const attributes = {
477
+ ...getCommonAttributes(config),
478
+ 'event.name': EVENT_EXTENSION_INSTALL,
479
+ 'event.timestamp': new Date().toISOString(),
480
+ extension_name: event.extension_name,
481
+ extension_version: event.extension_version,
482
+ extension_source: event.extension_source,
483
+ status: event.status,
484
+ };
485
+ const logger = logs.getLogger(SERVICE_NAME);
486
+ const logRecord = {
487
+ body: `Installed extension ${event.extension_name}`,
488
+ attributes,
489
+ };
490
+ logger.emit(logRecord);
491
+ }
492
+ export function logExtensionUninstall(config, event) {
493
+ if (!isTelemetrySdkInitialized())
494
+ return;
495
+ const attributes = {
496
+ ...getCommonAttributes(config),
497
+ 'event.name': EVENT_EXTENSION_UNINSTALL,
498
+ 'event.timestamp': new Date().toISOString(),
499
+ extension_name: event.extension_name,
500
+ status: event.status,
501
+ };
502
+ const logger = logs.getLogger(SERVICE_NAME);
503
+ const logRecord = {
504
+ body: `Uninstalled extension ${event.extension_name}`,
505
+ attributes,
506
+ };
507
+ logger.emit(logRecord);
508
+ }
509
+ export function logExtensionEnable(config, event) {
510
+ if (!isTelemetrySdkInitialized())
511
+ return;
512
+ const attributes = {
513
+ ...getCommonAttributes(config),
514
+ 'event.name': EVENT_EXTENSION_ENABLE,
515
+ 'event.timestamp': new Date().toISOString(),
516
+ extension_name: event.extension_name,
517
+ setting_scope: event.setting_scope,
518
+ };
519
+ const logger = logs.getLogger(SERVICE_NAME);
520
+ const logRecord = {
521
+ body: `Enabled extension ${event.extension_name}`,
522
+ attributes,
523
+ };
524
+ logger.emit(logRecord);
525
+ }
526
+ export function logExtensionDisable(config, event) {
527
+ if (!isTelemetrySdkInitialized())
528
+ return;
529
+ const attributes = {
530
+ ...getCommonAttributes(config),
531
+ 'event.name': EVENT_EXTENSION_DISABLE,
532
+ 'event.timestamp': new Date().toISOString(),
533
+ extension_name: event.extension_name,
534
+ setting_scope: event.setting_scope,
535
+ };
536
+ const logger = logs.getLogger(SERVICE_NAME);
537
+ const logRecord = {
538
+ body: `Disabled extension ${event.extension_name}`,
539
+ attributes,
540
+ };
541
+ logger.emit(logRecord);
542
+ }
543
+ //# sourceMappingURL=loggers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loggers.js","sourceRoot":"","sources":["../../../src/telemetry/loggers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,IAAI,GAGL,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAKzE,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,YAAY,EACZ,mBAAmB,EACnB,2BAA2B,EAC3B,oBAAoB,EACpB,6BAA6B,EAC7B,mBAAmB,EACnB,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AA6BxB,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAgB,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAMtD,MAAM,oBAAoB,GAAG,CAAC,MAA6B,EAAW,EAAE,CACtE,MAAM,CAAC,6BAA6B,EAAE,CAAC;AAEzC,SAAS,mBAAmB,CAAC,MAAqB;IAChD,OAAO;QACL,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAAc,EACd,KAAwB;IAExB,IAAI,CAAC,yBAAyB,EAAE;QAAE,OAAO;IAEzC,MAAM,UAAU,GAAkB;QAChC,GAAG,mBAAmB,CAAC,MAAM,CAAC;QAC9B,YAAY,EAAE,gBAAgB;QAC9B,iBAAiB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC3C,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;QAC5C,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,wBAAwB,EAAE,KAAK,CAAC,kCAAkC;QAClE,iCAAiC,EAAE,KAAK,CAAC,iCAAiC;QAC1E,UAAU,EAAE,KAAK,CAAC,aAAa;QAC/B,WAAW,EAAE,KAAK,CAAC,WAAW;KAC/B,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,2BAA2B;QACjC,UAAU;KACX,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,KAAsB;IAClE,IAAI,CAAC,yBAAyB,EAAE;QAAE,OAAO;IAEzC,MAAM,UAAU,GAAkB;QAChC,GAAG,mBAAmB,CAAC,MAAM,CAAC;QAC9B,YAAY,EAAE,iBAAiB;QAC/B,iBAAiB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC3C,aAAa,EAAE,KAAK,CAAC,aAAa;KACnC,CAAC;IAEF,IAAI,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;QACjC,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IACnC,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,wBAAwB,KAAK,CAAC,aAAa,GAAG;QACpD,UAAU;KACX,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,MAAyB,EACzB,KAAoB;IAEpB,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;QACnC,WAAW,CAAC,KAAK,CAAC,4BAA4B,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,CAAC,yBAAyB,EAAE,EAAE,CAAC;QACjC,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;YACnC,WAAW,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACrE,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG;QACd,GAAG,KAAK;QACR,YAAY,EAAE,eAAe;QAC7B,iBAAiB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACjC,CAAC;IACb,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAErC,MAAM,EAAE,QAAQ,EAAE,GAAG,oBAAoB,EAAE,GAAG,KAAK,CAAC;IACpD,MAAM,UAAU,GAAkB;QAChC,GAAG,mBAAmB,CAAC,MAAM,CAAC;QAC9B,GAAG,oBAAoB;QACvB,YAAY,EAAE,eAAe;QAC7B,iBAAiB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC3C,aAAa,EAAE,iBAAiB,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;KACzD,CAAC;IAEF,qDAAqD;IACrD,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpD,UAAU,CAAC,YAAY,GAAG,EAAE,CAAC;gBAC3B,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,UAAU,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;QAC1C,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,UAAU,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,cAAc,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,eAAe,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,KAAK,CAAC,OAAO,eAAe,KAAK,CAAC,WAAW,KAAK;QACvK,UAAU;KACX,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvB,qBAAqB,CACnB,MAAM,EACN,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,SAAS,CAChB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,KAAoB;IAC9D,IAAI,CAAC,yBAAyB,EAAE;QAAE,OAAO;IAEzC,MAAM,UAAU,GAAkB;QAChC,GAAG,mBAAmB,CAAC,MAAM,CAAC;QAC9B,GAAG,KAAK;QACR,YAAY,EAAE,eAAe;QAC7B,iBAAiB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC3C,UAAU,EAAE,iBAAiB,CAAC,KAAK,CAAC,UAAU,CAAC;QAC/C,WAAW,EAAE,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC;KAClD,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,cAAc,KAAK,CAAC,eAAe,cAAc,KAAK,CAAC,OAAO,eAAe,KAAK,CAAC,WAAW,KAAK;QACzG,UAAU;KACX,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,MAAc,EACd,KAA+B;IAE/B,IAAI,CAAC,yBAAyB,EAAE;QAAE,OAAO;IAEzC,MAAM,UAAU,GAAkB;QAChC,GAAG,mBAAmB,CAAC,MAAM,CAAC;QAC9B,GAAG,KAAK;QACR,YAAY,EAAE,2BAA2B;QACzC,iBAAiB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAC5C,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,6BAA6B,KAAK,CAAC,SAAS,GAAG;QACrD,UAAU;KACX,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,MAAc,EACd,KAAyB;IAEzB,IAAI,CAAC,yBAAyB,EAAE;QAAE,OAAO;IAEzC,MAAM,UAAU,GAAkB;QAChC,GAAG,mBAAmB,CAAC,MAAM,CAAC;QAC9B,YAAY,EAAE,oBAAoB;QAClC,iBAAiB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC3C,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC;IAEF,IACE,KAAK,CAAC,KAAK,KAAK,SAAS;QACzB,KAAK,CAAC,KAAK,KAAK,CAAC;QACjB,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAC1B,CAAC;QACD,UAAU,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;IACpC,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,UAAU,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;IAC1C,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,UAAU,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC;IAC5C,CAAC;IACD,IAAI,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC/B,UAAU,CAAC,sBAAsB,CAAC,GAAG,KAAK,CAAC,oBAAoB,CAAC;IAClE,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,mBAAmB,KAAK,CAAC,SAAS,YAAY,KAAK,CAAC,KAAK,GAAG;QAClE,UAAU;KACX,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAEvB,yBAAyB,CACvB,MAAM,EACN,KAAK,CAAC,SAA0B,EAChC,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,SAAS,CAChB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,KAAsB;IAClE,IAAI,CAAC,yBAAyB,EAAE;QAAE,OAAO;IAEzC,MAAM,UAAU,GAAkB;QAChC,GAAG,mBAAmB,CAAC,MAAM,CAAC;QAC9B,GAAG,KAAK;QACR,YAAY,EAAE,iBAAiB;QAC/B,iBAAiB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAC5C,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,kBAAkB,KAAK,CAAC,KAAK,GAAG;QACtC,UAAU;KACX,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,KAAoB;IAC9D,IAAI,CAAC,yBAAyB,EAAE;QAAE,OAAO;IACzC,MAAM,OAAO,GAAG;QACd,GAAG,KAAK;QACR,YAAY,EAAE,eAAe;QAC7B,iBAAiB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACjC,CAAC;IACb,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAErC,MAAM,UAAU,GAAkB;QAChC,GAAG,mBAAmB,CAAC,MAAM,CAAC;QAC9B,GAAG,KAAK;QACR,YAAY,EAAE,eAAe;QAC7B,iBAAiB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC3C,CAAC,eAAe,CAAC,EAAE,KAAK,CAAC,KAAK;QAC9B,UAAU,EAAE,KAAK,CAAC,KAAK;QACvB,QAAQ,EAAE,KAAK,CAAC,WAAW;KAC5B,CAAC;IAEF,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACrB,UAAU,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC;IAC9C,CAAC;IACD,IAAI,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC1C,UAAU,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC;IACtE,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,iBAAiB,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,KAAK,eAAe,KAAK,CAAC,WAAW,KAAK;QAC9F,UAAU;KACX,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvB,qBAAqB,CACnB,MAAM,EACN,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,UAAU,CACjB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,KAAuB;IACpE,IAAI,CAAC,yBAAyB,EAAE;QAAE,OAAO;IACzC,MAAM,OAAO,GAAG;QACd,GAAG,KAAK;QACR,YAAY,EAAE,kBAAkB;QAChC,iBAAiB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACjC,CAAC;IACb,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,UAAU,GAAkB;QAChC,GAAG,mBAAmB,CAAC,MAAM,CAAC;QAC9B,GAAG,KAAK;QACR,YAAY,EAAE,kBAAkB;QAChC,iBAAiB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAC5C,CAAC;IACF,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACxB,UAAU,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;IACjD,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,UAAU,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;IAC5C,CAAC;SAAM,IACL,KAAK,CAAC,WAAW,KAAK,SAAS;QAC/B,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,EACrC,CAAC;QACD,UAAU,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC;IACtE,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAc;QAC3B,gKAAgK;QAChK,IAAI,EAAE,qBAAqB,KAAK,CAAC,KAAK,aAAa,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,KAAK,CAAC,WAAW,KAAK,EAAE,IAAI,KAAK,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,eAAe,KAAK,CAAC,WAAW,KAAK;QACzR,UAAU;KACX,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvB,wBAAwB,CACtB,MAAM,EACN,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,KAAK,CACZ,CAAC;IACF,uBAAuB,CACrB,MAAM,EACN,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,iBAAiB,EACvB,OAAO,CACR,CAAC;IACF,uBAAuB,CACrB,MAAM,EACN,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,kBAAkB,EACxB,QAAQ,CACT,CAAC;IACF,uBAAuB,CACrB,MAAM,EACN,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,0BAA0B,EAChC,OAAO,CACR,CAAC;IACF,uBAAuB,CACrB,MAAM,EACN,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,oBAAoB,EAC1B,SAAS,CACV,CAAC;IACF,uBAAuB,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,MAAc,EACd,KAAwB;IAExB,IAAI,CAAC,yBAAyB,EAAE;QAAE,OAAO;IAEzC,MAAM,UAAU,GAAkB;QAChC,GAAG,mBAAmB,CAAC,MAAM,CAAC;QAC9B,GAAG,KAAK;KACT,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,wBAAwB,KAAK,CAAC,SAAS,GAAG;QAChD,UAAU;KACX,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAAc,EACd,KAA4B;IAE5B,IAAI,CAAC,yBAAyB,EAAE;QAAE,OAAO;IAEzC,MAAM,UAAU,GAAkB;QAChC,GAAG,mBAAmB,CAAC,MAAM,CAAC;QAC9B,GAAG,KAAK;QACR,YAAY,EAAE,wBAAwB;KACvC,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,qBAAqB;QAC3B,UAAU;KACX,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,MAAc,EACd,KAAwB;IAExB,IAAI,CAAC,yBAAyB,EAAE;QAAE,OAAO;IAEzC,MAAM,UAAU,GAAkB;QAChC,GAAG,mBAAmB,CAAC,MAAM,CAAC;QAC9B,GAAG,KAAK;QACR,YAAY,EAAE,mBAAmB;KAClC,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,kBAAkB,KAAK,CAAC,OAAO,GAAG;QACxC,UAAU;KACX,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzB,CAAC;AAED,oEAAoE;AACpE,SAAS,iBAAiB,CAAC,MAAc,EAAE,KAAc;IACvD,IAAI,CAAC,yBAAyB,EAAE;QAAE,OAAO;IAEzC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,KAAgC,CAAC;IAClD,MAAM,UAAU,GAAkB;QAChC,GAAG,mBAAmB,CAAC,MAAM,CAAC;QAC9B,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAW;QAC9C,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB,CAAW;KACzD,CAAC;IAEF,8EAA8E;IAC9E,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACpC,IACE,GAAG,KAAK,YAAY;YACpB,GAAG,KAAK,iBAAiB;YACzB,QAAQ,CAAC,GAAG,CAAC,KAAK,SAAS,EAC3B,CAAC;YACD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC5B,gFAAgF;YAChF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAChD,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC1C,CAAC;iBAAM,IACL,OAAO,KAAK,KAAK,QAAQ;gBACzB,OAAO,KAAK,KAAK,QAAQ;gBACzB,OAAO,KAAK,KAAK,SAAS,EAC1B,CAAC;gBACD,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,oBAAoB,QAAQ,CAAC,YAAY,CAAC,EAAE;QAClD,UAAU;KACX,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,MAAc,EACd,KAA+B;IAE/B,IAAI,CAAC,MAAM,CAAC,6BAA6B,EAAE,EAAE,CAAC;QAC5C,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,IAAI,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,MAAc,EACd,KAAgC;IAEhC,IAAI,CAAC,MAAM,CAAC,6BAA6B,EAAE,EAAE,CAAC;QAC5C,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,IAAI,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;IAClE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,MAAc,EACd,KAA0B;IAE1B,IAAI,CAAC,MAAM,CAAC,6BAA6B,EAAE,EAAE,CAAC;QAC5C,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,IAAI,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,MAAc,EACd,KAA8B;IAE9B,IAAI,CAAC,MAAM,CAAC,6BAA6B,EAAE,EAAE,CAAC;QAC5C,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,IAAI,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,MAAc,EACd,KAAiC;IAEjC,IAAI,CAAC,yBAAyB,EAAE;QAAE,OAAO;IAEzC,MAAM,UAAU,GAAkB;QAChC,GAAG,mBAAmB,CAAC,MAAM,CAAC;QAC9B,GAAG,KAAK;KACT,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,oCAAoC,KAAK,CAAC,eAAe,GAAG;QAClE,UAAU;KACX,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,KAAsB;IAClE,IAAI,CAAC,yBAAyB,EAAE;QAAE,OAAO;IAEzC,MAAM,UAAU,GAAkB;QAChC,GAAG,mBAAmB,CAAC,MAAM,CAAC;QAC9B,GAAG,KAAK;KACT,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,0BAA0B,KAAK,CAAC,QAAQ,qBAAqB,KAAK,CAAC,cAAc,YAAY,KAAK,CAAC,KAAK,aAAa,KAAK,CAAC,MAAM,YAAY,KAAK,CAAC,KAAK,WAAW,KAAK,CAAC,IAAI,cAAc,KAAK,CAAC,OAAO,YAAY,KAAK,CAAC,KAAK,GAAG;QACxO,UAAU;KACX,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAc,EACd,KAA8B;IAE9B,IAAI,CAAC,yBAAyB,EAAE;QAAE,OAAO;IAEzC,MAAM,UAAU,GAAkB;QAChC,GAAG,mBAAmB,CAAC,MAAM,CAAC;QAC9B,GAAG,KAAK;KACT,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,kCAAkC,KAAK,CAAC,QAAQ,sBAAsB,KAAK,CAAC,eAAe,yBAAyB,KAAK,CAAC,kBAAkB,oBAAoB,KAAK,CAAC,aAAa,gBAAgB,KAAK,CAAC,SAAS,GAAG;QAC3N,UAAU;KACX,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,MAAc,EACd,KAAiC;IAEjC,IAAI,CAAC,yBAAyB,EAAE;QAAE,OAAO;IAEzC,MAAM,UAAU,GAAkB;QAChC,GAAG,mBAAmB,CAAC,MAAM,CAAC;QAC9B,YAAY,EAAE,6BAA6B;QAC3C,iBAAiB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC3C,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,gCAAgC,KAAK,CAAC,KAAK,GAAG;QACpD,UAAU;KACX,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,MAAc,EACd,KAAwB;IAExB,IAAI,CAAC,yBAAyB,EAAE;QAAE,OAAO;IAEzC,MAAM,UAAU,GAAkB;QAChC,GAAG,mBAAmB,CAAC,MAAM,CAAC;QAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,YAAY,EAAE,mBAAmB;KAClC,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,kCAAkC,KAAK,CAAC,KAAK,aAAa,KAAK,CAAC,MAAM,EAAE;QAC9E,UAAU;KACX,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAEvB,yBAAyB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,MAAc,EACd,KAA4B;IAE5B,IAAI,CAAC,yBAAyB,EAAE;QAAE,OAAO;IAEzC,MAAM,UAAU,GAAkB;QAChC,GAAG,mBAAmB,CAAC,MAAM,CAAC;QAC9B,YAAY,EAAE,uBAAuB;QACrC,iBAAiB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC3C,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,MAAM,EAAE,KAAK,CAAC,MAAM;KACrB,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,uBAAuB,KAAK,CAAC,cAAc,EAAE;QACnD,UAAU;KACX,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,MAAc,EACd,KAA8B;IAE9B,IAAI,CAAC,yBAAyB,EAAE;QAAE,OAAO;IAEzC,MAAM,UAAU,GAAkB;QAChC,GAAG,mBAAmB,CAAC,MAAM,CAAC;QAC9B,YAAY,EAAE,yBAAyB;QACvC,iBAAiB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC3C,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,MAAM,EAAE,KAAK,CAAC,MAAM;KACrB,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,yBAAyB,KAAK,CAAC,cAAc,EAAE;QACrD,UAAU;KACX,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,MAAc,EACd,KAA2B;IAE3B,IAAI,CAAC,yBAAyB,EAAE;QAAE,OAAO;IAEzC,MAAM,UAAU,GAAkB;QAChC,GAAG,mBAAmB,CAAC,MAAM,CAAC;QAC9B,YAAY,EAAE,sBAAsB;QACpC,iBAAiB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC3C,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,aAAa,EAAE,KAAK,CAAC,aAAa;KACnC,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,qBAAqB,KAAK,CAAC,cAAc,EAAE;QACjD,UAAU;KACX,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAAc,EACd,KAA4B;IAE5B,IAAI,CAAC,yBAAyB,EAAE;QAAE,OAAO;IAEzC,MAAM,UAAU,GAAkB;QAChC,GAAG,mBAAmB,CAAC,MAAM,CAAC;QAC9B,YAAY,EAAE,uBAAuB;QACrC,iBAAiB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC3C,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,aAAa,EAAE,KAAK,CAAC,aAAa;KACnC,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,sBAAsB,KAAK,CAAC,cAAc,EAAE;QAClD,UAAU;KACX,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzB,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { type Meter } from '@opentelemetry/api';
7
+ import type { DiffStat, SessionConfig as ISessionConfig, TelemetryConfig } from '../internal/interfaces.js';
8
+ export declare enum FileOperation {
9
+ CREATE = "create",
10
+ READ = "read",
11
+ UPDATE = "update"
12
+ }
13
+ export declare function getMeter(): Meter | undefined;
14
+ export declare function initializeMetrics(config: TelemetryConfig): void;
15
+ export declare function recordToolCallMetrics(config: ISessionConfig, functionName: string, durationMs: number, success: boolean, decision?: 'accept' | 'reject' | 'modify' | 'auto_accept', tool_type?: 'native' | 'mcp'): void;
16
+ export declare function recordTokenUsageMetrics(config: TelemetryConfig, model: string, tokenCount: number, type: 'input' | 'output' | 'thought' | 'cache' | 'tool'): void;
17
+ export declare function recordApiResponseMetrics(config: TelemetryConfig, model: string, durationMs: number, statusCode?: number | string, error?: string): void;
18
+ export declare function recordApiErrorMetrics(config: TelemetryConfig, model: string, durationMs: number, statusCode?: number | string, errorType?: string): void;
19
+ export declare function recordFileOperationMetric(config: TelemetryConfig, operation: FileOperation, lines?: number, mimetype?: string, extension?: string, diffStat?: DiffStat): void;
20
+ export declare function recordModelRoutingMetrics(_config: TelemetryConfig, _event: {
21
+ model: string;
22
+ source: string;
23
+ fallback?: boolean;
24
+ }): void;