{"type":"begin","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold_panel.py"}}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold_panel.py"},"lines":{"text":"    def active_tool_fold_snapshot(self) -> ToolFoldSnapshot | None:\n"},"line_number":21,"absolute_offset":509,"submatches":[{"match":{"text":"active_tool_fold"},"start":8,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold_panel.py"},"lines":{"text":"        self.assertTrue(host._has_active_tool_fold())\n"},"line_number":94,"absolute_offset":2665,"submatches":[{"match":{"text":"active_tool_fold"},"start":34,"end":50}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold_panel.py"},"lines":{"text":"        self.assertTrue(host._has_active_tool_fold())\n"},"line_number":183,"absolute_offset":5689,"submatches":[{"match":{"text":"active_tool_fold"},"start":34,"end":50}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold_panel.py"},"lines":{"text":"        self.assertFalse(host._has_active_tool_fold())\n"},"line_number":192,"absolute_offset":6059,"submatches":[{"match":{"text":"active_tool_fold"},"start":35,"end":51}]}}
{"type":"end","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold_panel.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":48302,"human":"0.000048s"},"searches":1,"searches_with_match":1,"bytes_searched":6230,"bytes_printed":1372,"matched_lines":4,"matches":4}}}
{"type":"begin","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_approval_panel_visibility.py"}}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_approval_panel_visibility.py"},"lines":{"text":"    def _has_active_tool_fold(self) -> bool:\n"},"line_number":76,"absolute_offset":2508,"submatches":[{"match":{"text":"active_tool_fold"},"start":13,"end":29}]}}
{"type":"end","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_approval_panel_visibility.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":57355,"human":"0.000057s"},"searches":1,"searches_with_match":1,"bytes_searched":13187,"bytes_printed":441,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold.py"}}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold.py"},"lines":{"text":"    ActiveToolFold,\n"},"line_number":9,"absolute_offset":156,"submatches":[{"match":{"text":"ActiveToolFold"},"start":4,"end":18}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold.py"},"lines":{"text":"        fold = ActiveToolFold()\n"},"line_number":69,"absolute_offset":2584,"submatches":[{"match":{"text":"ActiveToolFold"},"start":15,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold.py"},"lines":{"text":"        fold.add_call(\n"},"line_number":72,"absolute_offset":2648,"submatches":[{"match":{"text":"add_call"},"start":13,"end":21}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold.py"},"lines":{"text":"        fold.add_call(\n"},"line_number":78,"absolute_offset":2831,"submatches":[{"match":{"text":"add_call"},"start":13,"end":21}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold.py"},"lines":{"text":"        fold = ActiveToolFold()\n"},"line_number":133,"absolute_offset":5345,"submatches":[{"match":{"text":"ActiveToolFold"},"start":15,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold.py"},"lines":{"text":"            fold.add_call(\n"},"line_number":137,"absolute_offset":5434,"submatches":[{"match":{"text":"add_call"},"start":17,"end":25}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold.py"},"lines":{"text":"            fold.add_call(\n"},"line_number":145,"absolute_offset":5679,"submatches":[{"match":{"text":"add_call"},"start":17,"end":25}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold.py"},"lines":{"text":"        fold = ActiveToolFold()\n"},"line_number":218,"absolute_offset":8465,"submatches":[{"match":{"text":"ActiveToolFold"},"start":15,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold.py"},"lines":{"text":"        fold.add_call(\n"},"line_number":221,"absolute_offset":8529,"submatches":[{"match":{"text":"add_call"},"start":13,"end":21}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold.py"},"lines":{"text":"        fold.add_call(\n"},"line_number":227,"absolute_offset":8744,"submatches":[{"match":{"text":"add_call"},"start":13,"end":21}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold.py"},"lines":{"text":"        fold.add_call(\n"},"line_number":233,"absolute_offset":8946,"submatches":[{"match":{"text":"add_call"},"start":13,"end":21}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold.py"},"lines":{"text":"                            scratchpad_dir=scratchpad,\n"},"line_number":260,"absolute_offset":10296,"submatches":[{"match":{"text":"scratchpad_dir"},"start":28,"end":42}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold.py"},"lines":{"text":"                            scratchpad_dir=scratchpad,\n"},"line_number":268,"absolute_offset":10624,"submatches":[{"match":{"text":"scratchpad_dir"},"start":28,"end":42}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold.py"},"lines":{"text":"                    scratchpad_dir=scratchpad,\n"},"line_number":282,"absolute_offset":11389,"submatches":[{"match":{"text":"scratchpad_dir"},"start":20,"end":34}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold.py"},"lines":{"text":"                    scratchpad_dir=scratchpad,\n"},"line_number":295,"absolute_offset":11969,"submatches":[{"match":{"text":"scratchpad_dir"},"start":20,"end":34}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold.py"},"lines":{"text":"                    scratchpad_dir=scratchpad,\n"},"line_number":307,"absolute_offset":12503,"submatches":[{"match":{"text":"scratchpad_dir"},"start":20,"end":34}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold.py"},"lines":{"text":"            fold = ActiveToolFold()\n"},"line_number":348,"absolute_offset":13821,"submatches":[{"match":{"text":"ActiveToolFold"},"start":19,"end":33}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold.py"},"lines":{"text":"                fold.add_call(\n"},"line_number":352,"absolute_offset":13922,"submatches":[{"match":{"text":"add_call"},"start":21,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold.py"},"lines":{"text":"                    scratchpad_dir=scratchpad,\n"},"line_number":357,"absolute_offset":14152,"submatches":[{"match":{"text":"scratchpad_dir"},"start":20,"end":34}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold.py"},"lines":{"text":"                fold.add_call(\n"},"line_number":361,"absolute_offset":14260,"submatches":[{"match":{"text":"add_call"},"start":21,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold.py"},"lines":{"text":"                    scratchpad_dir=scratchpad,\n"},"line_number":366,"absolute_offset":14488,"submatches":[{"match":{"text":"scratchpad_dir"},"start":20,"end":34}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold.py"},"lines":{"text":"                fold.add_call(\n"},"line_number":370,"absolute_offset":14597,"submatches":[{"match":{"text":"add_call"},"start":21,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold.py"},"lines":{"text":"                    scratchpad_dir=scratchpad,\n"},"line_number":375,"absolute_offset":14839,"submatches":[{"match":{"text":"scratchpad_dir"},"start":20,"end":34}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold.py"},"lines":{"text":"        fold = ActiveToolFold()\n"},"line_number":392,"absolute_offset":15611,"submatches":[{"match":{"text":"ActiveToolFold"},"start":15,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold.py"},"lines":{"text":"        fold.add_call(\n"},"line_number":395,"absolute_offset":15675,"submatches":[{"match":{"text":"add_call"},"start":13,"end":21}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold.py"},"lines":{"text":"        fold.add_call(\n"},"line_number":401,"absolute_offset":15857,"submatches":[{"match":{"text":"add_call"},"start":13,"end":21}]}}
{"type":"end","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tool_fold.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":113788,"human":"0.000114s"},"searches":1,"searches_with_match":1,"bytes_searched":16446,"bytes_printed":7383,"matched_lines":26,"matches":26}}}
{"type":"begin","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_history_sync_tool_fold.py"}}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_history_sync_tool_fold.py"},"lines":{"text":"            sync._renderer.set_scratchpad_dir(scratchpad)\n"},"line_number":277,"absolute_offset":10478,"submatches":[{"match":{"text":"scratchpad_dir"},"start":31,"end":45}]}}
{"type":"end","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_history_sync_tool_fold.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":24135,"human":"0.000024s"},"searches":1,"searches_with_match":1,"bytes_searched":11121,"bytes_printed":448,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/event_renderer.py"}}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/event_renderer.py"},"lines":{"text":"    ActiveToolFold,\n"},"line_number":80,"absolute_offset":2049,"submatches":[{"match":{"text":"ActiveToolFold"},"start":4,"end":18}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/event_renderer.py"},"lines":{"text":"        self._active_tool_fold = ActiveToolFold()\n"},"line_number":356,"absolute_offset":10631,"submatches":[{"match":{"text":"active_tool_fold"},"start":14,"end":30},{"match":{"text":"ActiveToolFold"},"start":33,"end":47}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/event_renderer.py"},"lines":{"text":"        # set_scratchpad_dir）。None 表示尚未接线，草稿写入按普通写入展示。\n"},"line_number":358,"absolute_offset":10770,"submatches":[{"match":{"text":"scratchpad_dir"},"start":14,"end":28}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/event_renderer.py"},"lines":{"text":"        self._scratchpad_dir: Path | None = None\n"},"line_number":359,"absolute_offset":10867,"submatches":[{"match":{"text":"scratchpad_dir"},"start":14,"end":28}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/event_renderer.py"},"lines":{"text":"    def set_scratchpad_dir(self, scratchpad_dir: Path | None) -> None:\n"},"line_number":418,"absolute_offset":13777,"submatches":[{"match":{"text":"scratchpad_dir"},"start":12,"end":26},{"match":{"text":"scratchpad_dir"},"start":33,"end":47}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/event_renderer.py"},"lines":{"text":"        self._scratchpad_dir = Path(scratchpad_dir) if scratchpad_dir is not None else None\n"},"line_number":420,"absolute_offset":13943,"submatches":[{"match":{"text":"scratchpad_dir"},"start":14,"end":28},{"match":{"text":"scratchpad_dir"},"start":36,"end":50},{"match":{"text":"scratchpad_dir"},"start":55,"end":69}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/event_renderer.py"},"lines":{"text":"    def scratchpad_dir(self) -> Path | None:\n"},"line_number":423,"absolute_offset":14050,"submatches":[{"match":{"text":"scratchpad_dir"},"start":8,"end":22}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/event_renderer.py"},"lines":{"text":"        return self._scratchpad_dir\n"},"line_number":424,"absolute_offset":14095,"submatches":[{"match":{"text":"scratchpad_dir"},"start":21,"end":35}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/event_renderer.py"},"lines":{"text":"    def _commit_active_tool_fold(self) -> None:\n"},"line_number":490,"absolute_offset":16365,"submatches":[{"match":{"text":"active_tool_fold"},"start":16,"end":32}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/event_renderer.py"},"lines":{"text":"        snapshot = self._active_tool_fold.snapshot(active=False)\n"},"line_number":491,"absolute_offset":16413,"submatches":[{"match":{"text":"active_tool_fold"},"start":25,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/event_renderer.py"},"lines":{"text":"        self._active_tool_fold.clear()\n"},"line_number":503,"absolute_offset":16886,"submatches":[{"match":{"text":"active_tool_fold"},"start":14,"end":30}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/event_renderer.py"},"lines":{"text":"        self._commit_active_tool_fold()\n"},"line_number":959,"absolute_offset":36021,"submatches":[{"match":{"text":"active_tool_fold"},"start":21,"end":37}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/event_renderer.py"},"lines":{"text":"        self._commit_active_tool_fold()\n"},"line_number":993,"absolute_offset":37585,"submatches":[{"match":{"text":"active_tool_fold"},"start":21,"end":37}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/event_renderer.py"},"lines":{"text":"        self._commit_active_tool_fold()\n"},"line_number":1019,"absolute_offset":38483,"submatches":[{"match":{"text":"active_tool_fold"},"start":21,"end":37}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/event_renderer.py"},"lines":{"text":"    def active_tool_fold_snapshot(self) -> ToolFoldSnapshot | None:\n"},"line_number":1029,"absolute_offset":38842,"submatches":[{"match":{"text":"active_tool_fold"},"start":8,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/event_renderer.py"},"lines":{"text":"        return self._active_tool_fold.snapshot(active=True)\n"},"line_number":1030,"absolute_offset":38910,"submatches":[{"match":{"text":"active_tool_fold"},"start":21,"end":37}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/event_renderer.py"},"lines":{"text":"        self._active_tool_fold.clear()\n"},"line_number":1040,"absolute_offset":39327,"submatches":[{"match":{"text":"active_tool_fold"},"start":14,"end":30}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/event_renderer.py"},"lines":{"text":"                    self._commit_active_tool_fold()\n"},"line_number":1930,"absolute_offset":74290,"submatches":[{"match":{"text":"active_tool_fold"},"start":33,"end":49}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/event_renderer.py"},"lines":{"text":"                if is_foldable_tool(tool_name, args_dict, scratchpad_dir=self._scratchpad_dir):\n"},"line_number":2033,"absolute_offset":79681,"submatches":[{"match":{"text":"scratchpad_dir"},"start":58,"end":72},{"match":{"text":"scratchpad_dir"},"start":79,"end":93}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/event_renderer.py"},"lines":{"text":"                    self._active_tool_fold.add_call(\n"},"line_number":2034,"absolute_offset":79777,"submatches":[{"match":{"text":"active_tool_fold"},"start":26,"end":42},{"match":{"text":"add_call"},"start":43,"end":51}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/event_renderer.py"},"lines":{"text":"                        scratchpad_dir=self._scratchpad_dir,\n"},"line_number":2039,"absolute_offset":80029,"submatches":[{"match":{"text":"scratchpad_dir"},"start":24,"end":38},{"match":{"text":"scratchpad_dir"},"start":45,"end":59}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/event_renderer.py"},"lines":{"text":"                self._commit_active_tool_fold()\n"},"line_number":2043,"absolute_offset":80202,"submatches":[{"match":{"text":"active_tool_fold"},"start":29,"end":45}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/event_renderer.py"},"lines":{"text":"                if self._active_tool_fold.has_call(tool_call_id):\n"},"line_number":2051,"absolute_offset":80771,"submatches":[{"match":{"text":"active_tool_fold"},"start":25,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/event_renderer.py"},"lines":{"text":"                    self._active_tool_fold.mark_result(\n"},"line_number":2067,"absolute_offset":81600,"submatches":[{"match":{"text":"active_tool_fold"},"start":26,"end":42}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/event_renderer.py"},"lines":{"text":"                    self._commit_active_tool_fold()\n"},"line_number":2230,"absolute_offset":89321,"submatches":[{"match":{"text":"active_tool_fold"},"start":33,"end":49}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/event_renderer.py"},"lines":{"text":"                self._commit_active_tool_fold()\n"},"line_number":2240,"absolute_offset":89916,"submatches":[{"match":{"text":"active_tool_fold"},"start":29,"end":45}]}}
{"type":"end","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/event_renderer.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":156852,"human":"0.000157s"},"searches":1,"searches_with_match":1,"bytes_searched":91447,"bytes_printed":8988,"matched_lines":26,"matches":33}}}
{"type":"begin","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_event_renderer_tool_fold.py"}}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_event_renderer_tool_fold.py"},"lines":{"text":"        snapshot = renderer.active_tool_fold_snapshot()\n"},"line_number":35,"absolute_offset":1052,"submatches":[{"match":{"text":"active_tool_fold"},"start":28,"end":44}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_event_renderer_tool_fold.py"},"lines":{"text":"        self.assertIsNone(renderer.active_tool_fold_snapshot())\n"},"line_number":69,"absolute_offset":2421,"submatches":[{"match":{"text":"active_tool_fold"},"start":35,"end":51}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_event_renderer_tool_fold.py"},"lines":{"text":"        snapshot = renderer.active_tool_fold_snapshot()\n"},"line_number":163,"absolute_offset":5472,"submatches":[{"match":{"text":"active_tool_fold"},"start":28,"end":44}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_event_renderer_tool_fold.py"},"lines":{"text":"            renderer.set_scratchpad_dir(scratchpad)\n"},"line_number":320,"absolute_offset":11279,"submatches":[{"match":{"text":"scratchpad_dir"},"start":25,"end":39}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_event_renderer_tool_fold.py"},"lines":{"text":"            snapshot = renderer.active_tool_fold_snapshot()\n"},"line_number":339,"absolute_offset":11883,"submatches":[{"match":{"text":"active_tool_fold"},"start":32,"end":48}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_event_renderer_tool_fold.py"},"lines":{"text":"        self.assertIsNone(renderer.active_tool_fold_snapshot())\n"},"line_number":387,"absolute_offset":13805,"submatches":[{"match":{"text":"active_tool_fold"},"start":35,"end":51}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_event_renderer_tool_fold.py"},"lines":{"text":"            renderer.set_scratchpad_dir(scratchpad)\n"},"line_number":396,"absolute_offset":14361,"submatches":[{"match":{"text":"scratchpad_dir"},"start":25,"end":39}]}}
{"type":"end","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_event_renderer_tool_fold.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":57893,"human":"0.000058s"},"searches":1,"searches_with_match":1,"bytes_searched":15324,"bytes_printed":2387,"matched_lines":7,"matches":7}}}
{"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":"        self._sync_renderer_scratchpad_dir()\n"},"line_number":288,"absolute_offset":10190,"submatches":[{"match":{"text":"scratchpad_dir"},"start":28,"end":42}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                lambda: self._ui_mode != UIMode.BTW and self._has_active_tool_fold()\n"},"line_number":613,"absolute_offset":24276,"submatches":[{"match":{"text":"active_tool_fold"},"start":66,"end":82}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"    def _sync_renderer_scratchpad_dir(self) -> None:\n"},"line_number":913,"absolute_offset":37412,"submatches":[{"match":{"text":"scratchpad_dir"},"start":23,"end":37}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        set_scratchpad_dir = getattr(self._renderer, \"set_scratchpad_dir\", None)\n"},"line_number":919,"absolute_offset":37774,"submatches":[{"match":{"text":"scratchpad_dir"},"start":12,"end":26},{"match":{"text":"scratchpad_dir"},"start":58,"end":72}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        if not callable(set_scratchpad_dir):\n"},"line_number":920,"absolute_offset":37855,"submatches":[{"match":{"text":"scratchpad_dir"},"start":28,"end":42}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        set_scratchpad_dir(self._resolve_session_scratchpad_dir())\n"},"line_number":922,"absolute_offset":37919,"submatches":[{"match":{"text":"scratchpad_dir"},"start":12,"end":26},{"match":{"text":"scratchpad_dir"},"start":49,"end":63}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"    def _resolve_session_scratchpad_dir(self) -> Path | None:\n"},"line_number":924,"absolute_offset":37987,"submatches":[{"match":{"text":"scratchpad_dir"},"start":25,"end":39}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        from comate_agent_sdk.agent.setup import resolve_scratchpad_dir\n"},"line_number":926,"absolute_offset":38147,"submatches":[{"match":{"text":"scratchpad_dir"},"start":57,"end":71}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"            return resolve_scratchpad_dir(self._session.runtime)\n"},"line_number":929,"absolute_offset":38233,"submatches":[{"match":{"text":"scratchpad_dir"},"start":27,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        self._sync_renderer_scratchpad_dir()\n"},"line_number":2946,"absolute_offset":120619,"submatches":[{"match":{"text":"scratchpad_dir"},"start":28,"end":42}]}}
{"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":136043,"human":"0.000136s"},"searches":1,"searches_with_match":1,"bytes_searched":140435,"bytes_printed":3442,"matched_lines":10,"matches":12}}}
{"type":"begin","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/history_sync.py"}}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/history_sync.py"},"lines":{"text":"from comate_cli.terminal_agent.tool_fold import ActiveToolFold, is_foldable_tool\n"},"line_number":27,"absolute_offset":895,"submatches":[{"match":{"text":"ActiveToolFold"},"start":48,"end":62}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/history_sync.py"},"lines":{"text":"        resume_fold = ActiveToolFold()\n"},"line_number":126,"absolute_offset":5011,"submatches":[{"match":{"text":"ActiveToolFold"},"start":22,"end":36}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/history_sync.py"},"lines":{"text":"        scratchpad_dir = self._renderer.scratchpad_dir\n"},"line_number":129,"absolute_offset":5198,"submatches":[{"match":{"text":"scratchpad_dir"},"start":8,"end":22},{"match":{"text":"scratchpad_dir"},"start":40,"end":54}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/history_sync.py"},"lines":{"text":"                        if is_foldable_tool(tool_name, args_dict, scratchpad_dir=scratchpad_dir):\n"},"line_number":181,"absolute_offset":7818,"submatches":[{"match":{"text":"scratchpad_dir"},"start":66,"end":80},{"match":{"text":"scratchpad_dir"},"start":81,"end":95}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/history_sync.py"},"lines":{"text":"                            resume_fold.add_call(\n"},"line_number":182,"absolute_offset":7916,"submatches":[{"match":{"text":"add_call"},"start":40,"end":48}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/history_sync.py"},"lines":{"text":"                                scratchpad_dir=scratchpad_dir,\n"},"line_number":187,"absolute_offset":8177,"submatches":[{"match":{"text":"scratchpad_dir"},"start":32,"end":46},{"match":{"text":"scratchpad_dir"},"start":47,"end":61}]}}
{"type":"end","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/history_sync.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":50711,"human":"0.000051s"},"searches":1,"searches_with_match":1,"bytes_searched":25537,"bytes_printed":2344,"matched_lines":6,"matches":9}}}
{"type":"begin","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/render_panels.py"}}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/render_panels.py"},"lines":{"text":"        if self._has_active_tool_fold():\n"},"line_number":157,"absolute_offset":4700,"submatches":[{"match":{"text":"active_tool_fold"},"start":21,"end":37}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/render_panels.py"},"lines":{"text":"        if self._has_active_tool_fold():\n"},"line_number":374,"absolute_offset":14725,"submatches":[{"match":{"text":"active_tool_fold"},"start":21,"end":37}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/render_panels.py"},"lines":{"text":"        if self._has_active_tool_fold():\n"},"line_number":755,"absolute_offset":30751,"submatches":[{"match":{"text":"active_tool_fold"},"start":21,"end":37}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/render_panels.py"},"lines":{"text":"    def _active_tool_fold_snapshot(self):\n"},"line_number":780,"absolute_offset":31911,"submatches":[{"match":{"text":"active_tool_fold"},"start":9,"end":25}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/render_panels.py"},"lines":{"text":"        active_fold_fn = getattr(renderer, \"active_tool_fold_snapshot\", None)\n"},"line_number":782,"absolute_offset":32005,"submatches":[{"match":{"text":"active_tool_fold"},"start":44,"end":60}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/render_panels.py"},"lines":{"text":"    def _has_active_tool_fold(self) -> bool:\n"},"line_number":787,"absolute_offset":32181,"submatches":[{"match":{"text":"active_tool_fold"},"start":13,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/render_panels.py"},"lines":{"text":"        return self._active_tool_fold_snapshot() is not None\n"},"line_number":788,"absolute_offset":32226,"submatches":[{"match":{"text":"active_tool_fold"},"start":21,"end":37}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/render_panels.py"},"lines":{"text":"        active_fold = self._active_tool_fold_snapshot()\n"},"line_number":800,"absolute_offset":32699,"submatches":[{"match":{"text":"active_tool_fold"},"start":28,"end":44}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/render_panels.py"},"lines":{"text":"        active_fold = self._active_tool_fold_snapshot()\n"},"line_number":828,"absolute_offset":34019,"submatches":[{"match":{"text":"active_tool_fold"},"start":28,"end":44}]}}
{"type":"end","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/render_panels.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":52519,"human":"0.000053s"},"searches":1,"searches_with_match":1,"bytes_searched":61813,"bytes_printed":3125,"matched_lines":9,"matches":9}}}
{"type":"begin","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tool_fold.py"}}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tool_fold.py"},"lines":{"text":"    scratchpad_dir: Path | str | None = None,\n"},"line_number":83,"absolute_offset":2345,"submatches":[{"match":{"text":"scratchpad_dir"},"start":4,"end":18}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tool_fold.py"},"lines":{"text":"        return \"scratch\" if _is_scratch_target(args, scratchpad_dir) else None\n"},"line_number":95,"absolute_offset":3031,"submatches":[{"match":{"text":"scratchpad_dir"},"start":53,"end":67}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tool_fold.py"},"lines":{"text":"    scratchpad_dir: Path | str | None = None,\n"},"line_number":103,"absolute_offset":3249,"submatches":[{"match":{"text":"scratchpad_dir"},"start":4,"end":18}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tool_fold.py"},"lines":{"text":"    return tool_fold_kind(tool_name, args, scratchpad_dir=scratchpad_dir) is not None\n"},"line_number":105,"absolute_offset":3306,"submatches":[{"match":{"text":"scratchpad_dir"},"start":43,"end":57},{"match":{"text":"scratchpad_dir"},"start":58,"end":72}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tool_fold.py"},"lines":{"text":"def _is_scratch_target(args: dict[str, Any] | None, scratchpad_dir: Path | str | None) -> bool:\n"},"line_number":114,"absolute_offset":3569,"submatches":[{"match":{"text":"scratchpad_dir"},"start":52,"end":66}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tool_fold.py"},"lines":{"text":"    # scratchpad_dir 由 TUI 宿主从 ChatSession 取得后传入；未接线时（session 尚未\n"},"line_number":115,"absolute_offset":3665,"submatches":[{"match":{"text":"scratchpad_dir"},"start":6,"end":20}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tool_fold.py"},"lines":{"text":"    if scratchpad_dir is None:\n"},"line_number":117,"absolute_offset":3843,"submatches":[{"match":{"text":"scratchpad_dir"},"start":7,"end":21}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tool_fold.py"},"lines":{"text":"    return is_scratchpad_path(target, scratchpad_dir=scratchpad_dir)\n"},"line_number":122,"absolute_offset":3975,"submatches":[{"match":{"text":"scratchpad_dir"},"start":38,"end":52},{"match":{"text":"scratchpad_dir"},"start":53,"end":67}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tool_fold.py"},"lines":{"text":"    scratchpad_dir: Path | str | None = None,\n"},"line_number":154,"absolute_offset":5059,"submatches":[{"match":{"text":"scratchpad_dir"},"start":4,"end":18}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tool_fold.py"},"lines":{"text":"    kind = tool_fold_kind(tool_name, args, scratchpad_dir=scratchpad_dir)\n"},"line_number":156,"absolute_offset":5115,"submatches":[{"match":{"text":"scratchpad_dir"},"start":43,"end":57},{"match":{"text":"scratchpad_dir"},"start":58,"end":72}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tool_fold.py"},"lines":{"text":"class ActiveToolFold:\n"},"line_number":238,"absolute_offset":8253,"submatches":[{"match":{"text":"ActiveToolFold"},"start":6,"end":20}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tool_fold.py"},"lines":{"text":"    def add_call(\n"},"line_number":242,"absolute_offset":8353,"submatches":[{"match":{"text":"add_call"},"start":8,"end":16}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tool_fold.py"},"lines":{"text":"        scratchpad_dir: Path | str | None = None,\n"},"line_number":249,"absolute_offset":8514,"submatches":[{"match":{"text":"scratchpad_dir"},"start":8,"end":22}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tool_fold.py"},"lines":{"text":"        kind = tool_fold_kind(tool_name, args, scratchpad_dir=scratchpad_dir)\n"},"line_number":251,"absolute_offset":8579,"submatches":[{"match":{"text":"scratchpad_dir"},"start":47,"end":61},{"match":{"text":"scratchpad_dir"},"start":62,"end":76}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tool_fold.py"},"lines":{"text":"                hint=fold_hint_for_tool(tool_name, args, scratchpad_dir=scratchpad_dir),\n"},"line_number":265,"absolute_offset":9087,"submatches":[{"match":{"text":"scratchpad_dir"},"start":57,"end":71},{"match":{"text":"scratchpad_dir"},"start":72,"end":86}]}}
{"type":"end","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tool_fold.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":49635,"human":"0.000050s"},"searches":1,"searches_with_match":1,"bytes_searched":12045,"bytes_printed":5270,"matched_lines":15,"matches":20}}}
{"type":"begin","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tui_replace_session_resume_hint.py"}}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tui_replace_session_resume_hint.py"},"lines":{"text":"        self._sync_renderer_scratchpad_dir = MagicMock()\n"},"line_number":55,"absolute_offset":2104,"submatches":[{"match":{"text":"scratchpad_dir"},"start":28,"end":42}]}}
{"type":"end","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tui_replace_session_resume_hint.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":18648,"human":"0.000019s"},"searches":1,"searches_with_match":1,"bytes_searched":3343,"bytes_printed":463,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_stream_staging_panel.py"}}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_stream_staging_panel.py"},"lines":{"text":"    def _has_active_tool_fold(self) -> bool:\n"},"line_number":26,"absolute_offset":824,"submatches":[{"match":{"text":"active_tool_fold"},"start":13,"end":29}]}}
{"type":"end","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_stream_staging_panel.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":10241,"human":"0.000010s"},"searches":1,"searches_with_match":1,"bytes_searched":7611,"bytes_printed":430,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tui_scratchpad_fold_wiring.py"}}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tui_scratchpad_fold_wiring.py"},"lines":{"text":"def _session(scratchpad_dir: Path) -> SimpleNamespace:\n"},"line_number":24,"absolute_offset":772,"submatches":[{"match":{"text":"scratchpad_dir"},"start":13,"end":27}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tui_scratchpad_fold_wiring.py"},"lines":{"text":"    # resolve_scratchpad_dir 对已继承路径直接返回，无需真实 runtime 派生。\n"},"line_number":25,"absolute_offset":827,"submatches":[{"match":{"text":"scratchpad_dir"},"start":14,"end":28}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tui_scratchpad_fold_wiring.py"},"lines":{"text":"        runtime=SimpleNamespace(_scratchpad_dir=scratchpad_dir),\n"},"line_number":30,"absolute_offset":1024,"submatches":[{"match":{"text":"scratchpad_dir"},"start":33,"end":47},{"match":{"text":"scratchpad_dir"},"start":48,"end":62}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tui_scratchpad_fold_wiring.py"},"lines":{"text":"        tui._sync_renderer_scratchpad_dir()\n"},"line_number":46,"absolute_offset":1680,"submatches":[{"match":{"text":"scratchpad_dir"},"start":27,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tui_scratchpad_fold_wiring.py"},"lines":{"text":"        self.assertEqual(renderer.scratchpad_dir, old_scratchpad)\n"},"line_number":47,"absolute_offset":1724,"submatches":[{"match":{"text":"scratchpad_dir"},"start":34,"end":48}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tui_scratchpad_fold_wiring.py"},"lines":{"text":"        self.assertEqual(renderer.scratchpad_dir, new_scratchpad)\n"},"line_number":75,"absolute_offset":2948,"submatches":[{"match":{"text":"scratchpad_dir"},"start":34,"end":48}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tui_scratchpad_fold_wiring.py"},"lines":{"text":"        snapshot = renderer.active_tool_fold_snapshot()\n"},"line_number":85,"absolute_offset":3283,"submatches":[{"match":{"text":"active_tool_fold"},"start":28,"end":44}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tui_scratchpad_fold_wiring.py"},"lines":{"text":"        tui._sync_renderer_scratchpad_dir()\n"},"line_number":97,"absolute_offset":3821,"submatches":[{"match":{"text":"scratchpad_dir"},"start":27,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tui_scratchpad_fold_wiring.py"},"lines":{"text":"        self.assertIsNone(renderer.scratchpad_dir)\n"},"line_number":99,"absolute_offset":3866,"submatches":[{"match":{"text":"scratchpad_dir"},"start":35,"end":49}]}}
{"type":"end","data":{"path":{"text":"/home/andy/works/agent-sdk/packages/comate_cli/tests/test_tui_scratchpad_fold_wiring.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":48542,"human":"0.000049s"},"searches":1,"searches_with_match":1,"bytes_searched":3917,"bytes_printed":3104,"matched_lines":9,"matches":10}}}
{"data":{"elapsed_total":{"human":"0.007773s","nanos":7772937,"secs":0},"stats":{"bytes_printed":39197,"bytes_searched":408456,"elapsed":{"human":"0.000825s","nanos":824664,"secs":0},"matched_lines":116,"matches":134,"searches":13,"searches_with_match":13}},"type":"summary"}
