Module drone

Module drone 

Source
Expand description

Drone pane backend — issue #753 Phase 1.

Native DAG-of-blocks drone engine modeled after Sim. Frontend lives in frontend/app/view/drone/. The canvas uses @dschz/solid-flow (xyflow core, SolidJS port).

Phase 1 ships 5 block types: Agent, Condition, API, Response, Variables. The Function block (quickjs-rs sandbox) is Phase 2.

Architecture:

  • types.rs — DroneDefinition, DroneRun, FlowNode, FlowEdge.
  • storage.rs — wstore CRUD over db_drone_definitions + db_drone_runs.
  • executor/ — DAG topological sort + per-layer concurrent runner.
  • executor/blocks — one file per block type.
  • data_flow.rs{{var}} interpolation (Mustache-style; see RFC §2 Q5).

Re-exports§

pub use types::BlockKind;
pub use types::BlockState;
pub use types::FlowEdge;
pub use types::FlowNode;
pub use types::RunStatus;
pub use types::DroneDefinition;
pub use types::DroneRun;

Modules§

data_flow
{{var}} interpolation — Mustache-style. Resolves {{block_id.path}}, {{var.name}}, {{env.NAME}} against the execution context (RFC #753 §2 Q5).
executor
storage
WaveStore extension methods for db_drone_definitions + db_drone_runs. Lives in the drone module because the table schema is local to this feature; if Drone ever ships separately we can pull these methods out into a wstore module without changing call sites.
types
Drone + run types. Mirrors the frontend shape so RPC payloads flow through serde_json::to_value without manual mapping.