From 6c0b59dbd6f2d8a805df87c3ad16dc227ac5f40b Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Tue, 23 Dec 2025 15:21:03 +0900 Subject: [PATCH] Fix tool_result recording for call_omo_agent to include output in transcripts (#177) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Check if metadata is empty before using it - Wrap output.output in structured object when metadata is missing - Ensures plugin tools (call_omo_agent, background_task, task) that return strings are properly recorded in transcripts instead of empty {} 🤖 Generated with assistance of OhMyOpenCode --- src/hooks/claude-code-hooks/index.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/hooks/claude-code-hooks/index.ts b/src/hooks/claude-code-hooks/index.ts index 6a2c341..6c8acb6 100644 --- a/src/hooks/claude-code-hooks/index.ts +++ b/src/hooks/claude-code-hooks/index.ts @@ -184,7 +184,13 @@ export function createClaudeCodeHooksHook(ctx: PluginInput, config: PluginConfig const cachedInput = getToolInput(input.sessionID, input.tool, input.callID) || {} - recordToolResult(input.sessionID, input.tool, cachedInput, (output.metadata as Record) || {}) + // Use metadata if available and non-empty, otherwise wrap output.output in a structured object + // This ensures plugin tools (call_omo_agent, background_task, task) that return strings + // get their results properly recorded in transcripts instead of empty {} + const metadata = output.metadata as Record | undefined + const hasMetadata = metadata && typeof metadata === "object" && Object.keys(metadata).length > 0 + const toolOutput = hasMetadata ? metadata : { output: output.output } + recordToolResult(input.sessionID, input.tool, cachedInput, toolOutput) if (!isHookDisabled(config, "PostToolUse")) { const postClient: PostToolUseClient = {