Skip to content

symfonic.kernel.runner

runner

The one invocation driver and owner of the internal event stream.

InvocationRunner

Drive a run and emit its sole internal stream.

stream_model selects only the provider transport. It does not select a loop, accumulator, result builder, lifecycle, or event pipeline: those are all this method, once.

events

events(kernel: Any, plan: InvocationPlan, request: TurnRequest, *, stream_model: bool, context: RequestContext | None = None, before_effect: Any = None) -> AsyncIterator[KernelEvent]

Yield one run's events, its identity and lineage bound per step (CORE-194).

Source code in src/symfonic/kernel/runner.py
def events(
    self,
    kernel: Any,
    plan: InvocationPlan,
    request: TurnRequest,
    *,
    stream_model: bool,
    context: RequestContext | None = None,
    before_effect: Any = None,
) -> AsyncIterator[KernelEvent]:
    """Yield one run's events, its identity and lineage bound per step (CORE-194)."""
    from symfonic.kernel.run_observation import stepped

    holder: list[Any] = []
    return stepped(self._events(
        kernel, plan, request, stream_model=stream_model, context=context,
        before_effect=before_effect, observed_into=holder), holder)