tui

package
v1.2.0-alpha.1 Latest Latest
Warning

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

Go to latest
Published: Aug 13, 2026 License: MIT Imports: 23 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MaxColumnWidth = 24 // Max character width per cell to keep grid compact
	PageRowSize    = 12 // Rows per page
)

Variables

View Source
var (
	TableHeaderStyle = lipgloss.NewStyle().
						Bold(true).
						Foreground(lipgloss.AdaptiveColor{Light: "#4F46E5", Dark: "#818CF8"}).
						Padding(0, 1)

	TableCellStyle = lipgloss.NewStyle().
					Foreground(lipgloss.AdaptiveColor{Light: "#1E293B", Dark: "#F1F5F9"}).
					Padding(0, 1)

	TableNilStyle = lipgloss.NewStyle().
					Foreground(lipgloss.AdaptiveColor{Light: "#94A3B8", Dark: "#64748B"}).
					Italic(true).
					Padding(0, 1)

	TableBorderStyle = lipgloss.NewStyle().
						Foreground(lipgloss.AdaptiveColor{Light: "#CBD5E1", Dark: "#334155"})

	ActiveTableBorderStyle = lipgloss.NewStyle().
							Foreground(lipgloss.AdaptiveColor{Light: "#6366F1", Dark: "#818CF8"})

	FieldKeyStyle = lipgloss.NewStyle().
					Bold(true).
					Foreground(lipgloss.AdaptiveColor{Light: "#4F46E5", Dark: "#818CF8"})

	FieldValueStyle = lipgloss.NewStyle().
					Foreground(lipgloss.AdaptiveColor{Light: "#1E293B", Dark: "#F1F5F9"})

	RecordDividerStyle = lipgloss.NewStyle().
						Bold(true).
						Foreground(PrimaryColor)

	ScrollBadgeStyle = lipgloss.NewStyle().
						Bold(true).
						Foreground(lipgloss.AdaptiveColor{Light: "#BE185D", Dark: "#F472B6"})
)
View Source
var (
	// High-Contrast Adaptive Styles for SQL & JS Syntax Highlighting (Light & Dark mode compatible)
	KeywordStyle    = lipgloss.NewStyle().Bold(true).Foreground(lipgloss.AdaptiveColor{Light: "#6D28D9", Dark: "#C084FC"})   // Rich Purple
	StringStyle     = lipgloss.NewStyle().Foreground(lipgloss.AdaptiveColor{Light: "#047857", Dark: "#34D399"})              // Emerald Green
	NumberStyle     = lipgloss.NewStyle().Foreground(lipgloss.AdaptiveColor{Light: "#B45309", Dark: "#FBBF24"})              // Amber Gold
	NameStyle       = lipgloss.NewStyle().Bold(true).Foreground(lipgloss.AdaptiveColor{Light: "#0369A1", Dark: "#38BDF8"})   // Sky Blue
	CommentStyle    = lipgloss.NewStyle().Italic(true).Foreground(lipgloss.AdaptiveColor{Light: "#64748B", Dark: "#94A3B8"}) // Slate Grey
	DefaultTxtStyle = lipgloss.NewStyle().Bold(true).Foreground(lipgloss.AdaptiveColor{Light: "#0F172A", Dark: "#F8FAFC"})   // Deep Slate / Crisp White
)
View Source
var (
	// Palette Colors (Adaptive Catppuccin / Tokyo Night Theme)
	PrimaryColor   = lipgloss.AdaptiveColor{Light: "#6D28D9", Dark: "#A78BFA"}
	SecondaryColor = lipgloss.AdaptiveColor{Light: "#059669", Dark: "#34D399"}
	AccentColor    = lipgloss.AdaptiveColor{Light: "#BE185D", Dark: "#F472B6"}
	WarningColor   = lipgloss.AdaptiveColor{Light: "#D97706", Dark: "#FBBF24"}
	ErrorColor     = lipgloss.AdaptiveColor{Light: "#E11D48", Dark: "#F87171"}
	InfoColor      = lipgloss.AdaptiveColor{Light: "#0284C7", Dark: "#38BDF8"}
	MutedColor     = lipgloss.AdaptiveColor{Light: "#64748B", Dark: "#94A3B8"}
	TextNormal     = lipgloss.AdaptiveColor{Light: "#0F172A", Dark: "#F8FAFC"}
	HeaderBg       = lipgloss.AdaptiveColor{Light: "#E2E8F0", Dark: "#1E293B"}

	// Header Container & Badges
	HeaderBarStyle = lipgloss.NewStyle().
					Background(HeaderBg).
					Padding(0, 1)

	HeaderTitleBadge = lipgloss.NewStyle().
						Bold(true).
						Foreground(lipgloss.Color("#FFFFFF")).
						Background(PrimaryColor).
						Padding(0, 1)

	HeaderProfileBadge = lipgloss.NewStyle().
						Bold(true).
						Foreground(lipgloss.Color("#FFFFFF")).
						Background(InfoColor).
						Padding(0, 1)

	BadgeReadOnly = lipgloss.NewStyle().
					Bold(true).
					Foreground(lipgloss.Color("#FFFFFF")).
					Background(SecondaryColor).
					Padding(0, 1)

	BadgeReadWrite = lipgloss.NewStyle().
					Bold(true).
					Foreground(lipgloss.Color("#FFFFFF")).
					Background(WarningColor).
					Padding(0, 1)

	BadgeAutoExec = lipgloss.NewStyle().
					Bold(true).
					Foreground(lipgloss.Color("#FFFFFF")).
					Background(AccentColor).
					Padding(0, 1)

	BadgeManualApprove = lipgloss.NewStyle().
						Bold(true).
						Foreground(lipgloss.AdaptiveColor{Light: "#0F172A", Dark: "#E2E8F0"}).
						Background(lipgloss.AdaptiveColor{Light: "#CBD5E1", Dark: "#475569"}).
						Padding(0, 1)

	// Keybinding Badges
	KeyBadgeStyle = lipgloss.NewStyle().
					Bold(true).
					Foreground(lipgloss.AdaptiveColor{Light: "#0F172A", Dark: "#F8FAFC"}).
					Background(lipgloss.AdaptiveColor{Light: "#CBD5E1", Dark: "#334155"}).
					Padding(0, 1)

	KeyLabelStyle = lipgloss.NewStyle().
					Foreground(MutedColor)

	// SQL Preview Box
	SQLBoxStyle = lipgloss.NewStyle().
				Border(lipgloss.RoundedBorder()).
				BorderForeground(PrimaryColor).
				Padding(0, 1).
				MarginTop(1).
				MarginBottom(1)

	SQLTitleStyle = lipgloss.NewStyle().
					Bold(true).
					Foreground(AccentColor)

	SQLCodeStyle = lipgloss.NewStyle().
					Bold(true).
					Foreground(InfoColor)

	// User & AI Message Tags
	UserTagStyle = lipgloss.NewStyle().
					Bold(true).
					Foreground(lipgloss.Color("#FFFFFF")).
					Background(SecondaryColor).
					Padding(0, 1)

	AITagStyle = lipgloss.NewStyle().
				Bold(true).
				Foreground(lipgloss.Color("#FFFFFF")).
				Background(PrimaryColor).
				Padding(0, 1)

	ExecutingTagStyle = lipgloss.NewStyle().
						Bold(true).
						Foreground(lipgloss.Color("#FFFFFF")).
						Background(WarningColor).
						Padding(0, 1)

	SuccessBadgeStyle = lipgloss.NewStyle().
						Bold(true).
						Foreground(SecondaryColor)

	WarningBadgeStyle = lipgloss.NewStyle().
						Bold(true).
						Foreground(WarningColor)

	MetricsStyle = lipgloss.NewStyle().
					Foreground(MutedColor).
					Italic(true)

	AIResponseStyle = lipgloss.NewStyle().
					Foreground(TextNormal).
					PaddingLeft(1)

	ErrorMsgStyle = lipgloss.NewStyle().
					Bold(true).
					Foreground(ErrorColor).
					PaddingLeft(1)

	PromptPrefixStyle = lipgloss.NewStyle().
						Bold(true).
						Foreground(PrimaryColor)

	// Collapsible Tool Call Badges
	ToolCollapsedBadge = lipgloss.NewStyle().
						Bold(true).
						Foreground(lipgloss.AdaptiveColor{Light: "#475569", Dark: "#94A3B8"}).
						Background(lipgloss.AdaptiveColor{Light: "#E2E8F0", Dark: "#1E293B"}).
						Padding(0, 1)

	ToolExpandedBadge = lipgloss.NewStyle().
						Bold(true).
						Foreground(lipgloss.Color("#FFFFFF")).
						Background(WarningColor).
						Padding(0, 1)

	ToolDetailStyle = lipgloss.NewStyle().
					Border(lipgloss.NormalBorder(), false, false, false, true).
					BorderForeground(MutedColor).
					PaddingLeft(1).
					Foreground(MutedColor)
)

Functions

func FormatTableResult

func FormatTableResult(result *db.QueryResult, colOffset int, rowOffset int, termWidth int, isActive bool) string

FormatTableResult renders a beautiful terminal box table for SQL query results with column scrolling and row pagination.

func FormatVerticalResult

func FormatVerticalResult(result *db.QueryResult) string

FormatVerticalResult renders SQL query results in full vertical (psql \x expanded) format with NO truncation.

func HighlightCode

func HighlightCode(code string, lexerName string) string

HighlightCode renders adaptive, high-contrast syntax-highlighted code for light & dark terminals.

func HighlightJS

func HighlightJS(jsStr string) string

HighlightJS applies adaptive high-contrast syntax highlighting to JavaScript code blocks.

func HighlightSQL

func HighlightSQL(sqlStr string) string

HighlightSQL applies adaptive high-contrast syntax highlighting to SQL statements.

func RenderMarkdown

func RenderMarkdown(md string, width int) string

RenderMarkdown renders markdown text using Glamour with rich ANSI terminal styling.

Types

type Model

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

func NewModel

func NewModel(_ config.Options, resolved config.Resolved, aiService *ai.Service, initialPrompt string, unsafeAllowWrite bool) Model

func (Model) Init

func (m Model) Init() tea.Cmd

func (Model) Update

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

func (Model) View

func (m Model) View() string

type PendingExport

type PendingExport struct {
	DatasetID string
	Format    string
	FilePath  string
	ToolIdx   int
}

type State

type State int
const (
	StateLoadingSchema State = iota
	StateIdle
	StateThinking
	StateSQLReady
	StateExecuting
	StateExportReady
)

type TableState

type TableState struct {
	Result       *db.QueryResult
	MsgIndex     int
	ColOffset    int
	RowOffset    int
	VerticalView bool
}

type ToolCallItem

type ToolCallItem struct {
	ID              string
	Name            string
	Summary         string
	Detail          string
	Result          string
	RawOutput       string // Raw execution output/logs (never hidden!)
	TableStateIndex int    // -1 if no table attached
	MsgIndex        int
	IsExpanded      bool
}

Jump to

Keyboard shortcuts

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