Skip to main content

converge_kernel/
lib.rs

1// Copyright 2024-2026 Reflective Labs
2// SPDX-License-Identifier: MIT
3
4//! # Converge Kernel
5//!
6//! This crate is the curated in-process execution API for Converge.
7//! Consumers embed the kernel here; they author packs in `converge-pack`
8//! and use `converge-model` for shared semantic types.
9
10pub mod formation {
11    //! Grouped offering API for self-assembling formations.
12    //!
13    //! The stable pattern is:
14    //! - semantics in `converge-model`
15    //! - authoring in `converge-pack`
16    //! - runnable machinery in `converge-kernel`
17
18    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}