soothe-client-python 1.0.14__tar.gz → 1.0.15__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.
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/PKG-INFO +1 -1
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/command_client.py +37 -4
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/.gitignore +0 -0
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/LICENSE +0 -0
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/README.md +0 -0
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/pyproject.toml +0 -0
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/__init__.py +0 -0
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/appkit/__init__.py +0 -0
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/appkit/attachments.py +0 -0
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/appkit/broadcaster.py +0 -0
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/appkit/card_projection.py +0 -0
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/appkit/chunk_filter.py +0 -0
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/appkit/classifier.py +0 -0
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/appkit/daemon_session.py +0 -0
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/appkit/events.py +0 -0
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/appkit/loop_session_store.py +0 -0
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/appkit/managed_client.py +0 -0
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/appkit/observability.py +0 -0
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/appkit/pool.py +0 -0
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/appkit/query_gate.py +0 -0
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/appkit/thinking_step.py +0 -0
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/appkit/turn.py +0 -0
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/appkit/turn_boundary.py +0 -0
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/appkit/turn_runner.py +0 -0
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/errors.py +0 -0
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/helpers.py +0 -0
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/intent_hints.py +0 -0
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/protocol_params.py +0 -0
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/py.typed +0 -0
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/schemas.py +0 -0
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/session.py +0 -0
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/stream_terminal.py +0 -0
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/turn_boundary.py +0 -0
- {soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/websocket.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: soothe-client-python
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.15
|
|
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
|
{soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/command_client.py
RENAMED
|
@@ -27,6 +27,12 @@ logger = logging.getLogger(__name__)
|
|
|
27
27
|
_TRANSITIONAL_DAEMON_READY_STATES = frozenset({"starting", "warming"})
|
|
28
28
|
_DAEMON_READY_POLL_INTERVAL_S = 0.05
|
|
29
29
|
|
|
30
|
+
# Align with soothe_daemon.config.models.WebSocketConfig.max_frame_size (default 10 MiB)
|
|
31
|
+
# and WebSocketClient._DEFAULT_MAX_FRAME_SIZE. The websockets library defaults
|
|
32
|
+
# max_size to 1 MiB, which closes the connection (1009) when the daemon replies
|
|
33
|
+
# with larger JSON payloads (e.g. autopilot goal forests) to command RPCs.
|
|
34
|
+
_DEFAULT_MAX_FRAME_SIZE = 10 * 1024 * 1024
|
|
35
|
+
|
|
30
36
|
try:
|
|
31
37
|
from soothe_sdk import __version__ as _client_version
|
|
32
38
|
except Exception: # pragma: no cover
|
|
@@ -151,11 +157,21 @@ class AsyncCommandClient:
|
|
|
151
157
|
Args:
|
|
152
158
|
ws_url: Daemon WebSocket URL (e.g. ``ws://127.0.0.1:8765``).
|
|
153
159
|
timeout: Per-command timeout in seconds.
|
|
160
|
+
max_frame_size: Maximum incoming WebSocket message size in bytes. Should be
|
|
161
|
+
at least the daemon's ``transport.websocket.max_frame_size`` when that
|
|
162
|
+
is customized; defaults to 10 MiB to match the daemon default.
|
|
154
163
|
"""
|
|
155
164
|
|
|
156
|
-
def __init__(
|
|
165
|
+
def __init__(
|
|
166
|
+
self,
|
|
167
|
+
ws_url: str,
|
|
168
|
+
*,
|
|
169
|
+
timeout: float = 30.0,
|
|
170
|
+
max_frame_size: int = _DEFAULT_MAX_FRAME_SIZE,
|
|
171
|
+
) -> None:
|
|
157
172
|
self._ws_url = ws_url.rstrip("/")
|
|
158
173
|
self._timeout = timeout
|
|
174
|
+
self._max_frame_size = max_frame_size
|
|
159
175
|
|
|
160
176
|
async def _send_command(
|
|
161
177
|
self,
|
|
@@ -197,7 +213,11 @@ class AsyncCommandClient:
|
|
|
197
213
|
)
|
|
198
214
|
|
|
199
215
|
try:
|
|
200
|
-
async with websockets.connect(
|
|
216
|
+
async with websockets.connect(
|
|
217
|
+
self._ws_url,
|
|
218
|
+
open_timeout=cmd_timeout,
|
|
219
|
+
max_size=self._max_frame_size,
|
|
220
|
+
) as ws:
|
|
201
221
|
await _perform_handshake(ws, timeout=cmd_timeout)
|
|
202
222
|
|
|
203
223
|
# Send the protocol-1 request envelope.
|
|
@@ -411,10 +431,23 @@ class CommandClient:
|
|
|
411
431
|
Args:
|
|
412
432
|
ws_url: Daemon WebSocket URL.
|
|
413
433
|
timeout: Per-command timeout in seconds.
|
|
434
|
+
max_frame_size: Maximum incoming WebSocket message size in bytes. Should be
|
|
435
|
+
at least the daemon's ``transport.websocket.max_frame_size`` when that
|
|
436
|
+
is customized; defaults to 10 MiB to match the daemon default.
|
|
414
437
|
"""
|
|
415
438
|
|
|
416
|
-
def __init__(
|
|
417
|
-
self
|
|
439
|
+
def __init__(
|
|
440
|
+
self,
|
|
441
|
+
ws_url: str,
|
|
442
|
+
*,
|
|
443
|
+
timeout: float = 30.0,
|
|
444
|
+
max_frame_size: int = _DEFAULT_MAX_FRAME_SIZE,
|
|
445
|
+
) -> None:
|
|
446
|
+
self._client = AsyncCommandClient(
|
|
447
|
+
ws_url,
|
|
448
|
+
timeout=timeout,
|
|
449
|
+
max_frame_size=max_frame_size,
|
|
450
|
+
)
|
|
418
451
|
|
|
419
452
|
def _run_async(self, coro: Any) -> Any:
|
|
420
453
|
"""Run an async coroutine from sync code."""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/appkit/__init__.py
RENAMED
|
File without changes
|
{soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/appkit/attachments.py
RENAMED
|
File without changes
|
{soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/appkit/broadcaster.py
RENAMED
|
File without changes
|
|
File without changes
|
{soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/appkit/chunk_filter.py
RENAMED
|
File without changes
|
{soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/appkit/classifier.py
RENAMED
|
File without changes
|
|
File without changes
|
{soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/appkit/events.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/appkit/pool.py
RENAMED
|
File without changes
|
{soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/appkit/query_gate.py
RENAMED
|
File without changes
|
|
File without changes
|
{soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/appkit/turn.py
RENAMED
|
File without changes
|
|
File without changes
|
{soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/appkit/turn_runner.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/intent_hints.py
RENAMED
|
File without changes
|
{soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/protocol_params.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/stream_terminal.py
RENAMED
|
File without changes
|
{soothe_client_python-1.0.14 → soothe_client_python-1.0.15}/src/soothe_client/turn_boundary.py
RENAMED
|
File without changes
|
|
File without changes
|