cargo-ai 0.3.0

Build lightweight AI agents with Cargo. Powered by Rust. Declared in JSON.
#[path = "../templates/build_support.rs"]
#[allow(dead_code)]
mod build_support;

fn minimal_agentcfg(version: &str) -> String {
    format!(
        r#"{{
  "version": "{version}",
  "inputs": [
    {{ "type": "text", "text": "Return a numeric answer." }}
  ],
  "agent_schema": {{
    "type": "object",
    "properties": {{
      "answer": {{
        "type": "integer"
      }}
    }}
  }},
  "actions": []
}}"#
    )
}

#[test]
fn accepts_date_revision_schema_version() {
    let parsed = build_support::generate_agent_model_from_str(&minimal_agentcfg("2026-03-03.r1"));
    assert!(parsed.is_ok());
}

#[test]
fn rejects_legacy_semver_schema_version() {
    let err = build_support::generate_agent_model_from_str(&minimal_agentcfg("0.0.10"))
        .expect_err("semver-style schema versions should be rejected")
        .to_string();

    assert!(err.contains("$.version"));
    assert!(err.contains("YYYY-MM-DD.rN"));
}

#[test]
fn rejects_invalid_calendar_dates() {
    let err = build_support::generate_agent_model_from_str(&minimal_agentcfg("2025-02-29.r1"))
        .expect_err("invalid dates should be rejected")
        .to_string();

    assert!(err.contains("$.version"));
    assert!(err.contains("YYYY-MM-DD.rN"));
}