use cognee_embedding::{EmbeddingEngine, MockEmbeddingEngine};
use cognee_llm::Llm;
use cognee_llm::mock::{MissPolicy, RecordingLlm, ReplayLlm};
use std::sync::Arc;
#[allow(unused_imports)]
pub use cognee_test_utils::{
create_openai_adapter_from_env as create_adapter_from_env, llm_env_available, require_env,
};
#[allow(dead_code)]
pub fn fail_loudly_on_replay_miss(what: &str, err: &impl std::fmt::Display) {
if std::env::var("COGNEE_TEST_REPLAY").is_ok_and(|v| !v.is_empty()) {
panic!(
"{what} failed in replay mode — likely a stale/missing cassette entry; re-record cassettes. Error: {err}"
);
}
}
#[allow(dead_code)]
pub fn cassette_path(name: &str) -> String {
format!(
"{}/tests/fixtures/cassettes/{name}.json",
env!("CARGO_MANIFEST_DIR")
)
}
#[allow(dead_code)]
pub fn create_llm_from_env(cassette_name: &str) -> Arc<dyn Llm> {
let cassette = cassette_path(cassette_name);
if std::env::var("COGNEE_TEST_REPLAY").is_ok_and(|v| !v.is_empty()) {
let replay = ReplayLlm::from_path(&cassette)
.unwrap_or_else(|e| panic!("❌ Failed to load cassette {cassette}: {e}"))
.with_miss_policy(MissPolicy::Error);
return Arc::new(replay);
}
let adapter = create_adapter_from_env();
if std::env::var("COGNEE_RECORD_LLM").is_ok_and(|v| !v.is_empty()) {
return Arc::new(RecordingLlm::new(adapter, cassette));
}
adapter
}
#[allow(dead_code)]
pub fn create_deterministic_embedding_engine() -> Arc<dyn EmbeddingEngine> {
Arc::new(MockEmbeddingEngine::deterministic(384))
}