{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"from comate_cli.terminal_agent.slash_commands import parse_slash_command_call\n"},"line_number":13,"absolute_offset":360,"submatches":[{"match":{"text":"slash"},"start":31,"end":36},{"match":{"text":"slash"},"start":59,"end":64}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        # 中断 epoch 无条件递增：_send_busy_message 用它识别\n"},"line_number":114,"absolute_offset":4298,"submatches":[{"match":{"text":"busy"},"start":47,"end":51}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        normal_mode = _mode_condition(UIMode.NORMAL)\n"},"line_number":150,"absolute_offset":5949,"submatches":[{"match":{"text":"normal_mode"},"start":8,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        tool_approval_mode = _mode_condition(UIMode.TOOL_APPROVAL)\n"},"line_number":153,"absolute_offset":6118,"submatches":[{"match":{"text":"approv"},"start":13,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        tool_approval_feedback_focused = Condition(\n"},"line_number":157,"absolute_offset":6303,"submatches":[{"match":{"text":"approv"},"start":13,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            lambda: self._approval_feedback_focused()\n"},"line_number":158,"absolute_offset":6355,"submatches":[{"match":{"text":"approv"},"start":26,"end":32}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"enter\", filter=selection_mode)\n"},"line_number":175,"absolute_offset":7236,"submatches":[{"match":{"text":"enter"},"start":23,"end":28}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        def _selection_enter(event) -> None:\n"},"line_number":176,"absolute_offset":7290,"submatches":[{"match":{"text":"enter"},"start":23,"end":28}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"escape\", filter=selection_mode)\n"},"line_number":206,"absolute_offset":8275,"submatches":[{"match":{"text":"escape"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            \"enter\",\n"},"line_number":214,"absolute_offset":8552,"submatches":[{"match":{"text":"enter"},"start":13,"end":18}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            filter=tool_approval_mode & ~tool_approval_feedback_focused,\n"},"line_number":215,"absolute_offset":8573,"submatches":[{"match":{"text":"approv"},"start":24,"end":30},{"match":{"text":"approv"},"start":46,"end":52}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        def _tool_approval_enter(event) -> None:\n"},"line_number":218,"absolute_offset":8680,"submatches":[{"match":{"text":"approv"},"start":18,"end":24},{"match":{"text":"enter"},"start":27,"end":32}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            self._handle_tool_approval_action(self._tool_approval_view.confirm())\n"},"line_number":220,"absolute_offset":8751,"submatches":[{"match":{"text":"approv"},"start":30,"end":36},{"match":{"text":"approv"},"start":57,"end":63}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            \"enter\",\n"},"line_number":225,"absolute_offset":8928,"submatches":[{"match":{"text":"enter"},"start":13,"end":18}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            filter=tool_approval_mode & tool_approval_feedback_focused,\n"},"line_number":226,"absolute_offset":8949,"submatches":[{"match":{"text":"approv"},"start":24,"end":30},{"match":{"text":"approv"},"start":45,"end":51}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        def _tool_approval_feedback_enter(event) -> None:\n"},"line_number":229,"absolute_offset":9055,"submatches":[{"match":{"text":"approv"},"start":18,"end":24},{"match":{"text":"enter"},"start":36,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            self._handle_tool_approval_action(\n"},"line_number":231,"absolute_offset":9135,"submatches":[{"match":{"text":"approv"},"start":30,"end":36}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"                self._tool_approval_view.submit_feedback()\n"},"line_number":232,"absolute_offset":9182,"submatches":[{"match":{"text":"approv"},"start":27,"end":33}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            filter=tool_approval_mode & ~tool_approval_feedback_focused,\n"},"line_number":239,"absolute_offset":9368,"submatches":[{"match":{"text":"approv"},"start":24,"end":30},{"match":{"text":"approv"},"start":46,"end":52}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        def _tool_approval_up(event) -> None:\n"},"line_number":242,"absolute_offset":9475,"submatches":[{"match":{"text":"approv"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            self._tool_approval_view.move_selection(-1)\n"},"line_number":244,"absolute_offset":9543,"submatches":[{"match":{"text":"approv"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            filter=tool_approval_mode & ~tool_approval_feedback_focused,\n"},"line_number":249,"absolute_offset":9674,"submatches":[{"match":{"text":"approv"},"start":24,"end":30},{"match":{"text":"approv"},"start":46,"end":52}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        def _tool_approval_down(event) -> None:\n"},"line_number":252,"absolute_offset":9781,"submatches":[{"match":{"text":"approv"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            self._tool_approval_view.move_selection(1)\n"},"line_number":254,"absolute_offset":9851,"submatches":[{"match":{"text":"approv"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            filter=tool_approval_mode & ~tool_approval_feedback_focused,\n"},"line_number":259,"absolute_offset":9978,"submatches":[{"match":{"text":"approv"},"start":24,"end":30},{"match":{"text":"approv"},"start":46,"end":52}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        def _tool_approval_k(event) -> None:\n"},"line_number":262,"absolute_offset":10085,"submatches":[{"match":{"text":"approv"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            self._tool_approval_view.move_selection(-1)\n"},"line_number":264,"absolute_offset":10152,"submatches":[{"match":{"text":"approv"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            filter=tool_approval_mode & ~tool_approval_feedback_focused,\n"},"line_number":269,"absolute_offset":10280,"submatches":[{"match":{"text":"approv"},"start":24,"end":30},{"match":{"text":"approv"},"start":46,"end":52}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        def _tool_approval_j(event) -> None:\n"},"line_number":272,"absolute_offset":10387,"submatches":[{"match":{"text":"approv"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            self._tool_approval_view.move_selection(1)\n"},"line_number":274,"absolute_offset":10454,"submatches":[{"match":{"text":"approv"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        def _tool_approval_pick_digit(number: int) -> None:\n"},"line_number":277,"absolute_offset":10541,"submatches":[{"match":{"text":"approv"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            action = self._tool_approval_view.confirm_index(number)\n"},"line_number":278,"absolute_offset":10601,"submatches":[{"match":{"text":"approv"},"start":32,"end":38}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            self._handle_tool_approval_action(action)\n"},"line_number":279,"absolute_offset":10669,"submatches":[{"match":{"text":"approv"},"start":30,"end":36}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            filter=tool_approval_mode & ~tool_approval_feedback_focused,\n"},"line_number":285,"absolute_offset":10835,"submatches":[{"match":{"text":"approv"},"start":24,"end":30},{"match":{"text":"approv"},"start":46,"end":52}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        def _tool_approval_digit_1(event) -> None:\n"},"line_number":288,"absolute_offset":10942,"submatches":[{"match":{"text":"approv"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            _tool_approval_pick_digit(1)\n"},"line_number":290,"absolute_offset":11015,"submatches":[{"match":{"text":"approv"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            filter=tool_approval_mode & ~tool_approval_feedback_focused,\n"},"line_number":294,"absolute_offset":11097,"submatches":[{"match":{"text":"approv"},"start":24,"end":30},{"match":{"text":"approv"},"start":46,"end":52}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        def _tool_approval_digit_2(event) -> None:\n"},"line_number":297,"absolute_offset":11204,"submatches":[{"match":{"text":"approv"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            _tool_approval_pick_digit(2)\n"},"line_number":299,"absolute_offset":11277,"submatches":[{"match":{"text":"approv"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            filter=tool_approval_mode & ~tool_approval_feedback_focused,\n"},"line_number":303,"absolute_offset":11359,"submatches":[{"match":{"text":"approv"},"start":24,"end":30},{"match":{"text":"approv"},"start":46,"end":52}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        def _tool_approval_digit_3(event) -> None:\n"},"line_number":306,"absolute_offset":11466,"submatches":[{"match":{"text":"approv"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            _tool_approval_pick_digit(3)\n"},"line_number":308,"absolute_offset":11539,"submatches":[{"match":{"text":"approv"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            filter=tool_approval_mode & ~tool_approval_feedback_focused,\n"},"line_number":312,"absolute_offset":11621,"submatches":[{"match":{"text":"approv"},"start":24,"end":30},{"match":{"text":"approv"},"start":46,"end":52}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        def _tool_approval_digit_4(event) -> None:\n"},"line_number":315,"absolute_offset":11728,"submatches":[{"match":{"text":"approv"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            _tool_approval_pick_digit(4)\n"},"line_number":317,"absolute_offset":11801,"submatches":[{"match":{"text":"approv"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"tab\", filter=tool_approval_mode, eager=True)\n"},"line_number":319,"absolute_offset":11843,"submatches":[{"match":{"text":"approv"},"start":41,"end":47}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        def _tool_approval_tab(event) -> None:\n"},"line_number":320,"absolute_offset":11911,"submatches":[{"match":{"text":"approv"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            self._tool_approval_view.activate_feedback()\n"},"line_number":322,"absolute_offset":11980,"submatches":[{"match":{"text":"approv"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"escape\", filter=tool_approval_mode, eager=True)\n"},"line_number":326,"absolute_offset":12109,"submatches":[{"match":{"text":"escape"},"start":23,"end":29},{"match":{"text":"approv"},"start":44,"end":50}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        def _tool_approval_escape(event) -> None:\n"},"line_number":327,"absolute_offset":12180,"submatches":[{"match":{"text":"approv"},"start":18,"end":24},{"match":{"text":"escape"},"start":27,"end":33}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            self._handle_tool_approval_action(self._tool_approval_view.cancel())\n"},"line_number":329,"absolute_offset":12252,"submatches":[{"match":{"text":"approv"},"start":30,"end":36},{"match":{"text":"approv"},"start":57,"end":63}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            filter=tool_approval_mode & ~tool_approval_feedback_focused,\n"},"line_number":335,"absolute_offset":12449,"submatches":[{"match":{"text":"approv"},"start":24,"end":30},{"match":{"text":"approv"},"start":46,"end":52}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        def _tool_approval_cycle_mode(event) -> None:\n"},"line_number":338,"absolute_offset":12556,"submatches":[{"match":{"text":"approv"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"enter\", filter=exit_guard_active, eager=True)\n"},"line_number":342,"absolute_offset":12670,"submatches":[{"match":{"text":"enter"},"start":23,"end":28}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        def _exit_confirm_enter(event) -> None:\n"},"line_number":343,"absolute_offset":12739,"submatches":[{"match":{"text":"enter"},"start":26,"end":31}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"escape\", filter=exit_guard_active, eager=True)\n"},"line_number":388,"absolute_offset":14371,"submatches":[{"match":{"text":"escape"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        def _exit_confirm_escape(event) -> None:\n"},"line_number":389,"absolute_offset":14441,"submatches":[{"match":{"text":"escape"},"start":26,"end":32}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"enter\", filter=plugin_mode, eager=True)\n"},"line_number":394,"absolute_offset":14613,"submatches":[{"match":{"text":"enter"},"start":23,"end":28}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        def _plugin_enter(event) -> None:\n"},"line_number":395,"absolute_offset":14676,"submatches":[{"match":{"text":"enter"},"start":20,"end":25}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            action = self._plugin_ui.handle_enter()\n"},"line_number":397,"absolute_offset":14740,"submatches":[{"match":{"text":"enter"},"start":44,"end":49}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"escape\", filter=plugin_mode)\n"},"line_number":456,"absolute_offset":16481,"submatches":[{"match":{"text":"escape"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        def _plugin_escape(event) -> None:\n"},"line_number":457,"absolute_offset":16533,"submatches":[{"match":{"text":"escape"},"start":20,"end":26}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            action = self._plugin_ui.handle_escape()\n"},"line_number":459,"absolute_offset":16598,"submatches":[{"match":{"text":"escape"},"start":44,"end":50}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"enter\", filter=install_mode, eager=True)\n"},"line_number":522,"absolute_offset":18807,"submatches":[{"match":{"text":"enter"},"start":23,"end":28}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        def _install_enter(event) -> None:\n"},"line_number":523,"absolute_offset":18871,"submatches":[{"match":{"text":"enter"},"start":21,"end":26}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            should_close = self._install_view.handle_enter()\n"},"line_number":525,"absolute_offset":18936,"submatches":[{"match":{"text":"enter"},"start":53,"end":58}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"escape\", filter=install_mode)\n"},"line_number":530,"absolute_offset":19100,"submatches":[{"match":{"text":"escape"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        def _install_escape(event) -> None:\n"},"line_number":531,"absolute_offset":19153,"submatches":[{"match":{"text":"escape"},"start":21,"end":27}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            should_close = self._install_view.handle_escape()\n"},"line_number":533,"absolute_offset":19219,"submatches":[{"match":{"text":"escape"},"start":53,"end":59}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"escape\", filter=mcp_connecting_mode)\n"},"line_number":538,"absolute_offset":19384,"submatches":[{"match":{"text":"escape"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        def _mcp_connecting_escape(event) -> None:\n"},"line_number":539,"absolute_offset":19444,"submatches":[{"match":{"text":"escape"},"start":28,"end":34}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            should_close = self._mcp_connecting_view.handle_escape()\n"},"line_number":541,"absolute_offset":19517,"submatches":[{"match":{"text":"escape"},"start":60,"end":66}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"escape\", filter=btw_mode)\n"},"line_number":547,"absolute_offset":19740,"submatches":[{"match":{"text":"escape"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        def _btw_escape(event) -> None:\n"},"line_number":548,"absolute_offset":19789,"submatches":[{"match":{"text":"escape"},"start":17,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            should_close = self._btw_view.handle_escape()\n"},"line_number":550,"absolute_offset":19851,"submatches":[{"match":{"text":"escape"},"start":49,"end":55}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"enter\", filter=config_mode, eager=True)\n"},"line_number":614,"absolute_offset":21962,"submatches":[{"match":{"text":"enter"},"start":23,"end":28}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        def _config_enter(event) -> None:\n"},"line_number":615,"absolute_offset":22025,"submatches":[{"match":{"text":"enter"},"start":20,"end":25}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            self._config_ui.handle_enter()\n"},"line_number":617,"absolute_offset":22089,"submatches":[{"match":{"text":"enter"},"start":35,"end":40}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"escape\", filter=config_mode)\n"},"line_number":620,"absolute_offset":22164,"submatches":[{"match":{"text":"escape"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        def _config_escape(event) -> None:\n"},"line_number":621,"absolute_offset":22216,"submatches":[{"match":{"text":"escape"},"start":20,"end":26}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            result = self._config_ui.handle_escape()\n"},"line_number":623,"absolute_offset":22281,"submatches":[{"match":{"text":"escape"},"start":44,"end":50}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"escape\", filter=statusline_mode)\n"},"line_number":655,"absolute_offset":23408,"submatches":[{"match":{"text":"escape"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        def _statusline_escape(event) -> None:\n"},"line_number":656,"absolute_offset":23464,"submatches":[{"match":{"text":"escape"},"start":24,"end":30}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            result = self._statusline_ui.handle_escape()\n"},"line_number":658,"absolute_offset":23533,"submatches":[{"match":{"text":"escape"},"start":48,"end":54}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"enter\", filter=goal_resume_mode, eager=True)\n"},"line_number":684,"absolute_offset":24477,"submatches":[{"match":{"text":"enter"},"start":23,"end":28}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        def _goal_resume_enter(event) -> None:\n"},"line_number":685,"absolute_offset":24545,"submatches":[{"match":{"text":"enter"},"start":25,"end":30}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            self._handle_goal_resume_action(self._goal_resume_ui.handle_enter())\n"},"line_number":687,"absolute_offset":24614,"submatches":[{"match":{"text":"enter"},"start":72,"end":77}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"escape\", filter=goal_resume_mode)\n"},"line_number":702,"absolute_offset":25221,"submatches":[{"match":{"text":"escape"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        def _goal_resume_escape(event) -> None:\n"},"line_number":703,"absolute_offset":25278,"submatches":[{"match":{"text":"escape"},"start":25,"end":31}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            self._handle_goal_resume_action(self._goal_resume_ui.handle_escape())\n"},"line_number":705,"absolute_offset":25348,"submatches":[{"match":{"text":"escape"},"start":72,"end":78}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"enter\", filter=goal_edit_mode, eager=True)\n"},"line_number":709,"absolute_offset":25510,"submatches":[{"match":{"text":"enter"},"start":23,"end":28}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"escape\", filter=goal_edit_mode)\n"},"line_number":718,"absolute_offset":25848,"submatches":[{"match":{"text":"escape"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"enter\", filter=question_mode)\n"},"line_number":723,"absolute_offset":26016,"submatches":[{"match":{"text":"enter"},"start":23,"end":28}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        def _question_enter(event) -> None:\n"},"line_number":724,"absolute_offset":26069,"submatches":[{"match":{"text":"enter"},"start":22,"end":27}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            action = self._question_ui.handle_enter()\n"},"line_number":726,"absolute_offset":26135,"submatches":[{"match":{"text":"enter"},"start":46,"end":51}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"escape\", filter=question_mode)\n"},"line_number":805,"absolute_offset":28837,"submatches":[{"match":{"text":"escape"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            self._handle_question_action(self._question_ui.handle_escape())\n"},"line_number":808,"absolute_offset":28958,"submatches":[{"match":{"text":"escape"},"start":66,"end":72}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"c-j\", filter=normal_mode, eager=True)\n"},"line_number":812,"absolute_offset":29106,"submatches":[{"match":{"text":"normal_mode"},"start":36,"end":47}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"enter\", filter=normal_mode, eager=True)\n"},"line_number":816,"absolute_offset":29274,"submatches":[{"match":{"text":"enter"},"start":23,"end":28},{"match":{"text":"normal_mode"},"start":38,"end":49}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        def _enter(event) -> None:\n"},"line_number":817,"absolute_offset":29337,"submatches":[{"match":{"text":"enter"},"start":13,"end":18}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            if self._handle_normal_enter_key(buffer, event):\n"},"line_number":819,"absolute_offset":29414,"submatches":[{"match":{"text":"enter"},"start":35,"end":40}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"                # ✅ 决策：slash 补全 -> 立即提交；mention 补全 -> 只填入不提交\n"},"line_number":830,"absolute_offset":29805,"submatches":[{"match":{"text":"slash"},"start":31,"end":36}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"                parsed_slash = parse_slash_command_call(text_now)\n"},"line_number":838,"absolute_offset":30155,"submatches":[{"match":{"text":"slash"},"start":23,"end":28},{"match":{"text":"slash"},"start":37,"end":42}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"                if (parsed_slash is not None) and (not is_mention):\n"},"line_number":840,"absolute_offset":30222,"submatches":[{"match":{"text":"slash"},"start":27,"end":32}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"tab\", filter=normal_mode)\n"},"line_number":847,"absolute_offset":30441,"submatches":[{"match":{"text":"normal_mode"},"start":36,"end":47}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            skill_suggest = getattr(self, \"_skill_slash_mention_suggest\", None)\n"},"line_number":857,"absolute_offset":30917,"submatches":[{"match":{"text":"slash"},"start":50,"end":55}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"s-tab\", filter=normal_mode & has_completions)\n"},"line_number":868,"absolute_offset":31347,"submatches":[{"match":{"text":"normal_mode"},"start":38,"end":49}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"s-tab\", filter=normal_mode & ~has_completions)\n"},"line_number":872,"absolute_offset":31511,"submatches":[{"match":{"text":"normal_mode"},"start":38,"end":49}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"up\", filter=normal_mode & ~todo_panel_expanded)\n"},"line_number":877,"absolute_offset":31681,"submatches":[{"match":{"text":"normal_mode"},"start":35,"end":46}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"down\", filter=normal_mode & ~todo_panel_expanded)\n"},"line_number":890,"absolute_offset":32245,"submatches":[{"match":{"text":"normal_mode"},"start":37,"end":48}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"escape\", filter=normal_mode)\n"},"line_number":901,"absolute_offset":32738,"submatches":[{"match":{"text":"escape"},"start":23,"end":29},{"match":{"text":"normal_mode"},"start":39,"end":50}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"                \"_hide_exact_slash_completion\",\n"},"line_number":912,"absolute_offset":33173,"submatches":[{"match":{"text":"slash"},"start":29,"end":34}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            is_busy = False\n"},"line_number":921,"absolute_offset":33482,"submatches":[{"match":{"text":"busy"},"start":15,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            is_busy_fn = getattr(self._session, \"is_busy\", None)\n"},"line_number":922,"absolute_offset":33510,"submatches":[{"match":{"text":"busy"},"start":15,"end":19},{"match":{"text":"busy"},"start":52,"end":56}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            if callable(is_busy_fn):\n"},"line_number":923,"absolute_offset":33575,"submatches":[{"match":{"text":"busy"},"start":27,"end":31}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"                is_busy = bool(is_busy_fn())\n"},"line_number":924,"absolute_offset":33612,"submatches":[{"match":{"text":"busy"},"start":19,"end":23},{"match":{"text":"busy"},"start":34,"end":38}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"                is_busy = bool(self._busy)\n"},"line_number":926,"absolute_offset":33675,"submatches":[{"match":{"text":"busy"},"start":19,"end":23},{"match":{"text":"busy"},"start":37,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            if is_busy:\n"},"line_number":927,"absolute_offset":33718,"submatches":[{"match":{"text":"busy"},"start":18,"end":22}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"                self._clear_input_area()\n"},"line_number":944,"absolute_offset":34367,"submatches":[{"match":{"text":"input_area"},"start":28,"end":38}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"                self._app.layout.focus(self._input_area.window)\n"},"line_number":948,"absolute_offset":34504,"submatches":[{"match":{"text":"input_area"},"start":45,"end":55}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            if self._busy:\n"},"line_number":963,"absolute_offset":35266,"submatches":[{"match":{"text":"busy"},"start":21,"end":25}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"                    self._request_exit(source=\"ctrl_c_busy_second\")\n"},"line_number":974,"absolute_offset":35756,"submatches":[{"match":{"text":"busy"},"start":54,"end":58}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            self._clear_input_area()\n"},"line_number":996,"absolute_offset":36697,"submatches":[{"match":{"text":"input_area"},"start":24,"end":34}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"c-o\", filter=normal_mode)\n"},"line_number":1004,"absolute_offset":36935,"submatches":[{"match":{"text":"normal_mode"},"start":36,"end":47}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"            filter=normal_mode & Condition(lambda: self._should_show_todo_panel()),\n"},"line_number":1022,"absolute_offset":37639,"submatches":[{"match":{"text":"normal_mode"},"start":19,"end":30}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"c-t\", filter=normal_mode)\n"},"line_number":1030,"absolute_offset":37944,"submatches":[{"match":{"text":"normal_mode"},"start":36,"end":47}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"up\", filter=normal_mode & todo_panel_expanded)\n"},"line_number":1038,"absolute_offset":38299,"submatches":[{"match":{"text":"normal_mode"},"start":35,"end":46}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"lines":{"text":"        @bindings.add(\"down\", filter=normal_mode & todo_panel_expanded)\n"},"line_number":1045,"absolute_offset":38560,"submatches":[{"match":{"text":"normal_mode"},"start":37,"end":48}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui_parts/key_bindings.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":441204,"human":"0.000441s"},"searches":1,"searches_with_match":1,"bytes_searched":39340,"bytes_printed":43321,"matched_lines":128,"matches":152}}}
{"data":{"elapsed_total":{"human":"0.001545s","nanos":1545287,"secs":0},"stats":{"bytes_printed":43321,"bytes_searched":39340,"elapsed":{"human":"0.000441s","nanos":441204,"secs":0},"matched_lines":128,"matches":152,"searches":1,"searches_with_match":1}},"type":"summary"}
