Complete the 2.6.0 workspace milestone by adding explicit host-out export and immutable-baseline diff across the CLI, Python SDK, and MCP server. Capture a baseline archive at workspace creation, export live /workspace paths through the guest agent, and compute structured whole-workspace diffs on the host without affecting command logs or shell state. The docs, roadmap, bundled guest agent, and workspace example now reflect the new create -> sync -> diff -> export workflow. Validation: uv lock, UV_CACHE_DIR=.uv-cache make check, UV_CACHE_DIR=.uv-cache make dist-check, and a real guest-backed Firecracker smoke covering workspace create, sync push, diff, export, and delete.
1.3 KiB
1.3 KiB
2.6.0 Structured Export And Baseline Diff
Status: Done
Goal
Complete the next explicit host-crossing step by letting a workspace export files back to the host and diff itself against its immutable create-time baseline.
Public API Changes
- CLI:
pyro workspace export WORKSPACE_ID PATH --output HOST_PATHpyro workspace diff WORKSPACE_ID
- SDK:
export_workspacediff_workspace
- MCP:
workspace_exportworkspace_diff
Implementation Boundaries
- Capture a baseline snapshot at
workspace create. workspace diffcompares current/workspaceagainst that baseline.workspace exportexports files or directories only from paths under/workspace.- Keep output structured:
- unified patch text for text files
- summary entries for binary or type changes
Non-Goals
- no named snapshots yet
- no reset yet
- no export outside
/workspace
Acceptance Scenarios
- seed workspace, mutate files, diff against baseline, export a file to host
- sync push content after create, then confirm diff reports the synced changes
- unchanged workspace returns an empty diff summary cleanly
Required Repo Updates
- docs that distinguish seed, sync push, diff, and export
- example showing reproduce -> mutate -> diff -> export
- real Firecracker smoke for diff and export