1pub mod formation {
11 pub use converge_model::formation::{
19 FormationPlan, FormationRequest, ProfileSnapshot, RoleAssignment, SuggestorCapability,
20 SuggestorProfile, SuggestorRole,
21 };
22 pub use converge_optimization::suggestors::FormationAssemblySuggestor;
23 pub use converge_provider::ProviderSelectionSuggestor;
24 pub use converge_provider_api::{
25 Capability, CapabilityAssignment, CostClass, LatencyClass, ProviderAssignment,
26 ProviderRequest,
27 };
28}
29
30pub use converge_core::gates::hitl::{GateDecision, TimeoutAction, TimeoutPolicy};
31pub use converge_core::gates::{
32 AuthorityLevel, FlowAction, FlowGateAuthorizer, FlowGateContext, FlowGateInput,
33 FlowGateOutcome, FlowGatePrincipal, FlowGateResource, FlowPhase, StopReason,
34};
35pub use converge_core::{
36 ApprovalPointId, BackendId, Budget, BudgetResource, ChainId, ConstraintName, ConstraintValue,
37 ContextState, ConvergeError, ConvergeResult, CorrelationId, Criterion, CriterionEvaluator,
38 CriterionId, CriterionOutcome, CriterionResult, DecisionStep, Engine, EngineHitlPolicy,
39 EventId, EventQuery, ExperienceEvent, ExperienceEventEnvelope, ExperienceEventKind,
40 ExperienceEventObserver, ExperienceStore, HitlPause, IntegrityProof, Invariant, InvariantClass,
41 InvariantResult, LamportClock, MerkleRoot, PackId, RunResult, StreamingCallback, SuggestorId,
42 TenantId, TraceLinkId, TruthId, TypesBudgets, TypesIntentId, TypesIntentKind, TypesRootIntent,
43 TypesRunHooks,
44};
45pub use converge_pack::{
46 AgentEffect, Context, ContextKey, Fact, ProposedFact, Suggestor, ValidationError,
47};
48
49#[cfg(test)]
50mod tests {
51 use super::{
52 BudgetResource, StopReason,
53 formation::{Capability, FormationRequest, ProviderRequest, SuggestorRole},
54 };
55
56 #[test]
57 fn kernel_reexports_runtime_stop_and_budget_types() {
58 let stop = StopReason::converged();
59 assert!(matches!(stop, StopReason::Converged));
60 assert!(matches!(BudgetResource::Tokens, BudgetResource::Tokens));
61 }
62
63 #[test]
64 fn kernel_groups_formation_offering_api() {
65 let formation = FormationRequest {
66 id: "req-1".to_string(),
67 required_roles: vec![SuggestorRole::Analysis],
68 required_capabilities: vec![],
69 };
70 let provider = ProviderRequest {
71 id: "provider-1".to_string(),
72 required_capabilities: vec![Capability::Reasoning],
73 };
74
75 assert_eq!(formation.required_roles, vec![SuggestorRole::Analysis]);
76 assert_eq!(provider.required_capabilities, vec![Capability::Reasoning]);
77 }
78}