ae420708f2
- Extract ToolTypesTab, ToolConfigsTab, ConfigFoldersTab from inline page - Each tab is self-contained with own state, API calls, and forms - Slim page to 77 lines (tab switcher + composition only) - Add barrel export for tool-workshop feature components - Add tsconfig path alias for @/* imports Quality gates: tsc (pass), eslint (pass) Refs: repo-restructure Task 4.1
3.3 KiB
3.3 KiB
Task 3.5 Apply Report: Slim git_repositories and config_profiles Routers
Status: Success
Files Created (4)
apps/api/src/services/git/__init__.py— Package markerapps/api/src/services/git/repository.py— Repository lifecycle (create, delete, list, path helpers, clone/init)apps/api/src/services/git/control.py— Git control operations with repo validation (branch, commit, fetch, pull, push, merge, status)apps/api/src/services/git/files.py— Git file operations with repo validation (list files, get file, update file, list branches)
Files Modified (2)
-
apps/api/src/services/config_profiles.py— Expanded with:check_duplicate_name()— name uniqueness validationprofile_to_dict()— serialization helpercheck_duplicate_include()— include uniqueness validationinclude_to_dict()— serialization helpercheck_duplicate_mount_path()— mount path uniqueness validationmount_to_dict()— serialization helperget_or_create_user_config()— user config retrieval/creationvalidate_default_profiles()— validate profile ownership for defaultsget_default_profiles()/set_default_profiles()/get_default_profile_for_tool_type()— default profile managementlist_includes_for_profile()/list_mounts_for_profile()— list helpers
-
apps/api/src/api/git_repositories.py— Slimmed from ~1,050 to 276 lines- Removed all subprocess calls (clone, init, preflight)
- Removed all inline git utility calls with error handling
- Removed verbose docstrings from endpoints
- Router now contains only: imports, endpoint definitions, thin handlers delegating to services
-
apps/api/src/api/config_profiles.py— Slimmed from ~765 to 299 lines- Removed inline cycle detection logic (moved to service)
- Removed inline duplicate validation (moved to service)
- Removed inline response serialization (moved to service)
- Removed default profile management logic (moved to service)
- Removed include/mount list building logic (moved to service)
- Router now contains only: imports, endpoint definitions, thin handlers
Quality Gate Results
| Gate | Result |
|---|---|
python3 -m py_compile api/git_repositories.py |
✅ PASS |
python3 -m py_compile api/config_profiles.py |
✅ PASS |
python3 -m py_compile services/git/repository.py |
✅ PASS |
python3 -m py_compile services/git/control.py |
✅ PASS |
python3 -m py_compile services/git/files.py |
✅ PASS |
python3 -m py_compile services/config_profiles.py |
✅ PASS |
wc -l api/git_repositories.py |
✅ 276 lines (≤300) |
wc -l api/config_profiles.py |
✅ 299 lines (≤300) |
grep -n "subprocess" api/git_repositories.py |
✅ 0 results |
grep -n "subprocess" api/config_profiles.py |
✅ 0 results |
Blockers/Deviations
- None. Both routers successfully slimmed to under 300 lines.
Notes
- The history endpoints (get_repository_history, get_repository_commit) still do inline repo validation + git history calls because
services/git/history.pydoesn't exist yet and the existing utility functions inutils/git_history.pyare already thin wrappers. ProjectOverrideWithIdremains inapi/config_folders.pyas noted in Task 3.2 (Pydantic type invariance issue).