Desarrolladores

lineage

La cadena de ediciones que hay detrás de una memoria, de la más antigua a la más reciente. revisions indica cuánto se movió un store; esto indica qué le pasó a un hecho concreto.

Compatible con Tablet 2 y superiores. Solo lectura. A diferencia de revisions, esta es una llamada facturada normal, porque devuelve contenido de memorias.

Pase el id de cualquier memoria de la cadena. Las versiones reemplazadas se conservan en lugar de borrarse, así que una búsqueda que solo devuelve el hecho vigente se puede rastrear hacia atrás.

chain = mem.lineage(memory_id=mid)["chain"]
for step in chain:
    print(step["changed_at"], step["action"], step["content"])
const { chain } = await mem.lineage(undefined, mid);
for (const step of chain) {
  console.log(step.changed_at, step.action, step.content);
}
let r = mem.lineage(None, mid).await?;
for step in r["chain"].as_array().unwrap_or(&vec![]) {
    println!("{} {} {}", step["changed_at"], step["action"], step["content"]);
}
curl -X POST https://api.wontopos.com/api/v1/memory/lineage \
  -H "X-API-Key: $WOS_KEY" -H "Content-Type: application/json" \
  -d '{"user_id":"alice","memory_id":"m_9"}'
200
{ "memory_id": "m_9", "count": 3, "truncated": false,
  "chain": [
    { "memory_id": "m_3", "content": "lives in Seoul",
      "created_at": "2026-03-02T…", "changed_at": "2026-06-11T…",
      "action": "replaced", "confidence": 0.94,
      "superseded_by": "m_7", "is_current": false },
    { "memory_id": "m_7", "content": "moved to Busan",   … },
    { "memory_id": "m_9", "content": "Haeundae, specifically",
      "changed_at": null, "superseded_by": null, "is_current": true }
  ] }
CampoQué hace
chainLas versiones, de la más antigua a la más reciente. Cada una lleva los mismos campos que una memoria, más los cuatro de abajo.
changed_atCuándo se reemplazó esta versión (RFC3339), o null mientras siga vigente.
actionQué ocurrió en este eslabón - cómo se relacionó el reemplazo con esta versión.
confidenceCuánta certeza tenía el motor sobre esa relación, de 0 a 1.
is_currentTrue para la única versión que sigue vigente. Exactamente una por cadena.
truncatedTrue cuando la cadena era más larga de lo que el servicio recorre. Los pasos devueltos siguen siendo los más antiguos.

Para qué sirve

Dos usos. Depuración: por qué una memoria dice hoy lo que dice. Y permitir que un asistente consulte su propio historial - un hecho corregido tres veces es un tipo de hecho distinto de uno escrito una sola vez, y solo la cadena lo muestra.