services

package
v0.46.1 Latest Latest
Warning

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

Go to latest
Published: Aug 27, 2025 License: MIT Imports: 20 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewFileService added in v0.16.0

func NewFileService() domain.FileService

NewFileService creates a new file service

Types

type AgentServiceImpl added in v0.36.0

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

AgentServiceImpl implements the AgentService interface with direct chat functionality

func NewAgentService added in v0.36.0

func NewAgentService(client sdk.Client, toolService domain.ToolService, config domain.ConfigService, timeoutSeconds int, maxTokens int, optimizer *ConversationOptimizer) *AgentServiceImpl

NewAgentService creates a new agent service with pre-configured client

func (*AgentServiceImpl) CancelRequest added in v0.36.0

func (s *AgentServiceImpl) CancelRequest(requestID string) error

CancelRequest cancels an active request

func (*AgentServiceImpl) GetMetrics added in v0.36.0

func (s *AgentServiceImpl) GetMetrics(requestID string) *domain.ChatMetrics

GetMetrics returns metrics for a completed request

func (*AgentServiceImpl) Run added in v0.36.0

Run executes an agent task synchronously (for background/batch processing)

func (*AgentServiceImpl) RunWithStream added in v0.36.0

func (s *AgentServiceImpl) RunWithStream(ctx context.Context, req *domain.AgentRequest) (<-chan domain.ChatEvent, error)

RunWithStream executes an agent task with streaming (for interactive chat)

type ApprovalArgumentFormatter added in v0.33.5

type ApprovalArgumentFormatter interface {
	FormatArgumentsForApproval(args map[string]any) string
}

ApprovalArgumentFormatter interface for tools that need custom approval argument formatting

type BackgroundJobManager added in v0.46.1

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

BackgroundJobManager manages background tasks

func NewBackgroundJobManager added in v0.46.1

func NewBackgroundJobManager(titleGenerator TitleGenerator, config *config.Config) *BackgroundJobManager

NewBackgroundJobManager creates a new background job manager

func (*BackgroundJobManager) IsRunning added in v0.46.1

func (m *BackgroundJobManager) IsRunning() bool

IsRunning returns whether the job manager is currently running

func (*BackgroundJobManager) Start added in v0.46.1

func (m *BackgroundJobManager) Start(ctx context.Context)

Start begins running background jobs

func (*BackgroundJobManager) Stop added in v0.46.1

func (m *BackgroundJobManager) Stop()

Stop stops all background jobs gracefully

func (*BackgroundJobManager) TriggerTitleGeneration added in v0.46.1

func (m *BackgroundJobManager) TriggerTitleGeneration(ctx context.Context) error

TriggerTitleGeneration manually triggers title generation for pending conversations

type ConfigService added in v0.42.0

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

ConfigService handles configuration management and reloading

func NewConfigService added in v0.42.0

func NewConfigService(v *viper.Viper, cfg *config.Config) *ConfigService

NewConfigService creates a new config service

func (*ConfigService) GetConfig added in v0.42.0

func (cs *ConfigService) GetConfig() *config.Config

GetConfig returns the current config

func (*ConfigService) Reload added in v0.42.0

func (cs *ConfigService) Reload() (*config.Config, error)

Reload reloads configuration from disk

func (*ConfigService) SetValue added in v0.42.0

func (cs *ConfigService) SetValue(key, value string) error

SetValue sets a configuration value using dot notation and saves it to disk

type ConversationOptimizer added in v0.32.0

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

ConversationOptimizer provides methods to optimize conversation history for token efficiency

func NewConversationOptimizer added in v0.32.0

func NewConversationOptimizer(config OptimizerConfig) *ConversationOptimizer

NewConversationOptimizer creates a new conversation optimizer with configuration

func (*ConversationOptimizer) CompactToolCalls added in v0.32.0

func (co *ConversationOptimizer) CompactToolCalls(message sdk.Message) sdk.Message

CompactToolCalls reduces the verbosity of tool call results

func (*ConversationOptimizer) EstimateTokens added in v0.32.0

func (co *ConversationOptimizer) EstimateTokens(content string) int

EstimateTokens provides rough token estimation (4 chars ≈ 1 token)

func (*ConversationOptimizer) GetOptimizationStats added in v0.32.0

func (co *ConversationOptimizer) GetOptimizationStats(messages []sdk.Message) map[string]int

GetOptimizationStats returns statistics about potential token savings

func (*ConversationOptimizer) OptimizeForExport added in v0.32.0

func (co *ConversationOptimizer) OptimizeForExport(entries []domain.ConversationEntry) []domain.ConversationEntry

OptimizeForExport prepares messages for export with token optimization

func (*ConversationOptimizer) OptimizeMessages added in v0.32.0

func (co *ConversationOptimizer) OptimizeMessages(messages []sdk.Message) []sdk.Message

OptimizeMessages reduces token usage by intelligently managing conversation history

func (*ConversationOptimizer) SummarizeOldMessages added in v0.32.0

func (co *ConversationOptimizer) SummarizeOldMessages(messages []domain.ConversationEntry) string

SummarizeOldMessages creates a summary of older messages to reduce tokens

type ConversationTitleGenerator added in v0.46.1

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

ConversationTitleGenerator generates titles for conversations using AI

func NewConversationTitleGenerator added in v0.46.1

func NewConversationTitleGenerator(client sdk.Client, storage storage.ConversationStorage, config *config.Config) *ConversationTitleGenerator

NewConversationTitleGenerator creates a new conversation title generator

func NewConversationTitleGeneratorWithSDKClient added in v0.46.1

func NewConversationTitleGeneratorWithSDKClient(client domain.SDKClient, storage storage.ConversationStorage, config *config.Config) *ConversationTitleGenerator

NewConversationTitleGeneratorWithSDKClient creates a new conversation title generator with a custom SDKClient (for testing)

func (*ConversationTitleGenerator) GenerateTitleForConversation added in v0.46.1

func (g *ConversationTitleGenerator) GenerateTitleForConversation(ctx context.Context, conversationID string) error

GenerateTitleForConversation generates a title for a specific conversation

func (*ConversationTitleGenerator) InvalidateTitle added in v0.46.1

func (g *ConversationTitleGenerator) InvalidateTitle(ctx context.Context, conversationID string) error

InvalidateTitle marks a conversation title as needing regeneration

func (*ConversationTitleGenerator) ProcessPendingTitles added in v0.46.1

func (g *ConversationTitleGenerator) ProcessPendingTitles(ctx context.Context) error

ProcessPendingTitles processes a batch of conversations that need title generation

type FileServiceImpl added in v0.16.0

type FileServiceImpl struct{}

FileServiceImpl implements domain.FileService

func (*FileServiceImpl) GetFileInfo added in v0.16.0

func (s *FileServiceImpl) GetFileInfo(path string) (domain.FileInfo, error)

GetFileInfo returns information about a file

func (*FileServiceImpl) ListProjectFiles added in v0.16.0

func (s *FileServiceImpl) ListProjectFiles() ([]string, error)

ListProjectFiles returns a list of all files in the current directory and subdirectories

func (*FileServiceImpl) ReadFile added in v0.16.0

func (s *FileServiceImpl) ReadFile(path string) (string, error)

ReadFile reads the content of a file

func (*FileServiceImpl) ReadFileLines added in v0.16.0

func (s *FileServiceImpl) ReadFileLines(path string, startLine, endLine int) (string, error)

ReadFileLines reads specific lines from a file

func (*FileServiceImpl) ValidateFile added in v0.16.0

func (s *FileServiceImpl) ValidateFile(path string) error

ValidateFile checks if a file path is valid and accessible

type HTTPModelService

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

HTTPModelService implements ModelService using SDK client

func NewHTTPModelService

func NewHTTPModelService(client sdk.Client) *HTTPModelService

NewHTTPModelService creates a new HTTP-based model service with pre-configured client

func (*HTTPModelService) GetCurrentModel

func (s *HTTPModelService) GetCurrentModel() string

func (*HTTPModelService) IsModelAvailable

func (s *HTTPModelService) IsModelAvailable(modelID string) bool

func (*HTTPModelService) ListModels

func (s *HTTPModelService) ListModels(ctx context.Context) ([]string, error)

func (*HTTPModelService) SelectModel

func (s *HTTPModelService) SelectModel(modelID string) error

func (*HTTPModelService) ValidateModel

func (s *HTTPModelService) ValidateModel(modelID string) error

type HealthStatus added in v0.27.0

type HealthStatus struct {
	Healthy          bool      `json:"healthy"`
	ValidationErrors []error   `json:"validation_errors"`
	StateHistorySize int       `json:"state_history_size"`
	LastStateChange  time.Time `json:"last_state_change"`
	MemoryUsageKB    int       `json:"memory_usage_kb"`
}

HealthStatus represents the health status of the state manager

type InMemoryConversationRepository

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

InMemoryConversationRepository implements ConversationRepository using in-memory storage

func NewInMemoryConversationRepository

func NewInMemoryConversationRepository(formatterService *ToolFormatterService) *InMemoryConversationRepository

NewInMemoryConversationRepository creates a new in-memory conversation repository

func (*InMemoryConversationRepository) AddMessage

func (*InMemoryConversationRepository) AddTokenUsage added in v0.28.0

func (r *InMemoryConversationRepository) AddTokenUsage(inputTokens, outputTokens, totalTokens int) error

AddTokenUsage adds token usage from a single API call to session totals

func (*InMemoryConversationRepository) Clear

func (*InMemoryConversationRepository) Export

func (*InMemoryConversationRepository) GetMessageCount

func (r *InMemoryConversationRepository) GetMessageCount() int

func (*InMemoryConversationRepository) GetMessages

func (*InMemoryConversationRepository) GetSessionTokens added in v0.28.0

GetSessionTokens returns the accumulated token statistics for the session

func (*InMemoryConversationRepository) UpdateLastMessage

func (r *InMemoryConversationRepository) UpdateLastMessage(content string) error

func (*InMemoryConversationRepository) UpdateLastMessageToolCalls

func (r *InMemoryConversationRepository) UpdateLastMessageToolCalls(toolCalls *[]sdk.ChatCompletionMessageToolCall) error

type LLMToolService

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

LLMToolService implements ToolService with the new tools package architecture

func NewLLMToolService

func NewLLMToolService(cfg *config.Config) *LLMToolService

NewLLMToolService creates a new LLM tool service with a new registry

func NewLLMToolServiceWithRegistry added in v0.14.1

func NewLLMToolServiceWithRegistry(cfg *config.Config, registry *tools.Registry) *LLMToolService

NewLLMToolServiceWithRegistry creates a new LLM tool service with an existing registry

func (*LLMToolService) ExecuteTool

func (s *LLMToolService) ExecuteTool(ctx context.Context, name string, args map[string]any) (*domain.ToolExecutionResult, error)

ExecuteTool executes a tool with the given arguments

func (*LLMToolService) IsToolEnabled

func (s *LLMToolService) IsToolEnabled(name string) bool

IsToolEnabled checks if a tool is enabled

func (*LLMToolService) ListAvailableTools added in v0.32.0

func (s *LLMToolService) ListAvailableTools() []string

ListAvailableTools returns names of all enabled tools

func (*LLMToolService) ListTools

func (s *LLMToolService) ListTools() []domain.ToolDefinition

ListTools returns definitions for all enabled tools

func (*LLMToolService) ValidateTool

func (s *LLMToolService) ValidateTool(name string, args map[string]any) error

ValidateTool validates tool arguments

type NoOpToolService

type NoOpToolService struct{}

NoOpToolService implements ToolService as a no-op (when tools are disabled)

func NewNoOpToolService

func NewNoOpToolService() *NoOpToolService

NewNoOpToolService creates a new no-op tool service

func (*NoOpToolService) ExecuteTool

func (s *NoOpToolService) ExecuteTool(ctx context.Context, name string, args map[string]any) (*domain.ToolExecutionResult, error)

func (*NoOpToolService) IsToolEnabled

func (s *NoOpToolService) IsToolEnabled(name string) bool

func (*NoOpToolService) ListAvailableTools added in v0.32.0

func (s *NoOpToolService) ListAvailableTools() []string

func (*NoOpToolService) ListTools

func (s *NoOpToolService) ListTools() []domain.ToolDefinition

func (*NoOpToolService) ValidateTool

func (s *NoOpToolService) ValidateTool(name string, args map[string]any) error

type OptimizerConfig added in v0.32.0

type OptimizerConfig struct {
	Enabled                    bool
	MaxHistory                 int
	CompactThreshold           int
	TruncateLargeOutputs       bool
	SkipRedundantConfirmations bool
	Client                     sdk.Client
	ModelService               domain.ModelService
	Config                     *config.Config
}

OptimizerConfig represents configuration for the conversation optimizer

type PersistentConversationRepository added in v0.45.0

type PersistentConversationRepository struct {
	*InMemoryConversationRepository
	// contains filtered or unexported fields
}

PersistentConversationRepository wraps the InMemoryConversationRepository and adds persistence capabilities using a storage backend

func NewPersistentConversationRepository added in v0.45.0

func NewPersistentConversationRepository(formatterService *ToolFormatterService, storageBackend storage.ConversationStorage) *PersistentConversationRepository

NewPersistentConversationRepository creates a new persistent conversation repository

func (*PersistentConversationRepository) AddMessage added in v0.45.0

Override AddMessage to trigger auto-save

func (*PersistentConversationRepository) AddTokenUsage added in v0.45.0

func (r *PersistentConversationRepository) AddTokenUsage(inputTokens, outputTokens, totalTokens int) error

Override AddTokenUsage to trigger auto-save

func (*PersistentConversationRepository) Clear added in v0.45.0

Override Clear to handle conversation state

func (*PersistentConversationRepository) Close added in v0.45.0

Close closes the storage connection

func (*PersistentConversationRepository) DeleteSavedConversation added in v0.45.0

func (r *PersistentConversationRepository) DeleteSavedConversation(ctx context.Context, conversationID string) error

DeleteSavedConversation deletes a saved conversation

func (*PersistentConversationRepository) GetCurrentConversationID added in v0.45.0

func (r *PersistentConversationRepository) GetCurrentConversationID() string

GetCurrentConversationID returns the current conversation ID

func (*PersistentConversationRepository) GetCurrentConversationMetadata added in v0.45.0

func (r *PersistentConversationRepository) GetCurrentConversationMetadata() storage.ConversationMetadata

GetCurrentConversationMetadata returns the current conversation metadata

func (*PersistentConversationRepository) ListSavedConversations added in v0.45.0

func (r *PersistentConversationRepository) ListSavedConversations(ctx context.Context, limit, offset int) ([]storage.ConversationSummary, error)

ListSavedConversations returns a list of saved conversations

func (*PersistentConversationRepository) LoadConversation added in v0.45.0

func (r *PersistentConversationRepository) LoadConversation(ctx context.Context, conversationID string) error

LoadConversation loads a conversation from persistent storage

func (*PersistentConversationRepository) SaveConversation added in v0.45.0

func (r *PersistentConversationRepository) SaveConversation(ctx context.Context) error

SaveConversation saves the current conversation to persistent storage

func (*PersistentConversationRepository) SetAutoSave added in v0.45.0

func (r *PersistentConversationRepository) SetAutoSave(enabled bool)

SetAutoSave enables or disables automatic saving after each operation

func (*PersistentConversationRepository) SetConversationTags added in v0.45.0

func (r *PersistentConversationRepository) SetConversationTags(tags []string)

SetConversationTags sets tags for the current conversation

func (*PersistentConversationRepository) SetConversationTitle added in v0.45.0

func (r *PersistentConversationRepository) SetConversationTitle(title string)

SetConversationTitle sets the title for the current conversation

func (*PersistentConversationRepository) SetTitleGenerator added in v0.46.1

func (r *PersistentConversationRepository) SetTitleGenerator(titleGenerator *ConversationTitleGenerator)

SetTitleGenerator sets the title generator for automatic title invalidation

func (*PersistentConversationRepository) StartNewConversation added in v0.45.0

func (r *PersistentConversationRepository) StartNewConversation(title string) error

StartNewConversation begins a new conversation with a unique ID

type StateChangeEvent added in v0.27.0

type StateChangeEvent struct {
	Type      StateChangeType
	OldState  domain.StateSnapshot
	NewState  domain.StateSnapshot
	Timestamp time.Time
}

StateChangeEvent represents a state change event

type StateChangeListener added in v0.27.0

type StateChangeListener interface {
	OnStateChanged(oldState, newState domain.StateSnapshot)
}

StateChangeListener interface for components that need to react to state changes

type StateChangeType added in v0.27.0

type StateChangeType int

StateChangeType represents the type of state change

const (
	StateChangeTypeViewTransition StateChangeType = iota
	StateChangeTypeChatStatus
	StateChangeTypeToolExecution
	StateChangeTypeDimensions
)

func (StateChangeType) String added in v0.27.0

func (s StateChangeType) String() string

type StateManager added in v0.27.0

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

StateManager provides centralized state management with proper synchronization

func NewStateManager added in v0.27.0

func NewStateManager(debugMode bool) *StateManager

NewStateManager creates a new state manager

func (*StateManager) AddListener added in v0.27.0

func (sm *StateManager) AddListener(listener StateChangeListener)

AddListener adds a state change listener

func (*StateManager) ApproveCurrentTool added in v0.27.0

func (sm *StateManager) ApproveCurrentTool() error

ApproveCurrentTool approves the current tool for execution

func (*StateManager) ClearApprovalUIState added in v0.27.0

func (sm *StateManager) ClearApprovalUIState()

ClearApprovalUIState clears the approval UI state

func (*StateManager) ClearFileSelectionState added in v0.27.0

func (sm *StateManager) ClearFileSelectionState()

ClearFileSelectionState clears the file selection state

func (*StateManager) CompleteCurrentTool added in v0.27.0

func (sm *StateManager) CompleteCurrentTool(result *domain.ToolExecutionResult) error

CompleteCurrentTool marks the current tool as completed

func (*StateManager) DenyCurrentTool added in v0.27.0

func (sm *StateManager) DenyCurrentTool() error

DenyCurrentTool denies the current tool execution

func (*StateManager) EndChatSession added in v0.27.0

func (sm *StateManager) EndChatSession()

EndChatSession ends the current chat session

func (*StateManager) EndToolExecution added in v0.27.0

func (sm *StateManager) EndToolExecution()

EndToolExecution ends the current tool execution session

func (*StateManager) ExportStateHistory added in v0.27.0

func (sm *StateManager) ExportStateHistory() ([]byte, error)

ExportStateHistory exports the state history as JSON for debugging

func (*StateManager) FailCurrentTool added in v0.27.0

func (sm *StateManager) FailCurrentTool(result *domain.ToolExecutionResult) error

FailCurrentTool marks the current tool as failed

func (*StateManager) GetApprovalUIState added in v0.27.0

func (sm *StateManager) GetApprovalUIState() *domain.ApprovalUIState

GetApprovalUIState returns the current approval UI state

func (*StateManager) GetChatSession added in v0.27.0

func (sm *StateManager) GetChatSession() *domain.ChatSession

GetChatSession returns the current chat session (read-only)

func (*StateManager) GetCurrentView added in v0.27.0

func (sm *StateManager) GetCurrentView() domain.ViewState

GetCurrentView returns the current view state

func (*StateManager) GetDimensions added in v0.27.0

func (sm *StateManager) GetDimensions() (int, int)

GetDimensions returns the current UI dimensions

func (*StateManager) GetFileSelectionState added in v0.27.0

func (sm *StateManager) GetFileSelectionState() *domain.FileSelectionState

GetFileSelectionState returns the current file selection state

func (*StateManager) GetHealthStatus added in v0.27.0

func (sm *StateManager) GetHealthStatus() HealthStatus

GetHealthStatus returns the health status of the state manager

func (*StateManager) GetStateHistory added in v0.27.0

func (sm *StateManager) GetStateHistory() []domain.StateSnapshot

GetStateHistory returns the state change history

func (*StateManager) GetStateSnapshot added in v0.27.0

func (sm *StateManager) GetStateSnapshot() domain.StateSnapshot

GetStateSnapshot returns the current state snapshot

func (*StateManager) GetToolExecution added in v0.27.0

func (sm *StateManager) GetToolExecution() *domain.ToolExecutionSession

GetToolExecution returns the current tool execution session (read-only)

func (*StateManager) IsDebugMode added in v0.27.0

func (sm *StateManager) IsDebugMode() bool

IsDebugMode returns whether debug mode is enabled

func (*StateManager) RecoverFromInconsistentState added in v0.27.0

func (sm *StateManager) RecoverFromInconsistentState() error

RecoverFromInconsistentState attempts to recover from an inconsistent state

func (*StateManager) RemoveListener added in v0.27.0

func (sm *StateManager) RemoveListener(listener StateChangeListener)

RemoveListener removes a state change listener

func (*StateManager) SetApprovalSelectedIndex added in v0.27.0

func (sm *StateManager) SetApprovalSelectedIndex(index int)

SetApprovalSelectedIndex sets the approval selection index

func (*StateManager) SetDebugMode added in v0.27.0

func (sm *StateManager) SetDebugMode(enabled bool)

SetDebugMode enables or disables debug mode

func (*StateManager) SetDimensions added in v0.27.0

func (sm *StateManager) SetDimensions(width, height int)

SetDimensions updates the UI dimensions

func (*StateManager) SetFileSelectedIndex added in v0.27.0

func (sm *StateManager) SetFileSelectedIndex(index int)

SetFileSelectedIndex sets the selected file index

func (*StateManager) SetToolApprovalRequired added in v0.27.0

func (sm *StateManager) SetToolApprovalRequired(required bool) error

SetToolApprovalRequired marks the current tool as requiring approval

func (*StateManager) SetupApprovalUI added in v0.27.0

func (sm *StateManager) SetupApprovalUI()

SetupApprovalUI initializes approval UI state

func (*StateManager) SetupFileSelection added in v0.27.0

func (sm *StateManager) SetupFileSelection(files []string)

SetupFileSelection initializes file selection state

func (*StateManager) StartChatSession added in v0.27.0

func (sm *StateManager) StartChatSession(requestID, model string, eventChan <-chan domain.ChatEvent) error

StartChatSession starts a new chat session

func (*StateManager) StartToolExecution added in v0.27.0

func (sm *StateManager) StartToolExecution(toolCalls []sdk.ChatCompletionMessageToolCall) error

StartToolExecution starts a new tool execution session

func (*StateManager) TransitionToView added in v0.27.0

func (sm *StateManager) TransitionToView(newView domain.ViewState) error

TransitionToView transitions to a new view with validation and logging

func (*StateManager) UpdateChatStatus added in v0.27.0

func (sm *StateManager) UpdateChatStatus(status domain.ChatStatus) error

UpdateChatStatus updates the chat session status with validation

func (*StateManager) UpdateFileSearchQuery added in v0.27.0

func (sm *StateManager) UpdateFileSearchQuery(query string)

UpdateFileSearchQuery updates the file search query

func (*StateManager) ValidateState added in v0.27.0

func (sm *StateManager) ValidateState() []error

ValidateState performs comprehensive state validation

type StreamingChatService

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

StreamingChatService implements ChatService by delegating to AgentService

func NewStreamingChatService

func NewStreamingChatService(agentService domain.AgentService) *StreamingChatService

NewStreamingChatService creates a new streaming chat service that delegates to AgentService

func (*StreamingChatService) CancelRequest

func (s *StreamingChatService) CancelRequest(requestID string) error

CancelRequest cancels an active request by delegating to AgentService

func (*StreamingChatService) GetMetrics

func (s *StreamingChatService) GetMetrics(requestID string) *domain.ChatMetrics

GetMetrics returns metrics for a completed request by delegating to AgentService

type TitleGenerator added in v0.46.1

type TitleGenerator interface {
	ProcessPendingTitles(ctx context.Context) error
}

TitleGenerator interface for conversation title generation

type ToolExecutionContext added in v0.27.0

type ToolExecutionContext struct {
	SessionID    string
	RequestID    string
	ToolCalls    []sdk.ChatCompletionMessageToolCall
	CurrentIndex int
	StartTime    time.Time
	Status       ToolExecutionStatus
	Results      []*domain.ToolExecutionResult
	EventChannel chan tea.Msg
}

ToolExecutionContext tracks the context of a tool execution session

type ToolExecutionOrchestrator added in v0.27.0

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

ToolExecutionOrchestrator manages the complete tool execution flow

func NewToolExecutionOrchestrator added in v0.27.0

func NewToolExecutionOrchestrator(
	stateManager *StateManager,
	toolService domain.ToolService,
	conversationRepo domain.ConversationRepository,
	configService domain.ConfigService,
) *ToolExecutionOrchestrator

NewToolExecutionOrchestrator creates a new tool execution orchestrator

func (*ToolExecutionOrchestrator) CancelExecution added in v0.27.0

func (teo *ToolExecutionOrchestrator) CancelExecution(reason string) tea.Cmd

CancelExecution cancels the current tool execution

func (*ToolExecutionOrchestrator) GetExecutionStatus added in v0.27.0

func (teo *ToolExecutionOrchestrator) GetExecutionStatus() (bool, *ToolExecutionContext)

GetExecutionStatus returns the current execution status

func (*ToolExecutionOrchestrator) GetHealthStatus added in v0.27.0

func (teo *ToolExecutionOrchestrator) GetHealthStatus() map[string]any

GetHealthStatus returns the health status of the tool execution orchestrator

func (*ToolExecutionOrchestrator) HandleApprovalResponse added in v0.27.0

func (teo *ToolExecutionOrchestrator) HandleApprovalResponse(approved bool, toolIndex int) tea.Cmd

HandleApprovalResponse handles the response to a tool approval request

func (*ToolExecutionOrchestrator) RecoverFromStuckState added in v0.27.0

func (teo *ToolExecutionOrchestrator) RecoverFromStuckState() tea.Cmd

RecoverFromStuckState attempts to recover from a stuck tool execution state

func (*ToolExecutionOrchestrator) StartToolExecution added in v0.27.0

func (teo *ToolExecutionOrchestrator) StartToolExecution(
	requestID string,
	toolCalls []sdk.ChatCompletionMessageToolCall,
) (string, tea.Cmd)

StartToolExecution initiates a new tool execution session

type ToolExecutionStatus added in v0.27.0

type ToolExecutionStatus int

ToolExecutionStatus represents the current execution status

const (
	ToolExecutionStatusReady ToolExecutionStatus = iota
	ToolExecutionStatusProcessing
	ToolExecutionStatusWaitingApproval
	ToolExecutionStatusExecuting
	ToolExecutionStatusCompleting
	ToolExecutionStatusCompleted
	ToolExecutionStatusFailed
	ToolExecutionStatusCancelled
)

func (ToolExecutionStatus) String added in v0.27.0

func (t ToolExecutionStatus) String() string

type ToolFormatterService added in v0.33.4

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

ToolFormatterService provides formatting for tool results by delegating to individual tools

func NewToolFormatterService added in v0.33.4

func NewToolFormatterService(registry ToolRegistry) *ToolFormatterService

NewToolFormatterService creates a new tool formatter service

func (*ToolFormatterService) FormatToolArgumentsForApproval added in v0.33.5

func (s *ToolFormatterService) FormatToolArgumentsForApproval(toolName string, args map[string]any) string

FormatToolArgumentsForApproval formats tool arguments for approval display This delegates to individual tools if they have special formatting needs

func (*ToolFormatterService) FormatToolCall added in v0.33.4

func (s *ToolFormatterService) FormatToolCall(toolName string, args map[string]any) string

FormatToolCall formats a tool call for consistent display

func (*ToolFormatterService) FormatToolResultExpanded added in v0.33.4

func (s *ToolFormatterService) FormatToolResultExpanded(result *domain.ToolExecutionResult, terminalWidth int) string

FormatToolResultExpanded formats expanded tool execution results

func (*ToolFormatterService) FormatToolResultForLLM added in v0.33.4

func (s *ToolFormatterService) FormatToolResultForLLM(result *domain.ToolExecutionResult) string

FormatToolResultForLLM formats tool execution results for LLM consumption

func (*ToolFormatterService) FormatToolResultForUI added in v0.33.4

func (s *ToolFormatterService) FormatToolResultForUI(result *domain.ToolExecutionResult, terminalWidth int) string

FormatToolResultForUI formats tool execution results for UI display

func (*ToolFormatterService) ShouldAlwaysExpandTool added in v0.36.0

func (s *ToolFormatterService) ShouldAlwaysExpandTool(toolName string) bool

ShouldAlwaysExpandTool checks if a tool result should always be expanded

type ToolRegistry added in v0.33.4

type ToolRegistry interface {
	GetTool(name string) (domain.Tool, error)
	ListAvailableTools() []string
}

ToolRegistry interface for accessing tools (implemented by tools.Registry)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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