symfonic.agent.backend.transcript¶
transcript ¶
The transcript handle the conversation adapter hands the kernel.
Two parallel views of one turn: the facade-typed Message list an adopter
gets back, and the LangChain list the provider is actually sent. They are kept
side by side rather than derived from one another because the wire view has to
carry provider-specific structure (remapped tool-call ids, multimodal content
blocks) that the typed view deliberately does not model.
The kernel never opens this object. It receives it from open_turn, hands it
back on every port call, and that is the whole of its involvement — which is
what lets the wire format change without the invocation loop noticing.