Orchestrate one recall call: search the graph and wrap the returned facts in
a <gralkor-memory> block.
Pure orchestration — the search dependency is passed as a function in
opts. Production wiring lives in Gralkor.Client.Native.
See test-trees/unit/recall_TEST_TREES.md.
Summary
Types
@type group_id() :: String.t()
@type opts() :: [ search_fn: search_fn(), max_results: pos_integer(), deadline_ms: pos_integer() ]
@type search_fn() :: (group_id(), query :: String.t(), max :: pos_integer() -> {:ok, [String.t()]} | {:error, term()})
@type session_id() :: String.t() | nil