Get or create a dev server process manager for a project (thread-safe). Args: project_name: Name of the project project_dir: Absolute path to the project directory Returns: DevServerProcessManager instance for the project
(project_name: str, project_dir: Path)
| 462 | |
| 463 | |
| 464 | def get_devserver_manager(project_name: str, project_dir: Path) -> DevServerProcessManager: |
| 465 | """ |
| 466 | Get or create a dev server process manager for a project (thread-safe). |
| 467 | |
| 468 | Args: |
| 469 | project_name: Name of the project |
| 470 | project_dir: Absolute path to the project directory |
| 471 | |
| 472 | Returns: |
| 473 | DevServerProcessManager instance for the project |
| 474 | """ |
| 475 | with _managers_lock: |
| 476 | # Use composite key to prevent cross-project UI contamination (#71) |
| 477 | key = (project_name, str(project_dir.resolve())) |
| 478 | if key not in _managers: |
| 479 | _managers[key] = DevServerProcessManager(project_name, project_dir) |
| 480 | return _managers[key] |
| 481 | |
| 482 | |
| 483 | async def cleanup_all_devservers() -> None: |
no test coverage detected