{"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":"### 第 6 层：history_printer 渲染颜色\n"},"line_number":89,"absolute_offset":2673,"submatches":[{"match":{"text":"_print"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/bash-exit-code-green-dot-bug.md"},"lines":{"text":"**文件**：`comate_cli/comate_cli/terminal_agent/history_printer.py`（第 244-246 行）\n"},"line_number":91,"absolute_offset":2719,"submatches":[{"match":{"text":"_print"},"start":58,"end":64}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/bash-exit-code-green-dot-bug.md"},"lines":{"text":"| CLI | `comate_cli/terminal_agent/history_printer.py` | `render_history_group()` 渲染颜色 |\n"},"line_number":140,"absolute_offset":4788,"submatches":[{"match":{"text":"_print"},"start":42,"end":48}]}}
{"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":51329,"human":"0.000051s"},"searches":1,"searches_with_match":1,"bytes_searched":4885,"bytes_printed":1107,"matched_lines":3,"matches":3}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/docs/superpowers/specs/2026-04-01-conditional-diff-subtitle-design.md"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/docs/superpowers/specs/2026-04-01-conditional-diff-subtitle-design.md"},"lines":{"text":"The downstream consumers (`history_printer.py` `_render_subtitle_line()`, `render_history_group()`) already handle `None` subtitle (skip rendering) and arbitrary subtitle strings. No changes needed there.\n"},"line_number":59,"absolute_offset":1534,"submatches":[{"match":{"text":"_print"},"start":34,"end":40}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/docs/superpowers/specs/2026-04-01-conditional-diff-subtitle-design.md"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":34475,"human":"0.000034s"},"searches":1,"searches_with_match":1,"bytes_searched":2009,"bytes_printed":655,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"lines":{"text":"    _print_preflight_block_message,\n"},"line_number":20,"absolute_offset":479,"submatches":[{"match":{"text":"_print"},"start":4,"end":10}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"lines":{"text":"        _print_preflight_block_message(\n"},"line_number":265,"absolute_offset":10170,"submatches":[{"match":{"text":"_print"},"start":8,"end":14}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":74516,"human":"0.000075s"},"searches":1,"searches_with_match":1,"bytes_searched":17767,"bytes_printed":674,"matched_lines":2,"matches":2}}}
{"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":"        self._printed_history_index = 0\n"},"line_number":33,"absolute_offset":970,"submatches":[{"match":{"text":"_print"},"start":13,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_sync.py"},"lines":{"text":"    async def test_drain_history_async_uses_executor_terminal_print(self) -> None:\n"},"line_number":368,"absolute_offset":12912,"submatches":[{"match":{"text":"_print"},"start":61,"end":67}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_sync.py"},"lines":{"text":"            \"comate_cli.terminal_agent.tui_parts.history_sync.run_in_terminal\",\n"},"line_number":373,"absolute_offset":13112,"submatches":[{"match":{"text":"run_in_terminal"},"start":62,"end":77}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_sync.py"},"lines":{"text":"        ) as mock_run_in_terminal:\n"},"line_number":375,"absolute_offset":13226,"submatches":[{"match":{"text":"run_in_terminal"},"start":18,"end":33}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_sync.py"},"lines":{"text":"        mock_run_in_terminal.assert_awaited_once()\n"},"line_number":378,"absolute_offset":13308,"submatches":[{"match":{"text":"run_in_terminal"},"start":13,"end":28}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_sync.py"},"lines":{"text":"        self.assertTrue(mock_run_in_terminal.await_args.kwargs[\"in_executor\"])\n"},"line_number":379,"absolute_offset":13359,"submatches":[{"match":{"text":"run_in_terminal"},"start":29,"end":44}]}}
{"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":53818,"human":"0.000054s"},"searches":1,"searches_with_match":1,"bytes_searched":13498,"bytes_printed":2001,"matched_lines":6,"matches":6}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"    \"\"\"Tests for _run_print_mode in app.py.\"\"\"\n"},"line_number":12,"absolute_offset":265,"submatches":[{"match":{"text":"_print"},"start":21,"end":27}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"    def test_print_mode_outputs_last_text_event(self):\n"},"line_number":14,"absolute_offset":313,"submatches":[{"match":{"text":"_print"},"start":12,"end":18}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"        from comate_cli.terminal_agent.app import _run_print_mode\n"},"line_number":16,"absolute_offset":439,"submatches":[{"match":{"text":"_print"},"start":54,"end":60}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"                        asyncio.run(_run_print_mode(\n"},"line_number":33,"absolute_offset":1281,"submatches":[{"match":{"text":"_print"},"start":40,"end":46}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"    def test_print_mode_no_text_event_silent_exit(self):\n"},"line_number":40,"absolute_offset":1565,"submatches":[{"match":{"text":"_print"},"start":12,"end":18}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"        from comate_cli.terminal_agent.app import _run_print_mode\n"},"line_number":42,"absolute_offset":1677,"submatches":[{"match":{"text":"_print"},"start":54,"end":60}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"                        asyncio.run(_run_print_mode(\n"},"line_number":57,"absolute_offset":2425,"submatches":[{"match":{"text":"_print"},"start":40,"end":46}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"    def test_print_mode_appends_newline_if_missing(self):\n"},"line_number":63,"absolute_offset":2631,"submatches":[{"match":{"text":"_print"},"start":12,"end":18}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"        from comate_cli.terminal_agent.app import _run_print_mode\n"},"line_number":65,"absolute_offset":2759,"submatches":[{"match":{"text":"_print"},"start":54,"end":60}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"                        asyncio.run(_run_print_mode(\n"},"line_number":81,"absolute_offset":3552,"submatches":[{"match":{"text":"_print"},"start":40,"end":46}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":35602,"human":"0.000036s"},"searches":1,"searches_with_match":1,"bytes_searched":3841,"bytes_printed":3159,"matched_lines":10,"matches":10}}}
{"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":"from comate_cli.terminal_agent.history_printer import render_history_group, print_history_group_sync\n"},"line_number":10,"absolute_offset":205,"submatches":[{"match":{"text":"_print"},"start":38,"end":44}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_printer.py"},"lines":{"text":"    history_printer 必须把\"连续 assistant entries\"识别为同一条逻辑 message——\n"},"line_number":129,"absolute_offset":5256,"submatches":[{"match":{"text":"_print"},"start":11,"end":17}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_printer.py"},"lines":{"text":"    assume_run_continues_at_tail=True 让 history_printer 把 batch 末尾的 assistant\n"},"line_number":311,"absolute_offset":14185,"submatches":[{"match":{"text":"_print"},"start":49,"end":55}]}}
{"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":62912,"human":"0.000063s"},"searches":1,"searches_with_match":1,"bytes_searched":24156,"bytes_printed":1151,"matched_lines":3,"matches":3}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_args.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"lines":{"text":"    def test_parse_args_print_with_prompt(self) -> None:\n"},"line_number":48,"absolute_offset":1857,"submatches":[{"match":{"text":"_print"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"lines":{"text":"    def test_parse_args_print_long_flag(self) -> None:\n"},"line_number":57,"absolute_offset":2239,"submatches":[{"match":{"text":"_print"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"lines":{"text":"    def test_parse_args_print_without_prompt(self) -> None:\n"},"line_number":61,"absolute_offset":2421,"submatches":[{"match":{"text":"_print"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"lines":{"text":"    def test_parse_args_print_treats_positionals_as_prompt(self) -> None:\n"},"line_number":65,"absolute_offset":2589,"submatches":[{"match":{"text":"_print"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"lines":{"text":"    def test_parse_args_print_rejects_rpc_stdio(self) -> None:\n"},"line_number":70,"absolute_offset":2865,"submatches":[{"match":{"text":"_print"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"lines":{"text":"    def test_parse_args_print_absorbs_all_positionals(self) -> None:\n"},"line_number":74,"absolute_offset":3057,"submatches":[{"match":{"text":"_print"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"lines":{"text":"    def test_main_print_mode_empty_input_exits(self) -> None:\n"},"line_number":79,"absolute_offset":3337,"submatches":[{"match":{"text":"_print"},"start":17,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"lines":{"text":"    def test_main_print_mode_stdin_pipe_assembly(self) -> None:\n"},"line_number":87,"absolute_offset":3709,"submatches":[{"match":{"text":"_print"},"start":17,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"lines":{"text":"    def test_main_print_mode_stdin_only(self) -> None:\n"},"line_number":98,"absolute_offset":4268,"submatches":[{"match":{"text":"_print"},"start":17,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"lines":{"text":"    def test_main_print_mode_passes_message_to_run(self) -> None:\n"},"line_number":109,"absolute_offset":4773,"submatches":[{"match":{"text":"_print"},"start":17,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"lines":{"text":"    def test_main_help_prints_usage_without_starting_app(self) -> None:\n"},"line_number":122,"absolute_offset":5434,"submatches":[{"match":{"text":"_print"},"start":22,"end":28}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"lines":{"text":"    def test_main_short_help_prints_usage_without_starting_app(self) -> None:\n"},"line_number":130,"absolute_offset":5702,"submatches":[{"match":{"text":"_print"},"start":28,"end":34}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":39525,"human":"0.000040s"},"searches":1,"searches_with_match":1,"bytes_searched":6254,"bytes_printed":3787,"matched_lines":12,"matches":12}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"from prompt_toolkit.application import Application, run_in_terminal\n"},"line_number":17,"absolute_offset":336,"submatches":[{"match":{"text":"run_in_terminal"},"start":52,"end":67}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        self._printed_history_index = 0\n"},"line_number":237,"absolute_offset":8528,"submatches":[{"match":{"text":"_print"},"start":13,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        # 拆成 N 条 entry，跨 drain 时需要用这个 seed 让 history_printer 把 run 续上\n"},"line_number":239,"absolute_offset":8674,"submatches":[{"match":{"text":"_print"},"start":76,"end":82}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                    run_in_terminal(_write, in_executor=False)\n"},"line_number":619,"absolute_offset":25426,"submatches":[{"match":{"text":"run_in_terminal"},"start":20,"end":35}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":100969,"human":"0.000101s"},"searches":1,"searches_with_match":1,"bytes_searched":72168,"bytes_printed":1418,"matched_lines":4,"matches":4}}}
{"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":"from comate_cli.terminal_agent.history_printer import (\n"},"line_number":10,"absolute_offset":273,"submatches":[{"match":{"text":"_print"},"start":38,"end":44}]}}
{"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":35478,"human":"0.000035s"},"searches":1,"searches_with_match":1,"bytes_searched":7468,"bytes_printed":433,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"        _print_preflight_block_message(console=console, check=check)\n"},"line_number":116,"absolute_offset":3390,"submatches":[{"match":{"text":"_print"},"start":8,"end":14}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"def _print_preflight_block_message(*, console: Console, check: PreflightCheckResult) -> None:\n"},"line_number":189,"absolute_offset":6362,"submatches":[{"match":{"text":"_print"},"start":4,"end":10}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":63340,"human":"0.000063s"},"searches":1,"searches_with_match":1,"bytes_searched":26819,"bytes_printed":807,"matched_lines":2,"matches":2}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_logo.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_logo.py"},"lines":{"text":"    def test_print_logo_directory_uses_tilde_for_home(self, _mock_home: object) -> None:\n"},"line_number":27,"absolute_offset":758,"submatches":[{"match":{"text":"_print"},"start":12,"end":18}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_logo.py"},"lines":{"text":"    def test_print_logo_directory_uses_absolute_path_when_not_home(\n"},"line_number":33,"absolute_offset":1082,"submatches":[{"match":{"text":"_print"},"start":12,"end":18}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_logo.py"},"lines":{"text":"    def test_print_logo_removes_product_grade_copy(self, _mock_home: object) -> None:\n"},"line_number":41,"absolute_offset":1465,"submatches":[{"match":{"text":"_print"},"start":12,"end":18}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_logo.py"},"lines":{"text":"    def test_print_logo_accepts_str_project_root(self, _mock_home: object) -> None:\n"},"line_number":46,"absolute_offset":1773,"submatches":[{"match":{"text":"_print"},"start":12,"end":18}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_logo.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":44696,"human":"0.000045s"},"searches":1,"searches_with_match":1,"bytes_searched":2357,"bytes_printed":1382,"matched_lines":4,"matches":4}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_update_check.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_update_check.py"},"lines":{"text":"    async def test_run_prints_update_hint(self) -> None:\n"},"line_number":89,"absolute_offset":2937,"submatches":[{"match":{"text":"_print"},"start":22,"end":28}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_update_check.py"},"lines":{"text":"            patch.object(app_module.console, \"print\") as mock_console_print,\n"},"line_number":124,"absolute_offset":4542,"submatches":[{"match":{"text":"_print"},"start":69,"end":75}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_update_check.py"},"lines":{"text":"                for call in mock_console_print.call_args_list\n"},"line_number":132,"absolute_offset":4849,"submatches":[{"match":{"text":"_print"},"start":40,"end":46}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_update_check.py"},"lines":{"text":"            mock_console_print.call_args_list,\n"},"line_number":135,"absolute_offset":4955,"submatches":[{"match":{"text":"_print"},"start":24,"end":30}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_update_check.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":35092,"human":"0.000035s"},"searches":1,"searches_with_match":1,"bytes_searched":7625,"bytes_printed":1344,"matched_lines":4,"matches":4}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/markdown_render.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/markdown_render.py"},"lines":{"text":"        # 段间空行由 history_printer 统一管理，不能让此处暗中泄露到调用方。\n"},"line_number":22,"absolute_offset":642,"submatches":[{"match":{"text":"_print"},"start":33,"end":39}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/markdown_render.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":15586,"human":"0.000016s"},"searches":1,"searches_with_match":1,"bytes_searched":858,"bytes_printed":499,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tui_team_messages.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tui_team_messages.py"},"lines":{"text":"def test_team_message_callback_does_not_wrap_run_in_terminal_with_background_task() -> None:\n"},"line_number":71,"absolute_offset":1725,"submatches":[{"match":{"text":"run_in_terminal"},"start":45,"end":60}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tui_team_messages.py"},"lines":{"text":"    def _run_in_terminal_now(func, render_cli_done=False, in_executor=False):  # type: ignore[no-untyped-def]\n"},"line_number":81,"absolute_offset":2115,"submatches":[{"match":{"text":"run_in_terminal"},"start":9,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tui_team_messages.py"},"lines":{"text":"        patch(\"comate_cli.terminal_agent.tui.run_in_terminal\", side_effect=_run_in_terminal_now),\n"},"line_number":94,"absolute_offset":2695,"submatches":[{"match":{"text":"run_in_terminal"},"start":45,"end":60},{"match":{"text":"run_in_terminal"},"start":76,"end":91}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tui_team_messages.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":30646,"human":"0.000031s"},"searches":1,"searches_with_match":1,"bytes_searched":3639,"bytes_printed":1258,"matched_lines":3,"matches":4}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/app.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/app.py"},"lines":{"text":"async def _run_print_mode(\n"},"line_number":266,"absolute_offset":8570,"submatches":[{"match":{"text":"_print"},"start":14,"end":20}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/app.py"},"lines":{"text":"        await _run_print_mode(agent, print_message, project_root=project_root)\n"},"line_number":355,"absolute_offset":11588,"submatches":[{"match":{"text":"_print"},"start":18,"end":24}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/app.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":31315,"human":"0.000031s"},"searches":1,"searches_with_match":1,"bytes_searched":14618,"bytes_printed":735,"matched_lines":2,"matches":2}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/event_renderer.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/event_renderer.py"},"lines":{"text":"        rich.Markdown 在 history_printer 里把整段渲染为 syntax-highlighted\n"},"line_number":416,"absolute_offset":15079,"submatches":[{"match":{"text":"_print"},"start":33,"end":39}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/event_renderer.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":96932,"human":"0.000097s"},"searches":1,"searches_with_match":1,"bytes_searched":64645,"bytes_printed":483,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/history_sync.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/history_sync.py"},"lines":{"text":"from prompt_toolkit.application import run_in_terminal\n"},"line_number":8,"absolute_offset":111,"submatches":[{"match":{"text":"run_in_terminal"},"start":39,"end":54}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/history_sync.py"},"lines":{"text":"from comate_cli.terminal_agent.history_printer import (\n"},"line_number":15,"absolute_offset":404,"submatches":[{"match":{"text":"_print"},"start":38,"end":44}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/history_sync.py"},"lines":{"text":"    # message 拆成 N 条 entry，需要 seed 让 history_printer 把 run 续上）。class-level\n"},"line_number":31,"absolute_offset":1064,"submatches":[{"match":{"text":"_print"},"start":58,"end":64}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/history_sync.py"},"lines":{"text":"        self._printed_history_index = 0\n"},"line_number":39,"absolute_offset":1526,"submatches":[{"match":{"text":"_print"},"start":13,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/history_sync.py"},"lines":{"text":"        def _clear_and_print_logo() -> None:\n"},"line_number":43,"absolute_offset":1675,"submatches":[{"match":{"text":"_print"},"start":22,"end":28}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/history_sync.py"},"lines":{"text":"            await run_in_terminal(_clear_and_print_logo, in_executor=True)\n"},"line_number":56,"absolute_offset":2156,"submatches":[{"match":{"text":"run_in_terminal"},"start":18,"end":33},{"match":{"text":"_print"},"start":44,"end":50}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/history_sync.py"},"lines":{"text":"                self._printed_history_index,\n"},"line_number":282,"absolute_offset":12062,"submatches":[{"match":{"text":"_print"},"start":21,"end":27}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/history_sync.py"},"lines":{"text":"        def _print() -> None:\n"},"line_number":306,"absolute_offset":13013,"submatches":[{"match":{"text":"_print"},"start":12,"end":18}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/history_sync.py"},"lines":{"text":"        await run_in_terminal(_print, in_executor=True)\n"},"line_number":316,"absolute_offset":13346,"submatches":[{"match":{"text":"run_in_terminal"},"start":14,"end":29},{"match":{"text":"_print"},"start":30,"end":36}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/history_sync.py"},"lines":{"text":"                self._printed_history_index,\n"},"line_number":334,"absolute_offset":14051,"submatches":[{"match":{"text":"_print"},"start":21,"end":27}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/history_sync.py"},"lines":{"text":"        if self._printed_history_index >= len(entries):\n"},"line_number":361,"absolute_offset":15163,"submatches":[{"match":{"text":"_print"},"start":16,"end":22}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/history_sync.py"},"lines":{"text":"        previous_index = self._printed_history_index\n"},"line_number":363,"absolute_offset":15241,"submatches":[{"match":{"text":"_print"},"start":30,"end":36}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/history_sync.py"},"lines":{"text":"        pending = entries[self._printed_history_index :]\n"},"line_number":364,"absolute_offset":15294,"submatches":[{"match":{"text":"_print"},"start":31,"end":37}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/history_sync.py"},"lines":{"text":"        self._printed_history_index = len(entries)\n"},"line_number":365,"absolute_offset":15351,"submatches":[{"match":{"text":"_print"},"start":13,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/history_sync.py"},"lines":{"text":"                self._printed_history_index,\n"},"line_number":377,"absolute_offset":15892,"submatches":[{"match":{"text":"_print"},"start":21,"end":27}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/history_sync.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":105478,"human":"0.000105s"},"searches":1,"searches_with_match":1,"bytes_searched":16223,"bytes_printed":5126,"matched_lines":15,"matches":17}}}
{"data":{"elapsed_total":{"human":"0.013703s","nanos":13703219,"secs":0},"stats":{"bytes_printed":26019,"bytes_searched":288830,"elapsed":{"human":"0.000912s","nanos":911709,"secs":0},"matched_lines":74,"matches":77,"searches":17,"searches_with_match":17}},"type":"summary"}
