Workspace admins connect git remotes via settings UI; forge type is inferred from the URL, API tokens stay env-var references, and test connection fetches default branch for orchestrator/worker consumers. Co-authored-by: Cursor <cursoragent@cursor.com>
51 lines
1.6 KiB
Markdown
51 lines
1.6 KiB
Markdown
---
|
|
kind: epic
|
|
slug: connected-repos
|
|
title: Connected repos — paste remote URL, forge adapters
|
|
plan_slug: automation-foundation
|
|
status: done
|
|
priority: P1
|
|
tenant_id: global
|
|
cursor_epic_id: null
|
|
updated_at: "2026-07-03"
|
|
---
|
|
|
|
# Epic objective
|
|
|
|
Workspace admins connect git remotes (Forgejo, GitHub, GitLab, Bitbucket, future Origin) via **paste URL** UX. Store `repo_links` with `forge_type`, API base, and credentials reference. Provide a `ForgeAdapter` interface for clone metadata, open PR, and (later) webhooks.
|
|
|
|
See automation foundation discussion: Vercel/Coolify-style “show me your repo.”
|
|
|
|
## In scope / out of scope
|
|
|
|
**In scope**
|
|
|
|
- `connected_repos` (or `repo_links`) Drizzle table, workspace-scoped.
|
|
- tRPC CRUD + “test clone” (shallow fetch).
|
|
- Settings UI: connect / disconnect / list.
|
|
- Forge adapter trait + implementations: `forgejo`, `github` (minimum two).
|
|
|
|
**Out of scope**
|
|
|
|
- Webhook receivers (Epic 8).
|
|
- Orchestrator clone logic (Epic 6 consumes this table).
|
|
|
|
## Dependencies
|
|
|
|
- Workspace admin auth patterns (existing).
|
|
|
|
## Blocks
|
|
|
|
- Epic 6 (orchestrator), Epic 7 (worker).
|
|
|
|
## Acceptance criteria
|
|
|
|
- [x] Admin pastes Forgejo URL; Echodo stores link and detects `forge_type`.
|
|
- [x] Worker/orchestrator can read `git_remote_url` + default branch from API.
|
|
|
|
## Tasks
|
|
|
|
- [x] [Task-shared-forge-schemas](./Task-shared-forge-schemas.md)
|
|
- [x] [Task-db-connected-repos-migration](./Task-db-connected-repos-migration.md)
|
|
- [x] [Task-forge-adapters-trpc](./Task-forge-adapters-trpc.md)
|
|
- [x] [Task-settings-connected-repos-ui](./Task-settings-connected-repos-ui.md)
|