tools

package
v0.99.1 Latest Latest
Warning

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

Go to latest
Published: Jan 24, 2026 License: MIT Imports: 40 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ErrorNotAbsolutePath  = "NOT_ABSOLUTE_PATH"
	ErrorNotFound         = "NOT_FOUND"
	ErrorFileEmpty        = "FILE_EMPTY"
	ErrorPDFParseError    = "PDF_PARSE_ERROR"
	ErrorUnreadableBinary = "UNREADABLE_BINARY"
)

Error constants for consistent error handling

View Source
const (
	DefaultOffset     = 1
	DefaultLimit      = 2000
	MaxLineLength     = 2000
	EmptyFileReminder = "The file exists but is empty."
)

Constants for defaults and limits

View Source
const (
	ToolName      = "Write"
	DefaultFormat = "text"
	JSONFormat    = "json"
)

Variables

This section is empty.

Functions

func IsComputerUseTool added in v0.96.0

func IsComputerUseTool(toolName string) bool

IsComputerUseTool returns true if the given tool name is a computer use tool Computer use tools operate directly on the computer (mouse, keyboard, screenshot) and bypass the standard approval flow

func ScaleAPIToScreen added in v0.96.0

func ScaleAPIToScreen(apiX, apiY, apiWidth, apiHeight, screenWidth, screenHeight int) (int, int)

ScaleAPIToScreen converts coordinates from API space (Claude's screenshot) to screen space (actual display) using Anthropic's proportional scaling approach.

This implementation follows the official Anthropic computer-use-demo strategy: - Simple proportional scaling with separate X/Y factors - No letterboxing - screenshots are force-resized to exact dimensions - Handles aspect ratio mismatches automatically through independent scaling

Parameters:

  • apiX, apiY: Coordinates from Claude's response (in screenshot space)
  • apiWidth, apiHeight: Target screenshot dimensions (e.g., 1024x768)
  • screenWidth, screenHeight: Actual logical screen dimensions

Returns:

  • screenX, screenY: Coordinates in actual screen space for mouse operations

Example:

API screenshot: 1024x768
Actual screen: 2048x1536
API coordinate (512, 384) → Screen coordinate (1024, 768)

func ScaleScreenToAPI added in v0.96.0

func ScaleScreenToAPI(screenX, screenY, screenWidth, screenHeight, apiWidth, apiHeight int) (int, int)

ScaleScreenToAPI converts coordinates from screen space to API space. This is the inverse of ScaleAPIToScreen and is used when capturing screenshots.

Parameters:

  • screenX, screenY: Coordinates in actual screen space
  • screenWidth, screenHeight: Actual logical screen dimensions
  • apiWidth, apiHeight: Target screenshot dimensions

Returns:

  • apiX, apiY: Coordinates in API/screenshot space

Types

type A2AQueryAgentResult added in v0.51.0

type A2AQueryAgentResult struct {
	AgentName string         `json:"agent_name"`
	Query     string         `json:"query"`
	Response  *adk.AgentCard `json:"response"`
	Success   bool           `json:"success"`
	Message   string         `json:"message"`
	Duration  time.Duration  `json:"duration"`
}

type A2AQueryAgentTool added in v0.51.0

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

func NewA2AQueryAgentTool added in v0.51.0

func NewA2AQueryAgentTool(cfg *config.Config) *A2AQueryAgentTool

func (*A2AQueryAgentTool) Definition added in v0.51.0

func (t *A2AQueryAgentTool) Definition() sdk.ChatCompletionTool

func (*A2AQueryAgentTool) Execute added in v0.51.0

func (*A2AQueryAgentTool) FormatForLLM added in v0.51.0

func (t *A2AQueryAgentTool) FormatForLLM(result *domain.ToolExecutionResult) string

func (*A2AQueryAgentTool) FormatForUI added in v0.51.0

func (t *A2AQueryAgentTool) FormatForUI(result *domain.ToolExecutionResult) string

func (*A2AQueryAgentTool) FormatPreview added in v0.51.0

func (t *A2AQueryAgentTool) FormatPreview(result *domain.ToolExecutionResult) string

func (*A2AQueryAgentTool) FormatResult added in v0.51.0

func (t *A2AQueryAgentTool) FormatResult(result *domain.ToolExecutionResult, formatType domain.FormatterType) string

func (*A2AQueryAgentTool) IsEnabled added in v0.51.0

func (t *A2AQueryAgentTool) IsEnabled() bool

func (*A2AQueryAgentTool) ShouldAlwaysExpand added in v0.51.0

func (t *A2AQueryAgentTool) ShouldAlwaysExpand() bool

func (*A2AQueryAgentTool) ShouldCollapseArg added in v0.51.0

func (t *A2AQueryAgentTool) ShouldCollapseArg(key string) bool

func (*A2AQueryAgentTool) Validate added in v0.51.0

func (t *A2AQueryAgentTool) Validate(args map[string]any) error

type A2AQueryTaskResult added in v0.51.0

type A2AQueryTaskResult struct {
	AgentName string        `json:"agent_name"`
	ContextID string        `json:"context_id"`
	TaskID    string        `json:"task_id"`
	Task      *adk.Task     `json:"task"`
	Success   bool          `json:"success"`
	Message   string        `json:"message"`
	Duration  time.Duration `json:"duration"`
}

type A2AQueryTaskTool added in v0.51.0

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

func NewA2AQueryTaskTool added in v0.51.0

func NewA2AQueryTaskTool(cfg *config.Config, taskTracker domain.TaskTracker) *A2AQueryTaskTool

func (*A2AQueryTaskTool) Definition added in v0.51.0

func (t *A2AQueryTaskTool) Definition() sdk.ChatCompletionTool

func (*A2AQueryTaskTool) Execute added in v0.51.0

func (t *A2AQueryTaskTool) Execute(ctx context.Context, args map[string]any) (*domain.ToolExecutionResult, error)

func (*A2AQueryTaskTool) FormatForLLM added in v0.51.0

func (t *A2AQueryTaskTool) FormatForLLM(result *domain.ToolExecutionResult) string

func (*A2AQueryTaskTool) FormatForUI added in v0.51.0

func (t *A2AQueryTaskTool) FormatForUI(result *domain.ToolExecutionResult) string

func (*A2AQueryTaskTool) FormatPreview added in v0.51.0

func (t *A2AQueryTaskTool) FormatPreview(result *domain.ToolExecutionResult) string

func (*A2AQueryTaskTool) FormatResult added in v0.51.0

func (t *A2AQueryTaskTool) FormatResult(result *domain.ToolExecutionResult, formatType domain.FormatterType) string

func (*A2AQueryTaskTool) IsEnabled added in v0.51.0

func (t *A2AQueryTaskTool) IsEnabled() bool

func (*A2AQueryTaskTool) ShouldAlwaysExpand added in v0.51.0

func (t *A2AQueryTaskTool) ShouldAlwaysExpand() bool

func (*A2AQueryTaskTool) ShouldCollapseArg added in v0.51.0

func (t *A2AQueryTaskTool) ShouldCollapseArg(key string) bool

func (*A2AQueryTaskTool) Validate added in v0.51.0

func (t *A2AQueryTaskTool) Validate(args map[string]any) error

type A2ASubmitTaskResult added in v0.51.0

type A2ASubmitTaskResult struct {
	TaskID     string    `json:"task_id"`
	ContextID  string    `json:"context_id,omitempty"`
	AgentURL   string    `json:"agent_url"`
	State      string    `json:"state"`
	Message    string    `json:"message"`
	TaskResult string    `json:"task_result,omitempty"`
	Success    bool      `json:"success"`
	Task       *adk.Task `json:"task,omitempty"`
}

A2ASubmitTaskResult represents the result of an A2A task operation

type A2ASubmitTaskTool added in v0.51.0

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

A2ASubmitTaskTool handles A2A task submission and management

func NewA2ASubmitTaskTool added in v0.51.0

func NewA2ASubmitTaskTool(cfg *config.Config, taskTracker domain.TaskTracker) *A2ASubmitTaskTool

NewA2ASubmitTaskTool creates a new A2A task tool

func NewA2ASubmitTaskToolWithClient added in v0.51.0

func NewA2ASubmitTaskToolWithClient(cfg *config.Config, taskTracker domain.TaskTracker, client client.A2AClient) *A2ASubmitTaskTool

NewA2ASubmitTaskToolWithClient creates a new A2A task tool with an injected client (for testing)

func (*A2ASubmitTaskTool) Definition added in v0.51.0

func (t *A2ASubmitTaskTool) Definition() sdk.ChatCompletionTool

Definition returns the tool definition for the LLM

func (*A2ASubmitTaskTool) Execute added in v0.51.0

Execute runs the tool with given arguments

func (*A2ASubmitTaskTool) FormatForLLM added in v0.51.0

func (t *A2ASubmitTaskTool) FormatForLLM(result *domain.ToolExecutionResult) string

FormatForLLM formats the result for LLM consumption with detailed information

func (*A2ASubmitTaskTool) FormatForUI added in v0.51.0

func (t *A2ASubmitTaskTool) FormatForUI(result *domain.ToolExecutionResult) string

FormatForUI formats the result for UI display

func (*A2ASubmitTaskTool) FormatPreview added in v0.51.0

func (t *A2ASubmitTaskTool) FormatPreview(result *domain.ToolExecutionResult) string

FormatPreview returns a short preview of the result for UI display

func (*A2ASubmitTaskTool) FormatResult added in v0.51.0

func (t *A2ASubmitTaskTool) FormatResult(result *domain.ToolExecutionResult, formatType domain.FormatterType) string

FormatResult formats tool execution results for different contexts

func (*A2ASubmitTaskTool) IsEnabled added in v0.51.0

func (t *A2ASubmitTaskTool) IsEnabled() bool

IsEnabled returns whether this tool is enabled

func (*A2ASubmitTaskTool) ShouldAlwaysExpand added in v0.51.0

func (t *A2ASubmitTaskTool) ShouldAlwaysExpand() bool

ShouldAlwaysExpand determines if tool results should always be expanded in UI

func (*A2ASubmitTaskTool) ShouldCollapseArg added in v0.51.0

func (t *A2ASubmitTaskTool) ShouldCollapseArg(key string) bool

ShouldCollapseArg determines if an argument should be collapsed in display

func (*A2ASubmitTaskTool) Validate added in v0.51.0

func (t *A2ASubmitTaskTool) Validate(args map[string]any) error

Validate checks if the tool arguments are valid

type ActivateAppTool added in v0.96.0

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

ActivateAppTool switches focus to a specific application

func NewActivateAppTool added in v0.96.0

func NewActivateAppTool(config domain.ConfigService) *ActivateAppTool

NewActivateAppTool creates a new ActivateApp tool

func (*ActivateAppTool) Definition added in v0.96.0

func (t *ActivateAppTool) Definition() sdk.ChatCompletionTool

Definition returns the tool definition for ActivateApp

func (*ActivateAppTool) Execute added in v0.96.0

func (t *ActivateAppTool) Execute(ctx context.Context, args map[string]any) (*domain.ToolExecutionResult, error)

Execute executes the ActivateApp tool

func (*ActivateAppTool) FormatForLLM added in v0.96.0

func (t *ActivateAppTool) FormatForLLM(result *domain.ToolExecutionResult) string

FormatForLLM formats the result for LLM consumption

func (*ActivateAppTool) FormatPreview added in v0.96.0

func (t *ActivateAppTool) FormatPreview(result *domain.ToolExecutionResult) string

FormatPreview formats the result for display preview

func (*ActivateAppTool) FormatResult added in v0.96.0

func (t *ActivateAppTool) FormatResult(result *domain.ToolExecutionResult, formatType domain.FormatterType) string

FormatResult formats the result based on the requested format type

func (*ActivateAppTool) IsEnabled added in v0.96.0

func (t *ActivateAppTool) IsEnabled() bool

IsEnabled returns whether the tool is enabled

func (*ActivateAppTool) ShouldAlwaysExpand added in v0.96.0

func (t *ActivateAppTool) ShouldAlwaysExpand() bool

ShouldAlwaysExpand determines if tool results should always be expanded in UI

func (*ActivateAppTool) ShouldCollapseArg added in v0.96.0

func (t *ActivateAppTool) ShouldCollapseArg(key string) bool

ShouldCollapseArg determines if an argument should be collapsed in display

func (*ActivateAppTool) Validate added in v0.96.0

func (t *ActivateAppTool) Validate(args map[string]any) error

Validate validates ActivateApp arguments

type BashOutputTool added in v0.81.0

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

BashOutputTool retrieves output from background bash shells

func NewBashOutputTool added in v0.81.0

func NewBashOutputTool(cfg *config.Config, shellService domain.BackgroundShellService) *BashOutputTool

NewBashOutputTool creates a new BashOutput tool

func (*BashOutputTool) Definition added in v0.81.0

func (t *BashOutputTool) Definition() sdk.ChatCompletionTool

Definition returns the tool definition for the SDK

func (*BashOutputTool) Execute added in v0.81.0

func (t *BashOutputTool) Execute(ctx context.Context, args map[string]any) (*domain.ToolExecutionResult, error)

Execute retrieves output from a background shell

func (*BashOutputTool) FormatForLLM added in v0.81.0

func (t *BashOutputTool) FormatForLLM(result *domain.ToolExecutionResult) string

FormatForLLM formats the result for LLM consumption

func (*BashOutputTool) FormatForUI added in v0.81.0

func (t *BashOutputTool) FormatForUI(result *domain.ToolExecutionResult) string

FormatForUI formats the result for UI display

func (*BashOutputTool) FormatPreview added in v0.81.0

func (t *BashOutputTool) FormatPreview(result *domain.ToolExecutionResult) string

FormatPreview returns a short preview of the result for UI display

func (*BashOutputTool) FormatResult added in v0.81.0

func (t *BashOutputTool) FormatResult(result *domain.ToolExecutionResult, formatType domain.FormatterType) string

FormatResult formats tool execution results for different contexts

func (*BashOutputTool) IsEnabled added in v0.81.0

func (t *BashOutputTool) IsEnabled() bool

IsEnabled returns whether the tool is enabled

func (*BashOutputTool) ShouldAlwaysExpand added in v0.81.0

func (t *BashOutputTool) ShouldAlwaysExpand() bool

ShouldAlwaysExpand determines if tool results should always be expanded in UI

func (*BashOutputTool) ShouldCollapseArg added in v0.81.0

func (t *BashOutputTool) ShouldCollapseArg(key string) bool

ShouldCollapseArg determines if a specific argument should be collapsed in UI

func (*BashOutputTool) Validate added in v0.81.0

func (t *BashOutputTool) Validate(args map[string]any) error

Validate validates the tool arguments

type BashResult

type BashResult struct {
	Command  string `json:"command"`
	Output   string `json:"output"`
	Error    string `json:"error,omitempty"`
	ExitCode int    `json:"exit_code"`
	Duration string `json:"duration"`
}

BashResult represents the internal result of a bash command execution

type BashTool

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

BashTool handles bash command execution with security validation

func NewBashTool

func NewBashTool(cfg *config.Config, backgroundShellService domain.BackgroundShellService) *BashTool

NewBashTool creates a new bash tool

func (*BashTool) Definition

func (t *BashTool) Definition() sdk.ChatCompletionTool

Definition returns the tool definition for the LLM

func (*BashTool) Execute

func (t *BashTool) Execute(ctx context.Context, args map[string]any) (*domain.ToolExecutionResult, error)

Execute runs the bash tool with given arguments

func (*BashTool) FormatForLLM added in v0.33.4

func (t *BashTool) FormatForLLM(result *domain.ToolExecutionResult) string

FormatForLLM formats the result for LLM consumption with detailed information

func (*BashTool) FormatForUI added in v0.33.4

func (t *BashTool) FormatForUI(result *domain.ToolExecutionResult) string

FormatForUI formats the result for UI display

func (*BashTool) FormatPreview added in v0.33.4

func (t *BashTool) FormatPreview(result *domain.ToolExecutionResult) string

FormatPreview returns a short preview of the result for UI display

func (*BashTool) FormatResult added in v0.33.4

func (t *BashTool) FormatResult(result *domain.ToolExecutionResult, formatType domain.FormatterType) string

FormatResult formats tool execution results for different contexts

func (*BashTool) IsEnabled

func (t *BashTool) IsEnabled() bool

IsEnabled returns whether the bash tool is enabled

func (*BashTool) ShouldAlwaysExpand added in v0.36.0

func (t *BashTool) ShouldAlwaysExpand() bool

ShouldAlwaysExpand determines if tool results should always be expanded in UI

func (*BashTool) ShouldCollapseArg added in v0.33.4

func (t *BashTool) ShouldCollapseArg(key string) bool

ShouldCollapseArg determines if an argument should be collapsed in display

func (*BashTool) Validate

func (t *BashTool) Validate(args map[string]any) error

Validate checks if the bash tool arguments are valid

type DeleteResult added in v0.18.0

type DeleteResult struct {
	Path              string   `json:"path"`
	DeletedFiles      []string `json:"deleted_files"`
	DeletedDirs       []string `json:"deleted_dirs"`
	TotalFilesDeleted int      `json:"total_files_deleted"`
	TotalDirsDeleted  int      `json:"total_dirs_deleted"`
	WildcardExpanded  bool     `json:"wildcard_expanded"`
	Errors            []string `json:"errors,omitempty"`
}

DeleteResult represents the result of a delete operation

type DeleteTool added in v0.18.0

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

DeleteTool handles file and directory deletion operations

func NewDeleteTool added in v0.18.0

func NewDeleteTool(cfg *config.Config) *DeleteTool

NewDeleteTool creates a new delete tool

func (*DeleteTool) Definition added in v0.18.0

func (t *DeleteTool) Definition() sdk.ChatCompletionTool

Definition returns the tool definition for the LLM

func (*DeleteTool) Execute added in v0.18.0

func (t *DeleteTool) Execute(ctx context.Context, args map[string]any) (*domain.ToolExecutionResult, error)

Execute runs the delete tool with given arguments

func (*DeleteTool) FormatForLLM added in v0.33.4

func (t *DeleteTool) FormatForLLM(result *domain.ToolExecutionResult) string

FormatForLLM formats the result for LLM consumption with detailed information

func (*DeleteTool) FormatForUI added in v0.33.4

func (t *DeleteTool) FormatForUI(result *domain.ToolExecutionResult) string

FormatForUI formats the result for UI display

func (*DeleteTool) FormatPreview added in v0.33.4

func (t *DeleteTool) FormatPreview(result *domain.ToolExecutionResult) string

FormatPreview returns a short preview of the result for UI display

func (*DeleteTool) FormatResult added in v0.33.4

func (t *DeleteTool) FormatResult(result *domain.ToolExecutionResult, formatType domain.FormatterType) string

FormatResult formats tool execution results for different contexts

func (*DeleteTool) IsEnabled added in v0.18.0

func (t *DeleteTool) IsEnabled() bool

IsEnabled returns whether the delete tool is enabled

func (*DeleteTool) ShouldAlwaysExpand added in v0.36.0

func (t *DeleteTool) ShouldAlwaysExpand() bool

ShouldAlwaysExpand determines if tool results should always be expanded in UI

func (*DeleteTool) ShouldCollapseArg added in v0.33.4

func (t *DeleteTool) ShouldCollapseArg(key string) bool

ShouldCollapseArg determines if an argument should be collapsed in display

func (*DeleteTool) Validate added in v0.18.0

func (t *DeleteTool) Validate(args map[string]any) error

Validate checks if the delete tool arguments are valid

type EditOperation added in v0.22.0

type EditOperation struct {
	OldString  string
	NewString  string
	ReplaceAll bool
}

EditOperation represents a single edit operation

type EditTool added in v0.21.0

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

EditTool handles exact string replacements in files with strict safety rules

func NewEditTool added in v0.21.0

func NewEditTool(cfg *config.Config) *EditTool

NewEditTool creates a new edit tool

func NewEditToolWithRegistry added in v0.21.0

func NewEditToolWithRegistry(cfg *config.Config, registry ReadToolTracker) *EditTool

NewEditToolWithRegistry creates a new edit tool with a registry for read tracking

func (*EditTool) Definition added in v0.21.0

func (t *EditTool) Definition() sdk.ChatCompletionTool

Definition returns the tool definition for the LLM

func (*EditTool) Execute added in v0.21.0

func (t *EditTool) Execute(ctx context.Context, args map[string]any) (*domain.ToolExecutionResult, error)

Execute runs the edit tool with given arguments

func (*EditTool) FormatArgumentsForApproval added in v0.33.5

func (t *EditTool) FormatArgumentsForApproval(args map[string]any) string

FormatArgumentsForApproval formats arguments for approval display with diff preview

func (*EditTool) FormatForLLM added in v0.33.4

func (t *EditTool) FormatForLLM(result *domain.ToolExecutionResult) string

FormatForLLM formats the result for LLM consumption with detailed information

func (*EditTool) FormatForUI added in v0.33.4

func (t *EditTool) FormatForUI(result *domain.ToolExecutionResult) string

FormatForUI formats the result for UI display

func (*EditTool) FormatPreview added in v0.33.4

func (t *EditTool) FormatPreview(result *domain.ToolExecutionResult) string

FormatPreview returns a short preview of the result for UI display

func (*EditTool) FormatResult added in v0.33.4

func (t *EditTool) FormatResult(result *domain.ToolExecutionResult, formatType domain.FormatterType) string

FormatResult formats tool execution results for different contexts

func (*EditTool) GetDiffInfo added in v0.38.0

func (t *EditTool) GetDiffInfo(args map[string]any) *components.DiffInfo

GetDiffInfo implements the DiffFormatter interface

func (*EditTool) IsEnabled added in v0.21.0

func (t *EditTool) IsEnabled() bool

IsEnabled returns whether the edit tool is enabled

func (*EditTool) ShouldAlwaysExpand added in v0.36.0

func (t *EditTool) ShouldAlwaysExpand() bool

ShouldAlwaysExpand determines if tool results should always be expanded in UI

func (*EditTool) ShouldCollapseArg added in v0.33.4

func (t *EditTool) ShouldCollapseArg(key string) bool

ShouldCollapseArg determines if an argument should be collapsed in display

func (*EditTool) Validate added in v0.21.0

func (t *EditTool) Validate(args map[string]any) error

Validate checks if the edit tool arguments are valid

type FileReadResult

type FileReadResult struct {
	FilePath  string `json:"file_path"`
	Content   string `json:"content"`
	Size      int64  `json:"size"`
	StartLine int    `json:"start_line,omitempty"`
	EndLine   int    `json:"end_line,omitempty"`
	Error     string `json:"error,omitempty"`
}

FileReadResult represents the internal result of a file read operation

type GetFocusedAppTool added in v0.96.0

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

GetFocusedAppTool gets the currently focused application

func NewGetFocusedAppTool added in v0.96.0

func NewGetFocusedAppTool(config domain.ConfigService) *GetFocusedAppTool

NewGetFocusedAppTool creates a new GetFocusedApp tool

func (*GetFocusedAppTool) Definition added in v0.96.0

func (t *GetFocusedAppTool) Definition() sdk.ChatCompletionTool

Definition returns the tool definition for GetFocusedApp

func (*GetFocusedAppTool) Execute added in v0.96.0

Execute executes the GetFocusedApp tool

func (*GetFocusedAppTool) FormatForLLM added in v0.96.0

func (t *GetFocusedAppTool) FormatForLLM(result *domain.ToolExecutionResult) string

FormatForLLM formats the result for LLM consumption

func (*GetFocusedAppTool) FormatPreview added in v0.96.0

func (t *GetFocusedAppTool) FormatPreview(result *domain.ToolExecutionResult) string

FormatPreview formats the result for display preview

func (*GetFocusedAppTool) FormatResult added in v0.96.0

func (t *GetFocusedAppTool) FormatResult(result *domain.ToolExecutionResult, formatType domain.FormatterType) string

FormatResult formats the result based on the requested format type

func (*GetFocusedAppTool) IsEnabled added in v0.96.0

func (t *GetFocusedAppTool) IsEnabled() bool

IsEnabled returns whether the tool is enabled

func (*GetFocusedAppTool) ShouldAlwaysExpand added in v0.96.0

func (t *GetFocusedAppTool) ShouldAlwaysExpand() bool

ShouldAlwaysExpand determines if tool results should always be expanded in UI

func (*GetFocusedAppTool) ShouldCollapseArg added in v0.96.0

func (t *GetFocusedAppTool) ShouldCollapseArg(key string) bool

ShouldCollapseArg determines if an argument should be collapsed in display

func (*GetFocusedAppTool) Validate added in v0.96.0

func (t *GetFocusedAppTool) Validate(args map[string]any) error

Validate validates GetFocusedApp arguments

type GetLatestScreenshotTool added in v0.96.0

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

GetLatestScreenshotTool retrieves the latest screenshot from the circular buffer This tool is used when screenshot streaming is enabled to avoid redundant captures

func NewGetLatestScreenshotTool added in v0.96.0

func NewGetLatestScreenshotTool(cfg *config.Config, provider domain.ScreenshotProvider) *GetLatestScreenshotTool

NewGetLatestScreenshotTool creates a new tool that reads from the screenshot buffer

func (*GetLatestScreenshotTool) Definition added in v0.96.0

Definition returns the tool definition for the LLM

func (*GetLatestScreenshotTool) Execute added in v0.96.0

Execute retrieves the latest screenshot from the buffer

func (*GetLatestScreenshotTool) FormatForLLM added in v0.96.0

func (t *GetLatestScreenshotTool) FormatForLLM(result *domain.ToolExecutionResult) string

FormatForLLM formats the result for LLM consumption

func (*GetLatestScreenshotTool) FormatPreview added in v0.96.0

func (t *GetLatestScreenshotTool) FormatPreview(result *domain.ToolExecutionResult) string

FormatPreview returns a short preview of the result for UI display

func (*GetLatestScreenshotTool) FormatResult added in v0.96.0

func (t *GetLatestScreenshotTool) FormatResult(result *domain.ToolExecutionResult, formatType domain.FormatterType) string

FormatResult formats tool execution results for different contexts

func (*GetLatestScreenshotTool) IsEnabled added in v0.96.0

func (t *GetLatestScreenshotTool) IsEnabled() bool

IsEnabled returns whether this tool is enabled

func (*GetLatestScreenshotTool) ShouldAlwaysExpand added in v0.96.0

func (t *GetLatestScreenshotTool) ShouldAlwaysExpand() bool

ShouldAlwaysExpand determines if tool results should always be expanded in UI

func (*GetLatestScreenshotTool) ShouldCollapseArg added in v0.96.0

func (t *GetLatestScreenshotTool) ShouldCollapseArg(key string) bool

ShouldCollapseArg determines if an argument should be collapsed in display

func (*GetLatestScreenshotTool) Validate added in v0.96.0

func (t *GetLatestScreenshotTool) Validate(args map[string]any) error

Validate checks if the tool arguments are valid

type GithubTool added in v0.31.0

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

GithubTool handles GitHub API operations

func NewGithubTool added in v0.31.0

func NewGithubTool(cfg *config.Config, imageService domain.ImageService) *GithubTool

NewGithubTool creates a new GitHub tool

func (*GithubTool) Definition added in v0.31.0

func (t *GithubTool) Definition() sdk.ChatCompletionTool

Definition returns the tool definition for the LLM

func (*GithubTool) Execute added in v0.31.0

func (t *GithubTool) Execute(ctx context.Context, args map[string]any) (*domain.ToolExecutionResult, error)

Execute runs the GitHub tool with given arguments

func (*GithubTool) FormatForLLM added in v0.33.4

func (t *GithubTool) FormatForLLM(result *domain.ToolExecutionResult) string

FormatForLLM formats the result for LLM consumption with detailed information

func (*GithubTool) FormatForUI added in v0.33.4

func (t *GithubTool) FormatForUI(result *domain.ToolExecutionResult) string

FormatForUI formats the result for UI display

func (*GithubTool) FormatPreview added in v0.33.4

func (t *GithubTool) FormatPreview(result *domain.ToolExecutionResult) string

FormatPreview returns a short preview of the result for UI display

func (*GithubTool) FormatResult added in v0.33.4

func (t *GithubTool) FormatResult(result *domain.ToolExecutionResult, formatType domain.FormatterType) string

FormatResult formats tool execution results for different contexts

func (*GithubTool) IsEnabled added in v0.31.0

func (t *GithubTool) IsEnabled() bool

IsEnabled returns whether the GitHub tool is enabled

func (*GithubTool) ShouldAlwaysExpand added in v0.36.0

func (t *GithubTool) ShouldAlwaysExpand() bool

ShouldAlwaysExpand determines if tool results should always be expanded in UI

func (*GithubTool) ShouldCollapseArg added in v0.33.4

func (t *GithubTool) ShouldCollapseArg(key string) bool

ShouldCollapseArg determines if an argument should be collapsed in display

func (*GithubTool) Validate added in v0.31.0

func (t *GithubTool) Validate(args map[string]any) error

Validate checks if the GitHub tool arguments are valid

type GoogleSearchItem

type GoogleSearchItem struct {
	Title   string `json:"title"`
	Link    string `json:"link"`
	Snippet string `json:"snippet"`
}

GoogleSearchItem represents a single search result from Google API

type GoogleSearchResponse

type GoogleSearchResponse struct {
	Items []GoogleSearchItem `json:"items"`
}

GoogleSearchResponse represents the response from Google Custom Search API

type GrepCount added in v0.19.0

type GrepCount struct {
	File  string `json:"file"`
	Count int    `json:"count"`
}

GrepCount represents match count per file

type GrepMatch added in v0.19.0

type GrepMatch struct {
	File string `json:"file"`
	Line int    `json:"line"`
	Text string `json:"text"`
}

GrepMatch represents a single match with line content

type GrepResult added in v0.19.0

type GrepResult struct {
	Pattern    string      `json:"pattern"`
	OutputMode string      `json:"output_mode"`
	Files      []string    `json:"files,omitempty"`
	Matches    []GrepMatch `json:"matches,omitempty"`
	Counts     []GrepCount `json:"counts,omitempty"`
	Total      int         `json:"total"`
	Truncated  bool        `json:"truncated"`
	Duration   string      `json:"duration"`
	Error      string      `json:"error,omitempty"`
}

GrepResult represents the result of a grep operation

type GrepTool added in v0.19.0

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

GrepTool handles search operations with ripgrep fallback to Go implementation

func NewGrepTool added in v0.19.0

func NewGrepTool(cfg *config.Config) *GrepTool

NewGrepTool creates a new grep tool

func (*GrepTool) Definition added in v0.19.0

func (t *GrepTool) Definition() sdk.ChatCompletionTool

Definition returns the tool definition for the LLM

func (*GrepTool) Execute added in v0.19.0

func (t *GrepTool) Execute(ctx context.Context, args map[string]any) (*domain.ToolExecutionResult, error)

Execute runs the grep tool with given arguments

func (*GrepTool) FormatForLLM added in v0.33.4

func (t *GrepTool) FormatForLLM(result *domain.ToolExecutionResult) string

FormatForLLM formats the result for LLM consumption with detailed information

func (*GrepTool) FormatForUI added in v0.33.4

func (t *GrepTool) FormatForUI(result *domain.ToolExecutionResult) string

FormatForUI formats the result for UI display

func (*GrepTool) FormatPreview added in v0.33.4

func (t *GrepTool) FormatPreview(result *domain.ToolExecutionResult) string

FormatPreview returns a short preview of the result for UI display

func (*GrepTool) FormatResult added in v0.33.4

func (t *GrepTool) FormatResult(result *domain.ToolExecutionResult, formatType domain.FormatterType) string

FormatResult formats tool execution results for different contexts

func (*GrepTool) IsEnabled added in v0.19.0

func (t *GrepTool) IsEnabled() bool

IsEnabled returns whether the grep tool is enabled

func (*GrepTool) ShouldAlwaysExpand added in v0.36.0

func (t *GrepTool) ShouldAlwaysExpand() bool

ShouldAlwaysExpand determines if tool results should always be expanded in UI

func (*GrepTool) ShouldCollapseArg added in v0.33.4

func (t *GrepTool) ShouldCollapseArg(key string) bool

ShouldCollapseArg determines if an argument should be collapsed in display

func (*GrepTool) Validate added in v0.19.0

func (t *GrepTool) Validate(args map[string]any) error

Validate checks if the grep tool arguments are valid

type KeyboardTypeTool added in v0.96.0

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

KeyboardTypeTool types text or sends key combinations

func NewKeyboardTypeTool added in v0.96.0

func NewKeyboardTypeTool(cfg *config.Config, rateLimiter domain.RateLimiter, displayProvider display.Provider) *KeyboardTypeTool

NewKeyboardTypeTool creates a new keyboard type tool

func (*KeyboardTypeTool) Definition added in v0.96.0

func (t *KeyboardTypeTool) Definition() sdk.ChatCompletionTool

Definition returns the tool definition for the LLM

func (*KeyboardTypeTool) Execute added in v0.96.0

func (t *KeyboardTypeTool) Execute(ctx context.Context, args map[string]any) (*domain.ToolExecutionResult, error)

Execute runs the keyboard type tool with given arguments

func (*KeyboardTypeTool) FormatForLLM added in v0.96.0

func (t *KeyboardTypeTool) FormatForLLM(result *domain.ToolExecutionResult) string

FormatForLLM formats the result for LLM consumption

func (*KeyboardTypeTool) FormatPreview added in v0.96.0

func (t *KeyboardTypeTool) FormatPreview(result *domain.ToolExecutionResult) string

FormatPreview returns a short preview of the result for UI display

func (*KeyboardTypeTool) FormatResult added in v0.96.0

func (t *KeyboardTypeTool) FormatResult(result *domain.ToolExecutionResult, formatType domain.FormatterType) string

FormatResult formats tool execution results for different contexts

func (*KeyboardTypeTool) IsEnabled added in v0.96.0

func (t *KeyboardTypeTool) IsEnabled() bool

IsEnabled returns whether this tool is enabled

func (*KeyboardTypeTool) ShouldAlwaysExpand added in v0.96.0

func (t *KeyboardTypeTool) ShouldAlwaysExpand() bool

ShouldAlwaysExpand determines if tool results should always be expanded in UI

func (*KeyboardTypeTool) ShouldCollapseArg added in v0.96.0

func (t *KeyboardTypeTool) ShouldCollapseArg(key string) bool

ShouldCollapseArg determines if an argument should be collapsed in display

func (*KeyboardTypeTool) Validate added in v0.96.0

func (t *KeyboardTypeTool) Validate(args map[string]any) error

Validate checks if the tool arguments are valid

type KillShellTool added in v0.81.0

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

KillShellTool cancels a running background shell

func NewKillShellTool added in v0.81.0

func NewKillShellTool(cfg *config.Config, shellService domain.BackgroundShellService) *KillShellTool

NewKillShellTool creates a new KillShell tool

func (*KillShellTool) Definition added in v0.81.0

func (t *KillShellTool) Definition() sdk.ChatCompletionTool

Definition returns the tool definition for the SDK

func (*KillShellTool) Execute added in v0.81.0

func (t *KillShellTool) Execute(ctx context.Context, args map[string]any) (*domain.ToolExecutionResult, error)

Execute cancels a background shell

func (*KillShellTool) FormatForLLM added in v0.81.0

func (t *KillShellTool) FormatForLLM(result *domain.ToolExecutionResult) string

FormatForLLM formats the result for LLM consumption

func (*KillShellTool) FormatForUI added in v0.81.0

func (t *KillShellTool) FormatForUI(result *domain.ToolExecutionResult) string

FormatForUI formats the result for UI display

func (*KillShellTool) FormatPreview added in v0.81.0

func (t *KillShellTool) FormatPreview(result *domain.ToolExecutionResult) string

FormatPreview returns a short preview of the result for UI display

func (*KillShellTool) FormatResult added in v0.81.0

func (t *KillShellTool) FormatResult(result *domain.ToolExecutionResult, formatType domain.FormatterType) string

FormatResult formats tool execution results for different contexts

func (*KillShellTool) IsEnabled added in v0.81.0

func (t *KillShellTool) IsEnabled() bool

IsEnabled returns whether the tool is enabled

func (*KillShellTool) ShouldAlwaysExpand added in v0.81.0

func (t *KillShellTool) ShouldAlwaysExpand() bool

ShouldAlwaysExpand determines if tool results should always be expanded in UI

func (*KillShellTool) ShouldCollapseArg added in v0.81.0

func (t *KillShellTool) ShouldCollapseArg(key string) bool

ShouldCollapseArg determines if a specific argument should be collapsed in UI

func (*KillShellTool) Validate added in v0.81.0

func (t *KillShellTool) Validate(args map[string]any) error

Validate validates the tool arguments

type ListShellsTool added in v0.81.0

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

ListShellsTool implements listing of background shells

func NewListShellsTool added in v0.81.0

func NewListShellsTool(cfg *config.Config, shellService domain.BackgroundShellService) *ListShellsTool

NewListShellsTool creates a new ListShells tool

func (*ListShellsTool) Definition added in v0.81.0

func (t *ListShellsTool) Definition() sdk.ChatCompletionTool

Definition returns the tool definition for the LLM

func (*ListShellsTool) Execute added in v0.81.0

func (t *ListShellsTool) Execute(ctx context.Context, args map[string]any) (*domain.ToolExecutionResult, error)

Execute lists all background shells

func (*ListShellsTool) FormatPreview added in v0.81.0

func (t *ListShellsTool) FormatPreview(result *domain.ToolExecutionResult) string

FormatPreview returns a short preview

func (*ListShellsTool) FormatResult added in v0.81.0

func (t *ListShellsTool) FormatResult(result *domain.ToolExecutionResult, formatType domain.FormatterType) string

FormatResult formats the result for display

func (*ListShellsTool) IsEnabled added in v0.81.0

func (t *ListShellsTool) IsEnabled() bool

IsEnabled returns whether the tool is enabled

func (*ListShellsTool) ShouldAlwaysExpand added in v0.81.0

func (t *ListShellsTool) ShouldAlwaysExpand() bool

ShouldAlwaysExpand returns whether results should always be expanded

func (*ListShellsTool) ShouldCollapseArg added in v0.81.0

func (t *ListShellsTool) ShouldCollapseArg(key string) bool

ShouldCollapseArg returns whether an argument should be collapsed

func (*ListShellsTool) Validate added in v0.81.0

func (t *ListShellsTool) Validate(args map[string]any) error

Validate validates the tool arguments (none required for ListShells)

type MCPTool added in v0.79.0

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

MCPTool wraps an MCP server tool to implement the domain.Tool interface

func NewMCPTool added in v0.79.0

func NewMCPTool(
	serverName, toolName, description string,
	inputSchema any,
	clientManager domain.MCPClient,
	mcpConfig *config.MCPConfig,
) *MCPTool

NewMCPTool creates a new MCP tool wrapper

func (*MCPTool) Definition added in v0.79.0

func (t *MCPTool) Definition() sdk.ChatCompletionTool

Definition returns the tool definition for the LLM

func (*MCPTool) Execute added in v0.79.0

func (t *MCPTool) Execute(ctx context.Context, args map[string]any) (*domain.ToolExecutionResult, error)

Execute runs the MCP tool with given arguments

func (*MCPTool) FormatForLLM added in v0.79.0

func (t *MCPTool) FormatForLLM(result *domain.ToolExecutionResult) string

FormatForLLM formats the result for LLM consumption with detailed information

func (*MCPTool) FormatForUI added in v0.79.0

func (t *MCPTool) FormatForUI(result *domain.ToolExecutionResult) string

FormatForUI formats the result for UI display

func (*MCPTool) FormatPreview added in v0.79.0

func (t *MCPTool) FormatPreview(result *domain.ToolExecutionResult) string

FormatPreview returns a short preview of the result for UI display

func (*MCPTool) FormatResult added in v0.79.0

func (t *MCPTool) FormatResult(result *domain.ToolExecutionResult, formatType domain.FormatterType) string

FormatResult formats tool execution results for different contexts

func (*MCPTool) IsEnabled added in v0.79.0

func (t *MCPTool) IsEnabled() bool

IsEnabled returns whether this MCP tool is enabled

func (*MCPTool) ShouldAlwaysExpand added in v0.79.0

func (t *MCPTool) ShouldAlwaysExpand() bool

ShouldAlwaysExpand determines if tool results should always be expanded in UI

func (*MCPTool) ShouldCollapseArg added in v0.79.0

func (t *MCPTool) ShouldCollapseArg(key string) bool

ShouldCollapseArg determines if an argument should be collapsed in display

func (*MCPTool) Validate added in v0.79.0

func (t *MCPTool) Validate(args map[string]any) error

Validate checks if the tool arguments are valid

type MouseClickTool added in v0.96.0

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

MouseClickTool performs mouse clicks

func NewMouseClickTool added in v0.96.0

func NewMouseClickTool(cfg *config.Config, rateLimiter domain.RateLimiter, displayProvider display.Provider, stateManager domain.StateManager) *MouseClickTool

NewMouseClickTool creates a new mouse click tool

func (*MouseClickTool) Definition added in v0.96.0

func (t *MouseClickTool) Definition() sdk.ChatCompletionTool

Definition returns the tool definition for the LLM

func (*MouseClickTool) Execute added in v0.96.0

func (t *MouseClickTool) Execute(ctx context.Context, args map[string]any) (*domain.ToolExecutionResult, error)

Execute runs the mouse click tool with given arguments

func (*MouseClickTool) FormatForLLM added in v0.96.0

func (t *MouseClickTool) FormatForLLM(result *domain.ToolExecutionResult) string

FormatForLLM formats the result for LLM consumption

func (*MouseClickTool) FormatPreview added in v0.96.0

func (t *MouseClickTool) FormatPreview(result *domain.ToolExecutionResult) string

FormatPreview returns a short preview of the result for UI display

func (*MouseClickTool) FormatResult added in v0.96.0

func (t *MouseClickTool) FormatResult(result *domain.ToolExecutionResult, formatType domain.FormatterType) string

FormatResult formats tool execution results for different contexts

func (*MouseClickTool) IsEnabled added in v0.96.0

func (t *MouseClickTool) IsEnabled() bool

IsEnabled returns whether this tool is enabled

func (*MouseClickTool) ShouldAlwaysExpand added in v0.96.0

func (t *MouseClickTool) ShouldAlwaysExpand() bool

ShouldAlwaysExpand determines if tool results should always be expanded in UI

func (*MouseClickTool) ShouldCollapseArg added in v0.96.0

func (t *MouseClickTool) ShouldCollapseArg(key string) bool

ShouldCollapseArg determines if an argument should be collapsed in display

func (*MouseClickTool) Validate added in v0.96.0

func (t *MouseClickTool) Validate(args map[string]any) error

Validate checks if the tool arguments are valid

type MouseMoveTool added in v0.96.0

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

MouseMoveTool moves the mouse cursor to specified coordinates

func NewMouseMoveTool added in v0.96.0

func NewMouseMoveTool(cfg *config.Config, rateLimiter domain.RateLimiter, displayProvider display.Provider, stateManager domain.StateManager) *MouseMoveTool

NewMouseMoveTool creates a new mouse move tool

func (*MouseMoveTool) Definition added in v0.96.0

func (t *MouseMoveTool) Definition() sdk.ChatCompletionTool

Definition returns the tool definition for the LLM

func (*MouseMoveTool) Execute added in v0.96.0

func (t *MouseMoveTool) Execute(ctx context.Context, args map[string]any) (*domain.ToolExecutionResult, error)

Execute runs the mouse move tool with given arguments

func (*MouseMoveTool) FormatForLLM added in v0.96.0

func (t *MouseMoveTool) FormatForLLM(result *domain.ToolExecutionResult) string

FormatForLLM formats the result for LLM consumption

func (*MouseMoveTool) FormatPreview added in v0.96.0

func (t *MouseMoveTool) FormatPreview(result *domain.ToolExecutionResult) string

FormatPreview returns a short preview of the result for UI display

func (*MouseMoveTool) FormatResult added in v0.96.0

func (t *MouseMoveTool) FormatResult(result *domain.ToolExecutionResult, formatType domain.FormatterType) string

FormatResult formats tool execution results for different contexts

func (*MouseMoveTool) IsEnabled added in v0.96.0

func (t *MouseMoveTool) IsEnabled() bool

IsEnabled returns whether this tool is enabled

func (*MouseMoveTool) ShouldAlwaysExpand added in v0.96.0

func (t *MouseMoveTool) ShouldAlwaysExpand() bool

ShouldAlwaysExpand determines if tool results should always be expanded in UI

func (*MouseMoveTool) ShouldCollapseArg added in v0.96.0

func (t *MouseMoveTool) ShouldCollapseArg(key string) bool

ShouldCollapseArg determines if an argument should be collapsed in display

func (*MouseMoveTool) Validate added in v0.96.0

func (t *MouseMoveTool) Validate(args map[string]any) error

Validate checks if the tool arguments are valid

type MouseScrollTool added in v0.96.0

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

MouseScrollTool scrolls the mouse wheel

func NewMouseScrollTool added in v0.96.0

func NewMouseScrollTool(cfg *config.Config, rateLimiter domain.RateLimiter, displayProvider display.Provider) *MouseScrollTool

NewMouseScrollTool creates a new mouse scroll tool

func (*MouseScrollTool) Definition added in v0.96.0

func (t *MouseScrollTool) Definition() sdk.ChatCompletionTool

Definition returns the tool definition for the LLM

func (*MouseScrollTool) Execute added in v0.96.0

func (t *MouseScrollTool) Execute(ctx context.Context, args map[string]any) (*domain.ToolExecutionResult, error)

Execute runs the mouse scroll tool with given arguments

func (*MouseScrollTool) FormatForLLM added in v0.96.0

func (t *MouseScrollTool) FormatForLLM(result *domain.ToolExecutionResult) string

FormatForLLM formats the result for LLM consumption

func (*MouseScrollTool) FormatPreview added in v0.96.0

func (t *MouseScrollTool) FormatPreview(result *domain.ToolExecutionResult) string

FormatPreview formats a short preview of tool execution

func (*MouseScrollTool) FormatResult added in v0.96.0

func (t *MouseScrollTool) FormatResult(result *domain.ToolExecutionResult, formatType domain.FormatterType) string

FormatResult formats the result based on the requested format type

func (*MouseScrollTool) IsEnabled added in v0.96.0

func (t *MouseScrollTool) IsEnabled() bool

IsEnabled returns whether the tool is enabled

func (*MouseScrollTool) ShouldAlwaysExpand added in v0.96.0

func (t *MouseScrollTool) ShouldAlwaysExpand() bool

ShouldAlwaysExpand determines if tool results should always be expanded in UI

func (*MouseScrollTool) ShouldCollapseArg added in v0.96.0

func (t *MouseScrollTool) ShouldCollapseArg(argName string) bool

ShouldCollapseArg determines if an argument should be collapsed in UI

func (*MouseScrollTool) Validate added in v0.96.0

func (t *MouseScrollTool) Validate(args map[string]any) error

Validate validates the tool arguments

type MultiEditTool added in v0.22.0

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

MultiEditTool handles multiple exact string replacements in a single file atomically

func NewMultiEditTool added in v0.22.0

func NewMultiEditTool(cfg *config.Config) *MultiEditTool

NewMultiEditTool creates a new multi-edit tool

func NewMultiEditToolWithRegistry added in v0.22.0

func NewMultiEditToolWithRegistry(cfg *config.Config, registry ReadToolTracker) *MultiEditTool

NewMultiEditToolWithRegistry creates a new multi-edit tool with a registry for read tracking

func (*MultiEditTool) Definition added in v0.22.0

func (t *MultiEditTool) Definition() sdk.ChatCompletionTool

Definition returns the tool definition for the LLM

func (*MultiEditTool) Execute added in v0.22.0

func (t *MultiEditTool) Execute(ctx context.Context, args map[string]any) (*domain.ToolExecutionResult, error)

Execute runs the multi-edit tool with given arguments

func (*MultiEditTool) FormatArgumentsForApproval added in v0.33.5

func (t *MultiEditTool) FormatArgumentsForApproval(args map[string]any) string

FormatArgumentsForApproval formats arguments for approval display with diff preview

func (*MultiEditTool) FormatForLLM added in v0.33.4

func (t *MultiEditTool) FormatForLLM(result *domain.ToolExecutionResult) string

FormatForLLM formats the result for LLM consumption with detailed information

func (*MultiEditTool) FormatForUI added in v0.33.4

func (t *MultiEditTool) FormatForUI(result *domain.ToolExecutionResult) string

FormatForUI formats the result for UI display

func (*MultiEditTool) FormatPreview added in v0.33.4

func (t *MultiEditTool) FormatPreview(result *domain.ToolExecutionResult) string

FormatPreview returns a short preview of the result for UI display

func (*MultiEditTool) FormatResult added in v0.33.4

func (t *MultiEditTool) FormatResult(result *domain.ToolExecutionResult, formatType domain.FormatterType) string

FormatResult formats tool execution results for different contexts

func (*MultiEditTool) GetDiffInfo added in v0.38.0

func (t *MultiEditTool) GetDiffInfo(args map[string]any) *components.DiffInfo

GetDiffInfo implements the DiffFormatter interface

func (*MultiEditTool) IsEnabled added in v0.22.0

func (t *MultiEditTool) IsEnabled() bool

IsEnabled returns whether the multi-edit tool is enabled

func (*MultiEditTool) ShouldAlwaysExpand added in v0.36.0

func (t *MultiEditTool) ShouldAlwaysExpand() bool

ShouldAlwaysExpand determines if tool results should always be expanded in UI

func (*MultiEditTool) ShouldCollapseArg added in v0.33.4

func (t *MultiEditTool) ShouldCollapseArg(key string) bool

ShouldCollapseArg delegates to the formatter's collapse logic

func (*MultiEditTool) Validate added in v0.22.0

func (t *MultiEditTool) Validate(args map[string]any) error

Validate checks if the multi-edit tool arguments are valid

type ParameterExtractor added in v0.38.0

type ParameterExtractor struct{}

ParameterExtractor handles centralized parameter extraction and validation

func NewParameterExtractor added in v0.38.0

func NewParameterExtractor() *ParameterExtractor

NewParameterExtractor creates a new ParameterExtractor

func (*ParameterExtractor) ExtractWriteParams added in v0.38.0

func (p *ParameterExtractor) ExtractWriteParams(params map[string]any) (*WriteParams, error)

ExtractWriteParams extracts and validates write operation parameters

func (*ParameterExtractor) ToWriteRequest added in v0.38.0

func (p *ParameterExtractor) ToWriteRequest(params *WriteParams) filewriter.WriteRequest

ToWriteRequest converts WriteParams to a filewriter.WriteRequest

type ReadTool

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

ReadTool handles file reading operations with deterministic behavior

func NewReadTool

func NewReadTool(cfg *config.Config) *ReadTool

NewReadTool creates a new read tool

func (*ReadTool) Definition

func (t *ReadTool) Definition() sdk.ChatCompletionTool

Definition returns the tool definition for the LLM

func (*ReadTool) Execute

func (t *ReadTool) Execute(ctx context.Context, args map[string]any) (*domain.ToolExecutionResult, error)

Execute runs the read tool with given arguments

func (*ReadTool) FormatForLLM added in v0.33.4

func (t *ReadTool) FormatForLLM(result *domain.ToolExecutionResult) string

FormatForLLM formats the result for LLM consumption with detailed information

func (*ReadTool) FormatForUI added in v0.33.4

func (t *ReadTool) FormatForUI(result *domain.ToolExecutionResult) string

FormatForUI formats the result for UI display

func (*ReadTool) FormatPreview added in v0.33.4

func (t *ReadTool) FormatPreview(result *domain.ToolExecutionResult) string

FormatPreview returns a short preview of the result for UI display

func (*ReadTool) FormatResult added in v0.33.4

func (t *ReadTool) FormatResult(result *domain.ToolExecutionResult, formatType domain.FormatterType) string

FormatResult formats tool execution results for different contexts

func (*ReadTool) IsEnabled

func (t *ReadTool) IsEnabled() bool

IsEnabled returns whether the read tool is enabled

func (*ReadTool) ShouldAlwaysExpand added in v0.36.0

func (t *ReadTool) ShouldAlwaysExpand() bool

ShouldAlwaysExpand determines if tool results should always be expanded in UI

func (*ReadTool) ShouldCollapseArg added in v0.33.4

func (t *ReadTool) ShouldCollapseArg(key string) bool

ShouldCollapseArg determines if an argument should be collapsed in display

func (*ReadTool) Validate

func (t *ReadTool) Validate(args map[string]any) error

Validate checks if the read tool arguments are valid

type ReadToolTracker added in v0.21.0

type ReadToolTracker interface {
	IsReadToolUsed() bool
}

ReadToolTracker interface for tracking read tool usage

type Registry

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

Registry manages all available tools

func NewRegistry

func NewRegistry(cfg domain.ConfigService, imageService domain.ImageService, mcpManager domain.MCPManager, shellService domain.BackgroundShellService, stateManager domain.StateManager, screenshotProvider domain.ScreenshotProvider) *Registry

NewRegistry creates a new tool registry with self-contained tools

func (*Registry) GetBackgroundShellService added in v0.81.0

func (r *Registry) GetBackgroundShellService() domain.BackgroundShellService

GetBackgroundShellService returns the background shell service instance

func (*Registry) GetTaskTracker added in v0.49.0

func (r *Registry) GetTaskTracker() domain.TaskTracker

GetTaskTracker returns the task tracker instance

func (*Registry) GetTool

func (r *Registry) GetTool(name string) (domain.Tool, error)

GetTool retrieves a tool by name

func (*Registry) GetToolDefinitions

func (r *Registry) GetToolDefinitions() []sdk.ChatCompletionTool

GetToolDefinitions returns definitions for all enabled tools

func (*Registry) IsReadToolUsed added in v0.21.0

func (r *Registry) IsReadToolUsed() bool

IsReadToolUsed returns whether the Read tool has been used

func (*Registry) IsToolEnabled

func (r *Registry) IsToolEnabled(name string) bool

IsToolEnabled checks if a specific tool is enabled

func (*Registry) ListAvailableTools

func (r *Registry) ListAvailableTools() []string

ListAvailableTools returns names of all available and enabled tools

func (*Registry) RegisterMCPServerTools added in v0.79.0

func (r *Registry) RegisterMCPServerTools(serverName string, tools []domain.MCPDiscoveredTool) int

RegisterMCPServerTools dynamically registers tools from an MCP server

func (*Registry) SetReadToolUsed added in v0.21.0

func (r *Registry) SetReadToolUsed()

SetReadToolUsed marks that the Read tool has been used

func (*Registry) SetScreenshotProvider added in v0.96.0

func (r *Registry) SetScreenshotProvider(provider domain.ScreenshotProvider)

SetScreenshotProvider updates the screenshot provider for tools that need it

func (*Registry) SetScreenshotServer added in v0.96.0

func (r *Registry) SetScreenshotServer(provider domain.ScreenshotProvider)

SetScreenshotServer dynamically registers the GetLatestScreenshot tool This should be called after the screenshot server is started

func (*Registry) UnregisterMCPServerTools added in v0.79.0

func (r *Registry) UnregisterMCPServerTools(serverName string) int

UnregisterMCPServerTools removes all tools from a specific MCP server

type RequestPlanApprovalTool added in v0.76.2

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

RequestPlanApprovalTool handles requesting plan approval from the user

func NewRequestPlanApprovalTool added in v0.76.2

func NewRequestPlanApprovalTool(cfg *config.Config) *RequestPlanApprovalTool

NewRequestPlanApprovalTool creates a new RequestPlanApproval tool

func (*RequestPlanApprovalTool) Definition added in v0.76.2

Definition returns the tool definition for the LLM

func (*RequestPlanApprovalTool) Execute added in v0.76.2

Execute runs the RequestPlanApproval tool with given arguments

func (*RequestPlanApprovalTool) FormatForLLM added in v0.76.2

func (t *RequestPlanApprovalTool) FormatForLLM(result *domain.ToolExecutionResult) string

FormatForLLM formats the result for LLM consumption

func (*RequestPlanApprovalTool) FormatForUI added in v0.76.2

func (t *RequestPlanApprovalTool) FormatForUI(result *domain.ToolExecutionResult) string

FormatForUI formats the result for UI display

func (*RequestPlanApprovalTool) FormatPreview added in v0.76.2

func (t *RequestPlanApprovalTool) FormatPreview(result *domain.ToolExecutionResult) string

FormatPreview returns a short preview of the result for UI display

func (*RequestPlanApprovalTool) FormatResult added in v0.76.2

func (t *RequestPlanApprovalTool) FormatResult(result *domain.ToolExecutionResult, formatType domain.FormatterType) string

FormatResult formats tool execution results for different contexts

func (*RequestPlanApprovalTool) IsEnabled added in v0.76.2

func (t *RequestPlanApprovalTool) IsEnabled() bool

IsEnabled returns whether the RequestPlanApproval tool is enabled

func (*RequestPlanApprovalTool) ShouldAlwaysExpand added in v0.76.2

func (t *RequestPlanApprovalTool) ShouldAlwaysExpand() bool

ShouldAlwaysExpand determines if tool results should always be expanded in UI

func (*RequestPlanApprovalTool) ShouldCollapseArg added in v0.76.2

func (t *RequestPlanApprovalTool) ShouldCollapseArg(key string) bool

ShouldCollapseArg determines if an argument should be collapsed in display

func (*RequestPlanApprovalTool) Validate added in v0.76.2

func (t *RequestPlanApprovalTool) Validate(args map[string]any) error

Validate checks if the RequestPlanApproval tool arguments are valid

type SearchOptions added in v0.19.0

type SearchOptions struct {
	CaseInsensitive bool
	ShowLineNumbers bool
	ContextBefore   int
	ContextAfter    int
	Multiline       bool
	GlobPattern     string
	FileType        string
	HeadLimit       int
}

SearchOptions holds configuration for the search operation

type TodoWriteTool added in v0.20.0

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

TodoWriteTool handles structured task list management for coding sessions

func NewTodoWriteTool added in v0.20.0

func NewTodoWriteTool(cfg *config.Config) *TodoWriteTool

NewTodoWriteTool creates a new TodoWrite tool

func (*TodoWriteTool) Definition added in v0.20.0

func (t *TodoWriteTool) Definition() sdk.ChatCompletionTool

Definition returns the tool definition for the LLM

func (*TodoWriteTool) Execute added in v0.20.0

func (t *TodoWriteTool) Execute(ctx context.Context, args map[string]any) (*domain.ToolExecutionResult, error)

Execute runs the TodoWrite tool with given arguments

func (*TodoWriteTool) FormatForLLM added in v0.33.4

func (t *TodoWriteTool) FormatForLLM(result *domain.ToolExecutionResult) string

FormatForLLM formats the result for LLM consumption with detailed information

func (*TodoWriteTool) FormatForUI added in v0.33.4

func (t *TodoWriteTool) FormatForUI(result *domain.ToolExecutionResult) string

FormatForUI formats the result for UI display Returns minimal format as todo updates are shown in the dedicated todo component

func (*TodoWriteTool) FormatPreview added in v0.33.4

func (t *TodoWriteTool) FormatPreview(result *domain.ToolExecutionResult) string

FormatPreview returns a short preview of the result for UI display

func (*TodoWriteTool) FormatResult added in v0.33.4

func (t *TodoWriteTool) FormatResult(result *domain.ToolExecutionResult, formatType domain.FormatterType) string

FormatResult formats tool execution results for different contexts

func (*TodoWriteTool) IsEnabled added in v0.20.0

func (t *TodoWriteTool) IsEnabled() bool

IsEnabled returns whether the TodoWrite tool is enabled

func (*TodoWriteTool) ShouldAlwaysExpand added in v0.36.0

func (t *TodoWriteTool) ShouldAlwaysExpand() bool

ShouldAlwaysExpand determines if tool results should always be expanded in UI Returns false since todos are shown in the dedicated todo component

func (*TodoWriteTool) ShouldCollapseArg added in v0.33.4

func (t *TodoWriteTool) ShouldCollapseArg(key string) bool

ShouldCollapseArg determines if an argument should be collapsed in display

func (*TodoWriteTool) Validate added in v0.20.0

func (t *TodoWriteTool) Validate(args map[string]any) error

Validate checks if the TodoWrite tool arguments are valid

type ToolExecutionError added in v0.31.0

type ToolExecutionError struct {
	Message string
}

ToolExecutionError represents an error during tool execution

func (*ToolExecutionError) Error added in v0.31.0

func (e *ToolExecutionError) Error() string

type TreeResult added in v0.16.0

type TreeResult struct {
	Path            string `json:"path"`
	Output          string `json:"output"`
	TotalFiles      int    `json:"total_files"`
	TotalDirs       int    `json:"total_dirs"`
	MaxDepth        int    `json:"max_depth"`
	MaxFiles        int    `json:"max_files"`
	ShowHidden      bool   `json:"show_hidden"`
	Format          string `json:"format"`
	UsingNativeTree bool   `json:"using_native_tree"`
	Truncated       bool   `json:"truncated"`
}

TreeResult represents the internal result of a tree operation

type TreeTool added in v0.16.0

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

TreeTool handles directory tree visualization operations

func NewTreeTool added in v0.16.0

func NewTreeTool(cfg *config.Config) *TreeTool

NewTreeTool creates a new tree tool

func (*TreeTool) Definition added in v0.16.0

func (t *TreeTool) Definition() sdk.ChatCompletionTool

Definition returns the tool definition for the LLM

func (*TreeTool) Execute added in v0.16.0

func (t *TreeTool) Execute(ctx context.Context, args map[string]any) (*domain.ToolExecutionResult, error)

Execute runs the tree tool with given arguments

func (*TreeTool) FormatForLLM added in v0.33.4

func (t *TreeTool) FormatForLLM(result *domain.ToolExecutionResult) string

FormatForLLM formats the result for LLM consumption with detailed information

func (*TreeTool) FormatForUI added in v0.33.4

func (t *TreeTool) FormatForUI(result *domain.ToolExecutionResult) string

FormatForUI formats the result for UI display

func (*TreeTool) FormatPreview added in v0.33.4

func (t *TreeTool) FormatPreview(result *domain.ToolExecutionResult) string

FormatPreview returns a short preview of the result for UI display

func (*TreeTool) FormatResult added in v0.33.4

func (t *TreeTool) FormatResult(result *domain.ToolExecutionResult, formatType domain.FormatterType) string

FormatResult formats tool execution results for different contexts

func (*TreeTool) IsEnabled added in v0.16.0

func (t *TreeTool) IsEnabled() bool

IsEnabled returns whether the tree tool is enabled

func (*TreeTool) ShouldAlwaysExpand added in v0.36.0

func (t *TreeTool) ShouldAlwaysExpand() bool

ShouldAlwaysExpand determines if tool results should always be expanded in UI

func (*TreeTool) ShouldCollapseArg added in v0.33.4

func (t *TreeTool) ShouldCollapseArg(key string) bool

ShouldCollapseArg determines if an argument should be collapsed in display

func (*TreeTool) Validate added in v0.16.0

func (t *TreeTool) Validate(args map[string]any) error

Validate checks if the tree tool arguments are valid

type WebFetchTool added in v0.24.1

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

WebFetchTool handles content fetching operations

func NewWebFetchTool added in v0.24.1

func NewWebFetchTool(cfg *config.Config) *WebFetchTool

NewWebFetchTool creates a new fetch tool

func (*WebFetchTool) Definition added in v0.24.1

func (t *WebFetchTool) Definition() sdk.ChatCompletionTool

Definition returns the tool definition for the LLM

func (*WebFetchTool) Execute added in v0.24.1

func (t *WebFetchTool) Execute(ctx context.Context, args map[string]any) (*domain.ToolExecutionResult, error)

Execute runs the fetch tool with given arguments

func (*WebFetchTool) FormatForLLM added in v0.33.4

func (t *WebFetchTool) FormatForLLM(result *domain.ToolExecutionResult) string

FormatForLLM formats the result for LLM consumption with detailed information

func (*WebFetchTool) FormatForUI added in v0.33.4

func (t *WebFetchTool) FormatForUI(result *domain.ToolExecutionResult) string

FormatForUI formats the result for UI display

func (*WebFetchTool) FormatPreview added in v0.33.4

func (t *WebFetchTool) FormatPreview(result *domain.ToolExecutionResult) string

FormatPreview returns a short preview of the result for UI display

func (*WebFetchTool) FormatResult added in v0.33.4

func (t *WebFetchTool) FormatResult(result *domain.ToolExecutionResult, formatType domain.FormatterType) string

FormatResult formats tool execution results for different contexts

func (*WebFetchTool) IsEnabled added in v0.24.1

func (t *WebFetchTool) IsEnabled() bool

IsEnabled returns whether the fetch tool is enabled

func (*WebFetchTool) ShouldAlwaysExpand added in v0.36.0

func (t *WebFetchTool) ShouldAlwaysExpand() bool

ShouldAlwaysExpand determines if tool results should always be expanded in UI

func (*WebFetchTool) ShouldCollapseArg added in v0.33.4

func (t *WebFetchTool) ShouldCollapseArg(key string) bool

ShouldCollapseArg determines if an argument should be collapsed in display

func (*WebFetchTool) Validate added in v0.24.1

func (t *WebFetchTool) Validate(args map[string]any) error

Validate checks if the fetch tool arguments are valid

type WebSearchTool

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

WebSearchTool handles web search operations

func NewWebSearchTool

func NewWebSearchTool(cfg *config.Config) *WebSearchTool

NewWebSearchTool creates a new web search tool

func (*WebSearchTool) Definition

func (t *WebSearchTool) Definition() sdk.ChatCompletionTool

Definition returns the tool definition for the LLM

func (*WebSearchTool) Execute

func (t *WebSearchTool) Execute(ctx context.Context, args map[string]any) (*domain.ToolExecutionResult, error)

Execute runs the web search tool with given arguments

func (*WebSearchTool) FormatForLLM added in v0.33.4

func (t *WebSearchTool) FormatForLLM(result *domain.ToolExecutionResult) string

FormatForLLM formats the result for LLM consumption with detailed information

func (*WebSearchTool) FormatForUI added in v0.33.4

func (t *WebSearchTool) FormatForUI(result *domain.ToolExecutionResult) string

FormatForUI formats the result for UI display

func (*WebSearchTool) FormatPreview added in v0.33.4

func (t *WebSearchTool) FormatPreview(result *domain.ToolExecutionResult) string

FormatPreview returns a short preview of the result for UI display

func (*WebSearchTool) FormatResult added in v0.33.4

func (t *WebSearchTool) FormatResult(result *domain.ToolExecutionResult, formatType domain.FormatterType) string

FormatResult formats tool execution results for different contexts

func (*WebSearchTool) IsEnabled

func (t *WebSearchTool) IsEnabled() bool

IsEnabled returns whether the web search tool is enabled

func (*WebSearchTool) ShouldAlwaysExpand added in v0.36.0

func (t *WebSearchTool) ShouldAlwaysExpand() bool

ShouldAlwaysExpand determines if tool results should always be expanded in UI

func (*WebSearchTool) ShouldCollapseArg added in v0.33.4

func (t *WebSearchTool) ShouldCollapseArg(key string) bool

ShouldCollapseArg determines if an argument should be collapsed in display

func (*WebSearchTool) Validate

func (t *WebSearchTool) Validate(args map[string]any) error

Validate checks if the web search tool arguments are valid

type WriteParams added in v0.38.0

type WriteParams struct {
	FilePath string
	Content  string
}

WriteParams represents extracted parameters for write operations

type WriteTool added in v0.17.0

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

WriteTool implements a refactored WriteTool with clean architecture

func NewWriteTool added in v0.17.0

func NewWriteTool(cfg *config.Config) *WriteTool

NewWriteTool creates a new write tool with clean architecture

func (*WriteTool) Definition added in v0.17.0

func (t *WriteTool) Definition() sdk.ChatCompletionTool

Definition returns the tool definition for the LLM

func (*WriteTool) Enabled added in v0.38.0

func (t *WriteTool) Enabled() bool

Enabled returns whether the tool is enabled

func (*WriteTool) Execute added in v0.17.0

func (t *WriteTool) Execute(ctx context.Context, args map[string]any) (*domain.ToolExecutionResult, error)

Execute runs the write tool with given arguments

func (*WriteTool) FormatArgumentsForApproval added in v0.33.7

func (t *WriteTool) FormatArgumentsForApproval(args map[string]any) string

FormatArgumentsForApproval formats arguments for approval display with content preview

func (*WriteTool) FormatForLLM added in v0.33.4

func (t *WriteTool) FormatForLLM(result *domain.ToolExecutionResult) string

FormatForLLM formats the result for LLM consumption

func (*WriteTool) FormatForUI added in v0.33.4

func (t *WriteTool) FormatForUI(result *domain.ToolExecutionResult) string

FormatForUI formats the result for UI display

func (*WriteTool) FormatPreview added in v0.33.4

func (t *WriteTool) FormatPreview(result *domain.ToolExecutionResult) string

FormatPreview returns a short preview of the result for UI display

func (*WriteTool) FormatResult added in v0.33.4

func (t *WriteTool) FormatResult(result *domain.ToolExecutionResult, formatType domain.FormatterType) string

FormatResult formats tool execution results for different contexts

func (*WriteTool) IsEnabled added in v0.17.0

func (t *WriteTool) IsEnabled() bool

IsEnabled returns whether the tool is enabled (interface compliance)

func (*WriteTool) ShouldAlwaysExpand added in v0.36.0

func (t *WriteTool) ShouldAlwaysExpand() bool

ShouldAlwaysExpand determines if tool results should always be expanded in UI

func (*WriteTool) ShouldCollapseArg added in v0.33.4

func (t *WriteTool) ShouldCollapseArg(key string) bool

ShouldCollapseArg determines if an argument should be collapsed in display

func (*WriteTool) Validate added in v0.17.0

func (t *WriteTool) Validate(args map[string]any) error

Validate checks if the write tool arguments are valid

Jump to

Keyboard shortcuts

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