comate-cli 0.1.3__tar.gz → 0.1.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.
- {comate_cli-0.1.3 → comate_cli-0.1.4}/PKG-INFO +1 -1
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/preflight.py +1 -3
- {comate_cli-0.1.3 → comate_cli-0.1.4}/pyproject.toml +1 -1
- {comate_cli-0.1.3 → comate_cli-0.1.4}/tests/test_preflight.py +33 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/.gitignore +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/README.md +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/__init__.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/__main__.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/main.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/__init__.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/animations.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/app.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/assistant_render.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/env_utils.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/error_display.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/event_renderer.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/fragment_utils.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/history_printer.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/input_geometry.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/layout_coordinator.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/logging_adapter.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/logo.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/markdown_render.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/mention_completer.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/message_style.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/models.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/question_view.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/resume_selector.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/rewind_store.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/rpc_protocol.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/rpc_stdio.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/selection_menu.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/session_view.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/slash_commands.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/startup.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/status_bar.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/text_effects.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/tool_view.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/tui.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/tui_parts/__init__.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/tui_parts/commands.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/tui_parts/history_sync.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/tui_parts/input_behavior.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/tui_parts/key_bindings.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/tui_parts/render_panels.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/tui_parts/slash_command_registry.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/tui_parts/ui_mode.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/tests/conftest.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/tests/test_app_preflight_gate.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/tests/test_app_shutdown.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/tests/test_app_usage_line.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/tests/test_cli_project_root.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/tests/test_compact_command_semantics.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/tests/test_completion_status_panel.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/tests/test_context_command.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/tests/test_event_renderer.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/tests/test_history_sync.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/tests/test_input_behavior.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/tests/test_layout_coordinator.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/tests/test_main_args.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/tests/test_mention_completer.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/tests/test_question_view.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/tests/test_resume_selector.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/tests/test_rewind_command_semantics.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/tests/test_rewind_store.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/tests/test_rpc_protocol.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/tests/test_rpc_stdio_bridge.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/tests/test_selection_menu.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/tests/test_slash_completer.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/tests/test_slash_registry.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/tests/test_status_bar.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/tests/test_tool_view.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/tests/test_tui_mcp_init_gate.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/tests/test_tui_paste_placeholder.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/tests/test_tui_split_invariance.py +0 -0
- {comate_cli-0.1.3 → comate_cli-0.1.4}/uv.lock +0 -0
|
@@ -554,7 +554,6 @@ class _PreflightWizard:
|
|
|
554
554
|
kb = KeyBindings()
|
|
555
555
|
|
|
556
556
|
@kb.add("up")
|
|
557
|
-
@kb.add("k")
|
|
558
557
|
def _on_up(event) -> None:
|
|
559
558
|
del event
|
|
560
559
|
if self._mode != "selection":
|
|
@@ -564,7 +563,6 @@ class _PreflightWizard:
|
|
|
564
563
|
self._invalidate()
|
|
565
564
|
|
|
566
565
|
@kb.add("down")
|
|
567
|
-
@kb.add("j")
|
|
568
566
|
def _on_down(event) -> None:
|
|
569
567
|
del event
|
|
570
568
|
if self._mode != "selection":
|
|
@@ -954,7 +952,7 @@ class _PreflightWizard:
|
|
|
954
952
|
title=f"Enter API key for {provider.title()}",
|
|
955
953
|
label="api_key",
|
|
956
954
|
initial_value="",
|
|
957
|
-
secret=
|
|
955
|
+
secret=False,
|
|
958
956
|
allow_empty=False,
|
|
959
957
|
on_submit=lambda text, _provider=provider: self._on_api_key_submitted(_provider, text),
|
|
960
958
|
cancel_detail="key_cancelled",
|
|
@@ -6,6 +6,8 @@ import unittest
|
|
|
6
6
|
from pathlib import Path
|
|
7
7
|
from unittest.mock import AsyncMock, patch
|
|
8
8
|
|
|
9
|
+
from prompt_toolkit.layout.processors import PasswordProcessor
|
|
10
|
+
|
|
9
11
|
from comate_cli.terminal_agent.preflight import (
|
|
10
12
|
PROVIDER_PRESETS,
|
|
11
13
|
LevelConfigDraft,
|
|
@@ -364,6 +366,37 @@ class TestPreflightWizard(unittest.TestCase):
|
|
|
364
366
|
wizard._prepare_key_collection()
|
|
365
367
|
self.assertEqual(wizard._providers_need_key, ["anthropic"])
|
|
366
368
|
|
|
369
|
+
def test_wizard_does_not_bind_jk_navigation(self) -> None:
|
|
370
|
+
wizard = self._build_wizard()
|
|
371
|
+
self.assertIsNotNone(wizard._app)
|
|
372
|
+
bindings = wizard._app.key_bindings.bindings if wizard._app is not None else []
|
|
373
|
+
|
|
374
|
+
single_keys: set[str] = set()
|
|
375
|
+
for binding in bindings:
|
|
376
|
+
if len(binding.keys) != 1:
|
|
377
|
+
continue
|
|
378
|
+
key = binding.keys[0]
|
|
379
|
+
value = getattr(key, "value", None)
|
|
380
|
+
name = value if isinstance(value, str) else str(key)
|
|
381
|
+
single_keys.add(name.lower())
|
|
382
|
+
|
|
383
|
+
self.assertIn("up", single_keys)
|
|
384
|
+
self.assertIn("down", single_keys)
|
|
385
|
+
self.assertNotIn("j", single_keys)
|
|
386
|
+
self.assertNotIn("k", single_keys)
|
|
387
|
+
|
|
388
|
+
def test_api_key_input_is_not_masked(self) -> None:
|
|
389
|
+
wizard = self._build_wizard()
|
|
390
|
+
wizard._providers_need_key = ["anthropic"]
|
|
391
|
+
wizard._next_key_index = 0
|
|
392
|
+
|
|
393
|
+
wizard._open_next_key_input()
|
|
394
|
+
|
|
395
|
+
self.assertIsNotNone(wizard._active_input_area)
|
|
396
|
+
self.assertIsNotNone(wizard._active_input_area.window.content)
|
|
397
|
+
processors = wizard._active_input_area.window.content.input_processors
|
|
398
|
+
self.assertFalse(any(isinstance(processor, PasswordProcessor) for processor in processors))
|
|
399
|
+
|
|
367
400
|
|
|
368
401
|
class TestPreflightRunFlow(unittest.IsolatedAsyncioTestCase):
|
|
369
402
|
async def test_run_preflight_propagates_wizard_cancel_detail(self) -> None:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{comate_cli-0.1.3 → comate_cli-0.1.4}/comate_cli/terminal_agent/tui_parts/slash_command_registry.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|