Files
agentic-coding-workflow/internal/acp/handlers/client_initialize.go
T
2026-06-12 11:44:19 +08:00

57 lines
1.8 KiB
Go

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"`
}
// McpCapabilities 从 agentCapabilities.mcpCapabilities 解析 http/sse 支持声明
// (ACP v1:均默认 false;stdio 是基线无需声明)。字段缺失或形状异常按 false 处理。
func (r InitializeResult) McpCapabilities() (httpOK, sseOK bool) {
caps, ok := r.AgentCapabilities["mcpCapabilities"].(map[string]any)
if !ok {
return false, false
}
httpOK, _ = caps["http"].(bool)
sseOK, _ = caps["sse"].(bool)
return httpOK, sseOK
}
// 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},
}
}