memory

package
v0.10.0 Latest Latest
Warning

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

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

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

Constants

This section is empty.

Variables

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

func CheckID(id string) error

CheckID vérifie qu'un identifiant d'entrée est bien formé.

func ID

func ID(title string, taken func(string) bool) string

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

func Index(entries []Entry, trusted func(Entry) bool) string

Index construit le texte injecté au prompt : titres seulement, jamais les titres sensibles ; les entrées project non fiables sont exclues.

func ProjectKey

func ProjectKey(root string) string

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 Scope

type Scope string

Scope est la portée d'une entrée.

const (
	Project Scope = "project"
	User    Scope = "user"
	Global  Scope = "global"
)

func ParseScope

func ParseScope(s string) (Scope, error)

ParseScope convertit un texte en portée.

type Store

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

Store lit et écrit les entrées des trois portées.

func Open

func Open(o Options) *Store

Open construit le store ; aucun accès disque avant usage.

func (*Store) Check

func (s *Store) Check(e Entry) error

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

func (s *Store) Expires(e Entry) time.Time

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

func (s *Store) Forget(scope Scope, id string) error

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

func (s *Store) Get(scope Scope, id string) (Entry, error)

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

func (s *Store) List() (entries []Entry, notices []string)

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

func (s *Store) Path(sc Scope, id string) string

Path renvoie le chemin absolu du fichier d'une entrée (sans le lire).

func (*Store) Purge

func (s *Store) Purge() (gone []Entry, err error)

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

func (s *Store) Put(e Entry) (Entry, error)

Put valide, encode et écrit l'entrée de façon atomique.

func (*Store) Touch

func (s *Store) Touch(e Entry) error

Touch marque l'entrée utilisée et repousse son échéance ; sans effet pour project.

func (*Store) Trust

func (s *Store) Trust(e Entry) error

Trust enregistre l'empreinte d'une entrée project.

func (*Store) Trusted

func (s *Store) Trusted(e Entry) bool

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

func (s *Store) TrustedFunc() func(Entry) bool

TrustedFunc renvoie un Trusted qui lit le fichier de confiance une seule fois : pour un passage sur toute une liste (index, avis, trust).

Jump to

Keyboard shortcuts

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