comate-cli 0.5.3__tar.gz → 0.5.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. {comate_cli-0.5.3 → comate_cli-0.5.4}/PKG-INFO +1 -1
  2. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/event_renderer.py +1 -17
  3. {comate_cli-0.5.3 → comate_cli-0.5.4}/pyproject.toml +1 -1
  4. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_event_renderer_streaming.py +9 -8
  5. {comate_cli-0.5.3 → comate_cli-0.5.4}/uv.lock +1453 -1437
  6. comate_cli-0.5.3/memory_system_tengu_moth_copse_report.md +0 -2366
  7. comate_cli-0.5.3//346/267/261/345/272/246Agent/345/217/257/350/247/206/345/214/226UI/350/256/276/350/256/241/346/200/235/350/267/257.md +0 -3173
  8. {comate_cli-0.5.3 → comate_cli-0.5.4}/.gitignore +0 -0
  9. {comate_cli-0.5.3 → comate_cli-0.5.4}/README.md +0 -0
  10. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/__init__.py +0 -0
  11. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/__main__.py +0 -0
  12. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/main.py +0 -0
  13. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/mcp_cli.py +0 -0
  14. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/__init__.py +0 -0
  15. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/animations.py +0 -0
  16. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/app.py +0 -0
  17. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/assistant_render.py +0 -0
  18. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/codenames.py +0 -0
  19. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/custom_slash_commands.py +0 -0
  20. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/env_utils.py +0 -0
  21. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/error_display.py +0 -0
  22. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/figures.py +0 -0
  23. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/fragment_utils.py +0 -0
  24. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/history_printer.py +0 -0
  25. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/input_geometry.py +0 -0
  26. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/layout_coordinator.py +0 -0
  27. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/logging_adapter.py +0 -0
  28. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/logo.py +0 -0
  29. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/markdown_render.py +0 -0
  30. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/mention_completer.py +0 -0
  31. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/message_style.py +0 -0
  32. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/models.py +0 -0
  33. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/path_context_hint.py +0 -0
  34. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/plugins/__init__.py +0 -0
  35. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/plugins/components/__init__.py +0 -0
  36. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/plugins/components/detail_view.py +0 -0
  37. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/plugins/components/plugin_list.py +0 -0
  38. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/plugins/components/search_box.py +0 -0
  39. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/plugins/components/tab_bar.py +0 -0
  40. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/plugins/marketplace_install_view.py +0 -0
  41. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/plugins/plugin_picker.py +0 -0
  42. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/plugins/tabs/__init__.py +0 -0
  43. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/plugins/tabs/discover_tab.py +0 -0
  44. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/plugins/tabs/errors_tab.py +0 -0
  45. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/plugins/tabs/installed_tab.py +0 -0
  46. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/plugins/tabs/marketplaces_tab.py +0 -0
  47. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/preflight.py +0 -0
  48. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/question_view.py +0 -0
  49. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/resume_selector.py +0 -0
  50. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/rewind_store.py +0 -0
  51. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/rpc_protocol.py +0 -0
  52. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/rpc_stdio.py +0 -0
  53. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/selection_menu.py +0 -0
  54. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/session_view.py +0 -0
  55. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/slash_commands.py +0 -0
  56. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/startup.py +0 -0
  57. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/status_bar.py +0 -0
  58. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/text_effects.py +0 -0
  59. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/tips.py +0 -0
  60. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/tool_view.py +0 -0
  61. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/tui.py +0 -0
  62. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/tui_parts/__init__.py +0 -0
  63. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/tui_parts/commands.py +0 -0
  64. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/tui_parts/history_sync.py +0 -0
  65. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/tui_parts/input_behavior.py +0 -0
  66. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/tui_parts/key_bindings.py +0 -0
  67. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/tui_parts/mcp_connecting_view.py +0 -0
  68. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/tui_parts/render_panels.py +0 -0
  69. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/tui_parts/slash_command_registry.py +0 -0
  70. {comate_cli-0.5.3 → comate_cli-0.5.4}/comate_cli/terminal_agent/tui_parts/ui_mode.py +0 -0
  71. {comate_cli-0.5.3 → comate_cli-0.5.4}/docs/superpowers/plans/2026-04-03-phrase-shuffle.md +0 -0
  72. {comate_cli-0.5.3 → comate_cli-0.5.4}/docs/superpowers/specs/2026-04-01-conditional-diff-subtitle-design.md +0 -0
  73. {comate_cli-0.5.3 → comate_cli-0.5.4}/docs/superpowers/specs/2026-04-03-phrase-shuffle-design.md +0 -0
  74. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/conftest.py +0 -0
  75. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_animator_shuffle.py +0 -0
  76. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_app_mcp_preload.py +0 -0
  77. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_app_preflight_gate.py +0 -0
  78. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_app_print_mode.py +0 -0
  79. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_app_shutdown.py +0 -0
  80. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_app_usage_line.py +0 -0
  81. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_cli_project_root.py +0 -0
  82. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_compact_command_semantics.py +0 -0
  83. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_completion_context_activation.py +0 -0
  84. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_completion_status_panel.py +0 -0
  85. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_context_command.py +0 -0
  86. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_custom_slash_commands.py +0 -0
  87. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_discover_tab.py +0 -0
  88. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_errors_tab.py +0 -0
  89. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_event_renderer.py +0 -0
  90. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_event_renderer_boundary.py +0 -0
  91. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_event_renderer_e2e.py +0 -0
  92. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_format_error.py +0 -0
  93. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_handle_error.py +0 -0
  94. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_history_printer.py +0 -0
  95. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_history_sync.py +0 -0
  96. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_input_behavior.py +0 -0
  97. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_input_history.py +0 -0
  98. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_installed_tab.py +0 -0
  99. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_interrupt_exit_semantics.py +0 -0
  100. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_layout_coordinator.py +0 -0
  101. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_logging_adapter.py +0 -0
  102. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_logo.py +0 -0
  103. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_main_args.py +0 -0
  104. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_markdown_render.py +0 -0
  105. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_marketplaces_tab.py +0 -0
  106. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_mcp_cli.py +0 -0
  107. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_mcp_slash_command.py +0 -0
  108. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_mention_completer.py +0 -0
  109. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_path_context_hint.py +0 -0
  110. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_plugin_slash_commands.py +0 -0
  111. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_plugin_tui_components.py +0 -0
  112. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_preflight.py +0 -0
  113. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_preflight_copilot.py +0 -0
  114. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_question_key_bindings.py +0 -0
  115. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_question_view.py +0 -0
  116. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_resume_selector.py +0 -0
  117. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_rewind_command_semantics.py +0 -0
  118. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_rewind_store.py +0 -0
  119. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_rpc_protocol.py +0 -0
  120. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_rpc_stdio_bridge.py +0 -0
  121. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_selection_menu.py +0 -0
  122. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_skills_slash_command.py +0 -0
  123. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_slash_argument_hint.py +0 -0
  124. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_slash_completer.py +0 -0
  125. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_slash_registry.py +0 -0
  126. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_status_bar.py +0 -0
  127. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_status_bar_transient.py +0 -0
  128. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_task_panel_format.py +0 -0
  129. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_task_panel_key_bindings.py +0 -0
  130. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_task_panel_rendering.py +0 -0
  131. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_task_poll.py +0 -0
  132. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_tool_view.py +0 -0
  133. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_tui_elapsed_status.py +0 -0
  134. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_tui_mcp_init_gate.py +0 -0
  135. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_tui_paste_placeholder.py +0 -0
  136. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_tui_split_invariance.py +0 -0
  137. {comate_cli-0.5.3 → comate_cli-0.5.4}/tests/test_update_check.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: comate-cli
3
- Version: 0.5.3
3
+ Version: 0.5.4
4
4
  Summary: Comate terminal CLI built on comate-agent-sdk
5
5
  Project-URL: Homepage, https://github.com/AndyLee1024/agent-sdk
6
6
  Project-URL: Repository, https://github.com/AndyLee1024/agent-sdk
@@ -1453,24 +1453,8 @@ class EventRenderer:
1453
1453
  # 保证说明文字出现在 tool UI 之前(无 \n 结尾的模型也适用)。
1454
1454
  self._force_flush_all()
1455
1455
  normalized_id = str(tool_call_id or "").strip()
1456
- if not normalized_id or normalized_id in self._pending_tool_starts:
1457
- pass
1458
- elif not should_show_tool_in_scrollback(tool_name, {}, is_result=False):
1459
- # 对 hidden 工具(AskUserQuestion / TaskCreate / 静默任务工具等)
1460
- # 跳过 pending 登记,避免 tool panel 闪烁一下。is_result=False
1461
- # 这里按"发起阶段"查;将来 ToolResultEvent (is_result=True) 仍会
1462
- # 正确地走既有落盘路径。
1463
- self._pending_tool_starts.add(normalized_id)
1464
- else:
1456
+ if normalized_id and normalized_id not in self._pending_tool_starts:
1465
1457
  self._pending_tool_starts.add(normalized_id)
1466
- self._running_tools[normalized_id] = _RunningTool(
1467
- tool_name=tool_name,
1468
- display_tool_name=resolve_display_tool_name(tool_name, {}),
1469
- title=tool_name,
1470
- started_at_monotonic=time.monotonic(),
1471
- is_task=False,
1472
- args_summary=ELLIPSIS,
1473
- )
1474
1458
  case ThinkingEvent(content=thinking):
1475
1459
  if self._turn_received_thinking_delta:
1476
1460
  pass
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "comate-cli"
7
- version = "0.5.3"
7
+ version = "0.5.4"
8
8
  description = "Comate terminal CLI built on comate-agent-sdk"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -71,16 +71,16 @@ class TestQ11Fallback(unittest.TestCase):
71
71
 
72
72
 
73
73
  class TestEventRendererToolCallStartPending(unittest.TestCase):
74
- """Commit 3: ToolCallStart 改走 running_tools pending 状态,不写 scrollback。"""
74
+ """ToolCallStart 只做文本 flush + 去重登记,不再预注册 running_tools。"""
75
75
 
76
- def test_tool_call_start_registers_running_tool_not_scrollback(self) -> None:
76
+ def test_tool_call_start_does_not_register_running_tool(self) -> None:
77
77
  renderer = EventRenderer()
78
78
  renderer.handle_event(ToolCallStartEvent(tool_call_id="tc1", tool="Edit"))
79
79
 
80
- # 不再 append system message 到 scrollback
80
+ # 不写 scrollback
81
81
  self.assertEqual(renderer.history_entries(), [])
82
- # 改为在 running_tools 里登记 pending
83
- self.assertTrue(renderer.has_running_tools())
82
+ # 不再在 running_tools 里登记 pending —— 等 ToolCallEvent 携带完整 args 后再注册
83
+ self.assertFalse(renderer.has_running_tools())
84
84
 
85
85
  def test_tool_call_start_is_deduplicated(self) -> None:
86
86
  renderer = EventRenderer()
@@ -88,11 +88,12 @@ class TestEventRendererToolCallStartPending(unittest.TestCase):
88
88
  renderer.handle_event(event)
89
89
  renderer.handle_event(event)
90
90
 
91
- # 只登记一次
92
- self.assertEqual(len(renderer._running_tools), 1)
91
+ # 去重:_pending_tool_starts 里只有一条,running_tools 为空
92
+ self.assertEqual(len(renderer._pending_tool_starts), 1)
93
+ self.assertEqual(len(renderer._running_tools), 0)
93
94
 
94
95
  def test_tool_call_start_skipped_for_hidden_tools(self) -> None:
95
- """AskUserQuestion / TaskCreate / 静默任务工具等:不登记 pending,避免闪烁。"""
96
+ """AskUserQuestion / TaskCreate / 静默任务工具等:行为与普通工具一致,均不登记 running_tools。"""
96
97
  renderer = EventRenderer()
97
98
  for hidden_tool in ("AskUserQuestion", "TaskCreate", "TaskUpdate"):
98
99
  renderer.handle_event(