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.
- soothe_client/command_client.py +1 -1
- soothe_client/display/__init__.py +11 -56
- soothe_client/ux/__init__.py +4 -14
- soothe_client/websocket.py +1 -1
- {soothe_client_python-1.1.0.dist-info → soothe_client_python-1.2.0.dist-info}/METADATA +1 -1
- {soothe_client_python-1.1.0.dist-info → soothe_client_python-1.2.0.dist-info}/RECORD +8 -13
- soothe_client/display/card_binder.py +0 -787
- soothe_client/display/snapshot_collapser.py +0 -118
- soothe_client/display/text_extract.py +0 -127
- soothe_client/ux/subagent_progress.py +0 -171
- soothe_client/ux/subagent_wire_display.py +0 -121
- {soothe_client_python-1.1.0.dist-info → soothe_client_python-1.2.0.dist-info}/WHEEL +0 -0
- {soothe_client_python-1.1.0.dist-info → soothe_client_python-1.2.0.dist-info}/licenses/LICENSE +0 -0
soothe_client/command_client.py
CHANGED
|
@@ -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-
|
|
86
|
+
client_name="soothe-client-python",
|
|
87
87
|
accept_proto=["1"],
|
|
88
88
|
capabilities=["streaming", "batch", "heartbeat"],
|
|
89
89
|
)
|
|
@@ -1,36 +1,23 @@
|
|
|
1
|
-
"""
|
|
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
|
|
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
|
|
9
|
+
primitives backing the ``soothe.card.*`` wire schema.
|
|
12
10
|
* ``card_wire`` — parse/apply helpers for live ``soothe.card.*`` frames.
|
|
13
|
-
*
|
|
14
|
-
|
|
15
|
-
|
|
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
|
]
|
soothe_client/ux/__init__.py
CHANGED
|
@@ -1,17 +1,12 @@
|
|
|
1
|
-
"""
|
|
1
|
+
"""Client-side UX event processing helpers.
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
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
|
]
|
soothe_client/websocket.py
CHANGED
|
@@ -1320,7 +1320,7 @@ class WebSocketClient:
|
|
|
1320
1320
|
envelope = ConnectionInitEnvelope(
|
|
1321
1321
|
params=ConnectionInitParams(
|
|
1322
1322
|
client_version=client_version,
|
|
1323
|
-
client_name="soothe-
|
|
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.
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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.
|
|
68
|
-
soothe_client_python-1.
|
|
69
|
-
soothe_client_python-1.
|
|
70
|
-
soothe_client_python-1.
|
|
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,,
|