From 9de06e3deedb7759223aeca6fb12fd83962b2bf8 Mon Sep 17 00:00:00 2001 From: simplyclever914 Date: Sun, 3 May 2026 15:55:20 +0300 Subject: [PATCH] Format compaction PR changes and validate locally - apply oxfmt formatting to changed files - keep replay-safety, typed hook, and changelog fixes - validated targeted tests, oxfmt check, and check:changed locally --- docs/automation/hooks.md | 14 ++++++------- src/hooks/bundled/compaction-notifier/HOOK.md | 9 ++++++++- .../bundled/compaction-notifier/handler.ts | 20 +++++++++++-------- 3 files changed, 27 insertions(+), 16 deletions(-) diff --git a/docs/automation/hooks.md b/docs/automation/hooks.md index 0657c5d2a95..bb38d5818fa 100644 --- a/docs/automation/hooks.md +++ b/docs/automation/hooks.md @@ -160,13 +160,13 @@ Npm specs are registry-only (package name + optional exact version or dist-tag). ## Bundled hooks -| Hook | Events | What it does | -| --------------------- | ------------------------------ | ----------------------------------------------------- | -| session-memory | `command:new`, `command:reset` | Saves session context to `/memory/` | -| bootstrap-extra-files | `agent:bootstrap` | Injects additional bootstrap files from glob patterns | -| command-logger | `command` | Logs all commands to `~/.openclaw/logs/commands.log` | -| compaction-notifier | `session:compact:before`, `session:compact:after` | Sends visible chat notices when session compaction starts/ends | -| boot-md | `gateway:startup` | Runs `BOOT.md` when the gateway starts | +| Hook | Events | What it does | +| --------------------- | ------------------------------------------------- | -------------------------------------------------------------- | +| session-memory | `command:new`, `command:reset` | Saves session context to `/memory/` | +| bootstrap-extra-files | `agent:bootstrap` | Injects additional bootstrap files from glob patterns | +| command-logger | `command` | Logs all commands to `~/.openclaw/logs/commands.log` | +| compaction-notifier | `session:compact:before`, `session:compact:after` | Sends visible chat notices when session compaction starts/ends | +| boot-md | `gateway:startup` | Runs `BOOT.md` when the gateway starts | Enable any bundled hook: diff --git a/src/hooks/bundled/compaction-notifier/HOOK.md b/src/hooks/bundled/compaction-notifier/HOOK.md index b4ecd2f5749..bd9d239f0e9 100644 --- a/src/hooks/bundled/compaction-notifier/HOOK.md +++ b/src/hooks/bundled/compaction-notifier/HOOK.md @@ -2,7 +2,14 @@ name: compaction-notifier description: "Send visible chat notices when session compaction starts and finishes." metadata: - { "openclaw": { "emoji": "🧹", "events": ["session:compact:before", "session:compact:after"], "always": true } } + { + "openclaw": + { + "emoji": "🧹", + "events": ["session:compact:before", "session:compact:after"], + "always": true, + }, + } --- # Compaction Notifier diff --git a/src/hooks/bundled/compaction-notifier/handler.ts b/src/hooks/bundled/compaction-notifier/handler.ts index 7fbf5e8837d..cbe1d4baad9 100644 --- a/src/hooks/bundled/compaction-notifier/handler.ts +++ b/src/hooks/bundled/compaction-notifier/handler.ts @@ -11,23 +11,27 @@ const handler: HookHandler = async (event) => { if (event.type === "session" && event.action === "compact:before") { const messageCount = readOptionalNumber(context, "messageCount"); - const messageSuffix = messageCount !== undefined && messageCount >= 0 - ? ` (${messageCount} messages)` - : ""; - event.messages.push(`🧹 Compacting context${messageSuffix} so I can continue without losing history…`); + const messageSuffix = + messageCount !== undefined && messageCount >= 0 ? ` (${messageCount} messages)` : ""; + event.messages.push( + `🧹 Compacting context${messageSuffix} so I can continue without losing history…`, + ); return; } if (event.type === "session" && event.action === "compact:after") { const tokensBefore = readOptionalNumber(context, "tokensBefore"); const tokensAfter = readOptionalNumber(context, "tokensAfter"); - const tokenDelta = tokensBefore !== undefined && tokensAfter !== undefined - ? ` (${tokensBefore.toLocaleString()} → ${tokensAfter.toLocaleString()} tokens)` - : ""; + const tokenDelta = + tokensBefore !== undefined && tokensAfter !== undefined + ? ` (${tokensBefore.toLocaleString()} → ${tokensAfter.toLocaleString()} tokens)` + : ""; event.messages.push(`✅ Context compacted${tokenDelta}. Continuing from where I left off.`); } } catch (error) { - console.warn(`[compaction-notifier] failed: ${error instanceof Error ? error.message : String(error)}`); + console.warn( + `[compaction-notifier] failed: ${error instanceof Error ? error.message : String(error)}`, + ); } };