()
| 4236 | } |
| 4237 | |
| 4238 | async list(): Promise<FrontendWorkspaceMetadata[]> { |
| 4239 | try { |
| 4240 | const workspaces = await this.config.getAllWorkspaceMetadata(); |
| 4241 | return this.filterVisibleWorkspaceMetadata(workspaces).map((workspace) => |
| 4242 | this.enrichFrontendMetadata(workspace) |
| 4243 | ); |
| 4244 | } catch (error) { |
| 4245 | log.error("Failed to list workspaces:", error); |
| 4246 | return []; |
| 4247 | } |
| 4248 | } |
| 4249 | |
| 4250 | // Devcontainer Docker labels are keyed by the exact host worktree path from startup, so stop/status |
| 4251 | // APIs must prefer the persisted config path and only fall back to canonical reconstruction if the |
no test coverage detected