{"type":"begin","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_rpc_session_host.py"}}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_rpc_session_host.py"},"lines":{"text":"from comate_cli.terminal_agent.rpc.approval import RpcApprovalBridge\n"},"line_number":17,"absolute_offset":394,"submatches":[{"match":{"text":"ApprovalBridge"},"start":54,"end":68}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_rpc_session_host.py"},"lines":{"text":"            self.assertIsInstance(created[0].approval_callback, RpcApprovalBridge)\n"},"line_number":197,"absolute_offset":5898,"submatches":[{"match":{"text":"ApprovalBridge"},"start":67,"end":81}]}}
{"type":"end","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_rpc_session_host.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":91979,"human":"0.000092s"},"searches":1,"searches_with_match":1,"bytes_searched":15798,"bytes_printed":782,"matched_lines":2,"matches":2}}}
{"type":"begin","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_rpc_approval.py"}}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_rpc_approval.py"},"lines":{"text":"    RpcApprovalBridge,\n"},"line_number":10,"absolute_offset":216,"submatches":[{"match":{"text":"ApprovalBridge"},"start":7,"end":21}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_rpc_approval.py"},"lines":{"text":"class TestRpcApprovalBridge(unittest.IsolatedAsyncioTestCase):\n"},"line_number":49,"absolute_offset":1282,"submatches":[{"match":{"text":"ApprovalBridge"},"start":13,"end":27}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_rpc_approval.py"},"lines":{"text":"        bridge = RpcApprovalBridge(session_handle=\"s-1\", sender=sender)\n"},"line_number":57,"absolute_offset":1631,"submatches":[{"match":{"text":"ApprovalBridge"},"start":20,"end":34}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_rpc_approval.py"},"lines":{"text":"        bridge = RpcApprovalBridge(session_handle=\"s-1\", sender=sender)\n"},"line_number":70,"absolute_offset":2291,"submatches":[{"match":{"text":"ApprovalBridge"},"start":20,"end":34}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_rpc_approval.py"},"lines":{"text":"        bridge = RpcApprovalBridge(session_handle=\"s-1\", sender=sender)\n"},"line_number":76,"absolute_offset":2610,"submatches":[{"match":{"text":"ApprovalBridge"},"start":20,"end":34}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_rpc_approval.py"},"lines":{"text":"                bridge = RpcApprovalBridge(session_handle=\"s-1\", sender=sender)\n"},"line_number":86,"absolute_offset":3112,"submatches":[{"match":{"text":"ApprovalBridge"},"start":28,"end":42}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_rpc_approval.py"},"lines":{"text":"        bridge = RpcApprovalBridge(session_handle=\"s-1\", sender=sender)\n"},"line_number":93,"absolute_offset":3518,"submatches":[{"match":{"text":"ApprovalBridge"},"start":20,"end":34}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_rpc_approval.py"},"lines":{"text":"        bridge = RpcApprovalBridge(session_handle=\"s-1\", sender=sender)\n"},"line_number":100,"absolute_offset":3873,"submatches":[{"match":{"text":"ApprovalBridge"},"start":20,"end":34}]}}
{"type":"end","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_rpc_approval.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":64558,"human":"0.000065s"},"searches":1,"searches_with_match":1,"bytes_searched":4355,"bytes_printed":2655,"matched_lines":8,"matches":8}}}
{"type":"begin","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_app_startup_latency.py"}}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_app_startup_latency.py"},"lines":{"text":"    async def test_rpc_stdio_builds_agent_without_process_approval_bridge(self) -> None:\n"},"line_number":402,"absolute_offset":14196,"submatches":[{"match":{"text":"approval_bridge"},"start":58,"end":73}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_app_startup_latency.py"},"lines":{"text":"        self.assertIsNone(captured_build_kwargs[\"approval_bridge\"])\n"},"line_number":427,"absolute_offset":15236,"submatches":[{"match":{"text":"approval_bridge"},"start":49,"end":64}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_app_startup_latency.py"},"lines":{"text":"    async def test_run_threads_approval_bridge_and_yolo_to_tui(self) -> None:\n"},"line_number":576,"absolute_offset":21692,"submatches":[{"match":{"text":"approval_bridge"},"start":31,"end":46}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_app_startup_latency.py"},"lines":{"text":"        approval_bridge = build_kwargs[\"approval_bridge\"]\n"},"line_number":615,"absolute_offset":23367,"submatches":[{"match":{"text":"approval_bridge"},"start":8,"end":23},{"match":{"text":"approval_bridge"},"start":40,"end":55}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_app_startup_latency.py"},"lines":{"text":"        self.assertTrue(callable(approval_bridge))\n"},"line_number":616,"absolute_offset":23425,"submatches":[{"match":{"text":"approval_bridge"},"start":33,"end":48}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_app_startup_latency.py"},"lines":{"text":"        self.assertIs(tui_kwargs[\"approval_bridge\"], approval_bridge)\n"},"line_number":617,"absolute_offset":23476,"submatches":[{"match":{"text":"approval_bridge"},"start":34,"end":49},{"match":{"text":"approval_bridge"},"start":53,"end":68}]}}
{"type":"end","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_app_startup_latency.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":98672,"human":"0.000099s"},"searches":1,"searches_with_match":1,"bytes_searched":26747,"bytes_printed":2218,"matched_lines":6,"matches":8}}}
{"type":"begin","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/approval_bridge.py"}}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/approval_bridge.py"},"lines":{"text":"class ApprovalBridge:\n"},"line_number":31,"absolute_offset":830,"submatches":[{"match":{"text":"ApprovalBridge"},"start":6,"end":20}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/approval_bridge.py"},"lines":{"text":"                \"ApprovalBridge handler task failed during cancellation\",\n"},"line_number":65,"absolute_offset":1905,"submatches":[{"match":{"text":"ApprovalBridge"},"start":17,"end":31}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/approval_bridge.py"},"lines":{"text":"                \"ApprovalBridge: no handler registered, denying tool %s\",\n"},"line_number":73,"absolute_offset":2174,"submatches":[{"match":{"text":"ApprovalBridge"},"start":17,"end":31}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/approval_bridge.py"},"lines":{"text":"            logger.exception(\"ApprovalBridge handler failed; denying\")\n"},"line_number":98,"absolute_offset":3305,"submatches":[{"match":{"text":"ApprovalBridge"},"start":30,"end":44}]}}
{"type":"end","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/approval_bridge.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":29271,"human":"0.000029s"},"searches":1,"searches_with_match":1,"bytes_searched":3648,"bytes_printed":1453,"matched_lines":4,"matches":4}}}
{"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":"    approval_bridge: Any | None = None,\n"},"line_number":424,"absolute_offset":13053,"submatches":[{"match":{"text":"approval_bridge"},"start":4,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/app.py"},"lines":{"text":"        tool_approval_callback=approval_bridge,\n"},"line_number":457,"absolute_offset":14498,"submatches":[{"match":{"text":"approval_bridge"},"start":31,"end":46}]}}
{"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.approval_bridge import ApprovalBridge\n"},"line_number":785,"absolute_offset":26100,"submatches":[{"match":{"text":"approval_bridge"},"start":35,"end":50},{"match":{"text":"ApprovalBridge"},"start":58,"end":72}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/app.py"},"lines":{"text":"    approval_bridge = None if rpc_stdio else ApprovalBridge()\n"},"line_number":786,"absolute_offset":26173,"submatches":[{"match":{"text":"approval_bridge"},"start":4,"end":19},{"match":{"text":"ApprovalBridge"},"start":45,"end":59}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/app.py"},"lines":{"text":"        approval_bridge=approval_bridge,\n"},"line_number":796,"absolute_offset":26533,"submatches":[{"match":{"text":"approval_bridge"},"start":8,"end":23},{"match":{"text":"approval_bridge"},"start":24,"end":39}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/app.py"},"lines":{"text":"        approval_bridge=approval_bridge,\n"},"line_number":864,"absolute_offset":29096,"submatches":[{"match":{"text":"approval_bridge"},"start":8,"end":23},{"match":{"text":"approval_bridge"},"start":24,"end":39}]}}
{"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":80221,"human":"0.000080s"},"searches":1,"searches_with_match":1,"bytes_searched":31750,"bytes_printed":2205,"matched_lines":6,"matches":10}}}
{"type":"begin","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_main_args.py"}}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"lines":{"text":"        approval_bridge = object()\n"},"line_number":413,"absolute_offset":16952,"submatches":[{"match":{"text":"approval_bridge"},"start":8,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"lines":{"text":"                approval_bridge=approval_bridge,\n"},"line_number":448,"absolute_offset":18118,"submatches":[{"match":{"text":"approval_bridge"},"start":16,"end":31},{"match":{"text":"approval_bridge"},"start":32,"end":47}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"lines":{"text":"        self.assertIs(captured[\"tool_approval_callback\"], approval_bridge)\n"},"line_number":452,"absolute_offset":18257,"submatches":[{"match":{"text":"approval_bridge"},"start":58,"end":73}]}}
{"type":"end","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_main_args.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":58663,"human":"0.000059s"},"searches":1,"searches_with_match":1,"bytes_searched":18392,"bytes_printed":1082,"matched_lines":3,"matches":4}}}
{"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":"        approval_bridge: Any | None = None,\n"},"line_number":210,"absolute_offset":7263,"submatches":[{"match":{"text":"approval_bridge"},"start":8,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        self._approval_bridge = approval_bridge\n"},"line_number":214,"absolute_offset":7382,"submatches":[{"match":{"text":"approval_bridge"},"start":14,"end":29},{"match":{"text":"approval_bridge"},"start":32,"end":47}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        if self._approval_bridge is not None:\n"},"line_number":715,"absolute_offset":29164,"submatches":[{"match":{"text":"approval_bridge"},"start":17,"end":32}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"            register = getattr(self._approval_bridge, \"register\", None)\n"},"line_number":716,"absolute_offset":29210,"submatches":[{"match":{"text":"approval_bridge"},"start":37,"end":52}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"            approval_bridge = getattr(self, \"_approval_bridge\", None)\n"},"line_number":2495,"absolute_offset":101861,"submatches":[{"match":{"text":"approval_bridge"},"start":12,"end":27},{"match":{"text":"approval_bridge"},"start":46,"end":61}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"            if approval_bridge is not None:\n"},"line_number":2496,"absolute_offset":101931,"submatches":[{"match":{"text":"approval_bridge"},"start":15,"end":30}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                unregister = getattr(approval_bridge, \"unregister\", None)\n"},"line_number":2497,"absolute_offset":101975,"submatches":[{"match":{"text":"approval_bridge"},"start":37,"end":52}]}}
{"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":133468,"human":"0.000133s"},"searches":1,"searches_with_match":1,"bytes_searched":112026,"bytes_printed":2458,"matched_lines":7,"matches":9}}}
{"type":"begin","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tool_approval_view.py"}}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tool_approval_view.py"},"lines":{"text":"from comate_cli.terminal_agent.approval_bridge import build_deny_reason\n"},"line_number":12,"absolute_offset":363,"submatches":[{"match":{"text":"approval_bridge"},"start":31,"end":46}]}}
{"type":"end","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tool_approval_view.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":38861,"human":"0.000039s"},"searches":1,"searches_with_match":1,"bytes_searched":11929,"bytes_printed":482,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_approval_bridge.py"}}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_approval_bridge.py"},"lines":{"text":"from comate_cli.terminal_agent.approval_bridge import ApprovalBridge, build_deny_reason\n"},"line_number":5,"absolute_offset":52,"submatches":[{"match":{"text":"approval_bridge"},"start":31,"end":46},{"match":{"text":"ApprovalBridge"},"start":54,"end":68}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_approval_bridge.py"},"lines":{"text":"    bridge = ApprovalBridge()\n"},"line_number":9,"absolute_offset":196,"submatches":[{"match":{"text":"ApprovalBridge"},"start":13,"end":27}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_approval_bridge.py"},"lines":{"text":"    bridge = ApprovalBridge()\n"},"line_number":16,"absolute_offset":437,"submatches":[{"match":{"text":"ApprovalBridge"},"start":13,"end":27}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_approval_bridge.py"},"lines":{"text":"    bridge = ApprovalBridge()\n"},"line_number":30,"absolute_offset":852,"submatches":[{"match":{"text":"ApprovalBridge"},"start":13,"end":27}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_approval_bridge.py"},"lines":{"text":"        bridge = ApprovalBridge()\n"},"line_number":51,"absolute_offset":1522,"submatches":[{"match":{"text":"ApprovalBridge"},"start":17,"end":31}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_approval_bridge.py"},"lines":{"text":"        bridge = ApprovalBridge()\n"},"line_number":76,"absolute_offset":2317,"submatches":[{"match":{"text":"ApprovalBridge"},"start":17,"end":31}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_approval_bridge.py"},"lines":{"text":"        bridge = ApprovalBridge()\n"},"line_number":107,"absolute_offset":3272,"submatches":[{"match":{"text":"ApprovalBridge"},"start":17,"end":31}]}}
{"type":"end","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_approval_bridge.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":41068,"human":"0.000041s"},"searches":1,"searches_with_match":1,"bytes_searched":4071,"bytes_printed":2223,"matched_lines":7,"matches":8}}}
{"type":"begin","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/rpc/approval.py"}}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/rpc/approval.py"},"lines":{"text":"class RpcApprovalBridge:\n"},"line_number":55,"absolute_offset":1773,"submatches":[{"match":{"text":"ApprovalBridge"},"start":9,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/rpc/approval.py"},"lines":{"text":"            logger.debug(\"RpcApprovalBridge request task failed during cancel\", exc_info=True)\n"},"line_number":78,"absolute_offset":2620,"submatches":[{"match":{"text":"ApprovalBridge"},"start":29,"end":43}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/rpc/approval.py"},"lines":{"text":"                \"RpcApprovalBridge: client lacks permission_requests capability, \"\n"},"line_number":83,"absolute_offset":2865,"submatches":[{"match":{"text":"ApprovalBridge"},"start":20,"end":34}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/rpc/approval.py"},"lines":{"text":"                    \"RpcApprovalBridge: permission.request failed; denying\",\n"},"line_number":110,"absolute_offset":3928,"submatches":[{"match":{"text":"ApprovalBridge"},"start":24,"end":38}]}}
{"type":"end","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/rpc/approval.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":18903,"human":"0.000019s"},"searches":1,"searches_with_match":1,"bytes_searched":4371,"bytes_printed":1479,"matched_lines":4,"matches":4}}}
{"type":"begin","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/rpc/session_host.py"}}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/rpc/session_host.py"},"lines":{"text":"    RpcApprovalBridge,\n"},"line_number":23,"absolute_offset":621,"submatches":[{"match":{"text":"ApprovalBridge"},"start":7,"end":21}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/rpc/session_host.py"},"lines":{"text":"    approval_bridge: RpcApprovalBridge\n"},"line_number":107,"absolute_offset":3061,"submatches":[{"match":{"text":"approval_bridge"},"start":4,"end":19},{"match":{"text":"ApprovalBridge"},"start":24,"end":38}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/rpc/session_host.py"},"lines":{"text":"        approval_bridge = RpcApprovalBridge(session_handle=handle, sender=self._sender)\n"},"line_number":171,"absolute_offset":5264,"submatches":[{"match":{"text":"approval_bridge"},"start":8,"end":23},{"match":{"text":"ApprovalBridge"},"start":29,"end":43}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/rpc/session_host.py"},"lines":{"text":"        chat_session.set_tool_approval_callback(approval_bridge)\n"},"line_number":172,"absolute_offset":5352,"submatches":[{"match":{"text":"approval_bridge"},"start":48,"end":63}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/rpc/session_host.py"},"lines":{"text":"            approval_bridge=approval_bridge,\n"},"line_number":177,"absolute_offset":5518,"submatches":[{"match":{"text":"approval_bridge"},"start":12,"end":27},{"match":{"text":"approval_bridge"},"start":28,"end":43}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/rpc/session_host.py"},"lines":{"text":"            rpc_session.approval_bridge.deny_all(SESSION_CLOSED_DENY_REASON)\n"},"line_number":214,"absolute_offset":7132,"submatches":[{"match":{"text":"approval_bridge"},"start":24,"end":39}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/rpc/session_host.py"},"lines":{"text":"        rpc_session.approval_bridge.deny_all(SESSION_CLOSED_DENY_REASON)\n"},"line_number":344,"absolute_offset":12900,"submatches":[{"match":{"text":"approval_bridge"},"start":20,"end":35}]}}
{"type":"end","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/rpc/session_host.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":76962,"human":"0.000077s"},"searches":1,"searches_with_match":1,"bytes_searched":13588,"bytes_printed":2608,"matched_lines":7,"matches":10}}}
{"data":{"elapsed_total":{"human":"0.011323s","nanos":11323330,"secs":0},"stats":{"bytes_printed":19645,"bytes_searched":246675,"elapsed":{"human":"0.000733s","nanos":732626,"secs":0},"matched_lines":55,"matches":68,"searches":11,"searches_with_match":11}},"type":"summary"}
