From f4ec2f376265d28dd5f8ac7a89a2942a2b2c1d3c Mon Sep 17 00:00:00 2001 From: Hibryda Date: Tue, 10 Mar 2026 04:20:32 +0100 Subject: [PATCH] feat(context): detect compaction events from SDK compact_boundary messages --- v2/src/lib/adapters/sdk-messages.ts | 21 ++++++ .../components/Workspace/ContextTab.svelte | 68 ++++++++++++++++++- 2 files changed, 88 insertions(+), 1 deletion(-) diff --git a/v2/src/lib/adapters/sdk-messages.ts b/v2/src/lib/adapters/sdk-messages.ts index aa9e7a8..147ff44 100644 --- a/v2/src/lib/adapters/sdk-messages.ts +++ b/v2/src/lib/adapters/sdk-messages.ts @@ -8,6 +8,7 @@ export type AgentMessageType = | 'tool_call' | 'tool_result' | 'status' + | 'compaction' | 'cost' | 'error' | 'unknown'; @@ -62,6 +63,11 @@ export interface CostContent { errors?: string[]; } +export interface CompactionContent { + trigger: 'manual' | 'auto'; + preTokens: number; +} + export interface ErrorContent { message: string; } @@ -125,6 +131,21 @@ function adaptSystemMessage( }]; } + if (subtype === 'compact_boundary') { + const meta = typeof raw.compact_metadata === 'object' && raw.compact_metadata !== null + ? raw.compact_metadata as Record + : {}; + return [{ + id: uuid, + type: 'compaction', + content: { + trigger: str(meta.trigger, 'auto') as 'manual' | 'auto', + preTokens: num(meta.pre_tokens), + } satisfies CompactionContent, + timestamp, + }]; + } + return [{ id: uuid, type: 'status', diff --git a/v2/src/lib/components/Workspace/ContextTab.svelte b/v2/src/lib/components/Workspace/ContextTab.svelte index 3b6828d..9bf2943 100644 --- a/v2/src/lib/components/Workspace/ContextTab.svelte +++ b/v2/src/lib/components/Workspace/ContextTab.svelte @@ -1,6 +1,6 @@