// Code generated by internal/schemagen. DO NOT EDIT.

package schema

// Capabilities supported by the agent.
// Advertised during initialization to inform the client about
// available features and content types.
// See protocol docs: [Agent Capabilities](https://agentclientprotocol.com/protocol/initialization#agent-capabilities)
// AgentCapabilities represents a [schema] type.
type AgentCapabilities struct {
	// The _meta property is reserved by ACP to allow clients and agents to attach additional
	Meta Meta `json:"_meta,omitempty"`
	// Whether the agent supports `session/load`
	LoadSession bool `json:"loadSession,omitempty"`
	// MCP capabilities supported by the agent
	McpCapabilities *McpCapabilities `json:"mcpCapabilities,omitempty"`
	// Prompt capabilities supported by the agent
	PromptCapabilities  *PromptCapabilities  `json:"promptCapabilities,omitempty"`
	SessionCapabilities *SessionCapabilities `json:"sessionCapabilities,omitempty"`
}

// Capabilities supported by the client.
// Advertised during initialization to inform the agent about
// available features and methods.
// See protocol docs: [Client Capabilities](https://agentclientprotocol.com/protocol/initialization#client-capabilities)
// ClientCapabilities represents a [schema] type.
type ClientCapabilities struct {
	// The _meta property is reserved by ACP to allow clients and agents to attach additional
	Meta Meta `json:"_meta,omitempty"`
	// File system capabilities supported by the client
	Fs *FileSystemCapabilities `json:"fs,omitempty"`
	// Whether the Client support all `terminal/*` methods
	Terminal bool `json:"terminal,omitempty"`
}

// File system capabilities that a client may support.
// See protocol docs: [FileSystem](https://agentclientprotocol.com/protocol/initialization#filesystem)
// FileSystemCapabilities represents a [schema] type.
type FileSystemCapabilities struct {
	// The _meta property is reserved by ACP to allow clients and agents to attach additional
	Meta Meta `json:"_meta,omitempty"`
	// Whether the Client supports `fs/read_text_file` requests
	ReadTextFile bool `json:"readTextFile,omitempty"`
	// Whether the Client supports `fs/write_text_file` requests
	WriteTextFile bool `json:"writeTextFile,omitempty"`
}

// MCP capabilities supported by the agent
// McpCapabilities represents a [schema] type.
type McpCapabilities struct {
	// The _meta property is reserved by ACP to allow clients and agents to attach additional
	Meta Meta `json:"_meta,omitempty"`
	// Agent supports [`McpServer::Http`]
	Http bool `json:"http,omitempty"`
	// Agent supports [`McpServer::Sse`]
	Sse bool `json:"sse,omitempty"`
}

// Prompt capabilities supported by the agent in `session/prompt` requests.
// Baseline agent functionality requires support for [`ContentBlock::Text`]
// and [`ContentBlock::ResourceLink`] in prompt requests.
// Other variants must be explicitly opted in to.
// Capabilities for different types of content in prompt requests.
// Indicates which content types beyond the baseline (text and resource links)
// the agent can process.
// See protocol docs: [Prompt Capabilities](https://agentclientprotocol.com/protocol/initialization#prompt-capabilities)
// PromptCapabilities represents a [schema] type.
type PromptCapabilities struct {
	// The _meta property is reserved by ACP to allow clients and agents to attach additional
	Meta Meta `json:"_meta,omitempty"`
	// Agent supports [`ContentBlock::Audio`]
	Audio bool `json:"audio,omitempty"`
	// Agent supports embedded context in `session/prompt` requests
	EmbeddedContext bool `json:"embeddedContext,omitempty"`
	// Agent supports [`ContentBlock::Image`]
	Image bool `json:"image,omitempty"`
}

// Session capabilities supported by the agent.
// As a baseline, all Agents **MUST** support `session/new`, `session/prompt`, `session/cancel`, and `session/update`.
// Optionally, they **MAY** support other session methods and notifications by specifying additional capabilities.
// Note: `session/load` is still handled by the top-level `load_session` capability. This will be unified in future versions of the protocol.
// See protocol docs: [Session Capabilities](https://agentclientprotocol.com/protocol/initialization#session-capabilities)
// SessionCapabilities represents a [schema] type.
type SessionCapabilities struct {
	// The _meta property is reserved by ACP to allow clients and agents to attach additional
	Meta Meta `json:"_meta,omitempty"`
	// Whether the agent supports `session/list`
	List *SessionListCapabilities `json:"list,omitempty"`
}

// Capabilities for the `session/list` method.
// By supplying `{}` it means that the agent supports listing of sessions
// SessionListCapabilities represents a [schema] type.
type SessionListCapabilities struct {
	// The _meta property is reserved by ACP to allow clients and agents to attach additional
	Meta Meta `json:"_meta,omitempty"`
}
