systemr-cli 2.3.0__tar.gz → 2.3.2__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.
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/PKG-INFO +1 -1
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/__init__.py +1 -1
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/cli.py +1 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/commands/chat_commands.py +13 -1
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/pyproject.toml +1 -1
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/.gitignore +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/DESIGN.md +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/README.md +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/clawhub/systemr-trading/SKILL.md +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/clawhub/systemr-trading/scripts/mcp_stdio_proxy.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/__main__.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/auth.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/client.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/commands/__init__.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/commands/auth_commands.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/commands/cron_commands.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/commands/doctor_command.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/commands/eval_commands.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/commands/journal_commands.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/commands/plan_commands.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/commands/risk_commands.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/commands/scan_commands.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/commands/size_commands.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/config.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/confirmation.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/credits.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/cron.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/display/__init__.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/display/chat_renderer.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/display/formatters.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/display/tables.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/display/theme.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/hooks.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/logging.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/model_failover.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/orchestrator.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/profile.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/store.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/streaming.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/tool_router.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/types.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/__init__.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_auth.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_chat_helpers.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_chat_renderer.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_cli.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_config.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_confirmation.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_credits.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_cron.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_doctor.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_formatters.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_hooks.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_logging.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_model_failover.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_orchestrator.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_profile.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_store.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_streaming.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_tool_router.py +0 -0
- {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_types.py +0 -0
|
@@ -71,6 +71,7 @@ def _show_home_and_chat(ctx: click.Context) -> None:
|
|
|
71
71
|
# Connected — print banner then drop into chat (chat skips its own banner)
|
|
72
72
|
print_banner()
|
|
73
73
|
console.print(f" [{GREEN}]● connected[/]")
|
|
74
|
+
console.print()
|
|
74
75
|
ctx.ensure_object(dict)
|
|
75
76
|
ctx.obj["banner_shown"] = True
|
|
76
77
|
ctx.invoke(chat)
|
|
@@ -221,9 +221,21 @@ def chat(ctx: click.Context, model_name: str | None, research: bool, resume: boo
|
|
|
221
221
|
history_file = SYSTEMR_HOME / "chat_history"
|
|
222
222
|
loop = asyncio.new_event_loop()
|
|
223
223
|
|
|
224
|
+
from prompt_toolkit.key_binding import KeyBindings
|
|
225
|
+
from prompt_toolkit.filters import Condition
|
|
226
|
+
|
|
227
|
+
# Custom key binding: Enter on empty buffer does nothing
|
|
228
|
+
kb = KeyBindings()
|
|
229
|
+
|
|
230
|
+
@kb.add("enter", filter=Condition(lambda: not prompt_session.default_buffer.text.strip()))
|
|
231
|
+
def _ignore_empty_enter(event):
|
|
232
|
+
"""Swallow Enter when input is empty — no new line, no movement."""
|
|
233
|
+
pass
|
|
234
|
+
|
|
224
235
|
prompt_session: PromptSession[str] = PromptSession(
|
|
225
236
|
history=FileHistory(str(history_file)),
|
|
226
237
|
auto_suggest=AutoSuggestFromHistory(),
|
|
238
|
+
key_bindings=kb,
|
|
227
239
|
)
|
|
228
240
|
|
|
229
241
|
# Broker state (will be dynamic when broker connection is implemented)
|
|
@@ -256,7 +268,7 @@ def chat(ctx: click.Context, model_name: str | None, research: bool, resume: boo
|
|
|
256
268
|
print_separator()
|
|
257
269
|
print_prompt_bar(model=display_model, broker=connected_broker)
|
|
258
270
|
import sys as _sys
|
|
259
|
-
_sys.stdout.write(f"\n \033[2m◐ Processing...\033[0m")
|
|
271
|
+
_sys.stdout.write(f"\n\n \033[2m◐ Processing...\033[0m")
|
|
260
272
|
_sys.stdout.flush()
|
|
261
273
|
|
|
262
274
|
# Trivial messages — handle locally, no API call
|
|
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
|
|
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
|