Didactopus/docs/workspace-manager.md

62 lines
2.0 KiB
Markdown

# Workspace Manager
The workspace manager organizes review work around draft packs.
## Why it exists
Without a workspace layer, users have to manually track:
- generated draft-pack directories
- which draft is currently active in review
- where review exports belong
- whether an import would overwrite existing work
The current code reduces that friction by giving review work a registry and import lifecycle.
For course-repository workflows, review export can also target a checked-out course repo's generated pack directory, so the reviewed pack lands back inside the course repository rather than in an unrelated ad hoc folder.
## Current implementation
`didactopus.workspace_manager.WorkspaceManager` currently supports:
- `create_workspace(...)`
- `list_workspaces()`
- `get_workspace(...)`
- `touch_recent(...)`
- `preview_import(...)`
- `import_draft_pack(...)`
The registry is stored as JSON and the default workspace root is configurable through `configs/config.example.yaml`.
## Import behavior
Draft-pack import currently:
- validates source-pack availability through preview logic
- reports whether overwrite will be required
- creates the target workspace if needed
- copies the source draft pack into `workspace/draft_pack/`
- updates registry metadata and recency ordering
If the target workspace already exists, import requires `allow_overwrite=True`.
## Bridge integration
The review bridge server exposes workspace operations through local HTTP endpoints, including:
- list workspaces
- create workspace
- open workspace
- import preview
- import draft pack
These endpoints are used to connect ingestion outputs to the review workflow without manual file shuffling.
## Course-repo targeting
If a course is managed as its own repository with `didactopus-course.yaml`, promoted-pack export can target that repository directly. The current review export layer exposes a helper for this pattern:
- `export_promoted_pack_to_course_repo(...)`
That helper resolves the repo manifest and writes the promoted pack into the repo's configured generated pack directory.