//! Typed read-side queries plugin handlers can submit through their
//! `GameContext`. The mirror of the SDK's `events` module — events
//! flow plugin → host (writes); queries flow plugin → host (reads).
//!
//! See `docs/superpowers/specs/2026-05-04-handler-ports-architecture.md`.
//!
//! ## Architecture in one paragraph
//!
//! Each engine capability that handlers want to *ask about*
//! (predicate evaluation, visibility, distance / spatial lookups,
//! pathfinding, …) gets its own small dyn-safe trait in this
//! module. The engine implements each trait against its private
//! internals; per-session [`QueryRegistry`] holds the
//! `Arc<dyn TraitName>` impls keyed by `TypeId`. Plugin handlers
//! submit queries via `ctx.query::<dyn PredicateQuery>()` — a
//! single dispatch shape that doesn't widen the SDK's
//! `GameContext` trait when a new query type is added.
//!
//! Capability plugins can also provide query impls (e.g., a
//! third-party fog-of-war capability supplying its own
//! `VisionQuery`); collisions resolve via manifest-declared
//! priority + per-session overrides. See
//! `core/sdk/src/plugin/manifest.rs` for the
//! `provides_queries` declaration shape.

pub mod predicate;
pub mod registry;
pub mod spatial;
pub mod vision;

pub use predicate::PredicateQuery;
pub use registry::QueryRegistry;
pub use spatial::SpatialQuery;
pub use vision::VisionQuery;
