halo-agent 0.1.0

Halo Agent and Workflow execution kernel
use super::*;

#[test]
fn planned_task_instruction_is_merged_into_the_existing_system_message() {
    let mut system = Message::new(Role::System);
    system.content.push(Part {
        r#type: "text".into(),
        data: part_data(json!({"value": "parent instructions"})),
    });
    let user = Message::new(Role::User);
    let input = Message::new(Role::User);

    let messages = task_messages(Messages::new([system, user]), input);

    assert_eq!(
        messages
            .0
            .iter()
            .map(|message| message.role.clone())
            .collect::<Vec<_>>(),
        [Role::System, Role::User, Role::User]
    );
    assert_eq!(messages.0[0].content.len(), 2);
    assert_eq!(
        messages.0[0].content[0].data["value"],
        "parent instructions"
    );
    assert!(
        messages.0[0].content[1].data["value"]
            .as_str()
            .unwrap()
            .contains("current planned task objective")
    );
}