Skip to content

symfonic.core.contracts.types

types

Phase 3 type definitions. All Pydantic BaseModel(frozen=True).

ActivationEvent

Bases: BaseModel

A single memory node activated during spreading activation.

AskUserAnsweredEvent

Bases: BaseModel

Fires when a resume call succeeds and the graph is unpaused.

AskUserExpiredEvent

Bases: BaseModel

Fires when the janitor sweeps an expired checkpoint.

AskUserQuestionEvent

Bases: BaseModel

Emitted when the LLM calls the built-in ask_user tool.

The graph is paused at this point and will only advance when a matching POST to /api/v1/resume/{pause_token} arrives.

ConsolidationScheduledEvent

Bases: BaseModel

Emitted after consolidation is scheduled (background task, not yet complete).

ExtensionEvent

Bases: BaseModel

Vendor-specific or custom event. Never dropped, never raises.

GraphEdgeCreatedEvent

Bases: BaseModel

Emitted when a new edge is written during consolidation.

GraphNodeCreatedEvent

Bases: BaseModel

Emitted when a new node is written to the graph during consolidation.

MemoryExtractedEvent

Bases: BaseModel

Emitted when an extraction block is parsed from the stream.

MessageEndEvent

Bases: BaseModel

End of message.

MessageStartEvent

Bases: BaseModel

Start of a new message.

ResponseCompleteEvent

Bases: BaseModel

Final clean response text — equivalent of AgentResponse.final_response.

SearchResultEvent

Bases: BaseModel

Search result from external capability.

TextDeltaEvent

Bases: BaseModel

Incremental text chunk from LLM.

ThinkingDeltaEvent

Bases: BaseModel

Incremental thinking/reasoning chunk.

ToolCallDeltaEvent

Bases: BaseModel

Incremental tool call arguments.

ToolCallStartEvent

Bases: BaseModel

Tool call initiated by LLM.

ToolProgressEvent

Bases: BaseModel

Intermediate progress emitted by an async-generator tool.

Yielded between ToolCallStartEvent and the final ToolResultEvent. Carries an opaque payload; the tool author chooses the shape. sequence is monotonically increasing (0-indexed) per tool_call_id so a consumer can detect drops.

The engine emits this when a registered tool is an inspect.isasyncgenfunction: each non-final yield becomes one ToolProgressEvent; the last yield becomes the existing ToolResultEvent. Regular async def tools see zero behaviour change.

ToolResultEvent

Bases: BaseModel

Result returned from tool execution.

UsageEvent

Bases: BaseModel

Token usage report.