feat: add systemMessage support for SessionStart hook and tune defaults

Add systemMessage field to HookResult so SessionStart can display a
colored timeline directly to the user in the CLI. The handler now
parallel-fetches both markdown (for Claude context) and ANSI-colored
(for user display) timelines, appending a viewer URL link.

Also update default settings to hide verbose token columns (read/work
tokens, savings amount) and disable full observation expansion, keeping
the cleaner index-only view by default.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Alex Newman
2026-02-16 00:05:13 -05:00
parent 5ccaf40ad0
commit 34358ab33d
7 changed files with 46 additions and 28 deletions
+14 -3
View File
@@ -48,14 +48,25 @@ export const contextHandler: EventHandler = {
};
}
const result = await response.text();
const additionalContext = result.trim();
// Fetch both markdown (for Claude context) and colored (for user display) in parallel
const colorUrl = `${url}&colors=true`;
const [contextResult, colorResult] = await Promise.all([
response.text(),
fetch(colorUrl).then(r => r.ok ? r.text() : '').catch(() => '')
]);
const additionalContext = contextResult.trim();
const coloredTimeline = colorResult.trim();
const systemMessage = coloredTimeline
? `${coloredTimeline}\n\nView Observations Live @ http://localhost:${port}`
: undefined;
return {
hookSpecificOutput: {
hookEventName: 'SessionStart',
additionalContext
}
},
systemMessage
};
} catch (error) {
// Worker unreachable — return empty context gracefully