- Add safety checks to Zig build - Add TUI with job management and narrative views - Add WebSocket support and export services - Add smart configuration defaults - Update API routes with security headers - Update SECURITY.md with comprehensive policy - Add Makefile security scanning targets
60 lines
3.2 KiB
Go
60 lines
3.2 KiB
Go
// Package model provides TUI data structures and state management
|
|
package model
|
|
|
|
import "github.com/charmbracelet/bubbles/key"
|
|
|
|
// KeyMap defines key bindings for the TUI
|
|
type KeyMap struct {
|
|
Refresh key.Binding
|
|
Trigger key.Binding
|
|
TriggerArgs key.Binding
|
|
ViewQueue key.Binding
|
|
ViewContainer key.Binding
|
|
ViewGPU key.Binding
|
|
ViewJobs key.Binding
|
|
ViewDatasets key.Binding
|
|
ViewExperiments key.Binding
|
|
ViewSettings key.Binding
|
|
ViewNarrative key.Binding
|
|
ViewTeam key.Binding
|
|
ViewExperimentHistory key.Binding
|
|
ViewConfig key.Binding
|
|
ViewLogs key.Binding
|
|
ViewExport key.Binding
|
|
FilterTeam key.Binding
|
|
Cancel key.Binding
|
|
Delete key.Binding
|
|
MarkFailed key.Binding
|
|
RefreshGPU key.Binding
|
|
Help key.Binding
|
|
Quit key.Binding
|
|
}
|
|
|
|
// DefaultKeys returns the default key bindings for the TUI
|
|
func DefaultKeys() KeyMap {
|
|
return KeyMap{
|
|
Refresh: key.NewBinding(key.WithKeys("r"), key.WithHelp("r", "refresh all")),
|
|
Trigger: key.NewBinding(key.WithKeys("t"), key.WithHelp("t", "queue job")),
|
|
TriggerArgs: key.NewBinding(key.WithKeys("a"), key.WithHelp("a", "queue w/ args")),
|
|
ViewQueue: key.NewBinding(key.WithKeys("q"), key.WithHelp("q", "view queue")),
|
|
ViewContainer: key.NewBinding(key.WithKeys("o"), key.WithHelp("o", "containers")),
|
|
ViewGPU: key.NewBinding(key.WithKeys("g"), key.WithHelp("g", "gpu status")),
|
|
ViewJobs: key.NewBinding(key.WithKeys("1"), key.WithHelp("1", "job list")),
|
|
ViewDatasets: key.NewBinding(key.WithKeys("2"), key.WithHelp("2", "datasets")),
|
|
ViewExperiments: key.NewBinding(key.WithKeys("3"), key.WithHelp("3", "experiments")),
|
|
ViewNarrative: key.NewBinding(key.WithKeys("n"), key.WithHelp("n", "narrative")),
|
|
ViewTeam: key.NewBinding(key.WithKeys("m"), key.WithHelp("m", "team")),
|
|
ViewExperimentHistory: key.NewBinding(key.WithKeys("e"), key.WithHelp("e", "experiment history")),
|
|
ViewConfig: key.NewBinding(key.WithKeys("c"), key.WithHelp("c", "config")),
|
|
ViewSettings: key.NewBinding(key.WithKeys("s"), key.WithHelp("s", "settings")),
|
|
ViewLogs: key.NewBinding(key.WithKeys("l"), key.WithHelp("l", "logs")),
|
|
ViewExport: key.NewBinding(key.WithKeys("E"), key.WithHelp("E", "export job")),
|
|
FilterTeam: key.NewBinding(key.WithKeys("@"), key.WithHelp("@", "filter by team")),
|
|
Cancel: key.NewBinding(key.WithKeys("x"), key.WithHelp("x", "cancel task")),
|
|
Delete: key.NewBinding(key.WithKeys("d"), key.WithHelp("d", "delete job")),
|
|
MarkFailed: key.NewBinding(key.WithKeys("f"), key.WithHelp("f", "mark failed")),
|
|
RefreshGPU: key.NewBinding(key.WithKeys("G"), key.WithHelp("G", "refresh GPU")),
|
|
Help: key.NewBinding(key.WithKeys("h", "?"), key.WithHelp("h/?", "toggle help")),
|
|
Quit: key.NewBinding(key.WithKeys("ctrl+c"), key.WithHelp("ctrl+c", "quit")),
|
|
}
|
|
}
|