Phase 3 memory engine
Milestone 3.6.6 — Memory Management API (View, Search, Delete, Export) — planned.
Milestone 3.6.6 — Memory Management API (View, Search, Delete, Export)
Status: Planned
Goal: 3.6 — Management API server
Phase: 3 — Memory Engine and Operator Platform
Estimated effort: 3 days
Endpoints
GET /v1/agents/{agent_id}/memories → CursorPage[MemoryResponse] (filtered, paginated)
GET /v1/agents/{agent_id}/memories/{id} → MemoryResponse
POST /v1/agents/{agent_id}/memories/search → SearchMemoriesResponse (semantic search)
DELETE /v1/agents/{agent_id}/memories/{id} → 204 (soft delete)
DELETE /v1/agents/{agent_id}/memories → 204 (bulk soft delete with filter)
POST /v1/agents/{agent_id}/memories/export → 202 Accepted (async; returns job_id)
GET /v1/agents/{agent_id}/memories/export/{job_id} → ExportStatusResponse (with download_url)Filter parameters for list and bulk delete
class MemoryListParams(BaseModel):
category: str | None = None # filter by category
status: str | None = "active" # default: active only
source: str | None = None # filter by source
tag: str | None = None # filter by tag
created_after: datetime | None = None
created_before: datetime | None = None
limit: int = Field(default=20, ge=1, le=100)
cursor: str | None = NoneGDPR delete cascade
# DELETE /v1/agents/{agent_id}/memories/{id}
# 1. Soft-delete: set deleted_at = NOW() in ibex_core.memories
# 2. Remove from hot cache (Redis ZREM)
# 3. Remove from any memory_relationships
# 4. Create memory_version with operation='delete'
# 5. If MinIO archive exists for sessions referencing this memory: flag for re-archive
# DELETE /v1/organizations/{id} (GDPR full deletion)
# Hard delete of all memories, sessions, checkpoints, directives for the org
# MinIO archives deleted via object lifecycle policy + explicit purgeExport format
// CSV export of memories for an agent
// Async job: POST /export returns job_id; GET /export/{job_id} returns download URL
// Format: id, category, content, confidence, source, created_at, retrieval_count
// Privacy: content is included (the operator owns this data); embedding is excludedAcceptance Criteria
- List endpoint supports all filter params; correct cursor pagination
- Semantic search endpoint calls memory service
/internal/memories/search - Soft delete sets
deleted_at; memory no longer appears in active list - Bulk delete requires explicit
confirm=truequery param to prevent accidents - Export job completes within 60 seconds for < 10,000 memories
- Export download URL is a MinIO pre-signed URL (15-minute expiry)
- Cross-org memory access returns 403 (tested explicitly)
Edit on GitHub
Last updated on