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.
Files changed (61) hide show
  1. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/PKG-INFO +1 -1
  2. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/__init__.py +1 -1
  3. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/cli.py +1 -0
  4. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/commands/chat_commands.py +13 -1
  5. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/pyproject.toml +1 -1
  6. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/.gitignore +0 -0
  7. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/DESIGN.md +0 -0
  8. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/README.md +0 -0
  9. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/clawhub/systemr-trading/SKILL.md +0 -0
  10. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/clawhub/systemr-trading/scripts/mcp_stdio_proxy.py +0 -0
  11. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/__main__.py +0 -0
  12. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/auth.py +0 -0
  13. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/client.py +0 -0
  14. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/commands/__init__.py +0 -0
  15. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/commands/auth_commands.py +0 -0
  16. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/commands/cron_commands.py +0 -0
  17. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/commands/doctor_command.py +0 -0
  18. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/commands/eval_commands.py +0 -0
  19. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/commands/journal_commands.py +0 -0
  20. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/commands/plan_commands.py +0 -0
  21. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/commands/risk_commands.py +0 -0
  22. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/commands/scan_commands.py +0 -0
  23. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/commands/size_commands.py +0 -0
  24. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/config.py +0 -0
  25. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/confirmation.py +0 -0
  26. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/credits.py +0 -0
  27. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/cron.py +0 -0
  28. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/display/__init__.py +0 -0
  29. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/display/chat_renderer.py +0 -0
  30. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/display/formatters.py +0 -0
  31. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/display/tables.py +0 -0
  32. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/display/theme.py +0 -0
  33. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/hooks.py +0 -0
  34. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/logging.py +0 -0
  35. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/model_failover.py +0 -0
  36. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/orchestrator.py +0 -0
  37. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/profile.py +0 -0
  38. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/store.py +0 -0
  39. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/streaming.py +0 -0
  40. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/tool_router.py +0 -0
  41. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/neo/types.py +0 -0
  42. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/__init__.py +0 -0
  43. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_auth.py +0 -0
  44. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_chat_helpers.py +0 -0
  45. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_chat_renderer.py +0 -0
  46. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_cli.py +0 -0
  47. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_config.py +0 -0
  48. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_confirmation.py +0 -0
  49. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_credits.py +0 -0
  50. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_cron.py +0 -0
  51. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_doctor.py +0 -0
  52. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_formatters.py +0 -0
  53. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_hooks.py +0 -0
  54. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_logging.py +0 -0
  55. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_model_failover.py +0 -0
  56. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_orchestrator.py +0 -0
  57. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_profile.py +0 -0
  58. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_store.py +0 -0
  59. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_streaming.py +0 -0
  60. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_tool_router.py +0 -0
  61. {systemr_cli-2.3.0 → systemr_cli-2.3.2}/tests/test_types.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: systemr-cli
3
- Version: 2.3.0
3
+ Version: 2.3.2
4
4
  Summary: System R AI — trading operating system for agents
5
5
  Author-email: System R AI <ashim@systemr.ai>
6
6
  License-Expression: MIT
@@ -1,3 +1,3 @@
1
1
  """System R CLI — trading operating system in your terminal."""
2
2
 
3
- __version__ = "2.3.0"
3
+ __version__ = "2.3.2"
@@ -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
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "systemr-cli"
7
- version = "2.3.0"
7
+ version = "2.3.2"
8
8
  description = "System R AI — trading operating system for agents"
9
9
  readme = "README.md"
10
10
  license = "MIT"
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