aerocontext-core 0.4.0

Provider-neutral aeronautical-context model and the pluggable ContextProvider contract
Documentation
//! Domain model and pluggable provider contract for aeronautical context.
//!
//! This crate defines the provider-neutral types ([`model`]) and the
//! [`ContextProvider`] trait that every context-provider adapter implements
//! (aviationweather.gov, Leidos Flight Service, future European sources).
//! The assembled context serves a human pilot as a briefing and an AI agent
//! as grounded, attributable context.
//!
//! # Capabilities
//!
//! Every provider implements the [`ContextProvider`] identity trait, then
//! one capability trait per kind of context it serves:
//!
//! - [`WeatherBriefingProvider`] — area weather briefings (METAR/TAF/…),
//!   the only capability implemented today.
//! - [`OwnshipStatusProvider`] and [`ControlCommandProvider`] — sibling
//!   capabilities, stubbed pending real sources.
//!
//! Splitting by capability (not by provider) lets a new source — a future
//! European service, or a datalink source like FIS-B — implement only the
//! capabilities it offers, and lets each consumer depend only on the context
//! it needs. The weather data it returns ([`Briefing`], [`Product`],
//! [`model::ProductKind`]) is `#[non_exhaustive]`, so it grows without
//! breaking existing adapters.

pub mod command;
pub mod compare;
pub mod geo;
pub mod model;
pub mod navdata;
pub mod ownship;
pub mod provider;
pub mod weather;

pub use command::{CommandAck, ControlCommand, ControlCommandProvider};
pub use compare::{
    Agreement, ComparisonReport, ProductComparison, ProductKey, SourcedValue, compare,
};
pub use model::{Area, AreaBriefingRequest, Briefing, GeoPoint, Product, ProductKind, ValidPeriod};
pub use navdata::{
    AIRAC_CYCLE_DAYS, Airway, AirwayLocation, AirwayPoint, FAA_NASR_CYCLE_DAYS,
    FAA_NASR_SUBSCRIPTION_URL, NavDataAuthority, NavDataCycle, NavDataError, NavDataSnapshot,
    NavPoint, NavPointKind,
};
pub use ownship::{OwnshipStatus, OwnshipStatusProvider};
pub use provider::{ContextProvider, ProviderError};
pub use weather::WeatherBriefingProvider;