85ecf7debb
* feat(agentctl): implement protocol adapter abstraction - Add AgentAdapter interface for protocol-agnostic agent communication - Create ACPAdapter implementation for ACP protocol (JSON-RPC over stdin/stdout) - Add Protocol field to agent registry (AgentTypeConfig) - Update process.Manager to use adapters instead of hardcoded ACP - Update API layer to use adapter interface - Pass protocol from registry to agentctl via CLI flag and env var - Support protocol configuration in both Docker and standalone modes This refactoring allows agentctl to support multiple protocols (ACP, REST, MCP) via a pluggable adapter pattern. The backend remains protocol-agnostic, always communicating with agentctl's HTTP API. * refactor(agentctl): consolidate types and clean up code - Create shared types package (internal/agentctl/types) for permission types - Create shared protocol package (pkg/agent) for Protocol type - Remove duplicate permission types from acp/client.go and adapter.go - Make adapter the single source of truth for session ID - Remove unused Command field from adapter.Config - Remove passthrough wrapper function handleAdapterPermissionRequest - Clean up extra empty lines in process/manager.go and acp_adapter.go - Re-export permission types from adapter package for convenience * fix(agent-session): rename AgentType to AgentProfileID for consistency - Rename AgentSession.AgentType to AgentProfileID in models - Update agent_sessions table schema column from agent_type to agent_profile_id - Update all SQL queries in sqlite.go to use agent_profile_id - Fix ToAPI() method to return agent_profile_id key - Remove misleading comments in executor.go Also adds comprehensive tests for affected areas: - adapter package unit tests (SessionUpdate, PlanEntry, AgentInfo, Config) - profile resolver unit tests with mock repository - AgentSession CRUD tests in sqlite_test.go
31 lines
768 B
Go
31 lines
768 B
Go
// Package agent provides shared types for agent communication.
|
|
package agent
|
|
|
|
// Protocol defines the communication protocol used by an agent.
|
|
type Protocol string
|
|
|
|
const (
|
|
// ProtocolACP is the Agent Communication Protocol (JSON-RPC over stdin/stdout).
|
|
ProtocolACP Protocol = "acp"
|
|
// ProtocolREST is for agents with REST APIs.
|
|
ProtocolREST Protocol = "rest"
|
|
// ProtocolMCP is the Model Context Protocol.
|
|
ProtocolMCP Protocol = "mcp"
|
|
)
|
|
|
|
// String returns the string representation of the protocol.
|
|
func (p Protocol) String() string {
|
|
return string(p)
|
|
}
|
|
|
|
// IsValid returns true if the protocol is a known valid protocol.
|
|
func (p Protocol) IsValid() bool {
|
|
switch p {
|
|
case ProtocolACP, ProtocolREST, ProtocolMCP:
|
|
return true
|
|
default:
|
|
return false
|
|
}
|
|
}
|
|
|