pub mod formation {
pub use converge_model::formation::{
FormationPlan, FormationRequest, ProfileSnapshot, RoleAssignment, SuggestorCapability,
SuggestorProfile, SuggestorRole,
};
pub use converge_optimization::suggestors::FormationAssemblySuggestor;
pub use converge_provider::ProviderSelectionSuggestor;
pub use converge_provider_api::{
Capability, CapabilityAssignment, CostClass, LatencyClass, ProviderAssignment,
ProviderRequest,
};
}
pub use converge_core::gates::hitl::{GateDecision, TimeoutAction, TimeoutPolicy};
pub use converge_core::gates::{
AuthorityLevel, FlowAction, FlowGateAuthorizer, FlowGateContext, FlowGateInput,
FlowGateOutcome, FlowGatePrincipal, FlowGateResource, FlowPhase, StopReason,
};
pub use converge_core::{
ApprovalPointId, BackendId, Budget, BudgetResource, ChainId, ConstraintName, ConstraintValue,
ContextState, ConvergeError, ConvergeResult, CorrelationId, Criterion, CriterionEvaluator,
CriterionId, CriterionOutcome, CriterionResult, DecisionStep, Engine, EngineHitlPolicy,
EventId, EventQuery, ExperienceEvent, ExperienceEventEnvelope, ExperienceEventKind,
ExperienceEventObserver, ExperienceStore, HitlPause, IntegrityProof, Invariant, InvariantClass,
InvariantResult, LamportClock, MerkleRoot, PackId, RunResult, StreamingCallback, SuggestorId,
TenantId, TraceLinkId, TruthId, TypesBudgets, TypesIntentId, TypesIntentKind, TypesRootIntent,
TypesRunHooks,
};
pub use converge_pack::{
AgentEffect, Context, ContextKey, Fact, ProposedFact, Suggestor, ValidationError,
};
#[cfg(test)]
mod tests {
use super::{
BudgetResource, StopReason,
formation::{Capability, FormationRequest, ProviderRequest, SuggestorRole},
};
#[test]
fn kernel_reexports_runtime_stop_and_budget_types() {
let stop = StopReason::converged();
assert!(matches!(stop, StopReason::Converged));
assert!(matches!(BudgetResource::Tokens, BudgetResource::Tokens));
}
#[test]
fn kernel_groups_formation_offering_api() {
let formation = FormationRequest {
id: "req-1".to_string(),
required_roles: vec![SuggestorRole::Analysis],
required_capabilities: vec![],
};
let provider = ProviderRequest {
id: "provider-1".to_string(),
required_capabilities: vec![Capability::Reasoning],
};
assert_eq!(formation.required_roles, vec![SuggestorRole::Analysis]);
assert_eq!(provider.required_capabilities, vec![Capability::Reasoning]);
}
}