125 lines
3.8 KiB
Markdown
125 lines
3.8 KiB
Markdown
# Package: dirigent_acp_api
|
|
|
|
ACP Server implementation for accepting incoming ACP connections from external agents.
|
|
|
|
## Quick Facts
|
|
- **Type**: Library
|
|
- **Main Entry**: src/lib.rs
|
|
- **Dependencies**: axum, tokio, serde, tracing, uuid, async-trait, dirigent_protocol
|
|
- **Status**: Core structure complete, integration with CoreRuntime pending
|
|
|
|
## Overview
|
|
|
|
The `dirigent_acp_api` package implements an ACP (Agent-Client Protocol) server that allows Dirigent to accept incoming connections from external ACP clients like Claude Code or custom agents. This enables session sharing, remote orchestration, and multi-client collaboration.
|
|
|
|
## Architecture
|
|
|
|
### Core Components
|
|
|
|
- **config.rs** - Server configuration types (`AcpServerConfig`)
|
|
- **error.rs** - Error types (`AcpServerError`, `JsonRpcErrorObject`)
|
|
- **jsonrpc.rs** - JSON-RPC 2.0 types and parsing
|
|
- **rpc.rs** - RPC handler and method dispatch
|
|
- **session_manager.rs** - Session/client tracking (TODO)
|
|
- **sse.rs** - SSE notification system (TODO)
|
|
- **event_bridge.rs** - Event translation (TODO)
|
|
|
|
### Key Types
|
|
|
|
```rust
|
|
pub struct AcpServerConfig {
|
|
pub enabled: bool, // Enable/disable server
|
|
pub port: u16, // Listen port (default: 3001)
|
|
pub allowed_origins: Option<Vec<String>>, // CORS origins
|
|
pub max_connections: usize, // Connection limit (default: 100)
|
|
}
|
|
```
|
|
|
|
### ConnectorOperations Trait
|
|
|
|
The RPC handler uses a trait abstraction to avoid circular dependencies with dirigent_core:
|
|
|
|
```rust
|
|
#[async_trait]
|
|
pub trait ConnectorOperations: Send + Sync {
|
|
async fn create_session(&self, connector_id: &str) -> Result<String>;
|
|
async fn load_session(&self, connector_id: &str, session_id: &str) -> Result<Session>;
|
|
async fn send_prompt(&self, connector_id: &str, session_id: &str, prompt: &str) -> Result<String>;
|
|
// ... more methods
|
|
}
|
|
```
|
|
|
|
## API Endpoints
|
|
|
|
### POST `/rpc`
|
|
|
|
JSON-RPC 2.0 endpoint supporting:
|
|
- `initialize` - Client handshake
|
|
- `session/new` - Create session
|
|
- `session/load` - Load existing session
|
|
- `session/prompt` - Send prompt
|
|
- `session/cancel` - Cancel generation
|
|
- `session/close` - Close session
|
|
|
|
### GET `/events`
|
|
|
|
Server-Sent Events for streaming notifications:
|
|
- `acp/messageChunk` - Streaming content
|
|
- `acp/messageComplete` - Generation complete
|
|
- `acp/sessionIdle` - Ready for input
|
|
|
|
### GET `/health`
|
|
|
|
Health check endpoint.
|
|
|
|
## Configuration UI
|
|
|
|
The ACP Server is configured via the web UI at **Configuration > ACP Server**:
|
|
|
|
- Enable/disable toggle
|
|
- Port configuration
|
|
- Max connections limit
|
|
- Allowed origins (CORS)
|
|
- Default connector selection
|
|
- Connected clients management
|
|
|
|
Server functions in `crates/api/src/acp_server.rs` bridge the UI and this package.
|
|
|
|
## Implementation Status
|
|
|
|
**Completed:**
|
|
- Configuration types (`AcpServerConfig`)
|
|
- Error types (`AcpServerError`)
|
|
- JSON-RPC types and parsing
|
|
- RPC handler structure with ConnectorOperations trait
|
|
|
|
**Pending:**
|
|
- Session Manager implementation
|
|
- SSE Notifier implementation
|
|
- Event Bridge implementation
|
|
- Axum router integration
|
|
- Web server integration
|
|
|
|
## Key Files
|
|
|
|
| File | Description |
|
|
|------|-------------|
|
|
| `src/lib.rs` | Module exports and router creation |
|
|
| `src/config.rs` | AcpServerConfig with validation |
|
|
| `src/error.rs` | Error types and codes |
|
|
| `src/jsonrpc.rs` | JSON-RPC 2.0 implementation |
|
|
| `src/rpc.rs` | RPC handler and method dispatch |
|
|
|
|
## Related Packages
|
|
|
|
- **dirigent_core** - Provides CoreHandle implementation of ConnectorOperations
|
|
- **dirigent_protocol** - Shared event and message types
|
|
- **api** - Server functions for UI configuration
|
|
- **web** - Configuration UI components
|
|
|
|
## Documentation
|
|
|
|
- **Architecture**: `docs/architecture/acp_server.md`
|
|
- **Configuration**: `docs/configuration/acp-connectors.md`
|
|
- **Tasks**: `docs/building/07_acp_serve/02_acp_server_tasks.md`
|