Coverage for astrocyte/_recall_params.py: 100%

15 statements  

« prev     ^ index     » next       coverage.py v7.15.0, created at 2026-07-04 05:24 +0000

1"""Typed recall parameters — replaces fragile dict[str, Any] callback parameter.""" 

2 

3from __future__ import annotations 

4 

5from dataclasses import dataclass 

6from datetime import datetime 

7 

8from astrocyte.types import MemoryHit 

9 

10 

11@dataclass(frozen=True) 

12class RecallParams: 

13 """Typed bundle of optional recall parameters passed through internal helpers.""" 

14 

15 external_context: list[MemoryHit] | None = None 

16 fact_types: list[str] | None = None 

17 time_range: tuple[datetime, datetime] | None = None 

18 include_sources: bool = False 

19 layer_weights: dict[str, float] | None = None 

20 detail_level: str | None = None 

21 as_of: datetime | None = None # M9: time-travel filter 

22 #: Reference date for resolving relative temporal phrases in the 

23 #: query. Separate from ``as_of`` (which is a retained_at filter). 

24 #: See ``RecallRequest.query_reference_date`` for the rationale. 

25 query_reference_date: datetime | None = None 

26 #: M31 Fix 2 — opaque session identifier. When set, the recall path 

27 #: filters facts/sections to those whose anchoring section has a 

28 #: matching ``session_id``. ``None`` (the default) preserves 

29 #: cross-session retrieval behaviour. Real systems pass the 

30 #: session_id from their conversation UI; benches pass the 

31 #: ``question_session_id`` metadata from the dataset. 

32 session_id: str | None = None