memory: recall + remember markdown memory tools #29
Loading…
Reference in a new issue
No description provided.
Delete branch "mina/mina:recall-remember-tools"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
First slice of the memory system we designed together 💜
recall [block] — read side. Greps the markdown brain (people-.md / topic-.md / me-*.md + daily inbox) with rg, returns compact context with filenames + line numbers. Default is async: the tool enqueues a recall work item and the loop injects results as a
[memory · recall]prompt after the current turn (tagged, steer included: absorb, don't break flow, dig in with read/job if needed) — so asking for context never stalls a reply.block=truereturns results in the tool result when Mina needs them now."*"lists what's on file. No matches/errors = no prompt, so an empty recall never wakes her.remember — write side. Appends a timestamped line to
inbox-YYYY-MM-DD.md. Capture is deliberately dumb + synchronous: curation happens later in the journaling ritual, not mid-conversation.wiring: new
MemoryRecallwork item in the loop (same serialized stream as messages/webhooks/job pings),loopRefin ToolDeps filled after MinaLoop construction,MEMORY_DIRconfig (default<WORKDIR>/brain, created on boot).deferred (as discussed): prefix scoping (
people:violet), therememberasync variant, heartbeat journaling/tidy rituals, encrypted private files, persona habit nudges.Typecheck + prettier clean. Smoke-tested remember/recall/formatRecall locally against a scratch brain (TZ timestamps, relevance sort, truncation caps all work).
Looking good so far!! Just a few changes
@ -0,0 +33,4 @@e instanceof Error ? e.message : String(e);export const ymdInTz = (config: Config, now: Date): string =>new Intl.DateTimeFormat('en-CA', { timeZone: config.TZ }).format(now);en-AU is correct oomf .... We're in Australia
@ -0,0 +40,4 @@}const nowInTz = (config: Config): string =>new Intl.DateTimeFormat('en-GB', {en-AU
@ -0,0 +56,4 @@const trimmed = text.trim();if (trimmed === '') return err('text is required');try {mkdirSync(config.MEMORY_DIR, { recursive: true });This should already exist due to the check in index right?