Desenvolvedores

lineage

A cadeia de edições por trás de uma memória, da mais antiga para a mais recente. revisions diz quanto um store mudou; esta chamada diz o que aconteceu com um fato.

Compatível com o Tablet 2 e modelos mais novos. Somente leitura. Diferente de revisions, esta é uma chamada cobrada normalmente, porque retorna conteúdo de memória.

Passe o id de qualquer memória da cadeia. As versões substituídas são mantidas em vez de apagadas, então uma busca que retorna apenas o fato atual ainda pode ser rastreada até a origem.

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 }
  ] }
CampoO que faz
chainAs versões, da mais antiga para a mais recente. Cada uma carrega os mesmos campos de uma memória, mais os quatro abaixo.
changed_atQuando esta versão foi substituída (RFC3339), ou null enquanto ela ainda está em vigor.
actionO que aconteceu neste elo - como a substituição se relacionou com esta versão.
confidenceQuanto o motor estava seguro dessa relação, de 0 a 1.
is_currentTrue para a única versão ainda em vigor. Exatamente uma por cadeia.
truncatedTrue quando a cadeia era mais longa do que o serviço percorre. Os passos retornados continuam sendo os mais antigos.

Para que serve

Dois usos. Depuração: por que uma memória está redigida como está hoje. E permitir que um assistente veja o próprio histórico - um fato corrigido três vezes é um tipo de fato diferente de um escrito uma única vez, e só a cadeia mostra isso.