May 7, 2026

Memory and Schedule Recall Refinements

A path traversal guard was added to data file endpoints (get/put/delete) by including _safe_data_path() with os

A path traversal guard was added to data file endpoints (get/put/delete) by including _safe_data_path() with os.path.realpath().

The imap_handler was updated because understand() mutates in place; it now returns None and has had a redundant return statement dropped.

The memory_store fix corrected that ltrim() returns False when a key is missing, instead of True.

To improve memory recall, narrow-retry guidance was added to the query description.

LLMs are now guided to call recall once per topic, encouraging separate calls for separate topics instead of relying on intra-query clause splitting.

Schedule data handling in memory recall was refined: search functionality was added to ScheduleAbility, allowing vec0 MATCH over scheduled_items_vec.

In memory._handle_recall, logic for searching documents and scheduled items was refactored to use proc.handleTool() calls to the document and schedule abilities, eliminating duplicated query logic.

When recall surfaces document artifacts, the document tool_call is now correctly recorded in memory.

  • Added path traversal guard to data file endpoints.

  • LLM recall guidance changed to call once per topic.

  • Refactored memory recall to use proc.handleTool() for documents and schedules.

  • Added search action to ScheduleAbility for vector similarity matching.

  • Document tool_calls are now recorded when recall surfaces artifacts.

  • Hardcoded “test-secret” Flask keys replaced with secrets.token_hex(16) across 6 API test files.