Documentation
¶
Overview ¶
Package tui contient l'interface interactive de tenon. Ce fichier est la logique pure (sans Bubble Tea) qui transforme les événements de l'engine en éléments affichables.
Index ¶
Constants ¶
const ( // SandboxOn : les commandes shell sont confinées. SandboxOn = "sandboxed" // SandboxOff : les commandes shell ne sont pas confinées. SandboxOff = "not sandboxed" )
Valeurs de Options.Sandbox.
Variables ¶
var ErrTurnNotFinished = errors.New("tui: the turn did not finish")
ErrTurnNotFinished signale qu'à la sortie de la TUI le tour annulé n'a pas rendu la main dans le délai imparti.
Functions ¶
func ThemeNames ¶ added in v0.10.0
func ThemeNames() []string
ThemeNames renvoie les noms des thèmes, le thème par défaut en premier.
Types ¶
type Engine ¶
type Engine interface {
// Subscribe renvoie un abonnement aux événements ; l'engine bloque quand
// son tampon est plein, la TUI doit donc le lire en continu.
Subscribe() <-chan event.Event
// SubmitInput exécute un tour (texte simple ou skill développé) et rend
// la main à sa fin.
SubmitInput(ctx context.Context, sessionID string, in engine.Input) error
// Respond répond à une demande de permission.
Respond(permissionID string, r engine.Reply) error
// RewindPoints, RewindPlan et Rewind : /rewind (points récents d'abord,
// plan sans effet, exécution).
RewindPoints(sessionID string) []checkpoint.Point
RewindPlan(sessionID string, toSeq uint64) (checkpoint.Plan, error)
// Remember : /remember (écriture directe d'une note, sans approbation).
Remember(sessionID string, scope memory.Scope, text string) (memory.Entry, []string, error)
Rewind(ctx context.Context, sessionID string, toSeq uint64, mode engine.RewindMode, preview checkpoint.Plan, overwrite []string) (engine.RewindResult, error)
}
Engine est la partie de l'engine dont la TUI a besoin.
type Item ¶
type Item struct {
Kind ItemKind
Text string // texte affiché (assistant : accumulé pendant le streaming)
Tool string // ItemTool
Detail string // ItemTool : commande ou chemins ; résultat abrégé
Status string // ItemTool : "pending", "ok", "error", "denied"
Streaming bool // ItemAssistant en cours
// Parent est le call_id de l'appel « agent » dont un sous-agent a émis
// cet outil ("" pour l'agent principal) ; Iterations vaut le nombre
// d'itérations d'un sous-agent terminé.
Parent string
Iterations int
// contains filtered or unexported fields
}
Item est un élément de la conversation affichée.
type Model ¶
type Model struct {
// contains filtered or unexported fields
}
Model est le modèle Bubble Tea de la TUI.
type Options ¶
type Options struct {
Lang i18n.Lang
// Theme est le thème de la TUI ([ui] theme ; "" ou inconnu : tenon).
Theme string
// Animation active l'animation d'ouverture ([ui] animation).
Animation bool
SessionID string
Provider llm.ProviderInfo
ContextWindow int
// SessionTokens : total de jetons déjà compté (session reprise).
SessionTokens int64
ProjectRoot string
// Profile est le profil de conformité actif, affiché dans la barre
// d'état ("" : aucun profil).
Profile string
// Policy est la ligne de la politique d'organisation, déjà traduite
// (« policy: acme-dev v3 (key …) »), affichée sous celle du profil
// ("" : aucune politique, aucune ligne).
Policy string
// Local est le fournisseur local du routage ("" : celui de
// SessionStarted, ou le fournisseur courant s'il est local).
Local string
// Version est la version affichée dans l'accueil ("dev" si vide).
Version string
// Redact masque tout texte venu des événements avant affichage (même
// fonction que le mode non interactif) ; nil : aucun masquage.
Redact func(string) string
// DescribeMCP renvoie le serveur MCP (identifiant, juridiction, pays) d'un
// outil ; nil : registre du paquet mcp.
DescribeMCP func(tool string) (event.MCPServerInfo, bool)
// Notices sont des avis du démarrage (avertissements MCP) placés en tête
// de la conversation, nettoyés et masqués par Redact.
Notices []string
// Skills est le catalogue des skills (/<nom>, /skills, complétion) ;
// nil : aucun skill.
Skills *skills.Catalog
// Agents est le catalogue des agents (/agents) ; nil : aucun agent.
Agents *agents.Catalog
// Hooks est l'ensemble des hooks chargés (/hooks) ; nil : aucun hook.
Hooks *hooks.Set
// Memory est le store mémoire (/memory) ; nil : mémoire coupée, /memory
// et /remember répondent « memory: disabled by <MemoryDisabledBy> ».
Memory *memory.Store
// MemoryDisabledBy : "policy" ou "config" ("" : config).
MemoryDisabledBy string
// MemoryWriteSeqs : séquences des MemoryWritten de la session reprise
// (--resume), pour l'avis de /rewind.
MemoryWriteSeqs []uint64
// Resumed indique une session reprise (--resume) : le fil s'affiche
// directement, sans l'accueil.
Resumed bool
// Sandbox est l'état d'isolation des commandes shell, pour la pastille de
// la barre d'état : SandboxOn, SandboxOff, ou "" (inconnu : aucune pastille).
Sandbox string
// Providers sont les fournisseurs configurés, par identifiant : pays et
// juridiction des envois du panneau latéral et des badges (Usage ne porte
// pas de pays) ; nil : pays inconnus.
Providers map[string]llm.ProviderInfo
// History sont les événements de la session reprise (--resume) : ils
// restaurent le panneau latéral seul (titre, envois, fichiers, jetons,
// jauge), jamais la transcription.
History []event.Event
// Sessions sont les sessions passées du dossier (palette Ctrl+P), la plus
// récente d'abord ; la session courante en est exclue à l'affichage.
Sessions []session.Summary
// Now remplace l'horloge (délai d'armement des acceptations, double
// Ctrl+C). Réservé aux tests ; nil : time.Now.
Now func() time.Time
}
Options configure la TUI.
type Theme ¶ added in v0.10.0
type Theme struct {
Name string
// Structure : fond (badges) et, sur fond clair, texte (cadres, logo).
Structure lipgloss.Color
// StructureDark remplace Structure comme couleur de texte sur fond sombre
// ("" : Structure), pour garder un contraste d'au moins 4,5:1.
StructureDark lipgloss.Color
// Accent : titres, outils, fin du dégradé du logo.
Accent lipgloss.Color
// OK : réussite, juridiction UE, ajouts.
OK lipgloss.Color
// Alert : avertissement (ambre : hors UE, juridiction inconnue).
Alert lipgloss.Color
// Error : lignes d'erreur et suppressions d'un diff (rouge).
Error lipgloss.Color
// Muted : texte atténué (avis, aides).
Muted lipgloss.Color
// Text : texte courant ("" : couleur du terminal).
Text lipgloss.Color
// Selection : fond de l'entrée sélectionnée (palette, listes).
Selection lipgloss.Color
}
Theme est la palette de rôles d'un thème de la TUI ; tout rendu coloré passe par ces rôles (jamais par une couleur en dur).
func ThemeByName ¶ added in v0.10.0
ThemeByName renvoie le thème de ce nom.
type Transcript ¶
type Transcript struct {
// contains filtered or unexported fields
}
Transcript accumule les éléments affichables d'une session. Tout texte venu des événements est masqué (redact) avant d'être conservé.
func NewTranscript ¶
func NewTranscript(l i18n.Lang) *Transcript
NewTranscript crée une transcription vide dans la langue l.
func (*Transcript) Apply ¶
func (t *Transcript) Apply(ev event.Event)
Apply intègre un événement ; les types inconnus sont ignorés.
func (*Transcript) Busy ¶
func (t *Transcript) Busy() bool
Busy indique qu'un tour est en cours (entre UserMessage et TurnCompleted).
func (*Transcript) Items ¶
func (t *Transcript) Items() []Item
Items renvoie une copie des éléments.
func (*Transcript) SetRedact ¶
func (t *Transcript) SetRedact(f func(string) string)
SetRedact remplace la fonction de masquage (nil : aucun masquage).