@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,380 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ * @plan PLAN-20250909-TOKTRACK.P08
6
+ */
7
+ import type { GenerateContentResponseUsageMetadata } from '@google/genai';
8
+ import type { TelemetryConfig, CompletedToolCallShape, HookEventName, HookInput, HookExecutionResult } from '../internal/interfaces.js';
9
+ import { ToolConfirmationOutcome } from '../internal/interfaces.js';
10
+ /**
11
+ * Re-export the enums from our internal interfaces so consumers
12
+ * can import them from the telemetry package directly.
13
+ */
14
+ export { ToolConfirmationOutcome, HookEventName };
15
+ /**
16
+ * Re-export TelemetryConfig as Config for backward compatibility
17
+ * with event constructors that accept a config parameter.
18
+ */
19
+ export type { TelemetryConfig as Config };
20
+ type Config = TelemetryConfig;
21
+ export interface ProviderCapabilities {
22
+ supportsStreaming: boolean;
23
+ supportsTools: boolean;
24
+ supportsVision: boolean;
25
+ maxTokens: number;
26
+ supportedFormats: string[];
27
+ hasModelSelection?: boolean;
28
+ hasApiKeyConfig?: boolean;
29
+ hasBaseUrlConfig?: boolean;
30
+ supportsPaidMode?: boolean;
31
+ }
32
+ export interface ProviderContext {
33
+ providerName: string;
34
+ currentModel: string;
35
+ toolFormat: string;
36
+ isPaidMode: boolean;
37
+ capabilities: ProviderCapabilities;
38
+ sessionStartTime: number;
39
+ }
40
+ export interface ToolCall {
41
+ provider: string;
42
+ name: string;
43
+ arguments: unknown;
44
+ id: string;
45
+ }
46
+ export interface ProviderPerformanceMetrics {
47
+ providerName: string;
48
+ totalRequests: number;
49
+ totalTokens: number;
50
+ averageLatency: number;
51
+ timeToFirstToken: number | null;
52
+ tokensPerSecond: number;
53
+ tokensPerMinute: number;
54
+ throttleWaitTimeMs: number;
55
+ chunksReceived: number;
56
+ errorRate: number;
57
+ errors: Array<{
58
+ timestamp: number;
59
+ duration: number;
60
+ error: string;
61
+ }>;
62
+ sessionTokenUsage: {
63
+ input: number;
64
+ output: number;
65
+ cache: number;
66
+ tool: number;
67
+ thought: number;
68
+ total: number;
69
+ };
70
+ }
71
+ export declare enum ToolCallDecision {
72
+ ACCEPT = "accept",
73
+ REJECT = "reject",
74
+ MODIFY = "modify",
75
+ AUTO_ACCEPT = "auto_accept"
76
+ }
77
+ export declare function getDecisionFromOutcome(outcome: ToolConfirmationOutcome): ToolCallDecision;
78
+ export declare class StartSessionEvent {
79
+ 'event.name': 'cli_config';
80
+ 'event.timestamp': string;
81
+ model: string;
82
+ embedding_model: string | undefined;
83
+ sandbox_enabled: boolean;
84
+ core_tools_enabled: string;
85
+ approval_mode: string;
86
+ api_key_enabled: boolean;
87
+ vertex_ai_enabled: boolean;
88
+ debug_enabled: boolean;
89
+ mcp_servers: string;
90
+ telemetry_enabled: boolean;
91
+ telemetry_log_user_prompts_enabled: boolean;
92
+ file_filtering_respect_git_ignore: boolean;
93
+ constructor(config: Config);
94
+ }
95
+ export declare class EndSessionEvent {
96
+ 'event.name': 'end_session';
97
+ 'event.timestamp': string;
98
+ session_id?: string;
99
+ constructor(config?: Config);
100
+ }
101
+ export declare class UserPromptEvent {
102
+ 'event.name': 'user_prompt';
103
+ 'event.timestamp': string;
104
+ prompt_length: number;
105
+ prompt_id: string;
106
+ prompt?: string;
107
+ constructor(prompt_length: number, prompt_Id: string, prompt?: string);
108
+ }
109
+ export declare class ToolCallEvent {
110
+ 'event.name': 'tool_call';
111
+ 'event.timestamp': string;
112
+ function_name: string;
113
+ function_args: Record<string, unknown>;
114
+ duration_ms: number;
115
+ success: boolean;
116
+ decision?: ToolCallDecision;
117
+ error?: string;
118
+ error_type?: string;
119
+ prompt_id: string;
120
+ tool_type: 'native' | 'mcp';
121
+ metadata?: Record<string, unknown>;
122
+ agent_id: string;
123
+ constructor(call: CompletedToolCallShape);
124
+ }
125
+ export declare class HookCallEvent {
126
+ 'event.name': 'hook_call';
127
+ 'event.timestamp': string;
128
+ hook_event_name: HookEventName;
129
+ hook_name: string;
130
+ hook_input: HookInput;
131
+ hook_output: HookInput | Record<string, unknown>;
132
+ exit_code: number;
133
+ stdout: string;
134
+ stderr: string;
135
+ duration_ms: number;
136
+ success: boolean;
137
+ error: string;
138
+ constructor(eventName: HookEventName, input: HookInput, result: HookExecutionResult);
139
+ }
140
+ export declare class ApiRequestEvent {
141
+ 'event.name': 'api_request';
142
+ 'event.timestamp': string;
143
+ model: string;
144
+ prompt_id: string;
145
+ request_text?: string;
146
+ constructor(model: string, prompt_id: string, request_text?: string);
147
+ }
148
+ export declare class ApiErrorEvent {
149
+ 'event.name': 'api_error';
150
+ 'event.timestamp': string;
151
+ model: string;
152
+ error: string;
153
+ error_type?: string;
154
+ status_code?: number | string;
155
+ duration_ms: number;
156
+ prompt_id: string;
157
+ constructor(model: string, error: string, duration_ms: number, prompt_id: string, error_type?: string, status_code?: number | string);
158
+ }
159
+ export declare class ApiResponseEvent {
160
+ 'event.name': 'api_response';
161
+ 'event.timestamp': string;
162
+ model: string;
163
+ status_code?: number | string;
164
+ duration_ms: number;
165
+ error?: string;
166
+ input_token_count: number;
167
+ output_token_count: number;
168
+ cached_content_token_count: number;
169
+ thoughts_token_count: number;
170
+ tool_token_count: number;
171
+ total_token_count: number;
172
+ response_text?: string;
173
+ prompt_id: string;
174
+ finish_reasons: string[];
175
+ constructor(model: string, duration_ms: number, prompt_id: string, usage_data?: GenerateContentResponseUsageMetadata, response_text?: string, error?: string, finish_reasons?: string[]);
176
+ }
177
+ export declare enum LoopType {
178
+ CONSECUTIVE_IDENTICAL_TOOL_CALLS = "consecutive_identical_tool_calls",
179
+ CHANTING_IDENTICAL_SENTENCES = "chanting_identical_sentences",
180
+ MAX_TURNS_EXCEEDED = "max_turns_exceeded"
181
+ }
182
+ export declare class LoopDetectedEvent {
183
+ 'event.name': 'loop_detected';
184
+ 'event.timestamp': string;
185
+ loop_type: LoopType;
186
+ prompt_id: string;
187
+ constructor(loop_type: LoopType, prompt_id: string);
188
+ }
189
+ export declare class NextSpeakerCheckEvent {
190
+ 'event.name': 'next_speaker_check';
191
+ 'event.timestamp': string;
192
+ prompt_id: string;
193
+ finish_reason: string;
194
+ result: string;
195
+ constructor(prompt_id: string, finish_reason: string, result: string);
196
+ }
197
+ export declare class SlashCommandEvent {
198
+ 'event.name': 'slash_command';
199
+ 'event.timestamp': string;
200
+ command: string;
201
+ subcommand?: string;
202
+ constructor(command: string, subcommand?: string);
203
+ }
204
+ export declare class MalformedJsonResponseEvent {
205
+ 'event.name': 'malformed_json_response';
206
+ 'event.timestamp': string;
207
+ model: string;
208
+ constructor(model: string);
209
+ }
210
+ export declare class ConversationRequestEvent {
211
+ 'event.name': 'conversation_request';
212
+ 'event.timestamp': string;
213
+ provider_name: string;
214
+ conversation_id: string;
215
+ turn_number: number;
216
+ prompt_id: string;
217
+ redacted_messages: unknown[];
218
+ redacted_tools?: Array<{
219
+ functionDeclarations: Array<{
220
+ name: string;
221
+ description?: string;
222
+ parameters?: unknown;
223
+ }>;
224
+ }>;
225
+ tool_format?: string;
226
+ provider_switched?: boolean;
227
+ constructor(provider_name: string, conversation_id: string, turn_number: number, prompt_id: string, redacted_messages: unknown[], redacted_tools?: Array<{
228
+ functionDeclarations: Array<{
229
+ name: string;
230
+ description?: string;
231
+ parameters?: unknown;
232
+ }>;
233
+ }>, tool_format?: string, provider_switched?: boolean);
234
+ }
235
+ export declare class ConversationResponseEvent {
236
+ 'event.name': 'conversation_response';
237
+ 'event.timestamp': string;
238
+ provider_name: string;
239
+ conversation_id: string;
240
+ turn_number: number;
241
+ prompt_id: string;
242
+ redacted_content: string;
243
+ duration_ms: number;
244
+ success: boolean;
245
+ error?: string;
246
+ tool_calls?: unknown[];
247
+ constructor(provider_name: string, conversation_id: string, turn_number: number, prompt_id: string, redacted_content: string, duration_ms: number, success: boolean, error?: string, tool_calls?: unknown[]);
248
+ }
249
+ export declare class ProviderSwitchEvent {
250
+ 'event.name': 'provider_switch';
251
+ 'event.timestamp': string;
252
+ from_provider: string;
253
+ to_provider: string;
254
+ conversation_id: string;
255
+ context_preserved: boolean;
256
+ constructor(from_provider: string, to_provider: string, conversation_id: string, context_preserved: boolean);
257
+ }
258
+ /**
259
+ * @plan PLAN-20250909-TOKTRACK.P10
260
+ */
261
+ export declare class EnhancedConversationResponseEvent extends ConversationResponseEvent {
262
+ provider_context: ProviderContext;
263
+ performance_metrics: ProviderPerformanceMetrics;
264
+ tool_calls_detailed: ToolCall[];
265
+ constructor(provider_name: string, conversation_id: string, turn_number: number, prompt_id: string, redacted_content: string, duration_ms: number, success: boolean, error?: string, tool_calls?: ToolCall[], performance_metrics?: ProviderPerformanceMetrics, provider_context?: ProviderContext);
266
+ private createDefaultMetrics;
267
+ private createDefaultContext;
268
+ }
269
+ export declare class ProviderCapabilityEvent {
270
+ 'event.name': 'provider_capability';
271
+ 'event.timestamp': string;
272
+ provider_name: string;
273
+ capabilities: ProviderCapabilities;
274
+ context: ProviderContext;
275
+ constructor(provider_name: string, capabilities: ProviderCapabilities, context: ProviderContext);
276
+ }
277
+ export declare class KittySequenceOverflowEvent {
278
+ 'event.name': 'kitty_sequence_overflow';
279
+ 'event.timestamp': string;
280
+ sequence_length: number;
281
+ sequence: string;
282
+ constructor(sequence_length: number, sequence: string);
283
+ }
284
+ export declare class TokenUsageEvent {
285
+ 'event.name': 'token_usage';
286
+ 'event.timestamp': string;
287
+ provider: string;
288
+ conversationId: string;
289
+ input: number;
290
+ output: number;
291
+ cache: number;
292
+ tool: number;
293
+ thought: number;
294
+ total: number;
295
+ constructor(provider: string, conversationId: string, input: number, output: number, cache: number, tool: number, thought: number, total: number);
296
+ }
297
+ export declare class PerformanceMetricsEvent {
298
+ 'event.name': 'performance_metrics';
299
+ 'event.timestamp': string;
300
+ provider: string;
301
+ tokensPerMinute: number;
302
+ throttleWaitTimeMs: number;
303
+ totalRequests: number;
304
+ errorRate: number;
305
+ constructor(provider: string, tokensPerMinute: number, throttleWaitTimeMs: number, totalRequests: number, errorRate: number);
306
+ }
307
+ export declare enum IdeConnectionType {
308
+ EXTENSION = "extension",
309
+ CLI = "cli",
310
+ WEB = "web"
311
+ }
312
+ export declare class IdeConnectionEvent {
313
+ 'event.name': 'ide_connection';
314
+ 'event.timestamp': string;
315
+ connectionType: IdeConnectionType;
316
+ version?: string;
317
+ constructor(connectionType: IdeConnectionType, version?: string);
318
+ }
319
+ export declare enum FileOperation {
320
+ CREATE = "create",
321
+ READ = "read",
322
+ UPDATE = "update"
323
+ }
324
+ export declare class ToolOutputTruncatedEvent {
325
+ eventName: 'tool_output_truncated';
326
+ prompt_id: string;
327
+ tool_name: string;
328
+ original_content_length: number;
329
+ truncated_content_length: number;
330
+ threshold: number;
331
+ lines?: number;
332
+ constructor(promptId: string, params: {
333
+ toolName: string;
334
+ originalContentLength: number;
335
+ truncatedContentLength: number;
336
+ threshold: number;
337
+ lines?: number;
338
+ });
339
+ }
340
+ export declare class FileOperationEvent {
341
+ tool_name: string;
342
+ operation: FileOperation | string;
343
+ lines?: number;
344
+ mimetype?: string;
345
+ extension?: string;
346
+ programming_language?: string;
347
+ constructor(toolName: string, operation: FileOperation | string, lines?: number, mimetype?: string, extension?: string, programmingLanguage?: string);
348
+ }
349
+ export declare class ModelRoutingEvent {
350
+ model: string;
351
+ source: string;
352
+ contextLimit: number;
353
+ reason?: string;
354
+ fallback: boolean;
355
+ error?: unknown;
356
+ constructor(model: string, source: string, contextLimit: number, reason?: string, fallback?: boolean, error?: unknown);
357
+ }
358
+ export declare class ExtensionInstallEvent {
359
+ extension_name: string;
360
+ extension_version: string;
361
+ extension_source: string;
362
+ status: string;
363
+ constructor(name: string, version: string, source: string, status: string);
364
+ }
365
+ export declare class ExtensionUninstallEvent {
366
+ extension_name: string;
367
+ status: string;
368
+ constructor(name: string, status: string);
369
+ }
370
+ export declare class ExtensionEnableEvent {
371
+ extension_name: string;
372
+ setting_scope: string;
373
+ constructor(name: string, scope: string);
374
+ }
375
+ export declare class ExtensionDisableEvent {
376
+ extension_name: string;
377
+ setting_scope: string;
378
+ constructor(name: string, scope: string);
379
+ }
380
+ export type TelemetryEvent = StartSessionEvent | EndSessionEvent | UserPromptEvent | ToolCallEvent | HookCallEvent | ApiRequestEvent | ApiErrorEvent | ApiResponseEvent | LoopDetectedEvent | NextSpeakerCheckEvent | SlashCommandEvent | MalformedJsonResponseEvent | ConversationRequestEvent | ConversationResponseEvent | EnhancedConversationResponseEvent | ProviderSwitchEvent | ProviderCapabilityEvent | KittySequenceOverflowEvent | TokenUsageEvent | PerformanceMetricsEvent;