agentacp

package
v0.0.11 Latest Latest
Warning

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

Go to latest
Published: Jun 26, 2026 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ParseIndexOrOption

func ParseIndexOrOption(raw string) (index int, optionID acp.PermissionOptionId, isIndex bool)

ParseIndexOrOption 尝试将文本解释为索引或 optionId。

Types

type AgentBridge

type AgentBridge struct {
	// contains filtered or unexported fields
}

AgentBridge 是 ACP Agent 侧的最小实现骨架。

设计目标: 1) command 负责编排; 2) 通过 session/update 向 UI(Client) 发送结构化事件; 3) 支持最小可用生命周期(initialize/new/prompt/cancel)。

func NewAgentBridge

func NewAgentBridge(opts BridgeOptions) *AgentBridge

NewAgentBridge 创建一个最小可用的 ACP AgentBridge。

func (*AgentBridge) Authenticate

Authenticate implements acp.Agent.

func (*AgentBridge) Cancel

func (b *AgentBridge) Cancel(_ context.Context, params acp.CancelNotification) error

Cancel implements acp.Agent.

func (*AgentBridge) Initialize

Initialize implements acp.Agent.

func (*AgentBridge) NewSession

NewSession implements acp.Agent.

func (*AgentBridge) Prompt

func (b *AgentBridge) Prompt(ctx context.Context, params acp.PromptRequest) (acp.PromptResponse, error)

Prompt implements acp.Agent.

func (*AgentBridge) RequestPermission

RequestPermission 向 Client 发起权限请求;若未配置 requester,默认 cancelled。

func (*AgentBridge) SetSessionMode

SetSessionMode implements acp.Agent.

func (*AgentBridge) SetSessionUpdater

func (b *AgentBridge) SetSessionUpdater(updater SessionUpdater)

SetSessionUpdater 设置 session/update 发送目标。

type BridgeOptions

type BridgeOptions struct {
	AgentInfo           acp.Implementation
	Executor            PromptExecutor
	PermissionRequester PermissionRequester
}

BridgeOptions 定义 ACP AgentBridge 的初始化选项。

type CallbackClient

type CallbackClient struct {
	PermissionBroker    *PermissionBroker
	OnReadTextFile      func(ctx context.Context, params acp.ReadTextFileRequest) (acp.ReadTextFileResponse, error)
	OnWriteTextFile     func(ctx context.Context, params acp.WriteTextFileRequest) (acp.WriteTextFileResponse, error)
	OnRequestPermission func(ctx context.Context, params acp.RequestPermissionRequest) (acp.RequestPermissionResponse, error)
	OnSessionUpdate     func(ctx context.Context, params acp.SessionNotification) error
	OnCreateTerminal    func(ctx context.Context, params acp.CreateTerminalRequest) (acp.CreateTerminalResponse, error)
	OnKillTerminal      func(ctx context.Context, params acp.KillTerminalCommandRequest) (acp.KillTerminalCommandResponse, error)
	OnTerminalOutput    func(ctx context.Context, params acp.TerminalOutputRequest) (acp.TerminalOutputResponse, error)
	OnReleaseTerminal   func(ctx context.Context, params acp.ReleaseTerminalRequest) (acp.ReleaseTerminalResponse, error)
	OnWaitTerminalExit  func(ctx context.Context, params acp.WaitForTerminalExitRequest) (acp.WaitForTerminalExitResponse, error)
}

CallbackClient 提供一个可插拔的 ACP Client 侧适配器。

说明: - 优先满足 session/update 与 session/request_permission; - 其余 fs/terminal 方法按需挂接; - 未提供回调时返回 MethodNotFound(或默认取消权限请求)。

func (*CallbackClient) CreateTerminal

func (*CallbackClient) KillTerminalCommand

func (*CallbackClient) ReadTextFile

func (*CallbackClient) ReleaseTerminal

func (*CallbackClient) RequestPermission

func (*CallbackClient) SessionUpdate

func (c *CallbackClient) SessionUpdate(ctx context.Context, params acp.SessionNotification) error

func (*CallbackClient) TerminalOutput

func (*CallbackClient) WaitForTerminalExit

func (*CallbackClient) WriteTextFile

type PendingPermission

type PendingPermission struct {
	RequestID  string
	SessionID  acp.SessionId
	ToolCallID acp.ToolCallId
	Title      string
	Options    []acp.PermissionOption
}

PendingPermission 表示一个待决策的权限请求快照。

type PermissionBroker

type PermissionBroker struct {
	// contains filtered or unexported fields
}

PermissionBroker 负责管理 ACP 权限请求生命周期。

func NewPermissionBroker

func NewPermissionBroker() *PermissionBroker

NewPermissionBroker 创建权限 broker。

func (*PermissionBroker) Pending

func (b *PermissionBroker) Pending() []PendingPermission

Pending 返回当前待处理权限请求快照。

func (*PermissionBroker) RequestPermission

RequestPermission 提交请求并阻塞等待决策。

func (*PermissionBroker) ResolveByIndex

func (b *PermissionBroker) ResolveByIndex(requestID string, oneBasedIndex int) error

ResolveByIndex 使用 1-based 索引选择选项。

func (*PermissionBroker) ResolveCancelled

func (b *PermissionBroker) ResolveCancelled(requestID string) error

ResolveCancelled 将请求决策为 cancelled。

func (*PermissionBroker) ResolveFirstByKind

func (b *PermissionBroker) ResolveFirstByKind(requestID string, kinds ...acp.PermissionOptionKind) error

ResolveFirstByKind 按 option kind 自动选择第一个匹配项。

func (*PermissionBroker) ResolveSelected

func (b *PermissionBroker) ResolveSelected(requestID string, optionID acp.PermissionOptionId) error

ResolveSelected 将请求决策为 selected。

type PermissionRequester

type PermissionRequester interface {
	RequestPermission(ctx context.Context, params acp.RequestPermissionRequest) (acp.RequestPermissionResponse, error)
}

PermissionRequester 抽象了 Agent 向 Client 发起 session/request_permission 的能力。

type PromptExecutor

type PromptExecutor interface {
	ExecutePrompt(ctx context.Context, sessionID acp.SessionId, prompt []acp.ContentBlock, emit func(update acp.SessionUpdate) error) (acp.StopReason, error)
}

PromptExecutor 由 command 编排层实现,用于驱动多轮/tool 调度。

type PromptExecutorFunc

type PromptExecutorFunc func(ctx context.Context, sessionID acp.SessionId, prompt []acp.ContentBlock, emit func(update acp.SessionUpdate) error) (acp.StopReason, error)

PromptExecutorFunc 允许直接用函数实现 PromptExecutor。

func (PromptExecutorFunc) ExecutePrompt

func (f PromptExecutorFunc) ExecutePrompt(ctx context.Context, sessionID acp.SessionId, prompt []acp.ContentBlock, emit func(update acp.SessionUpdate) error) (acp.StopReason, error)

ExecutePrompt implements PromptExecutor.

type RenderedBlock

type RenderedBlock struct {
	Kind  string
	Title string
	Lines []string
}

RenderedBlock 是从 ACP 事件提炼出的可展示结构。

func RenderSessionNotification

func RenderSessionNotification(params acp.SessionNotification) []RenderedBlock

RenderSessionNotification 将 ACP session/update 转换为可展示块。

type SessionUpdater

type SessionUpdater interface {
	SessionUpdate(ctx context.Context, params acp.SessionNotification) error
}

SessionUpdater 定义了向 Client 推送 session/update 的最小能力。

Jump to

Keyboard shortcuts

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