#![doc = include_str!("../Documentation.md")]
#![forbid(unsafe_code)]
pub fn verify_manifest(manifest: &str) {
for required in [
"kcode-k1-daemon-http-composition = \"0.1.2\"",
"kcode-k1-daemon-provider-config = \"0.2.1\"",
"kcode-k1-text-inference = \"0.1.0\"",
"kcode-k1-daemon-lib-testkit = \"0.5.8\"",
] {
assert!(manifest.contains(required), "daemon manifest selection");
}
for stale in [
"kcode-k1-daemon-http-composition = \"0.1.1\"",
"kcode-k1-daemon-provider-config = \"0.2.0\"",
"kcode-k1-daemon-lib-testkit = \"0.5.7\"",
] {
assert!(!manifest.contains(stale), "stale daemon manifest selection");
}
}
pub fn verify_source(source: &str) {
for required in [
"text_inference_config(",
"CodexTextInference::new(",
"text_inference: text_inference as Arc<dyn TextInference>",
"kcode_k1_daemon_http_composition::prepare(",
] {
assert!(
source.contains(required),
"daemon text-inference composition"
);
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn accepts_current_contract() {
verify_manifest(
"kcode-k1-daemon-http-composition = \"0.1.2\"\n\
kcode-k1-daemon-provider-config = \"0.2.1\"\n\
kcode-k1-text-inference = \"0.1.0\"\n\
kcode-k1-daemon-lib-testkit = \"0.5.8\"",
);
verify_source(
"text_inference_config( CodexTextInference::new( \
text_inference: text_inference as Arc<dyn TextInference> \
kcode_k1_daemon_http_composition::prepare(",
);
}
}