tools

package
v0.48.1 Latest Latest
Warning

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

Go to latest
Published: May 4, 2026 License: MIT Imports: 17 Imported by: 0

Documentation

Overview

internal/ccbroker/tools/permission.go

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrCrossUserDenied  = errors.New("cross_user_denied: cross-user executor invocation not allowed")
	ErrPermissionDenied = errors.New("permission_denied")
)

Functions

func BuildMcpServer

func BuildMcpServer(tctx *Context) *agentsdk.McpSdkServer

BuildMcpServer assembles every tool into one in-process MCP server. The server name "cc-broker" matches the AllowedTools wildcard "mcp__cc-broker__*" used by runner/options.go.

func BuildSystemPrompt added in v0.47.0

func BuildSystemPrompt(in PromptInput) string

Types

type CheckRequest added in v0.47.0

type CheckRequest struct {
	SessionID                 string
	TurnID                    string
	Tool                      string
	ExecutorID                string
	Args                      json.RawMessage
	PermissionMode            string
	SessionCreatorUserID      string
	ExecutorOwnerUserID       string
	ExecutorSharedToWorkspace bool
	Timeout                   time.Duration
}

type Context

type Context struct {
	SessionID           string
	WorkspaceID         string
	IMChannelID         string
	IMUserID            string
	ExecutorRegistryURL string
	AgentserverURL      string
	IMBridgeURL         string
	InternalAPISecret   string
	Workspace           *workspace.Workspace // for workspace_* tools
	HTTP                *http.Client         // shared HTTP client

	// TUI / permission gate (added in Phase 1 Task 5)
	ChannelType            string // "im" | "tui"
	CreatorUserID          string // for cross-user check
	PermissionMode         string // "ask" | "bypass"
	PreferredExecutorID    string // optional; injected into system prompt
	Gate                   *Gate  // reference to per-broker singleton
	AgentserverInternalURL string // for turn-finished callback
	CurrentTurnID          string // set per turn by handler_turns
}

Context bundles the per-turn dependencies that tool handlers close over. Constructed in handler_turns once per request and discarded after the turn.

type Decision added in v0.47.0

type Decision struct {
	Verdict string `json:"verdict"` // "allow" | "deny"
	Scope   string `json:"scope"`   // "once" | "always"
	By      string `json:"by,omitempty"`
}

type Event added in v0.47.0

type Event struct {
	Type         string          `json:"event_type"` // "permission_request" | "permission_resolved"
	SessionID    string          `json:"session_id,omitempty"`
	TurnID       string          `json:"turn_id,omitempty"`
	PermissionID string          `json:"permission_id,omitempty"`
	Tool         string          `json:"tool,omitempty"`
	ExecutorID   string          `json:"executor_id,omitempty"`
	Args         json.RawMessage `json:"args,omitempty"`
	Decision     *Decision       `json:"decision,omitempty"`
	Source       string          `json:"source,omitempty"` // "live" | "sticky"
	EmittedAt    time.Time       `json:"emitted_at,omitempty"`
}

type ExecutorInfo added in v0.47.0

type ExecutorInfo struct {
	ExecutorID  string
	DisplayName string
	Type        string
	Tools       []string
	WorkingDir  string
	Description string
}

ExecutorInfo describes one execution environment for the system prompt. Distinct from executorregistry.ExecutorInfo (which is a DB model); callers (e.g., runner/options.go) convert between them.

type Gate added in v0.47.0

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

func NewGate added in v0.47.0

func NewGate(notify Notifier) *Gate

func (*Gate) CancelTurn added in v0.47.0

func (g *Gate) CancelTurn(turnID string)

func (*Gate) Check added in v0.47.0

func (g *Gate) Check(ctx context.Context, req CheckRequest) error

func (*Gate) Resolve added in v0.47.0

func (g *Gate) Resolve(pid string, d Decision) error

type Notifier added in v0.47.0

type Notifier func(sessionID string, evt Event)

type PromptInput added in v0.47.0

type PromptInput struct {
	ChannelType         string
	PreferredExecutorID string
	Executors           []ExecutorInfo
}

Jump to

Keyboard shortcuts

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