mod action;
mod capability;
pub mod registry;
mod schema;
pub use action::{ActionParam, ActionParamType, AgentAction};
pub use capability::AgentCapability;
pub use registry::{Accessibility, NodeBounds, OntologyRegistry, UiNode, UiTree};
pub use schema::{PropertyConstraint, PropertySchema, PropertyType, SemanticRole, WidgetSchema};
pub trait Discoverable {
fn schema(&self) -> WidgetSchema;
fn capabilities(&self) -> Vec<AgentCapability>;
fn actions(&self) -> Vec<AgentAction>;
fn semantic_role(&self) -> SemanticRole;
fn agent_state(&self) -> serde_json::Value;
fn execute_action(
&mut self,
action: &str,
params: &serde_json::Value,
) -> Result<serde_json::Value, String>;
fn agent_id(&self) -> Option<&str> {
None
}
fn accessibility_label(&self) -> Option<String> {
None
}
}