#[doc(hidden)]
pub mod phrase;
#[doc(hidden)]
pub mod scoring;
#[doc(hidden)]
pub mod tokenizer;
pub mod import;
pub mod oplog;
pub mod types;
#[cfg(feature = "connect")]
#[doc(hidden)]
pub mod connect;
mod resolver_core;
mod resolver_intents;
mod resolver_learning;
mod resolver_metadata;
mod resolver_persist;
mod engine;
pub use engine::{
Band, Disposition, IntentMatch, MicroResolve, NamespaceHandle, ResolveResult, ResolveTrace,
};
pub const DEFAULT_THRESHOLD: f32 = 0.3;
pub const DEFAULT_GAP: f32 = 1.5;
pub(crate) type FxHashMap<K, V> = std::collections::HashMap<K, V, rustc_hash::FxBuildHasher>;
pub(crate) type FxHashSet<T> = std::collections::HashSet<T, rustc_hash::FxBuildHasher>;
pub use types::*;
use std::collections::HashMap;
#[doc(hidden)]
#[derive(serde::Serialize, serde::Deserialize, Clone, Debug)]
pub struct NegativeTrainingEntry {
pub timestamp: u64,
pub corpus_size: usize,
pub intents_affected: usize,
pub alpha: f32,
}
pub use oplog::{Op, OPLOG_MAX};
#[doc(hidden)]
#[derive(Clone)]
pub struct Resolver {
pub(crate) index: crate::scoring::IntentIndex,
training: HashMap<String, HashMap<String, Vec<String>>>,
intent_types: HashMap<String, IntentType>,
descriptions: HashMap<String, String>,
instructions: HashMap<String, String>,
persona: HashMap<String, String>,
sources: HashMap<String, IntentSource>,
targets: HashMap<String, IntentTarget>,
schemas: HashMap<String, serde_json::Value>,
guardrails: HashMap<String, Vec<String>>,
version: u64,
namespace_name: String,
namespace_description: String,
namespace_default_threshold: Option<f32>,
namespace_default_min_voting_tokens: Option<u32>,
domain_descriptions: HashMap<String, String>,
negative_training_log: Vec<NegativeTrainingEntry>,
#[doc(hidden)]
pub oplog: std::collections::VecDeque<(u64, crate::oplog::Op)>,
}
impl Default for Resolver {
fn default() -> Self {
Self::new()
}
}