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
« 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."""
3from __future__ import annotations
5from dataclasses import dataclass
6from datetime import datetime
8from astrocyte.types import MemoryHit
11@dataclass(frozen=True)
12class RecallParams:
13 """Typed bundle of optional recall parameters passed through internal helpers."""
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