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_valuewithout manual mapping.