{"type":"begin","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/main.py"}}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/main.py"},"lines":{"text":"class _TerminalStateGuard:\n"},"line_number":42,"absolute_offset":1098,"submatches":[{"match":{"text":"Guard"},"start":20,"end":25}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/main.py"},"lines":{"text":"    \"\"\"Best-effort tty restore guard for abnormal shutdown paths.\"\"\"\n"},"line_number":43,"absolute_offset":1125,"submatches":[{"match":{"text":"guard"},"start":31,"end":36}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/main.py"},"lines":{"text":"            logger.debug(f\"Terminal guard disabled: failed to snapshot tty attrs: {exc}\")\n"},"line_number":62,"absolute_offset":1702,"submatches":[{"match":{"text":"guard"},"start":36,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/main.py"},"lines":{"text":"class _ShutdownNoiseGuard:\n"},"line_number":86,"absolute_offset":2518,"submatches":[{"match":{"text":"Guard"},"start":20,"end":25}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/main.py"},"lines":{"text":"    guard at runtime.\n"},"line_number":335,"absolute_offset":11209,"submatches":[{"match":{"text":"guard"},"start":4,"end":9}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/main.py"},"lines":{"text":"    noise_guard = _ShutdownNoiseGuard()\n"},"line_number":533,"absolute_offset":17336,"submatches":[{"match":{"text":"guard"},"start":10,"end":15},{"match":{"text":"Guard"},"start":32,"end":37}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/main.py"},"lines":{"text":"    noise_guard.install()\n"},"line_number":534,"absolute_offset":17376,"submatches":[{"match":{"text":"guard"},"start":10,"end":15}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/main.py"},"lines":{"text":"    term_guard = _TerminalStateGuard()\n"},"line_number":536,"absolute_offset":17403,"submatches":[{"match":{"text":"guard"},"start":9,"end":14},{"match":{"text":"Guard"},"start":31,"end":36}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/main.py"},"lines":{"text":"    atexit.register(term_guard.restore, reason=\"atexit\")\n"},"line_number":537,"absolute_offset":17442,"submatches":[{"match":{"text":"guard"},"start":25,"end":30}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/main.py"},"lines":{"text":"    atexit.register(noise_guard.begin_shutdown)\n"},"line_number":538,"absolute_offset":17499,"submatches":[{"match":{"text":"guard"},"start":26,"end":31}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/main.py"},"lines":{"text":"                noise_guard.begin_shutdown()\n"},"line_number":601,"absolute_offset":19766,"submatches":[{"match":{"text":"guard"},"start":22,"end":27}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/main.py"},"lines":{"text":"        noise_guard.begin_shutdown()\n"},"line_number":605,"absolute_offset":19909,"submatches":[{"match":{"text":"guard"},"start":14,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/main.py"},"lines":{"text":"        noise_guard.begin_shutdown()\n"},"line_number":607,"absolute_offset":19959,"submatches":[{"match":{"text":"guard"},"start":14,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/main.py"},"lines":{"text":"        term_guard.restore(reason=\"main-finally\")\n"},"line_number":608,"absolute_offset":19996,"submatches":[{"match":{"text":"guard"},"start":13,"end":18}]}}
{"type":"end","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/main.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":56755,"human":"0.000057s"},"searches":1,"searches_with_match":1,"bytes_searched":20177,"bytes_printed":4109,"matched_lines":14,"matches":16}}}
{"type":"begin","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/sigint_guard.py"}}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/sigint_guard.py"},"lines":{"text":"def sigint_guard() -> Iterator[None]:\n"},"line_number":25,"absolute_offset":817,"submatches":[{"match":{"text":"guard"},"start":11,"end":16}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/sigint_guard.py"},"lines":{"text":"        logger.debug(\"SIGINT guard enabled for shutdown\")\n"},"line_number":34,"absolute_offset":1138,"submatches":[{"match":{"text":"guard"},"start":29,"end":34}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/sigint_guard.py"},"lines":{"text":"        logger.debug(f\"Failed to enable SIGINT guard, fallback to unguarded shutdown: {exc}\")\n"},"line_number":36,"absolute_offset":1225,"submatches":[{"match":{"text":"guard"},"start":47,"end":52},{"match":{"text":"guard"},"start":68,"end":73}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/sigint_guard.py"},"lines":{"text":"            logger.debug(\"SIGINT guard restored\")\n"},"line_number":45,"absolute_offset":1457,"submatches":[{"match":{"text":"guard"},"start":33,"end":38}]}}
{"type":"end","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/sigint_guard.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":10547,"human":"0.000011s"},"searches":1,"searches_with_match":1,"bytes_searched":1626,"bytes_printed":1449,"matched_lines":4,"matches":5}}}
{"type":"begin","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/logging_adapter.py"}}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/logging_adapter.py"},"lines":{"text":"_MEMORY_INDEX_GUARD_LOGGER = \"comate_agent_sdk.system_tools.tools._base\"\n"},"line_number":35,"absolute_offset":1145,"submatches":[{"match":{"text":"GUARD"},"start":14,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/logging_adapter.py"},"lines":{"text":"_MEMORY_INDEX_GUARD_WARNING_PREFIX = \"MEMORY.md index guard warning:\"\n"},"line_number":36,"absolute_offset":1218,"submatches":[{"match":{"text":"GUARD"},"start":14,"end":19},{"match":{"text":"guard"},"start":54,"end":59}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/logging_adapter.py"},"lines":{"text":"        record.name == _MEMORY_INDEX_GUARD_LOGGER\n"},"line_number":173,"absolute_offset":6454,"submatches":[{"match":{"text":"GUARD"},"start":37,"end":42}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/logging_adapter.py"},"lines":{"text":"        and msg.startswith(_MEMORY_INDEX_GUARD_WARNING_PREFIX)\n"},"line_number":174,"absolute_offset":6504,"submatches":[{"match":{"text":"GUARD"},"start":41,"end":46}]}}
{"type":"end","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/logging_adapter.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":32530,"human":"0.000033s"},"searches":1,"searches_with_match":1,"bytes_searched":17935,"bytes_printed":1481,"matched_lines":4,"matches":5}}}
{"type":"begin","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/exit_confirm_view.py"}}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/exit_confirm_view.py"},"lines":{"text":"\"\"\"退出守卫的内嵌确认视图（spec: docs/specs/2026-07-18-comate-cli-exit-guard-design.md）。\n"},"line_number":1,"absolute_offset":0,"submatches":[{"match":{"text":"guard"},"start":83,"end":88}]}}
{"type":"end","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/exit_confirm_view.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":9946,"human":"0.000010s"},"searches":1,"searches_with_match":1,"bytes_searched":4500,"bytes_printed":503,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/app.py"}}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/app.py"},"lines":{"text":"from comate_cli.terminal_agent.sigint_guard import sigint_guard as _sigint_guard\n"},"line_number":17,"absolute_offset":438,"submatches":[{"match":{"text":"guard"},"start":38,"end":43},{"match":{"text":"guard"},"start":58,"end":63},{"match":{"text":"guard"},"start":75,"end":80}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/app.py"},"lines":{"text":"    with _sigint_guard():\n"},"line_number":498,"absolute_offset":15562,"submatches":[{"match":{"text":"guard"},"start":17,"end":22}]}}
{"type":"end","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/app.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":56309,"human":"0.000056s"},"searches":1,"searches_with_match":1,"bytes_searched":45726,"bytes_printed":820,"matched_lines":2,"matches":4}}}
{"type":"begin","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/print_mode.py"}}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/print_mode.py"},"lines":{"text":"from comate_cli.terminal_agent.sigint_guard import sigint_guard\n"},"line_number":14,"absolute_offset":293,"submatches":[{"match":{"text":"guard"},"start":38,"end":43},{"match":{"text":"guard"},"start":58,"end":63}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/print_mode.py"},"lines":{"text":"    with sigint_guard():\n"},"line_number":222,"absolute_offset":6959,"submatches":[{"match":{"text":"guard"},"start":16,"end":21}]}}
{"type":"end","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/print_mode.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":17537,"human":"0.000018s"},"searches":1,"searches_with_match":1,"bytes_searched":8932,"bytes_printed":775,"matched_lines":2,"matches":3}}}
{"type":"begin","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"}}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"from comate_cli.terminal_agent.sigint_guard import sigint_guard\n"},"line_number":114,"absolute_offset":4118,"submatches":[{"match":{"text":"guard"},"start":38,"end":43},{"match":{"text":"guard"},"start":58,"end":63}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        paste_guard_window_ms = read_env_int(\n"},"line_number":427,"absolute_offset":16245,"submatches":[{"match":{"text":"guard"},"start":14,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"            \"AGENT_SDK_TUI_PASTE_GUARD_WINDOW_MS\",\n"},"line_number":428,"absolute_offset":16291,"submatches":[{"match":{"text":"GUARD"},"start":33,"end":38}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        self._paste_guard_window_seconds = paste_guard_window_ms / 1000.0\n"},"line_number":431,"absolute_offset":16369,"submatches":[{"match":{"text":"guard"},"start":20,"end":25},{"match":{"text":"guard"},"start":49,"end":54}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        self._paste_guard_active_until = 0.0\n"},"line_number":432,"absolute_offset":16443,"submatches":[{"match":{"text":"guard"},"start":20,"end":25}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        self._exit_guard_active = False\n"},"line_number":505,"absolute_offset":19635,"submatches":[{"match":{"text":"guard"},"start":19,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        self._exit_guard_source: str | None = None\n"},"line_number":506,"absolute_offset":19675,"submatches":[{"match":{"text":"guard"},"start":19,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        if getattr(self, \"_exit_guard_active\", False):\n"},"line_number":2517,"absolute_offset":103380,"submatches":[{"match":{"text":"guard"},"start":32,"end":37}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                \"TUI exit guard pierced by re-entry: source=%s\",\n"},"line_number":2521,"absolute_offset":103686,"submatches":[{"match":{"text":"guard"},"start":26,"end":31}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"            self._close_exit_guard()\n"},"line_number":2524,"absolute_offset":103800,"submatches":[{"match":{"text":"guard"},"start":29,"end":34}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        running, idle_count = self._background_jobs_for_exit_guard()\n"},"line_number":2527,"absolute_offset":103909,"submatches":[{"match":{"text":"guard"},"start":61,"end":66}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"            self._open_exit_guard(running, idle_count, source=normalized_source)\n"},"line_number":2529,"absolute_offset":103998,"submatches":[{"match":{"text":"guard"},"start":28,"end":33}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"    def _background_jobs_for_exit_guard(self) -> tuple[list[Any], int]:\n"},"line_number":2533,"absolute_offset":104148,"submatches":[{"match":{"text":"guard"},"start":34,"end":39}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"            logger.warning(\"exit guard failed to read background jobs\", exc_info=True)\n"},"line_number":2541,"absolute_offset":104540,"submatches":[{"match":{"text":"guard"},"start":33,"end":38}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"    def _open_exit_guard(\n"},"line_number":2555,"absolute_offset":105038,"submatches":[{"match":{"text":"guard"},"start":19,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        self._exit_guard_active = True\n"},"line_number":2581,"absolute_offset":105842,"submatches":[{"match":{"text":"guard"},"start":19,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        self._exit_guard_source = source\n"},"line_number":2582,"absolute_offset":105881,"submatches":[{"match":{"text":"guard"},"start":19,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"            \"TUI exit guard opened: running=%d idle=%d source=%s\",\n"},"line_number":2588,"absolute_offset":106123,"submatches":[{"match":{"text":"guard"},"start":22,"end":27}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"    def _close_exit_guard(self) -> None:\n"},"line_number":2594,"absolute_offset":106268,"submatches":[{"match":{"text":"guard"},"start":20,"end":25}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        self._exit_guard_active = False\n"},"line_number":2595,"absolute_offset":106309,"submatches":[{"match":{"text":"guard"},"start":19,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        self._exit_guard_source = None\n"},"line_number":2596,"absolute_offset":106349,"submatches":[{"match":{"text":"guard"},"start":19,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"            source = self._exit_guard_source or \"exit_guard_confirm\"\n"},"line_number":2605,"absolute_offset":106713,"submatches":[{"match":{"text":"guard"},"start":32,"end":37},{"match":{"text":"guard"},"start":54,"end":59}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"            self._close_exit_guard()\n"},"line_number":2606,"absolute_offset":106782,"submatches":[{"match":{"text":"guard"},"start":29,"end":34}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                \"TUI exit guard cancelled: source=%s\",\n"},"line_number":2611,"absolute_offset":106950,"submatches":[{"match":{"text":"guard"},"start":26,"end":31}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                self._exit_guard_source,\n"},"line_number":2612,"absolute_offset":107005,"submatches":[{"match":{"text":"guard"},"start":27,"end":32}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"            self._close_exit_guard()\n"},"line_number":2614,"absolute_offset":107060,"submatches":[{"match":{"text":"guard"},"start":29,"end":34}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"            with sigint_guard():\n"},"line_number":2971,"absolute_offset":121726,"submatches":[{"match":{"text":"guard"},"start":24,"end":29}]}}
{"type":"end","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":129836,"human":"0.000130s"},"searches":1,"searches_with_match":1,"bytes_searched":130465,"bytes_printed":8443,"matched_lines":27,"matches":30}}}
{"type":"begin","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/mention_completer.py"}}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/mention_completer.py"},"lines":{"text":"    _TRIGGER_GUARDS = frozenset((\".\", \"-\", \"_\", \"`\", \"'\", '\"', \":\", \"@\", \"#\", \"~\"))\n"},"line_number":28,"absolute_offset":603,"submatches":[{"match":{"text":"GUARD"},"start":13,"end":18}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/mention_completer.py"},"lines":{"text":"            if previous.isalnum() or previous in self._TRIGGER_GUARDS:\n"},"line_number":136,"absolute_offset":3849,"submatches":[{"match":{"text":"GUARD"},"start":63,"end":68}]}}
{"type":"end","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/mention_completer.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":22170,"human":"0.000022s"},"searches":1,"searches_with_match":1,"bytes_searched":23736,"bytes_printed":834,"matched_lines":2,"matches":2}}}
{"type":"begin","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/rpc/protocol.py"}}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/rpc/protocol.py"},"lines":{"text":"from typing import Any, Literal, TypeGuard\n"},"line_number":7,"absolute_offset":140,"submatches":[{"match":{"text":"Guard"},"start":37,"end":42}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/rpc/protocol.py"},"lines":{"text":"def is_jsonrpc_request_id(raw_value: Any) -> TypeGuard[JSONRPCRequestId]:\n"},"line_number":41,"absolute_offset":836,"submatches":[{"match":{"text":"Guard"},"start":49,"end":54}]}}
{"type":"end","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/rpc/protocol.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":11016,"human":"0.000011s"},"searches":1,"searches_with_match":1,"bytes_searched":4379,"bytes_printed":759,"matched_lines":2,"matches":2}}}
{"type":"begin","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/input_behavior.py"}}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/input_behavior.py"},"lines":{"text":"        self._paste_guard_active_until = 0.0\n"},"line_number":301,"absolute_offset":11048,"submatches":[{"match":{"text":"guard"},"start":20,"end":25}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/input_behavior.py"},"lines":{"text":"    def _paste_guard_window(self) -> float:\n"},"line_number":303,"absolute_offset":11094,"submatches":[{"match":{"text":"guard"},"start":15,"end":20}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/input_behavior.py"},"lines":{"text":"        return max(0.05, float(getattr(self, \"_paste_guard_window_seconds\", 0.12)))\n"},"line_number":304,"absolute_offset":11138,"submatches":[{"match":{"text":"guard"},"start":53,"end":58}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/input_behavior.py"},"lines":{"text":"        self._paste_guard_active_until = time.monotonic() + self._paste_guard_window()\n"},"line_number":307,"absolute_offset":11286,"submatches":[{"match":{"text":"guard"},"start":20,"end":25},{"match":{"text":"guard"},"start":72,"end":77}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/input_behavior.py"},"lines":{"text":"    def _extend_paste_guard(self) -> None:\n"},"line_number":309,"absolute_offset":11374,"submatches":[{"match":{"text":"guard"},"start":22,"end":27}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/input_behavior.py"},"lines":{"text":"    def _is_paste_guard_active(self) -> bool:\n"},"line_number":312,"absolute_offset":11458,"submatches":[{"match":{"text":"guard"},"start":18,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/input_behavior.py"},"lines":{"text":"            getattr(self, \"_paste_guard_active_until\", 0.0)\n"},"line_number":314,"absolute_offset":11545,"submatches":[{"match":{"text":"guard"},"start":34,"end":39}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/input_behavior.py"},"lines":{"text":"        if not self._is_paste_guard_active():\n"},"line_number":343,"absolute_offset":12488,"submatches":[{"match":{"text":"guard"},"start":30,"end":35}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/input_behavior.py"},"lines":{"text":"        self._extend_paste_guard()\n"},"line_number":355,"absolute_offset":12873,"submatches":[{"match":{"text":"guard"},"start":27,"end":32}]}}
{"type":"end","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/input_behavior.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":22852,"human":"0.000023s"},"searches":1,"searches_with_match":1,"bytes_searched":24369,"bytes_printed":3116,"matched_lines":9,"matches":10}}}
{"data":{"elapsed_total":{"human":"0.005318s","nanos":5318213,"secs":0},"stats":{"bytes_printed":22289,"bytes_searched":281845,"elapsed":{"human":"0.000369s","nanos":369498,"secs":0},"matched_lines":67,"matches":78,"searches":10,"searches_with_match":10}},"type":"summary"}
