components

package
v0.45.2 Latest Latest
Warning

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

Go to latest
Published: Aug 26, 2025 License: MIT Imports: 23 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ApplicationViewRenderer added in v0.27.0

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

ApplicationViewRenderer handles rendering of different application views

func NewApplicationViewRenderer added in v0.27.0

func NewApplicationViewRenderer(theme shared.Theme) *ApplicationViewRenderer

NewApplicationViewRenderer creates a new application view renderer

func (*ApplicationViewRenderer) RenderChatInterface added in v0.27.0

func (r *ApplicationViewRenderer) RenderChatInterface(
	data ChatInterfaceData,
	conversationView shared.ConversationRenderer,
	inputView shared.InputComponent,
	statusView shared.StatusComponent,
	helpBar shared.HelpBarComponent,
	approvalView shared.ApprovalComponent,
) string

RenderChatInterface renders the main chat interface

func (*ApplicationViewRenderer) RenderFileSelection added in v0.27.0

func (r *ApplicationViewRenderer) RenderFileSelection(
	data FileSelectionData,
	fileSelectionView *FileSelectionView,
) string

RenderFileSelection renders the file selection view

type ApprovalComponent added in v0.27.0

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

ApprovalComponent handles rendering of tool approval requests

func NewApprovalComponent added in v0.27.0

func NewApprovalComponent(theme shared.Theme) *ApprovalComponent

NewApprovalComponent creates a new approval component

func (*ApprovalComponent) Init added in v0.33.3

func (a *ApprovalComponent) Init() tea.Cmd

Init implements the Bubble Tea Model interface

func (*ApprovalComponent) Render added in v0.27.0

func (a *ApprovalComponent) Render(toolExecution *domain.ToolExecutionSession, selectedIndex int) string

Render renders the approval component for a given tool execution

func (*ApprovalComponent) SetHeight added in v0.27.0

func (a *ApprovalComponent) SetHeight(height int)

SetHeight sets the component height

func (*ApprovalComponent) SetToolFormatter added in v0.33.5

func (a *ApprovalComponent) SetToolFormatter(formatter domain.ToolFormatter)

SetToolFormatter sets the tool formatter for this approval component

func (*ApprovalComponent) SetWidth added in v0.27.0

func (a *ApprovalComponent) SetWidth(width int)

SetWidth sets the component width

func (*ApprovalComponent) Update added in v0.33.3

func (a *ApprovalComponent) Update(msg tea.Msg) (tea.Model, tea.Cmd)

Update handles Bubble Tea messages including scroll requests

func (*ApprovalComponent) View added in v0.33.3

func (a *ApprovalComponent) View() string

View implements the Bubble Tea Model interface

type ChatInterfaceData added in v0.27.0

type ChatInterfaceData struct {
	Width, Height   int
	ToolExecution   *domain.ToolExecutionSession
	ApprovalUIState *domain.ApprovalUIState
	CurrentView     domain.ViewState
}

ChatInterfaceData holds the data needed to render the chat interface

type ConversationSelectorImpl added in v0.45.0

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

ConversationSelectorImpl implements conversation selection UI

func NewConversationSelector added in v0.45.0

NewConversationSelector creates a new conversation selector

func (*ConversationSelectorImpl) GetSelected added in v0.45.0

GetSelected returns the selected conversation

func (*ConversationSelectorImpl) Init added in v0.45.0

func (c *ConversationSelectorImpl) Init() tea.Cmd

func (*ConversationSelectorImpl) IsCancelled added in v0.45.0

func (c *ConversationSelectorImpl) IsCancelled() bool

IsCancelled returns true if selection was cancelled

func (*ConversationSelectorImpl) IsSelected added in v0.45.0

func (c *ConversationSelectorImpl) IsSelected() bool

IsSelected returns true if a conversation was selected

func (*ConversationSelectorImpl) Reset added in v0.45.0

func (c *ConversationSelectorImpl) Reset()

Reset resets the conversation selector state for reuse

func (*ConversationSelectorImpl) SetHeight added in v0.45.0

func (c *ConversationSelectorImpl) SetHeight(height int)

SetHeight sets the height of the conversation selector

func (*ConversationSelectorImpl) SetWidth added in v0.45.0

func (c *ConversationSelectorImpl) SetWidth(width int)

SetWidth sets the width of the conversation selector

func (*ConversationSelectorImpl) Update added in v0.45.0

func (c *ConversationSelectorImpl) Update(msg tea.Msg) (tea.Model, tea.Cmd)

func (*ConversationSelectorImpl) View added in v0.45.0

func (c *ConversationSelectorImpl) View() string

type ConversationView

type ConversationView struct {
	Viewport viewport.Model
	// contains filtered or unexported fields
}

ConversationView handles the chat conversation display

func NewConversationView

func NewConversationView() *ConversationView

func (*ConversationView) CanScrollDown

func (cv *ConversationView) CanScrollDown() bool

func (*ConversationView) CanScrollUp

func (cv *ConversationView) CanScrollUp() bool

func (*ConversationView) GetPlainTextLines added in v0.38.0

func (cv *ConversationView) GetPlainTextLines() []string

GetPlainTextLines returns the conversation as plain text lines for selection mode

func (*ConversationView) GetScrollOffset

func (cv *ConversationView) GetScrollOffset() int

func (*ConversationView) Init

func (cv *ConversationView) Init() tea.Cmd

Bubble Tea interface

func (*ConversationView) IsToolResultExpanded

func (cv *ConversationView) IsToolResultExpanded(index int) bool

func (*ConversationView) Render

func (cv *ConversationView) Render() string

func (*ConversationView) SetConfigPath added in v0.40.0

func (cv *ConversationView) SetConfigPath(configPath string)

SetConfigPath sets the config path for the welcome message

func (*ConversationView) SetConversation

func (cv *ConversationView) SetConversation(conversation []domain.ConversationEntry)

func (*ConversationView) SetHeight

func (cv *ConversationView) SetHeight(height int)

func (*ConversationView) SetToolFormatter added in v0.33.4

func (cv *ConversationView) SetToolFormatter(formatter domain.ToolFormatter)

SetToolFormatter sets the tool formatter for this conversation view

func (*ConversationView) SetWidth

func (cv *ConversationView) SetWidth(width int)

func (*ConversationView) ToggleAllToolResultsExpansion added in v0.26.0

func (cv *ConversationView) ToggleAllToolResultsExpansion()

func (*ConversationView) ToggleToolResultExpansion

func (cv *ConversationView) ToggleToolResultExpansion(index int)

func (*ConversationView) Update

func (cv *ConversationView) Update(msg tea.Msg) (tea.Model, tea.Cmd)

func (*ConversationView) View

func (cv *ConversationView) View() string

type DiffInfo added in v0.38.0

type DiffInfo struct {
	FilePath   string
	OldContent string
	NewContent string
	Title      string
}

DiffInfo contains information needed to render a diff

type DiffRenderer added in v0.27.0

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

DiffRenderer provides high-performance diff rendering with colors

func NewDiffRenderer added in v0.27.0

func NewDiffRenderer(theme shared.Theme) *DiffRenderer

NewDiffRenderer creates a new diff renderer with colored output

func NewToolDiffRenderer added in v0.38.0

func NewToolDiffRenderer() *DiffRenderer

NewToolDiffRenderer creates a tool diff renderer (alias for DiffRenderer)

func (*DiffRenderer) RenderColoredDiff added in v0.27.0

func (d *DiffRenderer) RenderColoredDiff(oldContent, newContent string) string

RenderColoredDiff renders a simple diff between old and new content (for compatibility)

func (*DiffRenderer) RenderDiff added in v0.38.0

func (d *DiffRenderer) RenderDiff(diffInfo DiffInfo) string

RenderDiff renders a unified diff with colors

func (*DiffRenderer) RenderEditToolArguments added in v0.27.0

func (d *DiffRenderer) RenderEditToolArguments(args map[string]any) string

RenderEditToolArguments renders Edit tool arguments with diff preview

func (*DiffRenderer) RenderMultiEditToolArguments added in v0.27.0

func (d *DiffRenderer) RenderMultiEditToolArguments(args map[string]any) string

RenderMultiEditToolArguments renders MultiEdit tool arguments

func (*DiffRenderer) RenderWriteToolArguments added in v0.38.0

func (d *DiffRenderer) RenderWriteToolArguments(args map[string]any) string

RenderWriteToolArguments renders Write tool arguments

type FileSelectionAction added in v0.27.0

type FileSelectionAction int

FileSelectionAction represents the type of action taken in file selection

const (
	FileSelectionActionNone FileSelectionAction = iota
	FileSelectionActionSelect
	FileSelectionActionCancel
)

type FileSelectionData added in v0.27.0

type FileSelectionData struct {
	Width         int
	Files         []string
	SearchQuery   string
	SelectedIndex int
}

FileSelectionData holds the data needed to render the file selection view

type FileSelectionHandler added in v0.27.0

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

FileSelectionHandler handles file selection logic and state management

func NewFileSelectionHandler added in v0.27.0

func NewFileSelectionHandler(theme shared.Theme) *FileSelectionHandler

NewFileSelectionHandler creates a new file selection handler

func (*FileSelectionHandler) CreateStatusMessage added in v0.27.0

func (h *FileSelectionHandler) CreateStatusMessage(action FileSelectionAction, selectedFile string) tea.Cmd

CreateStatusMessage creates appropriate status messages for file selection actions

func (*FileSelectionHandler) HandleKeyEvent added in v0.27.0

func (h *FileSelectionHandler) HandleKeyEvent(
	keyMsg tea.KeyMsg,
	files []string,
	searchQuery string,
	selectedIndex int,
) (newSearchQuery string, newSelectedIndex int, action FileSelectionAction, selectedFile string)

HandleKeyEvent processes key events for file selection

func (*FileSelectionHandler) RenderFileSelection added in v0.27.0

func (h *FileSelectionHandler) RenderFileSelection(data FileSelectionData) string

RenderFileSelection renders the file selection view

func (*FileSelectionHandler) UpdateInputWithSelectedFile added in v0.27.0

func (h *FileSelectionHandler) UpdateInputWithSelectedFile(currentInput string, cursor int, selectedFile string) (newInput string, newCursor int)

UpdateInputWithSelectedFile updates input text with the selected file

type FileSelectionView added in v0.27.0

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

func NewFileSelectionView added in v0.27.0

func NewFileSelectionView(theme shared.Theme) *FileSelectionView

func (*FileSelectionView) RenderView added in v0.27.0

func (f *FileSelectionView) RenderView(allFiles []string, searchQuery string, selectedIndex int) string

func (*FileSelectionView) SetWidth added in v0.27.0

func (f *FileSelectionView) SetWidth(width int)

type HelpBar

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

HelpBar displays keyboard shortcuts at the bottom of the screen

func NewHelpBar

func NewHelpBar() *HelpBar

func (*HelpBar) Init

func (hb *HelpBar) Init() tea.Cmd

Bubble Tea interface

func (*HelpBar) IsEnabled

func (hb *HelpBar) IsEnabled() bool

func (*HelpBar) Render

func (hb *HelpBar) Render() string

func (*HelpBar) SetEnabled

func (hb *HelpBar) SetEnabled(enabled bool)

func (*HelpBar) SetHeight

func (hb *HelpBar) SetHeight(height int)

func (*HelpBar) SetShortcuts

func (hb *HelpBar) SetShortcuts(shortcuts []shared.KeyShortcut)

func (*HelpBar) SetWidth

func (hb *HelpBar) SetWidth(width int)

func (*HelpBar) Update

func (hb *HelpBar) Update(msg tea.Msg) (tea.Model, tea.Cmd)

func (*HelpBar) View

func (hb *HelpBar) View() string

type InputView

type InputView struct {
	Autocomplete shared.AutocompleteInterface
	// contains filtered or unexported fields
}

InputView handles user input with history and autocomplete

func NewInputView

func NewInputView(modelService domain.ModelService) *InputView

func NewInputViewWithConfigDir added in v0.42.0

func NewInputViewWithConfigDir(modelService domain.ModelService, configDir string) *InputView

func (*InputView) AddToHistory added in v0.27.0

func (iv *InputView) AddToHistory(text string) error

AddToHistory adds the current input to the history

func (*InputView) CanHandle

func (iv *InputView) CanHandle(key tea.KeyMsg) bool

func (*InputView) ClearInput

func (iv *InputView) ClearInput()

func (*InputView) GetCursor

func (iv *InputView) GetCursor() int

func (*InputView) GetInput

func (iv *InputView) GetInput() string

func (*InputView) HandleKey

func (iv *InputView) HandleKey(key tea.KeyMsg) (tea.Model, tea.Cmd)

func (*InputView) Init

func (iv *InputView) Init() tea.Cmd

Bubble Tea interface

func (*InputView) IsAutocompleteVisible added in v0.27.0

func (iv *InputView) IsAutocompleteVisible() bool

IsAutocompleteVisible returns whether autocomplete is currently visible

func (*InputView) IsTextSelectionMode added in v0.38.0

func (iv *InputView) IsTextSelectionMode() bool

func (*InputView) NavigateHistoryDown added in v0.27.0

func (iv *InputView) NavigateHistoryDown()

NavigateHistoryDown moves down in history (to newer messages) - public method for interface

func (*InputView) NavigateHistoryUp added in v0.27.0

func (iv *InputView) NavigateHistoryUp()

NavigateHistoryUp moves up in history (to older messages) - public method for interface

func (*InputView) Render

func (iv *InputView) Render() string

func (*InputView) SetCursor

func (iv *InputView) SetCursor(position int)

func (*InputView) SetHeight

func (iv *InputView) SetHeight(height int)

func (*InputView) SetPlaceholder

func (iv *InputView) SetPlaceholder(text string)

func (*InputView) SetText

func (iv *InputView) SetText(text string)

func (*InputView) SetTextSelectionMode added in v0.38.0

func (iv *InputView) SetTextSelectionMode(enabled bool)

func (*InputView) SetWidth

func (iv *InputView) SetWidth(width int)

func (*InputView) TryHandleAutocomplete added in v0.42.0

func (iv *InputView) TryHandleAutocomplete(key tea.KeyMsg) (handled bool, completion string)

TryHandleAutocomplete attempts to handle autocomplete key input

func (*InputView) Update

func (iv *InputView) Update(msg tea.Msg) (tea.Model, tea.Cmd)

func (*InputView) View

func (iv *InputView) View() string

type ModelSelectorImpl added in v0.27.0

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

ModelSelectorImpl implements model selection UI

func NewModelSelector added in v0.27.0

func NewModelSelector(models []string, modelService domain.ModelService, theme shared.Theme) *ModelSelectorImpl

NewModelSelector creates a new model selector

func (*ModelSelectorImpl) GetSelected added in v0.27.0

func (m *ModelSelectorImpl) GetSelected() string

GetSelected returns the selected model

func (*ModelSelectorImpl) Init added in v0.27.0

func (m *ModelSelectorImpl) Init() tea.Cmd

func (*ModelSelectorImpl) IsCancelled added in v0.27.0

func (m *ModelSelectorImpl) IsCancelled() bool

IsCancelled returns true if selection was cancelled

func (*ModelSelectorImpl) IsSelected added in v0.27.0

func (m *ModelSelectorImpl) IsSelected() bool

IsSelected returns true if a model was selected

func (*ModelSelectorImpl) SetHeight added in v0.27.0

func (m *ModelSelectorImpl) SetHeight(height int)

SetHeight sets the height of the model selector

func (*ModelSelectorImpl) SetWidth added in v0.27.0

func (m *ModelSelectorImpl) SetWidth(width int)

SetWidth sets the width of the model selector

func (*ModelSelectorImpl) Update added in v0.27.0

func (m *ModelSelectorImpl) Update(msg tea.Msg) (tea.Model, tea.Cmd)

func (*ModelSelectorImpl) View added in v0.27.0

func (m *ModelSelectorImpl) View() string

type Position added in v0.38.0

type Position struct {
	Line int
	Col  int
}

Position represents a position in the text

type StatusState added in v0.38.0

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

StatusState represents a saved status state

type StatusView

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

StatusView handles status messages, errors, and loading spinners

func NewStatusView

func NewStatusView() *StatusView

func (*StatusView) ClearStatus

func (sv *StatusView) ClearStatus()

func (*StatusView) HasSavedState added in v0.38.0

func (sv *StatusView) HasSavedState() bool

HasSavedState returns true if there's a saved state that can be restored

func (*StatusView) Init

func (sv *StatusView) Init() tea.Cmd

Bubble Tea interface

func (*StatusView) IsShowingError

func (sv *StatusView) IsShowingError() bool

func (*StatusView) IsShowingSpinner

func (sv *StatusView) IsShowingSpinner() bool

func (*StatusView) Render

func (sv *StatusView) Render() string

func (*StatusView) RestoreSavedState added in v0.38.0

func (sv *StatusView) RestoreSavedState() tea.Cmd

RestoreSavedState restores the previously saved status state

func (*StatusView) SaveCurrentState added in v0.38.0

func (sv *StatusView) SaveCurrentState()

SaveCurrentState saves the current status state for later restoration

func (*StatusView) SetHeight

func (sv *StatusView) SetHeight(height int)

func (*StatusView) SetTokenUsage

func (sv *StatusView) SetTokenUsage(usage string)

func (*StatusView) SetWidth

func (sv *StatusView) SetWidth(width int)

func (*StatusView) ShowError

func (sv *StatusView) ShowError(message string)

func (*StatusView) ShowSpinner

func (sv *StatusView) ShowSpinner(message string)

func (*StatusView) ShowSpinnerWithType added in v0.27.0

func (sv *StatusView) ShowSpinnerWithType(message string, statusType domain.StatusType, progress *domain.StatusProgress)

func (*StatusView) ShowStatus

func (sv *StatusView) ShowStatus(message string)

func (*StatusView) ShowStatusWithType added in v0.27.0

func (sv *StatusView) ShowStatusWithType(message string, statusType domain.StatusType, progress *domain.StatusProgress)

func (*StatusView) Update

func (sv *StatusView) Update(msg tea.Msg) (tea.Model, tea.Cmd)

func (*StatusView) UpdateSpinnerMessage added in v0.27.0

func (sv *StatusView) UpdateSpinnerMessage(message string, statusType domain.StatusType)

func (*StatusView) View

func (sv *StatusView) View() string

type TextSelectionView added in v0.38.0

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

TextSelectionView provides vim-like text selection mode

func NewTextSelectionView added in v0.38.0

func NewTextSelectionView() *TextSelectionView

NewTextSelectionView creates a new text selection view

func (*TextSelectionView) HandleKey added in v0.38.0

func (v *TextSelectionView) HandleKey(msg tea.KeyMsg) tea.Cmd

HandleKey handles keyboard input in selection mode

func (*TextSelectionView) Render added in v0.38.0

func (v *TextSelectionView) Render() string

func (*TextSelectionView) SetHeight added in v0.38.0

func (v *TextSelectionView) SetHeight(height int)

SetHeight sets the height of the view

func (*TextSelectionView) SetLines added in v0.38.0

func (v *TextSelectionView) SetLines(lines []string)

SetLines sets the lines to display from a ConversationView

func (*TextSelectionView) SetWidth added in v0.38.0

func (v *TextSelectionView) SetWidth(width int)

SetWidth sets the width of the view

type ToolCallInfo added in v0.33.4

type ToolCallInfo struct {
	Name string
	Args map[string]any
}

Jump to

Keyboard shortcuts

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