docs(openspec): add FN-007 Git Connection Model change
- 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
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
## 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 keys
|
||||
- `repository-connection`: API for managing repository connections
|
||||
- `ssh-key-lifecycle`: SSH key generation and deploy key management
|
||||
- `git-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)
|
||||
Reference in New Issue
Block a user