diff --git a/Cargo.lock b/Cargo.lock index 4364b2a..5d00542 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -653,13 +653,13 @@ dependencies = [ [[package]] name = "displaydoc" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" +checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.119", + "syn 3.0.3", ] [[package]] @@ -987,9 +987,9 @@ checksum = "62adaabb884c94955b19907d60019f4e145d091c75345379e70d1ee696f7854f" [[package]] name = "http" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425" +checksum = "918d3568bebf352712bc2ef3d46a8bcf1a75b373be6539de198e9105cbbf9ce0" dependencies = [ "bytes", "itoa", @@ -1137,9 +1137,9 @@ dependencies = [ [[package]] name = "icalendar" -version = "0.17.12" +version = "0.17.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3478c3b7a2411366daf20457373174bff6cfbc1089333038b1f95594d23d985" +checksum = "8fda1b791865374063fa57e84adfe3823c2d5cd5968d721533be4556a24cffd8" dependencies = [ "chrono", "chrono-tz", @@ -1542,6 +1542,8 @@ checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" [[package]] name = "mcp_server_collection" version = "0.2.2" +source = "sparse+https://git.mboemer.de/api/packages/milan/cargo/" +checksum = "875dadf54b4c4ddb6c11d724c41991011c8d24a5fde23c69d7c1e91aff913acf" dependencies = [ "axum", "chrono", @@ -1565,9 +1567,7 @@ dependencies = [ [[package]] name = "mcp_server_collection" -version = "0.2.2" -source = "sparse+https://git.mboemer.de/api/packages/milan/cargo/" -checksum = "875dadf54b4c4ddb6c11d724c41991011c8d24a5fde23c69d7c1e91aff913acf" +version = "0.2.3" dependencies = [ "axum", "chrono", @@ -1577,7 +1577,7 @@ dependencies = [ "icalendar", "libdav", "own_assist_common 0.3.0", - "rmcp 2.2.0", + "rmcp 3.0.1", "serde", "thiserror 2.0.19", "tokio", @@ -1987,7 +1987,7 @@ dependencies = [ [[package]] name = "own_assist_cli" -version = "0.3.0" +version = "0.3.1" dependencies = [ "base64 0.23.0", "clap", @@ -1996,17 +1996,15 @@ dependencies = [ "dialoguer", "indicatif", "log", - "mcp_server_collection 0.2.2 (sparse+https://git.mboemer.de/api/packages/milan/cargo/)", - "ollama-rs", - "own_assist_common 0.4.1", - "own_mcp 0.1.1", - "rmcp 2.2.0", + "mcp_server_collection 0.2.2", + "own_assist_common 0.4.2", + "own_mcp 0.2.0", + "rmcp 3.0.1", "rodio", "serde", "thiserror 2.0.19", "tokio", "tokio-util", - "url", ] [[package]] @@ -2024,9 +2022,9 @@ dependencies = [ [[package]] name = "own_assist_common" -version = "0.4.1" +version = "0.4.2" source = "sparse+https://git.mboemer.de/api/packages/milan/cargo/" -checksum = "324156da8ebc00f6d5b6bd7709ffdf4dfe56bb0bb274315c133060d59ac8212b" +checksum = "fa329dcbbc05984ff2f2cc8cad5d8ea09939e3cb04ae4c1d41bfa402faa27c70" dependencies = [ "log", "ollama-rs", @@ -2039,10 +2037,11 @@ dependencies = [ [[package]] name = "own_assist_common" -version = "0.4.2" +version = "0.4.3" dependencies = [ "log", "ollama-rs", + "own_mcp 0.2.0", "serde", "thiserror 2.0.19", "toml", @@ -2050,30 +2049,11 @@ dependencies = [ "url", ] -[[package]] -name = "own_mcp" -version = "0.1.1" -source = "sparse+https://git.mboemer.de/api/packages/milan/cargo/" -checksum = "25d29e333d7fdd062f351598ed9761a10b7bb3c941259a66ce81cc12f484ecbe" -dependencies = [ - "bytes", - "cpal 0.18.1", - "env_logger", - "hound", - "log", - "ollama-rs", - "rand 0.10.2", - "reqwest 0.13.4", - "rmcp 2.2.0", - "serde", - "thiserror 2.0.19", - "tokio", - "url", -] - [[package]] name = "own_mcp" version = "0.2.0" +source = "sparse+https://git.mboemer.de/api/packages/milan/cargo/" +checksum = "427641dafd06874e48a145761005779421db27710698fe0ac8fdfd27b0e3b46e" dependencies = [ "async-trait", "bytes", @@ -2085,7 +2065,27 @@ dependencies = [ "ollama-rs", "rand 0.10.2", "reqwest 0.13.4", - "rmcp 3.0.0", + "rmcp 3.0.1", + "serde", + "thiserror 2.0.19", + "tokio", + "url", +] + +[[package]] +name = "own_mcp" +version = "0.2.1" +dependencies = [ + "async-trait", + "bytes", + "chrono", + "cpal 0.18.1", + "hound", + "log", + "ollama-rs", + "rand 0.10.2", + "reqwest 0.13.4", + "rmcp 3.0.1", "serde", "thiserror 2.0.19", "tokio", @@ -2527,12 +2527,9 @@ dependencies = [ "http", "http-body", "http-body-util", - "oauth2", "pastey", "pin-project-lite", - "process-wrap", "rand 0.10.2", - "reqwest 0.13.4", "rmcp-macros 2.2.0", "schemars", "serde", @@ -2544,15 +2541,14 @@ dependencies = [ "tokio-util", "tower-service", "tracing", - "url", "uuid", ] [[package]] name = "rmcp" -version = "3.0.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcd2b6dd3b18129368955f32661a7718969e8c152c7d8866434c09cf15a512e0" +checksum = "3797d226787327b35b0b6f9e878fe55f3af2bb4daf916c0411079885454042f0" dependencies = [ "async-trait", "base64 0.23.0", @@ -2560,12 +2556,15 @@ dependencies = [ "chrono", "futures", "http", + "http-body", + "http-body-util", "oauth2", "pastey", "pin-project-lite", "process-wrap", + "rand 0.10.2", "reqwest 0.13.4", - "rmcp-macros 3.0.0", + "rmcp-macros 3.0.1", "schemars", "serde", "serde_json", @@ -2574,6 +2573,7 @@ dependencies = [ "tokio", "tokio-stream", "tokio-util", + "tower-service", "tracing", "url", "uuid", @@ -2594,9 +2594,9 @@ dependencies = [ [[package]] name = "rmcp-macros" -version = "3.0.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1aa4b9345795260a43fc23d6d05e096407c8b953903f673af7c4404b49fb2d6" +checksum = "a8f5bc0c6851a20cd627ef4b90defb79f39a261c467de52af5d38000d7979c52" dependencies = [ "darling", "proc-macro2", @@ -2679,9 +2679,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.42" +version = "0.23.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c54fcab019b409d04215d3a17cb438fd7fbf192ee61461f20f4fe18704bc138" +checksum = "0283386ce02abc0151e1761d08802dfe86c173b0b494af5cbc086574e453da06" dependencies = [ "aws-lc-rs", "log", @@ -2785,9 +2785,9 @@ dependencies = [ [[package]] name = "schemars" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc" +checksum = "687274d293b6cdc6e73e0fee520bf2049650090d7164f87672d212a3c530cf4a" dependencies = [ "chrono", "dyn-clone", @@ -2799,14 +2799,14 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d115b50f4aaeea07e79c1912f645c7513d81715d0420f8bc77a18c6260b307f" +checksum = "d98c67716b46af2f0b8cf752abc930f6f9aecfbf671ecfb531db8a31dbe4e2ba" dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.119", + "syn 3.0.3", ] [[package]] @@ -2876,13 +2876,13 @@ dependencies = [ [[package]] name = "serde_derive_internals" -version = "0.29.1" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +checksum = "f852137cce035d6a4df67ccce505ff6b3e9fd3a10e3e52b24dc71e650bb1a9bd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.119", + "syn 3.0.3", ] [[package]] @@ -3370,13 +3370,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.7.1" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6328af13490e73a9b4694030fafd93f8c8c6a9dede33e821c3fc63eddf8042ba" +checksum = "78773a2a397f451582ce068015985c33193cf6dea8b74d2a639fe457b2f07b0e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.119", + "syn 3.0.3", ] [[package]] @@ -3426,9 +3426,9 @@ dependencies = [ [[package]] name = "toml" -version = "1.1.3+spec-1.1.0" +version = "1.1.4+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53c96ecdfa941c8fc4fcaed14f99ada8ebed502eef533015095a07e3301d4c3c" +checksum = "3aace63f4bbcdfc2c965b059de67119c89c4017a70d633be6c104910f67056f5" dependencies = [ "indexmap", "serde_core", @@ -3462,9 +3462,9 @@ dependencies = [ [[package]] name = "toml_parser" -version = "1.1.2+spec-1.1.0" +version = "1.1.3+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" +checksum = "1d38ac1cf9b95face32296c0a3ede1fdc270627c9d9c02a7274dd6d960dc4d56" dependencies = [ "winnow", ] diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 5783a60..cd9bc1c 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -1,17 +1,15 @@ [package] name = "own_assist_cli" -version = "0.3.0" +version = "0.3.1" edition = "2024" license = "GPL-3.0" [dependencies] -ollama-rs = { version = "0.3.4", features = ["macros", "headers"] } tokio = { version = "1.50.0", features = ["rt", "rt-multi-thread", "macros", "io-std"] } -rmcp = { version = "2.2.0", features = ["client"] } +rmcp = { version = "3.0.1", features = ["client"] } log = { version = "0.4.29" } serde = { version = "1.0.228", features = ["derive"] } -url = "2.5.8" -own_mcp = { version = "0.1.1", registry = "gitea" } +own_mcp = { version = "0.2.0", registry = "gitea" } own_assist_common = { version = "0.4.1", registry = "gitea" } mcp_server_collection = { version = "0.2.0", registry = "gitea", optional = true} thiserror = "2.0.18" diff --git a/cli/src/main.rs b/cli/src/main.rs index 69909f4..888efe3 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -116,7 +116,7 @@ async fn main() { .inspect_err(exit_msg!("failed creating MCP clients")) .unwrap(); - let mut agent_chat = AgentChat::new(ollama, model_name.clone(), mcp_clients) + let mut agent_chat = AgentChat::new(Box::new(ollama), model_name.clone(), mcp_clients) .await .inspect_err(exit_msg!("failed to create agent")) .unwrap(); diff --git a/common/Cargo.toml b/common/Cargo.toml index 2d6617f..d062cfe 100644 --- a/common/Cargo.toml +++ b/common/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "own_assist_common" -version = "0.4.2" +version = "0.4.3" edition = "2024" license = "GPL-3.0" @@ -11,4 +11,5 @@ serde = { version = "1.0.228", features = ["derive"] } log = "0.4.29" tracing-subscriber = { version = "0.3.23", features = ["env-filter"]} url = { version = "2.5.8", features = ["serde"] } -ollama-rs = { version = "0.3.6", features = ["headers"]} \ No newline at end of file +ollama-rs = { version = "0.3.6", features = ["headers"]} +own_mcp = { version = "0.2.0", registry = "gitea" } \ No newline at end of file diff --git a/common/src/config.rs b/common/src/config.rs index d88dda9..a2cff7c 100644 --- a/common/src/config.rs +++ b/common/src/config.rs @@ -1,6 +1,7 @@ use ollama_rs::error::OllamaError; use ollama_rs::models::ModelOptions; use ollama_rs::models::create::{CreateModelRequest, CreateModelStatus}; +use own_mcp::mcp::Mistral; use serde::Deserialize; use url::Url; @@ -82,6 +83,20 @@ pub struct OllamaModelConfig { pub temperature: Option, } +#[derive(Debug, Clone, Deserialize)] +pub struct MistralConfig { + #[serde(rename = "api-key")] + pub api_key: String, + #[serde(rename = "system-prompt")] + pub system_prompt: Option, +} + +impl MistralConfig { + pub fn mistral(self) -> Mistral { + Mistral::new(self.api_key).with_system_prompt(self.system_prompt) + } +} + #[derive(Debug, Clone, Deserialize)] pub struct MCPClientConfig { pub name: Option, diff --git a/mcp_server_collection/Cargo.toml b/mcp_server_collection/Cargo.toml index e5de278..5c43e6f 100644 --- a/mcp_server_collection/Cargo.toml +++ b/mcp_server_collection/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "mcp_server_collection" -version = "0.2.2" +version = "0.2.3" edition = "2024" license = "GPL-3.0" [dependencies] -rmcp = { version = "2.2.0", features = ["server", "transport-streamable-http-server-session", "transport-streamable-http-server"] } +rmcp = { version = "3.0.1", features = ["server", "transport-streamable-http-server-session", "transport-streamable-http-server"] } chrono = "0.4.44" axum = "0.8.9" serde = { version = "1.0.228", features = ["derive"] } diff --git a/own_mcp/Cargo.toml b/own_mcp/Cargo.toml index 515ff24..471b152 100644 --- a/own_mcp/Cargo.toml +++ b/own_mcp/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "own_mcp" -version = "0.2.0" +version = "0.2.1" edition = "2024" license = "GPL-3.0" @@ -8,9 +8,8 @@ license = "GPL-3.0" ollama-rs = {version = "0.3.6", features = ["macros", "headers"]} reqwest = { version = "0.13.2", features = ["stream", "multipart", "form"] } tokio = { version = "1.50.0", features = ["rt", "rt-multi-thread", "macros"] } -rmcp = {version="3.0.0", features = ["transport-streamable-http-client-reqwest", "reqwest", "client", "auth", "transport-child-process"]} +rmcp = {version="3.0.1", features = ["transport-streamable-http-client-reqwest", "reqwest", "client", "auth", "transport-child-process"]} log = {version = "0.4.29"} -env_logger = "0.11.11" serde = { version = "1.0.229", features = ["derive"] } thiserror = "2.0.19" url = "2.5.8"