From f897aa2cb2c84fd38ec6badad9eec53b1c0b166d Mon Sep 17 00:00:00 2001 From: Hengfei Yang Date: Fri, 24 Apr 2026 23:32:07 +0800 Subject: [PATCH] feat(o2ai): render CLI tool_result summary and command (#11449) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary - Render `summary.return_code`, `stdout_lines`, `stderr_lines`, and `truncated` in the chat tool-call details panel so CLI tool results show parsed info like MCP tools do. - Whitelist `command` in `getToolCallDisplayData` and add a "Command" row with a copy button so the actual CLI command the agent ran is visible. ## Context The o2-ai server already emits a uniform `tool_result` shape for CLI tools (see openobserve/o2-ai#96 — wait for that to merge): ```json { "type": "tool_result", "tool": "cli_kubectl", "success": true, "message": "Exited 0 (12 lines stdout)", "summary": { "return_code": 0, "stdout_lines": 12, "stderr_lines": 0 }, "call_args": { "command": "get pods -n default" }, "call_id": "call-uuid-v7" } ``` `ContentBlock.summary` was already being captured from the event — the template just had no conditionals for the CLI fields. This PR adds them. ## What this does NOT do - Does not show raw `stdout`/`stderr` text (server currently only sends line counts). If we want inline output, that's a separate backend change. - Does not add a custom header format for CLI — the default `block.message` ("Exited 0 (12 lines stdout)") renders fine as plain text. ## Test plan - [x] `npm run type-check` — clean - [ ] Manually verify in dev chat that a CLI tool call (`kubectl get pods`) shows the Exit code / Stdout / Stderr rows and the Command row with copy button - [ ] MCP tools (SearchSQL, StreamList) still render the existing Results / Duration rows unchanged 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.7 (1M context) --- web/src/components/O2AIChat.vue | 36 +++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/web/src/components/O2AIChat.vue b/web/src/components/O2AIChat.vue index 176d0353cb..4ebcaca8aa 100644 --- a/web/src/components/O2AIChat.vue +++ b/web/src/components/O2AIChat.vue @@ -402,6 +402,23 @@ Duration {{ block.summary.took }}ms + +
+ Exit code + {{ block.summary.return_code }} +
+
+ Stdout + {{ block.summary.stdout_lines }} lines +
+
+ Stderr + {{ block.summary.stderr_lines }} lines +
+
+ Output + truncated +
@@ -464,6 +481,22 @@
{{ getToolCallDisplayData(block.context)?.vrl }} +
+
+ Command + + Copy command + +
+ {{ getToolCallDisplayData(block.context)?.command }} +