Help us shape the future of Go! Take the 2026 Go Developer Survey

runtimeprotocol

package
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 1, 2026 License: MIT Imports: 11 Imported by: 0

Documentation

Overview

Package runtimeprotocol 是 serve 与客户端共用的 OpenVaala 线上协议类型、方法表和通知表。

Index

Constants

View Source
const (
	ErrorCodeParse                = -32700
	ErrorCodeInvalidRequest       = -32600
	ErrorCodeMethodNotFound       = -32601
	ErrorCodeInvalidParams        = -32602
	ErrorCodeRuntime              = -32000
	ErrorCodeSessionBusy          = -32001
	ErrorCodeConversationNotFound = -32002
	ErrorCodeSessionNotFound      = -32003
)

JSON-RPC 错误码:协议错误由连接产生,-32602 由参数解析、Executor 设置校验和分叉截取点校验产生;Runtime 返回的错误中,Session 忙为 -32001, 对话不存在为 -32002,按 SessionID 找不到 Session 为 -32003,其余统一为 -32000。

View Source
const InitializeMethod = "initialize"

InitializeMethod 是建立连接后的第一个请求。

View Source
const ProtocolVersion = "5"

ProtocolVersion 是 OpenVaala 协议版本,initialize 双方必须一致。

Variables

View Source
var ClientNotifications = []Notification{
	NewNotification[ClientMCPMessageParams]("clientMCP/message"),
	NewNotification[ClientMCPClosedParams]("clientMCP/closed"),
	NewNotification[TerminalInputParams]("terminal/input"),
	NewNotification[TerminalResizeParams]("terminal/resize"),
}

ClientNotifications 是客户端发给 serve 的通知,共 4 种。

View Source
var Methods = []Method{
	NewMethod[InitializeParams, *InitializeResult](InitializeMethod),
	NewMethod[CreateConversationParams, *ConversationResult]("conversation/create"),
	NewMethod[OpenConversationParams, *ConversationResult]("conversation/open"),
	NewMethod[ConversationParams, *ConversationResult]("conversation/read"),
	NewMethod[ListConversationsParams, *ListConversationsResult]("conversation/list"),
	NewMethod[SetConversationTitleParams, *EmptyResult]("conversation/setTitle"),
	NewMethod[ForkConversationParams, *ConversationResult]("conversation/fork"),
	NewMethod[SetConversationArchivedParams, *ConversationResult]("conversation/setArchived"),
	NewMethod[ConversationParams, *EmptyResult]("conversation/delete"),
	NewMethod[SetExecutorSettingsParams, *ConversationResult]("conversation/setExecutorSettings"),
	NewMethod[SubmitInputParams, *SubmitInputResult]("conversation/submitInput"),
	NewMethod[SteerInputParams, *EmptyResult]("conversation/steerInput"),
	NewMethod[InterruptTurnWithInputParams, *EmptyResult]("conversation/interruptTurnWithInput"),
	NewMethod[WithdrawInputParams, *WithdrawInputResult]("conversation/withdrawInput"),
	NewMethod[ConversationParams, *InterruptTurnResult]("conversation/interruptTurn"),
	NewMethod[ConversationParams, *CompactContextResult]("conversation/compact"),
	NewMethod[GetSessionParams, *SessionResult]("session/get"),
	NewMethod[ListSessionsParams, *ListSessionsResult]("session/list"),
	NewMethod[ListTurnsParams, *ListTurnsResult]("session/turns/list"),
	NewMethod[GetTurnsParams, *GetTurnsResult]("session/turns/get"),
	NewMethod[ListItemsParams, *ListItemsResult]("session/items/list"),
	NewMethod[SessionParams, *runtime.SessionContextUsage]("session/contextUsage"),
	NewMethod[SessionParams, *conversation.SessionDetails]("session/details"),
	NewMethod[SetSessionModelParams, *SessionResult]("session/setModel"),
	NewMethod[ListModelsParams, *runtime.ModelList]("model/list"),
	NewMethod[EmptyParams, *ListAgentsResult]("agent/list"),
	NewMethod[EmptyParams, *ListExecutorsResult]("executor/list"),
	NewMethod[ResolveDirectoryParams, *ResolveDirectoryResult]("executor/resolveDirectory"),
	NewMethod[ListDirectoriesParams, *conversation.WorkspaceDirectories]("executor/listDirectories"),
	NewMethod[EmptyParams, *ListProvidersResult]("provider/list"),
	NewMethod[SetProviderParams, *runtime.SetDefinitionsResult]("provider/set"),
	NewMethod[ProviderIDParams, *runtime.SetDefinitionsResult]("provider/delete"),
	NewMethod[ProviderParams, *ProviderModelsResult]("provider/fetchModels"),
	NewMethod[SetDefaultModelParams, *runtime.SetDefinitionsResult]("config/setDefaultModel"),
	NewMethod[EmptyParams, *runtime.SetDefinitionsResult]("config/reload"),
	NewMethod[EmptyParams, *ListCatalogProvidersResult]("catalog/providers/list"),
	NewMethod[ProviderIDParams, *ProviderModelsResult]("catalog/models/list"),
	NewMethod[ListSkillsParams, []skill.SkillInfo]("skill/list"),
	NewMethod[EmptyParams, *ListHooksResult]("hook/list"),
	NewMethod[ConversationParams, *ListMCPServersResult]("mcpServer/list"),
	NewMethod[SetClientMCPServersParams, *EmptyResult]("conversation/setClientMCPServers"),
	NewMethod[ConversationParams, *SubscribeConversationResult]("conversation/subscribe"),
	NewMethod[ConversationParams, *EmptyResult]("conversation/unsubscribe"),
	NewMethod[EmptyParams, *runtime.RunningConversations]("conversation/running/subscribe"),
	NewMethod[EmptyParams, *EmptyResult]("conversation/running/unsubscribe"),
	NewMethod[SessionParams, *SubscribeSessionResult]("session/subscribe"),
	NewMethod[SessionParams, *EmptyResult]("session/unsubscribe"),
	NewMethod[TerminalOpenParams, *TerminalOpenResult]("terminal/open"),
	NewMethod[TerminalParams, *EmptyResult]("terminal/close"),
}

Methods 是全部请求方法,包括 initialize。P 是参数结构体(服务端处理函数收到 *P), R 与处理函数的返回类型完全相同:多数是指针,skill/list 是 []skill.SkillInfo。

View Source
var ServerNotifications = []Notification{
	NewNotification[runtime.RunningConversations]("conversation/runningChanged"),
	NewNotification[RunningConversationsClosedParams]("conversation/runningClosed"),
	NewNotification[SubscriptionClosedParams]("subscription/closed"),
	NewNotification[SessionPendingInputsUpdatedParams]("session/pendingInputsUpdated"),
	NewNotification[SessionStatusUpdatedParams]("session/statusUpdated"),
	NewNotification[ConversationTitleUpdatedParams]("conversation/titleUpdated"),
	NewNotification[SessionStartedParams]("session/started"),
	NewNotification[SessionStoppedParams]("session/stopped"),
	NewNotification[TurnStartedParams]("turn/started"),
	NewNotification[TurnFinishedParams]("turn/finished"),
	NewNotification[ItemsSavedParams]("items/saved"),
	NewNotification[ItemEventParams]("item/started"),
	NewNotification[ItemEventParams]("item/delta"),
	NewNotification[ItemEventParams]("item/completed"),
	NewNotification[ItemEventParams]("item/interrupted"),
	NewNotification[ItemEventParams]("item/toolProgress"),
	NewNotification[HookRunParams]("hook/started"),
	NewNotification[HookRunParams]("hook/completed"),
	NewNotification[ClientMCPConnectParams]("clientMCP/connect"),
	NewNotification[ClientMCPMessageParams]("clientMCP/message"),
	NewNotification[ClientMCPDisconnectParams]("clientMCP/disconnect"),
	NewNotification[TerminalOutputParams]("terminal/output"),
	NewNotification[TerminalExitedParams]("terminal/exited"),
}

ServerNotifications 是 serve 发给客户端的通知。

Functions

This section is empty.

Types

type ClientInfo

type ClientInfo struct {
	Name    string `json:"name"`
	Version string `json:"version,omitempty"`
}

ClientInfo 是客户端的名称和版本。

type ClientMCPClosedParams

type ClientMCPClosedParams struct {
	StreamID string `json:"stream_id"`
	Error    string `json:"error,omitempty"`
}

ClientMCPClosedParams 是客户端发给 serve 的 clientMCP/closed 的参数:客户端在 stream_id 这条流连不上、或本机 MCP server 结束时发出; error 是失败原因,正常结束时省略。

type ClientMCPConnectParams

type ClientMCPConnectParams struct {
	StreamID string `json:"stream_id"`
	ServerID string `json:"server_id"`
}

ClientMCPConnectParams 是 serve 发给客户端的 clientMCP/connect 的参数:转发传输每次连接尝试时发出一次, 请客户端按 server_id 的配置连上本机的 MCP server,此后这条流上的消息都带 stream_id。重连时换新的 stream_id。

type ClientMCPDisconnectParams

type ClientMCPDisconnectParams struct {
	StreamID string `json:"stream_id"`
}

ClientMCPDisconnectParams 是 serve 发给客户端的 clientMCP/disconnect 的参数:serve 一侧结束 stream_id 这条流时发出, 客户端随之关闭与本机 MCP server 的连接。

type ClientMCPMessageParams

type ClientMCPMessageParams struct {
	StreamID string          `json:"stream_id"`
	Message  json.RawMessage `json:"message"`
}

ClientMCPMessageParams 是 clientMCP/message 的参数,两个方向通用:serve 发给客户端的是 MCP SDK 写出的消息, 客户端发给 serve 的是本机 MCP server 发来的消息。message 是 stream_id 这条流上的一条完整 MCP JSON-RPC 消息原文。

type CompactContextResult

type CompactContextResult struct {
	TurnID defs.TurnID `json:"turn_id"`
}

CompactContextResult 是 conversation/compact 的结果:刚开始的压缩 Turn;压缩尚未完成。

type ConversationParams

type ConversationParams struct {
	ConversationID defs.ConversationID `json:"conversation_id"`
}

ConversationParams 用于只需要对话身份的方法:read、interruptTurn、compact、delete、subscribe、unsubscribe、mcpServer/list。

type ConversationResult

type ConversationResult struct {
	Conversation defs.Conversation `json:"conversation"`
}

ConversationResult 是返回一条对话记录的结果。

type ConversationTitleUpdatedParams

type ConversationTitleUpdatedParams struct {
	NotificationTarget
	Title string `json:"title"`
}

ConversationTitleUpdatedParams 由连接在对话标题保存成功且变化后发出,空字符串表示清空标题。

type CreateConversationParams

type CreateConversationParams struct {
	AgentName string              `json:"agent_name"`
	Model     defs.ModelSelection `json:"model,omitzero"`
	// ExecutorSettings 里没有 local 目录时使用 local 的默认目录(server.workspace_directory,没配时是 serve 的工作目录)。
	ExecutorSettings defs.ExecutorSettings `json:"executor_settings"`
	// Environment 为空时本机命令继承 serve 进程的环境。
	Environment []string `json:"environment,omitempty"`
	// Ephemeral 是否建临时对话?临时对话不装配,没有 Executor 和 Skill,executor_settings 原样记下但不生效,environment 忽略。
	Ephemeral bool `json:"ephemeral,omitempty"`
}

CreateConversationParams 是 conversation/create 的参数。

type EmptyParams

type EmptyParams struct{}

EmptyParams 用于无参数的方法,包括全局运行订阅和退订。

type EmptyResult

type EmptyResult struct{}

EmptyResult 是没有返回内容的方法的结果,编码为 {}。

type ForkConversationParams

type ForkConversationParams struct {
	ConversationID defs.ConversationID `json:"conversation_id"`
	// BeforeTurnID 复制到这一轮之前(不含),LastTurnID 复制到这一轮(含);最多给一个,都不给时复制全部已结束的轮次。
	BeforeTurnID defs.TurnID `json:"before_turn_id,omitempty"`
	LastTurnID   defs.TurnID `json:"last_turn_id,omitempty"`
	// Model 省略时照抄来源根 Session 的模型。
	Model defs.ModelSelection `json:"model,omitzero"`
	// ExecutorSettings 是新对话的完整设置,和 Environment 一起按 conversation/create 的规则装配。
	ExecutorSettings defs.ExecutorSettings `json:"executor_settings"`
	Environment      []string              `json:"environment,omitempty"`
}

ForkConversationParams 是 conversation/fork 的参数。

type GetSessionParams

type GetSessionParams struct {
	SessionID defs.SessionID `json:"session_id"`
}

GetSessionParams 是 session/get 的参数:只凭 session_id 找 Session,不需要知道它属于哪个对话。

type GetTurnsParams

type GetTurnsParams struct {
	ConversationID defs.ConversationID `json:"conversation_id"`
	SessionID      defs.SessionID      `json:"session_id"`
	TurnIDs        []defs.TurnID       `json:"turn_ids"`
}

GetTurnsParams 是 session/turns/get 的参数;Turn 记录的读取不要求对话已打开。

type GetTurnsResult

type GetTurnsResult struct {
	Turns []defs.Turn `json:"turns"`
}

GetTurnsResult 是 session/turns/get 的结果:按请求顺序找到的 Turn。

type HookRunParams

type HookRunParams struct {
	NotificationTarget
	TurnID  defs.TurnID   `json:"turn_id"`
	HookRun *defs.HookRun `json:"hook_run"`
}

HookRunParams 由连接在 Hook 开始和结束时各发一次,携带同一 ID 的完整运行记录。 工具与 Stop Hook 来自 Agent,SessionStart、SubagentStart、UserPromptSubmit Hook 来自 Turn。

type InitializeParams

type InitializeParams struct {
	ClientInfo      ClientInfo `json:"client_info"`
	ProtocolVersion string     `json:"protocol_version"`
}

InitializeParams 是 initialize 的参数:客户端信息和它使用的协议版本。

type InitializeResult

type InitializeResult struct {
	ServerInfo      ServerInfo `json:"server_info"`
	ProtocolVersion string     `json:"protocol_version"`
	// ServerID 标识这台机器上的 serve;客户端读到的本机 server_id 与它一致,就说明两边用的是同一个文件系统。
	ServerID string `json:"server_id"`
}

InitializeResult 是 initialize 的结果。

type InterruptTurnResult

type InterruptTurnResult struct {
	TurnID defs.TurnID `json:"turn_id,omitempty"`
}

InterruptTurnResult 是 conversation/interruptTurn 的结果:被中断的 TurnID,没有活动 Turn 时省略。

type InterruptTurnWithInputParams

type InterruptTurnWithInputParams struct {
	ConversationID defs.ConversationID `json:"conversation_id"`
	ItemID         defs.ItemID         `json:"item_id"`
	TurnID         defs.TurnID         `json:"turn_id"`
}

InterruptTurnWithInputParams 是 conversation/interruptTurnWithInput 的参数。

type ItemEventParams

type ItemEventParams struct {
	NotificationTarget
	TurnID       defs.TurnID              `json:"turn_id"`
	ItemIndex    int                      `json:"item_index"`
	Item         *defs.Item               `json:"item,omitempty"`
	Delta        *agent.AgentItemDelta    `json:"delta,omitempty"`
	ToolProgress *agent.AgentToolProgress `json:"tool_progress,omitempty"`
}

ItemEventParams 由连接在 Item 开始、增量、完成、中断或工具进度事件到达时发出,各通知只填对应字段。

type ItemsSavedParams

type ItemsSavedParams struct {
	NotificationTarget
	TurnID defs.TurnID  `json:"turn_id"`
	Items  []LoggedItem `json:"items"`
}

ItemsSavedParams 由连接在一批 Item 写入 Session 日志后发出,条目按日志序号递增。

type JSONRPCError

type JSONRPCError struct {
	Code    int    `json:"code"`
	Message string `json:"message"`
}

JSONRPCError 是响应中的错误;方法处理函数返回它时保留错误码,返回其他错误时由服务端按错误种类换成对应错误码。

func (*JSONRPCError) Error

func (e *JSONRPCError) Error() string

Error 返回协议错误文本。

type JSONRPCMessage

type JSONRPCMessage struct {
	ID     json.RawMessage `json:"id,omitempty"`
	Method string          `json:"method,omitempty"`
	Params any             `json:"params,omitempty"`
	Result any             `json:"result,omitempty"`
	Error  *JSONRPCError   `json:"error,omitempty"`
}

JSONRPCMessage 是服务端写出的一帧:响应带 ID 与 Result 或 Error,通知只带 Method 与 Params。 Result 与 Params 在服务端写出这一帧时才编码。

type JSONRPCRequest

type JSONRPCRequest struct {
	ID     json.RawMessage `json:"id"`
	Method string          `json:"method"`
	Params json.RawMessage `json:"params"`
}

JSONRPCRequest 是客户端发来的一帧请求(省略 jsonrpc 字段);Params 原样交给方法处理函数解析。

type ListAgentsResult

type ListAgentsResult struct {
	Agents []runtime.AgentInfo `json:"agents"`
}

ListAgentsResult 是 agent/list 的结果:配置里的全部 Agent,按配置顺序。

type ListCatalogProvidersResult

type ListCatalogProvidersResult struct {
	Providers []defs.CatalogProvider `json:"providers"`
}

ListCatalogProvidersResult 是 catalog/providers/list 的结果:模型目录里能对应上协议和 base_url 的服务。

type ListConversationsParams

type ListConversationsParams struct {
	Directories []string                              `json:"directories,omitempty"`
	SearchTerm  string                                `json:"search_term,omitempty"`
	Order       storage.Order                         `json:"order,omitzero"`
	Cursor      dao.RecordCursor[defs.ConversationID] `json:"cursor,omitzero"`
	Limit       int                                   `json:"limit,omitempty"`
	Archived    bool                                  `json:"archived,omitempty"`
}

ListConversationsParams 是 conversation/list 的参数;archived 为 true 时只列归档的对话,省略或 false 时只列没归档的。

type ListConversationsResult

type ListConversationsResult struct {
	Conversations []dao.ConversationListEntry           `json:"conversations"`
	NextCursor    dao.RecordCursor[defs.ConversationID] `json:"next_cursor,omitzero"`
}

ListConversationsResult 是 conversation/list 的结果:一页对话和下一页游标。

type ListDirectoriesParams

type ListDirectoriesParams struct {
	ExecutorID    string `json:"executor_id"`
	Directory     string `json:"directory"`
	BaseDirectory string `json:"base_directory,omitempty"`
}

ListDirectoriesParams 是 executor/listDirectories 的参数;directory 不包含候选筛选词。

type ListExecutorsResult

type ListExecutorsResult struct {
	Executors []conversation.ExecutorDetails `json:"executors"`
}

ListExecutorsResult 是 executor/list 的结果:全部 Executor 和它们的默认根目录。

type ListHooksResult

type ListHooksResult struct {
	Hooks []*hook.HookInfo `json:"hooks"`
}

ListHooksResult 是 hook/list 的结果:配置里的全部 hook,按配置顺序排列。

type ListItemsParams

type ListItemsParams struct {
	ConversationID defs.ConversationID `json:"conversation_id"`
	SessionID      defs.SessionID      `json:"session_id"`
	Order          storage.Direction   `json:"order,omitempty"`
	Cursor         storage.Ordinal     `json:"cursor,omitempty"`
	Limit          int                 `json:"limit,omitempty"`
}

ListItemsParams 是 session/items/list 的参数;一页 Item 的 JSON 累计超过服务端的页大小上限时提前截断。

type ListItemsResult

type ListItemsResult struct {
	Items      []LoggedItem    `json:"items"`
	NextCursor storage.Ordinal `json:"next_cursor,omitempty"`
}

ListItemsResult 是 session/items/list 的结果:一页日志和下一页游标。

type ListMCPServersResult

type ListMCPServersResult struct {
	Servers []conversation.MCPServerInfo `json:"servers"`
}

ListMCPServersResult 是 mcpServer/list 的结果:对话里每个 Executor 上的每个 MCP 连接,按 Executor 在对话里的顺序排列。

type ListModelsParams

type ListModelsParams struct {
	AgentName string `json:"agent_name"`
}

ListModelsParams 是 model/list 的参数;agent_name 为空时不返回 Agent 默认模型。

type ListProvidersResult

type ListProvidersResult struct {
	Providers    []defs.ProviderConfig `json:"providers"`
	DefaultModel string                `json:"default_model"`
	Defaults     defs.ModelDefaults    `json:"defaults"`
}

ListProvidersResult 是 provider/list 的结果:配置里的全部 Provider,带 API key 原文;DefaultModel 是模型配置的默认模型 (provider/model),没有时为空;Defaults 是同次加载的模型默认配置。

type ListSessionsParams

type ListSessionsParams struct {
	ConversationID defs.ConversationID              `json:"conversation_id"`
	Order          storage.Order                    `json:"order,omitzero"`
	Cursor         dao.RecordCursor[defs.SessionID] `json:"cursor,omitzero"`
	Limit          int                              `json:"limit,omitempty"`
}

ListSessionsParams 是 session/list 的参数。

type ListSessionsResult

type ListSessionsResult struct {
	Sessions   []defs.Session                   `json:"sessions"`
	NextCursor dao.RecordCursor[defs.SessionID] `json:"next_cursor,omitzero"`
}

ListSessionsResult 是 session/list 的结果:一页 Session 和下一页游标。

type ListSkillsParams

type ListSkillsParams struct {
	ConversationID   defs.ConversationID   `json:"conversation_id,omitempty"`
	AgentName        string                `json:"agent_name,omitempty"`
	ExecutorSettings defs.ExecutorSettings `json:"executor_settings,omitzero"`
}

ListSkillsParams 是 skill/list 的参数;没有 conversation_id 时按 agent_name 和 executor_settings 查草稿 Skills。

type ListTurnsParams

type ListTurnsParams struct {
	ConversationID defs.ConversationID           `json:"conversation_id"`
	SessionID      defs.SessionID                `json:"session_id"`
	Order          storage.Order                 `json:"order,omitzero"`
	Cursor         dao.RecordCursor[defs.TurnID] `json:"cursor,omitzero"`
	Limit          int                           `json:"limit,omitempty"`
}

ListTurnsParams 是 session/turns/list 的参数;conversation_id 选这个对话的存储,Turn 记录的读取不要求对话已打开。

type ListTurnsResult

type ListTurnsResult struct {
	Turns      []defs.Turn                   `json:"turns"`
	NextCursor dao.RecordCursor[defs.TurnID] `json:"next_cursor,omitzero"`
}

ListTurnsResult 是 session/turns/list 的结果:一页 Turn 和下一页游标。

type LoggedItem

type LoggedItem struct {
	Ordinal storage.Ordinal `json:"ordinal"`
	Item    *defs.Item      `json:"item"`
}

LoggedItem 是 Session 日志中的一条 Item 及其流水号。

type Method

type Method struct {
	Name   string
	Params reflect.Type
	Result reflect.Type
}

Method 是一个请求方法的名字和参数、结果类型。

func NewMethod

func NewMethod[P any, R any](name string) Method

NewMethod 用 P、R 的类型登记一个请求方法。

type Notification

type Notification struct {
	Name   string
	Params reflect.Type
}

Notification 是一种通知的名字和参数类型。

func NewNotification

func NewNotification[P any](name string) Notification

NewNotification 用 P 的类型登记一种通知。

type NotificationTarget

type NotificationTarget struct {
	ConversationID defs.ConversationID `json:"conversation_id"`
	SessionID      defs.SessionID      `json:"session_id"`
	// Subscription 是 SubscriptionKindSession 或 SubscriptionKindConversation;客户端据此把通知分别交给内容与状态显示。
	Subscription SubscriptionKind `json:"subscription"`
}

NotificationTarget 是单对话通知的定位字段:对话、事件所属的 Session,以及通知来自哪种订阅; 对话订阅的 subscription/closed 中 Session 为空。

type OpenConversationParams

type OpenConversationParams struct {
	ConversationID defs.ConversationID `json:"conversation_id"`
	Environment    []string            `json:"environment,omitempty"`
}

OpenConversationParams 是 conversation/open 的参数;Executor 设置取记录里的值,对话已在运行时忽略 environment,沿用首次打开时的。

type ProviderIDParams

type ProviderIDParams struct {
	ProviderID string `json:"provider_id"`
}

ProviderIDParams 是 provider/delete 的参数(配置里的 Provider id),也是 catalog/models/list 的参数(模型目录里的服务 id)。

type ProviderModelsResult

type ProviderModelsResult struct {
	Models map[string]*defs.ProviderModelConfig `json:"models"`
}

ProviderModelsResult 是 catalog/models/list、provider/fetchModels 的结果:模型 id 到模型配置。

type ProviderParams

type ProviderParams struct {
	Provider defs.ProviderConfig `json:"provider"`
}

ProviderParams 是 provider/fetchModels 的参数:完整的 Provider。

type ResolveDirectoryParams

type ResolveDirectoryParams struct {
	ExecutorID    string `json:"executor_id"`
	Directory     string `json:"directory"`
	BaseDirectory string `json:"base_directory,omitempty"`
}

ResolveDirectoryParams 是 executor/resolveDirectory 的参数;base_directory 为空时相对路径拼在这个 Executor 的默认根目录后面。

type ResolveDirectoryResult

type ResolveDirectoryResult struct {
	WorkspaceDirectory string `json:"workspace_directory"`
}

ResolveDirectoryResult 是 executor/resolveDirectory 的结果:解析后的绝对目录。

type RunningConversationsClosedParams

type RunningConversationsClosedParams struct {
	Reason string `json:"reason"`
}

RunningConversationsClosedParams 由连接在全局运行订阅非主动关闭后发出,携带关闭原因。

type ServerInfo

type ServerInfo struct {
	Name string `json:"name"`
}

ServerInfo 是服务端名称。

type SessionParams

type SessionParams struct {
	ConversationID defs.ConversationID `json:"conversation_id"`
	SessionID      defs.SessionID      `json:"session_id"`
}

SessionParams 用于定位对话内一个 Session 的方法:session/subscribe、session/unsubscribe、session/contextUsage、session/details。

type SessionPendingInputsUpdatedParams

type SessionPendingInputsUpdatedParams struct {
	NotificationTarget
	PendingInputs session.SessionPendingInputs `json:"pending_inputs"`
}

SessionPendingInputsUpdatedParams 由连接在收到待处理列表变化时发出。

type SessionResult

type SessionResult struct {
	Session defs.Session `json:"session"`
}

SessionResult 是返回一条 Session 记录的结果。

type SessionStartedParams

type SessionStartedParams struct {
	NotificationTarget
	Session          defs.Session    `json:"session"`
	LastSavedOrdinal storage.Ordinal `json:"last_saved_ordinal"`
}

SessionStartedParams 由连接在收到 Session 启动事件时发出,携带 Session 记录和启动前读到的最新日志序号。

type SessionStatusUpdatedParams

type SessionStatusUpdatedParams struct {
	NotificationTarget
	Info runtime.SessionRuntimeInfo `json:"info"`
}

SessionStatusUpdatedParams 由连接在收到 Session 运行信息变化时发出,携带变化后的完整信息。

type SessionStoppedParams

type SessionStoppedParams struct {
	NotificationTarget
	Error string `json:"error,omitempty"`
}

SessionStoppedParams 由连接在 Session.Run 返回后发出,error 是返回的错误文本。

type SetClientMCPServersParams

type SetClientMCPServersParams struct {
	ConversationID defs.ConversationID `json:"conversation_id"`
	ServerIDs      []string            `json:"server_ids"`
}

SetClientMCPServersParams 是 conversation/setClientMCPServers 的参数:server_ids 是本连接为这个对话登记的全部客户端 MCP server, 换掉本连接之前为这个对话登记的;空列表表示全部移除。server 在客户端机器上运行,serve 只经过本连接转发它的 MCP 消息。

type SetConversationArchivedParams

type SetConversationArchivedParams struct {
	ConversationID defs.ConversationID `json:"conversation_id"`
	Archived       bool                `json:"archived"`
}

SetConversationArchivedParams 是 conversation/setArchived 的参数:archived 为 true 时归档,false 时取消归档。

type SetConversationTitleParams

type SetConversationTitleParams struct {
	ConversationID defs.ConversationID `json:"conversation_id"`
	Title          string              `json:"title"`
}

SetConversationTitleParams 是 conversation/setTitle 的参数。

type SetDefaultModelParams

type SetDefaultModelParams struct {
	Model string `json:"model"`
}

SetDefaultModelParams 是 config/setDefaultModel 的参数:model 写成 provider/model。

type SetExecutorSettingsParams

type SetExecutorSettingsParams struct {
	ConversationID   defs.ConversationID   `json:"conversation_id"`
	ExecutorSettings defs.ExecutorSettings `json:"executor_settings"`
}

SetExecutorSettingsParams 是 conversation/setExecutorSettings 的参数;executor_settings 是完整的新设置,不是增量。

type SetProviderParams

type SetProviderParams struct {
	Provider     defs.ProviderConfig `json:"provider"`
	DefaultModel string              `json:"default_model,omitempty"`
}

SetProviderParams 是 provider/set 的参数:完整的 Provider,以及可选的、同时写进配置的默认模型(provider/model)。

type SetSessionModelParams

type SetSessionModelParams struct {
	ConversationID defs.ConversationID `json:"conversation_id"`
	SessionID      defs.SessionID      `json:"session_id"`
	Model          defs.ModelSelection `json:"model"`
}

SetSessionModelParams 是 session/setModel 的参数。

type SteerInputParams

type SteerInputParams struct {
	ConversationID defs.ConversationID `json:"conversation_id"`
	ItemID         defs.ItemID         `json:"item_id"`
	TurnID         defs.TurnID         `json:"turn_id"`
}

SteerInputParams 是 conversation/steerInput 的参数。

type StreamingItem

type StreamingItem struct {
	ItemIndex int        `json:"item_index"`
	Item      *defs.Item `json:"item"`
}

StreamingItem 是一个生成中的 Item 及它在本轮 Agent 输出中的位置,与通知的 item_index 对应。

type SubmitInputParams

type SubmitInputParams struct {
	ConversationID defs.ConversationID `json:"conversation_id"`
	InputID        defs.InputID        `json:"input_id,omitempty"`
	// Mode 省略时使用普通模式。
	Mode session.SessionInputMode `json:"mode,omitempty"`
	// Content 原样交给 Runtime;Session 拒绝空内容、空条目、未知类型和缺少载荷的内容,图片的 data URL 格式不检查。
	Content []*defs.Content `json:"content"`
}

SubmitInputParams 是 conversation/submitInput 的参数。

type SubmitInputResult

type SubmitInputResult struct {
	ItemID defs.ItemID `json:"item_id"`
}

SubmitInputResult 是 conversation/submitInput 的结果:这次输入的 ItemID。

type SubscribeConversationResult

type SubscribeConversationResult struct {
	Title    string                       `json:"title"`
	Sessions []runtime.SessionRuntimeInfo `json:"sessions"`
}

SubscribeConversationResult 是对话订阅的初始信息:登记时已保存的标题与全部 Session 的运行信息,按 SessionID 排序。

type SubscribeSessionResult

type SubscribeSessionResult struct {
	// LastSavedOrdinal 及之前的日志用 session/items/list 补齐。
	LastSavedOrdinal storage.Ordinal `json:"last_saved_ordinal"`
	// StreamingItems 是正在生成的 Item,后续 item/delta 按 item_index 接上。
	StreamingItems []StreamingItem              `json:"streaming_items"`
	PendingInputs  session.SessionPendingInputs `json:"pending_inputs"`
}

SubscribeSessionResult 是 Session 内容订阅的初始信息。

type SubscriptionClosedParams

type SubscriptionClosedParams struct {
	NotificationTarget
	Reason string `json:"reason"`
}

SubscriptionClosedParams 由连接在订阅事件流关闭后发出,携带退订、过慢、对话退出、Runtime 停止或配置更新的原因; 原因是配置更新时,客户端重新订阅并同步。

type SubscriptionKind

type SubscriptionKind string

SubscriptionKind 是通知来源的订阅种类,JSON 中为 "session" 或 "conversation"。

const (
	SubscriptionKindSession      SubscriptionKind = "session"
	SubscriptionKindConversation SubscriptionKind = "conversation"
)

通知来源:Session 内容订阅与对话标题、运行信息订阅。

type TerminalExitedParams

type TerminalExitedParams struct {
	TerminalID string `json:"terminal_id"`
	ExitCode   int    `json:"exit_code"`
	// Error 是进程没能取得退出码的原因(如远端连接断开),正常结束或被关闭时省略。
	Error string `json:"error,omitempty"`
}

TerminalExitedParams 是 serve 发给打开该终端的连接的 terminal/exited 的参数:终端进程结束后发出一次,此后这个 terminal_id 不再有通知。

type TerminalInputParams

type TerminalInputParams struct {
	TerminalID string `json:"terminal_id"`
	Data       []byte `json:"data"`
}

TerminalInputParams 是客户端发给 serve 的 terminal/input 的参数:data 原样写进终端,JSON 里是 base64。

type TerminalOpenParams

type TerminalOpenParams struct {
	// ExecutorID 为空时用 local Executor;virtual Executor 不支持终端。
	ExecutorID string `json:"executor_id"`
	// Directory 为空时用该 Executor 的默认工作目录;相对路径接在默认工作目录后面,~ 按 Executor 所在机器的主目录展开。
	Directory string `json:"directory"`
	// Rows、Cols 是终端初始行列数,为零时按 24×80。
	Rows uint16 `json:"rows"`
	Cols uint16 `json:"cols"`
	// Environment 是客户端的环境变量(格式同 os.Environ),只给 local Executor 的 shell 用;为空时继承 serve 进程的环境。
	Environment []string `json:"environment,omitempty"`
}

TerminalOpenParams 是 terminal/open 的参数:在 executor_id 对应的 Executor 上为这条连接新开一个终端,shell 的起始目录是 directory。

type TerminalOpenResult

type TerminalOpenResult struct {
	TerminalID string `json:"terminal_id"`
	ExecutorID string `json:"executor_id"`
	Directory  string `json:"directory"`
}

TerminalOpenResult 是 terminal/open 的结果:终端 ID,以及实际使用的 Executor 和已解析的绝对起始目录。

type TerminalOutputParams

type TerminalOutputParams struct {
	TerminalID string `json:"terminal_id"`
	Data       []byte `json:"data"`
}

TerminalOutputParams 是 serve 发给打开该终端的连接的 terminal/output 的参数:终端新产生的一批输出,JSON 里是 base64,按产生顺序送达。

type TerminalParams

type TerminalParams struct {
	TerminalID string `json:"terminal_id"`
}

TerminalParams 是 terminal/close 的参数:结束这条连接打开的一个终端。

type TerminalResizeParams

type TerminalResizeParams struct {
	TerminalID string `json:"terminal_id"`
	Rows       uint16 `json:"rows"`
	Cols       uint16 `json:"cols"`
}

TerminalResizeParams 是客户端发给 serve 的 terminal/resize 的参数:修改终端的行列数。

type TurnFinishedParams

type TurnFinishedParams struct {
	NotificationTarget
	TurnID           defs.TurnID      `json:"turn_id"`
	Status           defs.TurnStatus  `json:"status,omitempty"`
	InputItemIDs     []defs.ItemID    `json:"input_item_ids"`
	FinalModelCallID defs.ModelCallID `json:"final_model_call_id,omitempty"`
	Error            string           `json:"error,omitempty"`
}

TurnFinishedParams 由连接在 Turn 正常结束、失败或中断后发出;status 只在终态已保存时填写,输出另由 Item 通知发送。

type TurnStartedParams

type TurnStartedParams struct {
	NotificationTarget
	TurnID defs.TurnID `json:"turn_id"`
}

TurnStartedParams 由连接在 Session 开始执行 Turn 时发出,携带 TurnID。

type WithdrawInputParams

type WithdrawInputParams struct {
	ConversationID defs.ConversationID `json:"conversation_id"`
	ItemID         defs.ItemID         `json:"item_id"`
	ReturnContent  bool                `json:"return_content"`
}

WithdrawInputParams 是 conversation/withdrawInput 的参数。

type WithdrawInputResult

type WithdrawInputResult struct {
	Content []*defs.Content `json:"content,omitempty"`
}

WithdrawInputResult 是取回的用户消息内容;撤回时不返回内容。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL