Files
alex 0127d283a6 docs: update refactoring spec with submodule architecture
Enforces max 5-10 files per directory using proper subpackages:
- api/tool/, api/config/, api/workspace/, api/user/, api/project/, api/system/
- services/docker/, services/instance/, services/config/, services/git/,
  services/build/, services/terminal/, services/shared/
- models/tool/, models/config/, models/user/, models/project/, models/system/
- schemas/tool/, schemas/config/, schemas/user/, schemas/project/, schemas/system/

Updated design.md module map and tasks.md with 9 phases.
2026-06-04 09:49:55 +02:00

8.9 KiB

Phase 0: Submodule Infrastructure (Create Directories + __init__.py Files)

  • 0.1 Create apps/api/src/schemas/tool/__init__.py
  • 0.2 Create apps/api/src/schemas/config/__init__.py
  • 0.3 Create apps/api/src/schemas/user/__init__.py
  • 0.4 Create apps/api/src/schemas/project/__init__.py
  • 0.5 Create apps/api/src/schemas/system/__init__.py
  • 0.6 Create apps/api/src/api/tool/__init__.py
  • 0.7 Create apps/api/src/api/config/__init__.py
  • 0.8 Create apps/api/src/api/workspace/__init__.py
  • 0.9 Create apps/api/src/api/user/__init__.py
  • 0.10 Create apps/api/src/api/project/__init__.py
  • 0.11 Create apps/api/src/api/system/__init__.py
  • 0.12 Create apps/api/src/services/instance/__init__.py
  • 0.13 Create apps/api/src/services/config/__init__.py
  • 0.14 Create apps/api/src/services/git/__init__.py
  • 0.15 Create apps/api/src/services/build/__init__.py
  • 0.16 Create apps/api/src/services/terminal/__init__.py
  • 0.17 Create apps/api/src/services/shared/__init__.py
  • 0.18 Create apps/api/src/models/tool/__init__.py
  • 0.19 Create apps/api/src/models/config/__init__.py
  • 0.20 Create apps/api/src/models/user/__init__.py
  • 0.21 Create apps/api/src/models/project/__init__.py
  • 0.22 Create apps/api/src/models/system/__init__.py

Phase 1: Model Subpackages

  • 1.1 Move models/tool_type.pymodels/tool/tool_type.py
  • 1.2 Move models/tool_instance.pymodels/tool/tool_instance.py
  • 1.3 Move models/tool_definition_manifest.pymodels/tool/tool_definition_manifest.py
  • 1.4 Move models/config_profile.pymodels/config/config_profile.py
  • 1.5 Move models/config_include.py (if exists) → models/config/config_include.py
  • 1.6 Move models/config_mount.py (if exists) → models/config/config_mount.py
  • 1.7 Move models/user.pymodels/user/user.py
  • 1.8 Move models/user_config.pymodels/user/user_config.py
  • 1.9 Move models/ssh_key.pymodels/user/ssh_key.py
  • 1.10 Move models/project.pymodels/project/project.py
  • 1.11 Move models/git_repository.pymodels/project/git_repository.py
  • 1.12 Move models/workspace.pymodels/project/workspace.py
  • 1.13 Move models/health_check.pymodels/system/health_check.py
  • 1.14 Move models/notification.pymodels/system/notification.py
  • 1.15 Move models/instance_event.pymodels/system/instance_event.py
  • 1.16 Move models/terminal_session.pymodels/system/terminal_session.py
  • 1.17 Update models/__init__.py to import from subpackages
  • 1.18 Update all backend imports to use models.tool.tool_type etc.
  • 1.19 Verify py_compile and ruff pass

Phase 2: Schema Extraction + Subpackages

  • 2.1 Extract schemas/tool/tool_type.py from api/tool_types.py
  • 2.2 Extract schemas/tool/tool_instance.py from api/tool_instances.py
  • 2.3 Extract schemas/config/config_profile.py from api/config_profiles.py
  • 2.4 Extract schemas/system/health.py from api/health.py
  • 2.5 Extract schemas/user/user.py from api/users.py
  • 2.6 Extract schemas/user/user_config.py from api/user_config.py
  • 2.7 Extract schemas/project/project.py from api/projects.py
  • 2.8 Extract schemas/project/ssh_key.py from api/ssh_keys.py
  • 2.9 Extract schemas/project/git_repository.py from api/git_repositories.py
  • 2.10 Update all API routers to import schemas from src.schemas.*
  • 2.11 Verify py_compile and ruff pass

Phase 3: Docker Service Package Split

  • 3.1 Create services/docker/__init__.py with re-exports
  • 3.2 Create services/docker/compose.py from services/docker.py
  • 3.3 Create services/docker/container.py from services/docker.py
  • 3.4 Create services/docker/config_staging.py from services/docker.py
  • 3.5 Create services/docker/tunnel.py from services/tunnel.py
  • 3.6 Remove services/docker.py after verifying imports
  • 3.7 Update services/tunnel.py or remove if subsumed
  • 3.8 Update all consumers to import from services.docker
  • 3.9 Verify py_compile and ruff pass

Phase 4: Service Subpackages

  • 4.1 Move services/lifecycle_hooks.pyservices/instance/lifecycle_hooks.py
  • 4.2 Move services/health_monitor.pyservices/instance/health_monitor.py
  • 4.3 Move services/event_bus.pyservices/instance/event_bus.py
  • 4.4 Move services/config_profile_resolver.pyservices/config/config_profile_resolver.py
  • 4.5 Move services/clone.pyservices/git/clone.py
  • 4.6 Move services/git_operations.pyservices/git/git_operations.py
  • 4.7 Move services/git_service.pyservices/git/git_service.py
  • 4.8 Move services/docker_build.pyservices/build/docker_build.py
  • 4.9 Move services/manifest_compiler.pyservices/build/manifest_compiler.py
  • 4.10 Move services/terminal_manager.pyservices/terminal/terminal_manager.py
  • 4.11 Move services/terminal_session.pyservices/terminal/terminal_session.py
  • 4.12 Move services/tunnel.pyservices/shared/tunnel.py
  • 4.13 Move services/notification_service.pyservices/shared/notification_service.py
  • 4.14 Move services/file_service.pyservices/shared/file_service.py
  • 4.15 Move services/permission_fixer.pyservices/shared/permission_fixer.py
  • 4.16 Move services/readiness_probe.pyservices/shared/readiness_probe.py
  • 4.17 Move services/ssh_keys.pyservices/shared/ssh_keys.py
  • 4.18 Move services/workspace_manager.pyservices/shared/workspace_manager.py
  • 4.19 Move services/correlation.pyservices/shared/correlation.py
  • 4.20 Extract services/instance/instance_lifecycle.py from api/tool_instances.py
  • 4.21 Extract services/config/config_profiles.py from api/config_profiles.py
  • 4.22 Update all imports across the backend
  • 4.23 Verify py_compile and ruff pass

Phase 5: API Router Subpackages

  • 5.1 Move api/tool_instances.pyapi/tool/tool_instances.py
  • 5.2 Move api/tool_types.pyapi/tool/tool_types.py
  • 5.3 Move api/tool_definitions.pyapi/tool/tool_definitions.py
  • 5.4 Move api/tool_types_validation.pyapi/tool/tool_types_validation.py
  • 5.5 Move sessions_router from api/tool_instances.pyapi/tool/sessions.py
  • 5.6 Move api/config_profiles.pyapi/config/config_profiles.py
  • 5.7 Move api/user_config.pyapi/config/user_config.py
  • 5.8 Move api/workspaces.pyapi/workspace/workspaces.py
  • 5.9 Move api/workspace_files.pyapi/workspace/workspace_files.py
  • 5.10 Move api/workspace_git.pyapi/workspace/workspace_git.py
  • 5.11 Move api/workspace_instances.pyapi/workspace/workspace_instances.py
  • 5.12 Move api/users.pyapi/user/users.py
  • 5.13 Move api/auth.pyapi/user/auth.py
  • 5.14 Move api/ssh_keys.pyapi/user/ssh_keys.py
  • 5.15 Move api/projects.pyapi/project/projects.py
  • 5.16 Move api/git_repositories.pyapi/project/git_repositories.py
  • 5.17 Move api/health.pyapi/system/health.py
  • 5.18 Move api/events.pyapi/system/events.py
  • 5.19 Move api/notifications.pyapi/system/notifications.py
  • 5.20 Move api/dashboard.pyapi/system/dashboard.py
  • 5.21 Move api/terminal.pyapi/system/terminal.py
  • 5.22 Move api/instance_proxy.pyapi/system/instance_proxy.py
  • 5.23 Update main.py to import from subpackages
  • 5.24 Update all cross-router imports
  • 5.25 Verify py_compile and ruff pass

Phase 6: Auth Dependency Refactor

  • 6.1 Add get_current_user to auth/dependencies.py
  • 6.2 Migrate api/user/users.py to use get_current_user
  • 6.3 Migrate api/tool/sessions.py to use get_current_user
  • 6.4 Migrate other routers incrementally
  • 6.5 Verify py_compile and ruff pass

Phase 7: Frontend Reorganization

  • 7.1 Rename API files to kebab-case
  • 7.2 Rename page files to *Page.tsx
  • 7.3 Move components into features/ directories
  • 7.4 Update router.tsx
  • 7.5 Verify npm run typecheck passes
  • 7.6 Verify npm run build passes

Phase 8: Integration and Verification

  • 8.1 Run backend tests: docker exec hq-api pytest
  • 8.2 Run backend lint: ruff check
  • 8.3 Run frontend typecheck: npm run typecheck
  • 8.4 Run frontend build: npm run build
  • 8.5 Run docker compose up --build and verify API starts
  • 8.6 Verify key user flows manually
  • 8.7 Verify no 404s or import errors in browser console

Phase 9: Documentation

  • 9.1 Update AGENTS.md with new module structure
  • 9.2 Document get_current_user vs get_current_user_id pattern