v1.15.0
v1.15.0 — Proactive Engagement & Storage Maintenance
This release makes odek visibly more engaged and self-managing: the agent now anticipates follow-ups, tracks your open loops, and can nudge you proactively — while a new storage-maintenance layer keeps long-lived agents (Telegram bot, odek serve) clean forever. It also includes a deep memory-system overhaul and a full hardening of the PIGuard prompt-injection pipeline.
Highlights
- Proactive engagement (#91). The agent now ends answers with a compact "You might also want to" block, generated from intents it already predicted (zero extra LLM cost). A new open-loop tracker extracts your unanswered questions and stated goals as first-class memory atoms, and an opt-in ProactiveNudges engine can remind you about stale goals, open questions, and blockers — with strict anti-annoyance caps (opt-in, per-day budget, per-kind cooldown) so proactivity never becomes noise. Telegram bots can push nudges after turns; scheduled jobs are now memory-wired, so a cron task can analyze your memory and sessions.
- Storage maintenance (#92). A new janitor goroutine runs in the Telegram bot,
odek serve, and the schedule daemon, keeping every byte either useful or time-bounded: session retention, audit-log retention (previously unbounded), log rotation, Telegram media/plan sweeps, and skill skip-list GC — all driven by a new operator-onlymaintenanceconfig section. The newodek cleanup [--dry-run]command runs the same sweep on demand with a human-readable report. Session files can no longer outgrow their load cap, and secret redaction on save is now incremental instead of O(history) per write. - Memory overhaul (#90). Four phases of fixes and quality work: semantic dedup of stored atoms, relevance-preserving recall ranking, atom consolidation, an index staleness fingerprint, a
Stats()observability API withodek memory extended stats, and a PIGuard E2E + fuzz test suite — which immediately caught a real parser panic. - PIGuard guard fixes (#85–#87). The injection-detector score semantics were corrected (confident BENIGN results no longer rejected), the Docker gateway protocol mismatch that flipped benign facts to INJECTION is fixed, guard-rejected memory atoms go to quarantine for human review instead of vanishing, and
socket_pathmode now speaks the daemon's real NDJSON protocol. The daemon and gateway builds are vendored and Apple-Silicon safe. - Skill auto-learn hardening (#89). Project-directory skills are distrusted like
./odek.json,NeedsReviewis enforced at trigger time, the local injection scan always runs on skill bodies, and the PiGuard skills scope is on by default.
Upgrade notes
- Proactive nudges are off by default (
memory.extended.proactive_nudges_enabled); follow-up suggestions are on. Docker configs ship with full engagement enabled (5 nudges/day max). - The new
maintenancesection defaults to enabled (60m interval, 30d sessions / 14d audit / 50MB logs / 30d plans / 90d skips). Runodek cleanup --dry-runto preview what it would remove. - Extended memory remains opt-in (
memory.extended.enabled). - If your config sets
interaction_modeto a non-standard value (e.g."all"), follow-up suggestions now display correctly anyway — but"engaging"is the canonical value.
Assets
Binaries are available for linux/amd64, linux/arm64, darwin/amd64, and darwin/arm64. Verify with checksums.txt.
Full Changelog: v1.14.0...v1.15.0