systemr-cli 2.2.0__tar.gz → 2.3.0__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.2.0 → systemr_cli-2.3.0}/PKG-INFO +1 -1
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/__init__.py +1 -1
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/commands/chat_commands.py +23 -4
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/pyproject.toml +1 -1
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/.gitignore +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/DESIGN.md +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/README.md +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/clawhub/systemr-trading/SKILL.md +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/clawhub/systemr-trading/scripts/mcp_stdio_proxy.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/__main__.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/auth.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/cli.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/client.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/commands/__init__.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/commands/auth_commands.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/commands/cron_commands.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/commands/doctor_command.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/commands/eval_commands.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/commands/journal_commands.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/commands/plan_commands.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/commands/risk_commands.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/commands/scan_commands.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/commands/size_commands.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/config.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/confirmation.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/credits.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/cron.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/display/__init__.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/display/chat_renderer.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/display/formatters.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/display/tables.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/display/theme.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/hooks.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/logging.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/model_failover.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/orchestrator.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/profile.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/store.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/streaming.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/tool_router.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/neo/types.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/tests/__init__.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/tests/test_auth.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/tests/test_chat_helpers.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/tests/test_chat_renderer.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/tests/test_cli.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/tests/test_config.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/tests/test_confirmation.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/tests/test_credits.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/tests/test_cron.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/tests/test_doctor.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/tests/test_formatters.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/tests/test_hooks.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/tests/test_logging.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/tests/test_model_failover.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/tests/test_orchestrator.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/tests/test_profile.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/tests/test_store.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/tests/test_streaming.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/tests/test_tool_router.py +0 -0
- {systemr_cli-2.2.0 → systemr_cli-2.3.0}/tests/test_types.py +0 -0
|
@@ -234,9 +234,12 @@ def chat(ctx: click.Context, model_name: str | None, research: bool, resume: boo
|
|
|
234
234
|
fire_hook(HookEvent.PRE_SESSION, context={"model": model_name})
|
|
235
235
|
logger.info("session_started", model=model_name, resume=resume)
|
|
236
236
|
|
|
237
|
+
first_prompt = True
|
|
237
238
|
try:
|
|
238
239
|
while True:
|
|
239
|
-
|
|
240
|
+
if not first_prompt:
|
|
241
|
+
print_separator()
|
|
242
|
+
first_prompt = False
|
|
240
243
|
try:
|
|
241
244
|
user_input = prompt_session.prompt(" ❯ ").strip()
|
|
242
245
|
except (EOFError, KeyboardInterrupt):
|
|
@@ -244,11 +247,27 @@ def chat(ctx: click.Context, model_name: str | None, research: bool, resume: boo
|
|
|
244
247
|
console.print(f" [{DIM}]Session closed.[/]")
|
|
245
248
|
break
|
|
246
249
|
|
|
247
|
-
#
|
|
250
|
+
# Empty input — do nothing, no separator, no status bar
|
|
251
|
+
if not user_input:
|
|
252
|
+
first_prompt = True # suppress separator on next loop
|
|
253
|
+
continue
|
|
254
|
+
|
|
255
|
+
# Show separator + status + immediate thinking feedback
|
|
248
256
|
print_separator()
|
|
249
257
|
print_prompt_bar(model=display_model, broker=connected_broker)
|
|
250
|
-
|
|
251
|
-
|
|
258
|
+
import sys as _sys
|
|
259
|
+
_sys.stdout.write(f"\n \033[2m◐ Processing...\033[0m")
|
|
260
|
+
_sys.stdout.flush()
|
|
261
|
+
|
|
262
|
+
# Trivial messages — handle locally, no API call
|
|
263
|
+
trivial = user_input.lower().strip(".,!? ")
|
|
264
|
+
if trivial in ("ok", "okay", "k", "yes", "no", "thanks", "thank you", "ty", "cool", "got it", "sure", "yep", "nope", "hmm", "hm"):
|
|
265
|
+
_sys.stdout.write(f"\r\033[K") # clear thinking
|
|
266
|
+
console.print(f"\n [{GREEN}]┃[/] [{GRAY}]Ready. What would you like to do?[/]")
|
|
267
|
+
console.print()
|
|
268
|
+
store.add_chat_message(db_session_id, "user", user_input)
|
|
269
|
+
messages.append({"role": "user", "content": user_input})
|
|
270
|
+
messages.append({"role": "assistant", "content": "Ready. What would you like to do?"})
|
|
252
271
|
continue
|
|
253
272
|
|
|
254
273
|
# Handle slash commands
|
|
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
|
|
File without changes
|