{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/CONTEXT.md"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/CONTEXT.md"},"lines":{"text":"been flushed. A daemon watchdog enforces it with non-zero hard exit; later cleanup cannot\n"},"line_number":79,"absolute_offset":5122,"submatches":[{"match":{"text":"watchdog"},"start":23,"end":31}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/CONTEXT.md"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":31658,"human":"0.000032s"},"searches":1,"searches_with_match":1,"bytes_searched":9276,"bytes_printed":424,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/CHANGELOG.md"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/CHANGELOG.md"},"lines":{"text":"  文本/JSON 先 flush，再启动固定 10 秒 daemon watchdog；Windows/POSIX 均忽略\n"},"line_number":20,"absolute_offset":910,"submatches":[{"match":{"text":"watchdog"},"start":56,"end":64}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/CHANGELOG.md"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":20831,"human":"0.000021s"},"searches":1,"searches_with_match":1,"bytes_searched":12946,"bytes_printed":428,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/main.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/main.py"},"lines":{"text":"from comate_cli.terminal_agent.exit_watchdog import ExitWatchdog\n"},"line_number":15,"absolute_offset":222,"submatches":[{"match":{"text":"exit_watchdog"},"start":31,"end":44}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/main.py"},"lines":{"text":"    exit_watchdog = None if rpc_stdio else ExitWatchdog()\n"},"line_number":559,"absolute_offset":18136,"submatches":[{"match":{"text":"exit_watchdog"},"start":4,"end":17}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/main.py"},"lines":{"text":"                        exit_watchdog=exit_watchdog,\n"},"line_number":597,"absolute_offset":19652,"submatches":[{"match":{"text":"exit_watchdog"},"start":24,"end":37},{"match":{"text":"exit_watchdog"},"start":38,"end":51}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/main.py"},"lines":{"text":"        if runner_closed and exit_watchdog is not None:\n"},"line_number":609,"absolute_offset":20046,"submatches":[{"match":{"text":"exit_watchdog"},"start":29,"end":42}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/main.py"},"lines":{"text":"            exit_watchdog.disarm()\n"},"line_number":610,"absolute_offset":20102,"submatches":[{"match":{"text":"exit_watchdog"},"start":12,"end":25}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/main.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":33208,"human":"0.000033s"},"searches":1,"searches_with_match":1,"bytes_searched":20177,"bytes_printed":1655,"matched_lines":5,"matches":6}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/fixtures/exit_watchdog_child.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/fixtures/exit_watchdog_child.py"},"lines":{"text":"from comate_cli.terminal_agent.exit_watchdog import ExitWatchdog\n"},"line_number":11,"absolute_offset":152,"submatches":[{"match":{"text":"exit_watchdog"},"start":31,"end":44}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/fixtures/exit_watchdog_child.py"},"lines":{"text":"    watchdog = ExitWatchdog(timeout_s=0.2)\n"},"line_number":26,"absolute_offset":505,"submatches":[{"match":{"text":"watchdog"},"start":4,"end":12}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/fixtures/exit_watchdog_child.py"},"lines":{"text":"    watchdog.arm()\n"},"line_number":29,"absolute_offset":618,"submatches":[{"match":{"text":"watchdog"},"start":4,"end":12}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/fixtures/exit_watchdog_child.py"},"lines":{"text":"    watchdog = ExitWatchdog(timeout_s=0.2)\n"},"line_number":44,"absolute_offset":1031,"submatches":[{"match":{"text":"watchdog"},"start":4,"end":12}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/fixtures/exit_watchdog_child.py"},"lines":{"text":"    watchdog.arm()\n"},"line_number":47,"absolute_offset":1147,"submatches":[{"match":{"text":"watchdog"},"start":4,"end":12}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/fixtures/exit_watchdog_child.py"},"lines":{"text":"        exit_watchdog=watchdog,\n"},"line_number":54,"absolute_offset":1353,"submatches":[{"match":{"text":"exit_watchdog"},"start":8,"end":21},{"match":{"text":"watchdog"},"start":22,"end":30}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/fixtures/exit_watchdog_child.py"},"lines":{"text":"        watchdog = kwargs[\"exit_watchdog\"]\n"},"line_number":68,"absolute_offset":1723,"submatches":[{"match":{"text":"watchdog"},"start":8,"end":16},{"match":{"text":"exit_watchdog"},"start":27,"end":40}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/fixtures/exit_watchdog_child.py"},"lines":{"text":"        watchdog.arm()\n"},"line_number":71,"absolute_offset":1842,"submatches":[{"match":{"text":"watchdog"},"start":8,"end":16}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/fixtures/exit_watchdog_child.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":28228,"human":"0.000028s"},"searches":1,"searches_with_match":1,"bytes_searched":2672,"bytes_printed":2581,"matched_lines":8,"matches":10}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_exit_lifecycle.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_exit_lifecycle.py"},"lines":{"text":"    watchdog = SimpleNamespace(remaining_s=lambda: next(remaining))\n"},"line_number":103,"absolute_offset":2492,"submatches":[{"match":{"text":"watchdog"},"start":4,"end":12}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_exit_lifecycle.py"},"lines":{"text":"            exit_watchdog=watchdog,\n"},"line_number":126,"absolute_offset":3303,"submatches":[{"match":{"text":"exit_watchdog"},"start":12,"end":25},{"match":{"text":"watchdog"},"start":26,"end":34}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_exit_lifecycle.py"},"lines":{"text":"async def test_tui_exit_summary_is_flushed_before_watchdog_and_cleanup(\n"},"line_number":167,"absolute_offset":4435,"submatches":[{"match":{"text":"watchdog"},"start":50,"end":58}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_exit_lifecycle.py"},"lines":{"text":"            events.append(\"watchdog_arm\")\n"},"line_number":184,"absolute_offset":4864,"submatches":[{"match":{"text":"watchdog"},"start":27,"end":35}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_exit_lifecycle.py"},"lines":{"text":"        exit_watchdog=_Watchdog(),\n"},"line_number":229,"absolute_offset":6237,"submatches":[{"match":{"text":"exit_watchdog"},"start":8,"end":21}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_exit_lifecycle.py"},"lines":{"text":"    assert events.index(\"summary_flush\") < events.index(\"watchdog_arm\")\n"},"line_number":232,"absolute_offset":6279,"submatches":[{"match":{"text":"watchdog"},"start":57,"end":65}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_exit_lifecycle.py"},"lines":{"text":"    assert events.index(\"watchdog_arm\") < events.index(\"tui_shutdown\")\n"},"line_number":233,"absolute_offset":6351,"submatches":[{"match":{"text":"watchdog"},"start":25,"end":33}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_exit_lifecycle.py"},"lines":{"text":"    assert events.index(\"watchdog_arm\") < events.index(\"graceful_shutdown\")\n"},"line_number":234,"absolute_offset":6422,"submatches":[{"match":{"text":"watchdog"},"start":25,"end":33}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_exit_lifecycle.py"},"lines":{"text":"        exit_watchdog=_FakeArmedWatchdog(remaining=10.0),\n"},"line_number":260,"absolute_offset":7484,"submatches":[{"match":{"text":"exit_watchdog"},"start":8,"end":21}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_exit_lifecycle.py"},"lines":{"text":"        exit_watchdog=_FakeArmedWatchdog(remaining=10.0),\n"},"line_number":318,"absolute_offset":9480,"submatches":[{"match":{"text":"exit_watchdog"},"start":8,"end":21}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_exit_lifecycle.py"},"lines":{"text":"        assert watchdog.arm_calls == 1\n"},"line_number":352,"absolute_offset":10634,"submatches":[{"match":{"text":"watchdog"},"start":15,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_exit_lifecycle.py"},"lines":{"text":"    watchdog = _FakeArmedWatchdog(remaining=1.0)\n"},"line_number":420,"absolute_offset":12675,"submatches":[{"match":{"text":"watchdog"},"start":4,"end":12}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_exit_lifecycle.py"},"lines":{"text":"            exit_watchdog=watchdog,\n"},"line_number":452,"absolute_offset":13883,"submatches":[{"match":{"text":"exit_watchdog"},"start":12,"end":25},{"match":{"text":"watchdog"},"start":26,"end":34}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_exit_lifecycle.py"},"lines":{"text":"        exit_watchdog=_Deadline(),\n"},"line_number":561,"absolute_offset":17182,"submatches":[{"match":{"text":"exit_watchdog"},"start":8,"end":21}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_exit_lifecycle.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":54186,"human":"0.000054s"},"searches":1,"searches_with_match":1,"bytes_searched":17457,"bytes_printed":4557,"matched_lines":14,"matches":16}}}
{"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":"        self._events.append(\"watchdog_arm\")\n"},"line_number":34,"absolute_offset":852,"submatches":[{"match":{"text":"watchdog"},"start":29,"end":37}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"                    exit_watchdog=_RecordingWatchdog(events),\n"},"line_number":72,"absolute_offset":2318,"submatches":[{"match":{"text":"exit_watchdog"},"start":20,"end":33}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"        self.assertLess(events.index(\"output_flush\"), events.index(\"watchdog_arm\"))\n"},"line_number":76,"absolute_offset":2464,"submatches":[{"match":{"text":"watchdog"},"start":68,"end":76}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"            events.index(\"watchdog_arm\"),\n"},"line_number":78,"absolute_offset":2573,"submatches":[{"match":{"text":"watchdog"},"start":26,"end":34}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"                    exit_watchdog=_RecordingWatchdog(events),\n"},"line_number":172,"absolute_offset":6426,"submatches":[{"match":{"text":"exit_watchdog"},"start":20,"end":33}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"        self.assertLess(events.index(\"output_flush\"), events.index(\"watchdog_arm\"))\n"},"line_number":189,"absolute_offset":7262,"submatches":[{"match":{"text":"watchdog"},"start":68,"end":76}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"            events.index(\"watchdog_arm\"),\n"},"line_number":191,"absolute_offset":7371,"submatches":[{"match":{"text":"watchdog"},"start":26,"end":34}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"                        exit_watchdog=_RecordingWatchdog(events),\n"},"line_number":298,"absolute_offset":12055,"submatches":[{"match":{"text":"exit_watchdog"},"start":24,"end":37}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"        self.assertLess(events.index(\"output_flush\"), events.index(\"watchdog_arm\"))\n"},"line_number":304,"absolute_offset":12333,"submatches":[{"match":{"text":"watchdog"},"start":68,"end":76}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"            events.index(\"watchdog_arm\"),\n"},"line_number":306,"absolute_offset":12442,"submatches":[{"match":{"text":"watchdog"},"start":26,"end":34}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"                            exit_watchdog=_RecordingWatchdog(events),\n"},"line_number":344,"absolute_offset":13938,"submatches":[{"match":{"text":"exit_watchdog"},"start":28,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"            [\"output_flush\", \"watchdog_arm\", \"graceful_shutdown\"],\n"},"line_number":350,"absolute_offset":14103,"submatches":[{"match":{"text":"watchdog"},"start":30,"end":38}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"                            exit_watchdog=_RecordingWatchdog(events),\n"},"line_number":382,"absolute_offset":15384,"submatches":[{"match":{"text":"exit_watchdog"},"start":28,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"            [\"output_flush\", \"watchdog_arm\", \"graceful_shutdown\"],\n"},"line_number":388,"absolute_offset":15549,"submatches":[{"match":{"text":"watchdog"},"start":30,"end":38}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"                            exit_watchdog=_RecordingWatchdog(events),\n"},"line_number":422,"absolute_offset":16950,"submatches":[{"match":{"text":"exit_watchdog"},"start":28,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"            [\"output_flush\", \"watchdog_arm\", \"graceful_shutdown\"],\n"},"line_number":430,"absolute_offset":17220,"submatches":[{"match":{"text":"watchdog"},"start":30,"end":38}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"                            exit_watchdog=_RecordingWatchdog(events),\n"},"line_number":472,"absolute_offset":18899,"submatches":[{"match":{"text":"exit_watchdog"},"start":28,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"            [\"output_flush\", \"watchdog_arm\", \"graceful_shutdown\"],\n"},"line_number":483,"absolute_offset":19249,"submatches":[{"match":{"text":"watchdog"},"start":30,"end":38}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"                            exit_watchdog=_RecordingWatchdog(events),\n"},"line_number":529,"absolute_offset":21065,"submatches":[{"match":{"text":"exit_watchdog"},"start":28,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"            [\"output_flush\", \"watchdog_arm\", \"graceful_shutdown\"],\n"},"line_number":541,"absolute_offset":21592,"submatches":[{"match":{"text":"watchdog"},"start":30,"end":38}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"                            exit_watchdog=_RecordingWatchdog(events),\n"},"line_number":582,"absolute_offset":23286,"submatches":[{"match":{"text":"exit_watchdog"},"start":28,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"            [\"output_flush\", \"watchdog_arm\", \"graceful_shutdown\"],\n"},"line_number":590,"absolute_offset":23582,"submatches":[{"match":{"text":"watchdog"},"start":30,"end":38}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"                            exit_watchdog=_RecordingWatchdog(events),\n"},"line_number":686,"absolute_offset":26877,"submatches":[{"match":{"text":"exit_watchdog"},"start":28,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"            [\"output_flush\", \"watchdog_arm\", \"graceful_shutdown\"],\n"},"line_number":693,"absolute_offset":27090,"submatches":[{"match":{"text":"watchdog"},"start":30,"end":38}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"                            exit_watchdog=_RecordingWatchdog(events),\n"},"line_number":726,"absolute_offset":28394,"submatches":[{"match":{"text":"exit_watchdog"},"start":28,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"            [\"output_flush\", \"watchdog_arm\", \"graceful_shutdown\"],\n"},"line_number":734,"absolute_offset":28656,"submatches":[{"match":{"text":"watchdog"},"start":30,"end":38}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"                            exit_watchdog=_RecordingWatchdog(events),\n"},"line_number":779,"absolute_offset":30364,"submatches":[{"match":{"text":"exit_watchdog"},"start":28,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"            [\"output_flush\", \"watchdog_arm\", \"graceful_shutdown\"],\n"},"line_number":785,"absolute_offset":30529,"submatches":[{"match":{"text":"watchdog"},"start":30,"end":38}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"    watchdog = object()\n"},"line_number":903,"absolute_offset":35331,"submatches":[{"match":{"text":"watchdog"},"start":4,"end":12}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"            exit_watchdog=watchdog,\n"},"line_number":934,"absolute_offset":36518,"submatches":[{"match":{"text":"exit_watchdog"},"start":12,"end":25},{"match":{"text":"watchdog"},"start":26,"end":34}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_print_mode.py"},"lines":{"text":"    assert run_print_mode.await_args.kwargs[\"exit_watchdog\"] is watchdog\n"},"line_number":938,"absolute_offset":36612,"submatches":[{"match":{"text":"exit_watchdog"},"start":45,"end":58},{"match":{"text":"watchdog"},"start":64,"end":72}]}}
{"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":101316,"human":"0.000101s"},"searches":1,"searches_with_match":1,"bytes_searched":38799,"bytes_printed":10083,"matched_lines":31,"matches":33}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_shutdown.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_shutdown.py"},"lines":{"text":"                call_log.append(\"watchdog_arm\")\n"},"line_number":86,"absolute_offset":2908,"submatches":[{"match":{"text":"watchdog"},"start":33,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_shutdown.py"},"lines":{"text":"        watchdog = _Watchdog()\n"},"line_number":92,"absolute_offset":3058,"submatches":[{"match":{"text":"watchdog"},"start":8,"end":16}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_shutdown.py"},"lines":{"text":"            await app_module.run(profile=profile, exit_watchdog=watchdog)\n"},"line_number":220,"absolute_offset":7926,"submatches":[{"match":{"text":"exit_watchdog"},"start":50,"end":63},{"match":{"text":"watchdog"},"start":64,"end":72}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_shutdown.py"},"lines":{"text":"                \"watchdog_arm\",\n"},"line_number":227,"absolute_offset":8123,"submatches":[{"match":{"text":"watchdog"},"start":17,"end":25}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_shutdown.py"},"lines":{"text":"                exit_watchdog=SimpleNamespace(remaining_s=lambda: 8.0),\n"},"line_number":504,"absolute_offset":19057,"submatches":[{"match":{"text":"exit_watchdog"},"start":16,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_shutdown.py"},"lines":{"text":"                exit_watchdog=SimpleNamespace(remaining_s=lambda: 8.0),\n"},"line_number":521,"absolute_offset":19756,"submatches":[{"match":{"text":"exit_watchdog"},"start":16,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_shutdown.py"},"lines":{"text":"                exit_watchdog=SimpleNamespace(remaining_s=lambda: 0.05),\n"},"line_number":578,"absolute_offset":21900,"submatches":[{"match":{"text":"exit_watchdog"},"start":16,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_shutdown.py"},"lines":{"text":"    async def test_exit_epilogue_orders_flush_watchdog_cleanup_and_logging_close(\n"},"line_number":687,"absolute_offset":26225,"submatches":[{"match":{"text":"watchdog"},"start":46,"end":54}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_shutdown.py"},"lines":{"text":"                call_log.append(\"watchdog_arm\")\n"},"line_number":700,"absolute_offset":26815,"submatches":[{"match":{"text":"watchdog"},"start":33,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_shutdown.py"},"lines":{"text":"            await app_module.run(exit_watchdog=_Watchdog())\n"},"line_number":715,"absolute_offset":27323,"submatches":[{"match":{"text":"exit_watchdog"},"start":33,"end":46}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_shutdown.py"},"lines":{"text":"                \"watchdog_arm\",\n"},"line_number":723,"absolute_offset":27529,"submatches":[{"match":{"text":"watchdog"},"start":17,"end":25}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_shutdown.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":39626,"human":"0.000040s"},"searches":1,"searches_with_match":1,"bytes_searched":27748,"bytes_printed":3548,"matched_lines":11,"matches":12}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_backend_session_report.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_backend_session_report.py"},"lines":{"text":"async def test_finalize_local_freezes_event_updates_before_snapshot_await(\n"},"line_number":672,"absolute_offset":21835,"submatches":[{"match":{"text":"freeze"},"start":30,"end":36}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_backend_session_report.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":35145,"human":"0.000035s"},"searches":1,"searches_with_match":1,"bytes_searched":42094,"bytes_printed":461,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tui_send_undo_window.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tui_send_undo_window.py"},"lines":{"text":"    def test_ui_tick_logs_event_loop_lag_while_busy(self) -> None:\n"},"line_number":555,"absolute_offset":19469,"submatches":[{"match":{"text":"event_loop_lag"},"start":26,"end":40}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tui_send_undo_window.py"},"lines":{"text":"            any(\"TUI event loop lag detected\" in message for message in logs.output),\n"},"line_number":584,"absolute_offset":20560,"submatches":[{"match":{"text":"event loop lag"},"start":21,"end":35}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tui_send_undo_window.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":40283,"human":"0.000040s"},"searches":1,"searches_with_match":1,"bytes_searched":29997,"bytes_printed":807,"matched_lines":2,"matches":2}}}
{"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_main_owns_one_watchdog_until_terminal_restore_finishes(self) -> None:\n"},"line_number":15,"absolute_offset":315,"submatches":[{"match":{"text":"watchdog"},"start":27,"end":35}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"lines":{"text":"        watchdog = MagicMock()\n"},"line_number":17,"absolute_offset":429,"submatches":[{"match":{"text":"watchdog"},"start":8,"end":16}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"lines":{"text":"        watchdog.disarm.side_effect = lambda: events.append(\"watchdog_disarm\")\n"},"line_number":18,"absolute_offset":460,"submatches":[{"match":{"text":"watchdog"},"start":8,"end":16},{"match":{"text":"watchdog"},"start":61,"end":69}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"lines":{"text":"            patch.object(main_module, \"ExitWatchdog\", return_value=watchdog) as watchdog_cls,\n"},"line_number":42,"absolute_offset":1252,"submatches":[{"match":{"text":"watchdog"},"start":67,"end":75},{"match":{"text":"watchdog"},"start":80,"end":88}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"lines":{"text":"        watchdog_cls.assert_called_once_with()\n"},"line_number":65,"absolute_offset":2408,"submatches":[{"match":{"text":"watchdog"},"start":8,"end":16}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"lines":{"text":"        self.assertIs(run.await_args.kwargs[\"exit_watchdog\"], watchdog)\n"},"line_number":66,"absolute_offset":2455,"submatches":[{"match":{"text":"exit_watchdog"},"start":45,"end":58},{"match":{"text":"watchdog"},"start":62,"end":70}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"lines":{"text":"            events.index(\"watchdog_disarm\"),\n"},"line_number":81,"absolute_offset":2977,"submatches":[{"match":{"text":"watchdog"},"start":26,"end":34}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"lines":{"text":"    def test_main_does_not_disarm_watchdog_when_runner_close_fails(self) -> None:\n"},"line_number":84,"absolute_offset":3033,"submatches":[{"match":{"text":"watchdog"},"start":34,"end":42}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"lines":{"text":"        watchdog = MagicMock()\n"},"line_number":85,"absolute_offset":3115,"submatches":[{"match":{"text":"watchdog"},"start":8,"end":16}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"lines":{"text":"            patch.object(main_module, \"ExitWatchdog\", return_value=watchdog),\n"},"line_number":106,"absolute_offset":3689,"submatches":[{"match":{"text":"watchdog"},"start":67,"end":75}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"lines":{"text":"        watchdog.disarm.assert_not_called()\n"},"line_number":123,"absolute_offset":4558,"submatches":[{"match":{"text":"watchdog"},"start":8,"end":16}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"lines":{"text":"    def test_main_rpc_stdio_does_not_create_a_watchdog(self) -> None:\n"},"line_number":125,"absolute_offset":4603,"submatches":[{"match":{"text":"watchdog"},"start":46,"end":54}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"lines":{"text":"            patch.object(main_module, \"ExitWatchdog\") as watchdog_cls,\n"},"line_number":128,"absolute_offset":4746,"submatches":[{"match":{"text":"watchdog"},"start":57,"end":65}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"lines":{"text":"        watchdog_cls.assert_not_called()\n"},"line_number":135,"absolute_offset":5086,"submatches":[{"match":{"text":"watchdog"},"start":8,"end":16}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"lines":{"text":"        self.assertIsNone(run.await_args.kwargs[\"exit_watchdog\"])\n"},"line_number":136,"absolute_offset":5127,"submatches":[{"match":{"text":"exit_watchdog"},"start":49,"end":62}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"lines":{"text":"    def test_app_run_accepts_optional_keyword_only_exit_watchdog(self) -> None:\n"},"line_number":465,"absolute_offset":18622,"submatches":[{"match":{"text":"exit_watchdog"},"start":51,"end":64}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"lines":{"text":"        parameter = inspect.signature(app.run).parameters[\"exit_watchdog\"]\n"},"line_number":470,"absolute_offset":18777,"submatches":[{"match":{"text":"exit_watchdog"},"start":59,"end":72}]}}
{"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":47015,"human":"0.000047s"},"searches":1,"searches_with_match":1,"bytes_searched":27203,"bytes_printed":5524,"matched_lines":17,"matches":20}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/exit_watchdog.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/exit_watchdog.py"},"lines":{"text":"                name=\"comate-exit-watchdog\",\n"},"line_number":48,"absolute_offset":1315,"submatches":[{"match":{"text":"watchdog"},"start":34,"end":42}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/exit_watchdog.py"},"lines":{"text":"        logger.info(\"Exit watchdog armed with %.3fs hard deadline\", self._timeout_s)\n"},"line_number":53,"absolute_offset":1437,"submatches":[{"match":{"text":"watchdog"},"start":26,"end":34}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/exit_watchdog.py"},"lines":{"text":"        logger.info(\"Exit watchdog disarmed\")\n"},"line_number":63,"absolute_offset":1766,"submatches":[{"match":{"text":"watchdog"},"start":26,"end":34}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/exit_watchdog.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":12481,"human":"0.000012s"},"searches":1,"searches_with_match":1,"bytes_searched":2834,"bytes_printed":1104,"matched_lines":3,"matches":3}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/print_mode.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/print_mode.py"},"lines":{"text":"    from comate_cli.terminal_agent.exit_watchdog import ExitWatchdog\n"},"line_number":17,"absolute_offset":376,"submatches":[{"match":{"text":"exit_watchdog"},"start":35,"end":48}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/print_mode.py"},"lines":{"text":"    exit_watchdog: \"ExitWatchdog | None\" = None,\n"},"line_number":198,"absolute_offset":6044,"submatches":[{"match":{"text":"exit_watchdog"},"start":4,"end":17}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/print_mode.py"},"lines":{"text":"                if exit_watchdog is not None:\n"},"line_number":258,"absolute_offset":8404,"submatches":[{"match":{"text":"exit_watchdog"},"start":19,"end":32}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/print_mode.py"},"lines":{"text":"                    exit_watchdog.arm()\n"},"line_number":259,"absolute_offset":8450,"submatches":[{"match":{"text":"exit_watchdog"},"start":20,"end":33}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/print_mode.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":23884,"human":"0.000024s"},"searches":1,"searches_with_match":1,"bytes_searched":8932,"bytes_printed":1396,"matched_lines":4,"matches":4}}}
{"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":"                \"description\": \"分析 watchdog 机制\",\n"},"line_number":410,"absolute_offset":14193,"submatches":[{"match":{"text":"watchdog"},"start":39,"end":47}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_formatters.py"},"lines":{"text":"        self.assertEqual(plain, \"Explorer(分析 watchdog 机制)\")\n"},"line_number":424,"absolute_offset":14746,"submatches":[{"match":{"text":"watchdog"},"start":49,"end":57}]}}
{"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":27318,"human":"0.000027s"},"searches":1,"searches_with_match":1,"bytes_searched":40456,"bytes_printed":777,"matched_lines":2,"matches":2}}}
{"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":"        self._first_turn_mark(\"ui_tick.event_loop_lag\")\n"},"line_number":2474,"absolute_offset":101865,"submatches":[{"match":{"text":"event_loop_lag"},"start":39,"end":53}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"            \"TUI event loop lag detected: gap_s=%.3f threshold_s=%.3f \"\n"},"line_number":2476,"absolute_offset":101942,"submatches":[{"match":{"text":"event loop lag"},"start":17,"end":31}]}}
{"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":87532,"human":"0.000088s"},"searches":1,"searches_with_match":1,"bytes_searched":131532,"bytes_printed":782,"matched_lines":2,"matches":2}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_exit_watchdog.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_exit_watchdog.py"},"lines":{"text":"from comate_cli.terminal_agent.exit_watchdog import ExitWatchdog\n"},"line_number":5,"absolute_offset":54,"submatches":[{"match":{"text":"exit_watchdog"},"start":31,"end":44}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_exit_watchdog.py"},"lines":{"text":"    watchdog = ExitWatchdog(timeout_s=10.0, monotonic=clock.monotonic)\n"},"line_number":18,"absolute_offset":370,"submatches":[{"match":{"text":"watchdog"},"start":4,"end":12}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_exit_watchdog.py"},"lines":{"text":"    assert watchdog.arm() is True\n"},"line_number":20,"absolute_offset":442,"submatches":[{"match":{"text":"watchdog"},"start":11,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_exit_watchdog.py"},"lines":{"text":"    assert watchdog.remaining_s() == 7.0\n"},"line_number":22,"absolute_offset":498,"submatches":[{"match":{"text":"watchdog"},"start":11,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_exit_watchdog.py"},"lines":{"text":"    assert watchdog.arm() is False\n"},"line_number":23,"absolute_offset":539,"submatches":[{"match":{"text":"watchdog"},"start":11,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_exit_watchdog.py"},"lines":{"text":"    assert watchdog.remaining_s() == 7.0\n"},"line_number":24,"absolute_offset":574,"submatches":[{"match":{"text":"watchdog"},"start":11,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_exit_watchdog.py"},"lines":{"text":"    assert watchdog.disarm() is True\n"},"line_number":25,"absolute_offset":615,"submatches":[{"match":{"text":"watchdog"},"start":11,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_exit_watchdog.py"},"lines":{"text":"    watchdog = ExitWatchdog(\n"},"line_number":30,"absolute_offset":743,"submatches":[{"match":{"text":"watchdog"},"start":4,"end":12}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_exit_watchdog.py"},"lines":{"text":"    assert watchdog.arm() is True\n"},"line_number":35,"absolute_offset":861,"submatches":[{"match":{"text":"watchdog"},"start":11,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_exit_watchdog.py"},"lines":{"text":"    assert watchdog.disarm() is True\n"},"line_number":36,"absolute_offset":895,"submatches":[{"match":{"text":"watchdog"},"start":11,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_exit_watchdog.py"},"lines":{"text":"    assert watchdog.disarm() is False\n"},"line_number":37,"absolute_offset":932,"submatches":[{"match":{"text":"watchdog"},"start":11,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_exit_watchdog.py"},"lines":{"text":"    watchdog = ExitWatchdog(timeout_s=0.03, force_exit=record_force_exit)\n"},"line_number":49,"absolute_offset":1270,"submatches":[{"match":{"text":"watchdog"},"start":4,"end":12}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_exit_watchdog.py"},"lines":{"text":"    assert watchdog.arm() is True\n"},"line_number":51,"absolute_offset":1345,"submatches":[{"match":{"text":"watchdog"},"start":11,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_exit_watchdog.py"},"lines":{"text":"    assert watchdog.disarm() is False\n"},"line_number":54,"absolute_offset":1455,"submatches":[{"match":{"text":"watchdog"},"start":11,"end":19}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_exit_watchdog.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":37262,"human":"0.000037s"},"searches":1,"searches_with_match":1,"bytes_searched":2214,"bytes_printed":4176,"matched_lines":14,"matches":14}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_profile_entry.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_profile_entry.py"},"lines":{"text":"    assert run.await_args.kwargs[\"exit_watchdog\"] is None\n"},"line_number":44,"absolute_offset":1169,"submatches":[{"match":{"text":"exit_watchdog"},"start":34,"end":47}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_main_profile_entry.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":14777,"human":"0.000015s"},"searches":1,"searches_with_match":1,"bytes_searched":1909,"bytes_printed":443,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_exit_watchdog_subprocess.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_exit_watchdog_subprocess.py"},"lines":{"text":"def test_watchdog_hard_exits_when_asyncio_run_final_gather_hangs() -> None:\n"},"line_number":13,"absolute_offset":141,"submatches":[{"match":{"text":"watchdog"},"start":9,"end":17}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_exit_watchdog_subprocess.py"},"lines":{"text":"    child = Path(__file__).parent / \"fixtures\" / \"exit_watchdog_child.py\"\n"},"line_number":14,"absolute_offset":217,"submatches":[{"match":{"text":"exit_watchdog"},"start":50,"end":63}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_exit_watchdog_subprocess.py"},"lines":{"text":"    child = Path(__file__).parent / \"fixtures\" / \"exit_watchdog_child.py\"\n"},"line_number":34,"absolute_offset":753,"submatches":[{"match":{"text":"exit_watchdog"},"start":50,"end":63}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_exit_watchdog_subprocess.py"},"lines":{"text":"def test_watchdog_survives_sigint_during_runner_close_with_stuck_executor(\n"},"line_number":55,"absolute_offset":1507,"submatches":[{"match":{"text":"watchdog"},"start":9,"end":17}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_exit_watchdog_subprocess.py"},"lines":{"text":"    child = Path(__file__).parent / \"fixtures\" / \"exit_watchdog_child.py\"\n"},"line_number":58,"absolute_offset":1613,"submatches":[{"match":{"text":"exit_watchdog"},"start":50,"end":63}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_exit_watchdog_subprocess.py"},"lines":{"text":"        \"SIGINT interrupted Runner.close and the disarmed watchdog left the \"\n"},"line_number":78,"absolute_offset":2250,"submatches":[{"match":{"text":"watchdog"},"start":58,"end":66}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_exit_watchdog_subprocess.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":23474,"human":"0.000023s"},"searches":1,"searches_with_match":1,"bytes_searched":2557,"bytes_printed":2155,"matched_lines":6,"matches":6}}}
{"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":"    from comate_cli.terminal_agent.exit_watchdog import ExitWatchdog\n"},"line_number":25,"absolute_offset":892,"submatches":[{"match":{"text":"exit_watchdog"},"start":35,"end":48}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/app.py"},"lines":{"text":"    exit_watchdog: ExitWatchdog | None = None,\n"},"line_number":482,"absolute_offset":15075,"submatches":[{"match":{"text":"exit_watchdog"},"start":4,"end":17}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/app.py"},"lines":{"text":"                exit_watchdog.remaining_s() if exit_watchdog is not None else None\n"},"line_number":501,"absolute_offset":15683,"submatches":[{"match":{"text":"exit_watchdog"},"start":16,"end":29},{"match":{"text":"exit_watchdog"},"start":47,"end":60}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/app.py"},"lines":{"text":"    exit_watchdog: \"ExitWatchdog | None\",\n"},"line_number":731,"absolute_offset":23952,"submatches":[{"match":{"text":"exit_watchdog"},"start":4,"end":17}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/app.py"},"lines":{"text":"    remaining_s = exit_watchdog.remaining_s() if exit_watchdog is not None else 0.0\n"},"line_number":736,"absolute_offset":24085,"submatches":[{"match":{"text":"exit_watchdog"},"start":18,"end":31},{"match":{"text":"exit_watchdog"},"start":49,"end":62}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/app.py"},"lines":{"text":"    exit_watchdog: \"ExitWatchdog | None\",\n"},"line_number":771,"absolute_offset":25382,"submatches":[{"match":{"text":"exit_watchdog"},"start":4,"end":17}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/app.py"},"lines":{"text":"        if exit_watchdog is not None:\n"},"line_number":810,"absolute_offset":26792,"submatches":[{"match":{"text":"exit_watchdog"},"start":11,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/app.py"},"lines":{"text":"            exit_watchdog.arm()\n"},"line_number":811,"absolute_offset":26830,"submatches":[{"match":{"text":"exit_watchdog"},"start":12,"end":25}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/app.py"},"lines":{"text":"            exit_watchdog=exit_watchdog,\n"},"line_number":842,"absolute_offset":27909,"submatches":[{"match":{"text":"exit_watchdog"},"start":12,"end":25},{"match":{"text":"exit_watchdog"},"start":26,"end":39}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/app.py"},"lines":{"text":"            exit_watchdog=exit_watchdog,\n"},"line_number":863,"absolute_offset":28668,"submatches":[{"match":{"text":"exit_watchdog"},"start":12,"end":25},{"match":{"text":"exit_watchdog"},"start":26,"end":39}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/app.py"},"lines":{"text":"    exit_watchdog: \"ExitWatchdog | None\",\n"},"line_number":931,"absolute_offset":30746,"submatches":[{"match":{"text":"exit_watchdog"},"start":4,"end":17}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/app.py"},"lines":{"text":"            exit_watchdog=exit_watchdog,\n"},"line_number":939,"absolute_offset":30996,"submatches":[{"match":{"text":"exit_watchdog"},"start":12,"end":25},{"match":{"text":"exit_watchdog"},"start":26,"end":39}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/app.py"},"lines":{"text":"        exit_watchdog=exit_watchdog,\n"},"line_number":950,"absolute_offset":31299,"submatches":[{"match":{"text":"exit_watchdog"},"start":8,"end":21},{"match":{"text":"exit_watchdog"},"start":22,"end":35}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/app.py"},"lines":{"text":"    exit_watchdog: \"ExitWatchdog | None\" = None,\n"},"line_number":1066,"absolute_offset":35286,"submatches":[{"match":{"text":"exit_watchdog"},"start":4,"end":17}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/app.py"},"lines":{"text":"            exit_watchdog=exit_watchdog,\n"},"line_number":1196,"absolute_offset":40543,"submatches":[{"match":{"text":"exit_watchdog"},"start":12,"end":25},{"match":{"text":"exit_watchdog"},"start":26,"end":39}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/app.py"},"lines":{"text":"            exit_watchdog=exit_watchdog,\n"},"line_number":1278,"absolute_offset":44022,"submatches":[{"match":{"text":"exit_watchdog"},"start":12,"end":25},{"match":{"text":"exit_watchdog"},"start":26,"end":39}]}}
{"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":64418,"human":"0.000064s"},"searches":1,"searches_with_match":1,"bytes_searched":45726,"bytes_printed":5482,"matched_lines":16,"matches":24}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_startup_profile.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_startup_profile.py"},"lines":{"text":"            patch.object(main_module, \"ExitWatchdog\", return_value=MagicMock()) as watchdog_cls,\n"},"line_number":498,"absolute_offset":19696,"submatches":[{"match":{"text":"watchdog"},"start":83,"end":91}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_startup_profile.py"},"lines":{"text":"        self.assertIs(call_kwargs[\"exit_watchdog\"], watchdog_cls.return_value)\n"},"line_number":518,"absolute_offset":20850,"submatches":[{"match":{"text":"exit_watchdog"},"start":35,"end":48},{"match":{"text":"watchdog"},"start":52,"end":60}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_startup_profile.py"},"lines":{"text":"        watchdog_cls.return_value.disarm.assert_called_once_with()\n"},"line_number":519,"absolute_offset":20929,"submatches":[{"match":{"text":"watchdog"},"start":8,"end":16}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_startup_profile.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":19942,"human":"0.000020s"},"searches":1,"searches_with_match":1,"bytes_searched":21056,"bytes_printed":1177,"matched_lines":3,"matches":4}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/jobs_picker.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/jobs_picker.py"},"lines":{"text":"                self._status_message = \"Kill requested; waiting for watchdog to settle.\"\n"},"line_number":432,"absolute_offset":15265,"submatches":[{"match":{"text":"watchdog"},"start":68,"end":76}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/jobs_picker.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":14191,"human":"0.000014s"},"searches":1,"searches_with_match":1,"bytes_searched":17184,"bytes_printed":487,"matched_lines":1,"matches":1}}}
{"data":{"elapsed_total":{"human":"0.008706s","nanos":8705818,"secs":0},"stats":{"bytes_printed":48047,"bytes_searched":502769,"elapsed":{"human":"0.000757s","nanos":756775,"secs":0},"matched_lines":143,"matches":163,"searches":20,"searches_with_match":20}},"type":"summary"}
