From 433b796f6dd8727b3a37b84788d9227387388be4 Mon Sep 17 00:00:00 2001 From: faizili Date: Wed, 6 May 2026 20:05:31 +0800 Subject: [PATCH 1/2] feat(codebuddy-hud): display session name from /rename in status line - Add sessionName field to TranscriptData interface - Parse ai-title and custom-title entries from transcript to extract session name set by /rename command or AI auto-generated title - Update renderIdentityLine to show session name with brightCyan color when available, falling back to dimmed #sessionId - Support CodeBuddy Code transcript format: parse top-level function_call/function_call_result entries for tool/agent/task tracking - Add getSessionId helper to stdin utilities - Add sessionId display option to default config --- plugins/codebuddy-hud/dist/config.js | 1 + plugins/codebuddy-hud/dist/render/identity.js | 18 +++- plugins/codebuddy-hud/dist/render/index.js | 10 ++- plugins/codebuddy-hud/dist/stdin.js | 6 ++ plugins/codebuddy-hud/dist/transcript.js | 82 +++++++++++++++++++ plugins/codebuddy-hud/src/render/identity.ts | 18 +++- plugins/codebuddy-hud/src/transcript.ts | 13 +++ plugins/codebuddy-hud/src/types.ts | 1 + 8 files changed, 141 insertions(+), 8 deletions(-) diff --git a/plugins/codebuddy-hud/dist/config.js b/plugins/codebuddy-hud/dist/config.js index ea84c33..901e86a 100644 --- a/plugins/codebuddy-hud/dist/config.js +++ b/plugins/codebuddy-hud/dist/config.js @@ -17,6 +17,7 @@ export const DEFAULT_CONFIG = { tasks: false, contextUsage: true, contextValues: false, + sessionId: false, }, colors: { model: 'blue', diff --git a/plugins/codebuddy-hud/dist/render/identity.js b/plugins/codebuddy-hud/dist/render/identity.js index 2e7a8b9..418aa8d 100644 --- a/plugins/codebuddy-hud/dist/render/identity.js +++ b/plugins/codebuddy-hud/dist/render/identity.js @@ -1,7 +1,7 @@ -import { getModelName, getProjectPath, getVersion } from '../stdin.js'; -import { colorize } from './colors.js'; +import { getModelName, getProjectPath, getVersion, getSessionId } from '../stdin.js'; +import { colorize, dim } from './colors.js'; export function renderIdentityLine(ctx) { - const { config, stdin, gitStatus } = ctx; + const { config, stdin, gitStatus, transcript } = ctx; const { display, colors } = config; const parts = []; if (display.model) { @@ -23,6 +23,18 @@ export function renderIdentityLine(ctx) { parts.push(`v${ver}`); } } + if (display.sessionId) { + const sessionName = transcript?.sessionName; + if (sessionName) { + parts.push(colorize(sessionName, 'brightCyan')); + } + else { + const sid = getSessionId(stdin); + if (sid) { + parts.push(dim(`#${sid}`)); + } + } + } if (parts.length === 0) return null; return parts.join(' | '); diff --git a/plugins/codebuddy-hud/dist/render/index.js b/plugins/codebuddy-hud/dist/render/index.js index 05ebef8..21e7415 100644 --- a/plugins/codebuddy-hud/dist/render/index.js +++ b/plugins/codebuddy-hud/dist/render/index.js @@ -2,8 +2,8 @@ import { renderIdentityLine } from './identity.js'; import { renderStatsLine, renderContextBar } from './stats.js'; import { renderActivityLine } from './activity.js'; import { getTerminalWidth, wrapLineToWidth } from './width.js'; -import { getModelName, getProjectPath } from '../stdin.js'; -import { colorize } from './colors.js'; +import { getModelName, getProjectPath, getSessionId } from '../stdin.js'; +import { colorize, dim } from './colors.js'; const RESET = '\x1b[0m'; function renderExpanded(ctx) { const lines = []; @@ -47,6 +47,12 @@ function renderCompact(ctx) { if (ver) parts.push(`v${ver}`); } + // Session ID + if (display.sessionId) { + const sid = getSessionId(stdin); + if (sid) + parts.push(dim(`#${sid}`)); + } // Stats (without context, since it's already shown above) const stats = renderStatsLine(ctx, { includeContext: false }); if (stats) diff --git a/plugins/codebuddy-hud/dist/stdin.js b/plugins/codebuddy-hud/dist/stdin.js index 5587994..eeed13d 100644 --- a/plugins/codebuddy-hud/dist/stdin.js +++ b/plugins/codebuddy-hud/dist/stdin.js @@ -56,4 +56,10 @@ export function getContextWindow(stdin) { export function getVersion(stdin) { return stdin.version ?? null; } +export function getSessionId(stdin, length = 8) { + const id = stdin.session_id ?? null; + if (!id) + return null; + return id.slice(0, length); +} //# sourceMappingURL=stdin.js.map \ No newline at end of file diff --git a/plugins/codebuddy-hud/dist/transcript.js b/plugins/codebuddy-hud/dist/transcript.js index 8749126..fb74cfe 100644 --- a/plugins/codebuddy-hud/dist/transcript.js +++ b/plugins/codebuddy-hud/dist/transcript.js @@ -126,6 +126,7 @@ export async function parseTranscript(transcriptPath) { const tasks = []; const taskIdToIndex = new Map(); let sessionStart; + let sessionName; let parsedCleanly = false; try { const rl = readline.createInterface({ @@ -141,6 +142,86 @@ export async function parseTranscript(transcriptPath) { if (!sessionStart && entry.timestamp) { sessionStart = timestamp; } + // 提取 /rename 或 AI 自动生成的会话名称(取最新的) + if (entry.type === 'ai-title' && typeof entry.aiTitle === 'string' && entry.aiTitle) { + sessionName = entry.aiTitle; + } + if (entry.type === 'custom-title' && typeof entry.customTitle === 'string' && entry.customTitle) { + sessionName = entry.customTitle; + } + // CodeBuddy Code format: top-level function_call / function_call_result entries + if (entry.type === 'function_call' && entry.callId && entry.name) { + const input = entry.arguments ? (() => { try { return JSON.parse(entry.arguments); } catch { return undefined; } })() : undefined; + if (entry.name === 'Task') { + agentMap.set(entry.callId, { + id: entry.callId, + type: input?.subagent_type ?? 'unknown', + model: input?.model ?? undefined, + description: input?.description ?? undefined, + status: 'running', + startTime: timestamp, + }); + } + else if (entry.name === 'TaskCreate') { + const subject = typeof input?.subject === 'string' ? input.subject : ''; + const description = typeof input?.description === 'string' ? input.description : ''; + const taskContent = subject || description || 'Untitled task'; + const status = normalizeTaskStatus(input?.status) ?? 'pending'; + tasks.push({ content: taskContent, status }); + const taskId = typeof input?.taskId === 'string' || typeof input?.taskId === 'number' + ? String(input.taskId) + : entry.callId; + if (taskId) { + taskIdToIndex.set(taskId, tasks.length - 1); + } + } + else if (entry.name === 'TaskUpdate') { + const taskId = typeof input?.taskId === 'string' || typeof input?.taskId === 'number' + ? String(input.taskId) + : undefined; + if (taskId) { + let index = taskIdToIndex.get(taskId); + if (index === undefined && /^\d+$/.test(taskId)) { + const numIdx = parseInt(taskId, 10) - 1; + if (numIdx >= 0 && numIdx < tasks.length) + index = numIdx; + } + if (index !== undefined) { + const newStatus = normalizeTaskStatus(input?.status); + if (newStatus) + tasks[index].status = newStatus; + const newSubject = typeof input?.subject === 'string' ? input.subject : ''; + const newDesc = typeof input?.description === 'string' ? input.description : ''; + const newContent = newSubject || newDesc; + if (newContent) + tasks[index].content = newContent; + } + } + } + else { + toolMap.set(entry.callId, { + id: entry.callId, + name: entry.name, + target: extractTarget(entry.name, input), + status: 'running', + startTime: timestamp, + }); + } + continue; + } + if (entry.type === 'function_call_result' && entry.callId) { + const tool = toolMap.get(entry.callId); + if (tool) { + tool.status = entry.isError ? 'error' : 'completed'; + tool.endTime = timestamp; + } + const agent = agentMap.get(entry.callId); + if (agent) { + agent.status = 'completed'; + agent.endTime = timestamp; + } + continue; + } const content = entry.message?.content; if (!content || !Array.isArray(content)) continue; @@ -233,6 +314,7 @@ export async function parseTranscript(transcriptPath) { agents: Array.from(agentMap.values()).slice(-10), tasks, sessionStart, + sessionName, }; if (parsedCleanly) { writeCache(transcriptPath, fileState, result); diff --git a/plugins/codebuddy-hud/src/render/identity.ts b/plugins/codebuddy-hud/src/render/identity.ts index 6e56287..91780a1 100644 --- a/plugins/codebuddy-hud/src/render/identity.ts +++ b/plugins/codebuddy-hud/src/render/identity.ts @@ -1,9 +1,9 @@ import type { RenderContext } from '../types.js'; -import { getModelName, getProjectPath, getVersion } from '../stdin.js'; -import { colorize } from './colors.js'; +import { getModelName, getProjectPath, getVersion, getSessionId } from '../stdin.js'; +import { colorize, dim } from './colors.js'; export function renderIdentityLine(ctx: RenderContext): string | null { - const { config, stdin, gitStatus } = ctx; + const { config, stdin, gitStatus, transcript } = ctx; const { display, colors } = config; const parts: string[] = []; @@ -32,6 +32,18 @@ export function renderIdentityLine(ctx: RenderContext): string | null { } } + if (display.sessionId) { + const sessionName = transcript?.sessionName; + if (sessionName) { + parts.push(colorize(sessionName, 'brightCyan')); + } else { + const sid = getSessionId(stdin); + if (sid) { + parts.push(dim(`#${sid}`)); + } + } + } + if (parts.length === 0) return null; return parts.join(' | '); diff --git a/plugins/codebuddy-hud/src/transcript.ts b/plugins/codebuddy-hud/src/transcript.ts index e6466f8..c205f8a 100644 --- a/plugins/codebuddy-hud/src/transcript.ts +++ b/plugins/codebuddy-hud/src/transcript.ts @@ -6,7 +6,10 @@ import * as os from 'node:os'; import type { TranscriptData, ToolEntry, AgentEntry, TaskItem } from './types.js'; interface TranscriptLine { + type?: string; timestamp?: string; + aiTitle?: string; + customTitle?: string; message?: { content?: ContentBlock[]; }; @@ -175,6 +178,7 @@ export async function parseTranscript(transcriptPath: string): Promise(); let sessionStart: Date | undefined; + let sessionName: string | undefined; let parsedCleanly = false; try { @@ -193,6 +197,14 @@ export async function parseTranscript(transcriptPath: string): Promise Date: Sun, 2 Aug 2026 22:45:19 +0800 Subject: [PATCH 2/2] fix(codebuddy-hud): keep session display changes in source --- plugins/codebuddy-hud/dist/config.js | 1 - plugins/codebuddy-hud/dist/render/identity.js | 18 +--- plugins/codebuddy-hud/dist/render/index.js | 10 +-- plugins/codebuddy-hud/dist/stdin.js | 6 -- plugins/codebuddy-hud/dist/transcript.js | 82 ------------------- plugins/codebuddy-hud/src/config.ts | 1 + plugins/codebuddy-hud/src/render/index.ts | 9 +- plugins/codebuddy-hud/src/stdin.ts | 6 ++ plugins/codebuddy-hud/src/transcript.ts | 76 +++++++++++++++++ plugins/codebuddy-hud/src/types.ts | 1 + 10 files changed, 96 insertions(+), 114 deletions(-) diff --git a/plugins/codebuddy-hud/dist/config.js b/plugins/codebuddy-hud/dist/config.js index 901e86a..ea84c33 100644 --- a/plugins/codebuddy-hud/dist/config.js +++ b/plugins/codebuddy-hud/dist/config.js @@ -17,7 +17,6 @@ export const DEFAULT_CONFIG = { tasks: false, contextUsage: true, contextValues: false, - sessionId: false, }, colors: { model: 'blue', diff --git a/plugins/codebuddy-hud/dist/render/identity.js b/plugins/codebuddy-hud/dist/render/identity.js index 418aa8d..2e7a8b9 100644 --- a/plugins/codebuddy-hud/dist/render/identity.js +++ b/plugins/codebuddy-hud/dist/render/identity.js @@ -1,7 +1,7 @@ -import { getModelName, getProjectPath, getVersion, getSessionId } from '../stdin.js'; -import { colorize, dim } from './colors.js'; +import { getModelName, getProjectPath, getVersion } from '../stdin.js'; +import { colorize } from './colors.js'; export function renderIdentityLine(ctx) { - const { config, stdin, gitStatus, transcript } = ctx; + const { config, stdin, gitStatus } = ctx; const { display, colors } = config; const parts = []; if (display.model) { @@ -23,18 +23,6 @@ export function renderIdentityLine(ctx) { parts.push(`v${ver}`); } } - if (display.sessionId) { - const sessionName = transcript?.sessionName; - if (sessionName) { - parts.push(colorize(sessionName, 'brightCyan')); - } - else { - const sid = getSessionId(stdin); - if (sid) { - parts.push(dim(`#${sid}`)); - } - } - } if (parts.length === 0) return null; return parts.join(' | '); diff --git a/plugins/codebuddy-hud/dist/render/index.js b/plugins/codebuddy-hud/dist/render/index.js index 21e7415..05ebef8 100644 --- a/plugins/codebuddy-hud/dist/render/index.js +++ b/plugins/codebuddy-hud/dist/render/index.js @@ -2,8 +2,8 @@ import { renderIdentityLine } from './identity.js'; import { renderStatsLine, renderContextBar } from './stats.js'; import { renderActivityLine } from './activity.js'; import { getTerminalWidth, wrapLineToWidth } from './width.js'; -import { getModelName, getProjectPath, getSessionId } from '../stdin.js'; -import { colorize, dim } from './colors.js'; +import { getModelName, getProjectPath } from '../stdin.js'; +import { colorize } from './colors.js'; const RESET = '\x1b[0m'; function renderExpanded(ctx) { const lines = []; @@ -47,12 +47,6 @@ function renderCompact(ctx) { if (ver) parts.push(`v${ver}`); } - // Session ID - if (display.sessionId) { - const sid = getSessionId(stdin); - if (sid) - parts.push(dim(`#${sid}`)); - } // Stats (without context, since it's already shown above) const stats = renderStatsLine(ctx, { includeContext: false }); if (stats) diff --git a/plugins/codebuddy-hud/dist/stdin.js b/plugins/codebuddy-hud/dist/stdin.js index eeed13d..5587994 100644 --- a/plugins/codebuddy-hud/dist/stdin.js +++ b/plugins/codebuddy-hud/dist/stdin.js @@ -56,10 +56,4 @@ export function getContextWindow(stdin) { export function getVersion(stdin) { return stdin.version ?? null; } -export function getSessionId(stdin, length = 8) { - const id = stdin.session_id ?? null; - if (!id) - return null; - return id.slice(0, length); -} //# sourceMappingURL=stdin.js.map \ No newline at end of file diff --git a/plugins/codebuddy-hud/dist/transcript.js b/plugins/codebuddy-hud/dist/transcript.js index fb74cfe..8749126 100644 --- a/plugins/codebuddy-hud/dist/transcript.js +++ b/plugins/codebuddy-hud/dist/transcript.js @@ -126,7 +126,6 @@ export async function parseTranscript(transcriptPath) { const tasks = []; const taskIdToIndex = new Map(); let sessionStart; - let sessionName; let parsedCleanly = false; try { const rl = readline.createInterface({ @@ -142,86 +141,6 @@ export async function parseTranscript(transcriptPath) { if (!sessionStart && entry.timestamp) { sessionStart = timestamp; } - // 提取 /rename 或 AI 自动生成的会话名称(取最新的) - if (entry.type === 'ai-title' && typeof entry.aiTitle === 'string' && entry.aiTitle) { - sessionName = entry.aiTitle; - } - if (entry.type === 'custom-title' && typeof entry.customTitle === 'string' && entry.customTitle) { - sessionName = entry.customTitle; - } - // CodeBuddy Code format: top-level function_call / function_call_result entries - if (entry.type === 'function_call' && entry.callId && entry.name) { - const input = entry.arguments ? (() => { try { return JSON.parse(entry.arguments); } catch { return undefined; } })() : undefined; - if (entry.name === 'Task') { - agentMap.set(entry.callId, { - id: entry.callId, - type: input?.subagent_type ?? 'unknown', - model: input?.model ?? undefined, - description: input?.description ?? undefined, - status: 'running', - startTime: timestamp, - }); - } - else if (entry.name === 'TaskCreate') { - const subject = typeof input?.subject === 'string' ? input.subject : ''; - const description = typeof input?.description === 'string' ? input.description : ''; - const taskContent = subject || description || 'Untitled task'; - const status = normalizeTaskStatus(input?.status) ?? 'pending'; - tasks.push({ content: taskContent, status }); - const taskId = typeof input?.taskId === 'string' || typeof input?.taskId === 'number' - ? String(input.taskId) - : entry.callId; - if (taskId) { - taskIdToIndex.set(taskId, tasks.length - 1); - } - } - else if (entry.name === 'TaskUpdate') { - const taskId = typeof input?.taskId === 'string' || typeof input?.taskId === 'number' - ? String(input.taskId) - : undefined; - if (taskId) { - let index = taskIdToIndex.get(taskId); - if (index === undefined && /^\d+$/.test(taskId)) { - const numIdx = parseInt(taskId, 10) - 1; - if (numIdx >= 0 && numIdx < tasks.length) - index = numIdx; - } - if (index !== undefined) { - const newStatus = normalizeTaskStatus(input?.status); - if (newStatus) - tasks[index].status = newStatus; - const newSubject = typeof input?.subject === 'string' ? input.subject : ''; - const newDesc = typeof input?.description === 'string' ? input.description : ''; - const newContent = newSubject || newDesc; - if (newContent) - tasks[index].content = newContent; - } - } - } - else { - toolMap.set(entry.callId, { - id: entry.callId, - name: entry.name, - target: extractTarget(entry.name, input), - status: 'running', - startTime: timestamp, - }); - } - continue; - } - if (entry.type === 'function_call_result' && entry.callId) { - const tool = toolMap.get(entry.callId); - if (tool) { - tool.status = entry.isError ? 'error' : 'completed'; - tool.endTime = timestamp; - } - const agent = agentMap.get(entry.callId); - if (agent) { - agent.status = 'completed'; - agent.endTime = timestamp; - } - continue; - } const content = entry.message?.content; if (!content || !Array.isArray(content)) continue; @@ -314,7 +233,6 @@ export async function parseTranscript(transcriptPath) { agents: Array.from(agentMap.values()).slice(-10), tasks, sessionStart, - sessionName, }; if (parsedCleanly) { writeCache(transcriptPath, fileState, result); diff --git a/plugins/codebuddy-hud/src/config.ts b/plugins/codebuddy-hud/src/config.ts index 2daecc9..d8262ef 100644 --- a/plugins/codebuddy-hud/src/config.ts +++ b/plugins/codebuddy-hud/src/config.ts @@ -19,6 +19,7 @@ export const DEFAULT_CONFIG: HudConfig = { tasks: false, contextUsage: true, contextValues: false, + sessionId: false, }, colors: { model: 'blue', diff --git a/plugins/codebuddy-hud/src/render/index.ts b/plugins/codebuddy-hud/src/render/index.ts index 0e3be15..6e4d1b1 100644 --- a/plugins/codebuddy-hud/src/render/index.ts +++ b/plugins/codebuddy-hud/src/render/index.ts @@ -3,8 +3,8 @@ import { renderIdentityLine } from './identity.js'; import { renderStatsLine, renderContextBar } from './stats.js'; import { renderActivityLine } from './activity.js'; import { getTerminalWidth, wrapLineToWidth } from './width.js'; -import { getModelName, getProjectPath } from '../stdin.js'; -import { colorize } from './colors.js'; +import { getModelName, getProjectPath, getSessionId } from '../stdin.js'; +import { colorize, dim } from './colors.js'; const RESET = '\x1b[0m'; @@ -52,6 +52,11 @@ function renderCompact(ctx: RenderContext): string[] { if (ver) parts.push(`v${ver}`); } + if (display.sessionId) { + const sid = getSessionId(stdin); + if (sid) parts.push(dim(`#${sid}`)); + } + // Stats (without context, since it's already shown above) const stats = renderStatsLine(ctx, { includeContext: false }); if (stats) parts.push(stats); diff --git a/plugins/codebuddy-hud/src/stdin.ts b/plugins/codebuddy-hud/src/stdin.ts index 24017ee..1bc8d01 100644 --- a/plugins/codebuddy-hud/src/stdin.ts +++ b/plugins/codebuddy-hud/src/stdin.ts @@ -82,3 +82,9 @@ export function getContextWindow(stdin: Partial): ContextWindowInfo { export function getVersion(stdin: Partial): string | null { return stdin.version ?? null; } + +export function getSessionId(stdin: Partial, length = 8): string | null { + const id = stdin.session_id ?? null; + if (!id) return null; + return id.slice(0, length); +} diff --git a/plugins/codebuddy-hud/src/transcript.ts b/plugins/codebuddy-hud/src/transcript.ts index c205f8a..f662fd9 100644 --- a/plugins/codebuddy-hud/src/transcript.ts +++ b/plugins/codebuddy-hud/src/transcript.ts @@ -10,6 +10,10 @@ interface TranscriptLine { timestamp?: string; aiTitle?: string; customTitle?: string; + callId?: string; + name?: string; + arguments?: string; + isError?: boolean; message?: { content?: ContentBlock[]; }; @@ -47,6 +51,7 @@ interface CacheFile { agents: SerializedAgentEntry[]; tasks: TaskItem[]; sessionStart?: string; + sessionName?: string; }; } @@ -91,6 +96,7 @@ function readCache(transcriptPath: string, state: FileState): TranscriptData | n })), tasks: cached.data.tasks, sessionStart: cached.data.sessionStart ? new Date(cached.data.sessionStart) : undefined, + sessionName: cached.data.sessionName, }; } catch { return null; @@ -116,6 +122,7 @@ function writeCache(transcriptPath: string, state: FileState, data: TranscriptDa })), tasks: data.tasks, sessionStart: data.sessionStart?.toISOString(), + sessionName: data.sessionName, }, }; fs.writeFileSync(getCachePath(transcriptPath), JSON.stringify(payload), 'utf8'); @@ -205,6 +212,75 @@ export async function parseTranscript(transcriptPath: string): Promise { try { return JSON.parse(entry.arguments) as Record; } catch { return undefined; } })() + : undefined; + if (entry.name === 'Task') { + agentMap.set(entry.callId, { + id: entry.callId, + type: (input?.subagent_type as string) ?? 'unknown', + model: (input?.model as string) ?? undefined, + description: (input?.description as string) ?? undefined, + status: 'running', + startTime: timestamp, + }); + } else if (entry.name === 'TaskCreate') { + const subject = typeof input?.subject === 'string' ? input.subject : ''; + const description = typeof input?.description === 'string' ? input.description : ''; + const taskContent = subject || description || 'Untitled task'; + const status = normalizeTaskStatus(input?.status) ?? 'pending'; + tasks.push({ content: taskContent, status }); + const taskId = typeof input?.taskId === 'string' || typeof input?.taskId === 'number' + ? String(input.taskId) + : entry.callId; + taskIdToIndex.set(taskId, tasks.length - 1); + } else if (entry.name === 'TaskUpdate') { + const taskId = typeof input?.taskId === 'string' || typeof input?.taskId === 'number' + ? String(input.taskId) + : undefined; + if (taskId) { + let index = taskIdToIndex.get(taskId); + if (index === undefined && /^\d+$/.test(taskId)) { + const numIdx = parseInt(taskId, 10) - 1; + if (numIdx >= 0 && numIdx < tasks.length) index = numIdx; + } + if (index !== undefined) { + const newStatus = normalizeTaskStatus(input?.status); + if (newStatus) tasks[index].status = newStatus; + const newSubject = typeof input?.subject === 'string' ? input.subject : ''; + const newDesc = typeof input?.description === 'string' ? input.description : ''; + const newContent = newSubject || newDesc; + if (newContent) tasks[index].content = newContent; + } + } + } else { + toolMap.set(entry.callId, { + id: entry.callId, + name: entry.name, + target: extractTarget(entry.name, input), + status: 'running', + startTime: timestamp, + }); + } + continue; + } + + if (entry.type === 'function_call_result' && entry.callId) { + const tool = toolMap.get(entry.callId); + if (tool) { + tool.status = entry.isError ? 'error' : 'completed'; + tool.endTime = timestamp; + } + const agent = agentMap.get(entry.callId); + if (agent) { + agent.status = 'completed'; + agent.endTime = timestamp; + } + continue; + } + const content = entry.message?.content; if (!content || !Array.isArray(content)) continue; diff --git a/plugins/codebuddy-hud/src/types.ts b/plugins/codebuddy-hud/src/types.ts index ce48840..9ca4ea4 100644 --- a/plugins/codebuddy-hud/src/types.ts +++ b/plugins/codebuddy-hud/src/types.ts @@ -93,6 +93,7 @@ export interface HudConfig { tasks: boolean; contextUsage: boolean; contextValues: boolean; + sessionId: boolean; }; colors: { model: string;