{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/bash-exit-code-green-dot-bug.md"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/bash-exit-code-green-dot-bug.md"},"lines":{"text":"在 `/plugin` 页面 scrollback 中，Bash 工具执行失败（exit code != 0）时，工具结果行显示的是**绿色圆点**（代表成功），而不是**红色叉号**（代表失败）。\n"},"line_number":5,"absolute_offset":80,"submatches":[{"match":{"text":"plugin"},"start":6,"end":12}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/bash-exit-code-green-dot-bug.md"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":107344,"human":"0.000107s"},"searches":1,"searches_with_match":1,"bytes_searched":4885,"bytes_printed":568,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/docs/superpowers/specs/2026-05-22-log-style-optimization-design.md"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/docs/superpowers/specs/2026-05-22-log-style-optimization-design.md"},"lines":{"text":"[green]CLI[/green] Plugin installed successfully\n"},"line_number":97,"absolute_offset":2294,"submatches":[{"match":{"text":"Plugin"},"start":19,"end":25}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/docs/superpowers/specs/2026-05-22-log-style-optimization-design.md"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":32247,"human":"0.000032s"},"searches":1,"searches_with_match":1,"bytes_searched":2747,"bytes_printed":493,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/docs/superpowers/specs/2026-05-22-comate-cli-log-styling-design.md"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/docs/superpowers/specs/2026-05-22-comate-cli-log-styling-design.md"},"lines":{"text":"CLI: Plugin installed successfully (绿色)\n"},"line_number":63,"absolute_offset":1656,"submatches":[{"match":{"text":"Plugin"},"start":5,"end":11}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/docs/superpowers/specs/2026-05-22-comate-cli-log-styling-design.md"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":10774,"human":"0.000011s"},"searches":1,"searches_with_match":1,"bytes_searched":1913,"bytes_printed":487,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/docs/superpowers/specs/2026-04-03-phrase-shuffle-design.md"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/docs/superpowers/specs/2026-04-03-phrase-shuffle-design.md"},"lines":{"text":"`SubmissionAnimator` cycles through `DEFAULT_STATUS_PHRASES` in fixed order. Every time a user sends a message, the animation starts from index 0 (\"Embellishing\") and increments sequentially. This produces an identical phrase sequence for every message, making the loading animation feel repetitive.\n"},"line_number":5,"absolute_offset":37,"submatches":[{"match":{"text":"ide"},"start":209,"end":212}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/docs/superpowers/specs/2026-04-03-phrase-shuffle-design.md"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":13695,"human":"0.000014s"},"searches":1,"searches_with_match":1,"bytes_searched":1944,"bytes_printed":726,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_slash_clear.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_slash_clear.py"},"lines":{"text":"    def provider(self) -> str:\n"},"line_number":93,"absolute_offset":3125,"submatches":[{"match":{"text":"ide"},"start":12,"end":15}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_slash_clear.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":132568,"human":"0.000133s"},"searches":1,"searches_with_match":1,"bytes_searched":13980,"bytes_printed":390,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/docs/hooks.md"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/docs/hooks.md"},"lines":{"text":"user  >  project  >  local  >  facade  >  plugin\n"},"line_number":230,"absolute_offset":10758,"submatches":[{"match":{"text":"plugin"},"start":42,"end":48}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/docs/hooks.md"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":151357,"human":"0.000151s"},"searches":1,"searches_with_match":1,"bytes_searched":38422,"bytes_printed":389,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_format_error.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_format_error.py"},"lines":{"text":"    def test_provider_401(self):\n"},"line_number":26,"absolute_offset":832,"submatches":[{"match":{"text":"ide"},"start":17,"end":20}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_format_error.py"},"lines":{"text":"        exc = self._make_exc(\"ModelProviderError\", status_code=401)\n"},"line_number":29,"absolute_offset":939,"submatches":[{"match":{"text":"ide"},"start":39,"end":42}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_format_error.py"},"lines":{"text":"    def test_provider_403(self):\n"},"line_number":35,"absolute_offset":1170,"submatches":[{"match":{"text":"ide"},"start":17,"end":20}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_format_error.py"},"lines":{"text":"        exc = self._make_exc(\"ModelProviderError\", status_code=403)\n"},"line_number":38,"absolute_offset":1277,"submatches":[{"match":{"text":"ide"},"start":39,"end":42}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_format_error.py"},"lines":{"text":"    def test_provider_404(self):\n"},"line_number":44,"absolute_offset":1516,"submatches":[{"match":{"text":"ide"},"start":17,"end":20}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_format_error.py"},"lines":{"text":"        exc = self._make_exc(\"ModelProviderError\", status_code=404)\n"},"line_number":47,"absolute_offset":1623,"submatches":[{"match":{"text":"ide"},"start":39,"end":42}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_format_error.py"},"lines":{"text":"    def test_provider_5xx(self):\n"},"line_number":53,"absolute_offset":1868,"submatches":[{"match":{"text":"ide"},"start":17,"end":20}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_format_error.py"},"lines":{"text":"        exc = self._make_exc(\"ModelProviderError\", status_code=502)\n"},"line_number":56,"absolute_offset":1975,"submatches":[{"match":{"text":"ide"},"start":39,"end":42}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_format_error.py"},"lines":{"text":"    def test_provider_stream_protocol_error(self):\n"},"line_number":62,"absolute_offset":2205,"submatches":[{"match":{"text":"ide"},"start":17,"end":20}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_format_error.py"},"lines":{"text":"        from comate_agent_sdk.llm.exceptions import ProviderStreamProtocolError\n"},"line_number":63,"absolute_offset":2256,"submatches":[{"match":{"text":"ide"},"start":56,"end":59}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_format_error.py"},"lines":{"text":"        exc = ProviderStreamProtocolError(\n"},"line_number":66,"absolute_offset":2410,"submatches":[{"match":{"text":"ide"},"start":18,"end":21}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_format_error.py"},"lines":{"text":"            provider=\"minimax\",\n"},"line_number":67,"absolute_offset":2453,"submatches":[{"match":{"text":"ide"},"start":16,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_format_error.py"},"lines":{"text":"        assert \"provider stream\" in msg.lower()\n"},"line_number":76,"absolute_offset":2748,"submatches":[{"match":{"text":"ide"},"start":20,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_format_error.py"},"lines":{"text":"        assert transient == \"Provider stream error\"\n"},"line_number":79,"absolute_offset":2886,"submatches":[{"match":{"text":"ide"},"start":33,"end":36}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_format_error.py"},"lines":{"text":"    def test_provider_stream_fallback_error(self):\n"},"line_number":81,"absolute_offset":2939,"submatches":[{"match":{"text":"ide"},"start":17,"end":20}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_format_error.py"},"lines":{"text":"            ModelProviderError,\n"},"line_number":83,"absolute_offset":3044,"submatches":[{"match":{"text":"ide"},"start":21,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_format_error.py"},"lines":{"text":"            ProviderStreamFallbackError,\n"},"line_number":84,"absolute_offset":3076,"submatches":[{"match":{"text":"ide"},"start":16,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_format_error.py"},"lines":{"text":"            ProviderStreamProtocolError,\n"},"line_number":85,"absolute_offset":3117,"submatches":[{"match":{"text":"ide"},"start":16,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_format_error.py"},"lines":{"text":"        stream_error = ProviderStreamProtocolError(\n"},"line_number":89,"absolute_offset":3242,"submatches":[{"match":{"text":"ide"},"start":27,"end":30}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_format_error.py"},"lines":{"text":"            provider=\"minimax\",\n"},"line_number":90,"absolute_offset":3294,"submatches":[{"match":{"text":"ide"},"start":16,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_format_error.py"},"lines":{"text":"        fallback_error = ModelProviderError(\n"},"line_number":96,"absolute_offset":3498,"submatches":[{"match":{"text":"ide"},"start":34,"end":37}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_format_error.py"},"lines":{"text":"        exc = ProviderStreamFallbackError(\n"},"line_number":101,"absolute_offset":3663,"submatches":[{"match":{"text":"ide"},"start":18,"end":21}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_format_error.py"},"lines":{"text":"        assert \"provider stream failed\" in msg.lower()\n"},"line_number":109,"absolute_offset":3890,"submatches":[{"match":{"text":"ide"},"start":20,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_format_error.py"},"lines":{"text":"        assert transient == \"Provider fallback failed\"\n"},"line_number":112,"absolute_offset":4037,"submatches":[{"match":{"text":"ide"},"start":33,"end":36}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_format_error.py"},"lines":{"text":"        exc = self._make_exc(\"ModelProviderError\", body, status_code=400)\n"},"line_number":122,"absolute_offset":4489,"submatches":[{"match":{"text":"ide"},"start":39,"end":42}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_format_error.py"},"lines":{"text":"            \"ModelProviderError\",\n"},"line_number":133,"absolute_offset":4933,"submatches":[{"match":{"text":"ide"},"start":22,"end":25}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_format_error.py"},"lines":{"text":"    def test_provider_400_generic(self):\n"},"line_number":141,"absolute_offset":5234,"submatches":[{"match":{"text":"ide"},"start":17,"end":20}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_format_error.py"},"lines":{"text":"        exc = self._make_exc(\"ModelProviderError\", \"bad request\", status_code=400)\n"},"line_number":144,"absolute_offset":5349,"submatches":[{"match":{"text":"ide"},"start":39,"end":42}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_format_error.py"},"lines":{"text":"            self._make_exc(\"ModelProviderError\", status_code=401),\n"},"line_number":192,"absolute_offset":7188,"submatches":[{"match":{"text":"ide"},"start":37,"end":40}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_format_error.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":89542,"human":"0.000090s"},"searches":1,"searches_with_match":1,"bytes_searched":7725,"bytes_printed":8601,"matched_lines":29,"matches":29}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/docs/superpowers/plans/2026-05-22-log-style-implementation-plan.md"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/docs/superpowers/plans/2026-05-22-log-style-implementation-plan.md"},"lines":{"text":"\"\"\"Tests for LogSource identification in logging_adapter.\"\"\"\n"},"line_number":320,"absolute_offset":8971,"submatches":[{"match":{"text":"ide"},"start":23,"end":26}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/docs/superpowers/plans/2026-05-22-log-style-implementation-plan.md"},"lines":{"text":"git commit -m \"test: add LogSource identification tests\"\n"},"line_number":405,"absolute_offset":11419,"submatches":[{"match":{"text":"ide"},"start":35,"end":38}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/docs/superpowers/plans/2026-05-22-log-style-implementation-plan.md"},"lines":{"text":"[绿色]CLI Plugin installed successfully\n"},"line_number":434,"absolute_offset":11982,"submatches":[{"match":{"text":"Plugin"},"start":12,"end":18}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/docs/superpowers/plans/2026-05-22-log-style-implementation-plan.md"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":120876,"human":"0.000121s"},"searches":1,"searches_with_match":1,"bytes_searched":12202,"bytes_printed":1179,"matched_lines":3,"matches":3}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_completion_context_activation.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_completion_context_activation.py"},"lines":{"text":"    def test_mention_completion_rejects_inside_token_editing(self) -> None:\n"},"line_number":53,"absolute_offset":1931,"submatches":[{"match":{"text":"ide"},"start":43,"end":46}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_completion_context_activation.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":26317,"human":"0.000026s"},"searches":1,"searches_with_match":1,"bytes_searched":4310,"bytes_printed":471,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_sync.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_sync.py"},"lines":{"text":"        side_effect=fake_run_in_terminal,\n"},"line_number":64,"absolute_offset":1911,"submatches":[{"match":{"text":"ide"},"start":9,"end":12}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_sync.py"},"lines":{"text":"        side_effect=fake_run_in_terminal,\n"},"line_number":100,"absolute_offset":3322,"submatches":[{"match":{"text":"ide"},"start":9,"end":12}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_sync.py"},"lines":{"text":"            side_effect=fake_run_in_terminal,\n"},"line_number":141,"absolute_offset":4854,"submatches":[{"match":{"text":"ide"},"start":13,"end":16}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_sync.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":161396,"human":"0.000161s"},"searches":1,"searches_with_match":1,"bytes_searched":18718,"bytes_printed":973,"matched_lines":3,"matches":3}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_completion_status_panel.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_completion_status_panel.py"},"lines":{"text":"    def test_overflow_at_bottom_hides_more_indicator(self) -> None:\n"},"line_number":237,"absolute_offset":7609,"submatches":[{"match":{"text":"ide"},"start":33,"end":36}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_completion_status_panel.py"},"lines":{"text":"    def test_loading_hide_gate(self) -> None:\n"},"line_number":264,"absolute_offset":8497,"submatches":[{"match":{"text":"ide"},"start":22,"end":25}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_completion_status_panel.py"},"lines":{"text":"        self.assertFalse(tui._should_hide_loading_panel())\n"},"line_number":267,"absolute_offset":8624,"submatches":[{"match":{"text":"ide"},"start":38,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_completion_status_panel.py"},"lines":{"text":"        self.assertTrue(tui._should_hide_loading_panel())\n"},"line_number":272,"absolute_offset":8818,"submatches":[{"match":{"text":"ide"},"start":37,"end":40}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_completion_status_panel.py"},"lines":{"text":"        self.assertFalse(tui._should_hide_loading_panel())\n"},"line_number":278,"absolute_offset":9141,"submatches":[{"match":{"text":"ide"},"start":38,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_completion_status_panel.py"},"lines":{"text":"        self.assertFalse(tui._should_hide_loading_panel())\n"},"line_number":284,"absolute_offset":9400,"submatches":[{"match":{"text":"ide"},"start":38,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_completion_status_panel.py"},"lines":{"text":"    def test_loading_text_compacting_overrides_main_animator(self) -> None:\n"},"line_number":391,"absolute_offset":13134,"submatches":[{"match":{"text":"ide"},"start":42,"end":45}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_completion_status_panel.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":81249,"human":"0.000081s"},"searches":1,"searches_with_match":1,"bytes_searched":17357,"bytes_printed":2328,"matched_lines":7,"matches":7}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_transcript_viewer.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_transcript_viewer.py"},"lines":{"text":"    def test_body_renders_tool_detail_and_hides_assistant(self) -> None:\n"},"line_number":54,"absolute_offset":1685,"submatches":[{"match":{"text":"ide"},"start":43,"end":46}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_transcript_viewer.py"},"lines":{"text":"    def test_body_hides_thinking_system_log_file_ref_elapsed(self) -> None:\n"},"line_number":127,"absolute_offset":4247,"submatches":[{"match":{"text":"ide"},"start":19,"end":22}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_transcript_viewer.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":116980,"human":"0.000117s"},"searches":1,"searches_with_match":1,"bytes_searched":8345,"bytes_printed":767,"matched_lines":2,"matches":2}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/docs/plans/log-source-color.md"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/docs/plans/log-source-color.md"},"lines":{"text":"[#34D399]CLI[#34D399]  Plugin installed successfully\n"},"line_number":41,"absolute_offset":1293,"submatches":[{"match":{"text":"Plugin"},"start":23,"end":29}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/docs/plans/log-source-color.md"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":25877,"human":"0.000026s"},"searches":1,"searches_with_match":1,"bytes_searched":2974,"bytes_printed":425,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_task_panel_key_bindings.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_task_panel_key_bindings.py"},"lines":{"text":"class _StubPluginUI:\n"},"line_number":23,"absolute_offset":524,"submatches":[{"match":{"text":"Plugin"},"start":11,"end":17}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_task_panel_key_bindings.py"},"lines":{"text":"        self._plugin_ui = _StubPluginUI()\n"},"line_number":86,"absolute_offset":2095,"submatches":[{"match":{"text":"plugin"},"start":14,"end":20},{"match":{"text":"Plugin"},"start":31,"end":37}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_task_panel_key_bindings.py"},"lines":{"text":"    def _handle_plugin_action(self, *_args, **_kwargs) -> None:\n"},"line_number":116,"absolute_offset":3251,"submatches":[{"match":{"text":"plugin"},"start":16,"end":22}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_task_panel_key_bindings.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":62317,"human":"0.000062s"},"searches":1,"searches_with_match":1,"bytes_searched":6020,"bytes_printed":1071,"matched_lines":3,"matches":4}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_mcp_slash_command.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_mcp_slash_command.py"},"lines":{"text":"                side_effect=[\n"},"line_number":214,"absolute_offset":6773,"submatches":[{"match":{"text":"ide"},"start":17,"end":20}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_mcp_slash_command.py"},"lines":{"text":"                side_effect=[\n"},"line_number":221,"absolute_offset":7026,"submatches":[{"match":{"text":"ide"},"start":17,"end":20}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_mcp_slash_command.py"},"lines":{"text":"    async def test_slash_mcp_hides_stdio_command_in_server_list(self) -> None:\n"},"line_number":242,"absolute_offset":7924,"submatches":[{"match":{"text":"ide"},"start":30,"end":33}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_mcp_slash_command.py"},"lines":{"text":"                side_effect=[\n"},"line_number":264,"absolute_offset":8683,"submatches":[{"match":{"text":"ide"},"start":17,"end":20}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_mcp_slash_command.py"},"lines":{"text":"                side_effect=[\n"},"line_number":277,"absolute_offset":9114,"submatches":[{"match":{"text":"ide"},"start":17,"end":20}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_mcp_slash_command.py"},"lines":{"text":"                side_effect=[\n"},"line_number":335,"absolute_offset":11148,"submatches":[{"match":{"text":"ide"},"start":17,"end":20}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_mcp_slash_command.py"},"lines":{"text":"                side_effect=[\n"},"line_number":342,"absolute_offset":11401,"submatches":[{"match":{"text":"ide"},"start":17,"end":20}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_mcp_slash_command.py"},"lines":{"text":"                side_effect=[\n"},"line_number":392,"absolute_offset":13142,"submatches":[{"match":{"text":"ide"},"start":17,"end":20}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_mcp_slash_command.py"},"lines":{"text":"                side_effect=[\n"},"line_number":399,"absolute_offset":13395,"submatches":[{"match":{"text":"ide"},"start":17,"end":20}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_mcp_slash_command.py"},"lines":{"text":"                side_effect=[\n"},"line_number":449,"absolute_offset":14983,"submatches":[{"match":{"text":"ide"},"start":17,"end":20}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_mcp_slash_command.py"},"lines":{"text":"                side_effect=[\n"},"line_number":456,"absolute_offset":15236,"submatches":[{"match":{"text":"ide"},"start":17,"end":20}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_mcp_slash_command.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":108463,"human":"0.000108s"},"searches":1,"searches_with_match":1,"bytes_searched":25485,"bytes_printed":3227,"matched_lines":11,"matches":11}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_resume_picker.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_resume_picker.py"},"lines":{"text":"    def test_title_overrides_first_prompt(self) -> None:\n"},"line_number":39,"absolute_offset":892,"submatches":[{"match":{"text":"ide"},"start":24,"end":27}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_resume_picker.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":186372,"human":"0.000186s"},"searches":1,"searches_with_match":1,"bytes_searched":16825,"bytes_printed":419,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_input_behavior.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_input_behavior.py"},"lines":{"text":"    def test_compute_visual_line_ranges_handles_wide_chars(self) -> None:\n"},"line_number":25,"absolute_offset":749,"submatches":[{"match":{"text":"ide"},"start":49,"end":52}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_input_behavior.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":13503,"human":"0.000014s"},"searches":1,"searches_with_match":1,"bytes_searched":1872,"bytes_printed":438,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_logging_adapter.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_logging_adapter.py"},"lines":{"text":"            side_effect=AssertionError(\"get_app should not be called\"),\n"},"line_number":187,"absolute_offset":6037,"submatches":[{"match":{"text":"ide"},"start":13,"end":16}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_logging_adapter.py"},"lines":{"text":"def test_setup_tui_logging_env_var_overrides_to_debug(\n"},"line_number":557,"absolute_offset":17041,"submatches":[{"match":{"text":"ide"},"start":40,"end":43}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_logging_adapter.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":157251,"human":"0.000157s"},"searches":1,"searches_with_match":1,"bytes_searched":21561,"bytes_printed":743,"matched_lines":2,"matches":2}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_shutdown.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_shutdown.py"},"lines":{"text":"        fake_logging_session.close.side_effect = lambda: call_log.append(\"logging_close\")\n"},"line_number":28,"absolute_offset":796,"submatches":[{"match":{"text":"ide"},"start":36,"end":39}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_shutdown.py"},"lines":{"text":"            patch.object(app_module, \"run_preflight_if_needed\", side_effect=fake_preflight),\n"},"line_number":69,"absolute_offset":2203,"submatches":[{"match":{"text":"ide"},"start":65,"end":68}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_shutdown.py"},"lines":{"text":"            patch.object(app_module, \"_graceful_shutdown\", side_effect=fake_graceful),\n"},"line_number":82,"absolute_offset":3057,"submatches":[{"match":{"text":"ide"},"start":60,"end":63}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_shutdown.py"},"lines":{"text":"            patch.object(app_module, \"_flush_langfuse_if_configured\", side_effect=lambda: events.append(\"flush\")),\n"},"line_number":104,"absolute_offset":3741,"submatches":[{"match":{"text":"ide"},"start":71,"end":74}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_app_shutdown.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":66410,"human":"0.000066s"},"searches":1,"searches_with_match":1,"bytes_searched":5619,"bytes_printed":1479,"matched_lines":4,"matches":4}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tui_mcp_init_gate.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tui_mcp_init_gate.py"},"lines":{"text":"        tui._init_plugins = lambda: _async_noop()\n"},"line_number":53,"absolute_offset":1404,"submatches":[{"match":{"text":"plugin"},"start":18,"end":24}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tui_mcp_init_gate.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":63610,"human":"0.000064s"},"searches":1,"searches_with_match":1,"bytes_searched":2265,"bytes_printed":424,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_input_history.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_input_history.py"},"lines":{"text":"        with patch(\"comate_cli.terminal_agent.tui._truncate_file_history\", side_effect=UnicodeDecodeError(\"utf-8\", b\"\", 0, 1, \"boom\")):\n"},"line_number":132,"absolute_offset":6176,"submatches":[{"match":{"text":"ide"},"start":76,"end":79}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_input_history.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":132719,"human":"0.000133s"},"searches":1,"searches_with_match":1,"bytes_searched":8131,"bytes_printed":508,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_store.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_store.py"},"lines":{"text":"    def _make_kwargs(self, **overrides) -> dict:\n"},"line_number":33,"absolute_offset":824,"submatches":[{"match":{"text":"ide"},"start":34,"end":37}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_store.py"},"lines":{"text":"        base.update(overrides)\n"},"line_number":46,"absolute_offset":1218,"submatches":[{"match":{"text":"ide"},"start":25,"end":28}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_store.py"},"lines":{"text":"    def _make_kwargs(self, **overrides) -> dict:\n"},"line_number":118,"absolute_offset":3579,"submatches":[{"match":{"text":"ide"},"start":34,"end":37}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_store.py"},"lines":{"text":"        base.update(overrides)\n"},"line_number":131,"absolute_offset":3973,"submatches":[{"match":{"text":"ide"},"start":25,"end":28}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_store.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":24913,"human":"0.000025s"},"searches":1,"searches_with_match":1,"bytes_searched":4481,"bytes_printed":1270,"matched_lines":4,"matches":4}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_printer.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_printer.py"},"lines":{"text":"def _identity_md(text: str, **kwargs) -> str:\n"},"line_number":14,"absolute_offset":366,"submatches":[{"match":{"text":"ide"},"start":5,"end":8}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_printer.py"},"lines":{"text":"            console, entries, terminal_width=120, render_markdown_to_plain=_identity_md,\n"},"line_number":31,"absolute_offset":835,"submatches":[{"match":{"text":"ide"},"start":76,"end":79}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_printer.py"},"lines":{"text":"            console, [entry], terminal_width=40, render_markdown_to_plain=_identity_md,\n"},"line_number":116,"absolute_offset":4726,"submatches":[{"match":{"text":"ide"},"start":75,"end":78}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_printer.py"},"lines":{"text":"            render_markdown_to_plain=_identity_md,\n"},"line_number":145,"absolute_offset":5910,"submatches":[{"match":{"text":"ide"},"start":38,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_printer.py"},"lines":{"text":"            console, entries, terminal_width=120, render_markdown_to_plain=_identity_md,\n"},"line_number":223,"absolute_offset":9884,"submatches":[{"match":{"text":"ide"},"start":76,"end":79}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_printer.py"},"lines":{"text":"            render_markdown_to_plain=_identity_md,\n"},"line_number":326,"absolute_offset":14801,"submatches":[{"match":{"text":"ide"},"start":38,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_printer.py"},"lines":{"text":"                        f\"unexpected blank-line gap inside list run at index {i}: {merged!r}\"\n"},"line_number":416,"absolute_offset":19194,"submatches":[{"match":{"text":"ide"},"start":55,"end":58}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_printer.py"},"lines":{"text":"                        f\"unexpected blank-line gap inside thinking run at index {i}: {merged!r}\"\n"},"line_number":523,"absolute_offset":24097,"submatches":[{"match":{"text":"ide"},"start":55,"end":58}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_history_printer.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":211486,"human":"0.000211s"},"searches":1,"searches_with_match":1,"bytes_searched":26257,"bytes_printed":2690,"matched_lines":8,"matches":8}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"lines":{"text":"    PROVIDER_PRESETS,\n"},"line_number":12,"absolute_offset":263,"submatches":[{"match":{"text":"IDE"},"start":8,"end":11}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"lines":{"text":"                    provider=\"deepseek\",\n"},"line_number":137,"absolute_offset":5219,"submatches":[{"match":{"text":"ide"},"start":24,"end":27}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"lines":{"text":"                    provider=\"deepseek\",\n"},"line_number":143,"absolute_offset":5459,"submatches":[{"match":{"text":"ide"},"start":24,"end":27}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"lines":{"text":"                    provider=\"deepseek\",\n"},"line_number":149,"absolute_offset":5700,"submatches":[{"match":{"text":"ide"},"start":24,"end":27}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"lines":{"text":"                    provider=\"anthropic\",\n"},"line_number":172,"absolute_offset":6508,"submatches":[{"match":{"text":"ide"},"start":24,"end":27}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"lines":{"text":"                    provider=\"anthropic\",\n"},"line_number":178,"absolute_offset":6753,"submatches":[{"match":{"text":"ide"},"start":24,"end":27}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"lines":{"text":"                    provider=\"anthropic\",\n"},"line_number":184,"absolute_offset":6999,"submatches":[{"match":{"text":"ide"},"start":24,"end":27}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"lines":{"text":"        preset_map = {preset.preset_id: preset for preset in PROVIDER_PRESETS}\n"},"line_number":194,"absolute_offset":7360,"submatches":[{"match":{"text":"IDE"},"start":65,"end":68}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"lines":{"text":"    def test_provider_presets_are_brand_only(self) -> None:\n"},"line_number":206,"absolute_offset":7804,"submatches":[{"match":{"text":"ide"},"start":17,"end":20}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"lines":{"text":"        labels = [preset.label for preset in PROVIDER_PRESETS]\n"},"line_number":207,"absolute_offset":7864,"submatches":[{"match":{"text":"IDE"},"start":49,"end":52}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"lines":{"text":"        preset_map = {preset.preset_id: preset for preset in PROVIDER_PRESETS}\n"},"line_number":224,"absolute_offset":8422,"submatches":[{"match":{"text":"IDE"},"start":65,"end":68}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"lines":{"text":"                provider=\"minimax\",\n"},"line_number":234,"absolute_offset":9005,"submatches":[{"match":{"text":"ide"},"start":20,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"lines":{"text":"    def test_block_message_uses_provider_setup_wording(self) -> None:\n"},"line_number":257,"absolute_offset":9918,"submatches":[{"match":{"text":"ide"},"start":36,"end":39}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"lines":{"text":"        self.assertIn(\"Provider setup required\", full)\n"},"line_number":279,"absolute_offset":10707,"submatches":[{"match":{"text":"ide"},"start":27,"end":30}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"lines":{"text":"        self.assertIn(\"configure an API provider before you can continue\", full)\n"},"line_number":280,"absolute_offset":10762,"submatches":[{"match":{"text":"ide"},"start":44,"end":47}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"lines":{"text":"            wizard._open_provider_menu()\n"},"line_number":307,"absolute_offset":11884,"submatches":[{"match":{"text":"ide"},"start":29,"end":32}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"lines":{"text":"            wizard._selected_preset = PROVIDER_PRESETS[0]\n"},"line_number":308,"absolute_offset":11925,"submatches":[{"match":{"text":"IDE"},"start":42,"end":45}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"lines":{"text":"    def test_provider_menu_descriptions_are_empty(self) -> None:\n"},"line_number":314,"absolute_offset":12136,"submatches":[{"match":{"text":"ide"},"start":17,"end":20}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"lines":{"text":"        wizard._open_provider_menu()\n"},"line_number":316,"absolute_offset":12239,"submatches":[{"match":{"text":"ide"},"start":25,"end":28}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"lines":{"text":"    def test_provider_menu_prioritizes_anthropic_openai_first(self) -> None:\n"},"line_number":322,"absolute_offset":12541,"submatches":[{"match":{"text":"ide"},"start":17,"end":20}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"lines":{"text":"        wizard._open_provider_menu()\n"},"line_number":324,"absolute_offset":12656,"submatches":[{"match":{"text":"ide"},"start":25,"end":28}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"lines":{"text":"        wizard._selected_preset = next(p for p in PROVIDER_PRESETS if p.preset_id == \"deepseek\")\n"},"line_number":332,"absolute_offset":13057,"submatches":[{"match":{"text":"IDE"},"start":54,"end":57}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"lines":{"text":"        wizard._selected_preset = next(p for p in PROVIDER_PRESETS if p.preset_id == \"openai\")\n"},"line_number":343,"absolute_offset":13787,"submatches":[{"match":{"text":"IDE"},"start":54,"end":57}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"lines":{"text":"        wizard._selected_preset = next(p for p in PROVIDER_PRESETS if p.preset_id == \"zai_global\")\n"},"line_number":351,"absolute_offset":14202,"submatches":[{"match":{"text":"IDE"},"start":54,"end":57}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"lines":{"text":"    def test_collect_api_key_once_per_provider(self) -> None:\n"},"line_number":357,"absolute_offset":14580,"submatches":[{"match":{"text":"ide"},"start":42,"end":45}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"lines":{"text":"        wizard._selected_preset = next(p for p in PROVIDER_PRESETS if p.preset_id == \"kimi_code\")\n"},"line_number":359,"absolute_offset":14680,"submatches":[{"match":{"text":"IDE"},"start":54,"end":57}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"lines":{"text":"        self.assertEqual(wizard._providers_need_key, [\"anthropic\"])\n"},"line_number":363,"absolute_offset":14940,"submatches":[{"match":{"text":"ide"},"start":37,"end":40}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"lines":{"text":"        wizard._providers_need_key = [\"anthropic\"]\n"},"line_number":386,"absolute_offset":15831,"submatches":[{"match":{"text":"ide"},"start":20,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"lines":{"text":"                        cancel_detail=\"provider_cancelled\",\n"},"line_number":425,"absolute_offset":17325,"submatches":[{"match":{"text":"ide"},"start":43,"end":46}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"lines":{"text":"        self.assertEqual(result.detail, \"provider_cancelled\")\n"},"line_number":437,"absolute_offset":17697,"submatches":[{"match":{"text":"ide"},"start":45,"end":48}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_preflight.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":255273,"human":"0.000255s"},"searches":1,"searches_with_match":1,"bytes_searched":17819,"bytes_printed":9136,"matched_lines":30,"matches":30}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_question_key_bindings.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_question_key_bindings.py"},"lines":{"text":"class _StubPluginUI:\n"},"line_number":28,"absolute_offset":703,"submatches":[{"match":{"text":"Plugin"},"start":11,"end":17}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_question_key_bindings.py"},"lines":{"text":"        self._plugin_ui = _StubPluginUI()\n"},"line_number":74,"absolute_offset":1848,"submatches":[{"match":{"text":"plugin"},"start":14,"end":20},{"match":{"text":"Plugin"},"start":31,"end":37}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_question_key_bindings.py"},"lines":{"text":"    def _handle_plugin_action(self, *_args, **_kwargs) -> None:\n"},"line_number":99,"absolute_offset":2809,"submatches":[{"match":{"text":"plugin"},"start":16,"end":22}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_question_key_bindings.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":102069,"human":"0.000102s"},"searches":1,"searches_with_match":1,"bytes_searched":5662,"bytes_printed":1062,"matched_lines":3,"matches":4}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/uv.lock"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/uv.lock"},"lines":{"text":"    { name = \"typing-extensions\", marker = \"python_full_version < '3.13'\" },\n"},"line_number":122,"absolute_offset":29479,"submatches":[{"match":{"text":"extension"},"start":21,"end":30}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/uv.lock"},"lines":{"text":"    { name = \"typing-extensions\" },\n"},"line_number":150,"absolute_offset":31168,"submatches":[{"match":{"text":"extension"},"start":21,"end":30}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/uv.lock"},"lines":{"text":"    { name = \"typing-extensions\", marker = \"python_full_version < '3.13'\" },\n"},"line_number":163,"absolute_offset":31943,"submatches":[{"match":{"text":"extension"},"start":21,"end":30}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/uv.lock"},"lines":{"text":"    { name = \"typing-extensions\" },\n"},"line_number":185,"absolute_offset":33452,"submatches":[{"match":{"text":"extension"},"start":21,"end":30}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/uv.lock"},"lines":{"text":"provides-extras = [\"anthropic\", \"openai\", \"google\", \"observability\", \"context\"]\n"},"line_number":449,"absolute_offset":86056,"submatches":[{"match":{"text":"ide"},"start":4,"end":7}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/uv.lock"},"lines":{"text":"    { name = \"typing-extensions\" },\n"},"line_number":774,"absolute_offset":144061,"submatches":[{"match":{"text":"extension"},"start":21,"end":30}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/uv.lock"},"lines":{"text":"    { name = \"typing-extensions\" },\n"},"line_number":1017,"absolute_offset":179329,"submatches":[{"match":{"text":"extension"},"start":21,"end":30}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/uv.lock"},"lines":{"text":"    { name = \"typing-extensions\" },\n"},"line_number":1164,"absolute_offset":217153,"submatches":[{"match":{"text":"extension"},"start":21,"end":30}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/uv.lock"},"lines":{"text":"    { name = \"typing-extensions\" },\n"},"line_number":1464,"absolute_offset":285641,"submatches":[{"match":{"text":"extension"},"start":21,"end":30}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/uv.lock"},"lines":{"text":"    { name = \"typing-extensions\" },\n"},"line_number":1477,"absolute_offset":286435,"submatches":[{"match":{"text":"extension"},"start":21,"end":30}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/uv.lock"},"lines":{"text":"    { name = \"typing-extensions\", marker = \"python_full_version < '3.13'\" },\n"},"line_number":1628,"absolute_offset":318563,"submatches":[{"match":{"text":"extension"},"start":21,"end":30}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/uv.lock"},"lines":{"text":"    { name = \"typing-extensions\", marker = \"python_full_version < '3.13'\" },\n"},"line_number":1758,"absolute_offset":341680,"submatches":[{"match":{"text":"extension"},"start":21,"end":30}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/uv.lock"},"lines":{"text":"    { name = \"typing-extensions\", marker = \"python_full_version < '3.13'\" },\n"},"line_number":2098,"absolute_offset":417757,"submatches":[{"match":{"text":"extension"},"start":21,"end":30}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/uv.lock"},"lines":{"text":"name = \"typing-extensions\"\n"},"line_number":2181,"absolute_offset":433627,"submatches":[{"match":{"text":"extension"},"start":15,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/uv.lock"},"lines":{"text":"sdist = { url = \"https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz\", hash = \"sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466\", size = 109391, upload-time = \"2025-08-25T13:49:26.313Z\" }\n"},"line_number":2184,"absolute_offset":433723,"submatches":[{"match":{"text":"extension"},"start":131,"end":140}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/uv.lock"},"lines":{"text":"    { url = \"https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl\", hash = \"sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548\", size = 44614, upload-time = \"2025-08-25T13:49:24.86Z\" },\n"},"line_number":2186,"absolute_offset":434032,"submatches":[{"match":{"text":"extension"},"start":127,"end":136}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/uv.lock"},"lines":{"text":"    { name = \"typing-extensions\" },\n"},"line_number":2194,"absolute_offset":434462,"submatches":[{"match":{"text":"extension"},"start":21,"end":30}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/uv.lock"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":950111,"human":"0.000950s"},"searches":1,"searches_with_match":1,"bytes_searched":481350,"bytes_printed":5471,"matched_lines":17,"matches":17}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_custom_slash_commands.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_custom_slash_commands.py"},"lines":{"text":"            self.assertTrue(any(\"already provided by project scope\" in w for w in result.warnings))\n"},"line_number":57,"absolute_offset":2192,"submatches":[{"match":{"text":"ide"},"start":45,"end":48}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_custom_slash_commands.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":124755,"human":"0.000125s"},"searches":1,"searches_with_match":1,"bytes_searched":8604,"bytes_printed":481,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_interrupt_exit_semantics.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_interrupt_exit_semantics.py"},"lines":{"text":"class _StubPluginUI:\n"},"line_number":29,"absolute_offset":729,"submatches":[{"match":{"text":"Plugin"},"start":11,"end":17}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_interrupt_exit_semantics.py"},"lines":{"text":"        self._plugin_ui = _StubPluginUI()\n"},"line_number":146,"absolute_offset":3707,"submatches":[{"match":{"text":"plugin"},"start":14,"end":20},{"match":{"text":"Plugin"},"start":31,"end":37}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_interrupt_exit_semantics.py"},"lines":{"text":"    def _handle_plugin_action(self, *_args, **_kwargs) -> None:\n"},"line_number":175,"absolute_offset":4811,"submatches":[{"match":{"text":"plugin"},"start":16,"end":22}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_interrupt_exit_semantics.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":200951,"human":"0.000201s"},"searches":1,"searches_with_match":1,"bytes_searched":10755,"bytes_printed":1076,"matched_lines":3,"matches":4}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"def _make_plugin_entry(name: str, description: str = \"\", mkt: str = \"default-mkt\") -> object:\n"},"line_number":10,"absolute_offset":163,"submatches":[{"match":{"text":"plugin"},"start":10,"end":16}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"    \"\"\"构造一个 PluginEntry mock。\"\"\"\n"},"line_number":11,"absolute_offset":257,"submatches":[{"match":{"text":"Plugin"},"start":20,"end":26}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"    from comate_agent_sdk.plugins.models import PluginSource\n"},"line_number":12,"absolute_offset":300,"submatches":[{"match":{"text":"plugin"},"start":26,"end":32},{"match":{"text":"Plugin"},"start":48,"end":54}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"    entry.source = PluginSource(type=\"local\", path=f\"./plugins/{name}\")\n"},"line_number":17,"absolute_offset":444,"submatches":[{"match":{"text":"Plugin"},"start":19,"end":25},{"match":{"text":"plugin"},"start":55,"end":61}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"    from comate_cli.terminal_agent.plugins.plugin_picker import PluginPickerContext\n"},"line_number":25,"absolute_offset":665,"submatches":[{"match":{"text":"plugin"},"start":35,"end":41},{"match":{"text":"plugin"},"start":43,"end":49},{"match":{"text":"Plugin"},"start":64,"end":70}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"    return PluginPickerContext(initial_tab=initial_tab)\n"},"line_number":27,"absolute_offset":750,"submatches":[{"match":{"text":"Plugin"},"start":11,"end":17}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"    from comate_cli.terminal_agent.plugins.tabs.discover_tab import DiscoverTab\n"},"line_number":32,"absolute_offset":948,"submatches":[{"match":{"text":"plugin"},"start":35,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"    plugin_mgr = MagicMock()\n"},"line_number":34,"absolute_offset":1029,"submatches":[{"match":{"text":"plugin"},"start":4,"end":10}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"    plugin_mgr.install = AsyncMock()\n"},"line_number":35,"absolute_offset":1058,"submatches":[{"match":{"text":"plugin"},"start":4,"end":10}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"    mkt_mgr.list_all_available_plugins = MagicMock(return_value=available or {})\n"},"line_number":38,"absolute_offset":1122,"submatches":[{"match":{"text":"plugin"},"start":31,"end":37}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"    return DiscoverTab(plugin_mgr, mkt_mgr, registry, loader, context)\n"},"line_number":46,"absolute_offset":1358,"submatches":[{"match":{"text":"plugin"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"            _make_plugin_entry(\"plugin-a\", \"Alpha plugin\"),\n"},"line_number":58,"absolute_offset":1708,"submatches":[{"match":{"text":"plugin"},"start":18,"end":24},{"match":{"text":"plugin"},"start":32,"end":38},{"match":{"text":"plugin"},"start":50,"end":56}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"            _make_plugin_entry(\"plugin-b\", \"Beta plugin\"),\n"},"line_number":59,"absolute_offset":1768,"submatches":[{"match":{"text":"plugin"},"start":18,"end":24},{"match":{"text":"plugin"},"start":32,"end":38},{"match":{"text":"plugin"},"start":49,"end":55}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"        self.assertIn(\"plugin-a\", names)\n"},"line_number":67,"absolute_offset":2036,"submatches":[{"match":{"text":"plugin"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"        self.assertIn(\"plugin-b\", names)\n"},"line_number":68,"absolute_offset":2077,"submatches":[{"match":{"text":"plugin"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"    def test_activate_marks_installed_plugins(self) -> None:\n"},"line_number":70,"absolute_offset":2119,"submatches":[{"match":{"text":"plugin"},"start":38,"end":44}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"        entries = [_make_plugin_entry(\"plugin-a\"), _make_plugin_entry(\"plugin-b\")]\n"},"line_number":72,"absolute_offset":2261,"submatches":[{"match":{"text":"plugin"},"start":25,"end":31},{"match":{"text":"plugin"},"start":39,"end":45},{"match":{"text":"plugin"},"start":57,"end":63},{"match":{"text":"plugin"},"start":71,"end":77}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"        installed = {\"plugin-a@my-mkt\": [MagicMock()]}\n"},"line_number":73,"absolute_offset":2344,"submatches":[{"match":{"text":"plugin"},"start":22,"end":28}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"        self.assertTrue(items[\"plugin-a\"][\"installed\"])\n"},"line_number":78,"absolute_offset":2563,"submatches":[{"match":{"text":"plugin"},"start":31,"end":37}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"        self.assertFalse(items[\"plugin-b\"][\"installed\"])\n"},"line_number":79,"absolute_offset":2619,"submatches":[{"match":{"text":"plugin"},"start":32,"end":38}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"        entries = [_make_plugin_entry(\"plugin-a\")]\n"},"line_number":89,"absolute_offset":3020,"submatches":[{"match":{"text":"plugin"},"start":25,"end":31},{"match":{"text":"plugin"},"start":39,"end":45}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"            _make_plugin_entry(\"search-alpha\", \"The alpha plugin\"),\n"},"line_number":99,"absolute_offset":3318,"submatches":[{"match":{"text":"plugin"},"start":18,"end":24},{"match":{"text":"plugin"},"start":58,"end":64}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"            _make_plugin_entry(\"beta-tool\", \"Beta tooling for devs\"),\n"},"line_number":100,"absolute_offset":3386,"submatches":[{"match":{"text":"plugin"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"            _make_plugin_entry(\"gamma-util\", \"Gamma utility\"),\n"},"line_number":101,"absolute_offset":3456,"submatches":[{"match":{"text":"plugin"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"        entries = [_make_plugin_entry(\"plugin-a\", \"desc-a\")]\n"},"line_number":136,"absolute_offset":4743,"submatches":[{"match":{"text":"plugin"},"start":25,"end":31},{"match":{"text":"plugin"},"start":39,"end":45}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"        mock_create.side_effect = _close_scheduled_task\n"},"line_number":171,"absolute_offset":6237,"submatches":[{"match":{"text":"ide"},"start":21,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"            _make_plugin_entry(\"p0\"),\n"},"line_number":181,"absolute_offset":6612,"submatches":[{"match":{"text":"plugin"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"            _make_plugin_entry(\"p1\"),\n"},"line_number":182,"absolute_offset":6650,"submatches":[{"match":{"text":"plugin"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"            _make_plugin_entry(\"p2\"),\n"},"line_number":183,"absolute_offset":6688,"submatches":[{"match":{"text":"plugin"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"        entries = [_make_plugin_entry(\"p0\"), _make_plugin_entry(\"p1\")]\n"},"line_number":206,"absolute_offset":7486,"submatches":[{"match":{"text":"plugin"},"start":25,"end":31},{"match":{"text":"plugin"},"start":51,"end":57}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"        entries = [_make_plugin_entry(\"p0\")]\n"},"line_number":217,"absolute_offset":7843,"submatches":[{"match":{"text":"plugin"},"start":25,"end":31}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"        mock_create.side_effect = _close_scheduled_task\n"},"line_number":229,"absolute_offset":8382,"submatches":[{"match":{"text":"ide"},"start":21,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"            _make_plugin_entry(\"plugin-a\"),\n"},"line_number":231,"absolute_offset":8458,"submatches":[{"match":{"text":"plugin"},"start":18,"end":24},{"match":{"text":"plugin"},"start":32,"end":38}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"            _make_plugin_entry(\"plugin-b\"),\n"},"line_number":232,"absolute_offset":8502,"submatches":[{"match":{"text":"plugin"},"start":18,"end":24},{"match":{"text":"plugin"},"start":32,"end":38}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"        tab = _make_tab(available={\"mkt\": [_make_plugin_entry(\"plugin-a\")]})\n"},"line_number":256,"absolute_offset":9272,"submatches":[{"match":{"text":"plugin"},"start":49,"end":55},{"match":{"text":"plugin"},"start":63,"end":69}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"        with patch(\"comate_cli.terminal_agent.plugins.tabs.discover_tab.get_app_or_none\", return_value=None):\n"},"line_number":262,"absolute_offset":9451,"submatches":[{"match":{"text":"plugin"},"start":46,"end":52}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"            await tab._do_install(\"plugin-a@mkt\", item, \"user\")\n"},"line_number":263,"absolute_offset":9561,"submatches":[{"match":{"text":"plugin"},"start":35,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"        tab._plugin_mgr.install.assert_awaited_once_with(\"plugin-a@mkt\", scope=\"user\")\n"},"line_number":267,"absolute_offset":9725,"submatches":[{"match":{"text":"plugin"},"start":13,"end":19},{"match":{"text":"plugin"},"start":58,"end":64}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"        tab = _make_tab(available={\"mkt\": [_make_plugin_entry(\"plugin-a\")]})\n"},"line_number":271,"absolute_offset":9936,"submatches":[{"match":{"text":"plugin"},"start":49,"end":55},{"match":{"text":"plugin"},"start":63,"end":69}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"        tab._plugin_mgr.install = AsyncMock(side_effect=ValueError(\"boom\"))\n"},"line_number":273,"absolute_offset":10036,"submatches":[{"match":{"text":"plugin"},"start":13,"end":19},{"match":{"text":"ide"},"start":45,"end":48}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"        with patch(\"comate_cli.terminal_agent.plugins.tabs.discover_tab.get_app_or_none\", return_value=None):\n"},"line_number":276,"absolute_offset":10146,"submatches":[{"match":{"text":"plugin"},"start":46,"end":52}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"            await tab._do_install(\"plugin-a@mkt\", item, \"user\")\n"},"line_number":277,"absolute_offset":10256,"submatches":[{"match":{"text":"plugin"},"start":35,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"        tab = _make_tab(available={\"mkt\": [_make_plugin_entry(\"plugin-a\")]})\n"},"line_number":285,"absolute_offset":10616,"submatches":[{"match":{"text":"plugin"},"start":49,"end":55},{"match":{"text":"plugin"},"start":63,"end":69}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"        with patch(\"comate_cli.terminal_agent.plugins.tabs.discover_tab.get_app_or_none\", return_value=None):\n"},"line_number":288,"absolute_offset":10717,"submatches":[{"match":{"text":"plugin"},"start":46,"end":52}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"            await tab._do_install(\"plugin-a@mkt\", tab._all_items[0], \"user\")\n"},"line_number":289,"absolute_offset":10827,"submatches":[{"match":{"text":"plugin"},"start":35,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"        entries = [_make_plugin_entry(\"plugin-a\", \"Alpha desc\")]\n"},"line_number":305,"absolute_offset":11450,"submatches":[{"match":{"text":"plugin"},"start":25,"end":31},{"match":{"text":"plugin"},"start":39,"end":45}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"lines":{"text":"        self.assertIn(\"plugin-a\", flat)\n"},"line_number":311,"absolute_offset":11716,"submatches":[{"match":{"text":"plugin"},"start":23,"end":29}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_discover_tab.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":268803,"human":"0.000269s"},"searches":1,"searches_with_match":1,"bytes_searched":11802,"bytes_printed":15821,"matched_lines":47,"matches":70}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_update_check.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_update_check.py"},"lines":{"text":"            patch(\"httpx.AsyncClient\", side_effect=lambda **_: _FakeClient(\"0.3.6\")),\n"},"line_number":54,"absolute_offset":1480,"submatches":[{"match":{"text":"ide"},"start":40,"end":43}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_update_check.py"},"lines":{"text":"            patch(\"httpx.AsyncClient\", side_effect=lambda **_: _FakeClient(\"0.3.6\")),\n"},"line_number":68,"absolute_offset":2095,"submatches":[{"match":{"text":"ide"},"start":40,"end":43}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_update_check.py"},"lines":{"text":"            patch(\"httpx.AsyncClient\", side_effect=lambda **_: _FailingClient()),\n"},"line_number":78,"absolute_offset":2549,"submatches":[{"match":{"text":"ide"},"start":40,"end":43}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_update_check.py"},"lines":{"text":"        renderer.flush_pending_logs.side_effect = lambda: order.append(\"flush\")\n"},"line_number":159,"absolute_offset":5719,"submatches":[{"match":{"text":"ide"},"start":37,"end":40}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_update_check.py"},"lines":{"text":"        tui.add_resume_history.side_effect = lambda mode: order.append(f\"resume:{mode}\")\n"},"line_number":160,"absolute_offset":5799,"submatches":[{"match":{"text":"ide"},"start":32,"end":35}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_update_check.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":105111,"human":"0.000105s"},"searches":1,"searches_with_match":1,"bytes_searched":7625,"bytes_printed":1764,"matched_lines":5,"matches":5}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer_log_queue.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer_log_queue.py"},"lines":{"text":"def test_flush_pending_logs_idempotent_when_empty() -> None:\n"},"line_number":121,"absolute_offset":4469,"submatches":[{"match":{"text":"ide"},"start":28,"end":31}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer_log_queue.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":18143,"human":"0.000018s"},"searches":1,"searches_with_match":1,"bytes_searched":5307,"bytes_printed":447,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"def _make_plugin_error(\n"},"line_number":11,"absolute_offset":175,"submatches":[{"match":{"text":"plugin"},"start":10,"end":16}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"    plugin_key: str = \"plugin-a@mkt\",\n"},"line_number":12,"absolute_offset":199,"submatches":[{"match":{"text":"plugin"},"start":4,"end":10},{"match":{"text":"plugin"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"    \"\"\"构造一个 PluginError mock。\"\"\"\n"},"line_number":18,"absolute_offset":414,"submatches":[{"match":{"text":"Plugin"},"start":20,"end":26}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"    from comate_agent_sdk.plugins.models import PluginError\n"},"line_number":19,"absolute_offset":457,"submatches":[{"match":{"text":"plugin"},"start":26,"end":32},{"match":{"text":"Plugin"},"start":48,"end":54}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"    return PluginError(\n"},"line_number":21,"absolute_offset":518,"submatches":[{"match":{"text":"Plugin"},"start":11,"end":17}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        error_id=error_id or f\"err-{plugin_key}\",\n"},"line_number":22,"absolute_offset":542,"submatches":[{"match":{"text":"plugin"},"start":36,"end":42}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        plugin_key=plugin_key,\n"},"line_number":23,"absolute_offset":592,"submatches":[{"match":{"text":"plugin"},"start":8,"end":14},{"match":{"text":"plugin"},"start":19,"end":25}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"    from comate_cli.terminal_agent.plugins.tabs.errors_tab import ErrorsTab\n"},"line_number":41,"absolute_offset":1047,"submatches":[{"match":{"text":"plugin"},"start":35,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"            _make_plugin_error(\"plugin-a@mkt\"),\n"},"line_number":64,"absolute_offset":1758,"submatches":[{"match":{"text":"plugin"},"start":18,"end":24},{"match":{"text":"plugin"},"start":32,"end":38}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"            _make_plugin_error(\"plugin-b@mkt\"),\n"},"line_number":65,"absolute_offset":1806,"submatches":[{"match":{"text":"plugin"},"start":18,"end":24},{"match":{"text":"plugin"},"start":32,"end":38}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        tab = _make_tab(errors=[_make_plugin_error(\"p0\"), _make_plugin_error(\"p1\")])\n"},"line_number":75,"absolute_offset":2121,"submatches":[{"match":{"text":"plugin"},"start":38,"end":44},{"match":{"text":"plugin"},"start":64,"end":70}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        tab.set_errors([_make_plugin_error(\"p2\")])\n"},"line_number":77,"absolute_offset":2230,"submatches":[{"match":{"text":"plugin"},"start":30,"end":36}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        tab = _make_tab(errors=[_make_plugin_error(\"old@mkt\")])\n"},"line_number":81,"absolute_offset":2380,"submatches":[{"match":{"text":"plugin"},"start":38,"end":44}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        tab.set_errors([_make_plugin_error(\"new1@mkt\"), _make_plugin_error(\"new2@mkt\")])\n"},"line_number":82,"absolute_offset":2444,"submatches":[{"match":{"text":"plugin"},"start":30,"end":36},{"match":{"text":"plugin"},"start":62,"end":68}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        errors = [_make_plugin_error(\"p0\"), _make_plugin_error(\"p1\")]\n"},"line_number":99,"absolute_offset":3053,"submatches":[{"match":{"text":"plugin"},"start":24,"end":30},{"match":{"text":"plugin"},"start":50,"end":56}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        self.assertIn(\"No plugin errors\", flat)\n"},"line_number":123,"absolute_offset":3875,"submatches":[{"match":{"text":"plugin"},"start":26,"end":32}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"    def test_list_shows_plugin_key_with_error_marker(self) -> None:\n"},"line_number":134,"absolute_offset":4302,"submatches":[{"match":{"text":"plugin"},"start":24,"end":30}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        errors = [_make_plugin_error(\"plugin-a@mkt\")]\n"},"line_number":135,"absolute_offset":4370,"submatches":[{"match":{"text":"plugin"},"start":24,"end":30},{"match":{"text":"plugin"},"start":38,"end":44}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        self.assertIn(\"plugin-a@mkt\", flat)\n"},"line_number":141,"absolute_offset":4604,"submatches":[{"match":{"text":"plugin"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        errors = [_make_plugin_error(\"plugin-a@mkt\", error_type=\"manifest_error\")]\n"},"line_number":144,"absolute_offset":4699,"submatches":[{"match":{"text":"plugin"},"start":24,"end":30},{"match":{"text":"plugin"},"start":38,"end":44}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        errors = [_make_plugin_error(\"plugin-a@mkt\", message=\"Detailed error info\")]\n"},"line_number":152,"absolute_offset":5035,"submatches":[{"match":{"text":"plugin"},"start":24,"end":30},{"match":{"text":"plugin"},"start":38,"end":44}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        errors = [_make_plugin_error(\"plugin-a@mkt\", message=long_msg)]\n"},"line_number":161,"absolute_offset":5403,"submatches":[{"match":{"text":"plugin"},"start":24,"end":30},{"match":{"text":"plugin"},"start":38,"end":44}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        errors = [_make_plugin_error(\"plugin-a@mkt\")]\n"},"line_number":169,"absolute_offset":5711,"submatches":[{"match":{"text":"plugin"},"start":24,"end":30},{"match":{"text":"plugin"},"start":38,"end":44}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"            _make_plugin_error(\"plugin-a@mkt\"),\n"},"line_number":186,"absolute_offset":6315,"submatches":[{"match":{"text":"plugin"},"start":18,"end":24},{"match":{"text":"plugin"},"start":32,"end":38}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"            _make_plugin_error(\"plugin-b@mkt\"),\n"},"line_number":187,"absolute_offset":6363,"submatches":[{"match":{"text":"plugin"},"start":18,"end":24},{"match":{"text":"plugin"},"start":32,"end":38}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"            _make_plugin_error(\"plugin-c@mkt\"),\n"},"line_number":188,"absolute_offset":6411,"submatches":[{"match":{"text":"plugin"},"start":18,"end":24},{"match":{"text":"plugin"},"start":32,"end":38}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        self.assertIn(\"plugin-a@mkt\", flat)\n"},"line_number":194,"absolute_offset":6614,"submatches":[{"match":{"text":"plugin"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        self.assertIn(\"plugin-b@mkt\", flat)\n"},"line_number":195,"absolute_offset":6658,"submatches":[{"match":{"text":"plugin"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        self.assertIn(\"plugin-c@mkt\", flat)\n"},"line_number":196,"absolute_offset":6702,"submatches":[{"match":{"text":"plugin"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"            _make_plugin_error(\"p0@mkt\"),\n"},"line_number":207,"absolute_offset":7018,"submatches":[{"match":{"text":"plugin"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"            _make_plugin_error(\"p1@mkt\"),\n"},"line_number":208,"absolute_offset":7060,"submatches":[{"match":{"text":"plugin"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"            _make_plugin_error(\"p2@mkt\"),\n"},"line_number":209,"absolute_offset":7102,"submatches":[{"match":{"text":"plugin"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"            _make_plugin_error(\"p0@mkt\", error_id=\"err-0\"),\n"},"line_number":247,"absolute_offset":8302,"submatches":[{"match":{"text":"plugin"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"            _make_plugin_error(\"p1@mkt\", error_id=\"err-1\"),\n"},"line_number":248,"absolute_offset":8362,"submatches":[{"match":{"text":"plugin"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        self.assertEqual(tab._errors[0].plugin_key, \"p1@mkt\")\n"},"line_number":255,"absolute_offset":8623,"submatches":[{"match":{"text":"plugin"},"start":40,"end":46}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"            _make_plugin_error(\"p0@mkt\", error_id=\"err-0\"),\n"},"line_number":259,"absolute_offset":8767,"submatches":[{"match":{"text":"plugin"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"            _make_plugin_error(\"p1@mkt\", error_id=\"err-1\"),\n"},"line_number":260,"absolute_offset":8827,"submatches":[{"match":{"text":"plugin"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        errors = [_make_plugin_error(\"p0@mkt\"), _make_plugin_error(\"p1@mkt\")]\n"},"line_number":276,"absolute_offset":9415,"submatches":[{"match":{"text":"plugin"},"start":24,"end":30},{"match":{"text":"plugin"},"start":54,"end":60}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        errors = [_make_plugin_error(\"plugin-a@mkt\")]\n"},"line_number":291,"absolute_offset":9969,"submatches":[{"match":{"text":"plugin"},"start":24,"end":30},{"match":{"text":"plugin"},"start":38,"end":44}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        mock_create.side_effect = lambda coro: coro.close() or MagicMock()\n"},"line_number":294,"absolute_offset":10085,"submatches":[{"match":{"text":"ide"},"start":21,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        errors = [_make_plugin_error(\"plugin-a@mkt\")]\n"},"line_number":307,"absolute_offset":10589,"submatches":[{"match":{"text":"plugin"},"start":24,"end":30},{"match":{"text":"plugin"},"start":38,"end":44}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"            mock_create.side_effect = lambda coro: coro.close() or MagicMock()\n"},"line_number":311,"absolute_offset":10763,"submatches":[{"match":{"text":"ide"},"start":25,"end":28}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        self.assertIn(\"plugin-a@mkt\", tab._status_message)\n"},"line_number":313,"absolute_offset":10873,"submatches":[{"match":{"text":"plugin"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        tab = _make_tab(errors=[_make_plugin_error(\"plugin-a@mkt\")])\n"},"line_number":323,"absolute_offset":11205,"submatches":[{"match":{"text":"plugin"},"start":38,"end":44},{"match":{"text":"plugin"},"start":52,"end":58}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        error = _make_plugin_error(\"plugin-a@mkt\", error_id=\"err-001\")\n"},"line_number":336,"absolute_offset":11715,"submatches":[{"match":{"text":"plugin"},"start":22,"end":28},{"match":{"text":"plugin"},"start":36,"end":42}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        install_path = Path(\"/fake/plugin-a\")\n"},"line_number":337,"absolute_offset":11786,"submatches":[{"match":{"text":"plugin"},"start":35,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        installed = {\"plugin-a@mkt\": [_make_installed_entry(install_path)]}\n"},"line_number":338,"absolute_offset":11832,"submatches":[{"match":{"text":"plugin"},"start":22,"end":28}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"            \"comate_cli.terminal_agent.plugins.tabs.errors_tab.get_app_or_none\",\n"},"line_number":344,"absolute_offset":12014,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        error = _make_plugin_error(\"plugin-a@mkt\", error_id=\"err-001\")\n"},"line_number":355,"absolute_offset":12528,"submatches":[{"match":{"text":"plugin"},"start":22,"end":28},{"match":{"text":"plugin"},"start":36,"end":42}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        install_path = Path(\"/fake/plugin-a\")\n"},"line_number":356,"absolute_offset":12599,"submatches":[{"match":{"text":"plugin"},"start":35,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        installed = {\"plugin-a@mkt\": [_make_installed_entry(install_path)]}\n"},"line_number":357,"absolute_offset":12645,"submatches":[{"match":{"text":"plugin"},"start":22,"end":28}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        tab._loader.load_from_path = MagicMock(side_effect=ValueError(\"manifest missing\"))\n"},"line_number":361,"absolute_offset":12806,"submatches":[{"match":{"text":"ide"},"start":48,"end":51}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"            \"comate_cli.terminal_agent.plugins.tabs.errors_tab.get_app_or_none\",\n"},"line_number":364,"absolute_offset":12918,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        error = _make_plugin_error(\"plugin-a@mkt\", error_id=\"err-001\")\n"},"line_number":375,"absolute_offset":13397,"submatches":[{"match":{"text":"plugin"},"start":22,"end":28},{"match":{"text":"plugin"},"start":36,"end":42}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"            \"comate_cli.terminal_agent.plugins.tabs.errors_tab.get_app_or_none\",\n"},"line_number":381,"absolute_offset":13597,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        error_a = _make_plugin_error(\"plugin-a@mkt\", error_id=\"err-a\")\n"},"line_number":391,"absolute_offset":14036,"submatches":[{"match":{"text":"plugin"},"start":24,"end":30},{"match":{"text":"plugin"},"start":38,"end":44}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        error_b = _make_plugin_error(\"plugin-b@mkt\", error_id=\"err-b\")\n"},"line_number":392,"absolute_offset":14107,"submatches":[{"match":{"text":"plugin"},"start":24,"end":30},{"match":{"text":"plugin"},"start":38,"end":44}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        install_path_a = Path(\"/fake/plugin-a\")\n"},"line_number":393,"absolute_offset":14178,"submatches":[{"match":{"text":"plugin"},"start":37,"end":43}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        installed = {\"plugin-a@mkt\": [_make_installed_entry(install_path_a)]}\n"},"line_number":394,"absolute_offset":14226,"submatches":[{"match":{"text":"plugin"},"start":22,"end":28}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"            \"comate_cli.terminal_agent.plugins.tabs.errors_tab.get_app_or_none\",\n"},"line_number":400,"absolute_offset":14421,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"lines":{"text":"        self.assertEqual(tab._errors[0].plugin_key, \"plugin-b@mkt\")\n"},"line_number":406,"absolute_offset":14631,"submatches":[{"match":{"text":"plugin"},"start":40,"end":46},{"match":{"text":"plugin"},"start":53,"end":59}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_errors_tab.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":375684,"human":"0.000376s"},"searches":1,"searches_with_match":1,"bytes_searched":14699,"bytes_printed":20007,"matched_lines":61,"matches":87}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tui_esc_queue.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tui_esc_queue.py"},"lines":{"text":"class _FakePluginUI:\n"},"line_number":74,"absolute_offset":1929,"submatches":[{"match":{"text":"Plugin"},"start":11,"end":17}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tui_esc_queue.py"},"lines":{"text":"        self._plugin_ui = _FakePluginUI()\n"},"line_number":83,"absolute_offset":2164,"submatches":[{"match":{"text":"plugin"},"start":14,"end":20},{"match":{"text":"Plugin"},"start":31,"end":37}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tui_esc_queue.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":144175,"human":"0.000144s"},"searches":1,"searches_with_match":1,"bytes_searched":8274,"bytes_printed":722,"matched_lines":2,"matches":3}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_shutdown_noise_guard.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_shutdown_noise_guard.py"},"lines":{"text":"def test_install_is_idempotent():\n"},"line_number":88,"absolute_offset":2556,"submatches":[{"match":{"text":"ide"},"start":20,"end":23}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_shutdown_noise_guard.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":39679,"human":"0.000040s"},"searches":1,"searches_with_match":1,"bytes_searched":6319,"bytes_printed":411,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"from comate_agent_sdk.facade.config.providers import (\n"},"line_number":27,"absolute_offset":917,"submatches":[{"match":{"text":"ide"},"start":40,"end":43}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"    PROVIDER_PRESETS,\n"},"line_number":28,"absolute_offset":972,"submatches":[{"match":{"text":"IDE"},"start":8,"end":11}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"    ProviderPreset,\n"},"line_number":31,"absolute_offset":1042,"submatches":[{"match":{"text":"ide"},"start":8,"end":11}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"    _PROVIDER_ENV_VARS,\n"},"line_number":32,"absolute_offset":1062,"submatches":[{"match":{"text":"IDE"},"start":9,"end":12}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"_PROVIDER_MENU_PRIORITY: dict[str, int] = {\n"},"line_number":58,"absolute_offset":1623,"submatches":[{"match":{"text":"IDE"},"start":5,"end":8}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"    \"selection.divider\":              \"fg:#334155\",\n"},"line_number":75,"absolute_offset":2098,"submatches":[{"match":{"text":"ide"},"start":18,"end":21}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"        console.print(f\"[red]Failed to save provider settings: {exc}[/]\")\n"},"line_number":137,"absolute_offset":4419,"submatches":[{"match":{"text":"ide"},"start":48,"end":51}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"            \"Please check project/local overrides.[/]\"\n"},"line_number":144,"absolute_offset":4790,"submatches":[{"match":{"text":"ide"},"start":45,"end":48}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"    console.print(f\"[green]Provider settings saved: {settings_path}[/]\")\n"},"line_number":148,"absolute_offset":4940,"submatches":[{"match":{"text":"ide"},"start":31,"end":34}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"    model_value = _truncate_value(f\"{entry.provider}:{entry.model}\")\n"},"line_number":170,"absolute_offset":5625,"submatches":[{"match":{"text":"ide"},"start":47,"end":50}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"    console.print(\"[red]Provider setup required[/]\")\n"},"line_number":191,"absolute_offset":6514,"submatches":[{"match":{"text":"ide"},"start":28,"end":31}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"    console.print(\"[dim]You need to configure an API provider before you can continue.[/]\")\n"},"line_number":192,"absolute_offset":6567,"submatches":[{"match":{"text":"ide"},"start":57,"end":60}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"    console.print(\"[dim]Run `comate` in interactive mode to complete provider setup.[/]\")\n"},"line_number":194,"absolute_offset":6704,"submatches":[{"match":{"text":"ide"},"start":73,"end":76}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"        self._selected_preset: ProviderPreset | None = None\n"},"line_number":234,"absolute_offset":8029,"submatches":[{"match":{"text":"ide"},"start":35,"end":38}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"        self._provider_to_key: dict[str, str | None] = {}\n"},"line_number":238,"absolute_offset":8237,"submatches":[{"match":{"text":"ide"},"start":18,"end":21}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"        self._providers_need_key: list[str] = []\n"},"line_number":239,"absolute_offset":8295,"submatches":[{"match":{"text":"ide"},"start":18,"end":21}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"            title=f\"Provider setup required ({self._project_root})\",\n"},"line_number":433,"absolute_offset":14828,"submatches":[{"match":{"text":"ide"},"start":24,"end":27}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"            self._open_provider_menu()\n"},"line_number":445,"absolute_offset":15268,"submatches":[{"match":{"text":"ide"},"start":27,"end":30}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"    def _open_provider_menu(self) -> None:\n"},"line_number":449,"absolute_offset":15379,"submatches":[{"match":{"text":"ide"},"start":18,"end":21}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"            enumerate(PROVIDER_PRESETS),\n"},"line_number":452,"absolute_offset":15501,"submatches":[{"match":{"text":"IDE"},"start":26,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"            key=lambda pair: (_PROVIDER_MENU_PRIORITY.get(pair[1].preset_id, 100), pair[0]),\n"},"line_number":453,"absolute_offset":15542,"submatches":[{"match":{"text":"IDE"},"start":35,"end":38}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"            title=\"Choose your API provider\",\n"},"line_number":464,"absolute_offset":15894,"submatches":[{"match":{"text":"ide"},"start":39,"end":42}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"            on_submit=self._on_provider_selected,\n"},"line_number":470,"absolute_offset":16098,"submatches":[{"match":{"text":"ide"},"start":35,"end":38}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"            cancel_detail=\"provider_cancelled\",\n"},"line_number":471,"absolute_offset":16148,"submatches":[{"match":{"text":"ide"},"start":31,"end":34}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"    def _on_provider_selected(self, value: str) -> None:\n"},"line_number":474,"absolute_offset":16207,"submatches":[{"match":{"text":"ide"},"start":16,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"        selected = next((preset for preset in PROVIDER_PRESETS if preset.preset_id == value), None)\n"},"line_number":475,"absolute_offset":16264,"submatches":[{"match":{"text":"IDE"},"start":50,"end":53}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"            self._cancel_with_detail(\"provider_cancelled\")\n"},"line_number":477,"absolute_offset":16393,"submatches":[{"match":{"text":"ide"},"start":42,"end":45}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"                provider=current.provider,\n"},"line_number":507,"absolute_offset":17505,"submatches":[{"match":{"text":"ide"},"start":20,"end":23},{"match":{"text":"ide"},"start":37,"end":40}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"        self._back_fn = self._open_provider_menu\n"},"line_number":517,"absolute_offset":17832,"submatches":[{"match":{"text":"ide"},"start":39,"end":42}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"            title=f\"Review model levels (Provider: {self._selected_preset.label})\",\n"},"line_number":552,"absolute_offset":19219,"submatches":[{"match":{"text":"ide"},"start":45,"end":48}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"                provider=current.provider,\n"},"line_number":607,"absolute_offset":21343,"submatches":[{"match":{"text":"ide"},"start":20,"end":23},{"match":{"text":"ide"},"start":37,"end":40}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"            provider=current.provider,\n"},"line_number":634,"absolute_offset":22420,"submatches":[{"match":{"text":"ide"},"start":16,"end":19},{"match":{"text":"ide"},"start":33,"end":36}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"        self._provider_to_key = {}\n"},"line_number":648,"absolute_offset":22881,"submatches":[{"match":{"text":"ide"},"start":18,"end":21}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"        self._providers_need_key = []\n"},"line_number":649,"absolute_offset":22916,"submatches":[{"match":{"text":"ide"},"start":18,"end":21}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"        seen_providers: set[str] = set()\n"},"line_number":651,"absolute_offset":22987,"submatches":[{"match":{"text":"ide"},"start":17,"end":20}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"            provider = entry.provider\n"},"line_number":654,"absolute_offset":23100,"submatches":[{"match":{"text":"ide"},"start":16,"end":19},{"match":{"text":"ide"},"start":33,"end":36}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"            if provider in seen_providers:\n"},"line_number":655,"absolute_offset":23138,"submatches":[{"match":{"text":"ide"},"start":19,"end":22},{"match":{"text":"ide"},"start":36,"end":39}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"            seen_providers.add(provider)\n"},"line_number":657,"absolute_offset":23206,"submatches":[{"match":{"text":"ide"},"start":21,"end":24},{"match":{"text":"ide"},"start":35,"end":38}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"            env_name = _PROVIDER_ENV_VARS.get(provider)\n"},"line_number":658,"absolute_offset":23247,"submatches":[{"match":{"text":"IDE"},"start":28,"end":31},{"match":{"text":"ide"},"start":50,"end":53}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"                self._provider_to_key[provider] = None\n"},"line_number":660,"absolute_offset":23374,"submatches":[{"match":{"text":"ide"},"start":26,"end":29},{"match":{"text":"ide"},"start":42,"end":45}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"            self._providers_need_key.append(provider)\n"},"line_number":662,"absolute_offset":23454,"submatches":[{"match":{"text":"ide"},"start":22,"end":25},{"match":{"text":"ide"},"start":48,"end":51}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"        if self._next_key_index >= len(self._providers_need_key):\n"},"line_number":666,"absolute_offset":23589,"submatches":[{"match":{"text":"ide"},"start":49,"end":52}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"        provider = self._providers_need_key[self._next_key_index]\n"},"line_number":670,"absolute_offset":23779,"submatches":[{"match":{"text":"ide"},"start":12,"end":15},{"match":{"text":"ide"},"start":29,"end":32}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"            title=f\"Enter API key for {provider.title()}\",\n"},"line_number":673,"absolute_offset":23916,"submatches":[{"match":{"text":"ide"},"start":43,"end":46}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"            on_submit=lambda text, _provider=provider: self._on_api_key_submitted(_provider, text),\n"},"line_number":678,"absolute_offset":24091,"submatches":[{"match":{"text":"ide"},"start":40,"end":43},{"match":{"text":"ide"},"start":49,"end":52},{"match":{"text":"ide"},"start":87,"end":90}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"    def _on_api_key_submitted(self, provider: str, key: str) -> None:\n"},"line_number":682,"absolute_offset":24245,"submatches":[{"match":{"text":"ide"},"start":40,"end":43}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"        self._provider_to_key[provider] = key.strip()\n"},"line_number":683,"absolute_offset":24315,"submatches":[{"match":{"text":"ide"},"start":18,"end":21},{"match":{"text":"ide"},"start":34,"end":37}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"                provider=entry.provider,\n"},"line_number":692,"absolute_offset":24681,"submatches":[{"match":{"text":"ide"},"start":20,"end":23},{"match":{"text":"ide"},"start":35,"end":38}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"lines":{"text":"                api_key=self._provider_to_key.get(entry.provider),\n"},"line_number":695,"absolute_offset":24798,"submatches":[{"match":{"text":"ide"},"start":34,"end":37},{"match":{"text":"ide"},"start":60,"end":63}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/preflight.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":429247,"human":"0.000429s"},"searches":1,"searches_with_match":1,"bytes_searched":26819,"bytes_printed":16020,"matched_lines":49,"matches":64}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_viewer_key_bindings.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_viewer_key_bindings.py"},"lines":{"text":"    def test_async_viewer_helper_calls_transcript_runner_inside_terminal_context(self) -> None:\n"},"line_number":46,"absolute_offset":1267,"submatches":[{"match":{"text":"ide"},"start":60,"end":63}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_viewer_key_bindings.py"},"lines":{"text":"            side_effect=_fake_runner,\n"},"line_number":62,"absolute_offset":1952,"submatches":[{"match":{"text":"ide"},"start":13,"end":16}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_viewer_key_bindings.py"},"lines":{"text":"            side_effect=_boom,\n"},"line_number":90,"absolute_offset":2928,"submatches":[{"match":{"text":"ide"},"start":13,"end":16}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_result_viewer_key_bindings.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":18755,"human":"0.000019s"},"searches":1,"searches_with_match":1,"bytes_searched":3190,"bytes_printed":1084,"matched_lines":3,"matches":3}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_path_context_hint.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_path_context_hint.py"},"lines":{"text":"    def test_file_no_extension(self) -> None:\n"},"line_number":85,"absolute_offset":3066,"submatches":[{"match":{"text":"extension"},"start":21,"end":30}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_path_context_hint.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":57395,"human":"0.000057s"},"searches":1,"searches_with_match":1,"bytes_searched":5061,"bytes_printed":423,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_question_view.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_question_view.py"},"lines":{"text":"    def test_options_window_hides_cursor(self) -> None:\n"},"line_number":7,"absolute_offset":132,"submatches":[{"match":{"text":"ide"},"start":29,"end":32}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_question_view.py"},"lines":{"text":"        self.assertTrue(ui._options_window.always_hide_cursor())\n"},"line_number":9,"absolute_offset":221,"submatches":[{"match":{"text":"ide"},"start":51,"end":54}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_question_view.py"},"lines":{"text":"    def test_single_select_custom_overrides_selected_option(self) -> None:\n"},"line_number":197,"absolute_offset":6742,"submatches":[{"match":{"text":"ide"},"start":39,"end":42}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_question_view.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":272534,"human":"0.000273s"},"searches":1,"searches_with_match":1,"bytes_searched":21930,"bytes_printed":1040,"matched_lines":3,"matches":3}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_marketplaces_tab.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_marketplaces_tab.py"},"lines":{"text":"    from comate_cli.terminal_agent.plugins.plugin_picker import PluginPickerContext\n"},"line_number":30,"absolute_offset":721,"submatches":[{"match":{"text":"plugin"},"start":35,"end":41},{"match":{"text":"plugin"},"start":43,"end":49},{"match":{"text":"Plugin"},"start":64,"end":70}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_marketplaces_tab.py"},"lines":{"text":"    return PluginPickerContext(\n"},"line_number":32,"absolute_offset":806,"submatches":[{"match":{"text":"Plugin"},"start":11,"end":17}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_marketplaces_tab.py"},"lines":{"text":"    from comate_cli.terminal_agent.plugins.tabs.marketplaces_tab import MarketplacesTab\n"},"line_number":45,"absolute_offset":1153,"submatches":[{"match":{"text":"plugin"},"start":35,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_marketplaces_tab.py"},"lines":{"text":"    def test_activate_counts_installed_plugins(self) -> None:\n"},"line_number":99,"absolute_offset":3025,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_marketplaces_tab.py"},"lines":{"text":"            \"plugin-x@mkt-a\": [MagicMock()],\n"},"line_number":102,"absolute_offset":3175,"submatches":[{"match":{"text":"plugin"},"start":13,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_marketplaces_tab.py"},"lines":{"text":"            \"plugin-y@mkt-a\": [MagicMock()],\n"},"line_number":103,"absolute_offset":3220,"submatches":[{"match":{"text":"plugin"},"start":13,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_marketplaces_tab.py"},"lines":{"text":"        # 选到 Remove 动作（顺序：Browse plugins / Update / Remove / Back）\n"},"line_number":289,"absolute_offset":10272,"submatches":[{"match":{"text":"plugin"},"start":49,"end":55}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_marketplaces_tab.py"},"lines":{"text":"            mock_create.side_effect = lambda coro: coro.close() or MagicMock()\n"},"line_number":294,"absolute_offset":10468,"submatches":[{"match":{"text":"ide"},"start":25,"end":28}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_marketplaces_tab.py"},"lines":{"text":"        installed = {\"plugin-x@my-mkt\": [MagicMock()]}\n"},"line_number":303,"absolute_offset":10903,"submatches":[{"match":{"text":"plugin"},"start":22,"end":28}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_marketplaces_tab.py"},"lines":{"text":"        installed = {\"plugin-x@my-mkt\": [MagicMock()]}\n"},"line_number":320,"absolute_offset":11565,"submatches":[{"match":{"text":"plugin"},"start":22,"end":28}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_marketplaces_tab.py"},"lines":{"text":"        installed = {\"plugin-x@my-mkt\": [MagicMock()]}\n"},"line_number":336,"absolute_offset":12161,"submatches":[{"match":{"text":"plugin"},"start":22,"end":28}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_marketplaces_tab.py"},"lines":{"text":"            mock_create.side_effect = lambda coro: coro.close() or MagicMock()\n"},"line_number":348,"absolute_offset":12624,"submatches":[{"match":{"text":"ide"},"start":25,"end":28}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_marketplaces_tab.py"},"lines":{"text":"        # 选到 Update 动作（顺序：Browse plugins / Update / Remove / Back）\n"},"line_number":365,"absolute_offset":13248,"submatches":[{"match":{"text":"plugin"},"start":49,"end":55}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_marketplaces_tab.py"},"lines":{"text":"        mock_create.side_effect = lambda coro: coro.close() or MagicMock()\n"},"line_number":367,"absolute_offset":13359,"submatches":[{"match":{"text":"ide"},"start":21,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_marketplaces_tab.py"},"lines":{"text":"        mock_create.side_effect = lambda coro: coro.close() or MagicMock()\n"},"line_number":397,"absolute_offset":14507,"submatches":[{"match":{"text":"ide"},"start":21,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_marketplaces_tab.py"},"lines":{"text":"            \"comate_cli.terminal_agent.plugins.tabs.marketplaces_tab.get_app_or_none\",\n"},"line_number":425,"absolute_offset":15552,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_marketplaces_tab.py"},"lines":{"text":"        tab._mkt_mgr.add = AsyncMock(side_effect=RuntimeError(\"git clone failed\"))\n"},"line_number":436,"absolute_offset":15997,"submatches":[{"match":{"text":"ide"},"start":38,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_marketplaces_tab.py"},"lines":{"text":"            \"comate_cli.terminal_agent.plugins.tabs.marketplaces_tab.get_app_or_none\",\n"},"line_number":439,"absolute_offset":16101,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_marketplaces_tab.py"},"lines":{"text":"            \"comate_cli.terminal_agent.plugins.tabs.marketplaces_tab.get_app_or_none\",\n"},"line_number":452,"absolute_offset":16586,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_marketplaces_tab.py"},"lines":{"text":"        tab._mkt_mgr.update = AsyncMock(side_effect=RuntimeError(\"network error\"))\n"},"line_number":463,"absolute_offset":17054,"submatches":[{"match":{"text":"ide"},"start":41,"end":44}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_marketplaces_tab.py"},"lines":{"text":"            \"comate_cli.terminal_agent.plugins.tabs.marketplaces_tab.get_app_or_none\",\n"},"line_number":466,"absolute_offset":17158,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_marketplaces_tab.py"},"lines":{"text":"            \"comate_cli.terminal_agent.plugins.tabs.marketplaces_tab.get_app_or_none\",\n"},"line_number":479,"absolute_offset":17636,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_marketplaces_tab.py"},"lines":{"text":"        tab._mkt_mgr.remove = AsyncMock(side_effect=ValueError(\"has installed plugins\"))\n"},"line_number":490,"absolute_offset":18104,"submatches":[{"match":{"text":"ide"},"start":41,"end":44},{"match":{"text":"plugin"},"start":78,"end":84}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_marketplaces_tab.py"},"lines":{"text":"            \"comate_cli.terminal_agent.plugins.tabs.marketplaces_tab.get_app_or_none\",\n"},"line_number":493,"absolute_offset":18214,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_marketplaces_tab.py"},"lines":{"text":"        self.assertIn(\"has installed plugins\", tab._status_message)\n"},"line_number":499,"absolute_offset":18440,"submatches":[{"match":{"text":"plugin"},"start":37,"end":43}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_marketplaces_tab.py"},"lines":{"text":"            \"comate_cli.terminal_agent.plugins.tabs.marketplaces_tab.get_app_or_none\",\n"},"line_number":515,"absolute_offset":19077,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_marketplaces_tab.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":297779,"human":"0.000298s"},"searches":1,"searches_with_match":1,"bytes_searched":19357,"bytes_printed":8698,"matched_lines":26,"matches":29}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer.py"},"lines":{"text":"            side_effect=[100.0, 100.2, 100.2],\n"},"line_number":56,"absolute_offset":1495,"submatches":[{"match":{"text":"ide"},"start":13,"end":16}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer.py"},"lines":{"text":"            side_effect=[100.0, 100.7, 100.7],\n"},"line_number":70,"absolute_offset":2105,"submatches":[{"match":{"text":"ide"},"start":13,"end":16}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer.py"},"lines":{"text":"    def test_team_message_event_deduplicates_identical_event(self) -> None:\n"},"line_number":96,"absolute_offset":3247,"submatches":[{"match":{"text":"ide"},"start":45,"end":48}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer.py"},"lines":{"text":"    def test_task_tool_history_hides_prompt_and_prefix_icons(self) -> None:\n"},"line_number":562,"absolute_offset":20504,"submatches":[{"match":{"text":"ide"},"start":32,"end":35}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer.py"},"lines":{"text":"    def test_task_completed_appends_summary_and_hides_panel(self) -> None:\n"},"line_number":684,"absolute_offset":24877,"submatches":[{"match":{"text":"ide"},"start":49,"end":52}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer.py"},"lines":{"text":"                \"Message: path /repo/packages is outside allowed roots: /repo/packages/comate_cli\\n\"\n"},"line_number":1325,"absolute_offset":51426,"submatches":[{"match":{"text":"ide"},"start":53,"end":56}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer.py"},"lines":{"text":"            \"path /repo/packages is outside allowed roots: /repo/packages/comate_cli\",\n"},"line_number":1333,"absolute_offset":51779,"submatches":[{"match":{"text":"ide"},"start":40,"end":43}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":421441,"human":"0.000421s"},"searches":1,"searches_with_match":1,"bytes_searched":64672,"bytes_printed":2347,"matched_lines":7,"matches":7}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_skills_slash_command.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_skills_slash_command.py"},"lines":{"text":"        self._loaded_plugins: list[object] = []\n"},"line_number":68,"absolute_offset":2270,"submatches":[{"match":{"text":"plugin"},"start":21,"end":27}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_skills_slash_command.py"},"lines":{"text":"    def test_active_session_skills_marks_plugin_source(self) -> None:\n"},"line_number":248,"absolute_offset":8250,"submatches":[{"match":{"text":"plugin"},"start":41,"end":47}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_skills_slash_command.py"},"lines":{"text":"        app._loaded_plugins = [SimpleNamespace(namespace=\"tools\")]\n"},"line_number":265,"absolute_offset":8854,"submatches":[{"match":{"text":"plugin"},"start":20,"end":26}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_skills_slash_command.py"},"lines":{"text":"                    \"description\": f\"· plugin · ~{token_count} tok\",\n"},"line_number":275,"absolute_offset":9169,"submatches":[{"match":{"text":"plugin"},"start":40,"end":46}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_skills_slash_command.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":161793,"human":"0.000162s"},"searches":1,"searches_with_match":1,"bytes_searched":14181,"bytes_printed":1401,"matched_lines":4,"matches":4}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"class TestParsePluginArgs(unittest.TestCase):\n"},"line_number":4,"absolute_offset":18,"submatches":[{"match":{"text":"Plugin"},"start":15,"end":21}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        from comate_cli.terminal_agent.plugins.plugin_picker import parse_plugin_args\n"},"line_number":6,"absolute_offset":103,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45},{"match":{"text":"plugin"},"start":47,"end":53},{"match":{"text":"plugin"},"start":74,"end":80}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        ctx = parse_plugin_args(\"\")\n"},"line_number":7,"absolute_offset":189,"submatches":[{"match":{"text":"plugin"},"start":20,"end":26}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        self.assertIsNone(ctx.target_plugin)\n"},"line_number":9,"absolute_offset":279,"submatches":[{"match":{"text":"plugin"},"start":37,"end":43}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        from comate_cli.terminal_agent.plugins.plugin_picker import parse_plugin_args\n"},"line_number":12,"absolute_offset":369,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45},{"match":{"text":"plugin"},"start":47,"end":53},{"match":{"text":"plugin"},"start":74,"end":80}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        ctx = parse_plugin_args(\"install compound-engineering\")\n"},"line_number":13,"absolute_offset":455,"submatches":[{"match":{"text":"plugin"},"start":20,"end":26}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        self.assertEqual(ctx.target_plugin, \"compound-engineering\")\n"},"line_number":15,"absolute_offset":573,"submatches":[{"match":{"text":"plugin"},"start":36,"end":42}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        from comate_cli.terminal_agent.plugins.plugin_picker import parse_plugin_args\n"},"line_number":19,"absolute_offset":736,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45},{"match":{"text":"plugin"},"start":47,"end":53},{"match":{"text":"plugin"},"start":74,"end":80}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        ctx = parse_plugin_args(\"uninstall compound-engineering@mkt\")\n"},"line_number":20,"absolute_offset":822,"submatches":[{"match":{"text":"plugin"},"start":20,"end":26}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        self.assertEqual(ctx.target_plugin, \"compound-engineering@mkt\")\n"},"line_number":22,"absolute_offset":947,"submatches":[{"match":{"text":"plugin"},"start":36,"end":42}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        from comate_cli.terminal_agent.plugins.plugin_picker import parse_plugin_args\n"},"line_number":26,"absolute_offset":1114,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45},{"match":{"text":"plugin"},"start":47,"end":53},{"match":{"text":"plugin"},"start":74,"end":80}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        ctx = parse_plugin_args(\"marketplace add EveryInc/compound-engineering-plugin\")\n"},"line_number":27,"absolute_offset":1200,"submatches":[{"match":{"text":"plugin"},"start":20,"end":26},{"match":{"text":"plugin"},"start":79,"end":85}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        self.assertEqual(ctx.target_marketplace, \"EveryInc/compound-engineering-plugin\")\n"},"line_number":29,"absolute_offset":1346,"submatches":[{"match":{"text":"plugin"},"start":80,"end":86}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        from comate_cli.terminal_agent.plugins.plugin_picker import parse_plugin_args\n"},"line_number":33,"absolute_offset":1523,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45},{"match":{"text":"plugin"},"start":47,"end":53},{"match":{"text":"plugin"},"start":74,"end":80}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        ctx = parse_plugin_args(\"enable my-plugin\")\n"},"line_number":34,"absolute_offset":1609,"submatches":[{"match":{"text":"plugin"},"start":20,"end":26},{"match":{"text":"plugin"},"start":43,"end":49}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        from comate_cli.terminal_agent.plugins.plugin_picker import parse_plugin_args\n"},"line_number":39,"absolute_offset":1811,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45},{"match":{"text":"plugin"},"start":47,"end":53},{"match":{"text":"plugin"},"start":74,"end":80}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        ctx = parse_plugin_args(\"marketplace update superpowers-marketplace\")\n"},"line_number":40,"absolute_offset":1897,"submatches":[{"match":{"text":"plugin"},"start":20,"end":26}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        from comate_agent_sdk.plugins.models import PluginSource\n"},"line_number":53,"absolute_offset":2489,"submatches":[{"match":{"text":"plugin"},"start":30,"end":36},{"match":{"text":"Plugin"},"start":52,"end":58}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        entry.source = kwargs.get(\"source\", PluginSource(type=\"local\", path=\"s\"))\n"},"line_number":54,"absolute_offset":2554,"submatches":[{"match":{"text":"Plugin"},"start":44,"end":50}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        from comate_cli.terminal_agent.plugins.tabs.discover_tab import DiscoverTab\n"},"line_number":62,"absolute_offset":2872,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        from comate_cli.terminal_agent.plugins.plugin_picker import PluginPickerContext\n"},"line_number":63,"absolute_offset":2956,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45},{"match":{"text":"plugin"},"start":47,"end":53},{"match":{"text":"Plugin"},"start":68,"end":74}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        plugin_mgr = MagicMock()\n"},"line_number":64,"absolute_offset":3044,"submatches":[{"match":{"text":"plugin"},"start":8,"end":14}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        mkt_mgr.list_all_available_plugins.return_value = {\n"},"line_number":66,"absolute_offset":3107,"submatches":[{"match":{"text":"plugin"},"start":35,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"                self._make_entry(\"plugin-a\", \"desc a\"),\n"},"line_number":68,"absolute_offset":3193,"submatches":[{"match":{"text":"plugin"},"start":34,"end":40}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"                self._make_entry(\"plugin-b\", \"desc b\"),\n"},"line_number":69,"absolute_offset":3249,"submatches":[{"match":{"text":"plugin"},"start":34,"end":40}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        ctx = PluginPickerContext()\n"},"line_number":75,"absolute_offset":3439,"submatches":[{"match":{"text":"Plugin"},"start":14,"end":20}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        tab = DiscoverTab(plugin_mgr, mkt_mgr, registry, loader, ctx)\n"},"line_number":76,"absolute_offset":3475,"submatches":[{"match":{"text":"plugin"},"start":26,"end":32}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        from comate_cli.terminal_agent.plugins.tabs.discover_tab import DiscoverTab\n"},"line_number":86,"absolute_offset":3798,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        from comate_cli.terminal_agent.plugins.plugin_picker import PluginPickerContext\n"},"line_number":87,"absolute_offset":3882,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45},{"match":{"text":"plugin"},"start":47,"end":53},{"match":{"text":"Plugin"},"start":68,"end":74}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        plugin_mgr = MagicMock()\n"},"line_number":88,"absolute_offset":3970,"submatches":[{"match":{"text":"plugin"},"start":8,"end":14}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        mkt_mgr.list_all_available_plugins.return_value = {}\n"},"line_number":90,"absolute_offset":4033,"submatches":[{"match":{"text":"plugin"},"start":35,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        tab = DiscoverTab(plugin_mgr, mkt_mgr, registry, MagicMock(), PluginPickerContext())\n"},"line_number":93,"absolute_offset":4175,"submatches":[{"match":{"text":"plugin"},"start":26,"end":32},{"match":{"text":"Plugin"},"start":70,"end":76}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        tab.apply_filter(\"plugin-a\")\n"},"line_number":114,"absolute_offset":4887,"submatches":[{"match":{"text":"plugin"},"start":26,"end":32}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"            side_effect=lambda coro: coro.close() or MagicMock(),\n"},"line_number":125,"absolute_offset":5302,"submatches":[{"match":{"text":"ide"},"start":13,"end":16}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        from comate_cli.terminal_agent.plugins.tabs.installed_tab import InstalledTab\n"},"line_number":136,"absolute_offset":5692,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        from comate_cli.terminal_agent.plugins.plugin_picker import PluginPickerContext\n"},"line_number":137,"absolute_offset":5778,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45},{"match":{"text":"plugin"},"start":47,"end":53},{"match":{"text":"Plugin"},"start":68,"end":74}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        plugin_mgr = MagicMock()\n"},"line_number":138,"absolute_offset":5866,"submatches":[{"match":{"text":"plugin"},"start":8,"end":14}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        registry.list_installed.return_value = {\"my-plugin@mkt\": [entry]}\n"},"line_number":141,"absolute_offset":6018,"submatches":[{"match":{"text":"plugin"},"start":52,"end":58}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        tab = InstalledTab(plugin_mgr, registry, PluginPickerContext())\n"},"line_number":142,"absolute_offset":6092,"submatches":[{"match":{"text":"plugin"},"start":27,"end":33},{"match":{"text":"Plugin"},"start":49,"end":55}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        from comate_cli.terminal_agent.plugins.tabs.errors_tab import ErrorsTab\n"},"line_number":183,"absolute_offset":7434,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        error1 = MagicMock(plugin_key=\"bad-plugin@mkt\", error_type=\"LoadError\", message=\"Failed to load\", error_id=\"e1\")\n"},"line_number":188,"absolute_offset":7666,"submatches":[{"match":{"text":"plugin"},"start":27,"end":33},{"match":{"text":"plugin"},"start":43,"end":49}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        error2 = MagicMock(plugin_key=\"other-plugin@mkt\", error_type=\"ParseError\", message=\"Invalid manifest\", error_id=\"e2\")\n"},"line_number":189,"absolute_offset":7787,"submatches":[{"match":{"text":"plugin"},"start":27,"end":33},{"match":{"text":"plugin"},"start":45,"end":51}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        from comate_cli.terminal_agent.plugins.tabs.errors_tab import ErrorsTab\n"},"line_number":199,"absolute_offset":8184,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        from comate_cli.terminal_agent.plugins.tabs.marketplaces_tab import MarketplacesTab\n"},"line_number":232,"absolute_offset":9260,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        from comate_cli.terminal_agent.plugins.plugin_picker import PluginPickerContext\n"},"line_number":233,"absolute_offset":9352,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45},{"match":{"text":"plugin"},"start":47,"end":53},{"match":{"text":"Plugin"},"start":68,"end":74}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        tab = MarketplacesTab(mkt_mgr, registry, PluginPickerContext())\n"},"line_number":242,"absolute_offset":9809,"submatches":[{"match":{"text":"Plugin"},"start":49,"end":55}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"class TestPluginPickerLayout(unittest.TestCase):\n"},"line_number":294,"absolute_offset":11522,"submatches":[{"match":{"text":"Plugin"},"start":10,"end":16}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        from comate_cli.terminal_agent.plugins.plugin_picker import PluginPickerUI, PluginPickerContext\n"},"line_number":297,"absolute_offset":11643,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45},{"match":{"text":"plugin"},"start":47,"end":53},{"match":{"text":"Plugin"},"start":68,"end":74},{"match":{"text":"Plugin"},"start":84,"end":90}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        plugin_mgr = MagicMock()\n"},"line_number":301,"absolute_offset":11881,"submatches":[{"match":{"text":"plugin"},"start":8,"end":14}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        mkt_mgr.list_all_available_plugins.return_value = {}\n"},"line_number":303,"absolute_offset":11944,"submatches":[{"match":{"text":"plugin"},"start":35,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        ui = PluginPickerUI()\n"},"line_number":306,"absolute_offset":12061,"submatches":[{"match":{"text":"Plugin"},"start":13,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"            registry=registry, plugin_manager=plugin_mgr,\n"},"line_number":308,"absolute_offset":12109,"submatches":[{"match":{"text":"plugin"},"start":31,"end":37},{"match":{"text":"plugin"},"start":46,"end":52}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"            context=PluginPickerContext(),\n"},"line_number":310,"absolute_offset":12223,"submatches":[{"match":{"text":"Plugin"},"start":20,"end":26}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"class TestPluginPickerTypes(unittest.TestCase):\n"},"line_number":337,"absolute_offset":13041,"submatches":[{"match":{"text":"Plugin"},"start":10,"end":16}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"    def test_ui_mode_plugin_exists(self):\n"},"line_number":338,"absolute_offset":13089,"submatches":[{"match":{"text":"plugin"},"start":21,"end":27}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        self.assertEqual(UIMode.PLUGIN.value, \"plugin\")\n"},"line_number":340,"absolute_offset":13202,"submatches":[{"match":{"text":"PLUGIN"},"start":32,"end":38},{"match":{"text":"plugin"},"start":47,"end":53}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"    def test_plugin_picker_action_exit(self):\n"},"line_number":342,"absolute_offset":13259,"submatches":[{"match":{"text":"plugin"},"start":13,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        from comate_cli.terminal_agent.plugins.plugin_picker import (\n"},"line_number":343,"absolute_offset":13305,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45},{"match":{"text":"plugin"},"start":47,"end":53}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"            PluginPickerAction,\n"},"line_number":344,"absolute_offset":13375,"submatches":[{"match":{"text":"Plugin"},"start":12,"end":18}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"            PluginPickerResult,\n"},"line_number":345,"absolute_offset":13407,"submatches":[{"match":{"text":"Plugin"},"start":12,"end":18}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        action = PluginPickerAction(kind=\"exit\")\n"},"line_number":347,"absolute_offset":13449,"submatches":[{"match":{"text":"Plugin"},"start":17,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        self.assertIsInstance(action.result, PluginPickerResult)\n"},"line_number":349,"absolute_offset":13544,"submatches":[{"match":{"text":"Plugin"},"start":45,"end":51}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"    def test_plugin_picker_action_noop(self):\n"},"line_number":351,"absolute_offset":13610,"submatches":[{"match":{"text":"plugin"},"start":13,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        from comate_cli.terminal_agent.plugins.plugin_picker import PluginPickerAction\n"},"line_number":352,"absolute_offset":13656,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45},{"match":{"text":"plugin"},"start":47,"end":53},{"match":{"text":"Plugin"},"start":68,"end":74}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        action = PluginPickerAction(kind=\"noop\")\n"},"line_number":353,"absolute_offset":13743,"submatches":[{"match":{"text":"Plugin"},"start":17,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"class TestPluginPickerUI(unittest.TestCase):\n"},"line_number":357,"absolute_offset":13840,"submatches":[{"match":{"text":"Plugin"},"start":10,"end":16}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        \"\"\"创建 PluginPickerUI 并触发 layout 构建。\"\"\"\n"},"line_number":359,"absolute_offset":13909,"submatches":[{"match":{"text":"Plugin"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        from comate_cli.terminal_agent.plugins.plugin_picker import PluginPickerUI\n"},"line_number":360,"absolute_offset":13972,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45},{"match":{"text":"plugin"},"start":47,"end":53},{"match":{"text":"Plugin"},"start":68,"end":74}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        ui = PluginPickerUI()\n"},"line_number":361,"absolute_offset":14055,"submatches":[{"match":{"text":"Plugin"},"start":13,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        plugin_mgr = MagicMock()\n"},"line_number":368,"absolute_offset":14298,"submatches":[{"match":{"text":"plugin"},"start":8,"end":14}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        mkt_mgr.list_all_available_plugins.return_value = {}\n"},"line_number":370,"absolute_offset":14361,"submatches":[{"match":{"text":"plugin"},"start":35,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        return registry, plugin_mgr, mkt_mgr, loader\n"},"line_number":373,"absolute_offset":14501,"submatches":[{"match":{"text":"plugin"},"start":25,"end":31}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        from comate_cli.terminal_agent.plugins.plugin_picker import PluginPickerUI\n"},"line_number":376,"absolute_offset":14594,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45},{"match":{"text":"plugin"},"start":47,"end":53},{"match":{"text":"Plugin"},"start":68,"end":74}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        ui = PluginPickerUI()\n"},"line_number":377,"absolute_offset":14677,"submatches":[{"match":{"text":"Plugin"},"start":13,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        from comate_cli.terminal_agent.plugins.plugin_picker import PluginPickerContext\n"},"line_number":391,"absolute_offset":15149,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45},{"match":{"text":"plugin"},"start":47,"end":53},{"match":{"text":"Plugin"},"start":68,"end":74}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        registry, plugin_mgr, mkt_mgr, loader = self._make_deps()\n"},"line_number":392,"absolute_offset":15237,"submatches":[{"match":{"text":"plugin"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"            plugin_manager=plugin_mgr,\n"},"line_number":395,"absolute_offset":15352,"submatches":[{"match":{"text":"plugin"},"start":12,"end":18},{"match":{"text":"plugin"},"start":27,"end":33}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"            context=PluginPickerContext(initial_tab=\"discover\"),\n"},"line_number":398,"absolute_offset":15459,"submatches":[{"match":{"text":"Plugin"},"start":20,"end":26}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        from comate_cli.terminal_agent.plugins.plugin_picker import PluginPickerContext\n"},"line_number":404,"absolute_offset":15669,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45},{"match":{"text":"plugin"},"start":47,"end":53},{"match":{"text":"Plugin"},"start":68,"end":74}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        registry, plugin_mgr, mkt_mgr, loader = self._make_deps()\n"},"line_number":405,"absolute_offset":15757,"submatches":[{"match":{"text":"plugin"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"            plugin_manager=plugin_mgr,\n"},"line_number":408,"absolute_offset":15872,"submatches":[{"match":{"text":"plugin"},"start":12,"end":18},{"match":{"text":"plugin"},"start":27,"end":33}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"            context=PluginPickerContext(initial_tab=\"installed\"),\n"},"line_number":411,"absolute_offset":15979,"submatches":[{"match":{"text":"Plugin"},"start":20,"end":26}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        registry, plugin_mgr, mkt_mgr, loader = self._make_deps()\n"},"line_number":418,"absolute_offset":16258,"submatches":[{"match":{"text":"plugin"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        ui.enter(registry=registry, plugin_manager=plugin_mgr,\n"},"line_number":419,"absolute_offset":16324,"submatches":[{"match":{"text":"plugin"},"start":36,"end":42},{"match":{"text":"plugin"},"start":51,"end":57}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        ui.enter(registry=registry, plugin_manager=plugin_mgr,\n"},"line_number":425,"absolute_offset":16639,"submatches":[{"match":{"text":"plugin"},"start":36,"end":42},{"match":{"text":"plugin"},"start":51,"end":57}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        from comate_cli.terminal_agent.plugins.plugin_picker import PluginPickerAction\n"},"line_number":432,"absolute_offset":16979,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45},{"match":{"text":"plugin"},"start":47,"end":53},{"match":{"text":"Plugin"},"start":68,"end":74}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        self.assertIsInstance(action, PluginPickerAction)\n"},"line_number":435,"absolute_offset":17131,"submatches":[{"match":{"text":"Plugin"},"start":38,"end":44}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        from comate_cli.terminal_agent.plugins.plugin_picker import PluginPickerResult\n"},"line_number":449,"absolute_offset":17805,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45},{"match":{"text":"plugin"},"start":47,"end":53},{"match":{"text":"Plugin"},"start":68,"end":74}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        registry, plugin_mgr, mkt_mgr, loader = self._make_deps()\n"},"line_number":459,"absolute_offset":18205,"submatches":[{"match":{"text":"plugin"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        ui.enter(registry=registry, plugin_manager=plugin_mgr,\n"},"line_number":460,"absolute_offset":18271,"submatches":[{"match":{"text":"plugin"},"start":36,"end":42},{"match":{"text":"plugin"},"start":51,"end":57}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        registry, plugin_mgr, mkt_mgr, loader = self._make_deps()\n"},"line_number":468,"absolute_offset":18625,"submatches":[{"match":{"text":"plugin"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        ui.enter(registry=registry, plugin_manager=plugin_mgr,\n"},"line_number":469,"absolute_offset":18691,"submatches":[{"match":{"text":"plugin"},"start":36,"end":42},{"match":{"text":"plugin"},"start":51,"end":57}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        registry, plugin_mgr, mkt_mgr, loader = self._make_deps()\n"},"line_number":478,"absolute_offset":19142,"submatches":[{"match":{"text":"plugin"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        ui.enter(registry=registry, plugin_manager=plugin_mgr,\n"},"line_number":479,"absolute_offset":19208,"submatches":[{"match":{"text":"plugin"},"start":36,"end":42},{"match":{"text":"plugin"},"start":51,"end":57}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        registry, plugin_mgr, mkt_mgr, loader = self._make_deps()\n"},"line_number":498,"absolute_offset":19967,"submatches":[{"match":{"text":"plugin"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        ui.enter(registry=registry, plugin_manager=plugin_mgr,\n"},"line_number":499,"absolute_offset":20033,"submatches":[{"match":{"text":"plugin"},"start":36,"end":42},{"match":{"text":"plugin"},"start":51,"end":57}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        # DiscoverTab.activate() 会调用 mkt_mgr.list_all_available_plugins()\n"},"line_number":501,"absolute_offset":20157,"submatches":[{"match":{"text":"plugin"},"start":70,"end":76}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        mkt_mgr.list_all_available_plugins.assert_called_once()\n"},"line_number":502,"absolute_offset":20237,"submatches":[{"match":{"text":"plugin"},"start":35,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"class TestPluginPickerTabStyle(unittest.TestCase):\n"},"line_number":505,"absolute_offset":20303,"submatches":[{"match":{"text":"Plugin"},"start":10,"end":16}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        from comate_cli.terminal_agent.plugins.plugin_picker import PluginPickerUI\n"},"line_number":508,"absolute_offset":20437,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45},{"match":{"text":"plugin"},"start":47,"end":53},{"match":{"text":"Plugin"},"start":68,"end":74}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        ui = PluginPickerUI()\n"},"line_number":509,"absolute_offset":20520,"submatches":[{"match":{"text":"Plugin"},"start":13,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        from comate_cli.terminal_agent.plugins.plugin_picker import _PlaceholderProcessor\n"},"line_number":534,"absolute_offset":21575,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45},{"match":{"text":"plugin"},"start":47,"end":53}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"    def test_placeholder_uses_plugin_scoped_style(self):\n"},"line_number":560,"absolute_offset":22635,"submatches":[{"match":{"text":"plugin"},"start":30,"end":36}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        self.assertEqual(style, \"class:plugin-search-placeholder\")\n"},"line_number":569,"absolute_offset":23021,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        from comate_agent_sdk.plugins.models import PluginSource\n"},"line_number":575,"absolute_offset":23233,"submatches":[{"match":{"text":"plugin"},"start":30,"end":36},{"match":{"text":"Plugin"},"start":52,"end":58}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        from comate_cli.terminal_agent.plugins.tabs.discover_tab import DiscoverTab\n"},"line_number":576,"absolute_offset":23298,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        from comate_cli.terminal_agent.plugins.plugin_picker import PluginPickerContext\n"},"line_number":577,"absolute_offset":23382,"submatches":[{"match":{"text":"plugin"},"start":39,"end":45},{"match":{"text":"plugin"},"start":47,"end":53},{"match":{"text":"Plugin"},"start":68,"end":74}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"            e.source = PluginSource(type=\"local\", path=f\"./{name}\")\n"},"line_number":583,"absolute_offset":23594,"submatches":[{"match":{"text":"Plugin"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        mkt_mgr.list_all_available_plugins.return_value = {\n"},"line_number":590,"absolute_offset":23796,"submatches":[{"match":{"text":"plugin"},"start":35,"end":41}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"lines":{"text":"        tab = DiscoverTab(MagicMock(), mkt_mgr, registry, MagicMock(), PluginPickerContext())\n"},"line_number":597,"absolute_offset":24082,"submatches":[{"match":{"text":"Plugin"},"start":71,"end":77}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_plugin_tui_components.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":685464,"human":"0.000685s"},"searches":1,"searches_with_match":1,"bytes_searched":25464,"bytes_printed":38327,"matched_lines":110,"matches":171}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer_streaming.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer_streaming.py"},"lines":{"text":"    def test_provider_error_stop_does_not_add_interrupted_message(self) -> None:\n"},"line_number":42,"absolute_offset":1507,"submatches":[{"match":{"text":"ide"},"start":17,"end":20}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_event_renderer_streaming.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":104516,"human":"0.000105s"},"searches":1,"searches_with_match":1,"bytes_searched":37656,"bytes_printed":466,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"from comate_cli.terminal_agent.plugins.marketplace_install_view import MarketplaceInstallView\n"},"line_number":60,"absolute_offset":2138,"submatches":[{"match":{"text":"plugin"},"start":31,"end":37}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"from comate_cli.terminal_agent.plugins.plugin_picker import PluginPickerUI\n"},"line_number":63,"absolute_offset":2383,"submatches":[{"match":{"text":"plugin"},"start":31,"end":37},{"match":{"text":"plugin"},"start":39,"end":45},{"match":{"text":"Plugin"},"start":60,"end":66}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        self._plugin_ui = PluginPickerUI()\n"},"line_number":354,"absolute_offset":13748,"submatches":[{"match":{"text":"plugin"},"start":14,"end":20},{"match":{"text":"Plugin"},"start":26,"end":32}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                filter=Condition(lambda: not self._should_hide_loading_panel()),\n"},"line_number":395,"absolute_offset":15484,"submatches":[{"match":{"text":"ide"},"start":59,"end":62}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        self._plugin_container = ConditionalContainer(\n"},"line_number":469,"absolute_offset":18374,"submatches":[{"match":{"text":"plugin"},"start":14,"end":20}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"            content=self._plugin_ui.container,\n"},"line_number":470,"absolute_offset":18429,"submatches":[{"match":{"text":"plugin"},"start":26,"end":32}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"            filter=Condition(lambda: self._ui_mode == UIMode.PLUGIN),\n"},"line_number":471,"absolute_offset":18476,"submatches":[{"match":{"text":"PLUGIN"},"start":61,"end":67}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                self._plugin_container,\n"},"line_number":531,"absolute_offset":21553,"submatches":[{"match":{"text":"plugin"},"start":22,"end":28}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                \"question.divider\": \"fg:#4b5563\",\n"},"line_number":575,"absolute_offset":23638,"submatches":[{"match":{"text":"ide"},"start":29,"end":32}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                \"plugin.name\": \"bold\",\n"},"line_number":588,"absolute_offset":24387,"submatches":[{"match":{"text":"plugin"},"start":17,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                \"plugin.name.cursor\": \"bold fg:ansibrightcyan\",\n"},"line_number":589,"absolute_offset":24426,"submatches":[{"match":{"text":"plugin"},"start":17,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                \"plugin.marketplace\": \"fg:ansigray italic\",\n"},"line_number":590,"absolute_offset":24490,"submatches":[{"match":{"text":"plugin"},"start":17,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                \"plugin.separator\": \"fg:ansigray\",\n"},"line_number":591,"absolute_offset":24550,"submatches":[{"match":{"text":"plugin"},"start":17,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                \"plugin.divider\": \"fg:ansigray\",\n"},"line_number":592,"absolute_offset":24601,"submatches":[{"match":{"text":"plugin"},"start":17,"end":23},{"match":{"text":"ide"},"start":27,"end":30}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                \"plugin.checkbox\": \"\",\n"},"line_number":593,"absolute_offset":24650,"submatches":[{"match":{"text":"plugin"},"start":17,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                \"plugin.checkbox.selected\": \"fg:ansiyellow\",\n"},"line_number":594,"absolute_offset":24689,"submatches":[{"match":{"text":"plugin"},"start":17,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                \"plugin.checkbox.installed\": \"fg:ansigreen\",\n"},"line_number":595,"absolute_offset":24750,"submatches":[{"match":{"text":"plugin"},"start":17,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                \"plugin.description\": \"fg:#9ca3af\",\n"},"line_number":596,"absolute_offset":24811,"submatches":[{"match":{"text":"plugin"},"start":17,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                \"plugin.scroll-hint\": \"fg:ansigray\",\n"},"line_number":597,"absolute_offset":24863,"submatches":[{"match":{"text":"plugin"},"start":17,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                \"plugin.hint\": \"fg:ansigray\",\n"},"line_number":598,"absolute_offset":24916,"submatches":[{"match":{"text":"plugin"},"start":17,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                \"plugin.empty\": \"fg:ansigray\",\n"},"line_number":599,"absolute_offset":24962,"submatches":[{"match":{"text":"plugin"},"start":17,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                \"plugin-search-input\": \"bg:default\",\n"},"line_number":604,"absolute_offset":25211,"submatches":[{"match":{"text":"plugin"},"start":17,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                \"plugin-search-placeholder\": \"#555555 italic\",\n"},"line_number":605,"absolute_offset":25264,"submatches":[{"match":{"text":"plugin"},"start":17,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                \"plugin-search-frame frame.border\": \"#aaaaaa\",\n"},"line_number":606,"absolute_offset":25327,"submatches":[{"match":{"text":"plugin"},"start":17,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                \"plugin-search-icon\": \"fg:ansicyan\",\n"},"line_number":607,"absolute_offset":25390,"submatches":[{"match":{"text":"plugin"},"start":17,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                \"selection.divider\": \"fg:#4b5563\",\n"},"line_number":619,"absolute_offset":25938,"submatches":[{"match":{"text":"ide"},"start":30,"end":33}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"            \"plugin\": self._slash_plugin,\n"},"line_number":709,"absolute_offset":29605,"submatches":[{"match":{"text":"plugin"},"start":13,"end":19},{"match":{"text":"plugin"},"start":34,"end":40}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"            \"reload-plugins\": self._slash_reload_plugins,\n"},"line_number":710,"absolute_offset":29647,"submatches":[{"match":{"text":"plugin"},"start":20,"end":26},{"match":{"text":"plugin"},"start":49,"end":55}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"            \"plugin\",\n"},"line_number":722,"absolute_offset":29969,"submatches":[{"match":{"text":"plugin"},"start":13,"end":19}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"            \"reload-plugins\",\n"},"line_number":723,"absolute_offset":29991,"submatches":[{"match":{"text":"plugin"},"start":20,"end":26}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"            await self._init_plugins()\n"},"line_number":1621,"absolute_offset":66803,"submatches":[{"match":{"text":"plugin"},"start":29,"end":35}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"            logger.exception(\"Plugin init failed at startup; continuing without plugins\")\n"},"line_number":1623,"absolute_offset":66868,"submatches":[{"match":{"text":"Plugin"},"start":30,"end":36},{"match":{"text":"plugin"},"start":80,"end":86}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"    async def _init_plugins(self) -> None:\n"},"line_number":1677,"absolute_offset":68975,"submatches":[{"match":{"text":"plugin"},"start":20,"end":26}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        \"\"\"Load and inject plugin resources at startup.\"\"\"\n"},"line_number":1678,"absolute_offset":69018,"submatches":[{"match":{"text":"plugin"},"start":27,"end":33}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        from comate_agent_sdk.plugins import create_plugin_registry, PluginLoader\n"},"line_number":1679,"absolute_offset":69077,"submatches":[{"match":{"text":"plugin"},"start":30,"end":36},{"match":{"text":"plugin"},"start":52,"end":58},{"match":{"text":"Plugin"},"start":69,"end":75}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        loader = PluginLoader()\n"},"line_number":1681,"absolute_offset":69160,"submatches":[{"match":{"text":"Plugin"},"start":17,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        registry = create_plugin_registry()\n"},"line_number":1682,"absolute_offset":69192,"submatches":[{"match":{"text":"plugin"},"start":26,"end":32}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        # Ensure plugin data directory exists\n"},"line_number":1683,"absolute_offset":69236,"submatches":[{"match":{"text":"plugin"},"start":17,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        self._loaded_plugins, self._plugin_errors = loader.load_all(\n"},"line_number":1686,"absolute_offset":69380,"submatches":[{"match":{"text":"plugin"},"start":21,"end":27},{"match":{"text":"plugin"},"start":36,"end":42}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        self._plugin_command_names: set[str] = set()\n"},"line_number":1690,"absolute_offset":69527,"submatches":[{"match":{"text":"plugin"},"start":14,"end":20}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        self._inject_plugin_resources(self._loaded_plugins)\n"},"line_number":1691,"absolute_offset":69580,"submatches":[{"match":{"text":"plugin"},"start":21,"end":27},{"match":{"text":"plugin"},"start":51,"end":57}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"            \"Loaded %d plugins (%d errors)\",\n"},"line_number":1693,"absolute_offset":69661,"submatches":[{"match":{"text":"plugin"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"            len(self._loaded_plugins),\n"},"line_number":1694,"absolute_offset":69706,"submatches":[{"match":{"text":"plugin"},"start":29,"end":35}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"            len(self._plugin_errors),\n"},"line_number":1695,"absolute_offset":69745,"submatches":[{"match":{"text":"plugin"},"start":22,"end":28}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"    def _inject_plugin_resources(self, plugins: list) -> None:\n"},"line_number":1698,"absolute_offset":69794,"submatches":[{"match":{"text":"plugin"},"start":16,"end":22},{"match":{"text":"plugin"},"start":39,"end":45}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        \"\"\"Inject plugin skills, commands, and MCP servers into the session.\"\"\"\n"},"line_number":1699,"absolute_offset":69857,"submatches":[{"match":{"text":"plugin"},"start":18,"end":24}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        for plugin in plugins:\n"},"line_number":1706,"absolute_offset":70167,"submatches":[{"match":{"text":"plugin"},"start":12,"end":18},{"match":{"text":"plugin"},"start":22,"end":28}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"            if plugin.skills:\n"},"line_number":1708,"absolute_offset":70259,"submatches":[{"match":{"text":"plugin"},"start":15,"end":21}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                agent._runtime_state.skills.extend(plugin.skills)\n"},"line_number":1711,"absolute_offset":70398,"submatches":[{"match":{"text":"plugin"},"start":51,"end":57}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"            for cmd in plugin.commands:\n"},"line_number":1714,"absolute_offset":70535,"submatches":[{"match":{"text":"plugin"},"start":23,"end":29}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                    name=cmd.name,  # already namespaced: \"plugin-name:cmd-name\"\n"},"line_number":1719,"absolute_offset":70831,"submatches":[{"match":{"text":"plugin"},"start":59,"end":65}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                    source_scope=\"plugin\",\n"},"line_number":1728,"absolute_offset":71253,"submatches":[{"match":{"text":"plugin"},"start":34,"end":40}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                    namespace=plugin.namespace,\n"},"line_number":1729,"absolute_offset":71296,"submatches":[{"match":{"text":"plugin"},"start":30,"end":36}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                    self._plugin_command_names.add(cmd.name)\n"},"line_number":1742,"absolute_offset":71876,"submatches":[{"match":{"text":"plugin"},"start":26,"end":32}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                        \"Plugin command '%s' conflicts with existing command, skipping\",\n"},"line_number":1745,"absolute_offset":72008,"submatches":[{"match":{"text":"Plugin"},"start":25,"end":31}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"            if plugin.agents:\n"},"line_number":1750,"absolute_offset":72215,"submatches":[{"match":{"text":"plugin"},"start":15,"end":21}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                agent._runtime_state.agents.extend(plugin.agents)\n"},"line_number":1753,"absolute_offset":72354,"submatches":[{"match":{"text":"plugin"},"start":51,"end":57}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"            # plugin.mcp_servers keys are already namespaced as \"{namespace}:{key}\"\n"},"line_number":1756,"absolute_offset":72499,"submatches":[{"match":{"text":"plugin"},"start":14,"end":20}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"            if plugin.mcp_servers:\n"},"line_number":1757,"absolute_offset":72583,"submatches":[{"match":{"text":"plugin"},"start":15,"end":21}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"                for server_name, config in plugin.mcp_servers.items():\n"},"line_number":1759,"absolute_offset":72712,"submatches":[{"match":{"text":"plugin"},"start":43,"end":49}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        # If any plugin had MCP servers, trigger reload\n"},"line_number":1763,"absolute_offset":72927,"submatches":[{"match":{"text":"plugin"},"start":17,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        if any(p.mcp_servers for p in plugins):\n"},"line_number":1764,"absolute_offset":72983,"submatches":[{"match":{"text":"plugin"},"start":38,"end":44}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"            agent.invalidate_mcp_tools(reason=\"plugin_inject\")\n"},"line_number":1765,"absolute_offset":73031,"submatches":[{"match":{"text":"plugin"},"start":47,"end":53}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        # Rebuild Skill tool so LLM sees new plugin skills in description\n"},"line_number":1767,"absolute_offset":73095,"submatches":[{"match":{"text":"plugin"},"start":45,"end":51}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        if any(p.skills for p in plugins):\n"},"line_number":1768,"absolute_offset":73169,"submatches":[{"match":{"text":"plugin"},"start":33,"end":39}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        # Rebuild Agent tool so LLM sees new plugin agents in description\n"},"line_number":1771,"absolute_offset":73251,"submatches":[{"match":{"text":"plugin"},"start":45,"end":51}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        if any(p.agents for p in plugins):\n"},"line_number":1772,"absolute_offset":73325,"submatches":[{"match":{"text":"plugin"},"start":33,"end":39}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        if any(p.skills for p in plugins):\n"},"line_number":1775,"absolute_offset":73407,"submatches":[{"match":{"text":"plugin"},"start":33,"end":39}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        # Refresh tab-completion so new plugin commands appear\n"},"line_number":1777,"absolute_offset":73496,"submatches":[{"match":{"text":"plugin"},"start":40,"end":46}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        elif any(p.commands for p in plugins):\n"},"line_number":1778,"absolute_offset":73559,"submatches":[{"match":{"text":"plugin"},"start":37,"end":43}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"    def _clear_plugin_resources(self) -> None:\n"},"line_number":1781,"absolute_offset":73695,"submatches":[{"match":{"text":"plugin"},"start":15,"end":21}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        \"\"\"Remove all previously injected plugin resources.\"\"\"\n"},"line_number":1782,"absolute_offset":73742,"submatches":[{"match":{"text":"plugin"},"start":42,"end":48}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        # Remove plugin skills (by namespace prefix)\n"},"line_number":1789,"absolute_offset":74035,"submatches":[{"match":{"text":"plugin"},"start":17,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        loaded = getattr(self, \"_loaded_plugins\", [])\n"},"line_number":1790,"absolute_offset":74088,"submatches":[{"match":{"text":"plugin"},"start":40,"end":46}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        # Remove plugin skills (by namespace prefix) — namespaces 已在上方定义\n"},"line_number":1802,"absolute_offset":74693,"submatches":[{"match":{"text":"plugin"},"start":17,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        # Remove plugin commands from registry and custom commands dict\n"},"line_number":1809,"absolute_offset":75026,"submatches":[{"match":{"text":"plugin"},"start":17,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        had_commands = bool(getattr(self, \"_plugin_command_names\", set()))\n"},"line_number":1810,"absolute_offset":75098,"submatches":[{"match":{"text":"plugin"},"start":44,"end":50}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        for cmd_name in getattr(self, \"_plugin_command_names\", set()):\n"},"line_number":1811,"absolute_offset":75173,"submatches":[{"match":{"text":"plugin"},"start":40,"end":46}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        self._plugin_command_names = set()\n"},"line_number":1814,"absolute_offset":75358,"submatches":[{"match":{"text":"plugin"},"start":14,"end":20}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        # Remove plugin MCP servers from frozen config\n"},"line_number":1816,"absolute_offset":75402,"submatches":[{"match":{"text":"plugin"},"start":17,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"            agent.invalidate_mcp_tools(reason=\"plugin_clear\")\n"},"line_number":1825,"absolute_offset":75862,"submatches":[{"match":{"text":"plugin"},"start":47,"end":53}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        # Remove plugin agents (by namespace prefix)\n"},"line_number":1827,"absolute_offset":75925,"submatches":[{"match":{"text":"plugin"},"start":17,"end":23}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"lines":{"text":"        # Rebuild tools if plugin resources were removed\n"},"line_number":1834,"absolute_offset":76224,"submatches":[{"match":{"text":"plugin"},"start":27,"end":33}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tui.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":959371,"human":"0.000959s"},"searches":1,"searches_with_match":1,"bytes_searched":76488,"bytes_printed":26438,"matched_lines":83,"matches":96}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_slash_completer.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_slash_completer.py"},"lines":{"text":"    def test_exact_command_match_hides_completions(self) -> None:\n"},"line_number":37,"absolute_offset":1250,"submatches":[{"match":{"text":"ide"},"start":34,"end":37}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_slash_completer.py"},"lines":{"text":"    def test_exact_alias_match_hides_completions(self) -> None:\n"},"line_number":41,"absolute_offset":1427,"submatches":[{"match":{"text":"ide"},"start":32,"end":35}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_slash_completer.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":55728,"human":"0.000056s"},"searches":1,"searches_with_match":1,"bytes_searched":2427,"bytes_printed":741,"matched_lines":2,"matches":2}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_view.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_view.py"},"lines":{"text":"    def test_agent_alias_summary_hides_prompt(self) -> None:\n"},"line_number":275,"absolute_offset":12052,"submatches":[{"match":{"text":"ide"},"start":34,"end":37}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/test_tool_view.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":99727,"human":"0.000100s"},"searches":1,"searches_with_match":1,"bytes_searched":13965,"bytes_printed":418,"matched_lines":1,"matches":1}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tips.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tips.py"},"lines":{"text":"    \"Use /plugin to install or manage community plugins.\",\n"},"line_number":26,"absolute_offset":1427,"submatches":[{"match":{"text":"plugin"},"start":10,"end":16},{"match":{"text":"plugin"},"start":48,"end":54}]}}
{"type":"end","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/comate_cli/terminal_agent/tips.py"},"binary_offset":null,"stats":{"elapsed":{"secs":0,"nanos":31661,"human":"0.000032s"},"searches":1,"searches_with_match":1,"bytes_searched":1802,"bytes_printed":487,"matched_lines":1,"matches":2}}}
{"type":"begin","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/config/test_picker_ui.py"}}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/config/test_picker_ui.py"},"lines":{"text":"    divider = ui.container.children[1]\n"},"line_number":21,"absolute_offset":827,"submatches":[{"match":{"text":"ide"},"start":7,"end":10}]}}
{"type":"match","data":{"path":{"text":"/home/hyc/projects/agent-sdk/packages/comate_cli/tests/config/test_picker_ui.py"},"lines":{"text":"    assert divider.style == \"class:selection.divider\"\n"},"line_number":22,"absolute_offset":866,"submatches":[{"match":{"text":"ide"},"start":14,"end":17},{"