Skip to main content

atelier_domain/
lib.rs

1// Copyright 2024-2026 Reflective Labs
2// SPDX-License-Identifier: MIT
3// See LICENSE file in the project root for full license information.
4
5//! Kernel domain agents and use cases for Converge.
6//!
7//! This crate contains the kernel packs and pure constraint-satisfaction
8//! use cases that form the foundation of Converge.
9//!
10//! # Kernel Packs
11//!
12//! - [`packs::money`]: Financial transaction substrate
13//! - [`packs::trust`]: Audit/access/provenance substrate
14//! - [`packs::delivery`]: Promise fulfillment protocol
15//! - [`packs::data_metrics`]: Instrumentation substrate
16//!
17//! # Use Cases
18//!
19//! - [`ask_converge`]: Query interface
20//! - [`meeting_scheduler`]: Pure constraint satisfaction (kernel)
21//! - [`resource_routing`]: Pure constraint satisfaction (kernel)
22//! - [`drafting`]: Content drafting (kernel utility)
23//! - [`form_filler`]: Form filling agents (kernel utility)
24
25use converge_core::{ContextKey, ProposalId, ProposedFact};
26
27pub mod ask_converge;
28pub mod domain_invariants;
29pub mod drafting;
30pub mod drafting_llm;
31pub mod eval_agent;
32pub mod evals;
33mod flow_governance;
34pub mod form_filler;
35pub mod meeting_scheduler;
36pub mod packs;
37pub mod resource_routing;
38
39pub mod llm_utils;
40pub mod mock;
41pub mod retrieval;
42
43// LLM-enabled versions of use cases
44pub mod meeting_scheduler_llm;
45
46pub use ask_converge::{AskConvergeAgent, GroundedAnswerInvariant, RecallNotEvidenceInvariant};
47pub use drafting::{DraftingComposerAgent, DraftingResearchAgent};
48
49pub use form_filler::{
50    CompletenessAgent, FieldMappingAgent, FillPlanAgent, FormSchemaAgent, NormalizationAgent,
51    ProposalEmitterAgent, RiskClassifierAgent,
52};
53
54pub use meeting_scheduler::{
55    // Agents
56    AvailabilityRetrievalAgent,
57    ConflictDetectionAgent,
58    // Invariants
59    RequireParticipantAvailability,
60    RequirePositiveDuration,
61    RequireValidSlot,
62    SlotOptimizationAgent,
63    TimeZoneNormalizationAgent,
64    WorkingHoursConstraintAgent,
65};
66
67pub use resource_routing::{
68    // Agents
69    ConstraintValidationAgent,
70    FeasibilityAgent,
71    // Invariants
72    RequireAllTasksAssigned,
73    RequireCapacityRespected,
74    RequireValidDefinitions,
75    ResourceRetrievalAgent,
76    SolverAgent,
77    TaskRetrievalAgent,
78};
79
80pub use domain_invariants::{AuditTrailRequired, AuthorityRequired};
81
82// Pack-specific evals
83pub use evals::{
84    // Trust Pack
85    AccessComplianceEval,
86    AuditCoverageEval,
87    // Data Metrics Pack
88    DashboardSourceEval,
89    // Money Pack
90    InvoiceAccuracyEval,
91    // General kernel evals
92    MeetingScheduleFeasibilityEval,
93    MetricDefinitionQualityEval,
94    PaymentReconciliationEval,
95    // Delivery Pack
96    PromiseFulfillmentEval,
97    RbacEnforcementEval,
98    ScopeCreepDetectionEval,
99};
100
101pub(crate) fn proposal(
102    provenance: impl Into<String>,
103    key: ContextKey,
104    id: impl Into<String>,
105    content: impl Into<String>,
106) -> ProposedFact {
107    ProposedFact::new(key, ProposalId::new(id.into()), content, provenance)
108}