virtuai-cli 0.8.1__tar.gz → 0.8.2__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.
- {virtuai_cli-0.8.1 → virtuai_cli-0.8.2}/PKG-INFO +1 -1
- {virtuai_cli-0.8.1 → virtuai_cli-0.8.2}/pyproject.toml +1 -1
- {virtuai_cli-0.8.1 → virtuai_cli-0.8.2}/src/virtuai_cli/__init__.py +1 -1
- {virtuai_cli-0.8.1 → virtuai_cli-0.8.2}/src/virtuai_cli/runner.py +9 -1
- {virtuai_cli-0.8.1 → virtuai_cli-0.8.2}/src/virtuai_cli.egg-info/PKG-INFO +1 -1
- {virtuai_cli-0.8.1 → virtuai_cli-0.8.2}/README.md +0 -0
- {virtuai_cli-0.8.1 → virtuai_cli-0.8.2}/setup.cfg +0 -0
- {virtuai_cli-0.8.1 → virtuai_cli-0.8.2}/src/virtuai_cli/chat/__init__.py +0 -0
- {virtuai_cli-0.8.1 → virtuai_cli-0.8.2}/src/virtuai_cli/chat/ask.py +0 -0
- {virtuai_cli-0.8.1 → virtuai_cli-0.8.2}/src/virtuai_cli/chat/command.py +0 -0
- {virtuai_cli-0.8.1 → virtuai_cli-0.8.2}/src/virtuai_cli/chat/history.py +0 -0
- {virtuai_cli-0.8.1 → virtuai_cli-0.8.2}/src/virtuai_cli/chat/sse.py +0 -0
- {virtuai_cli-0.8.1 → virtuai_cli-0.8.2}/src/virtuai_cli/chat/tui.py +0 -0
- {virtuai_cli-0.8.1 → virtuai_cli-0.8.2}/src/virtuai_cli/chat/widgets.py +0 -0
- {virtuai_cli-0.8.1 → virtuai_cli-0.8.2}/src/virtuai_cli/config.py +0 -0
- {virtuai_cli-0.8.1 → virtuai_cli-0.8.2}/src/virtuai_cli/executor.py +0 -0
- {virtuai_cli-0.8.1 → virtuai_cli-0.8.2}/src/virtuai_cli/main.py +0 -0
- {virtuai_cli-0.8.1 → virtuai_cli-0.8.2}/src/virtuai_cli/security.py +0 -0
- {virtuai_cli-0.8.1 → virtuai_cli-0.8.2}/src/virtuai_cli.egg-info/SOURCES.txt +0 -0
- {virtuai_cli-0.8.1 → virtuai_cli-0.8.2}/src/virtuai_cli.egg-info/dependency_links.txt +0 -0
- {virtuai_cli-0.8.1 → virtuai_cli-0.8.2}/src/virtuai_cli.egg-info/entry_points.txt +0 -0
- {virtuai_cli-0.8.1 → virtuai_cli-0.8.2}/src/virtuai_cli.egg-info/requires.txt +0 -0
- {virtuai_cli-0.8.1 → virtuai_cli-0.8.2}/src/virtuai_cli.egg-info/top_level.txt +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"""VirtuAI local CLI."""
|
|
2
|
-
__version__ = "0.8.
|
|
2
|
+
__version__ = "0.8.2"
|
|
@@ -40,6 +40,7 @@ def _audit(workdir: Path, command: str, exit_code: int, elapsed: float) -> None:
|
|
|
40
40
|
pass
|
|
41
41
|
|
|
42
42
|
_RECONNECT_DELAYS = [1, 2, 4, 8, 16, 30] # backoff steps
|
|
43
|
+
_RECV_TIMEOUT = 60.0 # seconds of silence before declaring the connection stale
|
|
43
44
|
|
|
44
45
|
|
|
45
46
|
def _default_on_status(level: str, msg: str) -> None:
|
|
@@ -139,7 +140,14 @@ async def run_session(
|
|
|
139
140
|
# JSON pings every 20 s to keep the connection alive (cli_api/router.py).
|
|
140
141
|
ssl_ctx = _ssl_context() if ws_url.startswith("wss://") else None
|
|
141
142
|
async with websockets.connect(url, ping_interval=None, ssl=ssl_ctx) as ws:
|
|
142
|
-
|
|
143
|
+
while True:
|
|
144
|
+
try:
|
|
145
|
+
raw = await asyncio.wait_for(ws.recv(), timeout=_RECV_TIMEOUT)
|
|
146
|
+
except asyncio.TimeoutError:
|
|
147
|
+
# No frame received within the timeout window — the server
|
|
148
|
+
# sends a JSON ping every ~20 s, so 60 s of silence means the
|
|
149
|
+
# TCP connection is stale without a clean close.
|
|
150
|
+
raise ConnectionError("No data received for 60 s — stale connection")
|
|
143
151
|
try:
|
|
144
152
|
frame = json.loads(raw)
|
|
145
153
|
await _handle_frame(frame, workdir, ws, on_status)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|