27 lines
749 B
Python
27 lines
749 B
Python
|
|
"""Memory-to-prompt adapter boundary."""
|
||
|
|
|
||
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
from typing import Any, Mapping
|
||
|
|
|
||
|
|
from app.features.memory.chat_memory_injection import (
|
||
|
|
InterviewMemorySlices,
|
||
|
|
slice_interview_memory,
|
||
|
|
)
|
||
|
|
from app.features.memory.runtime_types import MemoryEvidenceBundle
|
||
|
|
|
||
|
|
|
||
|
|
class MemoryPromptAdapter:
|
||
|
|
"""Converts retrieved evidence into prompt-specific slices."""
|
||
|
|
|
||
|
|
def slice_for_interview(
|
||
|
|
self,
|
||
|
|
evidence: MemoryEvidenceBundle | Mapping[str, Any] | None,
|
||
|
|
user_message: str,
|
||
|
|
) -> InterviewMemorySlices:
|
||
|
|
raw = evidence.raw if isinstance(evidence, MemoryEvidenceBundle) else evidence
|
||
|
|
return slice_interview_memory(dict(raw or {}), user_message)
|
||
|
|
|
||
|
|
|
||
|
|
__all__ = ["MemoryPromptAdapter"]
|