mirror of
https://github.com/QwenLM/qwen-code.git
synced 2025-12-19 09:33:53 +00:00
feat: enhance usage statistics in qwen logger
This commit is contained in:
@@ -286,9 +286,9 @@ describe('QwenLogger', () => {
|
||||
event_type: 'action',
|
||||
type: 'ide',
|
||||
name: 'ide_connection',
|
||||
snapshots: JSON.stringify({
|
||||
properties: {
|
||||
connection_type: IdeConnectionType.SESSION,
|
||||
}),
|
||||
},
|
||||
}),
|
||||
);
|
||||
});
|
||||
@@ -307,8 +307,10 @@ describe('QwenLogger', () => {
|
||||
type: 'overflow',
|
||||
name: 'kitty_sequence_overflow',
|
||||
subtype: 'kitty_sequence_overflow',
|
||||
snapshots: JSON.stringify({
|
||||
properties: {
|
||||
sequence_length: 1024,
|
||||
},
|
||||
snapshots: JSON.stringify({
|
||||
truncated_sequence: 'truncated...',
|
||||
}),
|
||||
}),
|
||||
|
||||
@@ -259,7 +259,7 @@ export class QwenLogger {
|
||||
: '',
|
||||
},
|
||||
_v: `qwen-code@${version}`,
|
||||
};
|
||||
} as RumPayload;
|
||||
}
|
||||
|
||||
flushIfNeeded(): void {
|
||||
@@ -368,12 +368,10 @@ export class QwenLogger {
|
||||
const applicationEvent = this.createViewEvent('session', 'session_start', {
|
||||
properties: {
|
||||
model: event.model,
|
||||
},
|
||||
snapshots: JSON.stringify({
|
||||
approval_mode: event.approval_mode,
|
||||
embedding_model: event.embedding_model,
|
||||
sandbox_enabled: event.sandbox_enabled,
|
||||
core_tools_enabled: event.core_tools_enabled,
|
||||
approval_mode: event.approval_mode,
|
||||
api_key_enabled: event.api_key_enabled,
|
||||
vertex_ai_enabled: event.vertex_ai_enabled,
|
||||
debug_enabled: event.debug_enabled,
|
||||
@@ -381,7 +379,7 @@ export class QwenLogger {
|
||||
telemetry_enabled: event.telemetry_enabled,
|
||||
telemetry_log_user_prompts_enabled:
|
||||
event.telemetry_log_user_prompts_enabled,
|
||||
}),
|
||||
},
|
||||
});
|
||||
|
||||
// Flush start event immediately
|
||||
@@ -410,10 +408,10 @@ export class QwenLogger {
|
||||
'conversation',
|
||||
'conversation_finished',
|
||||
{
|
||||
snapshots: JSON.stringify({
|
||||
properties: {
|
||||
approval_mode: event.approvalMode,
|
||||
turn_count: event.turnCount,
|
||||
}),
|
||||
},
|
||||
},
|
||||
);
|
||||
|
||||
@@ -427,10 +425,8 @@ export class QwenLogger {
|
||||
properties: {
|
||||
auth_type: event.auth_type,
|
||||
prompt_id: event.prompt_id,
|
||||
},
|
||||
snapshots: JSON.stringify({
|
||||
prompt_length: event.prompt_length,
|
||||
}),
|
||||
},
|
||||
});
|
||||
|
||||
this.enqueueLogEvent(rumEvent);
|
||||
@@ -439,10 +435,10 @@ export class QwenLogger {
|
||||
|
||||
logSlashCommandEvent(event: SlashCommandEvent): void {
|
||||
const rumEvent = this.createActionEvent('user', 'slash_command', {
|
||||
snapshots: JSON.stringify({
|
||||
properties: {
|
||||
command: event.command,
|
||||
subcommand: event.subcommand,
|
||||
}),
|
||||
},
|
||||
});
|
||||
|
||||
this.enqueueLogEvent(rumEvent);
|
||||
@@ -451,9 +447,9 @@ export class QwenLogger {
|
||||
|
||||
logModelSlashCommandEvent(event: ModelSlashCommandEvent): void {
|
||||
const rumEvent = this.createActionEvent('user', 'model_slash_command', {
|
||||
snapshots: JSON.stringify({
|
||||
model_name: event.model_name,
|
||||
}),
|
||||
properties: {
|
||||
model: event.model_name,
|
||||
},
|
||||
});
|
||||
|
||||
this.enqueueLogEvent(rumEvent);
|
||||
@@ -469,15 +465,13 @@ export class QwenLogger {
|
||||
properties: {
|
||||
prompt_id: event.prompt_id,
|
||||
response_id: event.response_id,
|
||||
},
|
||||
snapshots: JSON.stringify({
|
||||
function_name: event.function_name,
|
||||
decision: event.decision,
|
||||
success: event.success,
|
||||
tool_name: event.function_name,
|
||||
permission: event.decision,
|
||||
success: event.success ? 1 : 0,
|
||||
duration_ms: event.duration_ms,
|
||||
error: event.error,
|
||||
error_type: event.error_type,
|
||||
}),
|
||||
error_message: event.error,
|
||||
},
|
||||
},
|
||||
);
|
||||
|
||||
@@ -490,14 +484,14 @@ export class QwenLogger {
|
||||
'tool',
|
||||
`file_operation#${event.tool_name}`,
|
||||
{
|
||||
snapshots: JSON.stringify({
|
||||
properties: {
|
||||
tool_name: event.tool_name,
|
||||
operation: event.operation,
|
||||
lines: event.lines,
|
||||
mimetype: event.mimetype,
|
||||
extension: event.extension,
|
||||
programming_language: event.programming_language,
|
||||
}),
|
||||
},
|
||||
},
|
||||
);
|
||||
|
||||
@@ -507,11 +501,15 @@ export class QwenLogger {
|
||||
|
||||
logSubagentExecutionEvent(event: SubagentExecutionEvent): void {
|
||||
const rumEvent = this.createActionEvent('tool', 'subagent_execution', {
|
||||
snapshots: JSON.stringify({
|
||||
properties: {
|
||||
subagent_name: event.subagent_name,
|
||||
status: event.status,
|
||||
terminate_reason: event.terminate_reason,
|
||||
execution_summary: event.execution_summary,
|
||||
},
|
||||
snapshots: JSON.stringify({
|
||||
...(event.execution_summary
|
||||
? { execution_summary: event.execution_summary }
|
||||
: {}),
|
||||
}),
|
||||
});
|
||||
|
||||
@@ -521,8 +519,10 @@ export class QwenLogger {
|
||||
|
||||
logToolOutputTruncatedEvent(event: ToolOutputTruncatedEvent): void {
|
||||
const rumEvent = this.createActionEvent('tool', 'tool_output_truncated', {
|
||||
snapshots: JSON.stringify({
|
||||
properties: {
|
||||
tool_name: event.tool_name,
|
||||
},
|
||||
snapshots: JSON.stringify({
|
||||
original_content_length: event.original_content_length,
|
||||
truncated_content_length: event.truncated_content_length,
|
||||
threshold: event.threshold,
|
||||
@@ -595,10 +595,8 @@ export class QwenLogger {
|
||||
auth_type: event.auth_type,
|
||||
model: event.model,
|
||||
prompt_id: event.prompt_id,
|
||||
},
|
||||
snapshots: JSON.stringify({
|
||||
error_type: event.error_type,
|
||||
}),
|
||||
},
|
||||
});
|
||||
|
||||
this.enqueueLogEvent(rumEvent);
|
||||
@@ -623,11 +621,11 @@ export class QwenLogger {
|
||||
{
|
||||
subtype: 'content_retry_failure',
|
||||
message: `Content retry failed after ${event.total_attempts} attempts`,
|
||||
snapshots: JSON.stringify({
|
||||
properties: {
|
||||
error_type: event.final_error_type,
|
||||
total_attempts: event.total_attempts,
|
||||
final_error_type: event.final_error_type,
|
||||
total_duration_ms: event.total_duration_ms,
|
||||
}),
|
||||
},
|
||||
},
|
||||
);
|
||||
|
||||
@@ -656,10 +654,8 @@ export class QwenLogger {
|
||||
subtype: 'loop_detected',
|
||||
properties: {
|
||||
prompt_id: event.prompt_id,
|
||||
error_type: event.loop_type,
|
||||
},
|
||||
snapshots: JSON.stringify({
|
||||
loop_type: event.loop_type,
|
||||
}),
|
||||
});
|
||||
|
||||
this.enqueueLogEvent(rumEvent);
|
||||
@@ -672,8 +668,10 @@ export class QwenLogger {
|
||||
'kitty_sequence_overflow',
|
||||
{
|
||||
subtype: 'kitty_sequence_overflow',
|
||||
snapshots: JSON.stringify({
|
||||
properties: {
|
||||
sequence_length: event.sequence_length,
|
||||
},
|
||||
snapshots: JSON.stringify({
|
||||
truncated_sequence: event.truncated_sequence,
|
||||
}),
|
||||
},
|
||||
@@ -686,7 +684,9 @@ export class QwenLogger {
|
||||
// ide events
|
||||
logIdeConnectionEvent(event: IdeConnectionEvent): void {
|
||||
const rumEvent = this.createActionEvent('ide', 'ide_connection', {
|
||||
snapshots: JSON.stringify({ connection_type: event.connection_type }),
|
||||
properties: {
|
||||
connection_type: event.connection_type,
|
||||
},
|
||||
});
|
||||
|
||||
this.enqueueLogEvent(rumEvent);
|
||||
@@ -696,12 +696,12 @@ export class QwenLogger {
|
||||
// extension events
|
||||
logExtensionInstallEvent(event: ExtensionInstallEvent): void {
|
||||
const rumEvent = this.createActionEvent('extension', 'extension_install', {
|
||||
snapshots: JSON.stringify({
|
||||
properties: {
|
||||
extension_name: event.extension_name,
|
||||
extension_version: event.extension_version,
|
||||
extension_source: event.extension_source,
|
||||
status: event.status,
|
||||
}),
|
||||
},
|
||||
});
|
||||
|
||||
this.enqueueLogEvent(rumEvent);
|
||||
@@ -713,10 +713,10 @@ export class QwenLogger {
|
||||
'extension',
|
||||
'extension_uninstall',
|
||||
{
|
||||
snapshots: JSON.stringify({
|
||||
properties: {
|
||||
extension_name: event.extension_name,
|
||||
status: event.status,
|
||||
}),
|
||||
},
|
||||
},
|
||||
);
|
||||
|
||||
@@ -726,10 +726,10 @@ export class QwenLogger {
|
||||
|
||||
logExtensionEnableEvent(event: ExtensionEnableEvent): void {
|
||||
const rumEvent = this.createActionEvent('extension', 'extension_enable', {
|
||||
snapshots: JSON.stringify({
|
||||
properties: {
|
||||
extension_name: event.extension_name,
|
||||
setting_scope: event.setting_scope,
|
||||
}),
|
||||
},
|
||||
});
|
||||
|
||||
this.enqueueLogEvent(rumEvent);
|
||||
@@ -738,10 +738,10 @@ export class QwenLogger {
|
||||
|
||||
logExtensionDisableEvent(event: ExtensionDisableEvent): void {
|
||||
const rumEvent = this.createActionEvent('extension', 'extension_disable', {
|
||||
snapshots: JSON.stringify({
|
||||
properties: {
|
||||
extension_name: event.extension_name,
|
||||
setting_scope: event.setting_scope,
|
||||
}),
|
||||
},
|
||||
});
|
||||
|
||||
this.enqueueLogEvent(rumEvent);
|
||||
@@ -749,18 +749,15 @@ export class QwenLogger {
|
||||
}
|
||||
|
||||
logAuthEvent(event: AuthEvent): void {
|
||||
const snapshots: Record<string, unknown> = {
|
||||
const rumEvent = this.createActionEvent('auth', 'auth', {
|
||||
properties: {
|
||||
auth_type: event.auth_type,
|
||||
action_type: event.action_type,
|
||||
status: event.status,
|
||||
};
|
||||
|
||||
if (event.error_message) {
|
||||
snapshots['error_message'] = event.error_message;
|
||||
}
|
||||
|
||||
const rumEvent = this.createActionEvent('auth', 'auth', {
|
||||
snapshots: JSON.stringify(snapshots),
|
||||
success: event.status === 'success' ? 1 : 0,
|
||||
error_type: event.status !== 'success' ? event.status : undefined,
|
||||
error_message:
|
||||
event.status === 'error' ? event.error_message : undefined,
|
||||
},
|
||||
});
|
||||
|
||||
this.enqueueLogEvent(rumEvent);
|
||||
@@ -781,13 +778,13 @@ export class QwenLogger {
|
||||
|
||||
logRipgrepFallbackEvent(event: RipgrepFallbackEvent): void {
|
||||
const rumEvent = this.createActionEvent('misc', 'ripgrep_fallback', {
|
||||
snapshots: JSON.stringify({
|
||||
properties: {
|
||||
platform: process.platform,
|
||||
arch: process.arch,
|
||||
use_ripgrep: event.use_ripgrep,
|
||||
use_builtin_ripgrep: event.use_builtin_ripgrep,
|
||||
error: event.error ?? undefined,
|
||||
}),
|
||||
error_message: event.error,
|
||||
},
|
||||
});
|
||||
|
||||
this.enqueueLogEvent(rumEvent);
|
||||
@@ -809,11 +806,9 @@ export class QwenLogger {
|
||||
const rumEvent = this.createActionEvent('misc', 'next_speaker_check', {
|
||||
properties: {
|
||||
prompt_id: event.prompt_id,
|
||||
},
|
||||
snapshots: JSON.stringify({
|
||||
finish_reason: event.finish_reason,
|
||||
result: event.result,
|
||||
}),
|
||||
},
|
||||
});
|
||||
|
||||
this.enqueueLogEvent(rumEvent);
|
||||
@@ -822,10 +817,10 @@ export class QwenLogger {
|
||||
|
||||
logChatCompressionEvent(event: ChatCompressionEvent): void {
|
||||
const rumEvent = this.createActionEvent('misc', 'chat_compression', {
|
||||
snapshots: JSON.stringify({
|
||||
properties: {
|
||||
tokens_before: event.tokens_before,
|
||||
tokens_after: event.tokens_after,
|
||||
}),
|
||||
},
|
||||
});
|
||||
|
||||
this.enqueueLogEvent(rumEvent);
|
||||
@@ -834,11 +829,11 @@ export class QwenLogger {
|
||||
|
||||
logContentRetryEvent(event: ContentRetryEvent): void {
|
||||
const rumEvent = this.createActionEvent('misc', 'content_retry', {
|
||||
snapshots: JSON.stringify({
|
||||
attempt_number: event.attempt_number,
|
||||
properties: {
|
||||
error_type: event.error_type,
|
||||
attempt_number: event.attempt_number,
|
||||
retry_delay_ms: event.retry_delay_ms,
|
||||
}),
|
||||
},
|
||||
});
|
||||
|
||||
this.enqueueLogEvent(rumEvent);
|
||||
|
||||
Reference in New Issue
Block a user