Documentation
¶
Overview ¶
Package memory range les entrées de mémoire gouvernée : un fichier Markdown à frontmatter par entrée, dans trois portées (project, user, global).
Index ¶
- Variables
- func CheckID(id string) error
- func ID(title string, taken func(string) bool) string
- func Index(entries []Entry, trusted func(Entry) bool) string
- func ProjectKey(root string) string
- type Entry
- type Options
- type Scope
- type Store
- func (s *Store) Check(e Entry) error
- func (s *Store) Expires(e Entry) time.Time
- func (s *Store) Forget(scope Scope, id string) error
- func (s *Store) Get(scope Scope, id string) (Entry, error)
- func (s *Store) List() (entries []Entry, notices []string)
- func (s *Store) Path(sc Scope, id string) string
- func (s *Store) Purge() (gone []Entry, err error)
- func (s *Store) Put(e Entry) (Entry, error)
- func (s *Store) Touch(e Entry) error
- func (s *Store) Trust(e Entry) error
- func (s *Store) Trusted(e Entry) bool
- func (s *Store) TrustedFunc() func(Entry) bool
Constants ¶
This section is empty.
Variables ¶
var ( // ErrNotFound : aucune entrée à cet id. ErrNotFound = errors.New("memory: entry not found") // ErrInvalid : entrée ou id invalide ; l'erreur enveloppée porte la raison. ErrInvalid = errors.New("memory: invalid entry") // ErrTooLarge : corps au-delà de 4096 octets. ErrTooLarge = errors.New("memory: entry too large") // ErrFull : portée à 200 entrées. ErrFull = errors.New("memory: scope full") )
Functions ¶
func ID ¶
ID dérive un identifiant du titre ; taken signale les ids déjà pris, un suffixe -2, -3… lève la collision en restant dans 48 caractères.
func Index ¶
Index construit le texte injecté au prompt : titres seulement, jamais les titres sensibles ; les entrées project non fiables sont exclues.
func ProjectKey ¶
ProjectKey renvoie les 16 premiers hex du SHA-256 de la racine absolue.
Types ¶
type Entry ¶
type Entry struct {
Scope Scope
ID string
Title string
Body string
Author string
Sensitive bool
Created time.Time
SHA256 string
}
Entry est une entrée de mémoire. SHA256 est l'empreinte hexadécimale des octets du fichier, remplie à la lecture et à l'écriture.
type Options ¶
type Options struct {
Root, DataDir string
Project bool
Now func() time.Time
// RetentionDays : durée de rétention des portées user et global (0 → 90).
RetentionDays int
}
Options configure un Store. DataDir est un chemin simple (config.DataDir n'est pas importé ici : cycle d'imports).
type Store ¶
type Store struct {
// contains filtered or unexported fields
}
Store lit et écrit les entrées des trois portées.
func (*Store) Check ¶
Check vérifie, sans rien écrire, qu'une entrée passerait Put : portée, champs, taille du corps, et plafond de la portée pour une nouvelle entrée.
func (*Store) Expires ¶
Expires renvoie l'échéance d'une entrée user ou global (ligne d'état, sinon création + rétention) ; zéro pour project, qui n'expire pas.
func (*Store) Forget ¶
Forget supprime une entrée (l'effacement reste possible même si la portée projet est désactivée, sauf dossier mémoire douteux).
func (*Store) Get ¶
Get lit une entrée ; scope vide : project, user, global dans l'ordre. Sans portée, une entrée project non approuvée ne cache pas une entrée user ou global de même id : elle n'est renvoyée que seule (la lecture la refuse).
func (*Store) List ¶
List renvoie toutes les entrées lisibles (project, user, global, puis created décroissant, puis id) et les avis des fichiers ignorés.
func (*Store) Purge ¶
Purge supprime les entrées user (de tous les projets : la rétention vaut par personne, pas par projet ouvert) et global échues, avec leurs lignes d'état, et les renvoie. Les entrées project ne sont jamais purgées.
func (*Store) Touch ¶
Touch marque l'entrée utilisée et repousse son échéance ; sans effet pour project.
func (*Store) Trusted ¶
Trusted : user et global sont toujours de confiance ; une entrée project l'est si le fichier de confiance détient son id avec la même empreinte.
func (*Store) TrustedFunc ¶
TrustedFunc renvoie un Trusted qui lit le fichier de confiance une seule fois : pour un passage sur toute une liste (index, avis, trust).