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

engine

package
v0.1.0 Latest Latest
Warning

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

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

Documentation

Overview

Package engine contient la boucle agentique : il relie le fournisseur, les outils, les permissions, le contrôle sortant et l'audit, et émet des événements typés consommés par les interfaces.

Index

Constants

View Source
const (
	// DefaultContextWindow s'applique quand Deps.ContextWindow vaut 0 ou moins.
	DefaultContextWindow = 32000
	// DefaultCompactionThreshold s'applique quand Deps.CompactionThreshold
	// vaut 0 ou moins.
	DefaultCompactionThreshold = 0.8
)
View Source
const DefaultMaxIterations = 50

DefaultMaxIterations s'applique quand Deps.MaxIterations vaut 0 ou moins.

Variables

View Source
var (
	// ErrAuditFailure : un Sink a échoué ; l'engine refuse désormais tout tour.
	ErrAuditFailure = errors.New("échec d'écriture du journal d'audit")
	// ErrUnknownPermission : Respond avec un identifiant inconnu ou déjà résolu.
	ErrUnknownPermission = errors.New("demande de permission inconnue")
	// ErrSessionActive : Restore sur une session déjà utilisée dans ce processus.
	ErrSessionActive = errors.New("session déjà active dans ce processus")
)
View Source
var DefaultSystemPrompt = i18n.SystemPrompt(i18n.FR)

DefaultSystemPrompt est le prompt système utilisé quand Deps.SystemPrompt est vide.

Functions

This section is empty.

Types

type Deps

type Deps struct {
	Provider      provider.Provider
	Tools         *tools.Registry
	Permissions   *policy.Permissions
	Outbound      *policy.Outbound
	Sinks         []event.Sink // audit en premier
	MaxIterations int
	SystemPrompt  string
	ProjectRoot   string
	Instructions  []string // fichiers d'instructions chargés, recopiés dans SessionStarted
	Now           func() time.Time
	// ContextWindow est la fenêtre de contexte du modèle, en jetons estimés
	// (0 : DefaultContextWindow).
	ContextWindow int
	// CompactionThreshold est la fraction de la fenêtre au-delà de laquelle
	// l'historique est compacté (0 : DefaultCompactionThreshold).
	CompactionThreshold float64
	// UnavailableMCP liste les serveurs MCP injoignables au démarrage ; un
	// McpServerDown est émis pour chacun juste après chaque SessionStarted.
	UnavailableMCP []event.McpServerDownPayload
	// MCP liste les serveurs MCP actifs, recopiés dans SessionStarted.
	MCP []event.MCPServerInfo
}

Deps regroupe les dépendances de l'engine.

type Engine

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

Engine exécute les tours d'agent. Il est sûr en usage concurrent ; les tours d'une même session sont sérialisés.

func New

func New(d Deps) *Engine

New construit un Engine.

func (*Engine) Respond

func (e *Engine) Respond(permissionID string, r Reply) error

Respond transmet la réponse à une demande de permission en attente.

func (*Engine) Restore

func (e *Engine) Restore(sessionID string, events []event.Event) error

Restore reconstruit l'état en mémoire d'une session à partir de ses événements persistés (session.Load), dans l'ordre. À appeler avant tout Submit de cette session ; renvoie ErrSessionActive si la session a déjà un état dans cet Engine (y compris après un premier Restore).

L'historique est reconstruit depuis UserMessage, AssistantMessage et ToolResult, tels quels (payloads masqués) ; ContextCompacted remplace les Replaced premiers messages (prompt système exclu) par le message de résumé, et un Replaced hors bornes rend le journal invalide (erreur). Tout appel d'outil resté sans ToolResult reçoit une réponse synthétique avant le message suivant de l'utilisateur ou de l'assistant, et après le dernier événement. Le compteur de séquence et celui des demandes de permission reprennent aux plus grandes valeurs lues ; les autorisations « pour la session » et l'avertissement de juridiction ne sont pas restaurés. Les autres types sont ignorés.

func (*Engine) Submit

func (e *Engine) Submit(ctx context.Context, sessionID, input string) error

Submit exécute un tour complet et bloque jusqu'à sa fin (TurnCompleted, erreur du fournisseur, annulation du contexte ou échec d'audit).

func (*Engine) Subscribe

func (e *Engine) Subscribe() <-chan event.Event

Subscribe renvoie un canal recevant chaque événement émis après l'appel (tampon de 256). La livraison est bloquante quand le tampon est plein : l'abonné DOIT lire le canal en continu, sinon l'engine se bloque. Appeler avant Submit. Le canal n'est jamais fermé ; quand Submit rend la main, tous les événements du tour sont déjà dans le canal.

type Reply

type Reply struct{ Allow, Remember bool }

Reply répond à un PermissionRequested.

Jump to

Keyboard shortcuts

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