jules-core 0.1.1

Core abstractions and traits for Jules-SDK
use jules_core::builder::{ClientBuilder, ConversationBuilder, MessageBuilder, RequestBuilder};
use jules_core::message::Role;
use std::time::Duration;

#[test]
fn test_builder_integration() {
    let _client = ClientBuilder::new()
        .base_url("https://api.example.com")
        .auth_token("secret")
        .timeout(Duration::from_secs(10))
        .build()
        .unwrap();

    let message1 = MessageBuilder::new()
        .role(Role::System)
        .content("You are a helpful assistant.")
        .build();

    let message2 = MessageBuilder::new()
        .role(Role::User)
        .content("What is the capital of France?")
        .build();

    let conversation = ConversationBuilder::new()
        .add_messages(vec![message1, message2])
        .build();

    let request = RequestBuilder::new()
        .conversation(conversation)
        .add_message(
            MessageBuilder::new()
                .role(Role::User)
                .content("And Germany?")
                .build(),
        )
        .build();

    assert_eq!(request.conversation.messages().len(), 3);
    assert_eq!(
        request.conversation.messages()[0].content(),
        "You are a helpful assistant."
    );
    assert_eq!(
        request.conversation.messages()[1].content(),
        "What is the capital of France?"
    );
    assert_eq!(request.conversation.messages()[2].content(), "And Germany?");
}