1#![allow(
12 clippy::cast_possible_truncation,
13 clippy::missing_errors_doc,
14 clippy::missing_panics_doc,
15 clippy::must_use_candidate,
16 clippy::pedantic,
17 clippy::return_self_not_must_use,
18 clippy::uninlined_format_args,
19 clippy::unreadable_literal
20)]
21
22#[cfg(test)]
23use criterion as _;
24#[cfg(test)]
25use serde_yaml as _;
26#[cfg(test)]
27use tempfile as _;
28
29#[cfg(feature = "experimental-public-api")]
30#[path = "contracts/authoring_contracts.rs"]
31mod authoring_contracts;
32#[doc(hidden)]
33#[path = "build/builder.rs"]
34pub mod builder;
35#[doc(hidden)]
36#[path = "graph/canonical.rs"]
37pub mod canonical;
38#[doc(hidden)]
39#[path = "build/compile.rs"]
40pub mod compile;
41#[doc(hidden)]
42#[path = "graph/composition.rs"]
43pub mod composition;
44#[doc(hidden)]
45#[path = "build/contract.rs"]
46pub mod contract;
47#[doc(hidden)]
48#[path = "graph/dynamic.rs"]
49mod dynamic;
50#[doc(hidden)]
51#[path = "graph/edge.rs"]
52pub mod edge;
53#[doc(hidden)]
54#[path = "analysis/effects.rs"]
55pub mod effects;
56#[doc(hidden)]
57#[path = "contracts/error.rs"]
58pub mod error;
59#[cfg(feature = "experimental-public-api")]
60#[path = "contracts/execution_contracts.rs"]
61mod execution_contracts;
62#[doc(hidden)]
63#[path = "graph/expansion.rs"]
64pub mod expansion;
65#[doc(hidden)]
66#[path = "analysis/fingerprint.rs"]
67pub mod fingerprint;
68#[doc(hidden)]
69#[path = "graph/graph.rs"]
70pub mod graph;
71#[doc(hidden)]
72#[path = "graph/input.rs"]
73pub mod input;
74#[doc(hidden)]
75#[path = "graph/meta.rs"]
76pub mod meta;
77#[doc(hidden)]
78#[path = "graph/model.rs"]
79pub mod model;
80#[doc(hidden)]
81#[path = "graph/node.rs"]
82pub mod node;
83#[doc(hidden)]
84#[path = "pipeline/parse.rs"]
85pub mod parse;
86#[cfg(feature = "experimental-public-api")]
87#[path = "contracts/performance_contracts.rs"]
88mod performance_contracts;
89#[doc(hidden)]
90#[path = "planner/planner.rs"]
91pub mod planner;
92#[cfg(feature = "experimental-public-api")]
93#[path = "contracts/planner_contracts.rs"]
94mod planner_contracts;
95#[doc(hidden)]
96#[path = "pipeline/resolve.rs"]
97pub mod resolve;
98#[cfg(feature = "experimental-public-api")]
99#[path = "contracts/resource_contracts.rs"]
100mod resource_contracts;
101#[doc(hidden)]
102#[path = "graph/resources.rs"]
103pub mod resources;
104#[cfg(feature = "experimental-public-api")]
105#[path = "contracts/scientific_integration_contracts.rs"]
106mod scientific_integration_contracts;
107#[doc(hidden)]
108#[path = "analysis/semantics.rs"]
109pub mod semantics;
110#[cfg(feature = "experimental-public-api")]
111#[path = "contracts/semantics_contracts.rs"]
112mod semantics_contracts;
113#[doc(hidden)]
114#[path = "graph/topology.rs"]
115pub mod topology;
116#[doc(hidden)]
117#[path = "analysis/trigger_rules.rs"]
118pub mod trigger_rules;
119#[doc(hidden)]
120#[path = "pipeline/validate.rs"]
121pub mod validate;
122
123#[doc(hidden)]
124pub use builder::{
125 dry_run_preview, lint_graph, simulate_graph, DagBuilder, DagDryRunPreview, DagLintFinding,
126 DagUnitHarness, NodeBuilder,
127};
128#[doc(hidden)]
129pub use canonical::{canonical_json, canonicalize_graph};
130#[doc(hidden)]
131pub use compile::{
132 compile_graph, compile_graph_contract, compile_graph_strict, compile_graph_with_defaults,
133 negotiate_spec_version, CompatibilityDecision, DagCompilePlanHints, DagCompileResult,
134};
135#[doc(hidden)]
136pub use composition::{compose_graphs, GraphCompositionError};
137#[doc(hidden)]
138pub use contract::{DagSnapshot, GraphContract, GraphExecutionPolicy};
139#[doc(hidden)]
140pub use dynamic::{
141 apply_dynamic_expansion, generated_node_id, parse_dynamic_expansion_document,
142 AppliedDynamicExpansion, DynamicExpansionDocument, DynamicExpansionRecord, DynamicSpec,
143 DYNAMIC_EXPANSION_SCHEMA_VERSION,
144};
145#[doc(hidden)]
146pub use edge::{EdgeDependencyKind, TypedEdge};
147#[doc(hidden)]
148pub use error::GraphError;
149#[doc(hidden)]
150pub use input::{
151 materialize_graph_input_value, validate_graph_input_value, GraphInputKind, GraphInputSpec,
152 GraphInputViolation,
153};
154#[doc(hidden)]
155pub use model::{
156 cache_behavior_enabled, cache_behavior_is_default, default_media_type_for_kind,
157 edge_kind_is_default, env_allowlist_pattern_is_exact, is_known_path_variable,
158 output_kind_is_default, output_required_default, output_required_is_default,
159 semantic_kind_is_default, trigger_rule_is_default, BranchSpec, CacheBehavior, ContainerSpec,
160 Edge, EdgeKind, Effect, FileOutput, Graph, GraphFingerprintExplain, GraphId, GraphMeta, Node,
161 NodeKind, NodeOutputRef, OutputKind, OutputSpec, ParamValue, PathVarBinding, PathVarRef,
162 PortRef, RefSpec, ResolvedGraph, Resources, RetryPolicy, SemanticNodeKind, Severity,
163 SubgraphDefinition, SubgraphInstance, TriggerRule, ValidationDiagnostic, PATH_VARIABLE_NAMES,
164};
165#[doc(hidden)]
166pub use node::{
167 derive_interface, node_input_bindings, node_io_contract, NodeEnvBinding, NodeInputBinding,
168 NodeInputSource, NodeIoContract, NodeOutputContract, NodeParamBinding, ParamBindingSource,
169};
170#[doc(hidden)]
171pub use parse::parse_graph_strict;
172#[doc(hidden)]
173pub use planner::{
174 can_runtime_execute_plan_without_raw_graph, graph_lowering_boundary_note,
175 lower_graph_to_execution_plan, map_planner_error_to_graph_error, node_kind_supported,
176 planner_alignment_required_doc, planner_alignment_required_schema,
177 planner_alignment_required_test, planner_diagnostics_from_error, planner_identity_for_graph,
178 BranchPathAnalysis, ExecutionPlan, PlanOptions, PlannedBranchContract, PlannedEdge,
179 PlannedNode, PlannerDiagnostic, PlannerError, PlannerSeverity, PLANNER_CONTRACT_VERSION,
180};
181#[doc(hidden)]
182pub use resolve::resolve_graph;
183#[doc(hidden)]
184pub use resources::GraphDefaults;
185#[doc(hidden)]
186pub use topology::deterministic_topology_order;
187#[doc(hidden)]
188pub use trigger_rules::{evaluate_trigger_rule, TriggerRuleEvaluation, UpstreamTerminalOutcome};
189#[doc(hidden)]
190pub use validate::{
191 validate_graph, validate_schema, validate_semantics, validate_topology,
192 validation_rule_registry, ValidationDomain,
193};
194pub const SPEC_VERSION: &str = "bijux-dag/v0.1";
195pub const CANONICALIZATION_CONTRACT_VERSION: &str = "bijux-dag-canonical/v1";
196
197pub mod stable {
199 pub use crate::{
200 canonical_json, canonicalize_graph, compile_graph, compile_graph_contract,
201 compile_graph_strict, compile_graph_with_defaults, compose_graphs,
202 lower_graph_to_execution_plan, negotiate_spec_version, parse_graph_strict,
203 planner_identity_for_graph, validate_graph, CompatibilityDecision, DagCompilePlanHints,
204 DagCompileResult, DagSnapshot, ExecutionPlan, Graph, GraphCompositionError, GraphContract,
205 GraphError, GraphExecutionPolicy, PlanOptions, PlannedEdge, PlannedNode, PlannerDiagnostic,
206 PlannerError, PlannerSeverity, TriggerRuleEvaluation, UpstreamTerminalOutcome,
207 SPEC_VERSION,
208 };
209}
210
211pub mod prelude {
213 pub use crate::stable::{
214 canonical_json, canonicalize_graph, compile_graph, compile_graph_contract,
215 compile_graph_strict, compile_graph_with_defaults, compose_graphs, negotiate_spec_version,
216 validate_graph, CompatibilityDecision, DagCompilePlanHints, DagCompileResult, DagSnapshot,
217 ExecutionPlan, Graph, GraphCompositionError, GraphContract, GraphError,
218 GraphExecutionPolicy, PlanOptions, PlannedEdge, PlannedNode, PlannerDiagnostic,
219 PlannerError, PlannerSeverity, SPEC_VERSION,
220 };
221 pub use crate::{
222 lower_graph_to_execution_plan, parse_graph_strict, planner_identity_for_graph,
223 };
224}
225
226#[cfg(feature = "experimental-public-api")]
228pub mod experimental {
229 pub mod authoring_contracts {
230 pub use crate::authoring_contracts::*;
231 }
232 pub mod execution_contracts {
233 pub use crate::execution_contracts::*;
234 }
235 pub mod planner_contracts {
236 pub use crate::performance_contracts::*;
237 pub use crate::planner_contracts::*;
238 }
239 pub mod resource_capabilities {
240 pub use crate::resource_contracts::*;
241 }
242 pub mod scientific_integration {
243 pub use crate::scientific_integration_contracts::*;
244 }
245 pub mod semantic_contracts {
246 pub use crate::semantics_contracts::*;
247 }
248 pub use crate::semantics::{
249 classify_compatibility, complexity_score, enforce_late_binding_immutability, explain_graph,
250 migration_patch, normalize_semantic_graph, semantic_diff, static_analysis,
251 BranchDecisionNode, CompatibilityClassification, ConditionalExecution,
252 DynamicEdgeExpansionRule, GraphComplexityScore, GraphCompositionContract,
253 GraphExplainabilityModel, GraphMigrationPatch, GraphTemplate, JoinSemantics,
254 LateBindingRule, MapFanOutSemantics, NormalizedSemanticGraph, ParameterBindingSemantics,
255 PartitionSemantics, ReduceFanInSemantics, SemanticDiffClass, SemanticDiffReport,
256 StaticAnalysisReport, SubgraphEmbedding, WindowingSemantics,
257 };
258}