Submatter/plans/Plan-automation-foundation/Epic-connected-repos/Epic-connected-repos.md
Randall Stillwell 30c4e533e8 feat(automation): connected repos — paste remote URL and forge adapters (Epic 3)
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>
2026-07-07 14:45:40 -05:00

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)