interactors

package
v0.0.5 Latest Latest
Warning

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

Go to latest
Published: Apr 24, 2026 License: MIT Imports: 9 Imported by: 0

Documentation

Overview

Package interactors implements SOUL business logic (Clean Architecture). Each interactor corresponds to a specific use case.

Evolution Tracker - Suivi de l'évolution identitaire

Identity Merger - Fusion d'identités

Model Swap Handler - Gestion des changements de modèle LLM Le changement de modèle est le moment critique où l'identité risque d'être perdue.

Recall - Récupération de l'identité pour injection dans le contexte LLM

Package interactors — IdentityUpdateUseCase

Permet la modification intentionnelle de l'âme d'un agent, déclenchée par une instruction utilisateur ("réponds avec plus d'enthousiasme") ou un patch structuré depuis b0p/cli via soul_update / soul_patch.

Principe fondamental : on ne modifie JAMAIS un snapshot existant. Chaque modification crée un nouveau snapshot versionné, dérivé du précédent, préservant ainsi l'historique complet des évolutions identitaires.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type DriftDetectionUseCase

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

DriftDetectionUseCase implémente la détection de dérive identitaire La dérive identitaire est le phénomène où l'agent "oublie qui il est" au fil des conversations ou après des changements de modèle.

func NewDriftDetectionUseCase

func NewDriftDetectionUseCase(storage ports.SoulStorage, detector ports.IdentityDriftDetector, composer ports.IdentityComposer) *DriftDetectionUseCase

NewDriftDetectionUseCase crée un nouveau use case de détection

func (*DriftDetectionUseCase) CheckDiffusion

func (uc *DriftDetectionUseCase) CheckDiffusion(ctx context.Context, agentID string) (bool, float64, error)

CheckDiffusion vérifie si l'identité s'est diffusée (perdue)

func (*DriftDetectionUseCase) CheckDrift

func (uc *DriftDetectionUseCase) CheckDrift(ctx context.Context, agentID string, currentObserved *entities.IdentitySnapshot) (*valueobjects.IdentityDriftReport, error)

CheckDrift vérifie la dérive entre l'identité stockée et l'identité actuelle observée

func (*DriftDetectionUseCase) GetDiffHistory

func (uc *DriftDetectionUseCase) GetDiffHistory(ctx context.Context, agentID string, limit int) ([]*entities.IdentityDiff, error)

GetDiffHistory retourne l'historique des diffs

func (*DriftDetectionUseCase) GetDriftReport

func (uc *DriftDetectionUseCase) GetDriftReport(ctx context.Context, agentID string, windowSize int) (*valueobjects.IdentityDriftReport, error)

GetDriftReport génère un rapport de dérive complet

func (*DriftDetectionUseCase) MonitorAgent

func (uc *DriftDetectionUseCase) MonitorAgent(ctx context.Context, agentID string, threshold float64) (<-chan valueobjects.IdentityDriftReport, error)

MonitorAgent démarre la surveillance continue d'un agent

func (*DriftDetectionUseCase) RestoreIdentity

func (uc *DriftDetectionUseCase) RestoreIdentity(ctx context.Context, agentID string, targetVersion int) (*entities.IdentitySnapshot, error)

RestoreIdentity restaure l'identité depuis une version précédente Utilisé quand l'identité actuelle a trop dérivé.

type IdentityCaptureUseCase

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

IdentityCaptureUseCase implements identity capture from conversations.

func NewIdentityCaptureUseCase

func NewIdentityCaptureUseCase(storage ports.SoulStorage, extractor ports.IdentityExtractor) *IdentityCaptureUseCase

NewIdentityCaptureUseCase creates a new capture use case.

func (*IdentityCaptureUseCase) CaptureFromConversation

CaptureFromConversation captures identity from a complete conversation.

func (*IdentityCaptureUseCase) CaptureFromSingleInteraction

func (uc *IdentityCaptureUseCase) CaptureFromSingleInteraction(ctx context.Context, agentID, agentResponse, userMessage, modelID string) error

CaptureFromSingleInteraction captures identity from a single interaction. Used for incremental updates.

type IdentityEvolutionUseCase

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

IdentityEvolutionUseCase implémente le suivi de l'évolution identitaire Permet de comprendre comment l'agent "grandit" et change au fil du temps.

func NewIdentityEvolutionUseCase

func NewIdentityEvolutionUseCase(storage ports.SoulStorage, tracker ports.IdentityEvolutionTracker) *IdentityEvolutionUseCase

NewIdentityEvolutionUseCase crée un nouveau use case

func (*IdentityEvolutionUseCase) GetEvolutionSummary

func (uc *IdentityEvolutionUseCase) GetEvolutionSummary(ctx context.Context, agentID string) (string, error)

GetEvolutionSummary retourne un résumé lisible de l'évolution

func (*IdentityEvolutionUseCase) GetEvolutionTimeline

func (uc *IdentityEvolutionUseCase) GetEvolutionTimeline(ctx context.Context, agentID string) ([]*entities.IdentityDiff, error)

GetEvolutionTimeline retourne la timeline complète d'évolution

func (*IdentityEvolutionUseCase) GetIdentityLineage

func (uc *IdentityEvolutionUseCase) GetIdentityLineage(ctx context.Context, snapshotID string) (*ports.IdentityLineage, error)

GetIdentityLineage retourne la lignée complète d'un snapshot

func (*IdentityEvolutionUseCase) PredictEmergingTraits

func (uc *IdentityEvolutionUseCase) PredictEmergingTraits(ctx context.Context, agentID string) ([]*entities.PersonalityTrait, error)

PredictEmergingTraits prédit les traits qui pourraient émerger

func (*IdentityEvolutionUseCase) SuggestAdjustments

func (uc *IdentityEvolutionUseCase) SuggestAdjustments(ctx context.Context, agentID string) ([]string, error)

SuggestAdjustments suggère des ajustements d'identité

func (*IdentityEvolutionUseCase) TrackSnapshot

TrackSnapshot enregistre un nouveau snapshot et calcule l'évolution

type IdentityMergeUseCase

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

IdentityMergeUseCase implémente la fusion d'identités Utilisé quand deux sessions ou deux instances d'agent doivent fusionner.

func NewIdentityMergeUseCase

func NewIdentityMergeUseCase(storage ports.SoulStorage, merger ports.SoulMerger) *IdentityMergeUseCase

NewIdentityMergeUseCase crée un nouveau use case

func (*IdentityMergeUseCase) CalculateCompatibility

func (uc *IdentityMergeUseCase) CalculateCompatibility(ctx context.Context, agentIDA, agentIDB string) (float64, error)

CalculateCompatibility calcule la compatibilité entre deux identités sans les fusionner

func (*IdentityMergeUseCase) MergeIdentities

func (uc *IdentityMergeUseCase) MergeIdentities(ctx context.Context, agentIDA, agentIDB string, strategy valueobjects.MergeStrategy) (*entities.IdentitySnapshot, error)

MergeIdentities fusionne deux identités selon une stratégie

type IdentityRecallUseCase

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

IdentityRecallUseCase implémente le use case de récupération d'identité C'est le "cœur battant" de SOUL : fournir au LLM son "souvenir de soi".

func NewIdentityRecallUseCase

func NewIdentityRecallUseCase(storage ports.SoulStorage, composer ports.IdentityComposer) *IdentityRecallUseCase

NewIdentityRecallUseCase crée un nouveau use case de recall

func (*IdentityRecallUseCase) GetIdentityHistory

func (uc *IdentityRecallUseCase) GetIdentityHistory(ctx context.Context, agentID string, limit int) ([]*entities.IdentitySnapshot, error)

GetIdentityHistory retourne l'historique des snapshots

func (*IdentityRecallUseCase) GetIdentitySummary

func (uc *IdentityRecallUseCase) GetIdentitySummary(ctx context.Context, agentID string) (string, error)

GetIdentitySummary retourne un résumé lisible de l'identité

func (*IdentityRecallUseCase) GetIdentityTraits

func (uc *IdentityRecallUseCase) GetIdentityTraits(ctx context.Context, agentID string, wellEstablishedOnly bool) ([]*entities.PersonalityTrait, error)

GetIdentityTraits retourne les traits de personnalité d'un agent

func (*IdentityRecallUseCase) RecallIdentity

RecallIdentity récupère l'identité complète d'un agent et génère un prompt d'injection identitaire prêt à être inséré dans le context window du LLM.

func (*IdentityRecallUseCase) RecallIdentityWithContext

func (uc *IdentityRecallUseCase) RecallIdentityWithContext(ctx context.Context, query *valueobjects.SoulQuery) (*valueobjects.IdentityContextPrompt, error)

RecallIdentityWithContext récupère l'identité en tenant compte du contexte conversationnel Cette méthode enrichit l'identité avec les mémoires factuelles pertinentes de MIRA.

type IdentityUpdateUseCase

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

IdentityUpdateUseCase gère la modification intentionnelle de l'identité.

func NewIdentityUpdateUseCase

func NewIdentityUpdateUseCase(storage ports.SoulStorage) *IdentityUpdateUseCase

NewIdentityUpdateUseCase crée un nouveau use case de mise à jour.

func (*IdentityUpdateUseCase) PatchIdentity

PatchIdentity applique un patch structuré sur le dernier snapshot de l'agent. Chaque champ non-nil du patch remplace la valeur correspondante.

func (*IdentityUpdateUseCase) UpdateFromDirective

func (uc *IdentityUpdateUseCase) UpdateFromDirective(ctx context.Context, agentID, directive, reason string) (*entities.IdentitySnapshot, *UpdateResult, error)

UpdateFromDirective parse une directive en langage naturel (FR/EN) et applique les modifications correspondantes sur le dernier snapshot de l'agent.

Exemples de directives :

  • "réponds avec plus d'enthousiasme"
  • "sois plus formel"
  • "fais un petit rapport à la fin"
  • "réponds de manière concise"
  • "utilise plus d'humour"

type ModelSwapUseCase

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

ModelSwapUseCase implémente la gestion des changements de modèle C'est le "sauvetage d'âme" : quand le modèle change, SOUL s'assure que la nouvelle instance "se souvient" de qui elle est.

func NewModelSwapUseCase

func NewModelSwapUseCase(storage ports.SoulStorage, handler ports.ModelSwapHandler, composer ports.IdentityComposer) *ModelSwapUseCase

NewModelSwapUseCase crée un nouveau use case

func (*ModelSwapUseCase) GetReinforcementPrompt

func (uc *ModelSwapUseCase) GetReinforcementPrompt(ctx context.Context, agentID string) (*valueobjects.IdentityContextPrompt, error)

GetReinforcementPrompt génère un prompt de renforcement identitaire Ce prompt est injecté dans le context window du NOUVEAU modèle pour lui rappeler "qui il est".

func (*ModelSwapUseCase) GetSwapHistory

func (uc *ModelSwapUseCase) GetSwapHistory(ctx context.Context, agentID string) ([]*valueobjects.ModelSwapContext, error)

GetSwapHistory retourne l'historique des changements de modèle

func (*ModelSwapUseCase) HandleModelSwap

func (uc *ModelSwapUseCase) HandleModelSwap(ctx context.Context, agentID, previousModel, newModel string) (*valueobjects.ModelSwapContext, error)

HandleModelSwap gère un changement de modèle LLM 1. Enregistre le swap 2. Récupère l'identité actuelle 3. Génère un prompt de renforcement 4. Mesure la dérive post-swap

func (*ModelSwapUseCase) MeasurePostSwapDrift

func (uc *ModelSwapUseCase) MeasurePostSwapDrift(ctx context.Context, agentID string) (float64, error)

MeasurePostSwapDrift mesure la dérive après un changement de modèle Utilisé pour évaluer si le renforcement a fonctionné.

func (*ModelSwapUseCase) ValidateIdentityPreserved

func (uc *ModelSwapUseCase) ValidateIdentityPreserved(ctx context.Context, agentID string) (bool, error)

ValidateIdentityPreserved vérifie si l'identité a été préservée après le dernier swap

type UpdateResult

type UpdateResult struct {
	AgentID        string    `json:"agent_id"`
	NewVersion     int       `json:"new_version"`
	ChangesApplied []string  `json:"changes_applied"`
	Timestamp      time.Time `json:"timestamp"`
}

UpdateResult décrit les changements appliqués par un patch.

Jump to

Keyboard shortcuts

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