Pixir.Delegate.Runner (pixir v0.1.7)

Copy Markdown View Source

Attached runtime runner for pixir delegate.

This module is the first real implementation behind the Delegate CLI I/O Contract. It keeps Pixir.Delegate.CLIContract focused on parsing/rendering and uses existing Pixir runtime surfaces for work:

  • parent Session creation goes through Pixir.Conversation;
  • Subagent fanout goes through Pixir.Subagents;
  • read-only and bounded-write Workflow fanout goes through Pixir.Workflows;
  • terminal status comes from wait_outcome/4 or the Workflow result envelope;
  • durable truth remains the parent and child Session Logs plus Workflow Events.

It also exposes a start-only primitive for the current-runtime Delegate owner. It deliberately does not implement streaming attach, cross-invocation daemon residency, merge-back/apply, or any process-per-child shell fanout. Bounded-write Workflow support is attached-only, requires explicit per-step write sets, and reports where writes land.

TODO(delegate-service-v1)

Keep the attached runner as the synchronous compatibility path. The service owner reuses the same normalization and start vocabulary, but owns current-runtime lifetime and active cancellation in OTP. Avoid adding caller-side loops here that would make pixir delegate --spec pretend to be a detached daemon.

Summary

Functions

Run a validated Delegate spec through the attached runtime path.

Start a validated subagents Delegate spec without waiting for terminal completion.

Functions

run(request, spec, spec_meta, opts \\ [])

@spec run(map(), map(), map(), keyword()) :: {:ok, map()} | {:error, map()}

Run a validated Delegate spec through the attached runtime path.

start(request, spec, spec_meta, opts \\ [])

@spec start(map(), map(), map(), keyword()) :: {:ok, map()} | {:error, map()}

Start a validated subagents Delegate spec without waiting for terminal completion.

This is the runtime primitive used by the current-BEAM Delegate owner. It creates the durable parent Session, spawns child Subagents through the normal Manager, and returns start evidence plus owner context. It does not start a daemon or a nested Pixir process.