use std::env;
use std::path::PathBuf;
use std::sync::Arc;
use mnemo_core::embedding::NoopEmbedding;
use mnemo_core::index::usearch::UsearchIndex;
use mnemo_core::query::MnemoEngine;
use mnemo_core::query::remember::RememberRequest;
use mnemo_core::storage::duckdb::DuckDbStorage;
const FROZEN_RECORDS: &[(&str, &str, f32)] = &[
("agent-fixture", "Project kickoff on 2026-02-01.", 0.7),
(
"agent-fixture",
"User prefers dark mode for the dashboard UI.",
0.4,
),
(
"agent-fixture",
"Quarterly revenue forecast landed at $42M.",
0.6,
),
(
"agent-fixture",
"DuckDB 1.5.2 release includes DuckLake v1 support.",
0.3,
),
(
"agent-fixture",
"MnemoMemoryToolServer ships in v0.3.4 against memory_20250818.",
0.5,
),
];
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let args: Vec<String> = env::args().collect();
if args.len() != 2 {
eprintln!("usage: gen_golden_fixtures <out.mnemo.db>");
std::process::exit(2);
}
let out: PathBuf = args[1].parse().unwrap_or_else(|_| PathBuf::from(&args[1]));
if out.exists() {
std::fs::remove_file(&out)?;
}
let storage = Arc::new(DuckDbStorage::open(&out)?);
let index = Arc::new(UsearchIndex::new(64)?);
let embedding = Arc::new(NoopEmbedding::new(64));
let engine = Arc::new(MnemoEngine::new(
storage,
index,
embedding,
"agent-fixture".to_string(),
None,
));
for (agent, content, importance) in FROZEN_RECORDS {
let req = RememberRequest {
content: (*content).to_string(),
agent_id: Some((*agent).to_string()),
memory_type: None,
scope: None,
importance: Some(*importance),
tags: Some(vec!["fixture".to_string()]),
metadata: None,
source_type: None,
source_id: None,
org_id: None,
thread_id: Some("fixture-thread".to_string()),
ttl_seconds: None,
related_to: None,
decay_rate: None,
created_by: None,
};
engine.remember(req).await?;
}
println!(
"wrote {} records to {}",
FROZEN_RECORDS.len(),
out.display()
);
Ok(())
}