soothe-client-python 1.0.0__tar.gz → 1.0.1__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 (32) hide show
  1. {soothe_client_python-1.0.0 → soothe_client_python-1.0.1}/PKG-INFO +1 -1
  2. {soothe_client_python-1.0.0 → soothe_client_python-1.0.1}/src/soothe_client/appkit/classifier.py +5 -7
  3. {soothe_client_python-1.0.0 → soothe_client_python-1.0.1}/src/soothe_client/intent_hints.py +6 -3
  4. {soothe_client_python-1.0.0 → soothe_client_python-1.0.1}/src/soothe_client/protocol_params.py +2 -2
  5. {soothe_client_python-1.0.0 → soothe_client_python-1.0.1}/src/soothe_client/websocket.py +3 -2
  6. {soothe_client_python-1.0.0 → soothe_client_python-1.0.1}/.gitignore +0 -0
  7. {soothe_client_python-1.0.0 → soothe_client_python-1.0.1}/LICENSE +0 -0
  8. {soothe_client_python-1.0.0 → soothe_client_python-1.0.1}/README.md +0 -0
  9. {soothe_client_python-1.0.0 → soothe_client_python-1.0.1}/pyproject.toml +0 -0
  10. {soothe_client_python-1.0.0 → soothe_client_python-1.0.1}/src/soothe_client/__init__.py +0 -0
  11. {soothe_client_python-1.0.0 → soothe_client_python-1.0.1}/src/soothe_client/appkit/__init__.py +0 -0
  12. {soothe_client_python-1.0.0 → soothe_client_python-1.0.1}/src/soothe_client/appkit/attachments.py +0 -0
  13. {soothe_client_python-1.0.0 → soothe_client_python-1.0.1}/src/soothe_client/appkit/broadcaster.py +0 -0
  14. {soothe_client_python-1.0.0 → soothe_client_python-1.0.1}/src/soothe_client/appkit/chunk_filter.py +0 -0
  15. {soothe_client_python-1.0.0 → soothe_client_python-1.0.1}/src/soothe_client/appkit/daemon_session.py +0 -0
  16. {soothe_client_python-1.0.0 → soothe_client_python-1.0.1}/src/soothe_client/appkit/events.py +0 -0
  17. {soothe_client_python-1.0.0 → soothe_client_python-1.0.1}/src/soothe_client/appkit/managed_client.py +0 -0
  18. {soothe_client_python-1.0.0 → soothe_client_python-1.0.1}/src/soothe_client/appkit/observability.py +0 -0
  19. {soothe_client_python-1.0.0 → soothe_client_python-1.0.1}/src/soothe_client/appkit/pool.py +0 -0
  20. {soothe_client_python-1.0.0 → soothe_client_python-1.0.1}/src/soothe_client/appkit/query_gate.py +0 -0
  21. {soothe_client_python-1.0.0 → soothe_client_python-1.0.1}/src/soothe_client/appkit/session_store.py +0 -0
  22. {soothe_client_python-1.0.0 → soothe_client_python-1.0.1}/src/soothe_client/appkit/thinking_step.py +0 -0
  23. {soothe_client_python-1.0.0 → soothe_client_python-1.0.1}/src/soothe_client/appkit/turn.py +0 -0
  24. {soothe_client_python-1.0.0 → soothe_client_python-1.0.1}/src/soothe_client/appkit/turn_runner.py +0 -0
  25. {soothe_client_python-1.0.0 → soothe_client_python-1.0.1}/src/soothe_client/command_client.py +0 -0
  26. {soothe_client_python-1.0.0 → soothe_client_python-1.0.1}/src/soothe_client/errors.py +0 -0
  27. {soothe_client_python-1.0.0 → soothe_client_python-1.0.1}/src/soothe_client/helpers.py +0 -0
  28. {soothe_client_python-1.0.0 → soothe_client_python-1.0.1}/src/soothe_client/py.typed +0 -0
  29. {soothe_client_python-1.0.0 → soothe_client_python-1.0.1}/src/soothe_client/schemas.py +0 -0
  30. {soothe_client_python-1.0.0 → soothe_client_python-1.0.1}/src/soothe_client/session.py +0 -0
  31. {soothe_client_python-1.0.0 → soothe_client_python-1.0.1}/src/soothe_client/stream_terminal.py +0 -0
  32. {soothe_client_python-1.0.0 → soothe_client_python-1.0.1}/src/soothe_client/turn_boundary.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: soothe-client-python
3
- Version: 1.0.0
3
+ Version: 1.0.1
4
4
  Summary: WebSocket client + appkit for soothe-daemon (Python)
5
5
  Project-URL: Homepage, https://github.com/mirasoth/soothe-client-python
6
6
  Project-URL: Documentation, https://soothe.readthedocs.io
@@ -51,7 +51,7 @@ class ClassifierConfig:
51
51
  event allowlist.
52
52
  treat_status_idle_as_complete: When true, a status frame with
53
53
  ``state==idle`` and non-empty accumulated assistant text completes
54
- the turn (typical for direct-model turns). Default false.
54
+ the turn (typical for intent-hint turns). Default false.
55
55
  """
56
56
 
57
57
  deliverable_phases: frozenset[str] | set[str]
@@ -314,12 +314,10 @@ class EventClassifier:
314
314
  )
315
315
  return self._continue_result(content)
316
316
 
317
- direct_content, direct_ok = self._messages_mode_assistant_content(data)
318
- if direct_ok and self.is_substantive_assistant_reply(direct_content):
319
- return self._deliverable_result(
320
- direct_content,
321
- "soothe.protocol.message.direct_model",
322
- )
317
+ # Unphased terminal AI text is streamable narration only.
318
+ unphased_content, unphased_ok = self._messages_mode_assistant_content(data)
319
+ if unphased_ok:
320
+ return self._continue_result(unphased_content)
323
321
 
324
322
  if has_payload and raw_content:
325
323
  if _is_terminal_message_type(msg_type) or msg_type == "":
@@ -9,14 +9,14 @@ IMAGE_TO_TEXT: Final = "image_to_text"
9
9
  OCR: Final = "ocr"
10
10
  EMBED: Final = "embed"
11
11
 
12
- REMOVED_INTENT_HINTS: frozenset[str] = frozenset({"direct_llm", "quiz"})
12
+ REMOVED_INTENT_HINTS: frozenset[str] = frozenset({"direct_llm", "quiz", "direct_model"})
13
13
 
14
14
  # Default deliverable phases for turn-ending replies (excludes plan_direct narration).
15
15
  DEFAULT_DELIVERABLE_PHASES: frozenset[str] = frozenset(
16
16
  {
17
17
  "quiz",
18
18
  "goal_completion",
19
- "direct_model",
19
+ "chitchat",
20
20
  "text_completion",
21
21
  "image_to_text",
22
22
  "ocr",
@@ -30,13 +30,16 @@ _REMOVED_INTENT_HINT_MESSAGES: dict[str, str] = {
30
30
  "use text_completion (text-only) or image_to_text (with attachments)"
31
31
  ),
32
32
  "quiz": "intent_hint quiz is removed; omit intent_hint and let intake classify the turn",
33
+ "direct_model": (
34
+ "intent_hint direct_model is removed; use text_completion, image_to_text, ocr, or embed"
35
+ ),
33
36
  }
34
37
 
35
38
 
36
39
  def validate_loop_input_intent_hint(hint: str) -> str | None:
37
40
  """Return an error message when ``hint`` is a removed legacy value.
38
41
 
39
- Direct model hints and agent-path pass-through values (e.g.
42
+ Intent-hint values and agent-path pass-through values (e.g.
40
43
  ``resume_clarification``, ``skill:foo``) are allowed.
41
44
  """
42
45
  key = hint.strip().lower()
@@ -200,7 +200,7 @@ class LoopInputParams(ParamsBase):
200
200
  model_params: Additional model parameters.
201
201
  router_profile: Named ``router_profiles`` overlay for chat roles this turn.
202
202
  attachments: Image attachments.
203
- intent_hint: Daemon direct-model hint (text_completion, image_to_text, ocr, embed).
203
+ intent_hint: Daemon intent_hint (text_completion, image_to_text, ocr, embed).
204
204
  response_schema: Structured output schema.
205
205
  response_schema_name: Schema name for logging.
206
206
  response_schema_strict: Enable strict schema validation.
@@ -415,7 +415,7 @@ class JobCreateParams(ParamsBase):
415
415
  autonomous: Enable autonomous mode.
416
416
  max_iterations: Max iterations.
417
417
  guidance: Initial guidance.
418
- intent_hint: Daemon direct-model hint (text_completion, image_to_text, ocr, embed).
418
+ intent_hint: Daemon intent_hint (text_completion, image_to_text, ocr, embed).
419
419
  """
420
420
 
421
421
  goal: str = Field(..., min_length=1, description="Root goal text")
@@ -966,7 +966,7 @@ class WebSocketClient:
966
966
  model_params: Additional model parameters.
967
967
  router_profile: Named router profile for chat-role overlay this turn.
968
968
  attachments: Image attachments (mime_type + base64 data).
969
- intent_hint: Daemon-only direct model hint. Supported values:
969
+ intent_hint: Daemon-only intent_hint. Supported values:
970
970
  ``text_completion`` (``default`` role, text-only),
971
971
  ``image_to_text`` (``image`` role, attachments required),
972
972
  ``ocr`` (``ocr`` role, attachments required),
@@ -974,7 +974,8 @@ class WebSocketClient:
974
974
  ``response_schema`` is supported for ``text_completion`` and
975
975
  ``image_to_text``. Agent-path pass-through hints (e.g.
976
976
  ``resume_clarification``, ``skill:foo``) are forwarded unchanged.
977
- Legacy ``direct_llm`` and ``quiz`` are rejected before send.
977
+ Legacy ``direct_llm``, ``quiz``, and ``direct_model`` are rejected
978
+ before send.
978
979
 
979
980
  Raises:
980
981
  ValueError: When ``intent_hint`` is a removed legacy value.