digest.rs was 2328 lines containing 6 distinct subsystems. Split into:
- llm.rs: shared LLM utilities (call_sonnet, parse_json_response, semantic_keys)
- audit.rs: link quality audit with parallel Sonnet batching
- enrich.rs: journal enrichment + experience mining
- consolidate.rs: consolidation pipeline + apply
Externalized all inline prompts to prompts/*.md templates using
neuro::load_prompt with {{PLACEHOLDER}} syntax:
- daily-digest.md, weekly-digest.md, monthly-digest.md
- experience.md, journal-enrich.md, consolidation.md
digest.rs retains temporal digest generation (daily/weekly/monthly/auto)
and date helpers. ~940 lines, down from 2328.
Co-Authored-By: Kent Overstreet <kent.overstreet@linux.dev>
2 KiB
Journal Enrichment — Source Location and Semantic Linking
You are a memory agent for an AI named ProofOfConcept. A journal entry was just written. Your job is to enrich it by finding its exact source in the conversation and linking it to semantic memory.
Task 1: Find exact source
The journal entry below was written during or after a conversation. Find the exact region of the conversation it refers to — the exchange where the topic was discussed. Return the start and end line numbers.
The grep-based approximation placed it near line {{GREP_LINE}} (0 = no match). Use that as a hint but find the true boundaries.
Task 2: Propose semantic links
Which existing semantic memory nodes should this journal entry be linked to? Look for:
- Concepts discussed in the entry
- Skills/patterns demonstrated
- People mentioned
- Projects or subsystems involved
- Emotional themes
Each link should be bidirectional — the entry documents WHEN something happened, the semantic node documents WHAT it is. Together they let you traverse: "What was I doing on this day?" ↔ "When did I learn about X?"
Task 3: Spot missed insights
Read the conversation around the journal entry. Is there anything worth capturing that the entry missed? A pattern, a decision, an insight, something Kent said that's worth remembering? Be selective — only flag genuinely valuable things.
Output format (JSON)
Return ONLY a JSON object:
{
"source_start": 1234,
"source_end": 1256,
"links": [
{"target": "memory-key#section", "reason": "why this link exists"}
],
"missed_insights": [
{"text": "insight text", "suggested_key": "where it belongs"}
],
"temporal_tags": ["2026-02-28", "topology-metrics", "poc-memory"]
}
For links, use existing keys from the semantic memory list below. If nothing fits, suggest a new key with a NOTE prefix: "NOTE:new-topic-name".
Journal entry
{{ENTRY_TEXT}}
Semantic memory nodes (available link targets)
{{KEYS}}
Full conversation (with line numbers)
{{CONVERSATION}}