{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/bash-exit-code-green-dot-bug.md"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/bash-exit-code-green-dot-bug.md"},"lines":{"text":"# Bug 分析：Bash 工具 exit code 非零时仍显示绿色圆点\n"},"line_number":1,"absolute_offset":0,"submatches":[{"match":{"text":"Bash"},"start":15,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/bash-exit-code-green-dot-bug.md"},"lines":{"text":"在 `/plugin` 页面 scrollback 中，Bash 工具执行失败（exit code != 0）时，工具结果行显示的是**绿色圆点**（代表成功），而不是**红色叉号**（代表失败）。\n"},"line_number":5,"absolute_offset":80,"submatches":[{"match":{"text":"Bash"},"start":38,"end":42}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/bash-exit-code-green-dot-bug.md"},"lines":{"text":"● Bash(timeout=30s command=cd ... && python -m pytest ...)\n"},"line_number":10,"absolute_offset":306,"submatches":[{"match":{"text":"Bash"},"start":4,"end":8}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/bash-exit-code-green-dot-bug.md"},"lines":{"text":"Bash 工具在命令执行完毕后构造返回 envelope 时，只检查了三种异常情况：\n"},"line_number":20,"absolute_offset":560,"submatches":[{"match":{"text":"Bash"},"start":0,"end":4}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/bash-exit-code-green-dot-bug.md"},"lines":{"text":"### 第 1 层：Bash 工具 envelope 构造（bug 所在）\n"},"line_number":30,"absolute_offset":1062,"submatches":[{"match":{"text":"Bash"},"start":16,"end":20}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/bash-exit-code-green-dot-bug.md"},"lines":{"text":"如果 SDK 修复周期较长，可以在 comate_cli 的 `event_renderer.py` 的 `ToolResultEvent` 处理分支中增加防御逻辑：当 `is_error=False` 但 `output` 是 `BashOutput` 且 `exit_code != 0` 时，强制将 `is_error` 修正为 `True`。但这种方式侵入性大且绕过了 SDK 的语义契约，建议仅在无法及时修改 SDK 时使用。\n"},"line_number":128,"absolute_offset":3756,"submatches":[{"match":{"text":"Bash"},"start":174,"end":178}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/bash-exit-code-green-dot-bug.md"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":59124,"human":"0.000059s"},"searches":1,"searches_with_match":1,"bytes_searched":4885,"bytes_printed":2444,"matched_lines":6,"matches":6}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_sync.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_sync.py"},"lines":{"text":"                name=\"Bash\",\n"},"line_number":316,"absolute_offset":11131,"submatches":[{"match":{"text":"Bash"},"start":22,"end":26}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_sync.py"},"lines":{"text":"                    tool_name=\"Bash\",\n"},"line_number":344,"absolute_offset":12123,"submatches":[{"match":{"text":"Bash"},"start":31,"end":35}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_sync.py"},"lines":{"text":"                tool_name=\"Bash\",\n"},"line_number":349,"absolute_offset":12285,"submatches":[{"match":{"text":"Bash"},"start":27,"end":31}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_sync.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":41254,"human":"0.000041s"},"searches":1,"searches_with_match":1,"bytes_searched":13498,"bytes_printed":959,"matched_lines":3,"matches":3}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/custom_slash_commands.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/custom_slash_commands.py"},"lines":{"text":"                f\"Bash output exceeds {item_max_bytes} bytes for command: {command}\"\n"},"line_number":319,"absolute_offset":10170,"submatches":[{"match":{"text":"Bash"},"start":18,"end":22}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/custom_slash_commands.py"},"lines":{"text":"            f\"Bash command timed out after {timeout_seconds:.1f}s: {command}\"\n"},"line_number":433,"absolute_offset":14089,"submatches":[{"match":{"text":"Bash"},"start":14,"end":18}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/custom_slash_commands.py"},"lines":{"text":"            f\"Bash command failed (exit {process.returncode}): {command}\\n{merged_output}\"\n"},"line_number":446,"absolute_offset":14582,"submatches":[{"match":{"text":"Bash"},"start":14,"end":18}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/custom_slash_commands.py"},"lines":{"text":"        \"### Bash Command Output\\n\"\n"},"line_number":454,"absolute_offset":14792,"submatches":[{"match":{"text":"Bash"},"start":13,"end":17}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/custom_slash_commands.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":64120,"human":"0.000064s"},"searches":1,"searches_with_match":1,"bytes_searched":15801,"bytes_printed":1516,"matched_lines":4,"matches":4}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_rewind_command_semantics.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_rewind_command_semantics.py"},"lines":{"text":"                \"display_name\": \"Bash\",\n"},"line_number":168,"absolute_offset":5566,"submatches":[{"match":{"text":"Bash"},"start":33,"end":37}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_rewind_command_semantics.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":25712,"human":"0.000026s"},"searches":1,"searches_with_match":1,"bytes_searched":6708,"bytes_printed":431,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_store.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_store.py"},"lines":{"text":"            display_name=\"Bash\",\n"},"line_number":17,"absolute_offset":373,"submatches":[{"match":{"text":"Bash"},"start":26,"end":30}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_store.py"},"lines":{"text":"            display_name=\"Bash\",\n"},"line_number":37,"absolute_offset":957,"submatches":[{"match":{"text":"Bash"},"start":26,"end":30}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_store.py"},"lines":{"text":"        r = reg.record(self._make_kwargs(tool_name=\"Bash\"))\n"},"line_number":112,"absolute_offset":3422,"submatches":[{"match":{"text":"Bash"},"start":52,"end":56}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_store.py"},"lines":{"text":"            display_name=\"Bash\",\n"},"line_number":122,"absolute_offset":3712,"submatches":[{"match":{"text":"Bash"},"start":26,"end":30}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_store.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":53183,"human":"0.000053s"},"searches":1,"searches_with_match":1,"bytes_searched":4481,"bytes_printed":1280,"matched_lines":4,"matches":4}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tui_tool_result_registry_lifecycle.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tui_tool_result_registry_lifecycle.py"},"lines":{"text":"                    \"display_name\": \"Bash\",\n"},"line_number":53,"absolute_offset":1362,"submatches":[{"match":{"text":"Bash"},"start":37,"end":41}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tui_tool_result_registry_lifecycle.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":16261,"human":"0.000016s"},"searches":1,"searches_with_match":1,"bytes_searched":3054,"bytes_printed":454,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_printer.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_printer.py"},"lines":{"text":"            text=\"Bash(timeout=120s date '+%Y-%m-%d %H:%M:%S %Z')\",\n"},"line_number":50,"absolute_offset":1566,"submatches":[{"match":{"text":"Bash"},"start":18,"end":22}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_printer.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":51910,"human":"0.000052s"},"searches":1,"searches_with_match":1,"bytes_searched":24156,"bytes_printed":438,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer_log_boundary.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer_log_boundary.py"},"lines":{"text":"        signature=\"Bash(command=ls -la)\",\n"},"line_number":88,"absolute_offset":3778,"submatches":[{"match":{"text":"Bash"},"start":19,"end":23}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer_log_boundary.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":16600,"human":"0.000017s"},"searches":1,"searches_with_match":1,"bytes_searched":7536,"bytes_printed":436,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_custom_slash_commands.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_custom_slash_commands.py"},"lines":{"text":"            self.assertIn(\"### Bash Command Output\", rendered)\n"},"line_number":169,"absolute_offset":6390,"submatches":[{"match":{"text":"Bash"},"start":31,"end":35}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_custom_slash_commands.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":19021,"human":"0.000019s"},"searches":1,"searches_with_match":1,"bytes_searched":8604,"bytes_printed":446,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_viewer.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_viewer.py"},"lines":{"text":"            display_name=\"Bash\",\n"},"line_number":14,"absolute_offset":347,"submatches":[{"match":{"text":"Bash"},"start":26,"end":30}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_viewer.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":13485,"human":"0.000013s"},"searches":1,"searches_with_match":1,"bytes_searched":4208,"bytes_printed":408,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tool_result_formatters.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tool_result_formatters.py"},"lines":{"text":"            from comate_agent_sdk.tool_schemas.bash import BashOutput\n"},"line_number":197,"absolute_offset":5605,"submatches":[{"match":{"text":"Bash"},"start":59,"end":63}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tool_result_formatters.py"},"lines":{"text":"            if lowered == \"bash\" and isinstance(output, BashOutput):\n"},"line_number":208,"absolute_offset":6200,"submatches":[{"match":{"text":"Bash"},"start":56,"end":60}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tool_result_formatters.py"},"lines":{"text":"        and str(rec.result_text).lstrip().startswith(\"# Bash Error\")\n"},"line_number":573,"absolute_offset":19400,"submatches":[{"match":{"text":"Bash"},"start":56,"end":60}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tool_result_formatters.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":33374,"human":"0.000033s"},"searches":1,"searches_with_match":1,"bytes_searched":25530,"bytes_printed":1162,"matched_lines":3,"matches":3}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_view.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_view.py"},"lines":{"text":"            \"Bash\",\n"},"line_number":39,"absolute_offset":1185,"submatches":[{"match":{"text":"Bash"},"start":13,"end":17}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_view.py"},"lines":{"text":"        self.assertIn(\"⏹ Bash\", text_ref.plain)\n"},"line_number":46,"absolute_offset":1362,"submatches":[{"match":{"text":"Bash"},"start":27,"end":31}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_view.py"},"lines":{"text":"        result = summarize_tool_args(\"Bash\", args, None)\n"},"line_number":242,"absolute_offset":10471,"submatches":[{"match":{"text":"Bash"},"start":38,"end":42}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_view.py"},"lines":{"text":"        result = summarize_tool_args(\"Bash\", args, None)\n"},"line_number":248,"absolute_offset":10745,"submatches":[{"match":{"text":"Bash"},"start":38,"end":42}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_view.py"},"lines":{"text":"class TestBashSummaryFallback(unittest.TestCase):\n"},"line_number":288,"absolute_offset":12636,"submatches":[{"match":{"text":"Bash"},"start":10,"end":14}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_view.py"},"lines":{"text":"    \"\"\"Bash command fallback should display the command like normal CLI input.\"\"\"\n"},"line_number":289,"absolute_offset":12686,"submatches":[{"match":{"text":"Bash"},"start":7,"end":11}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_view.py"},"lines":{"text":"        result = summarize_tool_args(\"Bash\", {\"command\": \"uname -a\"})\n"},"line_number":294,"absolute_offset":12911,"submatches":[{"match":{"text":"Bash"},"start":38,"end":42}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_view.py"},"lines":{"text":"        result = summarize_tool_args(\"Bash\", {\"command\": \"ls\", \"cwd\": \"/tmp\"})\n"},"line_number":302,"absolute_offset":13207,"submatches":[{"match":{"text":"Bash"},"start":38,"end":42}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_view.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":63312,"human":"0.000063s"},"searches":1,"searches_with_match":1,"bytes_searched":13466,"bytes_printed":2535,"matched_lines":8,"matches":8}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer_streaming.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer_streaming.py"},"lines":{"text":"        renderer.handle_event(ToolCallStartEvent(tool_call_id=\"tc1\", tool=\"Bash\"))\n"},"line_number":611,"absolute_offset":25210,"submatches":[{"match":{"text":"Bash"},"start":75,"end":79}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer_streaming.py"},"lines":{"text":"        renderer.handle_event(ToolCallStartEvent(tool_call_id=\"tc1\", tool=\"Bash\"))\n"},"line_number":623,"absolute_offset":25816,"submatches":[{"match":{"text":"Bash"},"start":75,"end":79}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer_streaming.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":63632,"human":"0.000064s"},"searches":1,"searches_with_match":1,"bytes_searched":36461,"bytes_printed":818,"matched_lines":2,"matches":2}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer.py"},"lines":{"text":"                tool=\"Bash\",\n"},"line_number":530,"absolute_offset":19775,"submatches":[{"match":{"text":"Bash"},"start":22,"end":26}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer.py"},"lines":{"text":"                tool=\"Bash\",\n"},"line_number":548,"absolute_offset":20507,"submatches":[{"match":{"text":"Bash"},"start":22,"end":26}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer.py"},"lines":{"text":"class TestBashObservableInputDisplay(unittest.TestCase):\n"},"line_number":796,"absolute_offset":31399,"submatches":[{"match":{"text":"Bash"},"start":10,"end":14}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer.py"},"lines":{"text":"            \"Bash\",\n"},"line_number":799,"absolute_offset":31561,"submatches":[{"match":{"text":"Bash"},"start":13,"end":17}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer.py"},"lines":{"text":"            \"Bash\",\n"},"line_number":814,"absolute_offset":32086,"submatches":[{"match":{"text":"Bash"},"start":13,"end":17}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer.py"},"lines":{"text":"            \"Bash\",\n"},"line_number":825,"absolute_offset":32384,"submatches":[{"match":{"text":"Bash"},"start":13,"end":17}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer.py"},"lines":{"text":"        subtitle = self._build(\"Bash\", result)\n"},"line_number":925,"absolute_offset":36009,"submatches":[{"match":{"text":"Bash"},"start":32,"end":36}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer.py"},"lines":{"text":"        subtitle = self._build(\"Bash\", result)\n"},"line_number":930,"absolute_offset":36193,"submatches":[{"match":{"text":"Bash"},"start":32,"end":36}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer.py"},"lines":{"text":"        renderer._append_tool_call(\"Bash\", {\"command\": \"pytest\"}, \"call-bash-error\")\n"},"line_number":1143,"absolute_offset":45151,"submatches":[{"match":{"text":"Bash"},"start":36,"end":40}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer.py"},"lines":{"text":"            tool_name=\"Bash\",\n"},"line_number":1145,"absolute_offset":45274,"submatches":[{"match":{"text":"Bash"},"start":23,"end":27}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer.py"},"lines":{"text":"            result=\"# Bash Error\\n\\nCode: EXIT_CODE_NON_ZERO\\nMessage: Command exited with non-zero code: 7\\n\\nExit code: 7\",\n"},"line_number":1148,"absolute_offset":45375,"submatches":[{"match":{"text":"Bash"},"start":22,"end":26}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer.py"},"lines":{"text":"            ToolCallEvent(tool=\"Bash\", args={\"command\": \"ls\"}, tool_call_id=\"tc_1\")\n"},"line_number":1198,"absolute_offset":47454,"submatches":[{"match":{"text":"Bash"},"start":32,"end":36}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer.py"},"lines":{"text":"                tool=\"Bash\",\n"},"line_number":1202,"absolute_offset":47608,"submatches":[{"match":{"text":"Bash"},"start":22,"end":26}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer.py"},"lines":{"text":"            ToolCallEvent(tool=\"Bash\", args={\"command\": \"pwd\"}, tool_call_id=\"tc_3\")\n"},"line_number":1290,"absolute_offset":50605,"submatches":[{"match":{"text":"Bash"},"start":32,"end":36}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer.py"},"lines":{"text":"                tool=\"Bash\",\n"},"line_number":1294,"absolute_offset":50760,"submatches":[{"match":{"text":"Bash"},"start":22,"end":26}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":109177,"human":"0.000109s"},"searches":1,"searches_with_match":1,"bytes_searched":55713,"bytes_printed":4607,"matched_lines":15,"matches":15}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_formatters.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_formatters.py"},"lines":{"text":"            display_name=\"Bash\",\n"},"line_number":62,"absolute_offset":1838,"submatches":[{"match":{"text":"Bash"},"start":26,"end":30}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_formatters.py"},"lines":{"text":"        from comate_agent_sdk.tool_schemas.bash import BashOutput\n"},"line_number":87,"absolute_offset":2729,"submatches":[{"match":{"text":"Bash"},"start":55,"end":59}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_formatters.py"},"lines":{"text":"        output = BashOutput(\n"},"line_number":89,"absolute_offset":2796,"submatches":[{"match":{"text":"Bash"},"start":17,"end":21}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_formatters.py"},"lines":{"text":"        from comate_agent_sdk.tool_schemas.bash import BashOutput\n"},"line_number":301,"absolute_offset":10580,"submatches":[{"match":{"text":"Bash"},"start":55,"end":59}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_formatters.py"},"lines":{"text":"        output = BashOutput(\n"},"line_number":303,"absolute_offset":10647,"submatches":[{"match":{"text":"Bash"},"start":17,"end":21}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_formatters.py"},"lines":{"text":"            display_name=\"Bash\",\n"},"line_number":394,"absolute_offset":13673,"submatches":[{"match":{"text":"Bash"},"start":26,"end":30}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_formatters.py"},"lines":{"text":"        self.assertIn(\"Bash\", text.plain)\n"},"line_number":414,"absolute_offset":14282,"submatches":[{"match":{"text":"Bash"},"start":23,"end":27}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_formatters.py"},"lines":{"text":"        self.assertIn(\"Bash\", text.plain)\n"},"line_number":423,"absolute_offset":14554,"submatches":[{"match":{"text":"Bash"},"start":23,"end":27}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_formatters.py"},"lines":{"text":"            display_name=\"Bash\",\n"},"line_number":432,"absolute_offset":14833,"submatches":[{"match":{"text":"Bash"},"start":26,"end":30}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_formatters.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":50356,"human":"0.000050s"},"searches":1,"searches_with_match":1,"bytes_searched":15628,"bytes_printed":2793,"matched_lines":9,"matches":9}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_viewer_key_bindings.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_viewer_key_bindings.py"},"lines":{"text":"            display_name=\"Bash\",\n"},"line_number":34,"absolute_offset":908,"submatches":[{"match":{"text":"Bash"},"start":26,"end":30}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_viewer_key_bindings.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":13335,"human":"0.000013s"},"searches":1,"searches_with_match":1,"bytes_searched":2833,"bytes_printed":434,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_printer_log.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_printer_log.py"},"lines":{"text":"            text=\"Bash(command)\",\n"},"line_number":184,"absolute_offset":6025,"submatches":[{"match":{"text":"Bash"},"start":18,"end":22}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_printer_log.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":15457,"human":"0.000015s"},"searches":1,"searches_with_match":1,"bytes_searched":6414,"bytes_printed":413,"matched_lines":1,"matches":1}}}
{"data":{"elapsed_total":{"human":"0.009261s","nanos":9261230,"secs":0},"stats":{"bytes_printed":21574,"bytes_searched":248976,"elapsed":{"human":"0.000709s","nanos":709313,"secs":0},"matched_lines":62,"matches":62,"searches":17,"searches_with_match":17}},"type":"summary"}
