diff --git a/internal/acp/handlers/client_initialize.go b/internal/acp/handlers/client_initialize.go new file mode 100644 index 0000000..c02b542 --- /dev/null +++ b/internal/acp/handlers/client_initialize.go @@ -0,0 +1,44 @@ +package handlers + +// Server-initiated initialize call: types per spec §5.4. Supervisor sends this +// immediately after spawn. clientCapabilities.terminal=false (MVP no terminal). + +type InitializeParams struct { + ProtocolVersion int `json:"protocolVersion"` + ClientCapabilities ClientCapabilities `json:"clientCapabilities"` + ClientInfo ClientInfo `json:"clientInfo"` +} + +type ClientCapabilities struct { + Fs FsCapability `json:"fs"` + Terminal bool `json:"terminal"` +} + +type FsCapability struct { + ReadTextFile bool `json:"readTextFile"` + WriteTextFile bool `json:"writeTextFile"` +} + +type ClientInfo struct { + Name string `json:"name"` + Version string `json:"version"` +} + +type InitializeResult struct { + ProtocolVersion int `json:"protocolVersion"` + AgentCapabilities map[string]any `json:"agentCapabilities,omitempty"` + AgentInfo map[string]any `json:"agentInfo,omitempty"` + AuthMethods []any `json:"authMethods,omitempty"` +} + +// BuildInitializeParams returns standard initialize params. +func BuildInitializeParams(version string) InitializeParams { + return InitializeParams{ + ProtocolVersion: 1, + ClientCapabilities: ClientCapabilities{ + Fs: FsCapability{ReadTextFile: true, WriteTextFile: true}, + Terminal: false, + }, + ClientInfo: ClientInfo{Name: "agent-coding-workflow", Version: version}, + } +} diff --git a/internal/acp/handlers/client_session_new.go b/internal/acp/handlers/client_session_new.go new file mode 100644 index 0000000..99f00dc --- /dev/null +++ b/internal/acp/handlers/client_session_new.go @@ -0,0 +1,17 @@ +package handlers + +// session/new method types (spec §5.4). + +type SessionNewParams struct { + Cwd string `json:"cwd"` + McpServers []string `json:"mcpServers"` // MVP: no MCP, send empty slice +} + +type SessionNewResult struct { + SessionID string `json:"sessionId"` +} + +// BuildSessionNewParams returns standard session/new params. +func BuildSessionNewParams(cwd string) SessionNewParams { + return SessionNewParams{Cwd: cwd, McpServers: []string{}} +}