Documentation
¶
Overview ¶
Package ui implements the bubbletea TUI, SSH helpers, and CUE recipe execution for honey.
Index ¶
- func DefaultLocalFilesRoot() string
- func DialSSHLeafForRecord(user string, r hosts.Record) (*ssh.Client, func(), error)
- func LoadAISystemPromptFromConfigPath(configPath string) string
- func RemoteCopyLocalToRemote(user string, record hosts.Record, localPath, remotePath string, ...) error
- func RemoteCopyRemoteToLocal(user string, record hosts.Record, remotePath, localPath string, ...) error
- func RemoteListDir(user string, record hosts.Record, remotePath string, cache *engine.ClientCache) ([]engine.RemoteFileEntry, error)
- func RemoteMkdirAll(user string, record hosts.Record, remotePath string, cache *engine.ClientCache) error
- func RemoteRemove(user string, record hosts.Record, remotePath string, recursive bool, ...) error
- func RemoteStat(user string, record hosts.Record, remotePath string, cache *engine.ClientCache) (hostexec.RemoteFileEntry, error)
- func ResizeFromColsRows(cols, rows int) *remotecommand.TerminalSize
- func ResolveLocalAbsUnderRoot(root, requested string) (string, error)
- func RunDockerWebTTY(ctx context.Context, user string, r hosts.Record, stdin io.Reader, ...) error
- func RunK8sPodWebTTY(ctx context.Context, r hosts.Record, stdin io.Reader, stdout, stderr io.Writer, ...) error
- func RunLogTUI(ctx context.Context, user string, records []hosts.Record, opts LogOptions, ...) error
- func RunRecordingReplay(recordDir, baseName string) error
- func RunTable(records []hosts.Record, sshUser string, opts RunTableOptions) error
- func StreamLogs(ctx context.Context, user string, records []hosts.Record, opts LogOptions, ...) error
- type DockerTerminalSize
- type LocalFileEntry
- type LogOptions
- type LogViewModel
- type RunTableOptions
- type TunnelModel
- type TunnelResult
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DefaultLocalFilesRoot ¶ added in v0.2.8
func DefaultLocalFilesRoot() string
DefaultLocalFilesRoot returns the configured or home-directory root for local file browser paths.
func DialSSHLeafForRecord ¶ added in v0.2.7
DialSSHLeafForRecord returns a leaf *ssh.Client for SSH to hosts.Record.PrimaryIP (same transport as the TUI). Kubernetes pod records are not supported for raw SSH in this helper.
func LoadAISystemPromptFromConfigPath ¶ added in v0.2.8
LoadAISystemPromptFromConfigPath returns defaults.ai_system_prompt from the honey YAML at path, if loadable.
func RemoteCopyLocalToRemote ¶ added in v0.2.8
func RemoteCopyLocalToRemote(user string, record hosts.Record, localPath, remotePath string, cache *engine.ClientCache) error
RemoteCopyLocalToRemote uploads a local file to the remote path.
func RemoteCopyRemoteToLocal ¶ added in v0.2.8
func RemoteCopyRemoteToLocal(user string, record hosts.Record, remotePath, localPath string, cache *engine.ClientCache) error
RemoteCopyRemoteToLocal downloads a remote file to a local path.
func RemoteListDir ¶ added in v0.2.8
func RemoteListDir(user string, record hosts.Record, remotePath string, cache *engine.ClientCache) ([]engine.RemoteFileEntry, error)
RemoteListDir lists a directory on the remote host using a cached SSH/k8s client.
func RemoteMkdirAll ¶ added in v0.3.6
func RemoteMkdirAll(user string, record hosts.Record, remotePath string, cache *engine.ClientCache) error
RemoteMkdirAll creates a directory on the remote host using a cached client.
func RemoteRemove ¶ added in v0.3.6
func RemoteRemove(user string, record hosts.Record, remotePath string, recursive bool, cache *engine.ClientCache) error
RemoteRemove deletes a file or directory on the remote host using a cached client.
func RemoteStat ¶ added in v0.3.6
func RemoteStat(user string, record hosts.Record, remotePath string, cache *engine.ClientCache) (hostexec.RemoteFileEntry, error)
RemoteStat queries a file stat on the remote host using a cached client.
func ResizeFromColsRows ¶ added in v0.2.7
func ResizeFromColsRows(cols, rows int) *remotecommand.TerminalSize
ResizeFromColsRows returns a terminal size for k8s remotecommand, or nil if cols or rows are non-positive.
func ResolveLocalAbsUnderRoot ¶ added in v0.3.6
ResolveLocalAbsUnderRoot resolves requested against root and ensures the result stays under root.
func RunDockerWebTTY ¶ added in v0.3.0
func RunDockerWebTTY( ctx context.Context, user string, r hosts.Record, stdin io.Reader, stdout io.Writer, cols, rows int, resizeCh <-chan DockerTerminalSize, reg hostexec.Registry, ) error
RunDockerWebTTY runs an interactive shell in a container with TTY over stdin/stdout.
func RunK8sPodWebTTY ¶ added in v0.2.7
func RunK8sPodWebTTY( ctx context.Context, r hosts.Record, stdin io.Reader, stdout, stderr io.Writer, cols, rows int, resizeCh <-chan *remotecommand.TerminalSize, ) error
RunK8sPodWebTTY runs an interactive shell in a Kubernetes pod with TTY over stdin/stdout/stderr, using the same dial path as the CLI (ephemeral debug container). Resize events are consumed from resizeCh.
func RunLogTUI ¶ added in v0.3.1
func RunLogTUI(ctx context.Context, user string, records []hosts.Record, opts LogOptions, cache *engine.ClientCache) error
RunLogTUI starts the interactive log viewer.
func RunRecordingReplay ¶ added in v0.2.8
RunRecordingReplay plays one .hrec.jsonl in a nested full-screen Bubble Tea view.
func RunTable ¶
func RunTable(records []hosts.Record, sshUser string, opts RunTableOptions) error
RunTable shows an interactive table and optionally execs ssh. After SSH/Tunnel disconnects, it returns to the UI.
func StreamLogs ¶ added in v0.3.1
func StreamLogs(ctx context.Context, user string, records []hosts.Record, opts LogOptions, cache *engine.ClientCache, out io.Writer) error
StreamLogs streams logs for records to out with stable per-record prefixes.
Types ¶
type DockerTerminalSize ¶ added in v0.3.0
type DockerTerminalSize = dockerprovider.DockerTerminalSize
DockerTerminalSize is a cols/rows pair for docker exec resize. It is an alias for dockerprovider.DockerTerminalSize.
type LocalFileEntry ¶ added in v0.2.8
type LocalFileEntry struct {
Name string `json:"name"`
Path string `json:"path"`
IsDir bool `json:"is_dir"`
Size int64 `json:"size"`
Mode string `json:"mode"`
ModifiedAt time.Time `json:"modified_at"`
}
LocalFileEntry mirrors engine.RemoteFileEntry for local directories.
func ListLocalDirUnderRoot ¶ added in v0.2.8
func ListLocalDirUnderRoot(root, requested string) (string, []LocalFileEntry, error)
ListLocalDirUnderRoot lists a directory under the resolved root path.
type LogOptions ¶ added in v0.3.1
type LogOptions struct {
Target string
Source string
Follow bool
Tail int64
Since time.Duration
Timestamps bool
Container string
Unit string
Command string
RunAs string
MaxConcurrency int
Grep string
Labels []string
Highlight bool
Anomaly bool
AnomalyModel string
AnomalyThresh float64
AnomalyWindow int
AnomalyOnly bool
AnomalyStrict bool
AnomalyTokPath string
AnomalyEndpoint string
AnomalyLLMModel string
AnomalyContextLines int
AnomalyFilterThreshold float64
AnomalyFreqWindow int
AnomalyFreqRatio float64
AnomalyFeedbackFile string
AnomalyPreprocessor string
AlertEnabled bool
AlertSuppressDuration time.Duration
}
LogOptions controls distributed log streaming.
type LogViewModel ¶ added in v0.3.1
type LogViewModel struct {
// contains filtered or unexported fields
}
LogViewModel is the Bubble Tea model for the log viewer.
func NewLogViewModel ¶ added in v0.3.1
func NewLogViewModel(opts LogOptions) *LogViewModel
NewLogViewModel creates a new log view model.
func (*LogViewModel) Init ¶ added in v0.3.1
func (m *LogViewModel) Init() tea.Cmd
Init initializes the log view model.
func (*LogViewModel) Update ¶ added in v0.3.1
Update handles messages and updates the log view model.
func (*LogViewModel) View ¶ added in v0.3.1
func (m *LogViewModel) View() tea.View
View renders the log viewer UI.
type RunTableOptions ¶ added in v0.2.8
type RunTableOptions struct {
RecordDir string
RecordEnabled bool
// Config is the honey YAML already loaded for this session (optional; nil if none / load failed).
Config *config.File
// ConfigPath is the resolved honey YAML path (may be empty); CUE agent_transfer steps with cloud_backend_ref need it.
ConfigPath string
// engine.ClientCache is an optional shared SSH client cache. If nil, one is created.
ClientCache *engine.ClientCache
// ExecRegistry is the host execution registry.
ExecRegistry hostexec.Registry
// AlertBanner is an optional one-line banner shown above the table (e.g. from `honey alert investigate`).
AlertBanner string
}
RunTableOptions configures optional session recording for the TUI table.
type TunnelModel ¶ added in v0.3.6
type TunnelModel struct {
Record hosts.Record
Width int
Height int
// contains filtered or unexported fields
}
TunnelModel is the BubbleTea sub-model for the tunnel popup.
func NewTunnelModel ¶ added in v0.3.6
func NewTunnelModel(r hosts.Record, isK8s bool, width, height int) *TunnelModel
NewTunnelModel initializes the tunnel sub-model.
func (*TunnelModel) Init ¶ added in v0.3.6
func (m *TunnelModel) Init() tea.Cmd
Init satisfies tea.Model.
func (*TunnelModel) View ¶ added in v0.3.6
func (m *TunnelModel) View() tea.View
View satisfies tea.Model.
type TunnelResult ¶ added in v0.3.6
TunnelResult wraps the tunnel creation outcome.