Expand description
The pipeline driver: a single PipelineWorld that hosts every agent as
ECS data and ticks the crate::pipeline systems over all of them - the
traditional-game-loop core of the shared world.
The world owns the bevy World, the tick Schedule, the per-model
inference pools, and the async bridges (inference jobs + the tool worker).
Systems never block: they dispatch async work to the bridges and collect the
results on a later tick. Between ticks the driver parks on a wake
Notify until an async result lands or an external message arrives, so an
idle world costs ~0 CPU regardless of how many (paused/blocked) agents it
holds.
§Idle detection (no busy-spin)
Each outer iteration drives the schedule to a fixed point: it ticks until
a tick produces no change in the per-phase marker counts (the “fingerprint”).
At quiescence every remaining agent is either waiting on an in-flight async
job (which will notify on completion) or blocked on a resource that only an
async completion can free (a full pool) or on nothing at all (a missing
provider / no input) - so the driver parks on the wake instead of spinning.
A fresh async result or an external send_message fires the wake and the
fixed-point loop re-runs.
Structs§
- Pipeline
World - The shared ECS world that hosts and drives every agent.
Enums§
- Tick
Outcome - What one
PipelineWorld::tickdid.