soothe-client-python 1.1.0__tar.gz → 1.2.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.
Files changed (73) hide show
  1. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/PKG-INFO +1 -1
  2. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/command_client.py +1 -1
  3. soothe_client_python-1.2.0/src/soothe_client/display/__init__.py +75 -0
  4. soothe_client_python-1.2.0/src/soothe_client/ux/__init__.py +20 -0
  5. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/websocket.py +1 -1
  6. soothe_client_python-1.1.0/src/soothe_client/display/__init__.py +0 -120
  7. soothe_client_python-1.1.0/src/soothe_client/display/card_binder.py +0 -787
  8. soothe_client_python-1.1.0/src/soothe_client/display/snapshot_collapser.py +0 -118
  9. soothe_client_python-1.1.0/src/soothe_client/display/text_extract.py +0 -127
  10. soothe_client_python-1.1.0/src/soothe_client/ux/__init__.py +0 -30
  11. soothe_client_python-1.1.0/src/soothe_client/ux/subagent_progress.py +0 -171
  12. soothe_client_python-1.1.0/src/soothe_client/ux/subagent_wire_display.py +0 -121
  13. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/.gitignore +0 -0
  14. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/LICENSE +0 -0
  15. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/README.md +0 -0
  16. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/pyproject.toml +0 -0
  17. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/__init__.py +0 -0
  18. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/appkit/__init__.py +0 -0
  19. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/appkit/attachments.py +0 -0
  20. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/appkit/broadcaster.py +0 -0
  21. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/appkit/card_projection.py +0 -0
  22. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/appkit/chunk_filter.py +0 -0
  23. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/appkit/classifier.py +0 -0
  24. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/appkit/daemon_session.py +0 -0
  25. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/appkit/events.py +0 -0
  26. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/appkit/loop_session_store.py +0 -0
  27. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/appkit/managed_client.py +0 -0
  28. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/appkit/observability.py +0 -0
  29. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/appkit/pool.py +0 -0
  30. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/appkit/query_gate.py +0 -0
  31. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/appkit/thinking_step.py +0 -0
  32. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/appkit/turn.py +0 -0
  33. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/appkit/turn_boundary.py +0 -0
  34. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/appkit/turn_runner.py +0 -0
  35. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/core/__init__.py +0 -0
  36. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/core/events.py +0 -0
  37. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/core/subagent_wire.py +0 -0
  38. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/core/verbosity.py +0 -0
  39. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/display/_text_utils.py +0 -0
  40. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/display/card_ledger.py +0 -0
  41. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/display/card_wire.py +0 -0
  42. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/display/message_processing.py +0 -0
  43. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/display/snapshot_types.py +0 -0
  44. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/display/tool_message_format.py +0 -0
  45. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/display/tool_result.py +0 -0
  46. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/display/transcript_types.py +0 -0
  47. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/errors.py +0 -0
  48. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/helpers.py +0 -0
  49. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/intent_hints.py +0 -0
  50. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/paths.py +0 -0
  51. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/protocol_params.py +0 -0
  52. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/py.typed +0 -0
  53. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/schemas.py +0 -0
  54. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/session.py +0 -0
  55. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/stream_terminal.py +0 -0
  56. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/tools/__init__.py +0 -0
  57. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/tools/metadata.py +0 -0
  58. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/turn_boundary.py +0 -0
  59. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/utils/__init__.py +0 -0
  60. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/utils/formatting.py +0 -0
  61. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/utils/logging.py +0 -0
  62. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/utils/parsing.py +0 -0
  63. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/utils/serde.py +0 -0
  64. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/utils/workspace.py +0 -0
  65. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/ux/classification.py +0 -0
  66. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/ux/execute_namespace.py +0 -0
  67. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/ux/loop_stream.py +0 -0
  68. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/ux/stream_tool_wire.py +0 -0
  69. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/ux/task_namespace.py +0 -0
  70. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/ux/types.py +0 -0
  71. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/wire/__init__.py +0 -0
  72. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/wire/codec.py +0 -0
  73. {soothe_client_python-1.1.0 → soothe_client_python-1.2.0}/src/soothe_client/wire/protocol.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: soothe-client-python
3
- Version: 1.1.0
3
+ Version: 1.2.0
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
@@ -83,7 +83,7 @@ async def _perform_handshake(ws: Any, *, timeout: float) -> None:
83
83
  init = ConnectionInitEnvelope(
84
84
  params=ConnectionInitParams(
85
85
  client_version=_client_version,
86
- client_name="soothe-sdk",
86
+ client_name="soothe-client-python",
87
87
  accept_proto=["1"],
88
88
  capabilities=["streaming", "batch", "heartbeat"],
89
89
  )
@@ -0,0 +1,75 @@
1
+ """Client-side display-layer contract parsing.
2
+
3
+ This package hosts the wire-protocol parse side shared by the transport,
4
+ appkit, and any Python front end:
5
+
6
+ * ``transcript_types`` — ``MessageData`` / ``MessageType`` / ``ToolStatus``
7
+ dataclasses travelling on the wire.
8
+ * ``card_ledger`` — pure-Python ``CardMutation`` + ``InMemoryCardLedger``
9
+ primitives backing the ``soothe.card.*`` wire schema.
10
+ * ``card_wire`` — parse/apply helpers for live ``soothe.card.*`` frames.
11
+ * ``snapshot_types`` — goal display snapshot wire payload types.
12
+ * ``message_processing`` / ``tool_result`` / ``tool_message_format`` —
13
+ stream-to-text parse helpers.
14
+
15
+ (TUI-owned ``card_binder`` / ``text_extract`` / ``snapshot_collapser`` moved
16
+ to `soothe_cli.display` / the host `soothe.display` in 1.2.0.)
17
+ """
18
+
19
+ from __future__ import annotations
20
+
21
+ from soothe_client.display.card_ledger import (
22
+ CARD_SCHEMA_VERSION,
23
+ CardMutation,
24
+ CardOp,
25
+ InMemoryCardLedger,
26
+ align_cards_preserving_ids,
27
+ build_header_mutation,
28
+ card_from_wire_dict,
29
+ card_to_wire_dict,
30
+ cards_to_mutations,
31
+ diff_card_snapshots,
32
+ utc_now_iso,
33
+ )
34
+ from soothe_client.display.card_wire import (
35
+ CardProjection,
36
+ parse_card_custom_payload,
37
+ )
38
+ from soothe_client.display.snapshot_types import (
39
+ GOAL_DISPLAY_SNAPSHOT_SCHEMA_VERSION,
40
+ GoalDisplaySnapshot,
41
+ snapshot_from_dataclass_dict,
42
+ )
43
+ from soothe_client.display.transcript_types import (
44
+ UPDATABLE_FIELDS,
45
+ MessageData,
46
+ MessageType,
47
+ ToolStatus,
48
+ )
49
+
50
+ __all__ = [
51
+ # Types
52
+ "MessageData",
53
+ "MessageType",
54
+ "ToolStatus",
55
+ "UPDATABLE_FIELDS",
56
+ # Ledger
57
+ "CARD_SCHEMA_VERSION",
58
+ "CardMutation",
59
+ "CardOp",
60
+ "InMemoryCardLedger",
61
+ "build_header_mutation",
62
+ "card_from_wire_dict",
63
+ "card_to_wire_dict",
64
+ "cards_to_mutations",
65
+ "diff_card_snapshots",
66
+ "align_cards_preserving_ids",
67
+ "utc_now_iso",
68
+ # Card wire
69
+ "CardProjection",
70
+ "parse_card_custom_payload",
71
+ # Goal display snapshots
72
+ "GOAL_DISPLAY_SNAPSHOT_SCHEMA_VERSION",
73
+ "GoalDisplaySnapshot",
74
+ "snapshot_from_dataclass_dict",
75
+ ]
@@ -0,0 +1,20 @@
1
+ """Client-side UX event processing helpers.
2
+
3
+ Classification, loop-tagged assistant output phases, task/execute namespaces,
4
+ and stream tool wire constants. (TUI-owned subagent render helpers moved to
5
+ `soothe_cli.ux` in 1.2.0.)
6
+ """
7
+
8
+ from soothe_client.ux.classification import classify_event_to_tier
9
+ from soothe_client.ux.loop_stream import LOOP_ASSISTANT_OUTPUT_PHASES, assistant_output_phase
10
+ from soothe_client.ux.types import ESSENTIAL_EVENT_TYPES
11
+
12
+ __all__ = [
13
+ # Loop assistant output (``mode="messages"`` + ``phase``)
14
+ "LOOP_ASSISTANT_OUTPUT_PHASES",
15
+ "assistant_output_phase",
16
+ # Classification
17
+ "classify_event_to_tier",
18
+ # Essential types
19
+ "ESSENTIAL_EVENT_TYPES",
20
+ ]
@@ -1320,7 +1320,7 @@ class WebSocketClient:
1320
1320
  envelope = ConnectionInitEnvelope(
1321
1321
  params=ConnectionInitParams(
1322
1322
  client_version=client_version,
1323
- client_name="soothe-sdk",
1323
+ client_name="soothe-client-python",
1324
1324
  accept_proto=["1"],
1325
1325
  capabilities=["streaming", "batch", "heartbeat"],
1326
1326
  )
@@ -1,120 +0,0 @@
1
- """Display-layer SDK package.
2
-
3
- This package hosts:
4
-
5
- * ``transcript_types`` — ``MessageData`` / ``MessageType`` / ``ToolStatus``
6
- dataclasses shared between TUI rendering and the host-resident
7
- ``CardBinder``.
8
- * ``card_binder`` — pure event → ``MessageData`` binding logic, callable
9
- from either the TUI or the host.
10
- * ``card_ledger`` — pure-Python ``CardMutation`` + ``InMemoryCardLedger``
11
- primitives backing the display card store and the ``soothe.card.*`` wire schema.
12
- * ``card_wire`` — parse/apply helpers for live ``soothe.card.*`` frames.
13
- * Tool-display helpers (``text_extract``, ``message_processing``,
14
- ``tool_message_format``, ``tool_result``) that the binder depends on,
15
- kept here so the binder has no client-side dependencies.
16
- """
17
-
18
- from __future__ import annotations
19
-
20
- from soothe_client.display.card_binder import (
21
- collect_cognition_card_replay,
22
- conversation_rows_to_langchain_messages,
23
- convert_combined_to_data,
24
- convert_event_to_message_data,
25
- convert_loop_events_to_data,
26
- convert_messages_to_data,
27
- is_loop_internal_checkpoint_message,
28
- merge_history_sources,
29
- merge_step_progress,
30
- merge_visible_messages_with_cognition_cards,
31
- parse_loop_event_timestamp,
32
- sanitize_resume_display_cards,
33
- )
34
- from soothe_client.display.card_ledger import (
35
- CARD_SCHEMA_VERSION,
36
- CardMutation,
37
- CardOp,
38
- InMemoryCardLedger,
39
- align_cards_preserving_ids,
40
- build_header_mutation,
41
- card_from_wire_dict,
42
- card_to_wire_dict,
43
- cards_to_mutations,
44
- diff_card_snapshots,
45
- utc_now_iso,
46
- )
47
- from soothe_client.display.card_wire import (
48
- CardProjection,
49
- parse_card_custom_payload,
50
- )
51
- from soothe_client.display.snapshot_collapser import (
52
- build_goal_snapshot,
53
- fold_display_cards,
54
- split_cards_by_user_segments,
55
- )
56
- from soothe_client.display.snapshot_types import (
57
- GOAL_DISPLAY_SNAPSHOT_SCHEMA_VERSION,
58
- GoalDisplaySnapshot,
59
- snapshot_from_dataclass_dict,
60
- )
61
- from soothe_client.display.text_extract import (
62
- extract_ai_text_for_display,
63
- extract_text_from_ai_message,
64
- extract_user_text_for_display,
65
- normalize_stream_message,
66
- )
67
- from soothe_client.display.transcript_types import (
68
- UPDATABLE_FIELDS,
69
- MessageData,
70
- MessageType,
71
- ToolStatus,
72
- )
73
-
74
- __all__ = [
75
- # Types
76
- "MessageData",
77
- "MessageType",
78
- "ToolStatus",
79
- "UPDATABLE_FIELDS",
80
- # Text extract
81
- "extract_ai_text_for_display",
82
- "extract_text_from_ai_message",
83
- "extract_user_text_for_display",
84
- "normalize_stream_message",
85
- # Binder
86
- "collect_cognition_card_replay",
87
- "convert_combined_to_data",
88
- "convert_event_to_message_data",
89
- "convert_loop_events_to_data",
90
- "convert_messages_to_data",
91
- "conversation_rows_to_langchain_messages",
92
- "is_loop_internal_checkpoint_message",
93
- "merge_history_sources",
94
- "merge_step_progress",
95
- "merge_visible_messages_with_cognition_cards",
96
- "parse_loop_event_timestamp",
97
- "sanitize_resume_display_cards",
98
- # Ledger
99
- "CARD_SCHEMA_VERSION",
100
- "CardMutation",
101
- "CardOp",
102
- "InMemoryCardLedger",
103
- "build_header_mutation",
104
- "card_from_wire_dict",
105
- "card_to_wire_dict",
106
- "cards_to_mutations",
107
- "diff_card_snapshots",
108
- "align_cards_preserving_ids",
109
- "utc_now_iso",
110
- # Card wire
111
- "CardProjection",
112
- "parse_card_custom_payload",
113
- # Goal display snapshots
114
- "GOAL_DISPLAY_SNAPSHOT_SCHEMA_VERSION",
115
- "GoalDisplaySnapshot",
116
- "build_goal_snapshot",
117
- "fold_display_cards",
118
- "snapshot_from_dataclass_dict",
119
- "split_cards_by_user_segments",
120
- ]