Implements weeks 1-4 of the multi-provider architecture: Week 1 - Foundation: - Add domain models (AgentProvider, AgentRequest, AgentEvent, AgentResult) - Define CodeAgent port interface with Execute, Cancel, Capabilities - Create thread-safe provider registry with first-registered default Week 2 - Claude Code Adapter: - Extract kubectl exec logic into CodeAgent implementation - Parse stream-json output format (init, message, tool_use, result) - Support session continuation via --resume flag Week 3 - OpenCode Adapter: - HTTP/SSE client for opencode serve API - Session management (create, send message, abort) - Event streaming with documented buffer rationale Week 4 - Quality & Polish: - Fix race condition in OpenCode Cancel method - Add AgentRequest.Validate() with ErrPromptRequired, ErrInvalidTimeout - Document DefaultAvailabilityTimeout constants - Add HTTP error context for debugging Also includes: - Work queue system with PostgreSQL adapter - Credential store for infrastructure secrets - Project templates with Woodpecker CI integration - Comprehensive test coverage Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1.4 KiB
1.4 KiB
Hexagonal Architecture
Last Updated: 2025-01 Confidence: High
Summary
rdev uses hexagonal architecture (ports and adapters) to separate business logic from infrastructure. Domain models have zero external dependencies, services use port interfaces, and adapters implement those interfaces.
Key Facts:
- Domain models in
internal/domain/have NO imports from other packages - Port interfaces defined in
internal/port/ - Adapters in
internal/adapter/{name}/implement port interfaces - Services in
internal/service/orchestrate business logic
File Pointers:
- Port definitions:
internal/port/project.go,internal/port/webhook.go - Domain models:
internal/domain/project.go,internal/domain/command.go - Service layer:
internal/service/project.go
Layer Responsibilities
| Layer | Location | Purpose |
|---|---|---|
| Handlers | internal/handlers/ |
HTTP request/response |
| Services | internal/service/ |
Business logic |
| Ports | internal/port/ |
Interface contracts |
| Domain | internal/domain/ |
Pure business models |
| Adapters | internal/adapter/ |
Infrastructure implementation |
Dependency Direction
Handlers → Services → Ports ← Adapters
↓
Domain
Dependencies point inward toward domain.