Documentation
¶
Overview ¶
Package tool provides the tool registry with permissions and approval hooks.
Index ¶
- type ApprovalFunc
- type Definition
- type Handler
- type Permission
- type Registry
- func (r *Registry) Execute(ctx context.Context, name string, args map[string]any) (any, error)
- func (r *Registry) Get(name string) (*Definition, bool)
- func (r *Registry) List() []*Definition
- func (r *Registry) Register(def *Definition)
- func (r *Registry) SetApprovalHandler(fn ApprovalFunc)
- func (r *Registry) SetUserInputHandler(fn UserInputFunc)
- type Toolkit
- type UserInputFunc
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ApprovalFunc ¶
ApprovalFunc is called when a tool requires human approval. It should block until approved/denied and return true if approved.
type Definition ¶
type Definition struct {
Name string `json:"name"`
Description string `json:"description"`
Parameters map[string]any `json:"parameters"` // JSON Schema
Permission Permission `json:"permission"`
RequiresConfirmation bool `json:"requires_confirmation,omitempty"`
RequiresUserInput bool `json:"requires_user_input,omitempty"`
Handler Handler `json:"-"`
}
Definition describes a callable tool.
type Permission ¶
type Permission string
Permission levels for tool execution.
const ( PermAllow Permission = "allow" // auto-approved PermRequireApproval Permission = "require_approval" // needs human approval PermDeny Permission = "deny" // blocked )
type Registry ¶
type Registry struct {
// contains filtered or unexported fields
}
Registry manages tool definitions, permissions, and execution.
func (*Registry) Execute ¶
Execute runs a tool by name, enforcing permissions, confirmation, and user input.
func (*Registry) Get ¶ added in v0.3.0
func (r *Registry) Get(name string) (*Definition, bool)
Get returns a tool definition by name.
func (*Registry) Register ¶
func (r *Registry) Register(def *Definition)
Register adds a tool definition.
func (*Registry) SetApprovalHandler ¶
func (r *Registry) SetApprovalHandler(fn ApprovalFunc)
SetApprovalHandler sets the function called for tools requiring approval.
func (*Registry) SetUserInputHandler ¶ added in v0.3.0
func (r *Registry) SetUserInputHandler(fn UserInputFunc)
SetUserInputHandler sets the function called for tools requiring user input.
type Toolkit ¶ added in v0.3.0
type Toolkit struct {
Name string `json:"name"`
Description string `json:"description"`
Permission Permission `json:"permission"`
Tools []*Definition `json:"tools"`
Enabled bool `json:"enabled"`
}
Toolkit groups related tool definitions with shared metadata.
func NewToolkit ¶ added in v0.3.0
NewToolkit creates a new toolkit with the given name.
func (*Toolkit) Add ¶ added in v0.3.0
func (tk *Toolkit) Add(def *Definition) *Toolkit
Add adds a tool definition to the toolkit.
func (*Toolkit) Disable ¶ added in v0.3.0
func (tk *Toolkit) Disable()
Disable disables the toolkit.
func (*Toolkit) Register ¶ added in v0.3.0
Register registers all tools from this toolkit into the given registry. If the toolkit is disabled, no tools are registered.
func (*Toolkit) ToolNames ¶ added in v0.3.0
ToolNames returns the names of all tools in the toolkit.
func (*Toolkit) WithPermission ¶ added in v0.3.0
func (tk *Toolkit) WithPermission(p Permission) *Toolkit
WithPermission sets the default permission for all tools in the toolkit.