virtuai-cli 0.5.2__tar.gz → 0.5.3__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.5.2 → virtuai_cli-0.5.3}/PKG-INFO +1 -1
- {virtuai_cli-0.5.2 → virtuai_cli-0.5.3}/pyproject.toml +1 -1
- {virtuai_cli-0.5.2 → virtuai_cli-0.5.3}/src/virtuai_cli/__init__.py +1 -1
- {virtuai_cli-0.5.2 → virtuai_cli-0.5.3}/src/virtuai_cli/chat/ask.py +2 -0
- {virtuai_cli-0.5.2 → virtuai_cli-0.5.3}/src/virtuai_cli/chat/sse.py +14 -2
- {virtuai_cli-0.5.2 → virtuai_cli-0.5.3}/src/virtuai_cli/chat/tui.py +4 -0
- {virtuai_cli-0.5.2 → virtuai_cli-0.5.3}/src/virtuai_cli.egg-info/PKG-INFO +1 -1
- {virtuai_cli-0.5.2 → virtuai_cli-0.5.3}/README.md +0 -0
- {virtuai_cli-0.5.2 → virtuai_cli-0.5.3}/setup.cfg +0 -0
- {virtuai_cli-0.5.2 → virtuai_cli-0.5.3}/src/virtuai_cli/chat/__init__.py +0 -0
- {virtuai_cli-0.5.2 → virtuai_cli-0.5.3}/src/virtuai_cli/chat/command.py +0 -0
- {virtuai_cli-0.5.2 → virtuai_cli-0.5.3}/src/virtuai_cli/chat/history.py +0 -0
- {virtuai_cli-0.5.2 → virtuai_cli-0.5.3}/src/virtuai_cli/chat/widgets.py +0 -0
- {virtuai_cli-0.5.2 → virtuai_cli-0.5.3}/src/virtuai_cli/config.py +0 -0
- {virtuai_cli-0.5.2 → virtuai_cli-0.5.3}/src/virtuai_cli/executor.py +0 -0
- {virtuai_cli-0.5.2 → virtuai_cli-0.5.3}/src/virtuai_cli/main.py +0 -0
- {virtuai_cli-0.5.2 → virtuai_cli-0.5.3}/src/virtuai_cli/runner.py +0 -0
- {virtuai_cli-0.5.2 → virtuai_cli-0.5.3}/src/virtuai_cli/security.py +0 -0
- {virtuai_cli-0.5.2 → virtuai_cli-0.5.3}/src/virtuai_cli.egg-info/SOURCES.txt +0 -0
- {virtuai_cli-0.5.2 → virtuai_cli-0.5.3}/src/virtuai_cli.egg-info/dependency_links.txt +0 -0
- {virtuai_cli-0.5.2 → virtuai_cli-0.5.3}/src/virtuai_cli.egg-info/entry_points.txt +0 -0
- {virtuai_cli-0.5.2 → virtuai_cli-0.5.3}/src/virtuai_cli.egg-info/requires.txt +0 -0
- {virtuai_cli-0.5.2 → virtuai_cli-0.5.3}/src/virtuai_cli.egg-info/top_level.txt +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"""VirtuAI local CLI."""
|
|
2
|
-
__version__ = "0.5.
|
|
2
|
+
__version__ = "0.5.3"
|
|
@@ -44,8 +44,20 @@ async def stream_chat(
|
|
|
44
44
|
async for sse in event_source.aiter_sse():
|
|
45
45
|
if not sse.data:
|
|
46
46
|
continue
|
|
47
|
+
# Classic-agent path emits `data: [DONE]` after the stream;
|
|
48
|
+
# treat that as a done event for symmetry with the deep path.
|
|
49
|
+
if sse.data.strip() == "[DONE]":
|
|
50
|
+
yield {"type": "done"}
|
|
51
|
+
continue
|
|
47
52
|
try:
|
|
48
|
-
|
|
53
|
+
parsed = json.loads(sse.data)
|
|
49
54
|
except json.JSONDecodeError:
|
|
50
|
-
# Server occasionally emits non-JSON keepalive lines; skip.
|
|
51
55
|
continue
|
|
56
|
+
if isinstance(parsed, dict):
|
|
57
|
+
yield parsed
|
|
58
|
+
elif isinstance(parsed, str):
|
|
59
|
+
# Classic agents stream tokens as bare JSON strings
|
|
60
|
+
# (`data: "hello "`). Wrap them so downstream handlers
|
|
61
|
+
# don't need to know about the legacy protocol.
|
|
62
|
+
yield {"type": "token", "content": parsed}
|
|
63
|
+
# Other shapes (lists, ints, null) are dropped silently.
|
|
@@ -462,6 +462,10 @@ class ChatApp(App):
|
|
|
462
462
|
pass
|
|
463
463
|
|
|
464
464
|
async def _handle_event(self, event: dict, turn: AssistantTurn) -> None:
|
|
465
|
+
# Defensive: a malformed server frame (string/list/None) used to crash
|
|
466
|
+
# the stream with "'str' object has no attribute 'get'".
|
|
467
|
+
if not isinstance(event, dict):
|
|
468
|
+
return
|
|
465
469
|
etype = event.get("type")
|
|
466
470
|
if etype == "start":
|
|
467
471
|
sid = event.get("session_id")
|
|
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
|