mem_session_end
Firma
mem.mem_session_end(user_id: str, *, summary: str) -> Session
Cierra la sesión activa de user_id con un summary escrito por humano. La sesión cerrada queda con is_auto_generated=False (distinguiéndola de las sesiones auto-cerradas por timeout — ver Braess #2).
Parámetros
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
user_id | str | sí | Dueño de la sesión a cerrar. |
summary | str | sí | Summary escrito por humano. No puede ser vacío (whitespace-only se rechaza). Estructura recomendada: Goal · Discoveries · Accomplished · Next Steps · Relevant Files. |
Returns
Session (modelo Pydantic):
id(str) — identificador de la sesión.user_id(str)started_at(str, ISO-8601 UTC)ended_at(str, ISO-8601 UTC) — se setea al cerrar.last_activity_at(str, ISO-8601 UTC)summary(str) — el summary que pasaste.status(Literal["completed"])is_auto_generated(bool) — siempreFalseacá.
Levanta
ValueError—summaryvacío o whitespace-only.LookupError— no existe sesión activa parauser_id(404 en la capa HTTP).
Ejemplos
- Cierre básico
- Summary estructurado (recomendado)
closed = mem.mem_session_end(
user_id="alice",
summary="Capturé el saludo preferido de Alice y confirmé que el agente va a usar 'Ali'.",
)
print(closed.id, closed.ended_at)
print(closed.is_auto_generated) # False
summary = """
## Goal
Levantar el flow de auth para el dashboard.
## Discoveries
- FTS5 necesita el fallback de LIKE cuando la query tiene < 3 chars.
## Accomplished
- Implementé endpoints `/login` y `/logout`.
- Agregué rate limiting (100/min) en `/login`.
## Next Steps
- Cablear el job de email para password reset.
## Relevant Files
- src/auth/routes.py
- tests/auth/test_routes.py
""".strip()
mem.mem_session_end(user_id="alice", summary=summary)
tip
Si necesitás guardar un checkpoint de summary sin cerrar la sesión, usá mem_session_summary.