62 lines
2.0 KiB
Markdown
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.
|