024278a3d2
- Add proposal, design, specs, and tasks for git connection model - Include provider adapter, credential storage, SSH key lifecycle specs - Add repository connection API and git operations specifications
2.0 KiB
2.0 KiB
Why
The platform needs a provider-independent Git connection model so users can connect repositories from GitHub, GitLab, Gitea, or Forgejo without vendor lock-in. Currently, the Git abstraction layer exists but lacks concrete provider adapters, credential storage, and API endpoints for managing connections. This is the foundation for repository cloning, branch management, and automated deploy key registration.
What Changes
- Provider adapter framework: Concrete implementations for GitHub and GitLab APIs with unified interface
- Credential storage backend: Database-backed storage for access tokens and SSH keys with encryption
- Repository connection API: REST endpoints for creating, listing, and deleting repository connections
- SSH key lifecycle: Ed25519 key generation, public key retrieval, and deploy key registration
- Git operations: Complete LocalGitOperations with credential-aware clone, fetch, and push
- Frontend repository UI: Interface for connecting repositories and managing SSH keys
Capabilities
New Capabilities
git-provider-adapter: Unified interface for Git provider APIs (GitHub, GitLab)credential-storage: Encrypted storage for access tokens and SSH keysrepository-connection: API for managing repository connectionsssh-key-lifecycle: SSH key generation and deploy key managementgit-operations: Credential-aware Git operations (clone, fetch, push)
Modified Capabilities
- None (extends existing Git abstraction)
Impact
- apps/api/app/git/: New provider adapters and completed operations
- apps/api/app/routers/repository_connections.py: New router
- apps/api/app/models/repository_connection.py: Enhanced model
- apps/api/app/schemas/repository_connection.py: New schemas
- apps/web/src/pages/RepositoriesPage.tsx: Enhanced UI
- apps/web/src/pages/RepositoryConnectionPage.tsx: New page
Dependencies
- FN-003: Tool Registry (manifest system)
- FN-004: Backend Foundation (models, auth)
- FN-009: Config & Secrets (encryption, credential storage)