Add auto memory distillation scheduler (APScheduler)

- scheduler.py: AsyncIOScheduler with three cron jobs
    short  daily     03:00 (no LLM, always fast)
    mid    weekly    Sun 03:30 (LLM)
    long   monthly   1st 04:00 (LLM — off by default)
- config.py: AUTO_DISTILL, AUTO_DISTILL_SHORT/MID/LONG .env flags
- main.py: start/stop scheduler in FastAPI lifespan
- routers/distill.py: GET /distill/status — next run times + config
- requirements.txt: apscheduler>=3.10
- HELP.md: updated planned items, added /distill/status to API table

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Scott Idem
2026-03-17 22:31:38 -04:00
parent 9fb5b8ae63
commit 4253e69c0b
6 changed files with 128 additions and 1 deletions

View File

@@ -8,10 +8,26 @@ Manual memory distillation endpoints.
"""
from fastapi import APIRouter
from memory_distiller import distill_short, distill_mid, distill_long
import scheduler
router = APIRouter(prefix="/distill")
@router.get("/status")
async def distill_status() -> dict:
"""Show auto-distillation schedule and next run times."""
from config import settings
return {
"enabled": settings.auto_distill,
"jobs": scheduler.status(),
"config": {
"short": settings.auto_distill_short,
"mid": settings.auto_distill_mid,
"long": settings.auto_distill_long,
},
}
@router.post("/short")
async def do_distill_short() -> dict:
return {"ok": True, **distill_short()}