Problem
memanto remember stores a literal string supplied by the user. Memanto already has native LLM access (the answer endpoint uses Moorcheh's answer.generate) and a 13 typed memory taxonomy, so it has everything needed to do this.
Proposed solution
Add an extraction path that turns conversation into typed memories:
- Input - accept
[{ "role": "...", "content": "..." }] turns (JSON file or stdin).
- Extraction - run an extraction prompt over the conversation using the same LLM path the
answer endpoint uses. Produce candidate memories with type, title, content, and confidence.
- Store - persist via the existing batch path (
batch_remember, ≤100 per request).
- Surfaces:
- REST:
POST /api/v2/agents/{agent_id}/remember/extract
- CLI:
memanto remember --from-conversation messages.json with a --dry-run that prints the candidate memories without storing them.
Notes
- Keep extraction optional and explicit, do not change the default
remember "..." literal behavior.
- Consider deduping obvious repeats within a single extraction batch.
Acceptance criteria
Problem
memanto rememberstores a literal string supplied by the user. Memanto already has native LLM access (theanswerendpoint uses Moorcheh'sanswer.generate) and a 13 typed memory taxonomy, so it has everything needed to do this.Proposed solution
Add an extraction path that turns conversation into typed memories:
[{ "role": "...", "content": "..." }]turns (JSON file or stdin).answerendpoint uses. Produce candidate memories withtype,title,content, andconfidence.batch_remember, ≤100 per request).POST /api/v2/agents/{agent_id}/remember/extractmemanto remember --from-conversation messages.jsonwith a--dry-runthat prints the candidate memories without storing them.Notes
remember "..."literal behavior.Acceptance criteria
--dry-runpreviews extracted memories without writing them.remember "..."path is unchanged.