@google/gemini-cli-core 0.10.0-nightly.20251009.ae02236c → 0.10.0-nightly.20251010.558be873

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 (46) hide show
  1. package/dist/src/config/config.d.ts +3 -0
  2. package/dist/src/config/config.js +5 -0
  3. package/dist/src/config/config.js.map +1 -1
  4. package/dist/src/config/config.test.js +22 -0
  5. package/dist/src/config/config.test.js.map +1 -1
  6. package/dist/src/core/client.d.ts +1 -1
  7. package/dist/src/core/client.js +16 -3
  8. package/dist/src/core/client.js.map +1 -1
  9. package/dist/src/core/client.test.js +85 -0
  10. package/dist/src/core/client.test.js.map +1 -1
  11. package/dist/src/core/turn.d.ts +6 -2
  12. package/dist/src/core/turn.js +6 -0
  13. package/dist/src/core/turn.js.map +1 -1
  14. package/dist/src/core/turn.test.js +13 -1
  15. package/dist/src/core/turn.test.js.map +1 -1
  16. package/dist/src/generated/git-commit.d.ts +2 -2
  17. package/dist/src/generated/git-commit.js +2 -2
  18. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +12 -4
  19. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  20. package/dist/src/telemetry/constants.d.ts +0 -34
  21. package/dist/src/telemetry/constants.js +0 -36
  22. package/dist/src/telemetry/constants.js.map +1 -1
  23. package/dist/src/telemetry/loggers.d.ts +1 -1
  24. package/dist/src/telemetry/loggers.js +83 -315
  25. package/dist/src/telemetry/loggers.js.map +1 -1
  26. package/dist/src/telemetry/loggers.test.js +5 -2
  27. package/dist/src/telemetry/loggers.test.js.map +1 -1
  28. package/dist/src/telemetry/metrics.d.ts +5 -1
  29. package/dist/src/telemetry/metrics.js +2 -1
  30. package/dist/src/telemetry/metrics.js.map +1 -1
  31. package/dist/src/telemetry/telemetryAttributes.d.ts +8 -0
  32. package/dist/src/telemetry/telemetryAttributes.js +15 -0
  33. package/dist/src/telemetry/telemetryAttributes.js.map +1 -0
  34. package/dist/src/telemetry/types.d.ts +100 -2
  35. package/dist/src/telemetry/types.js +570 -33
  36. package/dist/src/telemetry/types.js.map +1 -1
  37. package/dist/src/telemetry/uiTelemetry.d.ts +1 -1
  38. package/dist/src/telemetry/uiTelemetry.js +1 -1
  39. package/dist/src/telemetry/uiTelemetry.js.map +1 -1
  40. package/dist/src/telemetry/uiTelemetry.test.js +1 -1
  41. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  42. package/dist/src/tools/tool-error.d.ts +21 -0
  43. package/dist/src/tools/tool-error.js +27 -0
  44. package/dist/src/tools/tool-error.js.map +1 -1
  45. package/dist/tsconfig.tsbuildinfo +1 -1
  46. package/package.json +1 -1
@@ -7,6 +7,7 @@ import type { GenerateContentResponseUsageMetadata } from '@google/genai';
7
7
  import type { Config } from '../config/config.js';
8
8
  import type { ApprovalMode } from '../config/config.js';
9
9
  import type { CompletedToolCall } from '../core/coreToolScheduler.js';
10
+ import type { LogAttributes } from '@opentelemetry/api-logs';
10
11
  import { ToolCallDecision } from './tool-call-decision.js';
11
12
  import type { FileOperation } from './metrics.js';
12
13
  export { ToolCallDecision };
@@ -19,6 +20,7 @@ export interface BaseTelemetryEvent {
19
20
  'event.timestamp': string;
20
21
  }
21
22
  type CommonFields = keyof BaseTelemetryEvent;
23
+ export declare const EVENT_CLI_CONFIG = "gemini_cli.config";
22
24
  export declare class StartSessionEvent implements BaseTelemetryEvent {
23
25
  'event.name': 'cli_config';
24
26
  'event.timestamp': string;
@@ -39,6 +41,8 @@ export declare class StartSessionEvent implements BaseTelemetryEvent {
39
41
  mcp_tools?: string;
40
42
  output_format: OutputFormat;
41
43
  constructor(config: Config, toolRegistry?: ToolRegistry);
44
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
45
+ toLogBody(): string;
42
46
  }
43
47
  export declare class EndSessionEvent implements BaseTelemetryEvent {
44
48
  'event.name': 'end_session';
@@ -46,6 +50,7 @@ export declare class EndSessionEvent implements BaseTelemetryEvent {
46
50
  session_id?: string;
47
51
  constructor(config?: Config);
48
52
  }
53
+ export declare const EVENT_USER_PROMPT = "gemini_cli.user_prompt";
49
54
  export declare class UserPromptEvent implements BaseTelemetryEvent {
50
55
  'event.name': 'user_prompt';
51
56
  'event.timestamp': string;
@@ -54,7 +59,10 @@ export declare class UserPromptEvent implements BaseTelemetryEvent {
54
59
  auth_type?: string;
55
60
  prompt?: string;
56
61
  constructor(prompt_length: number, prompt_Id: string, auth_type?: string, prompt?: string);
62
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
63
+ toLogBody(): string;
57
64
  }
65
+ export declare const EVENT_TOOL_CALL = "gemini_cli.tool_call";
58
66
  export declare class ToolCallEvent implements BaseTelemetryEvent {
59
67
  'event.name': 'tool_call';
60
68
  'event.timestamp': string;
@@ -73,7 +81,11 @@ export declare class ToolCallEvent implements BaseTelemetryEvent {
73
81
  [key: string]: any;
74
82
  };
75
83
  constructor(call: CompletedToolCall);
84
+ constructor(call: undefined, function_name: string, function_args: Record<string, unknown>, duration_ms: number, success: boolean, prompt_id: string, tool_type: 'native' | 'mcp', error?: string);
85
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
86
+ toLogBody(): string;
76
87
  }
88
+ export declare const EVENT_API_REQUEST = "gemini_cli.api_request";
77
89
  export declare class ApiRequestEvent implements BaseTelemetryEvent {
78
90
  'event.name': 'api_request';
79
91
  'event.timestamp': string;
@@ -81,7 +93,10 @@ export declare class ApiRequestEvent implements BaseTelemetryEvent {
81
93
  prompt_id: string;
82
94
  request_text?: string;
83
95
  constructor(model: string, prompt_id: string, request_text?: string);
96
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
97
+ toLogBody(): string;
84
98
  }
99
+ export declare const EVENT_API_ERROR = "gemini_cli.api_error";
85
100
  export declare class ApiErrorEvent implements BaseTelemetryEvent {
86
101
  'event.name': 'api_error';
87
102
  'event.timestamp': string;
@@ -93,7 +108,10 @@ export declare class ApiErrorEvent implements BaseTelemetryEvent {
93
108
  prompt_id: string;
94
109
  auth_type?: string;
95
110
  constructor(model: string, error: string, duration_ms: number, prompt_id: string, auth_type?: string, error_type?: string, status_code?: number | string);
111
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
112
+ toLogBody(): string;
96
113
  }
114
+ export declare const EVENT_API_RESPONSE = "gemini_cli.api_response";
97
115
  export declare class ApiResponseEvent implements BaseTelemetryEvent {
98
116
  'event.name': 'api_response';
99
117
  'event.timestamp': string;
@@ -110,18 +128,26 @@ export declare class ApiResponseEvent implements BaseTelemetryEvent {
110
128
  prompt_id: string;
111
129
  auth_type?: string;
112
130
  constructor(model: string, duration_ms: number, prompt_id: string, auth_type?: string, usage_data?: GenerateContentResponseUsageMetadata, response_text?: string);
131
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
132
+ toLogBody(): string;
113
133
  }
134
+ export declare const EVENT_FLASH_FALLBACK = "gemini_cli.flash_fallback";
114
135
  export declare class FlashFallbackEvent implements BaseTelemetryEvent {
115
136
  'event.name': 'flash_fallback';
116
137
  'event.timestamp': string;
117
138
  auth_type: string;
118
139
  constructor(auth_type: string);
140
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
141
+ toLogBody(): string;
119
142
  }
143
+ export declare const EVENT_RIPGREP_FALLBACK = "gemini_cli.ripgrep_fallback";
120
144
  export declare class RipgrepFallbackEvent implements BaseTelemetryEvent {
121
145
  error?: string | undefined;
122
146
  'event.name': 'ripgrep_fallback';
123
147
  'event.timestamp': string;
124
148
  constructor(error?: string | undefined);
149
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
150
+ toLogBody(): string;
125
151
  }
126
152
  export declare enum LoopType {
127
153
  CONSECUTIVE_IDENTICAL_TOOL_CALLS = "consecutive_identical_tool_calls",
@@ -134,13 +160,18 @@ export declare class LoopDetectedEvent implements BaseTelemetryEvent {
134
160
  loop_type: LoopType;
135
161
  prompt_id: string;
136
162
  constructor(loop_type: LoopType, prompt_id: string);
163
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
164
+ toLogBody(): string;
137
165
  }
138
166
  export declare class LoopDetectionDisabledEvent implements BaseTelemetryEvent {
139
167
  'event.name': 'loop_detection_disabled';
140
168
  'event.timestamp': string;
141
169
  prompt_id: string;
142
170
  constructor(prompt_id: string);
171
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
172
+ toLogBody(): string;
143
173
  }
174
+ export declare const EVENT_NEXT_SPEAKER_CHECK = "gemini_cli.next_speaker_check";
144
175
  export declare class NextSpeakerCheckEvent implements BaseTelemetryEvent {
145
176
  'event.name': 'next_speaker_check';
146
177
  'event.timestamp': string;
@@ -148,48 +179,65 @@ export declare class NextSpeakerCheckEvent implements BaseTelemetryEvent {
148
179
  finish_reason: string;
149
180
  result: string;
150
181
  constructor(prompt_id: string, finish_reason: string, result: string);
182
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
183
+ toLogBody(): string;
151
184
  }
185
+ export declare const EVENT_SLASH_COMMAND = "gemini_cli.slash_command";
152
186
  export interface SlashCommandEvent extends BaseTelemetryEvent {
153
187
  'event.name': 'slash_command';
154
188
  'event.timestamp': string;
155
189
  command: string;
156
190
  subcommand?: string;
157
191
  status?: SlashCommandStatus;
192
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
193
+ toLogBody(): string;
158
194
  }
159
- export declare function makeSlashCommandEvent({ command, subcommand, status, }: Omit<SlashCommandEvent, CommonFields>): SlashCommandEvent;
195
+ export declare function makeSlashCommandEvent({ command, subcommand, status, }: Omit<SlashCommandEvent, CommonFields | 'toOpenTelemetryAttributes' | 'toLogBody'>): SlashCommandEvent;
160
196
  export declare enum SlashCommandStatus {
161
197
  SUCCESS = "success",
162
198
  ERROR = "error"
163
199
  }
200
+ export declare const EVENT_CHAT_COMPRESSION = "gemini_cli.chat_compression";
164
201
  export interface ChatCompressionEvent extends BaseTelemetryEvent {
165
202
  'event.name': 'chat_compression';
166
203
  'event.timestamp': string;
167
204
  tokens_before: number;
168
205
  tokens_after: number;
206
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
207
+ toLogBody(): string;
169
208
  }
170
- export declare function makeChatCompressionEvent({ tokens_before, tokens_after, }: Omit<ChatCompressionEvent, CommonFields>): ChatCompressionEvent;
209
+ export declare function makeChatCompressionEvent({ tokens_before, tokens_after, }: Omit<ChatCompressionEvent, CommonFields | 'toOpenTelemetryAttributes' | 'toLogBody'>): ChatCompressionEvent;
210
+ export declare const EVENT_MALFORMED_JSON_RESPONSE = "gemini_cli.malformed_json_response";
171
211
  export declare class MalformedJsonResponseEvent implements BaseTelemetryEvent {
172
212
  'event.name': 'malformed_json_response';
173
213
  'event.timestamp': string;
174
214
  model: string;
175
215
  constructor(model: string);
216
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
217
+ toLogBody(): string;
176
218
  }
177
219
  export declare enum IdeConnectionType {
178
220
  START = "start",
179
221
  SESSION = "session"
180
222
  }
223
+ export declare const EVENT_IDE_CONNECTION = "gemini_cli.ide_connection";
181
224
  export declare class IdeConnectionEvent {
182
225
  'event.name': 'ide_connection';
183
226
  'event.timestamp': string;
184
227
  connection_type: IdeConnectionType;
185
228
  constructor(connection_type: IdeConnectionType);
229
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
230
+ toLogBody(): string;
186
231
  }
232
+ export declare const EVENT_CONVERSATION_FINISHED = "gemini_cli.conversation_finished";
187
233
  export declare class ConversationFinishedEvent {
188
234
  'event_name': 'conversation_finished';
189
235
  'event.timestamp': string;
190
236
  approvalMode: ApprovalMode;
191
237
  turnCount: number;
192
238
  constructor(approvalMode: ApprovalMode, turnCount: number);
239
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
240
+ toLogBody(): string;
193
241
  }
194
242
  export declare class KittySequenceOverflowEvent {
195
243
  'event.name': 'kitty_sequence_overflow';
@@ -197,7 +245,10 @@ export declare class KittySequenceOverflowEvent {
197
245
  sequence_length: number;
198
246
  truncated_sequence: string;
199
247
  constructor(sequence_length: number, truncated_sequence: string);
248
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
249
+ toLogBody(): string;
200
250
  }
251
+ export declare const EVENT_FILE_OPERATION = "gemini_cli.file_operation";
201
252
  export declare class FileOperationEvent implements BaseTelemetryEvent {
202
253
  'event.name': 'file_operation';
203
254
  'event.timestamp': string;
@@ -208,13 +259,19 @@ export declare class FileOperationEvent implements BaseTelemetryEvent {
208
259
  extension?: string;
209
260
  programming_language?: string;
210
261
  constructor(tool_name: string, operation: FileOperation, lines?: number, mimetype?: string, extension?: string, programming_language?: string);
262
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
263
+ toLogBody(): string;
211
264
  }
265
+ export declare const EVENT_INVALID_CHUNK = "gemini_cli.chat.invalid_chunk";
212
266
  export declare class InvalidChunkEvent implements BaseTelemetryEvent {
213
267
  'event.name': 'invalid_chunk';
214
268
  'event.timestamp': string;
215
269
  error_message?: string;
216
270
  constructor(error_message?: string);
271
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
272
+ toLogBody(): string;
217
273
  }
274
+ export declare const EVENT_CONTENT_RETRY = "gemini_cli.chat.content_retry";
218
275
  export declare class ContentRetryEvent implements BaseTelemetryEvent {
219
276
  'event.name': 'content_retry';
220
277
  'event.timestamp': string;
@@ -223,7 +280,10 @@ export declare class ContentRetryEvent implements BaseTelemetryEvent {
223
280
  retry_delay_ms: number;
224
281
  model: string;
225
282
  constructor(attempt_number: number, error_type: string, retry_delay_ms: number, model: string);
283
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
284
+ toLogBody(): string;
226
285
  }
286
+ export declare const EVENT_CONTENT_RETRY_FAILURE = "gemini_cli.chat.content_retry_failure";
227
287
  export declare class ContentRetryFailureEvent implements BaseTelemetryEvent {
228
288
  'event.name': 'content_retry_failure';
229
289
  'event.timestamp': string;
@@ -232,7 +292,10 @@ export declare class ContentRetryFailureEvent implements BaseTelemetryEvent {
232
292
  total_duration_ms?: number;
233
293
  model: string;
234
294
  constructor(total_attempts: number, final_error_type: string, model: string, total_duration_ms?: number);
295
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
296
+ toLogBody(): string;
235
297
  }
298
+ export declare const EVENT_MODEL_ROUTING = "gemini_cli.model_routing";
236
299
  export declare class ModelRoutingEvent implements BaseTelemetryEvent {
237
300
  'event.name': 'model_routing';
238
301
  'event.timestamp': string;
@@ -243,7 +306,10 @@ export declare class ModelRoutingEvent implements BaseTelemetryEvent {
243
306
  failed: boolean;
244
307
  error_message?: string;
245
308
  constructor(decision_model: string, decision_source: string, routing_latency_ms: number, reasoning: string | undefined, failed: boolean, error_message: string | undefined);
309
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
310
+ toLogBody(): string;
246
311
  }
312
+ export declare const EVENT_EXTENSION_INSTALL = "gemini_cli.extension_install";
247
313
  export declare class ExtensionInstallEvent implements BaseTelemetryEvent {
248
314
  'event.name': 'extension_install';
249
315
  'event.timestamp': string;
@@ -252,7 +318,10 @@ export declare class ExtensionInstallEvent implements BaseTelemetryEvent {
252
318
  extension_source: string;
253
319
  status: 'success' | 'error';
254
320
  constructor(extension_name: string, extension_version: string, extension_source: string, status: 'success' | 'error');
321
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
322
+ toLogBody(): string;
255
323
  }
324
+ export declare const EVENT_TOOL_OUTPUT_TRUNCATED = "gemini_cli.tool_output_truncated";
256
325
  export declare class ToolOutputTruncatedEvent implements BaseTelemetryEvent {
257
326
  readonly eventName = "tool_output_truncated";
258
327
  readonly 'event.timestamp': string;
@@ -270,54 +339,78 @@ export declare class ToolOutputTruncatedEvent implements BaseTelemetryEvent {
270
339
  threshold: number;
271
340
  lines: number;
272
341
  });
342
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
343
+ toLogBody(): string;
273
344
  }
345
+ export declare const EVENT_EXTENSION_UNINSTALL = "gemini_cli.extension_uninstall";
274
346
  export declare class ExtensionUninstallEvent implements BaseTelemetryEvent {
275
347
  'event.name': 'extension_uninstall';
276
348
  'event.timestamp': string;
277
349
  extension_name: string;
278
350
  status: 'success' | 'error';
279
351
  constructor(extension_name: string, status: 'success' | 'error');
352
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
353
+ toLogBody(): string;
280
354
  }
355
+ export declare const EVENT_EXTENSION_ENABLE = "gemini_cli.extension_enable";
281
356
  export declare class ExtensionEnableEvent implements BaseTelemetryEvent {
282
357
  'event.name': 'extension_enable';
283
358
  'event.timestamp': string;
284
359
  extension_name: string;
285
360
  setting_scope: string;
286
361
  constructor(extension_name: string, settingScope: string);
362
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
363
+ toLogBody(): string;
287
364
  }
365
+ export declare const EVENT_MODEL_SLASH_COMMAND = "gemini_cli.slash_command.model";
288
366
  export declare class ModelSlashCommandEvent implements BaseTelemetryEvent {
289
367
  'event.name': 'model_slash_command';
290
368
  'event.timestamp': string;
291
369
  model_name: string;
292
370
  constructor(model_name: string);
371
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
372
+ toLogBody(): string;
293
373
  }
294
374
  export type TelemetryEvent = StartSessionEvent | EndSessionEvent | UserPromptEvent | ToolCallEvent | ApiRequestEvent | ApiErrorEvent | ApiResponseEvent | FlashFallbackEvent | LoopDetectedEvent | LoopDetectionDisabledEvent | NextSpeakerCheckEvent | KittySequenceOverflowEvent | MalformedJsonResponseEvent | IdeConnectionEvent | ConversationFinishedEvent | SlashCommandEvent | FileOperationEvent | InvalidChunkEvent | ContentRetryEvent | ContentRetryFailureEvent | ExtensionEnableEvent | ExtensionInstallEvent | ExtensionUninstallEvent | ModelRoutingEvent | ToolOutputTruncatedEvent | ModelSlashCommandEvent | AgentStartEvent | AgentFinishEvent | WebFetchFallbackAttemptEvent;
375
+ export declare const EVENT_EXTENSION_DISABLE = "gemini_cli.extension_disable";
295
376
  export declare class ExtensionDisableEvent implements BaseTelemetryEvent {
296
377
  'event.name': 'extension_disable';
297
378
  'event.timestamp': string;
298
379
  extension_name: string;
299
380
  setting_scope: string;
300
381
  constructor(extension_name: string, settingScope: string);
382
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
383
+ toLogBody(): string;
301
384
  }
385
+ export declare const EVENT_SMART_EDIT_STRATEGY = "gemini_cli.smart_edit_strategy";
302
386
  export declare class SmartEditStrategyEvent implements BaseTelemetryEvent {
303
387
  'event.name': 'smart_edit_strategy';
304
388
  'event.timestamp': string;
305
389
  strategy: string;
306
390
  constructor(strategy: string);
391
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
392
+ toLogBody(): string;
307
393
  }
394
+ export declare const EVENT_SMART_EDIT_CORRECTION = "gemini_cli.smart_edit_correction";
308
395
  export declare class SmartEditCorrectionEvent implements BaseTelemetryEvent {
309
396
  'event.name': 'smart_edit_correction';
310
397
  'event.timestamp': string;
311
398
  correction: 'success' | 'failure';
312
399
  constructor(correction: 'success' | 'failure');
400
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
401
+ toLogBody(): string;
313
402
  }
403
+ export declare const EVENT_AGENT_START = "gemini_cli.agent.start";
314
404
  export declare class AgentStartEvent implements BaseTelemetryEvent {
315
405
  'event.name': 'agent_start';
316
406
  'event.timestamp': string;
317
407
  agent_id: string;
318
408
  agent_name: string;
319
409
  constructor(agent_id: string, agent_name: string);
410
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
411
+ toLogBody(): string;
320
412
  }
413
+ export declare const EVENT_AGENT_FINISH = "gemini_cli.agent.finish";
321
414
  export declare class AgentFinishEvent implements BaseTelemetryEvent {
322
415
  'event.name': 'agent_finish';
323
416
  'event.timestamp': string;
@@ -327,10 +420,15 @@ export declare class AgentFinishEvent implements BaseTelemetryEvent {
327
420
  turn_count: number;
328
421
  terminate_reason: AgentTerminateMode;
329
422
  constructor(agent_id: string, agent_name: string, duration_ms: number, turn_count: number, terminate_reason: AgentTerminateMode);
423
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
424
+ toLogBody(): string;
330
425
  }
426
+ export declare const EVENT_WEB_FETCH_FALLBACK_ATTEMPT = "gemini_cli.web_fetch_fallback_attempt";
331
427
  export declare class WebFetchFallbackAttemptEvent implements BaseTelemetryEvent {
332
428
  'event.name': 'web_fetch_fallback_attempt';
333
429
  'event.timestamp': string;
334
430
  reason: 'private_ip' | 'primary_failed';
335
431
  constructor(reason: 'private_ip' | 'primary_failed');
432
+ toOpenTelemetryAttributes(config: Config): LogAttributes;
433
+ toLogBody(): string;
336
434
  }