soothe-cli 0.5.6__tar.gz → 0.5.7__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 (135) hide show
  1. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/PKG-INFO +1 -1
  2. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/core/event_processor.py +1 -1
  3. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/core/presentation_engine.py +1 -1
  4. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/app/_execution.py +17 -3
  5. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/textual_adapter/_turn.py +1 -1
  6. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/.gitignore +0 -0
  7. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/README.md +0 -0
  8. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/pyproject.toml +0 -0
  9. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/__init__.py +0 -0
  10. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/cli/__init__.py +0 -0
  11. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/cli/commands/__init__.py +0 -0
  12. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/cli/commands/autopilot_cmd.py +0 -0
  13. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/cli/commands/loop_cmd.py +0 -0
  14. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/cli/commands/run_cmd.py +0 -0
  15. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/cli/execution/__init__.py +0 -0
  16. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/cli/execution/daemon.py +0 -0
  17. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/cli/execution/headless.py +0 -0
  18. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/cli/execution/headless_renderer.py +0 -0
  19. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/cli/execution/launcher.py +0 -0
  20. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/cli/main.py +0 -0
  21. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/cli/stream/__init__.py +0 -0
  22. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/cli/stream/context.py +0 -0
  23. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/cli/stream/display_line.py +0 -0
  24. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/cli/stream/formatter.py +0 -0
  25. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/cli/stream/pipeline.py +0 -0
  26. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/cli/stream/task_scope.py +0 -0
  27. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/config/__init__.py +0 -0
  28. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/config/cli_config.py +0 -0
  29. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/plan/__init__.py +0 -0
  30. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/plan/rich_tree.py +0 -0
  31. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/__init__.py +0 -0
  32. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/commands/__init__.py +0 -0
  33. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/commands/command_router.py +0 -0
  34. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/commands/slash_commands.py +0 -0
  35. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/commands/subagent_routing.py +0 -0
  36. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/config_loader.py +0 -0
  37. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/core/__init__.py +0 -0
  38. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/core/processor_state.py +0 -0
  39. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/core/renderer_protocol.py +0 -0
  40. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/duration_format.py +0 -0
  41. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/events/__init__.py +0 -0
  42. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/events/display_policy.py +0 -0
  43. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/events/essential_events.py +0 -0
  44. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/events/explore_task_display.py +0 -0
  45. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/events/stream_accumulator.py +0 -0
  46. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/events/tui_trace_log.py +0 -0
  47. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/rendering/__init__.py +0 -0
  48. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/rendering/async_renderer_protocol.py +0 -0
  49. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/rendering/renderer_base.py +0 -0
  50. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/tools/__init__.py +0 -0
  51. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/tools/_utils.py +0 -0
  52. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/tools/message_processing.py +0 -0
  53. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/tools/rendering.py +0 -0
  54. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/tools/tool_call_resolution.py +0 -0
  55. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/tools/tool_card_payload.py +0 -0
  56. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/tools/tool_card_visibility.py +0 -0
  57. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/tools/tool_formatters/__init__.py +0 -0
  58. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/tools/tool_formatters/base.py +0 -0
  59. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/tools/tool_formatters/execution.py +0 -0
  60. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/tools/tool_formatters/fallback.py +0 -0
  61. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/tools/tool_formatters/file_ops.py +0 -0
  62. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/tools/tool_formatters/goal_formatter.py +0 -0
  63. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/tools/tool_formatters/media.py +0 -0
  64. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/tools/tool_formatters/structured.py +0 -0
  65. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/tools/tool_formatters/subagent.py +0 -0
  66. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/tools/tool_formatters/web.py +0 -0
  67. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/tools/tool_message_format.py +0 -0
  68. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/shared/tools/tool_output_formatter.py +0 -0
  69. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/__init__.py +0 -0
  70. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/_ask_user_types.py +0 -0
  71. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/_cli_context.py +0 -0
  72. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/_env_vars.py +0 -0
  73. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/_session_stats.py +0 -0
  74. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/_version.py +0 -0
  75. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/app/__init__.py +0 -0
  76. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/app/_app.py +0 -0
  77. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/app/_commands.py +0 -0
  78. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/app/_history.py +0 -0
  79. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/app/_messages_mixin.py +0 -0
  80. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/app/_model.py +0 -0
  81. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/app/_module_init.py +0 -0
  82. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/app/_startup.py +0 -0
  83. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/app/_ui.py +0 -0
  84. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/app/app.tcss +0 -0
  85. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/command_registry.py +0 -0
  86. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/config.py +0 -0
  87. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/daemon_session.py +0 -0
  88. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/file_ops.py +0 -0
  89. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/formatting.py +0 -0
  90. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/hooks.py +0 -0
  91. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/input.py +0 -0
  92. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/media_utils.py +0 -0
  93. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/message_display_filter.py +0 -0
  94. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/model_config.py +0 -0
  95. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/output.py +0 -0
  96. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/preview_limits.py +0 -0
  97. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/project_utils.py +0 -0
  98. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/sessions.py +0 -0
  99. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/skills/__init__.py +0 -0
  100. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/skills/invocation.py +0 -0
  101. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/skills/load.py +0 -0
  102. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/textual_adapter/__init__.py +0 -0
  103. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/textual_adapter/_adapter.py +0 -0
  104. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/textual_adapter/_stream_formatting.py +0 -0
  105. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/textual_adapter/_stream_messages.py +0 -0
  106. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/textual_adapter/_turn_helpers.py +0 -0
  107. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/theme.py +0 -0
  108. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/tool_display.py +0 -0
  109. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/unicode_security.py +0 -0
  110. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/update_check.py +0 -0
  111. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/widgets/__init__.py +0 -0
  112. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/widgets/_links.py +0 -0
  113. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/widgets/approval.py +0 -0
  114. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/widgets/ask_user.py +0 -0
  115. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/widgets/autocomplete.py +0 -0
  116. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/widgets/autopilot_dashboard.py +0 -0
  117. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/widgets/autopilot_screen.py +0 -0
  118. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/widgets/chat_input.py +0 -0
  119. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/widgets/clipboard.py +0 -0
  120. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/widgets/diff.py +0 -0
  121. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/widgets/editor.py +0 -0
  122. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/widgets/history.py +0 -0
  123. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/widgets/loading.py +0 -0
  124. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/widgets/loop_selector.py +0 -0
  125. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/widgets/mcp_viewer.py +0 -0
  126. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/widgets/message_store.py +0 -0
  127. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/widgets/messages.py +0 -0
  128. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/widgets/model_selector.py +0 -0
  129. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/widgets/notification_settings.py +0 -0
  130. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/widgets/status.py +0 -0
  131. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/widgets/theme_selector.py +0 -0
  132. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/widgets/tool_renderers.py +0 -0
  133. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/widgets/tool_widgets.py +0 -0
  134. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/widgets/tools.py +0 -0
  135. {soothe_cli-0.5.6 → soothe_cli-0.5.7}/src/soothe_cli/tui/widgets/welcome.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: soothe-cli
3
- Version: 0.5.6
3
+ Version: 0.5.7
4
4
  Summary: Soothe CLI client - communicates with daemon via WebSocket
5
5
  Project-URL: Homepage, https://github.com/OpenSoothe/soothe
6
6
  Project-URL: Documentation, https://soothe.readthedocs.io
@@ -229,7 +229,7 @@ class EventProcessor:
229
229
  """Headless stdout: only RFC-614 loop-tagged finals (IG-343 / IG-345).
230
230
 
231
231
  Suppresses unphased execute-wave narration on the main graph; ``goal_completion``,
232
- ``chitchat``, etc. are routed via ``assistant_output_phase`` before this path.
232
+ ``quiz``, etc. are routed via ``assistant_output_phase`` before this path.
233
233
 
234
234
  Subgraph streams without RFC-614 phases are skipped in ``_handle_ai_message`` before
235
235
  this runs; loop-tagged subgraph finals use ``_dispatch_loop_tagged_assistant_text``.
@@ -49,7 +49,7 @@ class PresentationEngine:
49
49
 
50
50
  @property
51
51
  def final_answer_locked(self) -> bool:
52
- """True after a custom final/chitchat response was emitted for this turn."""
52
+ """True after a custom final or quiz-phase response was emitted for this turn."""
53
53
  return self._state.final_answer_locked
54
54
 
55
55
  def mark_final_answer_locked(self) -> None:
@@ -46,6 +46,19 @@ InputMode = Literal["normal", "shell", "command"]
46
46
 
47
47
  logger = logging.getLogger(__name__)
48
48
 
49
+ # Partial match for daemon pool_runner RuntimeError when an OS worker exits mid-turn.
50
+ _DAEMON_WORKER_SUBPROCESS_LOST = "Worker subprocess exited unexpectedly during query execution"
51
+
52
+
53
+ def _friendly_agent_execution_error(exc: BaseException) -> str:
54
+ """Map known daemon failures to concise TUI copy."""
55
+ if isinstance(exc, RuntimeError) and _DAEMON_WORKER_SUBPROCESS_LOST in str(exc):
56
+ return (
57
+ "The daemon execution worker stopped unexpectedly (for example after the pool "
58
+ "recycled an idle subprocess). Send your message again."
59
+ )
60
+ return str(exc)
61
+
49
62
 
50
63
  class _ExecutionMixin:
51
64
  """Agent execution, message routing, queue, shell commands, and daemon events."""
@@ -859,13 +872,14 @@ class _ExecutionMixin:
859
872
  )
860
873
  except Exception as e: # Resilient tool rendering
861
874
  logger.exception("Agent execution failed")
875
+ display_err = _friendly_agent_execution_error(e)
862
876
  # Ensure any in-flight tool calls don't remain stuck in "Running..."
863
877
  # when streaming aborts before tool results arrive.
864
878
  if self._ui_adapter:
865
- self._ui_adapter.finalize_pending_tools_with_error(f"Agent error: {e}")
866
- self._ui_adapter.finalize_pending_steps_with_error(f"Agent error: {e}")
879
+ self._ui_adapter.finalize_pending_tools_with_error(f"Agent error: {display_err}")
880
+ self._ui_adapter.finalize_pending_steps_with_error(f"Agent error: {display_err}")
867
881
  try:
868
- await self._mount_message(ErrorMessage(f"Agent error: {e}"))
882
+ await self._mount_message(ErrorMessage(f"Agent error: {display_err}"))
869
883
  except Exception:
870
884
  logger.debug("Could not mount error message (app closing?)", exc_info=True)
871
885
  finally:
@@ -841,7 +841,7 @@ async def execute_task_textual(
841
841
  # Main graph: skip standalone AssistantMessage cards for
842
842
  # intermediate AIMessage streams (execute_wave, unphased, etc.).
843
843
  # ``goal_completion`` is handled above. Other RFC-614 user-output
844
- # phases (chitchat, quiz, autonomous_goal) still use cards.
844
+ # phases (quiz, autonomous_goal) still use cards.
845
845
  if (
846
846
  is_main_agent
847
847
  and assistant_output_phase(message)
File without changes
File without changes
File without changes