feat(memory): clôture du sujet mémoire — bascule adaptative live + panneau UI (§14.5.5)
Pièce 1 (backend) : state.rs câble AdaptiveMemoryRecall via build_memory_recall, piloté par le profil embedder chargé depuis embedder.json (fallback none). Défaut none ⇒ NaiveMemoryRecall nu (comportement inchangé, StubEmbedder jamais touché, zéro dépendance lourde). Instance de recall partagée (RecallMemory + LaunchAgent). Chargement du profil isolé sur un runtime dédié (évite le block_on imbriqué). Pièce 2 (frontend) : feature mémoire complète en miroir de skills — MemoryGateway (port) + TauriMemoryGateway + MockMemoryGateway, types domaine Memory/MemoryIndexEntry/MemoryType, MemoryPanel/MemoryEditor/useMemory, onglet sidebar « Memory » dans ProjectsView. CRUD par slug, liens [[slug]] résolus. Le sujet mémoire est clos : CRUD .md + index + rappel adaptatif + injection à l'activation des agents + UI de gestion. Embedder concret ONNX/HTTP reste un follow-up (défaut none = pleinement fonctionnel sans dépendance). Tests: backend 57 binaires verts, frontend 285 tests verts, typecheck OK. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -278,6 +278,41 @@ export interface SkillRef {
|
||||
scope: SkillScope;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Memory (L14) — mirror of the backend `MemoryDto` / `MemoryIndexEntryDto`.
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* The category of a memory note (selects how it is recalled/injected). Mirrors
|
||||
* the backend `type` field; identity of a note is its **slug** (kebab-case).
|
||||
*/
|
||||
export type MemoryType = "user" | "feedback" | "project" | "reference";
|
||||
|
||||
/**
|
||||
* A memory note (mirror of the backend `Memory` DTO, camelCase wire format).
|
||||
* `name` doubles as the human title and the source of the slug identity.
|
||||
*/
|
||||
export interface Memory {
|
||||
name: string;
|
||||
description: string;
|
||||
type: MemoryType;
|
||||
content: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* One entry of the memory index (mirror of the backend `MemoryIndexEntry`):
|
||||
* a lightweight, recall-oriented projection of a note.
|
||||
*/
|
||||
export interface MemoryIndexEntry {
|
||||
slug: string;
|
||||
title: string;
|
||||
hook: string;
|
||||
type: MemoryType;
|
||||
}
|
||||
|
||||
/** A resolved `[[wikilink]]` target — the slug of another note. */
|
||||
export type MemoryLink = string;
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Templates (L7) — mirror of the domain `Template` / `AgentDrift`.
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user