Topology and structure
These tools handle the shape of the memory: list projects and domains, create, rename, merge, move or reclassify them, attach a note, repair links, send a note to the trash and put it back.
Only two read (mem_list, mem_get_topology). mem_move only writes when apply is true and mem_relocate_project only when confirm is true: without them, they are dry runs. The others write.
mem_move_undo undoes the last move operation (mem_move, mem_rename, mem_reclass, mem_merge). mem_remove does not delete: it moves to .trash/, from where mem_restore puts it back.
In practice
« Create a "kessho-docs" project attached to the repository /Users/ben/Projets/Kessho. »
« Rename the kessho-docs project to kessho-documentation, and update the links that point at it across the whole vault. »
mem_renameold_slug=kessho-docsnew_slug=kessho-documentationrewrite_links=true
« Show me what moving 20-knowledge/runner.md to 20-knowledge/architecture/runner.md would do. »
The tools
mem_list
Lists the vault's projects, domains and archived projects with their phase, last session, scope, number of archives and repository path (`repo_path`).
Catalog description (French, verbatim):
Inventorie les projets, domaines et projets archivés du vault, avec leur phase, dernière session, portée, dépôt (repo_path) et nombre d'archives.
| Paramètre / Parameter | Type | Requis / Required | Description (catalogue) |
|---|---|---|---|
archived_only | boolean | non / no | N'inventorier que les projets archivés. |
include_archived | boolean | non / no | Déplier les projets archivés. |
mem_get_topology
Reads a project's topology sheet, optionally the one of a given branch; its absence is not an error.
Catalog description (French, verbatim):
Lit la fiche de topologie d'un projet, éventuellement celle d'une branche. Son absence n'est pas une erreur.
| Paramètre / Parameter | Type | Requis / Required | Description (catalogue) |
|---|---|---|---|
branch | string | non / no | Branche dont lire la topologie. |
project | string | oui / yes | Slug du projet. |
mem_init_project
Creates the skeleton of a project or domain (its folder, archives/.gitkeep, context.md and history.md), ready for mem_archive.
Catalog description (French, verbatim):
Crée le squelette d'un projet ou domaine : son dossier, archives/.gitkeep, context.md et history.md, immédiatement exploitables par mem_archive.
| Paramètre / Parameter | Type | Requis / Required | Description (catalogue) |
|---|---|---|---|
display | string | non / no | Nom affiché. Défaut : dérivé du slug. |
kind | string | non / no | 'project' (défaut) ou 'domain'. |
repo_path | string | non / no | Racine absolue du dépôt associé. |
scope | string | non / no | 'work' (défaut) ou 'personal'. |
slug | string | oui / yes | Slug du nouveau projet ou domaine, en kebab-case. |
mem_rename
Renames a project or domain everywhere it appears in its folder (frontmatter relabelled, previous_slugs set); links pointing at it are rewritten across the vault, and mem_move_undo reverts it.
Catalog description (French, verbatim):
Renomme un projet ou domaine partout où il apparaît dans son dossier (frontmatter re-étiqueté, previous_slugs posé). Les liens qui le visent (wikiliens, liens Markdown, frontmatter) sont réécrits dans tout le vault ; rewrite_links: false pour ne pas le faire. mem_move_undo annule l'opération.
| Paramètre / Parameter | Type | Requis / Required | Description (catalogue) |
|---|---|---|---|
new_slug | string | oui / yes | Nouveau slug. |
old_slug | string | oui / yes | Slug actuel. |
rewrite_links | boolean | non / no | Vrai (défaut) : réécrire dans tout le vault les liens qui visent le dossier renommé. Faux : ancien comportement, liens laissés tels quels. |
mem_merge
Merges a project or domain into another of the same kind: relabels and moves its archives, then deletes the source folder; links pointing at them are rewritten across the vault, and mem_move_undo reverts it.
Catalog description (French, verbatim):
Fusionne un projet ou domaine dans un autre de même nature : re-étiquette et déplace ses archives, puis supprime le dossier source. Les liens qui les visent (wikiliens, liens Markdown, frontmatter), archives renommées par collision comprises, sont réécrits dans tout le vault ; rewrite_links: false pour ne pas le faire. mem_move_undo annule l'opération.
| Paramètre / Parameter | Type | Requis / Required | Description (catalogue) |
|---|---|---|---|
rewrite_links | boolean | non / no | Vrai (défaut) : réécrire dans tout le vault les liens qui visent les archives déplacées. Faux : ancien comportement. |
source_slug | string | oui / yes | Slug source, supprimé après fusion. |
target_slug | string | oui / yes | Slug cible, conservé et enrichi. |
mem_reclass
Changes a note's scope or zone and moves it if its path depends on them; links pointing at it are rewritten across the vault, and mem_move_undo reverts the move.
Catalog description (French, verbatim):
Change la portée ou la zone d'un atome, et le déplace si son chemin en dépend. Les liens qui le visent (wikiliens, liens Markdown, frontmatter) sont réécrits dans tout le vault ; rewrite_links: false pour ne pas le faire. mem_move_undo annule le déplacement.
| Paramètre / Parameter | Type | Requis / Required | Description (catalogue) |
|---|---|---|---|
path | string | oui / yes | Chemin de l'atome, relatif au vault. |
rewrite_links | boolean | non / no | Vrai (défaut) : réécrire dans tout le vault les liens qui visent l'atome déplacé. Faux : ancien comportement. |
scope | string | non / no | Nouvelle portée : work, personal ou all. |
zone | string | non / no | Nouvelle zone de premier niveau. |
mem_move
Renames or moves a file or folder of the vault while rewriting every link that points at it; without apply it returns the plan and writes nothing, and mem_move_undo reverts the last move.
Catalog description (French, verbatim):
Renomme ou déplace un fichier ou un dossier du vault (sous une zone), en réécrivant dans tout le vault les liens qui le visent — wikiliens, inclusions, liens Markdown relatifs, corps et frontmatter — et les liens relatifs qu'il porte. Sans apply, rend le plan sans rien écrire : fichiers déplacés, chaque lien avant/après, liens laissés (non résolus), avertissements, empreinte. Refuse une cible occupée, un nom invalide (Windows, caractères qui cassent un wikilien), un dossier protégé, une opération git en cours, ou un plan qui casserait un lien. Une opération interrompue est défaite au geste suivant ; mem_move_undo annule la dernière.
| Paramètre / Parameter | Type | Requis / Required | Description (catalogue) |
|---|---|---|---|
apply | boolean | non / no | Vrai : appliquer. Faux (défaut) : plan à blanc. |
empreinte | string | non / no | Facultatif, avec apply : l'empreinte du plan à blanc. Si le vault a changé depuis (empreinte différente), rien n'est écrit (plan_perime). |
path | string | oui / yes | Fichier ou dossier actuel, relatif au vault. |
to | string | oui / yes | Nouveau chemin complet, relatif au vault (même dossier = renommer). |
mem_move_undo
Undoes the vault's last move operation (mem_move, mem_rename, mem_reclass, mem_merge or one made from the interface): puts files and links back as they were; refuses if a touched file changed since.
Catalog description (French, verbatim):
Annule la dernière opération de déplacement du vault (interface ou agent : mem_move, mem_rename, mem_reclass, mem_merge) : remet les fichiers à leur place et les liens dans leur état d'avant. Refuse si un fichier touché a changé depuis.
Aucun paramètre. / No parameters.
mem_alias_add
Adds aliases, in the words a person would actually use to look for it, to an existing note; aliases already present are never lost.
Catalog description (French, verbatim):
Ajoute des alias en langue VÉCUE à un atome existant — les mots par lesquels un humain le cherchera, pas ceux dans lesquels il a été écrit. Mesuré sur le vault réel : le moteur atteint sa cible si et seulement si un mot distinctif de la question s'y trouve, et les alias sont le seul pont entre les deux langues. Les alias déjà présents ne sont jamais perdus.
| Paramètre / Parameter | Type | Requis / Required | Description (catalogue) |
|---|---|---|---|
aliases | array<string> | oui / yes | Formulations en langue vécue : le symptôme, la sensation, le besoin — « ça saccade sur téléphone », « les accents s'affichent en carrés ». Jamais le vocabulaire technique déjà présent dans l'atome, qui n'apporterait rien. |
path | string | oui / yes | Chemin de l'atome, relatif au vault. |
mem_attach
Attaches a note to an existing project or domain, or declares it universal when nothing explicit ties it to one (exactly one of project, domain or universal); refuses a target that does not exist.
Catalog description (French, verbatim):
Rattache un atome à un projet ou à un domaine EXISTANT, ou le déclare universel (attachment: universal) quand aucune preuve explicite ne le rattache — une décision écrite et réversible, que le scan des orphelins respecte. Écrit le champ et l'étiquette. Exactement un de project, domain ou universal. Refuse une cible inexistante.
| Paramètre / Parameter | Type | Requis / Required | Description (catalogue) |
|---|---|---|---|
domain | string | non / no | Domaine existant. |
path | string | oui / yes | Chemin de l'atome, relatif au vault. |
project | string | non / no | Projet existant, actif ou archivé. |
universal | boolean | non / no | Vrai : l'atome est transverse par nature et ne se rattache à rien. |
mem_wikilink_retarget
Repoints a file's [[from]] wikilinks to a new target, preserving #heading and |alias and leaving links inside code blocks alone; refuses a target that does not resolve to a single vault file.
Catalog description (French, verbatim):
Repointe les wikiliens [[from]] d'un fichier vers to, en préservant #titre et |alias ; un lien écrit dans un bloc de code n'est pas touché. Refuse une cible qui ne résout pas à un fichier unique du vault, ou un from absent du fichier. Rend le nombre d'occurrences réécrites.
| Paramètre / Parameter | Type | Requis / Required | Description (catalogue) |
|---|---|---|---|
from | string | oui / yes | Cible actuelle du lien, telle qu'écrite entre les crochets. |
path | string | oui / yes | Fichier source, relatif au vault. |
to | string | oui / yes | Nouvelle cible : doit résoudre à un seul fichier. |
mem_resolve_conflict
Replaces a vault file carrying an unresolved Git merge conflict with its resolved version; refuses a file without conflict or content that still has a marker, and returns the whole original.
Catalog description (French, verbatim):
Remplace un fichier du vault qui porte un conflit de fusion Git non résolu (bornes <<<<<<< et >>>>>>>) par sa version résolue. Refuse un fichier sans conflit, un contenu qui porte encore une borne, ou dont le frontmatter ne se lit pas. Rend l'original entier dans original : rien de ce que le fichier portait ne disparaît sans trace. Relancer mem_health_scan ensuite — un fichier illisible peut cacher d'autres anomalies.
| Paramètre / Parameter | Type | Requis / Required | Description (catalogue) |
|---|---|---|---|
content | string | oui / yes | Contenu résolu complet, frontmatter compris, sans aucune borne de conflit. |
path | string | oui / yes | Fichier en conflit, relatif au vault. |
mem_accept_dangling
Marks a deliberately kept dead wikilink as accepted, so mem_health_scan counts it separately instead of reporting it on every scan; refuses a link that is not in the file or that resolves to a vault file.
Catalog description (French, verbatim):
Déclare ACCEPTÉ un wikilien mort gardé délibérément : sa cible est ajoutée à kessho_accepted_dangling du fichier. mem_health_scan le compte alors à part (accepted_dangling_links), visible mais hors anomalies, au lieu de le signaler à chaque scan. Refuse un lien absent du fichier, ou qui résout vers un fichier du vault.
| Paramètre / Parameter | Type | Requis / Required | Description (catalogue) |
|---|---|---|---|
path | string | oui / yes | Fichier source, relatif au vault. |
target | string | oui / yes | Cible du lien, telle qu'écrite entre les crochets. |
mem_remove
Moves a note to the vault's .trash/ (never deletes it), with an attached note of date, reason and former path; a note not created during the current session needs confirm: true and a reason, and a note cited by others is refused unless force is set.
Catalog description (French, verbatim):
Retire un atome vers la corbeille du vault : il est DÉPLACÉ, jamais supprimé, vers .trash/<chemin d'origine>, avec une note jointe (date, motif, ancien chemin) ; mem_restore le remet en place. Retrait libre pour un atome créé par CE serveur pendant la session en cours ; pour tout autre atome, confirm: true ET reason sont exigés — rien n'est déduit du frontmatter. Un atome cité par d'autres est refusé, citants listés ; force: true le retire quand même et rend chaque lien devenu pendant. Refuse hors du vault, .obsidian/, .trash/, index.md, context.md, history.md, et pendant une opération git en cours. Régénère l'index de zone ; ne modifie jamais context.md (ses mentions sont signalées). Ligne d'audit dans 99-meta/migrations/removals.md. Un atome déjà poussé reste dans l'historique git : le compte rendu le dit.
| Paramètre / Parameter | Type | Requis / Required | Description (catalogue) |
|---|---|---|---|
confirm | boolean | non / no | Obligatoire (vrai) pour un atome qui n'a pas été créé pendant cette session. Sans effet sinon. |
force | boolean | non / no | Vrai : retirer même si d'autres atomes le citent ; leurs liens deviennent pendants et sont listés. Faux (défaut) : refus qui nomme les citants. |
path | string | oui / yes | Chemin de l'atome, relatif au vault (ex. 20-knowledge/note-de-test.md). |
reason | string | non / no | Pourquoi l'atome est retiré. Obligatoire, non vide, pour un atome qui n'a pas été créé pendant cette session ; écrit dans la note jointe et le journal. |
mem_restore
Puts back a note removed by mem_remove, byte for byte, from .trash/ to its original path; refuses if a file already occupies that path, so nothing is ever overwritten.
Catalog description (French, verbatim):
Remet à sa place un atome retiré par mem_remove : le déplace de .trash/<chemin> vers <chemin>, octet pour octet, retire sa note jointe, régénère l'index de zone et écrit une ligne d'audit dans 99-meta/migrations/removals.md. Refuse si un fichier occupe déjà le chemin d'origine : rien n'est jamais écrasé.
| Paramètre / Parameter | Type | Requis / Required | Description (catalogue) |
|---|---|---|---|
path | string | oui / yes | Chemin d'ORIGINE de l'atome, relatif au vault (ex. 20-knowledge/note-de-test.md). Le préfixe .trash/ est accepté. |
mem_promote_domain
Promotes a set of files into a new permanent domain; refuses fewer than three sources unless allow_2_items is set.
Catalog description (French, verbatim):
Promeut un ensemble de fichiers en un nouveau domaine permanent. Refuse en dessous de trois sources sans dérogation.
| Paramètre / Parameter | Type | Requis / Required | Description (catalogue) |
|---|---|---|---|
allow_2_items | boolean | non / no | Déroger au seuil anti-dérive de trois sources. |
slug | string | oui / yes | Slug du nouveau domaine. |
sources | array<string> | oui / yes | Chemins des fichiers à promouvoir, relatifs au vault. |
mem_relocate_project
Points a project at a new repository root on disk; a dry run unless confirm is true, with a guard on the Git origin that force can override.
Catalog description (French, verbatim):
Fait pointer un projet vers une nouvelle racine de dépôt sur le disque. Essai à blanc par défaut, garde sur l'origine Git.
| Paramètre / Parameter | Type | Requis / Required | Description (catalogue) |
|---|---|---|---|
confirm | boolean | non / no | Sans confirm, l'appel est un essai à blanc. |
force | boolean | non / no | Passer outre la garde d'origine Git. |
new_root | string | oui / yes | Nouvelle racine absolue du dépôt. |
reason | string | non / no | Motif consigné au journal d'audit. |
slug | string | oui / yes | Slug du projet ou domaine. |