systemprompt_evaluation/
extension.rs1use systemprompt_extension::prelude::*;
9
10#[derive(Debug, Clone, Copy, Default)]
11pub struct EvaluationExtension;
12
13impl Extension for EvaluationExtension {
14 fn metadata(&self) -> ExtensionMetadata {
15 ExtensionMetadata {
16 id: "evaluation",
17 name: "Evaluation",
18 version: env!("CARGO_PKG_VERSION"),
19 }
20 }
21
22 fn schemas(&self) -> Vec<SchemaDefinition> {
23 vec![
24 SchemaDefinition::new("eval_runs", include_str!("../schema/eval_runs.sql"))
25 .with_required_columns(vec!["id".into(), "kind".into(), "status".into()]),
26 SchemaDefinition::new("eval_cases", include_str!("../schema/eval_cases.sql"))
27 .with_required_columns(vec!["id".into(), "name".into(), "prompt_body".into()]),
28 SchemaDefinition::new("eval_results", include_str!("../schema/eval_results.sql"))
29 .with_required_columns(vec!["id".into(), "run_id".into(), "verdict".into()]),
30 SchemaDefinition::new("eval_pairs", include_str!("../schema/eval_pairs.sql"))
31 .with_required_columns(vec!["id".into(), "run_id".into(), "winner".into()]),
32 SchemaDefinition::new(
33 "eval_judge_calls",
34 include_str!("../schema/eval_judge_calls.sql"),
35 )
36 .with_required_columns(vec!["conversation_id".into()]),
37 SchemaDefinition::new("eval_rubrics", include_str!("../schema/eval_rubrics.sql"))
38 .with_required_columns(vec!["id".into(), "name".into()]),
39 ]
40 }
41
42 fn dependencies(&self) -> Vec<&'static str> {
43 vec!["ai"]
44 }
45
46 fn migrations(&self) -> Vec<Migration> {
47 extension_migrations!()
48 }
49}
50
51register_extension!(EvaluationExtension);