diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5c20e7e..e84cf75 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -81,7 +81,7 @@ jobs: restore-keys: plugin-rust-${{ runner.os }}- - name: Set up Python - uses: actions/setup-python@v6 + uses: actions/setup-python@v7 with: python-version: "3.9" cache: pip diff --git a/Cargo.lock b/Cargo.lock index 871c665..0610c98 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -456,9 +456,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.6.6" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "473c7e07f409a8d772161724aa8db6a765a2532a70f9667eeb7b49d3d02fbdca" +checksum = "aa8876b300ab35ba921adea3dfd70157a46249b33f95c9084ae5709785478946" dependencies = [ "clap_builder", "clap_derive", @@ -466,9 +466,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.6.6" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b48fea5a88e9ae728a2dcbedbfc0e730f7d60da42e1cb049a83c9fb8b789889" +checksum = "ec0797fb7aeb1406c84efac526901f7ec3ead2124f946b494e72879d4b54704d" dependencies = [ "anstream", "anstyle", @@ -487,9 +487,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.6.4" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d012d2b9d65aca7f18f4d9878a045bc17899bba951561ba5ec3c2ba1eed9a061" +checksum = "f9c751b79415d4e559e3d1fcf128e09e720eb673a06d26cf6f392d37d75b66e0" dependencies = [ "heck", "proc-macro2", @@ -962,12 +962,13 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.1.9" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" +checksum = "6e634e2e0ebac1ee034020da1ca582e17ffe4e0f5e985823721e168928136dcb" dependencies = [ "crc32fast", "miniz_oxide", + "zlib-rs", ] [[package]] @@ -1509,6 +1510,8 @@ checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", "hashbrown 0.17.1", + "serde", + "serde_core", ] [[package]] @@ -1824,9 +1827,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.9" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c" dependencies = [ "adler2", "simd-adler32", @@ -1865,7 +1868,7 @@ dependencies = [ "assert_cmd", "axum", "axum-server", - "base64 0.22.1", + "base64 0.23.1", "chrono", "clap", "clap_complete", @@ -1878,7 +1881,7 @@ dependencies = [ "notify", "predicates", "proptest", - "rand 0.9.5", + "rand 0.10.2", "ratatui", "regex", "reqwest", @@ -2671,9 +2674,9 @@ dependencies = [ [[package]] name = "rmcp" -version = "3.1.2" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8dddc5b1924b9a59fba420166160ca2c4663a4e01803e52eda33070f56d63c8" +checksum = "b23c62fe489ac1d401ab32688cfacac3737a8978dc3343e5361464c7724fd3cb" dependencies = [ "async-trait", "base64 0.23.1", @@ -2683,6 +2686,7 @@ dependencies = [ "http", "http-body", "http-body-util", + "indexmap", "pastey", "pin-project-lite", "rand 0.10.2", @@ -2703,9 +2707,9 @@ dependencies = [ [[package]] name = "rmcp-macros" -version = "3.1.2" +version = "3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6898e24cd16342b59bfa8a53c2c04b9cf62fc8a2cfea57b9c038b09984bfc521" +checksum = "d2ee366004e5f87c103be91c6c09337811517ae8d2f919ece9da7c21444b85c5" dependencies = [ "darling", "proc-macro2", @@ -4352,6 +4356,12 @@ dependencies = [ "syn 3.0.3", ] +[[package]] +name = "zlib-rs" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b268e58e7c693d7c271f93ffc4ba3b380412554231c85bf61ca7af91042a4112" + [[package]] name = "zmij" version = "1.0.23" diff --git a/Cargo.toml b/Cargo.toml index b361b3e..384ad8a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,22 +16,22 @@ path = "src/main.rs" anyhow = "1.0" axum = "0.8.9" axum-server = { version = "0.8.0", features = ["tls-rustls"] } -base64 = "0.22" +base64 = "0.23" chrono = { version = "0.4", features = ["serde"] } -clap = { version = "4.6.6", features = ["derive", "env", "string"] } +clap = { version = "4.6.7", features = ["derive", "env", "string"] } clap_complete = "4.6" crossterm = { version = "0.29", features = ["use-dev-tty"] } ed25519-dalek = { version = "3.0", features = ["rand_core"] } -flate2 = "1.1.9" +flate2 = "1.1.10" fs2 = "0.4" include_dir = "0.7" libc = "0.2" notify = "8.2" -rand = "0.9" +rand = "0.10" ratatui = "0.30.2" regex = "1.12" reqwest = { version = "0.13", default-features = false, features = ["json", "rustls"] } -rmcp = { version = "3.1.2", features = ["client", "transport-io", "transport-streamable-http-server", "transport-streamable-http-client-reqwest", "reqwest"] } +rmcp = { version = "3.4.0", features = ["client", "transport-io", "transport-streamable-http-server", "transport-streamable-http-client-reqwest", "reqwest"] } rusqlite = { version = "0.40.2", features = ["backup", "bundled"] } schemars = "1.0" serde = { version = "1.0", features = ["derive"] } diff --git a/plugins/obsidian/package-lock.json b/plugins/obsidian/package-lock.json index 7436ef3..12b5bae 100644 --- a/plugins/obsidian/package-lock.json +++ b/plugins/obsidian/package-lock.json @@ -10,7 +10,7 @@ "license": "MIT", "devDependencies": { "@types/node": "^26", - "builtin-modules": "^5.3.0", + "builtin-modules": "^5.4.0", "esbuild": "^0.28.2", "obsidian": "^1.4.11", "tslib": "^2.6.0", @@ -510,9 +510,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "26.6.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.1.tgz", - "integrity": "sha512-VqGJBMCtdhqkBUCcBLvywI0NJ+KLuVzgNnlBUNFOQjqVxzo2lxLUNg1DSey8+u2u6ktswSAxg+s68QLzWHNOuA==", + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.3.tgz", + "integrity": "sha512-dsqMQQoeTLqu9wynDD00q573mNzso3IdQOAfHRJqLCcmCFPoGo9A1bDpUcv/9tnKpErQWv9uKeGfl37EIS02Yg==", "dev": true, "license": "MIT", "dependencies": { @@ -530,9 +530,9 @@ } }, "node_modules/builtin-modules": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-5.3.0.tgz", - "integrity": "sha512-hMQUl2bUFG339QygPM97E+mc8OY1IAchORZxm4a/frcYwKzozMzRVDBwHW0NjOqGElLm2O37AVQE8ikxlZHrMQ==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-5.4.0.tgz", + "integrity": "sha512-JCWSCdun+4Ovd9BhM/Vtlmwb7oD6Wl4YiPRXXwhAuwlPhW1un/MKgXn7GZoFm53ginnoNzus69V8JWx0K393jg==", "dev": true, "license": "MIT", "engines": { @@ -593,9 +593,9 @@ } }, "node_modules/moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.31.0.tgz", + "integrity": "sha512-0acOTfMiWOheYS4eoWb80yYMb/JLvVv9SHbs2PehaDzfUG0Bw855SKyk0IKTnPGa5+U2bmi3W68l1+sGLX/pvw==", "dev": true, "license": "MIT", "engines": { diff --git a/plugins/obsidian/package.json b/plugins/obsidian/package.json index de98e51..689fbb8 100644 --- a/plugins/obsidian/package.json +++ b/plugins/obsidian/package.json @@ -11,10 +11,15 @@ "license": "MIT", "devDependencies": { "@types/node": "^26", - "builtin-modules": "^5.3.0", + "builtin-modules": "^5.4.0", "esbuild": "^0.28.2", "obsidian": "^1.4.11", "tslib": "^2.6.0", "typescript": "^5.4.0" + }, + "overrides": { + "obsidian": { + "moment": "^2.31.0" + } } } diff --git a/src/consolidation.rs b/src/consolidation.rs index 4a625ea..60b077a 100644 --- a/src/consolidation.rs +++ b/src/consolidation.rs @@ -19,7 +19,7 @@ use std::{path::PathBuf, time::Duration}; use anyhow::Result; use chrono::{DateTime, Utc}; -use rand::TryRngCore; +use rand::TryRng; use serde::{Deserialize, Serialize}; use tokio::task::JoinHandle; use tokio_util::sync::CancellationToken; @@ -124,7 +124,7 @@ fn get_rank(cx: &Cortex, key: &str) -> Result { } pub fn generate_rank() -> Result { - let mut rng = rand::rngs::OsRng; + let mut rng = rand::rngs::SysRng; loop { let mut sample = [0_u8; 1]; rng.try_fill_bytes(&mut sample)?; diff --git a/src/eventsig.rs b/src/eventsig.rs index 81c6899..97d0345 100644 --- a/src/eventsig.rs +++ b/src/eventsig.rs @@ -3,7 +3,7 @@ use std::io::Write; use anyhow::{Context, Result, bail}; use base64::{Engine, engine::general_purpose::STANDARD}; use ed25519_dalek::{Signature, Signer, SigningKey, Verifier, VerifyingKey}; -use rand::TryRngCore; +use rand::TryRng; use sha2::{Digest, Sha256}; use crate::event::Event; @@ -51,7 +51,7 @@ pub fn verify(public_key: &str, event: &Event, signature: &str) -> Result<()> { pub fn generate() -> Result<(SigningKey, String, String)> { let mut seed = [0u8; 32]; - rand::rngs::OsRng.try_fill_bytes(&mut seed)?; + rand::rngs::SysRng.try_fill_bytes(&mut seed)?; let key = SigningKey::from_bytes(&seed); let public = encode_public(&key.verifying_key()); Ok((key, public, STANDARD.encode(seed))) diff --git a/src/federation.rs b/src/federation.rs index 35f040a..3e7d3e2 100644 --- a/src/federation.rs +++ b/src/federation.rs @@ -8,7 +8,7 @@ use anyhow::{Context, Result, bail}; use chrono::Utc; use rmcp::{ ServiceExt, - model::{CallToolRequestParams, ClientInfo}, + model::{CallToolRequestParams, ClientConfig}, transport::{ StreamableHttpClientTransport, streamable_http_client::StreamableHttpClientTransportConfig, }, @@ -497,7 +497,7 @@ pub async fn sync_peer(cx: &mut Cortex, peer: &PeerEntry) -> Result .build() .context("building federation HTTP client")?; let transport = StreamableHttpClientTransport::with_client(http_client, transport_config); - let mut client = ClientInfo::default() + let mut client = ClientConfig::default() .serve(transport) .await .with_context(|| format!("connecting to peer {:?} at {endpoint}", peer.name))?; @@ -611,7 +611,7 @@ pub async fn sync_peer(cx: &mut Cortex, peer: &PeerEntry) -> Result async fn sync_usage( cx: &mut Cortex, - client: &rmcp::service::RunningService, + client: &rmcp::service::RunningService, peer: &PeerEntry, peer_id: &str, report: &mut SyncReport, diff --git a/src/mcp/http_role_tests.rs b/src/mcp/http_role_tests.rs index 9c00dc4..2981c5f 100644 --- a/src/mcp/http_role_tests.rs +++ b/src/mcp/http_role_tests.rs @@ -1,6 +1,6 @@ use super::*; use rmcp::{ - model::{CallToolRequestParams, ClientInfo}, + model::{CallToolRequestParams, ClientConfig}, transport::{ StreamableHttpClientTransport, streamable_http_client::StreamableHttpClientTransportConfig, }, @@ -100,7 +100,7 @@ async fn role_endpoints_enforce_discovery_calls_and_share_usage() { http.clone(), StreamableHttpClientTransportConfig::with_uri(endpoint).auth_header("test-secret"), ); - let client = ClientInfo::default().serve(transport).await.unwrap(); + let client = ClientConfig::default().serve(transport).await.unwrap(); let listed = client.list_all_tools().await.unwrap(); let mut actual = listed .iter()