feat: nightly agentic pre-generation of memory reels
Implement end-to-end nightly pre-generation of memory reels with agentic
scripting that grounds narration in calendar, location, messages, and RAG.
Sections A-E from the plan:
A. Extract produce_reel pipeline core from run_reel_job with
ScripterMode::Fast/Agentic and progress callbacks.
B. Agentic scripter: factor run_readonly_tool_loop from the insight
generator, build read-only tool gate, prompt builder with GPS, and
generate_script_agentic with fallback to fast path.
C. Precomputed reels ledger (SQLite table + DAO), GET /reels/precomputed
handler with validity gate, GET /reels/by-key/{key}/video streaming,
and normalize_library_key helper.
D. Nightly scheduler: spawn_pregen_scheduler with configurable hour,
run_pregen_batch (day/week/month spans), pregen_one with dedup and
disk-check, secs_until_next_run_hour time math.
E. user_ai_prefs passive mirror table + DAO for param capture in
create_reel_handler and replay in the scheduler.
Also fixes resolve_library_param signature to take &[Library] and adds
resolve_library_param_state wrapper for AppState callers.
New files: migrations/2026-06-13-000000_add_precomputed_reels/,
migrations/2026-06-13-000010_add_user_ai_prefs/,
src/database/precomputed_reel_dao.rs,
src/database/user_ai_prefs_dao.rs
This commit is contained in:
@@ -139,3 +139,19 @@ CLIP_REQUEST_TIMEOUT_SEC=60
|
||||
# ── RAG / search ────────────────────────────────────────────────────────
|
||||
# Set to `1` to enable cross-encoder reranking on /search results.
|
||||
SEARCH_RAG_RERANK=0
|
||||
|
||||
# ── Nightly reel pre-generation (Phase 3+) ──────────────────────────────
|
||||
# Set to `1` to enable the scheduler. Disabled by default.
|
||||
# REEL_PREGEN_ENABLED=1
|
||||
# Hour (0-23) when the nightly batch fires. Default 3 AM.
|
||||
# REEL_PREGEN_HOUR=3
|
||||
# Day of week for weekly reels (0=Sun, 1=Mon, …). Default Monday.
|
||||
# REEL_PREGEN_WEEK_DOW=1
|
||||
# Timezone offset in minutes from UTC (e.g., -480 = PST). Defaults to
|
||||
# the server's local timezone.
|
||||
# REEL_PREGEN_TZ_OFFSET_MINUTES=
|
||||
# Voice ID for narration (e.g., "grandma"). Falls back to the value
|
||||
# stored in the user_ai_prefs DB row when set.
|
||||
# REEL_PREGEN_VOICE=
|
||||
# Library filter: a library id (e.g. "1") or "all" for every library.
|
||||
# REEL_PREGEN_LIBRARY=all
|
||||
|
||||
Reference in New Issue
Block a user