soothe-cli 0.6.14__tar.gz → 0.6.15__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 (113) hide show
  1. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/PKG-INFO +1 -1
  2. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/textual_adapter.py +7 -2
  3. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/widgets/messages.py +9 -5
  4. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/.gitignore +0 -0
  5. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/README.md +0 -0
  6. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/pyproject.toml +0 -0
  7. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/__init__.py +0 -0
  8. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/cli/__init__.py +0 -0
  9. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/cli/commands/__init__.py +0 -0
  10. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/cli/commands/autopilot_cmd.py +0 -0
  11. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/cli/commands/cron_cmd.py +0 -0
  12. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/cli/commands/loop_cmd.py +0 -0
  13. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/cli/commands/run_cmd.py +0 -0
  14. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/cli/commands/status_cmd.py +0 -0
  15. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/cli/execution/__init__.py +0 -0
  16. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/cli/execution/daemon.py +0 -0
  17. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/cli/execution/daemon_errors.py +0 -0
  18. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/cli/execution/headless.py +0 -0
  19. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/cli/execution/headless_renderer.py +0 -0
  20. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/cli/execution/launcher.py +0 -0
  21. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/cli/main.py +0 -0
  22. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/config/__init__.py +0 -0
  23. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/config/cli_config.py +0 -0
  24. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/config/loader.py +0 -0
  25. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/config/logging_setup.py +0 -0
  26. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/runtime/__init__.py +0 -0
  27. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/runtime/headless/processor.py +0 -0
  28. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/runtime/headless/processor_state.py +0 -0
  29. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/runtime/parse/_utils.py +0 -0
  30. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/runtime/parse/message_processing.py +0 -0
  31. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/runtime/parse/tool_call_resolution.py +0 -0
  32. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/runtime/parse/tool_message_format.py +0 -0
  33. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/runtime/parse/tool_result.py +0 -0
  34. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/runtime/policy/display_policy.py +0 -0
  35. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/runtime/policy/essential_events.py +0 -0
  36. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/runtime/policy/tui_trace_log.py +0 -0
  37. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/runtime/presentation/duration_format.py +0 -0
  38. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/runtime/presentation/engine.py +0 -0
  39. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/runtime/presentation/explore_task_display.py +0 -0
  40. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/runtime/presentation/renderer_base.py +0 -0
  41. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/runtime/presentation/renderer_protocol.py +0 -0
  42. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/runtime/state/file_tracker.py +0 -0
  43. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/runtime/state/session_stats.py +0 -0
  44. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/runtime/state/step_router.py +0 -0
  45. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/runtime/state/stream_accumulator.py +0 -0
  46. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/runtime/state/transcript.py +0 -0
  47. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/runtime/transport/session.py +0 -0
  48. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/runtime/turn/pipeline.py +0 -0
  49. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/runtime/turn/prepare.py +0 -0
  50. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/runtime/wire/chunk_filter.py +0 -0
  51. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/runtime/wire/display_text.py +0 -0
  52. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/runtime/wire/message_text.py +0 -0
  53. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/runtime/wire/messages.py +0 -0
  54. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/__init__.py +0 -0
  55. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/_cli_context.py +0 -0
  56. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/_env_vars.py +0 -0
  57. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/_version.py +0 -0
  58. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/app/__init__.py +0 -0
  59. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/app/_app.py +0 -0
  60. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/app/_commands.py +0 -0
  61. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/app/_execution.py +0 -0
  62. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/app/_history.py +0 -0
  63. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/app/_messages_mixin.py +0 -0
  64. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/app/_model.py +0 -0
  65. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/app/_module_init.py +0 -0
  66. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/app/_startup.py +0 -0
  67. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/app/_ui.py +0 -0
  68. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/app/app.tcss +0 -0
  69. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/binding.py +0 -0
  70. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/command_registry.py +0 -0
  71. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/commands/__init__.py +0 -0
  72. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/commands/command_router.py +0 -0
  73. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/commands/slash_commands.py +0 -0
  74. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/commands/subagent_routing.py +0 -0
  75. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/config.py +0 -0
  76. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/file_change_notify.py +0 -0
  77. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/file_change_renderers.py +0 -0
  78. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/hooks.py +0 -0
  79. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/input.py +0 -0
  80. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/media_utils.py +0 -0
  81. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/model_config.py +0 -0
  82. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/path_utils.py +0 -0
  83. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/preview_limits.py +0 -0
  84. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/project_utils.py +0 -0
  85. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/sessions.py +0 -0
  86. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/skills/__init__.py +0 -0
  87. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/skills/invocation.py +0 -0
  88. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/skills/load.py +0 -0
  89. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/theme.py +0 -0
  90. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/tips.py +0 -0
  91. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/tool_display.py +0 -0
  92. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/unicode_security.py +0 -0
  93. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/update_check.py +0 -0
  94. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/widgets/__init__.py +0 -0
  95. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/widgets/_links.py +0 -0
  96. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/widgets/autocomplete.py +0 -0
  97. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/widgets/autopilot_dashboard.py +0 -0
  98. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/widgets/autopilot_screen.py +0 -0
  99. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/widgets/chat_input.py +0 -0
  100. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/widgets/clipboard.py +0 -0
  101. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/widgets/diff.py +0 -0
  102. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/widgets/editor.py +0 -0
  103. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/widgets/file_change_preview.py +0 -0
  104. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/widgets/history.py +0 -0
  105. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/widgets/loading.py +0 -0
  106. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/widgets/loop_selector.py +0 -0
  107. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/widgets/mcp_viewer.py +0 -0
  108. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/widgets/message_store.py +0 -0
  109. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/widgets/model_selector.py +0 -0
  110. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/widgets/notification_settings.py +0 -0
  111. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/widgets/status.py +0 -0
  112. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/src/soothe_cli/tui/widgets/theme_selector.py +0 -0
  113. {soothe_cli-0.6.14 → soothe_cli-0.6.15}/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.6.14
3
+ Version: 0.6.15
4
4
  Summary: Soothe CLI client - communicates with daemon via WebSocket
5
5
  Project-URL: Homepage, https://github.com/mirasoth/soothe
6
6
  Project-URL: Documentation, https://soothe.readthedocs.io
@@ -2821,7 +2821,12 @@ async def execute_task_textual(
2821
2821
  data.get("assessment_reasoning", "")
2822
2822
  ).strip()
2823
2823
  plan_reasoning = str(data.get("plan_reasoning", "")).strip()
2824
- if not assessment_reasoning and not plan_reasoning:
2824
+ next_action = str(data.get("next_action", "")).strip()
2825
+ if (
2826
+ not assessment_reasoning
2827
+ and not plan_reasoning
2828
+ and not next_action
2829
+ ):
2825
2830
  continue
2826
2831
  pending_text = pending_text_by_namespace.get(ns_key, "")
2827
2832
  if pending_text:
@@ -2837,7 +2842,7 @@ async def execute_task_textual(
2837
2842
  pa_raw = data.get("plan_action", "")
2838
2843
  plan_action = pa_raw if pa_raw in ("keep", "new") else ""
2839
2844
  plan_widget = CognitionReasonMessage(
2840
- next_action="",
2845
+ next_action=next_action,
2841
2846
  status=str(data.get("status", "")),
2842
2847
  iteration=int(data.get("iteration", 0)),
2843
2848
  plan_action=str(plan_action),
@@ -2961,7 +2961,9 @@ class CognitionStepMessage(Vertical):
2961
2961
  self._status_widget.remove_class("pending")
2962
2962
  self._status_widget.remove_class("queued")
2963
2963
  self._status_widget.display = True
2964
- self._update_running_animation()
2964
+ # Immediate status line update (bypasses visibility check) so tool count
2965
+ # appears in real-time when tools arrive before the animation timer fires.
2966
+ self._sync_running_status_text()
2965
2967
  self._refresh_task_activity_display()
2966
2968
  self._animation_timer = self.set_interval(
2967
2969
  _RUNNING_SPINNER_INTERVAL_SECONDS,
@@ -3239,12 +3241,12 @@ class CognitionReasonMessage(Vertical):
3239
3241
  """Initialize a plan-reason card.
3240
3242
 
3241
3243
  Args:
3242
- next_action: Deprecated; retained for message-store replay only.
3244
+ next_action: User-facing plan-generate line (RFC-604 / IG-329).
3243
3245
  status: Plan status (continue, replan, done).
3244
3246
  iteration: Agent-loop iteration index.
3245
3247
  plan_action: ``keep`` or ``new`` (execution strategy).
3246
- assessment_reasoning: Phase-1 status justification.
3247
- plan_reasoning: Phase-2 plan-strategy text.
3248
+ assessment_reasoning: Phase-1 status justification from plan-assess.
3249
+ plan_reasoning: Legacy phase-2 strategy text (usually empty after IG-329).
3248
3250
  **kwargs: Passed to ``Vertical``.
3249
3251
  """
3250
3252
  super().__init__(**kwargs)
@@ -3261,6 +3263,8 @@ class CognitionReasonMessage(Vertical):
3261
3263
  parts.append(self._assessment_reasoning)
3262
3264
  if self._plan_reasoning:
3263
3265
  parts.append(self._plan_reasoning)
3266
+ elif self._next_action:
3267
+ parts.append(self._next_action)
3264
3268
  if len(parts) == 2:
3265
3269
  first = parts[0]
3266
3270
  if not first.endswith((".", "!", "?")):
@@ -3269,7 +3273,7 @@ class CognitionReasonMessage(Vertical):
3269
3273
  elif parts:
3270
3274
  body = parts[0]
3271
3275
  else:
3272
- body = self._next_action or ""
3276
+ body = ""
3273
3277
  if self._plan_action in ("keep", "new") and body:
3274
3278
  body = f"{body} · {self._plan_action}"
3275
3279
  return _assemble_card_header(self, "", body)
File without changes
File without changes
File without changes