comate-cli 0.5.2__tar.gz → 0.5.3__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.
- {comate_cli-0.5.2 → comate_cli-0.5.3}/PKG-INFO +1 -1
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/mcp_cli.py +12 -6
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/animations.py +7 -5
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/event_renderer.py +412 -56
- comate_cli-0.5.3/comate_cli/terminal_agent/figures.py +124 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/history_printer.py +93 -12
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/markdown_render.py +3 -1
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/message_style.py +13 -5
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/path_context_hint.py +9 -8
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/plugins/components/plugin_list.py +9 -3
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/plugins/tabs/discover_tab.py +15 -6
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/plugins/tabs/errors_tab.py +3 -1
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/plugins/tabs/installed_tab.py +9 -3
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/preflight.py +11 -10
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/question_view.py +24 -12
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/selection_menu.py +12 -4
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/session_view.py +3 -2
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/startup.py +8 -3
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/text_effects.py +4 -4
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/tool_view.py +26 -14
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/tui.py +21 -8
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/tui_parts/commands.py +16 -10
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/tui_parts/history_sync.py +12 -3
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/tui_parts/render_panels.py +45 -24
- {comate_cli-0.5.2 → comate_cli-0.5.3}/pyproject.toml +1 -1
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_event_renderer.py +4 -2
- comate_cli-0.5.3/tests/test_event_renderer_boundary.py +156 -0
- comate_cli-0.5.3/tests/test_event_renderer_e2e.py +177 -0
- comate_cli-0.5.3/tests/test_event_renderer_streaming.py +759 -0
- comate_cli-0.5.3/tests/test_history_printer.py +384 -0
- comate_cli-0.5.3/tests/test_markdown_render.py +53 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_tool_view.py +2 -1
- {comate_cli-0.5.2 → comate_cli-0.5.3}/uv.lock +1437 -1453
- comate_cli-0.5.2/tests/test_history_printer.py +0 -103
- {comate_cli-0.5.2 → comate_cli-0.5.3}/.gitignore +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/README.md +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/__init__.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/__main__.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/main.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/__init__.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/app.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/assistant_render.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/codenames.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/custom_slash_commands.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/env_utils.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/error_display.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/fragment_utils.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/input_geometry.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/layout_coordinator.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/logging_adapter.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/logo.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/mention_completer.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/models.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/plugins/__init__.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/plugins/components/__init__.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/plugins/components/detail_view.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/plugins/components/search_box.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/plugins/components/tab_bar.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/plugins/marketplace_install_view.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/plugins/plugin_picker.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/plugins/tabs/__init__.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/plugins/tabs/marketplaces_tab.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/resume_selector.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/rewind_store.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/rpc_protocol.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/rpc_stdio.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/slash_commands.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/status_bar.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/tips.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/tui_parts/__init__.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/tui_parts/input_behavior.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/tui_parts/key_bindings.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/tui_parts/mcp_connecting_view.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/tui_parts/slash_command_registry.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/comate_cli/terminal_agent/tui_parts/ui_mode.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/docs/superpowers/plans/2026-04-03-phrase-shuffle.md +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/docs/superpowers/specs/2026-04-01-conditional-diff-subtitle-design.md +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/docs/superpowers/specs/2026-04-03-phrase-shuffle-design.md +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/memory_system_tengu_moth_copse_report.md +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/conftest.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_animator_shuffle.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_app_mcp_preload.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_app_preflight_gate.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_app_print_mode.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_app_shutdown.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_app_usage_line.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_cli_project_root.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_compact_command_semantics.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_completion_context_activation.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_completion_status_panel.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_context_command.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_custom_slash_commands.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_discover_tab.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_errors_tab.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_format_error.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_handle_error.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_history_sync.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_input_behavior.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_input_history.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_installed_tab.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_interrupt_exit_semantics.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_layout_coordinator.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_logging_adapter.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_logo.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_main_args.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_marketplaces_tab.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_mcp_cli.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_mcp_slash_command.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_mention_completer.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_path_context_hint.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_plugin_slash_commands.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_plugin_tui_components.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_preflight.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_preflight_copilot.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_question_key_bindings.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_question_view.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_resume_selector.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_rewind_command_semantics.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_rewind_store.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_rpc_protocol.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_rpc_stdio_bridge.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_selection_menu.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_skills_slash_command.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_slash_argument_hint.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_slash_completer.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_slash_registry.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_status_bar.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_status_bar_transient.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_task_panel_format.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_task_panel_key_bindings.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_task_panel_rendering.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_task_poll.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_tui_elapsed_status.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_tui_mcp_init_gate.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_tui_paste_placeholder.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_tui_split_invariance.py +0 -0
- {comate_cli-0.5.2 → comate_cli-0.5.3}/tests/test_update_check.py +0 -0
- {comate_cli-0.5.2 → 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 -0
|
@@ -16,6 +16,12 @@ from comate_agent_sdk.mcp import (
|
|
|
16
16
|
from comate_agent_sdk.mcp.types import McpServerConfig
|
|
17
17
|
from comate_agent_sdk.utils.paths import PathInput
|
|
18
18
|
|
|
19
|
+
from comate_cli.terminal_agent.figures import (
|
|
20
|
+
CHECK_MARK,
|
|
21
|
+
CROSS_MARK,
|
|
22
|
+
ELLIPSIS,
|
|
23
|
+
)
|
|
24
|
+
|
|
19
25
|
|
|
20
26
|
class McpCliError(ValueError):
|
|
21
27
|
def __init__(self, message: str, *, exit_code: int = 2) -> None:
|
|
@@ -225,12 +231,12 @@ def _render_health_status(
|
|
|
225
231
|
) -> str:
|
|
226
232
|
normalized = str(status or "").strip().lower()
|
|
227
233
|
if normalized == "connected" or (normalized in {"", "idle"} and connected):
|
|
228
|
-
return "
|
|
234
|
+
return f"{CHECK_MARK} Connected"
|
|
229
235
|
if normalized == "connecting":
|
|
230
|
-
return "
|
|
236
|
+
return f"{ELLIPSIS} Connecting"
|
|
231
237
|
if reason:
|
|
232
|
-
return f"
|
|
233
|
-
return "
|
|
238
|
+
return f"{CROSS_MARK} {reason}"
|
|
239
|
+
return f"{CROSS_MARK} Not connected"
|
|
234
240
|
|
|
235
241
|
|
|
236
242
|
def _format_server_endpoint(cfg: McpServerConfig) -> str:
|
|
@@ -308,7 +314,7 @@ def _cmd_list(args: argparse.Namespace, *, project_root: PathInput | None) -> No
|
|
|
308
314
|
reason=health.reason,
|
|
309
315
|
)
|
|
310
316
|
if health is not None
|
|
311
|
-
else "
|
|
317
|
+
else f"{CROSS_MARK} Unknown"
|
|
312
318
|
)
|
|
313
319
|
sys.stdout.write(f"{alias}: {endpoint} ({server_type}) - {status}\n")
|
|
314
320
|
|
|
@@ -339,7 +345,7 @@ def _cmd_get(args: argparse.Namespace, *, project_root: PathInput | None) -> Non
|
|
|
339
345
|
scope_line = _scope_label(scope)
|
|
340
346
|
|
|
341
347
|
health_rows = asyncio.run(collect_mcp_server_health(servers={name: cfg}))
|
|
342
|
-
status = "
|
|
348
|
+
status = f"{CROSS_MARK} Not connected"
|
|
343
349
|
if health_rows:
|
|
344
350
|
row = health_rows[0]
|
|
345
351
|
status = _render_health_status(
|
|
@@ -11,6 +11,11 @@ from rich.text import Text
|
|
|
11
11
|
|
|
12
12
|
from comate_agent_sdk.agent.events import StopEvent, TextEvent, ToolCallEvent, ToolResultEvent, UserQuestionEvent
|
|
13
13
|
|
|
14
|
+
from comate_cli.terminal_agent.figures import (
|
|
15
|
+
BREATH_DOT_GLYPHS as _FIGURES_BREATH_DOT_GLYPHS,
|
|
16
|
+
ELLIPSIS,
|
|
17
|
+
)
|
|
18
|
+
|
|
14
19
|
DEFAULT_STATUS_PHRASES: tuple[str, ...] = (
|
|
15
20
|
"Embellishing",
|
|
16
21
|
"Vibing",
|
|
@@ -231,10 +236,7 @@ BREATH_DOT_COLORS: tuple[str, ...] = (
|
|
|
231
236
|
"#9CA3AF", # 回退
|
|
232
237
|
"#6B7280", # 回退
|
|
233
238
|
)
|
|
234
|
-
BREATH_DOT_GLYPHS: tuple[str, ...] =
|
|
235
|
-
"○",
|
|
236
|
-
"●",
|
|
237
|
-
)
|
|
239
|
+
BREATH_DOT_GLYPHS: tuple[str, ...] = _FIGURES_BREATH_DOT_GLYPHS
|
|
238
240
|
|
|
239
241
|
|
|
240
242
|
def breathing_dot_color(frame: int) -> str:
|
|
@@ -382,7 +384,7 @@ class SubmissionAnimator:
|
|
|
382
384
|
if not self._is_active:
|
|
383
385
|
return Text("")
|
|
384
386
|
|
|
385
|
-
phrase = self._status_hint if self._status_hint else (self._shuffled[self._phrase_idx] +
|
|
387
|
+
phrase = self._status_hint if self._status_hint else (self._shuffled[self._phrase_idx] + ELLIPSIS)
|
|
386
388
|
dot_color = breathing_dot_color(self._frame)
|
|
387
389
|
now_monotonic = time.monotonic()
|
|
388
390
|
dot = Text(
|