symfonic.platform.transport_conversation¶
transport_conversation ¶
Request-bound conversation seam for native HTTP turns.
The transport never treats a caller's session id or browser-supplied history as proof of ownership. Deployments that persist chats provide this port and authorize a session against the already verified principal before a model call.
ConversationPort ¶
Bases: Protocol
prepare
async
¶
Refuse an unowned session before returning its trusted transcript.
PreparedConversation
dataclass
¶
Authorized history and final-only publication for one HTTP request.
UnusableFinal ¶
Bases: ValueError
A turn completed without a publishable answer.
answer_of_result ¶
Read only explicit text fields; never stringify an AgentResult.
A tool_limit result is refused unless terminal synthesis closed it, and
then only that reply is published (:func:_synthesized_reply). When the
caller's agent has synthesis enabled and synthesis declined because the
last round spoke, that round's text is published (:func:_interim_reply).
The empty-answer check below still applies.
Source code in src/symfonic/platform/transport_conversation.py
answer_of_run ¶
:func:answer_of_result for a run of agent, aware of its synthesis.
final_answer_of ¶
Prefer the authoritative completed result to streaming deltas.
Source code in src/symfonic/platform/transport_conversation.py
terminal_synthesis_enabled ¶
Whether the agent's plan binds the TerminalSynthesisCapability it composed.
The folded name alone is not proof: any capability may contribute under
terminal_synthesis. Nor is a composed instance: only the one the plan
factory bound is what the turn runs.