WorkspaceService: resolves workspace paths (user/team), git init/clone, directory lifecycle (create/delete/exists), user and team root provisioning; reads MOSAIC_ROOT env var (defaults to /opt/mosaic)
ProjectBootstrapService: single call orchestrating Brain project DB record creation + workspace directory init, with optional repoUrl for clone-based bootstrap
TeamsService: isMember, canAccessProject, findAll, findById, listMembers via Drizzle queries against teams/teamMembers/projects tables
WorkspaceController: POST /api/workspaces — auth-guarded endpoint that calls ProjectBootstrapService.bootstrap()
TeamsController: GET /api/teams, /:teamId, /:teamId/members, /:teamId/members/:userId
WorkspaceModule wired into AppModule
workspace.service.spec.ts: 5 unit tests for resolvePath (user, team, fallback, MOSAIC_ROOT env, default)
- WorkspaceService: path resolution, git init/clone, directory lifecycle (create/delete/exists), user and team root provisioning
- ProjectBootstrapService: orchestrates DB record creation (via Brain) + workspace directory init in a single call
- TeamsService: isMember, canAccessProject, findAll, findById, listMembers via Drizzle DB queries
- WorkspaceController: POST /api/workspaces — auth-guarded project bootstrap endpoint
- TeamsController: GET /api/teams, /:teamId, /:teamId/members, /:teamId/members/:userId
- WorkspaceModule wired into AppModule
- workspace.service.spec.ts: 5 unit tests for resolvePath (user, team, fallback, env var, default)
Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
MOSAIC_ROOTenv var (defaults to/opt/mosaic)repoUrlfor clone-based bootstrapisMember,canAccessProject,findAll,findById,listMembersvia Drizzle queries againstteams/teamMembers/projectstablesPOST /api/workspaces— auth-guarded endpoint that callsProjectBootstrapService.bootstrap()GET /api/teams,/:teamId,/:teamId/members,/:teamId/members/:userIdAppModuleworkspace.service.spec.ts: 5 unit tests forresolvePath(user, team, fallback, MOSAIC_ROOT env, default)Closes #168
Test plan
workspace.service.spec.ts— 5 new tests for path resolution logic