virtuai-cli 0.7.1__tar.gz → 0.7.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.
Files changed (23) hide show
  1. {virtuai_cli-0.7.1 → virtuai_cli-0.7.2}/PKG-INFO +1 -1
  2. {virtuai_cli-0.7.1 → virtuai_cli-0.7.2}/pyproject.toml +1 -1
  3. {virtuai_cli-0.7.1 → virtuai_cli-0.7.2}/src/virtuai_cli/__init__.py +1 -1
  4. {virtuai_cli-0.7.1 → virtuai_cli-0.7.2}/src/virtuai_cli/chat/tui.py +42 -6
  5. {virtuai_cli-0.7.1 → virtuai_cli-0.7.2}/src/virtuai_cli.egg-info/PKG-INFO +1 -1
  6. {virtuai_cli-0.7.1 → virtuai_cli-0.7.2}/README.md +0 -0
  7. {virtuai_cli-0.7.1 → virtuai_cli-0.7.2}/setup.cfg +0 -0
  8. {virtuai_cli-0.7.1 → virtuai_cli-0.7.2}/src/virtuai_cli/chat/__init__.py +0 -0
  9. {virtuai_cli-0.7.1 → virtuai_cli-0.7.2}/src/virtuai_cli/chat/ask.py +0 -0
  10. {virtuai_cli-0.7.1 → virtuai_cli-0.7.2}/src/virtuai_cli/chat/command.py +0 -0
  11. {virtuai_cli-0.7.1 → virtuai_cli-0.7.2}/src/virtuai_cli/chat/history.py +0 -0
  12. {virtuai_cli-0.7.1 → virtuai_cli-0.7.2}/src/virtuai_cli/chat/sse.py +0 -0
  13. {virtuai_cli-0.7.1 → virtuai_cli-0.7.2}/src/virtuai_cli/chat/widgets.py +0 -0
  14. {virtuai_cli-0.7.1 → virtuai_cli-0.7.2}/src/virtuai_cli/config.py +0 -0
  15. {virtuai_cli-0.7.1 → virtuai_cli-0.7.2}/src/virtuai_cli/executor.py +0 -0
  16. {virtuai_cli-0.7.1 → virtuai_cli-0.7.2}/src/virtuai_cli/main.py +0 -0
  17. {virtuai_cli-0.7.1 → virtuai_cli-0.7.2}/src/virtuai_cli/runner.py +0 -0
  18. {virtuai_cli-0.7.1 → virtuai_cli-0.7.2}/src/virtuai_cli/security.py +0 -0
  19. {virtuai_cli-0.7.1 → virtuai_cli-0.7.2}/src/virtuai_cli.egg-info/SOURCES.txt +0 -0
  20. {virtuai_cli-0.7.1 → virtuai_cli-0.7.2}/src/virtuai_cli.egg-info/dependency_links.txt +0 -0
  21. {virtuai_cli-0.7.1 → virtuai_cli-0.7.2}/src/virtuai_cli.egg-info/entry_points.txt +0 -0
  22. {virtuai_cli-0.7.1 → virtuai_cli-0.7.2}/src/virtuai_cli.egg-info/requires.txt +0 -0
  23. {virtuai_cli-0.7.1 → virtuai_cli-0.7.2}/src/virtuai_cli.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: virtuai-cli
3
- Version: 0.7.1
3
+ Version: 0.7.2
4
4
  Summary: Run VirtuAI deep agents on your local machine
5
5
  Author-email: uCloudStore <lmoreno@ucloudstore.com>
6
6
  License: Proprietary
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "virtuai-cli"
7
- version = "0.7.1"
7
+ version = "0.7.2"
8
8
  description = "Run VirtuAI deep agents on your local machine"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -1,2 +1,2 @@
1
1
  """VirtuAI local CLI."""
2
- __version__ = "0.7.1"
2
+ __version__ = "0.7.2"
@@ -379,17 +379,53 @@ class ChatApp(App):
379
379
  )
380
380
  await scroll.mount(Static(header))
381
381
 
382
+ loaded_session = self.session_id
382
383
  for msg in messages:
383
384
  mtype = (msg.get("message_type") or "").lower()
384
385
  content = msg.get("content") or ""
386
+ steps = msg.get("steps") or []
385
387
  if mtype in ("user", "human"):
386
388
  await scroll.mount(UserBubble(content))
387
- else:
388
- turn = AssistantTurn(show_thinking=False)
389
- await scroll.mount(turn)
390
- if content:
391
- await turn.append_token(content)
392
- await turn.mark_final()
389
+ continue
390
+
391
+ turn = AssistantTurn(show_thinking=False)
392
+ await scroll.mount(turn)
393
+
394
+ replayed_visible = False
395
+ if isinstance(steps, list) and steps:
396
+ # Replay the original event stream through the same handler
397
+ # the live stream uses, so tool cards, file diffs, todos,
398
+ # and subagent traces all re-render identically to when
399
+ # the turn first ran. Skip lifecycle events that mutate
400
+ # app state (session_id) or close the stream.
401
+ for step in steps:
402
+ if not isinstance(step, dict):
403
+ continue
404
+ etype = step.get("type")
405
+ if etype in ("start", "done", "complete"):
406
+ continue
407
+ try:
408
+ await self._handle_event(step, turn)
409
+ if etype in (
410
+ "token", "text_segment", "tool_start", "tool_end",
411
+ "todos", "subagent_start", "subagent_end",
412
+ "memory_updated", "skill_loaded",
413
+ ):
414
+ replayed_visible = True
415
+ except Exception:
416
+ # One bad step shouldn't break the whole replay.
417
+ continue
418
+
419
+ # Fall back to the persisted final text if there were no steps
420
+ # (older messages saved before steps tracking) or the steps
421
+ # rendered nothing visible.
422
+ if not replayed_visible and content:
423
+ await turn.append_token(content)
424
+ await turn.mark_final()
425
+
426
+ # Replay's `start` events were skipped, but in case anything else
427
+ # touched session_id, restore it to the conversation we loaded.
428
+ self.session_id = loaded_session
393
429
  scroll.scroll_end(animate=False)
394
430
  self._set_status(f"loaded {self.session_id}")
395
431
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: virtuai-cli
3
- Version: 0.7.1
3
+ Version: 0.7.2
4
4
  Summary: Run VirtuAI deep agents on your local machine
5
5
  Author-email: uCloudStore <lmoreno@ucloudstore.com>
6
6
  License: Proprietary
File without changes
File without changes