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 ¶
This section is empty.
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 ¶
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
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 l'écran de
// bienvenue ("" : aucun profil, aucune ligne).
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'écran de bienvenue ("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
// 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 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).