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 ¶
- type DriftDetectionUseCase
- func (uc *DriftDetectionUseCase) CheckDiffusion(ctx context.Context, agentID string) (bool, float64, error)
- func (uc *DriftDetectionUseCase) CheckDrift(ctx context.Context, agentID string, ...) (*valueobjects.IdentityDriftReport, error)
- func (uc *DriftDetectionUseCase) GetDiffHistory(ctx context.Context, agentID string, limit int) ([]*entities.IdentityDiff, error)
- func (uc *DriftDetectionUseCase) GetDriftReport(ctx context.Context, agentID string, windowSize int) (*valueobjects.IdentityDriftReport, error)
- func (uc *DriftDetectionUseCase) MonitorAgent(ctx context.Context, agentID string, threshold float64) (<-chan valueobjects.IdentityDriftReport, error)
- func (uc *DriftDetectionUseCase) RestoreIdentity(ctx context.Context, agentID string, targetVersion int) (*entities.IdentitySnapshot, error)
- type IdentityCaptureUseCase
- type IdentityEvolutionUseCase
- func (uc *IdentityEvolutionUseCase) GetEvolutionSummary(ctx context.Context, agentID string) (string, error)
- func (uc *IdentityEvolutionUseCase) GetEvolutionTimeline(ctx context.Context, agentID string) ([]*entities.IdentityDiff, error)
- func (uc *IdentityEvolutionUseCase) GetIdentityLineage(ctx context.Context, snapshotID string) (*ports.IdentityLineage, error)
- func (uc *IdentityEvolutionUseCase) PredictEmergingTraits(ctx context.Context, agentID string) ([]*entities.PersonalityTrait, error)
- func (uc *IdentityEvolutionUseCase) SuggestAdjustments(ctx context.Context, agentID string) ([]string, error)
- func (uc *IdentityEvolutionUseCase) TrackSnapshot(ctx context.Context, newSnapshot *entities.IdentitySnapshot) (*entities.IdentityDiff, error)
- type IdentityMergeUseCase
- type IdentityRecallUseCase
- func (uc *IdentityRecallUseCase) GetIdentityHistory(ctx context.Context, agentID string, limit int) ([]*entities.IdentitySnapshot, error)
- func (uc *IdentityRecallUseCase) GetIdentitySummary(ctx context.Context, agentID string) (string, error)
- func (uc *IdentityRecallUseCase) GetIdentityTraits(ctx context.Context, agentID string, wellEstablishedOnly bool) ([]*entities.PersonalityTrait, error)
- func (uc *IdentityRecallUseCase) RecallIdentity(ctx context.Context, query *valueobjects.SoulQuery) (*valueobjects.IdentityContextPrompt, error)
- func (uc *IdentityRecallUseCase) RecallIdentityWithContext(ctx context.Context, query *valueobjects.SoulQuery) (*valueobjects.IdentityContextPrompt, error)
- type IdentityUpdateUseCase
- func (uc *IdentityUpdateUseCase) PatchIdentity(ctx context.Context, agentID string, patch *valueobjects.IdentityPatch) (*entities.IdentitySnapshot, *UpdateResult, error)
- func (uc *IdentityUpdateUseCase) UpdateFromDirective(ctx context.Context, agentID, directive, reason string) (*entities.IdentitySnapshot, *UpdateResult, error)
- type ModelSwapUseCase
- func (uc *ModelSwapUseCase) GetReinforcementPrompt(ctx context.Context, agentID string) (*valueobjects.IdentityContextPrompt, error)
- func (uc *ModelSwapUseCase) GetSwapHistory(ctx context.Context, agentID string) ([]*valueobjects.ModelSwapContext, error)
- func (uc *ModelSwapUseCase) HandleModelSwap(ctx context.Context, agentID, previousModel, newModel string) (*valueobjects.ModelSwapContext, error)
- func (uc *ModelSwapUseCase) MeasurePostSwapDrift(ctx context.Context, agentID string) (float64, error)
- func (uc *ModelSwapUseCase) ValidateIdentityPreserved(ctx context.Context, agentID string) (bool, error)
- type UpdateResult
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 ¶
func (uc *IdentityCaptureUseCase) CaptureFromConversation(ctx context.Context, request *valueobjects.SoulCaptureRequest) (*entities.IdentitySnapshot, error)
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 ¶
func (uc *IdentityEvolutionUseCase) TrackSnapshot(ctx context.Context, newSnapshot *entities.IdentitySnapshot) (*entities.IdentityDiff, error)
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 ¶
func (uc *IdentityRecallUseCase) RecallIdentity(ctx context.Context, query *valueobjects.SoulQuery) (*valueobjects.IdentityContextPrompt, error)
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 ¶
func (uc *IdentityUpdateUseCase) PatchIdentity(ctx context.Context, agentID string, patch *valueobjects.IdentityPatch) (*entities.IdentitySnapshot, *UpdateResult, error)
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