mem_get_observation
Firma
mem.mem_get_observation(user_id: str, observation_id: int) -> Observation | None
Trae una observación por su PK entera, scoped a user_id. Acceso cross-user devuelve None (nunca levanta, nunca filtra). Usalo para hidratar el contenido completo de una observación que apareció en mem_search o mem_timeline.
Parámetros
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
user_id | str | sí | Scope del dueño. Si la observación pertenece a otro user, el resultado es None. |
observation_id | int | sí | PK entera positiva (sale de los resultados de mem_search o mem_timeline). |
Returns
Observation | None (modelo Pydantic | None):
La observación completa si existe y le pertenece a user_id, sino None. Campos:
id(int)session_id(str)user_id(str)type(str)title(str)content(str) — texto completo, con bloques<private>ya reemplazados por[REDACTED].topic_key(str | None)revision_count(int)created_at(str, ISO-8601 UTC)updated_at(str, ISO-8601 UTC)
Levanta
ValueError—observation_id <= 0.
Ejemplos
- Hidratar después de search
- Intento cross-user devuelve None
- Después de save
hits = mem.mem_search(user_id="alice", query="auth")
if hits:
full = mem.mem_get_observation(user_id="alice", observation_id=hits[0].id)
print(full.content)
# la observación 42 le pertenece a alice
result = mem.mem_get_observation(user_id="bob", observation_id=42)
assert result is None # nunca levanta, nunca filtra
saved = mem.mem_save(user_id="alice", content="...", type="decision", title="...")
obs = mem.mem_get_observation(user_id="alice", observation_id=saved.id)
print(obs.revision_count) # 1