soothe-client-python 1.0.18__py3-none-any.whl → 1.0.20__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.
@@ -764,6 +764,24 @@ class DaemonSession:
764
764
  interaction_mode=interaction_mode,
765
765
  )
766
766
 
767
+ async def set_clarification_mode(self, mode: str) -> bool:
768
+ """Hot-swap the clarification mode on the running goal (RFC-622).
769
+
770
+ Sends ``loop_set_clarification_mode`` on the RPC socket. Returns
771
+ ``True`` when the swap landed on a live goal; ``False`` when no goal
772
+ is currently running (retry on the next turn).
773
+ """
774
+ if not self._loop_id:
775
+ return False
776
+ async with self._rpc_lock:
777
+ await self._ensure_rpc_connected()
778
+ result = await self._rpc_client.request(
779
+ "loop_set_clarification_mode",
780
+ {"loop_id": self._loop_id, "mode": mode},
781
+ timeout=5.0,
782
+ )
783
+ return bool(result.get("applied", False))
784
+
767
785
  async def _ensure_rpc_connected(self) -> None:
768
786
  if self._rpc_connected:
769
787
  return
@@ -13,8 +13,6 @@ __all__ = [
13
13
  # Loop RPC params
14
14
  "LoopGetParams",
15
15
  "LoopListParams",
16
- "LoopTreeParams",
17
- "LoopPruneParams",
18
16
  "LoopDeleteParams",
19
17
  "LoopNewParams",
20
18
  "LoopReattachParams",
@@ -120,28 +118,6 @@ class LoopListParams(ParamsBase):
120
118
  limit: int | None = Field(default=None, ge=1, description="Maximum results")
121
119
 
122
120
 
123
- class LoopTreeParams(ParamsBase):
124
- """Params for ``method=loop_tree``.
125
-
126
- Attributes:
127
- loop_id: Loop identifier (required).
128
- """
129
-
130
- loop_id: str = Field(..., min_length=1, description="Loop identifier")
131
-
132
-
133
- class LoopPruneParams(ParamsBase):
134
- """Params for ``method=loop_prune``.
135
-
136
- Attributes:
137
- loop_id: Loop identifier (required).
138
- keep_latest: Number of recent branches to keep (default 1).
139
- """
140
-
141
- loop_id: str = Field(..., min_length=1)
142
- keep_latest: int = Field(default=1, ge=1)
143
-
144
-
145
121
  class LoopDeleteParams(ParamsBase):
146
122
  """Params for ``method=loop_delete``.
147
123
 
@@ -1123,33 +1123,6 @@ class WebSocketClient:
1123
1123
  params["as_node"] = as_node
1124
1124
  return await self.request("loop_state_update", params, timeout=timeout)
1125
1125
 
1126
- async def loop_tree(
1127
- self,
1128
- loop_id: str,
1129
- *,
1130
- timeout: float = 15.0,
1131
- ) -> dict[str, Any]:
1132
- """Fetch the loop checkpoint tree (``loop_tree``)."""
1133
- return await self.request(
1134
- "loop_tree",
1135
- {"loop_id": loop_id},
1136
- timeout=timeout,
1137
- )
1138
-
1139
- async def loop_prune(
1140
- self,
1141
- loop_id: str,
1142
- *,
1143
- keep_latest: int = 1,
1144
- timeout: float = 15.0,
1145
- ) -> dict[str, Any]:
1146
- """Prune old checkpoints from a loop (``loop_prune``)."""
1147
- return await self.request(
1148
- "loop_prune",
1149
- {"loop_id": loop_id, "keep_latest": keep_latest},
1150
- timeout=timeout,
1151
- )
1152
-
1153
1126
  async def loop_delete(self, loop_id: str, *, timeout: float = 15.0) -> dict[str, Any]:
1154
1127
  """Delete a loop and its checkpoints (``loop_delete``)."""
1155
1128
  return await self.request(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: soothe-client-python
3
- Version: 1.0.18
3
+ Version: 1.0.20
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
@@ -3,20 +3,20 @@ soothe_client/command_client.py,sha256=I-gcOloPU7Jxg6s-gTq38eXWzmbvZaNGtglZCF6xP
3
3
  soothe_client/errors.py,sha256=gOWYqrZbWxBMhYgtICxl2Di3ndME13qKcXxz1bwPdoQ,1800
4
4
  soothe_client/helpers.py,sha256=HpjZpnhc8gux26-xs4TnXuNTDELWHtfUDad7CLheTfs,16393
5
5
  soothe_client/intent_hints.py,sha256=ulMlMYqmnU4JFN6GrbJ8P5pTPJh5FbTSjqFVjQB8qbY,536
6
- soothe_client/protocol_params.py,sha256=IgsE-A3zvSX92EpewQCFUjdh-MhOWPH5ZBn0AmyHMD4,18520
6
+ soothe_client/protocol_params.py,sha256=LS7-uMNi-SqW1U6ADbMwzn7wc4IHJBbziK20ZFlmZys,17946
7
7
  soothe_client/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
8
  soothe_client/schemas.py,sha256=FDhx2qwKOrJMqxjwFSDVi3SnYihFmZiNWD97ZktLmLc,1689
9
9
  soothe_client/session.py,sha256=Om7z3YHYweacyoJUtij_ADsU0p7tXvKFSBlgms1SA8s,7659
10
10
  soothe_client/stream_terminal.py,sha256=vr4YHpf0hCrpKol99YFbHrXF7HEs6SCcJi_6XSQQ4J8,4727
11
11
  soothe_client/turn_boundary.py,sha256=jtD0QGKB16G1a9lSAI6RXEZ8ezD6534ttxwzTFDHTyk,5569
12
- soothe_client/websocket.py,sha256=2Lt8y8flqF0wMvwyXecaONTNP-mIf1SKm9qHfnfGCMQ,68332
12
+ soothe_client/websocket.py,sha256=Vsa1_POHwcDIW7SR6P9kXLRhk6rl5-8Hr4Xnzz-dIws,67620
13
13
  soothe_client/appkit/__init__.py,sha256=10-D6fRMzcm4LNUuTwfKCdD78skfA0diibfzVO8QAfo,3176
14
14
  soothe_client/appkit/attachments.py,sha256=hD2FsXeR8TqO3hzIYT49DUedsv9r2yFEuIYDBNhUy9M,3574
15
15
  soothe_client/appkit/broadcaster.py,sha256=wcWQUOy7HjFgNaXDk1Ec71CGi7mZmb-zXZZbuOon9OY,3529
16
16
  soothe_client/appkit/card_projection.py,sha256=FMX_qpKpxx5HavcttUlBTqxEq2LnpKsQ8A6dTon9h-Y,257
17
17
  soothe_client/appkit/chunk_filter.py,sha256=UoC4kbS_65UNEJIjbyufqxGBLwvamwvQ26BqZ_gkDTg,3134
18
18
  soothe_client/appkit/classifier.py,sha256=0meCKR9CnTDg9rfkFwv-2rz6T-vWGntcXVGybx8NOv0,18727
19
- soothe_client/appkit/daemon_session.py,sha256=PbGFTMPeszguh0mwo7ji9nsx9vNjqqxSruOblZ0-Whs,43466
19
+ soothe_client/appkit/daemon_session.py,sha256=COH4VwHplZeSfjh6pvQ1q687UOKvou6hcquvo1b6Fe4,44210
20
20
  soothe_client/appkit/events.py,sha256=p7uZmSx_kYdiR7DQY84rvgyHE6RQ6Orbq2KT-WCNsiM,2290
21
21
  soothe_client/appkit/loop_session_store.py,sha256=mVjLH2DWZBWLtjPTiHhSSGtwwo3y7s07vk2bnbxkt80,2741
22
22
  soothe_client/appkit/managed_client.py,sha256=QZhXA-zbx2v8IJpU_YFyUcwHRmNEziEGR6euPSvadfY,7183
@@ -27,7 +27,7 @@ soothe_client/appkit/thinking_step.py,sha256=dB1L1ERPkisLh2y3KIgd4f6EmN8GmF5B0h6
27
27
  soothe_client/appkit/turn.py,sha256=gtQyz3gGw8nkg8tfzpGZzNgRmJ48vJnj2Ll95W_BX4w,12479
28
28
  soothe_client/appkit/turn_boundary.py,sha256=KjaAxrlyjBDSo-tVNwTPiJImitO5HaWx2kX5DgLgTmU,6746
29
29
  soothe_client/appkit/turn_runner.py,sha256=ckB51MA5cRxN7ITOoFsrN5J9SyvbgDuiy_MY9v-2qhw,21648
30
- soothe_client_python-1.0.18.dist-info/METADATA,sha256=xPglPZksMEEsUWeOoaKCjrcC71Cbfu5za57pPdyDHKo,2994
31
- soothe_client_python-1.0.18.dist-info/WHEEL,sha256=zOwg4jB6zX2kU910N-cMawjivD6tO8NEWvE12je1bVk,87
32
- soothe_client_python-1.0.18.dist-info/licenses/LICENSE,sha256=WbXjnHkSCPG_f4TfOdS_mGrbkQAYykAdfIqVDj9O-IY,1068
33
- soothe_client_python-1.0.18.dist-info/RECORD,,
30
+ soothe_client_python-1.0.20.dist-info/METADATA,sha256=hI5Y4KAcu85-wH2OFgOwit96sNxoBoOa1A8wocE_XjE,2994
31
+ soothe_client_python-1.0.20.dist-info/WHEEL,sha256=zOwg4jB6zX2kU910N-cMawjivD6tO8NEWvE12je1bVk,87
32
+ soothe_client_python-1.0.20.dist-info/licenses/LICENSE,sha256=WbXjnHkSCPG_f4TfOdS_mGrbkQAYykAdfIqVDj9O-IY,1068
33
+ soothe_client_python-1.0.20.dist-info/RECORD,,