Didactopus/docs/workspace-manager.md

2.0 KiB

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.