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

memory

package
v0.8.0 Latest Latest
Warning

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

Go to latest
Published: Oct 26, 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