feat(commands,audit): add /context command and proactive compaction audit events

This commit is contained in:
William Valentin
2026-02-16 16:08:21 -08:00
parent 9c8da41610
commit 21d57d991c
11 changed files with 173 additions and 20 deletions
+12
View File
@@ -16,6 +16,8 @@ import type {
SessionMessageEvent,
SessionDeleteEvent,
SessionCompactEvent,
SessionCheckpointEvent,
SessionAutoCompactEvent,
UserActionEvent,
CronTriggerEvent,
WebhookReceiveEvent,
@@ -175,6 +177,16 @@ export class AuditLogger {
this.write({ level: 'debug', event_type: 'session.compact', event: event as unknown as Record<string, unknown> });
}
sessionCheckpoint(event: SessionCheckpointEvent): void {
if (!this.shouldLog('sessions', 'debug')) {return;}
this.write({ level: 'debug', event_type: 'session.checkpoint', event: event as unknown as Record<string, unknown> });
}
sessionAutoCompact(event: SessionAutoCompactEvent): void {
if (!this.shouldLog('sessions', 'debug')) {return;}
this.write({ level: 'debug', event_type: 'session.auto_compact', event: event as unknown as Record<string, unknown> });
}
userAction(event: UserActionEvent): void {
if (!this.shouldLog('sessions', 'info')) {return;}
this.write({ level: 'info', event_type: 'user.action', event: event as unknown as Record<string, unknown> });
+17 -1
View File
@@ -10,7 +10,7 @@ export type AuditEventType =
// Skills installer
| 'skills.installer.execution_blocked' | 'skills.installer.command_result' | 'skills.registry_install'
// Session lifecycle
| 'session.create' | 'session.message' | 'session.delete' | 'session.transfer' | 'session.compact' | 'user.action'
| 'session.create' | 'session.message' | 'session.delete' | 'session.transfer' | 'session.compact' | 'session.checkpoint' | 'session.auto_compact' | 'user.action'
// Automation - Cron
| 'cron.trigger' | 'cron.sent' | 'cron.add' | 'cron.remove'
// Automation - Webhook
@@ -182,6 +182,22 @@ export interface SessionCompactEvent {
tokens_after: number;
}
export interface SessionCheckpointEvent {
session_id: string;
namespace: string;
chars_written: number;
usage_pct: number;
}
export interface SessionAutoCompactEvent {
session_id: string;
usage_pct_before: number;
usage_pct_after: number;
compacted: boolean;
tokens_before: number;
tokens_after: number;
}
export interface UserActionEvent {
session_id: string;
channel: string;