-
-
Notifications
You must be signed in to change notification settings - Fork 1
Database Layer Upgrade & OpenCode Integration - background-agent-railway Zig PortΒ #502
Description
π― BIG MISSING FEATURES
Agent: Full implementation of Database Layer and OpenCode Sandbox integration
Repository: gHashTag/trinity
Status: Zig port exists but requires work for production-ready
β COMPLETED IMPLEMENTATIONS
| Component | Files | Status |
|---|---|---|
| PostgreSQL client | src/background_agent/db/client.zig |
β DONE |
| Sessions CRUD | src/background_agent/db/sessions.zig |
β DONE |
| HTTP Server | src/background_agent/server.zig |
β DONE |
| Railway Client | src/background_agent/railway/client.zig |
β DONE |
| Railway Farm | src/tri/railway_farm.zig |
β DONE |
| SSH Manager | src/tri/railway_ssh.zig |
β DONE |
| Circuit Breaker | src/tri/railway_circuit_breaker.zig |
β DONE |
β CRITICAL MISSING FEATURES
Priority 1: Database Layer (blocking issues)
Problems:
β οΈ Stub implementation:readAuthResponse()always returns successβ οΈ No TLS support (basic TCP without TLS)β οΈ Naive query builder:buildQueryMessage()without parameter bindingβ οΈ Missing database migrationsβ οΈ No SQL validation (string formatting is injection-prone)
Required Implementation:
- Full PostgreSQL wire protocol (Startup β Authentication β Query β DataRow β CommandComplete)
- Async I/O instead of blocking reads
- TLS support via std.crypto.tls for production
- Prepared statements with parameter binding
- Migration system with versioned schema
- Migration rollback mechanism
Priority 2: OpenCode Sandbox Integration (core missing)
Problems:
- β No OpenCode API client in Zig
- β No Dockerfile for sandbox execution
- β No container lifecycle management
- β No file system abstraction for sandbox
- β No health monitoring for containers
- β No code execution proxy
- β No session result retrieval
- β No sandbox logs streaming
Required Implementation:
-
src/background_agent/opencode/client.zig- HTTP client for OpenCode APIcreateSession(name, image)- create sandbox sessionexecuteCode(session_id, code)- execute code in sessiongetSession(session_id)- get session with logs/resultsgetSessionLogs(session_id)- stream execution logsdeleteSession(session_id)- terminate session
-
deploy/Dockerfile.sandbox- Multi-stage Dockerfile:FROM python:3.11-slim RUN pip install -y --no-cache-dir /root/.cache/pip COPY requirements.txt /app/ RUN pip install -r /app/ WORKDIR /app ENV OPENCODE_API_KEY=\${OPENCODE_API_KEY}
-
src/background_agent/container/manager.zig- Lifecycle management via Railway API:createContainer(name, env_id)- via Railway clientdeleteContainer(service_id)- via Railway client
-
Health monitoring for containers
-
Code execution service (proxy to OpenCode)
Priority 3: Auth & Security (blocking for production)
Problems:
β οΈ JWT implementation incomplete (src/background_agent/auth/jwt.zignot reviewed)β οΈ No password hashing (bcrypt/argon2)β οΈ No rate limiting on HTTP server
Required Implementation:
- Complete JWT with HS256 signing and proper claims
- Password hashing using bcrypt or argon2
- Rate limiting middleware (token bucket algorithm)
- API key management
Priority 4: Real-time Features (UX critical)
Missing:
- β WebSocket server for live updates
- β SSE endpoints for streaming
- β Live terminal in web UI
Required Implementation:
src/background_agent/websocket/server.zig- WebSocket for session updates- Session broadcasting to connected clients
- Web UI components for terminal view
Priority 5: Testing & CI/CD (quality gate)
Missing:
- β No E2E tests for OpenCode integration
- β No integration tests
- β No GitHub Actions workflow for background-agent deployment
Required Implementation:
tests/background_agent/opencode/directorytests/background_agent/integration/directory.github/workflows/background-agent-deploy.ymlworkflow
Priority 6: Monitoring & Observability (production readiness)
Missing:
- β No
/api/metricsendpoint - β No health checks for Railway services
- β No error tracking dashboard
- β No audit logging system
Required Implementation:
- Metrics collection endpoint
- Service health monitoring
- Error tracking with context
- Structured logging with rotation
π TECHNICAL PROGRESS
- Railway API Client: 100% (all operations)
- Railway Farm: 100% (multi-account scheduler)
- Circuit Breaker: 100% (production-grade rate limiting)
- Database Layer: 25% (stub implementation)
- OpenCode Integration: 0% (not started)
- Web UI: 0% (React components missing)
- Auth & Security: 10% (JWT structure exists)
- Real-time: 0% (WebSocket missing)
- Testing: 0% (no tests)
- CI/CD: 0% (no workflows)
- Monitoring: 0% (no metrics)
Overall Progress: ~25% complete (7/9 production-ready components)
π IMMEDIATE NEXT STEPS
-
Priority 1: Upgrade PostgreSQL client from stub to full protocol
- Implement
PostgresClient.connect()with full handshake - Add
PostgresClient.query()with prepared statements - Add async I/O for queries
- Create initial migration:
migrations/001_init_sessions.sql
- Implement
-
Priority 2: Start OpenCode integration
- Create
src/background_agent/opencode/client.zig - Implement createSession/executeCode/getSession APIs
- Create
deploy/Dockerfile.sandbox
- Create
-
Priority 3: Complete auth implementation
- Review and complete JWT implementation
- Add password hashing with argon2
- Implement rate limiting middleware
π§ FILES TO CREATE/EDIT
src/background_agent/db/client.zig
src/background_agent/db/sessions.zig
src/background_agent/auth/jwt.zig
src/background_agent/opencode/client.zig
deploy/Dockerfile.sandbox
src/background_agent/container/manager.zig
migrations/001_init_sessions.sql