Skip to main content

jellyflow_runtime/runtime/binding/
mod.rs

1//! Renderer-neutral binding queries for knowledge-canvas adapters.
2
3mod query;
4mod resolve;
5
6pub use query::{
7    BindingEndpointResolution, BindingEndpointResolutionStatus, BindingQueryOptions,
8    BindingQueryResult, ResolvedBinding, ResolvedBindingEndpoint,
9};
10pub use resolve::resolve_binding_query;
11
12use crate::runtime::layout::LayoutContext;
13use crate::runtime::store::NodeGraphStore;
14
15impl NodeGraphStore {
16    /// Reads renderer-neutral binding facts for the current store state.
17    pub fn binding_query(&self) -> BindingQueryResult {
18        self.binding_query_with_options(BindingQueryOptions::default())
19    }
20
21    /// Reads renderer-neutral binding facts with explicit geometry options.
22    pub fn binding_query_with_options(&self, options: BindingQueryOptions) -> BindingQueryResult {
23        crate::runtime::query::binding_query(self, options)
24    }
25
26    /// Builds layout context and pins nodes with resolvable binding geometry.
27    pub fn layout_context_with_binding_pins(&self) -> LayoutContext {
28        let pinned = self.binding_query().pinned_node_ids().collect::<Vec<_>>();
29        self.layout_context().with_pinned_nodes(pinned)
30    }
31}