package handlers // session/new method types (spec §5.4 + ACP v1 schema/v1/schema.json)。 // // mcpServers 元素是 untagged union: // - stdio:无 type 判别字段(v1 规定;带 type 会被部分 agent 忽略), // name/command/args/env 全必填(空数组可) // - http / sse:type 为 "http"/"sse" 判别符,name/url/headers 必填 // // env / headers 均为 [{name,value}] 数组(非对象)。 type SessionNewParams struct { Cwd string `json:"cwd"` McpServers []any `json:"mcpServers"` // McpServerStdio | McpServerHTTP } type SessionNewResult struct { SessionID string `json:"sessionId"` } // EnvVariable / HttpHeader 是 ACP wire 的 name-value 对。 type EnvVariable struct { Name string `json:"name"` Value string `json:"value"` } type HttpHeader struct { Name string `json:"name"` Value string `json:"value"` } // McpServerStdio 是 stdio 传输的 MCP server(基线,所有 agent 必须支持)。 type McpServerStdio struct { Name string `json:"name"` Command string `json:"command"` Args []string `json:"args"` Env []EnvVariable `json:"env"` } // McpServerHTTP 是 http / sse 传输的 MCP server。Type 必须为 "http" 或 "sse", // 仅当 agent 在 initialize 中声明对应 mcpCapabilities 时才可下发。 type McpServerHTTP struct { Type string `json:"type"` Name string `json:"name"` URL string `json:"url"` Headers []HttpHeader `json:"headers"` } // BuildSessionNewParams returns standard session/new params. // servers 为 nil 时发送空数组(mcpServers 是协议必填字段)。 func BuildSessionNewParams(cwd string, servers []any) SessionNewParams { if servers == nil { servers = []any{} } return SessionNewParams{Cwd: cwd, McpServers: servers} }