Help us shape the future of Go! Take the 2026 Go Developer Survey

tui

package
v0.9.0 Latest Latest
Warning

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

Go to latest
Published: Oct 28, 2026 License: EUPL-1.2 Imports: 31 Imported by: 0

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

View Source
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 Run

func Run(ctx context.Context, eng Engine, opts Options, in io.Reader, out io.Writer) error

Run lance la TUI en plein écran jusqu'à ce que l'utilisateur quitte.

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 ItemKind

type ItemKind int

ItemKind distingue les éléments affichables.

const (
	ItemBanner ItemKind = iota
	ItemUser
	ItemAssistant
	ItemTool
	ItemNotice
	ItemError
)

type Model

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

Model est le modèle Bubble Tea de la TUI.

func New

func New(eng Engine, opts Options) Model

New crée le modèle et s'abonne aux événements de eng.

func (Model) Init

func (m Model) Init() tea.Cmd

Init lance la lecture de l'abonnement.

func (Model) Update

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

Update applique un message.

func (Model) View

func (m Model) View() string

View rend la conversation, la saisie et la barre d'état ; aucune ligne ne dépasse la largeur courante.

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).

Directories

Path Synopsis
Package diff calcule l'aperçu des modifications affiché par la TUI avant qu'une écriture (write_file / edit_file) soit approuvée.
Package diff calcule l'aperçu des modifications affiché par la TUI avant qu'une écriture (write_file / edit_file) soit approuvée.

Jump to

Keyboard shortcuts

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