Added
- New
CommandManagermodule (aivm/commands.py) centralizing all subprocess execution with intent-based approval workflows, command plans, and role annotations (read vs modify). - VM configuration drift detection (
aivm/vm/drift.py) withDriftReportandDriftItemdataclasses covering hardware (CPU/RAM) and share-mapping mismatches. - Status command now reports whether the current working directory is shared with a VM and flags any detected VM configuration drift.
- Formal attachment model with
AttachmentMode(shared, shared-root, git),AttachmentAccess(rw, ro), andResolvedAttachmentdataclasses inaivm/vm/share.py. - Read-only share access mode for folder attachments.
- Directory share status display in
aivm statusoutput. - Grouped command approval: related commands are batched into plans with unified previews before execution.
- SSH bootstrap prompting improvements.
Changed
- All subprocess calls across lifecycle, firewall, host, and network modules now route through
CommandManagerinstead of the previous ad-hocrun_cmdutility. - Operations declare explicit intent contexts describing why they are happening, improving logs and approval prompts.
- Status and drift probes return tri-state outcomes (True/False/None) to gracefully handle permission or query errors.
- Firewall and network setup operations now show clear intent in command previews.
- Better error classification for apt lock conflicts, missing UEFI firmware, and memory allocation failures.
- Python target version updated from 3.8 to 3.11 in ruff configuration.
- Added mypy configuration section in
pyproject.toml. - Bumped project version metadata to
0.4.0.
What's Changed
Full Changelog: v0.3.0...refs/heads/release