soothe-client-python 1.1.0__py3-none-any.whl → 1.2.0__py3-none-any.whl

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.
@@ -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
  )
@@ -1,36 +1,23 @@
1
- """Display-layer SDK package.
1
+ """Client-side display-layer contract parsing.
2
2
 
3
- This package hosts:
3
+ This package hosts the wire-protocol parse side shared by the transport,
4
+ appkit, and any Python front end:
4
5
 
5
6
  * ``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.
7
+ dataclasses travelling on the wire.
10
8
  * ``card_ledger`` — pure-Python ``CardMutation`` + ``InMemoryCardLedger``
11
- primitives backing the display card store and the ``soothe.card.*`` wire schema.
9
+ primitives backing the ``soothe.card.*`` wire schema.
12
10
  * ``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.
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.)
16
17
  """
17
18
 
18
19
  from __future__ import annotations
19
20
 
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
21
  from soothe_client.display.card_ledger import (
35
22
  CARD_SCHEMA_VERSION,
36
23
  CardMutation,
@@ -48,22 +35,11 @@ from soothe_client.display.card_wire import (
48
35
  CardProjection,
49
36
  parse_card_custom_payload,
50
37
  )
51
- from soothe_client.display.snapshot_collapser import (
52
- build_goal_snapshot,
53
- fold_display_cards,
54
- split_cards_by_user_segments,
55
- )
56
38
  from soothe_client.display.snapshot_types import (
57
39
  GOAL_DISPLAY_SNAPSHOT_SCHEMA_VERSION,
58
40
  GoalDisplaySnapshot,
59
41
  snapshot_from_dataclass_dict,
60
42
  )
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
43
  from soothe_client.display.transcript_types import (
68
44
  UPDATABLE_FIELDS,
69
45
  MessageData,
@@ -77,24 +53,6 @@ __all__ = [
77
53
  "MessageType",
78
54
  "ToolStatus",
79
55
  "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
56
  # Ledger
99
57
  "CARD_SCHEMA_VERSION",
100
58
  "CardMutation",
@@ -113,8 +71,5 @@ __all__ = [
113
71
  # Goal display snapshots
114
72
  "GOAL_DISPLAY_SNAPSHOT_SCHEMA_VERSION",
115
73
  "GoalDisplaySnapshot",
116
- "build_goal_snapshot",
117
- "fold_display_cards",
118
74
  "snapshot_from_dataclass_dict",
119
- "split_cards_by_user_segments",
120
75
  ]
@@ -1,17 +1,12 @@
1
- """Display and UX concerns for event processing.
1
+ """Client-side UX event processing helpers.
2
2
 
3
- This package provides UX types, event classification logic,
4
- loop-tagged assistant output helpers, and subagent helpers.
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.)
5
6
  """
6
7
 
7
8
  from soothe_client.ux.classification import classify_event_to_tier
8
9
  from soothe_client.ux.loop_stream import LOOP_ASSISTANT_OUTPUT_PHASES, assistant_output_phase
9
- from soothe_client.ux.subagent_progress import get_subagent_name_from_event
10
- from soothe_client.ux.subagent_wire_display import (
11
- SubagentWireRenderKind,
12
- classify_subagent_wire_render,
13
- subagent_wire_row_params,
14
- )
15
10
  from soothe_client.ux.types import ESSENTIAL_EVENT_TYPES
16
11
 
17
12
  __all__ = [
@@ -20,11 +15,6 @@ __all__ = [
20
15
  "assistant_output_phase",
21
16
  # Classification
22
17
  "classify_event_to_tier",
23
- # Subagent helpers
24
- "get_subagent_name_from_event",
25
- "SubagentWireRenderKind",
26
- "classify_subagent_wire_render",
27
- "subagent_wire_row_params",
28
18
  # Essential types
29
19
  "ESSENTIAL_EVENT_TYPES",
30
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,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
@@ -1,5 +1,5 @@
1
1
  soothe_client/__init__.py,sha256=7-e2Kvnu3RwwZHvU8YoySLT2hUaNhaQ8xxj_Bke-iFk,2396
2
- soothe_client/command_client.py,sha256=tjCv2Geawj0Wtb01debGHTXTkdK41i5ZpKposfT5gMQ,23607
2
+ soothe_client/command_client.py,sha256=NWx3YnNY24KyEFxIbGOucfAN-EIzRlT9IjfdElnLppg,23617
3
3
  soothe_client/errors.py,sha256=n3v9MmhUtIXKop182AMvzUSXg9Elu13muUXO_HRpPjQ,1804
4
4
  soothe_client/helpers.py,sha256=FI0AbGmJYea2L5LK3iyrOr8oo0_eMjCoByotszsKYtU,15585
5
5
  soothe_client/intent_hints.py,sha256=FNqakrX6vU65pX9K6S3HPIeFx1paddTQu1xwYTCVEPU,534
@@ -10,7 +10,7 @@ soothe_client/schemas.py,sha256=KPv3cQx-szlFzivaAOP5-95pOUZN0JyVXfYFd7QwtBc,1626
10
10
  soothe_client/session.py,sha256=8o9QB_4pgtqbvC0b9ukMHioErtho_dGQKj0FWrcWVfo,7317
11
11
  soothe_client/stream_terminal.py,sha256=F5hU0beD62aYghcPJrkVvgbwAsnbIPnImquOaCGtGTE,4714
12
12
  soothe_client/turn_boundary.py,sha256=7qkzLo38d3eBiQaFx8WWzQJxk2IiqNGhV0qCWLv70tM,5515
13
- soothe_client/websocket.py,sha256=R0IP0Jcm1yC6NI_Ke5dy_no-iTyvd7WYiToCAwMDiWM,62290
13
+ soothe_client/websocket.py,sha256=eKpy242d7leuJ0Efnj8VL8os8D9z-EQr_zxue5NXbuQ,62300
14
14
  soothe_client/appkit/__init__.py,sha256=NclC6HyJ6-ip9svqR3XMgoudpub-bGwpWg9St_8sl4M,2808
15
15
  soothe_client/appkit/attachments.py,sha256=_opRYDJuenK2P9O0AeCSzjTrfwozpzcOuPzr_mUnhnU,3558
16
16
  soothe_client/appkit/broadcaster.py,sha256=8Nj9f-P6bZ0YFe_DZ-itd6KAQV6RGVMcahUy3JHcSyo,3521
@@ -32,15 +32,12 @@ soothe_client/core/__init__.py,sha256=eZeDVva85hIsBgfIAjZKUoii5iQoGtD2uuLzmV43MM
32
32
  soothe_client/core/events.py,sha256=fDZkp7EP6QaZovie59rS0vkhLENE2qHSnPxiN78PsHg,5418
33
33
  soothe_client/core/subagent_wire.py,sha256=qeatGFdoWeex7tx9nT787_ZsbNURfCvxG7IMKgtpfl8,5086
34
34
  soothe_client/core/verbosity.py,sha256=QXD-aBCmusfZYP7eBMft4OjARMO_BTb_8i57H8osnF8,1216
35
- soothe_client/display/__init__.py,sha256=gRMwt4s5OU1dXAhulAoH-XpemPaLUSrO4ijt58zg2Uw,3572
35
+ soothe_client/display/__init__.py,sha256=NOFrRmHFBixWX0azcUTg5lW0oLFDM7wFNeY2iWnoZ_s,2116
36
36
  soothe_client/display/_text_utils.py,sha256=uP4YNEIRtOjhRB1hJugBQdGc3-IlrehMIdIo6KiDOco,522
37
- soothe_client/display/card_binder.py,sha256=5Q31B15SY-ieVHO-n8OvAJM1zOZHqZPqlRGwvTEb09o,31343
38
37
  soothe_client/display/card_ledger.py,sha256=7ereIA3Zb4vsfGy-qXcFajtNBOKFI1qB9A1v4ConnfY,16143
39
38
  soothe_client/display/card_wire.py,sha256=KTuVbaPu7JOOnj0Gg9JShKIduwcDg8Tua9CiKJxdTjo,4384
40
39
  soothe_client/display/message_processing.py,sha256=dPrWRkLC6O118yRQQa6LnjtTCGW3MJy43U1n1Hg-UvQ,19955
41
- soothe_client/display/snapshot_collapser.py,sha256=r7T_PFJigrDIBiHniVSaBEO-tdknW9OtEcAlfHpTCRg,3755
42
40
  soothe_client/display/snapshot_types.py,sha256=P5IuddSTGwyeT9FWis6bxF66DI69Ajl82lmwwG9AJYM,3418
43
- soothe_client/display/text_extract.py,sha256=REsUl-vv9X7D6i2oOq1wCMMrFsa0nhzaImrO2re453s,4397
44
41
  soothe_client/display/tool_message_format.py,sha256=9RQ2xQUIU-k9PdnIutZz_x_J7PmOs4MdZBWX0nj3jSA,4014
45
42
  soothe_client/display/tool_result.py,sha256=J5OEw2CTinglm_i7DfwVYv9OoyiHOqqmgkNwEhoi_KU,5204
46
43
  soothe_client/display/transcript_types.py,sha256=PZQ_g8OxdWVaMxRtMTKi77_57bTFxgdMtiTm7H6IEzw,8394
@@ -52,19 +49,17 @@ soothe_client/utils/logging.py,sha256=xyQ-qQVOtuAKB6MP_UEDlSheNOaJLRAGZkAGcs9uZb
52
49
  soothe_client/utils/parsing.py,sha256=Fxn6IbXl9CqsjqjRzt5gO1jfqWG8DnxTbogvf9jRSKA,2632
53
50
  soothe_client/utils/serde.py,sha256=faZOEszEMDnnxGWpsVnWI13Ei03ynlVNO26BYH_cDNI,2273
54
51
  soothe_client/utils/workspace.py,sha256=jUiaCTJG4kr9Le10JHog_C19UWzoP2IgTVvao7F6Wss,512
55
- soothe_client/ux/__init__.py,sha256=Zf2L4Sbqk2P5Q8Eq_y4Jie4Y9fVlgS1Mxu0g2cetMZQ,1020
52
+ soothe_client/ux/__init__.py,sha256=2P7icmdyj0an41xGJtuETg_FB8cwlqvk2GOEevExxi4,694
56
53
  soothe_client/ux/classification.py,sha256=XejA2aipfQaLt1cmPadwMc1WgaMn-Sb8WckyZkItNkI,2976
57
54
  soothe_client/ux/execute_namespace.py,sha256=iGOlb4K3--zRyDwIx26JoXYUqw7NprZSZEWsrdI31fI,3815
58
55
  soothe_client/ux/loop_stream.py,sha256=dP0365P5cbPaUqe4uLjknP9Ybx02kvx6yolMhyOd7m8,2965
59
56
  soothe_client/ux/stream_tool_wire.py,sha256=5RPjVofu_ewAV1vutqPQXFHQD0yQ_DWfuNueTzrzdpc,4151
60
- soothe_client/ux/subagent_progress.py,sha256=qrmJHiMm4jbXwseBSMXgHv8VcN5-7o1Zm4BMi0lrMi8,6178
61
- soothe_client/ux/subagent_wire_display.py,sha256=Dqf3elh9Fs6f4VDxjr9163g-XINZlpWJ34DdkqFj3WM,4226
62
57
  soothe_client/ux/task_namespace.py,sha256=g0xgYGtbIqthiqvIAsf2wLqTVrPBmN3pJDohQOtwJ8k,19274
63
58
  soothe_client/ux/types.py,sha256=eQ2uP-OLeZUbSfMey87EOEb7hPH5-Zt7L4crJxBlkoI,1455
64
59
  soothe_client/wire/__init__.py,sha256=DCY4vGjitESMG7XiUGOpEf1LAxm3xHDKg8lWd9RblNs,1950
65
60
  soothe_client/wire/codec.py,sha256=wGeouh7hcsyUGh6ZrzaRNIOu5r233RB5751Ea8dqQbc,27682
66
61
  soothe_client/wire/protocol.py,sha256=0uQ5uPbhHv6HPdtm0Uy8dGlK1ekn_0h_2MDgRR4lTlI,5223
67
- soothe_client_python-1.1.0.dist-info/METADATA,sha256=-cCqutyP_nKuFg6_MdEZ76Oet4W5G__WVC5QJ-Tlz_o,2997
68
- soothe_client_python-1.1.0.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
69
- soothe_client_python-1.1.0.dist-info/licenses/LICENSE,sha256=WbXjnHkSCPG_f4TfOdS_mGrbkQAYykAdfIqVDj9O-IY,1068
70
- soothe_client_python-1.1.0.dist-info/RECORD,,
62
+ soothe_client_python-1.2.0.dist-info/METADATA,sha256=VdftIXF4q-PkG2NWvZOw4r8ch-BiWhoQUVZpx6c_EnU,2997
63
+ soothe_client_python-1.2.0.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
64
+ soothe_client_python-1.2.0.dist-info/licenses/LICENSE,sha256=WbXjnHkSCPG_f4TfOdS_mGrbkQAYykAdfIqVDj9O-IY,1068
65
+ soothe_client_python-1.2.0.dist-info/RECORD,,