Skip to content

Temporal awareness: due_at, reminded_at, and proactive surfacing #576

@kovtcharov

Description

@kovtcharov

Summary

Implement temporal awareness in the memory system — the agent knows what time it is, what's coming up, and proactively surfaces time-sensitive items.

Spec: docs/spec/agent-memory-architecture.md → Temporal sections throughout

Depends on: #542 (MemoryStore), #543 (MemoryMixin)

Features

Schema

  • due_at column on knowledge — ISO 8601 future date
  • reminded_at column — when agent last surfaced this to user
  • Partial index on due_at WHERE due_at IS NOT NULL

MemoryStore

  • get_upcoming(within_days=7) — returns items due soon or overdue
  • Query: due_at <= future AND (reminded_at IS NULL OR reminded_at < due_at)
  • All temporal queries use Python-computed boundaries (SQLite doesn't handle TZ offsets)

System Prompt

  • Current date/time always injected
  • Upcoming/overdue section with [DUE date] and [OVERDUE date] labels
  • Instruction to call update_memory(reminded_at="now") after mentioning

Tools

  • remember(due_at=...) — store time-sensitive items
  • update_memory(reminded_at="now") — mark as mentioned
  • Validated via datetime.fromisoformat()

Reminder Lifecycle

  1. User tells agent about future event → stored with due_at
  2. Agent interacts near due date → sees in system prompt → mentions it
  3. Agent marks reminded_at → won't nag
  4. If due_at passes and was only reminded before → resurfaces as overdue

Acceptance Criteria

  • due_at stored and validated correctly
  • get_upcoming returns correct items within time window
  • Overdue items resurface after reminded_at < due_at
  • System prompt includes temporal section
  • Current time injected in system prompt
  • LLM can set reminded_at via update_memory

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain:agent-coreFramework, tools, registry, memory, skills, orchestrationtrack:consumer-appHermes-competitor consumer product — mobile-first, voice + messaging + memory + skills

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions