0.29.0

Added

  • P2-M4: Per-fact metadata (JSONB) — поле metadata TEXT (SQLite) / JSONB (PG) в memory_facts. Произвольный JSON для структурированных данных без расширения схемы. API POST/PUT /facts принимают metadata, tool memory_remember — параметр metadata, tool memory_search — выводит metadata. Миграция 026. 5 unit-тестов.
  • P2-M6: Per-agent reranker config — колонка reranker_config TEXT в agents. JSON-конфиг {"provider":"ollama","api_base":"...","model":"bge-reranker"} или пусто (глобальный fallback). reranker.RerankerResolver создаёт reranker на лету. ContextBuilder и MemoryHandler используют per-agent reranker через resolveReranker. Миграция 027.
  • P2-M5: Embedding tracking — колонки embedding_model TEXT в memory_facts и memory_chunks. Таблица reembed_jobs. Store-методы ListFactsNeedingReembed и UpdateFactEmbedding для фоновой миграции при смене embedding-модели. Миграция 028.
  • P2-M2: Working memory / scratchpad (DB) — таблица memory_scratchpad(agent_id, user_id, key, value) с UNIQUE constraint. Tools: scratchpad_write, scratchpad_read, scratchpad_clear. Permission Tools.Scratchpad в preset assistant. User-scope изоляция. Миграция 029.
  • P2-M7: Экспорт/импорт памятиGET /api/v1/agents/{id}/memory/export → JSON download (версия 1.0, все факты до 10000). POST /api/v1/agents/{id}/memory/import → массовое создание фактов с auto-embedding.