From 14a817acf02705471674ba9e8b6f6c15809461ef Mon Sep 17 00:00:00 2001 From: Steven Enamakel Date: Fri, 18 Sep 2026 16:24:06 +0300 Subject: [PATCH 1/8] refactor: consume split TinyInference crates Co-authored-by: Medulla --- Cargo.lock | 12 ++++++++---- Cargo.toml | 4 ++-- crates/tinymemory-core/Cargo.toml | 2 +- crates/tinymemory-core/src/chat.rs | 4 ++-- crates/tinymemory-core/src/chat_host.rs | 4 ++-- crates/tinymemory-core/src/embedding_adapter.rs | 4 ++-- crates/tinymemory-core/src/store/factories.rs | 2 +- crates/tinymemory-core/src/store/factories_tests.rs | 11 +++++++---- crates/tinymemory-core/src/test_seams.rs | 4 ++-- .../tinymemory-core/src/tree/score/embed/factory.rs | 2 +- crates/tinymemory-core/src/tree/score/embed/mod.rs | 2 +- .../tinymemory-core/src/tree/tree_runtime/engine.rs | 4 ++-- .../src/tree/tree_runtime/engine_tests.rs | 6 +++--- crates/tinymemory-module/Cargo.lock | 12 ++++++++---- crates/tinymemory-module/Cargo.toml | 6 +++--- crates/tinymemory-module/src/chat.rs | 8 ++++---- crates/tinymemory-module/src/chat_test.rs | 6 +++--- crates/tinymemory-module/tests/module_e2e.rs | 10 +++++----- vendor/tinycortex | 2 +- vendor/tinyinference | 2 +- 20 files changed, 59 insertions(+), 48 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 89eb0def..51604445 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1740,7 +1740,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.3.4", + "getrandom 0.4.3", "once_cell", "rustix", "windows-sys 0.61.2", @@ -1793,7 +1793,7 @@ dependencies = [ "sha2 0.10.9", "thiserror", "tinycortex-api", - "tinyinference", + "tinyinference-core", "tokio", "toml", "tracing", @@ -1809,12 +1809,14 @@ dependencies = [ ] [[package]] -name = "tinyinference" +name = "tinyinference-core" version = "0.2.1" dependencies = [ + "anyhow", "async-trait", "bytes", "futures", + "hex", "httpdate", "reqwest", "serde", @@ -1822,6 +1824,8 @@ dependencies = [ "sha2 0.11.0", "thiserror", "tokio", + "tracing", + "url", ] [[package]] @@ -1906,7 +1910,7 @@ dependencies = [ "thiserror", "tinycortex", "tinycortex-api", - "tinyinference", + "tinyinference-core", "tinymemory", "tinymemory-api", "tinymemory-conformance", diff --git a/Cargo.toml b/Cargo.toml index 64aee772..c650daaa 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -78,7 +78,7 @@ tinymemory-api = { path = "crates/tinymemory-api" } # source onto the same checkout `tinymemory-core` resolves through crates.io so # both crates share one trait identity. [patch."https://github.com/tinyhumansai/tinyinference"] -tinyinference = { path = "vendor/tinyinference/crates/tinyinference" } +tinyinference-core = { path = "vendor/tinyinference/crates/tinyinference-core" } [patch.crates-io] tinycortex = { path = "vendor/tinycortex" } @@ -86,7 +86,7 @@ tinycortex-api = { path = "vendor/tinycortex/api" } # `tinymemory-core` names the provider-neutral chat and embedding contracts # from TinyInference. It is not published, so standalone builds resolve the # version requirement to the pinned checkout here. -tinyinference = { path = "vendor/tinyinference/crates/tinyinference" } +tinyinference-core = { path = "vendor/tinyinference/crates/tinyinference-core" } [profile.release] # Cross-crate optimization and smaller, faster binaries for release builds. diff --git a/crates/tinymemory-core/Cargo.toml b/crates/tinymemory-core/Cargo.toml index d9840c09..d8328125 100644 --- a/crates/tinymemory-core/Cargo.toml +++ b/crates/tinymemory-core/Cargo.toml @@ -40,7 +40,7 @@ tinycortex-api = { version = "0.1" } # Provider-neutral chat-model and embedding primitives used by the tree # summarizer and embedding factory. Agent runtime and session behavior do not # belong in the memory layer. -tinyinference = "0.2" +tinyinference-core = "0.2" anyhow = "1.0" async-trait = "0.1" # NO `git2` HERE, DELIBERATELY — do not add it back. `diff/` holds the ops and diff --git a/crates/tinymemory-core/src/chat.rs b/crates/tinymemory-core/src/chat.rs index ae3137ce..7ef830fb 100644 --- a/crates/tinymemory-core/src/chat.rs +++ b/crates/tinymemory-core/src/chat.rs @@ -13,8 +13,8 @@ use async_trait::async_trait; use crate::chat_host::{create_chat_model_with_model_id, provider_for_role, UsageInfo}; use crate::Config; -use tinyinference::message::Message; -use tinyinference::model::{ChatModel, ModelRequest}; +use tinyinference_core::message::Message; +use tinyinference_core::model::{ChatModel, ModelRequest}; /// One pair of prompt messages handed to the memory LLM backend. #[derive(Debug, Clone)] diff --git a/crates/tinymemory-core/src/chat_host.rs b/crates/tinymemory-core/src/chat_host.rs index 076779f4..e8773e1b 100644 --- a/crates/tinymemory-core/src/chat_host.rs +++ b/crates/tinymemory-core/src/chat_host.rs @@ -8,7 +8,7 @@ //! //! # Why this trait is here and not in `tinymemory-api` //! -//! It names [`tinyinference::model::ChatModel`], and the contract crate is +//! It names [`tinyinference_core::model::ChatModel`], and the contract crate is //! deliberately dependency-light — it must not pull in an inference SDK. This //! crate already depends on TinyInference, so it is the one place that can name //! both the model trait and the config seam. The host implements it here. @@ -20,7 +20,7 @@ use std::sync::Arc; use parking_lot::RwLock; -use tinyinference::model::{ChatModel, ModelResponse}; +use tinyinference_core::model::{ChatModel, ModelResponse}; use crate::Config; diff --git a/crates/tinymemory-core/src/embedding_adapter.rs b/crates/tinymemory-core/src/embedding_adapter.rs index 037f33c2..985e4fbc 100644 --- a/crates/tinymemory-core/src/embedding_adapter.rs +++ b/crates/tinymemory-core/src/embedding_adapter.rs @@ -2,14 +2,14 @@ //! model trait onto the seam's [`EmbeddingProvider`]. //! //! It lives in this crate rather than in `tinymemory-api` because the contract -//! crate must stay dependency-light and cannot name `tinyinference`; and rather +//! crate must stay dependency-light and cannot name `tinyinference-core`; and rather //! than in the host because the tree's embedder factory — which is core code — //! builds Ollama models directly and needs to wrap them. The host re-exports it //! from `inference::embeddings`, so every existing path there keeps resolving //! and keeps naming this one type. use async_trait::async_trait; -use tinyinference::embeddings::EmbeddingModel; +use tinyinference_core::embeddings::EmbeddingModel; pub use tinymemory_api::host::{format_embedding_signature, EmbeddingProvider}; diff --git a/crates/tinymemory-core/src/store/factories.rs b/crates/tinymemory-core/src/store/factories.rs index 9272bde3..1a845e7d 100644 --- a/crates/tinymemory-core/src/store/factories.rs +++ b/crates/tinymemory-core/src/store/factories.rs @@ -18,7 +18,7 @@ use rusqlite::Connection; use crate::embedding_host::require_embedding_host; use crate::store::namespace_store::UnifiedMemory; use crate::traits::Memory; -use tinyinference::embeddings::{DEFAULT_OLLAMA_DIMENSIONS, DEFAULT_OLLAMA_MODEL}; +use tinyinference_core::embeddings::{DEFAULT_OLLAMA_DIMENSIONS, DEFAULT_OLLAMA_MODEL}; use tinymemory_api::host::MemoryConfig; use tinymemory_api::host::{format_embedding_signature, EmbeddingProvider}; use tinymemory_api::host::{EmbeddingRouteConfig, StorageProviderConfig}; diff --git a/crates/tinymemory-core/src/store/factories_tests.rs b/crates/tinymemory-core/src/store/factories_tests.rs index f3a993aa..c5f45cdc 100644 --- a/crates/tinymemory-core/src/store/factories_tests.rs +++ b/crates/tinymemory-core/src/store/factories_tests.rs @@ -91,7 +91,7 @@ fn embedding_settings_local_overrides_memory_config() { assert_eq!(model, "nomic-embed-text:latest"); assert_eq!( dims, - tinyinference::embeddings::DEFAULT_OLLAMA_DIMENSIONS, + tinyinference_core::embeddings::DEFAULT_OLLAMA_DIMENSIONS, "dimensions must default to Ollama default" ); } @@ -105,10 +105,13 @@ fn embedding_settings_local_with_empty_model_uses_default() { assert_eq!(provider, "ollama"); assert_eq!( model, - tinyinference::embeddings::DEFAULT_OLLAMA_MODEL, + tinyinference_core::embeddings::DEFAULT_OLLAMA_MODEL, "empty model ID must fall back to default Ollama model" ); - assert_eq!(dims, tinyinference::embeddings::DEFAULT_OLLAMA_DIMENSIONS); + assert_eq!( + dims, + tinyinference_core::embeddings::DEFAULT_OLLAMA_DIMENSIONS + ); } #[test] @@ -223,7 +226,7 @@ async fn start_mock_ollama() -> String { /// the legacy `local_ai.usage.embeddings = true` flag was set. Used so /// the existing test scenarios continue to drive the local code path. fn local_embedding_for_test() -> &'static str { - tinyinference::embeddings::DEFAULT_OLLAMA_MODEL + tinyinference_core::embeddings::DEFAULT_OLLAMA_MODEL } #[tokio::test] diff --git a/crates/tinymemory-core/src/test_seams.rs b/crates/tinymemory-core/src/test_seams.rs index 6f6defad..ade36ccb 100644 --- a/crates/tinymemory-core/src/test_seams.rs +++ b/crates/tinymemory-core/src/test_seams.rs @@ -72,13 +72,13 @@ impl crate::chat_host::ChatHost for TestChatHost { _role: &str, _config: &Config, _temperature: f64, - ) -> Result<(Arc>, String), String> { + ) -> Result<(Arc>, String), String> { Err("TestChatHost does not build models — model routing is host behaviour".to_string()) } fn usage_from_response( &self, - _response: &tinyinference::model::ModelResponse, + _response: &tinyinference_core::model::ModelResponse, ) -> Option { None } diff --git a/crates/tinymemory-core/src/tree/score/embed/factory.rs b/crates/tinymemory-core/src/tree/score/embed/factory.rs index 72aa74e5..294bd06a 100644 --- a/crates/tinymemory-core/src/tree/score/embed/factory.rs +++ b/crates/tinymemory-core/src/tree/score/embed/factory.rs @@ -39,7 +39,7 @@ use tinymemory_api::host::test_support::TestHostConfig; use super::{Embedder, InertEmbedder, ProviderEmbedder, EMBEDDING_DIM}; use crate::embedding_host::require_embedding_host; use crate::Config; -use tinyinference::embeddings::{OllamaEmbeddingModel, RECOMMENDED_OLLAMA_CONTEXT_TOKENS}; +use tinyinference_core::embeddings::{OllamaEmbeddingModel, RECOMMENDED_OLLAMA_CONTEXT_TOKENS}; /// Cheap heuristic for "is a backend session reachable?" — the cloud /// embedder needs one and bails on first embed call without it. We use diff --git a/crates/tinymemory-core/src/tree/score/embed/mod.rs b/crates/tinymemory-core/src/tree/score/embed/mod.rs index 56cc6b75..9df7b0b1 100644 --- a/crates/tinymemory-core/src/tree/score/embed/mod.rs +++ b/crates/tinymemory-core/src/tree/score/embed/mod.rs @@ -87,7 +87,7 @@ pub trait Embedder: Send + Sync { /// Adapts the canonical host embedding-provider contract to the legacy /// memory-tree embedder shape. Concrete network implementations live in -/// `tinyinference::embeddings`; this bridge owns only dimension checks +/// `tinyinference_core::embeddings`; this bridge owns only dimension checks /// and the memory tree's per-position batch fallback contract. pub struct ProviderEmbedder { inner: Box, diff --git a/crates/tinymemory-core/src/tree/tree_runtime/engine.rs b/crates/tinymemory-core/src/tree/tree_runtime/engine.rs index 6d00d3f2..b05a4e3d 100644 --- a/crates/tinymemory-core/src/tree/tree_runtime/engine.rs +++ b/crates/tinymemory-core/src/tree/tree_runtime/engine.rs @@ -8,8 +8,8 @@ use crate::engine::backend::tree::runtime::{ use anyhow::{Context, Result}; use async_trait::async_trait; use chrono::{DateTime, Timelike, Utc}; -use tinyinference::message::Message; -use tinyinference::model::{ChatModel, ModelRequest}; +use tinyinference_core::message::Message; +use tinyinference_core::model::{ChatModel, ModelRequest}; use crate::engine::engine_config; use crate::Config; diff --git a/crates/tinymemory-core/src/tree/tree_runtime/engine_tests.rs b/crates/tinymemory-core/src/tree/tree_runtime/engine_tests.rs index 54691fe6..a036542b 100644 --- a/crates/tinymemory-core/src/tree/tree_runtime/engine_tests.rs +++ b/crates/tinymemory-core/src/tree/tree_runtime/engine_tests.rs @@ -5,7 +5,7 @@ use crate::tree::tree_runtime::store; use chrono::TimeZone; use std::sync::Mutex; use tempfile::TempDir; -use tinyinference::model::ModelResponse; +use tinyinference_core::model::ModelResponse; use tinymemory_api::host::test_support::TestHostConfig; struct RecordingModel { @@ -28,11 +28,11 @@ impl ChatModel<()> for RecordingModel { &self, _state: &(), request: ModelRequest, - ) -> tinyinference::Result { + ) -> tinyinference_core::Result { self.requests.lock().unwrap().push(request); match &self.reply { Ok(reply) => Ok(ModelResponse::assistant(reply.clone())), - Err(message) => Err(tinyinference::Error::Model(message.clone())), + Err(message) => Err(tinyinference_core::Error::Model(message.clone())), } } } diff --git a/crates/tinymemory-module/Cargo.lock b/crates/tinymemory-module/Cargo.lock index d8f83c79..0d73d5cf 100644 --- a/crates/tinymemory-module/Cargo.lock +++ b/crates/tinymemory-module/Cargo.lock @@ -1762,7 +1762,7 @@ dependencies = [ "sha2 0.10.9", "thiserror", "tinycortex-api", - "tinyinference", + "tinyinference-core", "tokio", "toml 1.1.4+spec-1.1.0", "tracing", @@ -1778,12 +1778,14 @@ dependencies = [ ] [[package]] -name = "tinyinference" +name = "tinyinference-core" version = "0.2.1" dependencies = [ + "anyhow", "async-trait", "bytes", "futures", + "hex", "httpdate", "reqwest", "serde", @@ -1791,6 +1793,8 @@ dependencies = [ "sha2 0.11.0", "thiserror", "tokio", + "tracing", + "url", ] [[package]] @@ -1852,7 +1856,7 @@ dependencies = [ "thiserror", "tinycortex", "tinycortex-api", - "tinyinference", + "tinyinference-core", "tinymemory-api", "tinymemory-sources", "tinymemory-sync", @@ -1877,7 +1881,7 @@ dependencies = [ "tinybus", "tinybus-module", "tinycortex", - "tinyinference", + "tinyinference-core", "tinymemory", "tinymemory-api", "tinymemory-bus", diff --git a/crates/tinymemory-module/Cargo.toml b/crates/tinymemory-module/Cargo.toml index 6a017b1b..b21b8eac 100644 --- a/crates/tinymemory-module/Cargo.toml +++ b/crates/tinymemory-module/Cargo.toml @@ -53,7 +53,7 @@ tinymemory-tinycortex = { path = "../tinymemory-tinycortex", features = ["memory # upstream, so a Linux or Windows artifact still compiles none of them. tinycortex = { version = "0.1", features = ["contacts"] } # Provider-neutral chat request and response types carried over TinyBus. -tinyinference = "0.2" +tinyinference-core = "0.2" # TinyBus provides the typed service interface and the dynamic module host ABI. # Reached by path now that this crate is its own workspace root: the nested # checkout's `[workspace.package]` resolves correctly from here. @@ -112,12 +112,12 @@ tempfile = "3" tinymemory-api = { path = "../tinymemory-api" } [patch."https://github.com/tinyhumansai/tinyinference"] -tinyinference = { path = "../../vendor/tinyinference/crates/tinyinference" } +tinyinference-core = { path = "../../vendor/tinyinference/crates/tinyinference-core" } [patch.crates-io] tinycortex = { path = "../../vendor/tinycortex" } tinycortex-api = { path = "../../vendor/tinycortex/api" } -tinyinference = { path = "../../vendor/tinyinference/crates/tinyinference" } +tinyinference-core = { path = "../../vendor/tinyinference/crates/tinyinference-core" } # Mirrors the root package's set. `unsafe_code = "forbid"` holds even though # `module_export!` emits `unsafe extern "C"` symbols: the macro's expansion diff --git a/crates/tinymemory-module/src/chat.rs b/crates/tinymemory-module/src/chat.rs index eb3509b2..704b92de 100644 --- a/crates/tinymemory-module/src/chat.rs +++ b/crates/tinymemory-module/src/chat.rs @@ -4,7 +4,7 @@ use std::sync::Arc; use async_trait::async_trait; use tinybus::Connection; -use tinyinference::model::{ChatModel, ModelRequest, ModelResponse}; +use tinyinference_core::model::{ChatModel, ModelRequest, ModelResponse}; use crate::ModuleConfig; @@ -97,7 +97,7 @@ impl ChatModel<()> for BusChatModel { &self, _state: &(), request: ModelRequest, - ) -> tinyinference::Result { + ) -> tinyinference_core::Result { let proxy = self .connection .proxy( @@ -105,11 +105,11 @@ impl ChatModel<()> for BusChatModel { CHAT_HOST_OBJECT_PATH, CHAT_HOST_INTERFACE, ) - .map_err(|error| tinyinference::Error::Model(error.to_string()))?; + .map_err(|error| tinyinference_core::Error::Model(error.to_string()))?; proxy .call("Complete", (self.role.clone(), request)) .await - .map_err(|error| tinyinference::Error::Model(error.to_string())) + .map_err(|error| tinyinference_core::Error::Model(error.to_string())) } } diff --git a/crates/tinymemory-module/src/chat_test.rs b/crates/tinymemory-module/src/chat_test.rs index 6fd9910d..4297cce4 100644 --- a/crates/tinymemory-module/src/chat_test.rs +++ b/crates/tinymemory-module/src/chat_test.rs @@ -3,9 +3,9 @@ use tinybus::broker::Broker; use tinybus::transport::memory::MemoryBus; use tinybus::{Connection, Result as BusResult}; -use tinyinference::message::{AssistantMessage, ContentBlock, Message}; -use tinyinference::model::{ModelRequest, ModelResponse}; -use tinyinference::usage::Usage; +use tinyinference_core::message::{AssistantMessage, ContentBlock, Message}; +use tinyinference_core::model::{ModelRequest, ModelResponse}; +use tinyinference_core::usage::Usage; use super::{BusChatHost, CHAT_HOST_BUS_NAME, CHAT_HOST_OBJECT_PATH}; use crate::config::ModuleConfig; diff --git a/crates/tinymemory-module/tests/module_e2e.rs b/crates/tinymemory-module/tests/module_e2e.rs index 574e8e36..afcdbabc 100644 --- a/crates/tinymemory-module/tests/module_e2e.rs +++ b/crates/tinymemory-module/tests/module_e2e.rs @@ -123,13 +123,13 @@ impl HostChat { async fn complete( &self, _role: String, - _request: tinyinference::model::ModelRequest, - ) -> BusResult { - use tinyinference::message::{AssistantMessage, ContentBlock}; - use tinyinference::usage::Usage; + _request: tinyinference_core::model::ModelRequest, + ) -> BusResult { + use tinyinference_core::message::{AssistantMessage, ContentBlock}; + use tinyinference_core::usage::Usage; std::future::ready(()).await; - Ok(tinyinference::model::ModelResponse { + Ok(tinyinference_core::model::ModelResponse { message: AssistantMessage { id: None, content: vec![ContentBlock::Text("deterministic summary".into())], diff --git a/vendor/tinycortex b/vendor/tinycortex index 79131f27..508fb12e 160000 --- a/vendor/tinycortex +++ b/vendor/tinycortex @@ -1 +1 @@ -Subproject commit 79131f275cf98f06421fefd9dc812c5a63a5a182 +Subproject commit 508fb12e9f89f3f5963292f8a83256f5f6b8411e diff --git a/vendor/tinyinference b/vendor/tinyinference index cc8aca48..98f402af 160000 --- a/vendor/tinyinference +++ b/vendor/tinyinference @@ -1 +1 @@ -Subproject commit cc8aca484bb995fbab3b7358f0d72ab5056b587c +Subproject commit 98f402afa426bbca8360c8e2dc68ca543421e1f2 From 0c97e5dfe1ee40774cf98d9aebb9811077b51005 Mon Sep 17 00:00:00 2001 From: Steven Enamakel Date: Fri, 18 Sep 2026 16:32:49 +0300 Subject: [PATCH 2/8] chore: refresh inference dependencies Co-authored-by: Medulla --- Cargo.lock | 14 +++++++------- vendor/tinycortex | 2 +- vendor/tinyinference | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 51604445..87140516 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -204,9 +204,9 @@ checksum = "f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527" [[package]] name = "chacha20" -version = "0.10.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" +checksum = "65c35e4b699c7e15ccbe7ee35c005e4fc0a278d22238a2857e6ce2dadeda1b06" dependencies = [ "cfg-if", "cpufeatures 0.3.0", @@ -1436,9 +1436,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.43" +version = "0.23.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0283386ce02abc0151e1761d08802dfe86c173b0b494af5cbc086574e453da06" +checksum = "0d41d731c7d2f962d1ccc364cec258de3c0e93b38c2fb3ba97ac74513048d634" dependencies = [ "once_cell", "ring", @@ -1460,9 +1460,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.13" +version = "0.103.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" +checksum = "f3c3cf1d8b1e7d4927e2d154c3fcb02979afb9939629c62cd9048d4f07b60ac2" dependencies = [ "ring", "rustls-pki-types", @@ -1740,7 +1740,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.4.3", + "getrandom 0.3.4", "once_cell", "rustix", "windows-sys 0.61.2", diff --git a/vendor/tinycortex b/vendor/tinycortex index 508fb12e..a225ba3a 160000 --- a/vendor/tinycortex +++ b/vendor/tinycortex @@ -1 +1 @@ -Subproject commit 508fb12e9f89f3f5963292f8a83256f5f6b8411e +Subproject commit a225ba3ab5ae8154cb3d42a4eadac54af7d54bf3 diff --git a/vendor/tinyinference b/vendor/tinyinference index 98f402af..6428931d 160000 --- a/vendor/tinyinference +++ b/vendor/tinyinference @@ -1 +1 @@ -Subproject commit 98f402afa426bbca8360c8e2dc68ca543421e1f2 +Subproject commit 6428931d2fb259e4135f3b4a0e96b29d97c92c7e From 0f188186ec61698f45c4c90ad1d57e9f0e650695 Mon Sep 17 00:00:00 2001 From: Steven Enamakel Date: Fri, 18 Sep 2026 16:40:22 +0300 Subject: [PATCH 3/8] chore: update inference review fixes Co-authored-by: Medulla --- vendor/tinycortex | 2 +- vendor/tinyinference | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/tinycortex b/vendor/tinycortex index a225ba3a..7e6b6622 160000 --- a/vendor/tinycortex +++ b/vendor/tinycortex @@ -1 +1 @@ -Subproject commit a225ba3ab5ae8154cb3d42a4eadac54af7d54bf3 +Subproject commit 7e6b6622594f2aad73ad611f1d92ee10340cb16c diff --git a/vendor/tinyinference b/vendor/tinyinference index 6428931d..6f4f8497 160000 --- a/vendor/tinyinference +++ b/vendor/tinyinference @@ -1 +1 @@ -Subproject commit 6428931d2fb259e4135f3b4a0e96b29d97c92c7e +Subproject commit 6f4f8497afd14e01492afb20bd491cec44e6602f From 3e360813d6e00a5fed08c559caac4bd1aca61657 Mon Sep 17 00:00:00 2001 From: Steven Enamakel Date: Fri, 18 Sep 2026 16:55:26 +0300 Subject: [PATCH 4/8] chore: update inference test fix Co-authored-by: Medulla --- vendor/tinycortex | 2 +- vendor/tinyinference | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/tinycortex b/vendor/tinycortex index 7e6b6622..0969d86d 160000 --- a/vendor/tinycortex +++ b/vendor/tinycortex @@ -1 +1 @@ -Subproject commit 7e6b6622594f2aad73ad611f1d92ee10340cb16c +Subproject commit 0969d86d40115ec503abf21a25b3309d153558b6 diff --git a/vendor/tinyinference b/vendor/tinyinference index 6f4f8497..aaeb60ba 160000 --- a/vendor/tinyinference +++ b/vendor/tinyinference @@ -1 +1 @@ -Subproject commit 6f4f8497afd14e01492afb20bd491cec44e6602f +Subproject commit aaeb60ba841a9ce896b4f4617fb5936006b7ac95 From e3ee33b5e558e0322f57a9ec0a840a9b513171a7 Mon Sep 17 00:00:00 2001 From: Steven Enamakel Date: Fri, 18 Sep 2026 16:59:54 +0300 Subject: [PATCH 5/8] chore: update inference policy boundary Co-authored-by: Medulla --- vendor/tinycortex | 2 +- vendor/tinyinference | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/tinycortex b/vendor/tinycortex index 0969d86d..9a8167f9 160000 --- a/vendor/tinycortex +++ b/vendor/tinycortex @@ -1 +1 @@ -Subproject commit 0969d86d40115ec503abf21a25b3309d153558b6 +Subproject commit 9a8167f9dcc48ad82a509c2cbf111f01c85b1b4c diff --git a/vendor/tinyinference b/vendor/tinyinference index aaeb60ba..792028b6 160000 --- a/vendor/tinyinference +++ b/vendor/tinyinference @@ -1 +1 @@ -Subproject commit aaeb60ba841a9ce896b4f4617fb5936006b7ac95 +Subproject commit 792028b6be2515ab4967ffa57e663eaa52b018e9 From 46f92206bcd8b344ba87607d8c379d4373cda89f Mon Sep 17 00:00:00 2001 From: Steven Enamakel Date: Fri, 18 Sep 2026 17:36:56 +0300 Subject: [PATCH 6/8] refactor: consume llm and embeddings crates Co-authored-by: Medulla --- Cargo.lock | 34 ++++++++++++++++--- Cargo.toml | 4 +++ crates/tinymemory-core/Cargo.toml | 3 +- crates/tinymemory-core/src/chat.rs | 4 +-- crates/tinymemory-core/src/chat_host.rs | 4 +-- .../tinymemory-core/src/embedding_adapter.rs | 4 +-- crates/tinymemory-core/src/store/factories.rs | 2 +- .../src/store/factories_tests.rs | 11 +++--- crates/tinymemory-core/src/test_seams.rs | 4 +-- .../src/tree/score/embed/factory.rs | 2 +- .../src/tree/score/embed/mod.rs | 2 +- .../src/tree/tree_runtime/engine.rs | 4 +-- .../src/tree/tree_runtime/engine_tests.rs | 6 ++-- crates/tinymemory-module/Cargo.lock | 34 ++++++++++++++++--- crates/tinymemory-module/Cargo.toml | 6 +++- crates/tinymemory-module/src/chat.rs | 8 ++--- crates/tinymemory-module/src/chat_test.rs | 6 ++-- crates/tinymemory-module/tests/module_e2e.rs | 10 +++--- vendor/tinycortex | 2 +- vendor/tinyinference | 2 +- 20 files changed, 103 insertions(+), 49 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 87140516..11f353a2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1740,7 +1740,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.3.4", + "getrandom 0.4.3", "once_cell", "rustix", "windows-sys 0.61.2", @@ -1793,7 +1793,8 @@ dependencies = [ "sha2 0.10.9", "thiserror", "tinycortex-api", - "tinyinference-core", + "tinyinference-embeddings", + "tinyinference-llm", "tokio", "toml", "tracing", @@ -1813,16 +1814,38 @@ name = "tinyinference-core" version = "0.2.1" dependencies = [ "anyhow", + "httpdate", + "url", +] + +[[package]] +name = "tinyinference-embeddings" +version = "0.2.1" +dependencies = [ + "async-trait", + "reqwest", + "serde", + "serde_json", + "thiserror", + "tinyinference-core", + "tokio", + "tracing", + "url", +] + +[[package]] +name = "tinyinference-llm" +version = "0.2.1" +dependencies = [ "async-trait", "bytes", "futures", - "hex", - "httpdate", "reqwest", "serde", "serde_json", "sha2 0.11.0", "thiserror", + "tinyinference-core", "tokio", "tracing", "url", @@ -1910,7 +1933,8 @@ dependencies = [ "thiserror", "tinycortex", "tinycortex-api", - "tinyinference-core", + "tinyinference-embeddings", + "tinyinference-llm", "tinymemory", "tinymemory-api", "tinymemory-conformance", diff --git a/Cargo.toml b/Cargo.toml index c650daaa..eef04fb2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -79,6 +79,8 @@ tinymemory-api = { path = "crates/tinymemory-api" } # both crates share one trait identity. [patch."https://github.com/tinyhumansai/tinyinference"] tinyinference-core = { path = "vendor/tinyinference/crates/tinyinference-core" } +tinyinference-embeddings = { path = "vendor/tinyinference/crates/tinyinference-embeddings" } +tinyinference-llm = { path = "vendor/tinyinference/crates/tinyinference-llm" } [patch.crates-io] tinycortex = { path = "vendor/tinycortex" } @@ -87,6 +89,8 @@ tinycortex-api = { path = "vendor/tinycortex/api" } # from TinyInference. It is not published, so standalone builds resolve the # version requirement to the pinned checkout here. tinyinference-core = { path = "vendor/tinyinference/crates/tinyinference-core" } +tinyinference-embeddings = { path = "vendor/tinyinference/crates/tinyinference-embeddings" } +tinyinference-llm = { path = "vendor/tinyinference/crates/tinyinference-llm" } [profile.release] # Cross-crate optimization and smaller, faster binaries for release builds. diff --git a/crates/tinymemory-core/Cargo.toml b/crates/tinymemory-core/Cargo.toml index d8328125..3f399d93 100644 --- a/crates/tinymemory-core/Cargo.toml +++ b/crates/tinymemory-core/Cargo.toml @@ -40,7 +40,8 @@ tinycortex-api = { version = "0.1" } # Provider-neutral chat-model and embedding primitives used by the tree # summarizer and embedding factory. Agent runtime and session behavior do not # belong in the memory layer. -tinyinference-core = "0.2" +tinyinference-embeddings = "0.2" +tinyinference-llm = "0.2" anyhow = "1.0" async-trait = "0.1" # NO `git2` HERE, DELIBERATELY — do not add it back. `diff/` holds the ops and diff --git a/crates/tinymemory-core/src/chat.rs b/crates/tinymemory-core/src/chat.rs index 7ef830fb..bb20ee7f 100644 --- a/crates/tinymemory-core/src/chat.rs +++ b/crates/tinymemory-core/src/chat.rs @@ -13,8 +13,8 @@ use async_trait::async_trait; use crate::chat_host::{create_chat_model_with_model_id, provider_for_role, UsageInfo}; use crate::Config; -use tinyinference_core::message::Message; -use tinyinference_core::model::{ChatModel, ModelRequest}; +use tinyinference_llm::message::Message; +use tinyinference_llm::model::{ChatModel, ModelRequest}; /// One pair of prompt messages handed to the memory LLM backend. #[derive(Debug, Clone)] diff --git a/crates/tinymemory-core/src/chat_host.rs b/crates/tinymemory-core/src/chat_host.rs index e8773e1b..f82912b3 100644 --- a/crates/tinymemory-core/src/chat_host.rs +++ b/crates/tinymemory-core/src/chat_host.rs @@ -8,7 +8,7 @@ //! //! # Why this trait is here and not in `tinymemory-api` //! -//! It names [`tinyinference_core::model::ChatModel`], and the contract crate is +//! It names [`tinyinference_llm::model::ChatModel`], and the contract crate is //! deliberately dependency-light — it must not pull in an inference SDK. This //! crate already depends on TinyInference, so it is the one place that can name //! both the model trait and the config seam. The host implements it here. @@ -20,7 +20,7 @@ use std::sync::Arc; use parking_lot::RwLock; -use tinyinference_core::model::{ChatModel, ModelResponse}; +use tinyinference_llm::model::{ChatModel, ModelResponse}; use crate::Config; diff --git a/crates/tinymemory-core/src/embedding_adapter.rs b/crates/tinymemory-core/src/embedding_adapter.rs index 985e4fbc..a9497a80 100644 --- a/crates/tinymemory-core/src/embedding_adapter.rs +++ b/crates/tinymemory-core/src/embedding_adapter.rs @@ -2,14 +2,14 @@ //! model trait onto the seam's [`EmbeddingProvider`]. //! //! It lives in this crate rather than in `tinymemory-api` because the contract -//! crate must stay dependency-light and cannot name `tinyinference-core`; and rather +//! crate must stay dependency-light and cannot name `tinyinference-llm`; and rather //! than in the host because the tree's embedder factory — which is core code — //! builds Ollama models directly and needs to wrap them. The host re-exports it //! from `inference::embeddings`, so every existing path there keeps resolving //! and keeps naming this one type. use async_trait::async_trait; -use tinyinference_core::embeddings::EmbeddingModel; +use tinyinference_embeddings::EmbeddingModel; pub use tinymemory_api::host::{format_embedding_signature, EmbeddingProvider}; diff --git a/crates/tinymemory-core/src/store/factories.rs b/crates/tinymemory-core/src/store/factories.rs index 1a845e7d..827447aa 100644 --- a/crates/tinymemory-core/src/store/factories.rs +++ b/crates/tinymemory-core/src/store/factories.rs @@ -18,7 +18,7 @@ use rusqlite::Connection; use crate::embedding_host::require_embedding_host; use crate::store::namespace_store::UnifiedMemory; use crate::traits::Memory; -use tinyinference_core::embeddings::{DEFAULT_OLLAMA_DIMENSIONS, DEFAULT_OLLAMA_MODEL}; +use tinyinference_embeddings::{DEFAULT_OLLAMA_DIMENSIONS, DEFAULT_OLLAMA_MODEL}; use tinymemory_api::host::MemoryConfig; use tinymemory_api::host::{format_embedding_signature, EmbeddingProvider}; use tinymemory_api::host::{EmbeddingRouteConfig, StorageProviderConfig}; diff --git a/crates/tinymemory-core/src/store/factories_tests.rs b/crates/tinymemory-core/src/store/factories_tests.rs index c5f45cdc..44fa0940 100644 --- a/crates/tinymemory-core/src/store/factories_tests.rs +++ b/crates/tinymemory-core/src/store/factories_tests.rs @@ -91,7 +91,7 @@ fn embedding_settings_local_overrides_memory_config() { assert_eq!(model, "nomic-embed-text:latest"); assert_eq!( dims, - tinyinference_core::embeddings::DEFAULT_OLLAMA_DIMENSIONS, + tinyinference_embeddings::DEFAULT_OLLAMA_DIMENSIONS, "dimensions must default to Ollama default" ); } @@ -105,13 +105,10 @@ fn embedding_settings_local_with_empty_model_uses_default() { assert_eq!(provider, "ollama"); assert_eq!( model, - tinyinference_core::embeddings::DEFAULT_OLLAMA_MODEL, + tinyinference_embeddings::DEFAULT_OLLAMA_MODEL, "empty model ID must fall back to default Ollama model" ); - assert_eq!( - dims, - tinyinference_core::embeddings::DEFAULT_OLLAMA_DIMENSIONS - ); + assert_eq!(dims, tinyinference_embeddings::DEFAULT_OLLAMA_DIMENSIONS); } #[test] @@ -226,7 +223,7 @@ async fn start_mock_ollama() -> String { /// the legacy `local_ai.usage.embeddings = true` flag was set. Used so /// the existing test scenarios continue to drive the local code path. fn local_embedding_for_test() -> &'static str { - tinyinference_core::embeddings::DEFAULT_OLLAMA_MODEL + tinyinference_embeddings::DEFAULT_OLLAMA_MODEL } #[tokio::test] diff --git a/crates/tinymemory-core/src/test_seams.rs b/crates/tinymemory-core/src/test_seams.rs index ade36ccb..8d9ace53 100644 --- a/crates/tinymemory-core/src/test_seams.rs +++ b/crates/tinymemory-core/src/test_seams.rs @@ -72,13 +72,13 @@ impl crate::chat_host::ChatHost for TestChatHost { _role: &str, _config: &Config, _temperature: f64, - ) -> Result<(Arc>, String), String> { + ) -> Result<(Arc>, String), String> { Err("TestChatHost does not build models — model routing is host behaviour".to_string()) } fn usage_from_response( &self, - _response: &tinyinference_core::model::ModelResponse, + _response: &tinyinference_llm::model::ModelResponse, ) -> Option { None } diff --git a/crates/tinymemory-core/src/tree/score/embed/factory.rs b/crates/tinymemory-core/src/tree/score/embed/factory.rs index 294bd06a..87e52119 100644 --- a/crates/tinymemory-core/src/tree/score/embed/factory.rs +++ b/crates/tinymemory-core/src/tree/score/embed/factory.rs @@ -39,7 +39,7 @@ use tinymemory_api::host::test_support::TestHostConfig; use super::{Embedder, InertEmbedder, ProviderEmbedder, EMBEDDING_DIM}; use crate::embedding_host::require_embedding_host; use crate::Config; -use tinyinference_core::embeddings::{OllamaEmbeddingModel, RECOMMENDED_OLLAMA_CONTEXT_TOKENS}; +use tinyinference_embeddings::{OllamaEmbeddingModel, RECOMMENDED_OLLAMA_CONTEXT_TOKENS}; /// Cheap heuristic for "is a backend session reachable?" — the cloud /// embedder needs one and bails on first embed call without it. We use diff --git a/crates/tinymemory-core/src/tree/score/embed/mod.rs b/crates/tinymemory-core/src/tree/score/embed/mod.rs index 9df7b0b1..3e5b2061 100644 --- a/crates/tinymemory-core/src/tree/score/embed/mod.rs +++ b/crates/tinymemory-core/src/tree/score/embed/mod.rs @@ -87,7 +87,7 @@ pub trait Embedder: Send + Sync { /// Adapts the canonical host embedding-provider contract to the legacy /// memory-tree embedder shape. Concrete network implementations live in -/// `tinyinference_core::embeddings`; this bridge owns only dimension checks +/// `tinyinference_llm::embeddings`; this bridge owns only dimension checks /// and the memory tree's per-position batch fallback contract. pub struct ProviderEmbedder { inner: Box, diff --git a/crates/tinymemory-core/src/tree/tree_runtime/engine.rs b/crates/tinymemory-core/src/tree/tree_runtime/engine.rs index b05a4e3d..1c4c0b37 100644 --- a/crates/tinymemory-core/src/tree/tree_runtime/engine.rs +++ b/crates/tinymemory-core/src/tree/tree_runtime/engine.rs @@ -8,8 +8,8 @@ use crate::engine::backend::tree::runtime::{ use anyhow::{Context, Result}; use async_trait::async_trait; use chrono::{DateTime, Timelike, Utc}; -use tinyinference_core::message::Message; -use tinyinference_core::model::{ChatModel, ModelRequest}; +use tinyinference_llm::message::Message; +use tinyinference_llm::model::{ChatModel, ModelRequest}; use crate::engine::engine_config; use crate::Config; diff --git a/crates/tinymemory-core/src/tree/tree_runtime/engine_tests.rs b/crates/tinymemory-core/src/tree/tree_runtime/engine_tests.rs index a036542b..3853f002 100644 --- a/crates/tinymemory-core/src/tree/tree_runtime/engine_tests.rs +++ b/crates/tinymemory-core/src/tree/tree_runtime/engine_tests.rs @@ -5,7 +5,7 @@ use crate::tree::tree_runtime::store; use chrono::TimeZone; use std::sync::Mutex; use tempfile::TempDir; -use tinyinference_core::model::ModelResponse; +use tinyinference_llm::model::ModelResponse; use tinymemory_api::host::test_support::TestHostConfig; struct RecordingModel { @@ -28,11 +28,11 @@ impl ChatModel<()> for RecordingModel { &self, _state: &(), request: ModelRequest, - ) -> tinyinference_core::Result { + ) -> tinyinference_llm::Result { self.requests.lock().unwrap().push(request); match &self.reply { Ok(reply) => Ok(ModelResponse::assistant(reply.clone())), - Err(message) => Err(tinyinference_core::Error::Model(message.clone())), + Err(message) => Err(tinyinference_llm::Error::Model(message.clone())), } } } diff --git a/crates/tinymemory-module/Cargo.lock b/crates/tinymemory-module/Cargo.lock index 0d73d5cf..3ef19b21 100644 --- a/crates/tinymemory-module/Cargo.lock +++ b/crates/tinymemory-module/Cargo.lock @@ -1762,7 +1762,8 @@ dependencies = [ "sha2 0.10.9", "thiserror", "tinycortex-api", - "tinyinference-core", + "tinyinference-embeddings", + "tinyinference-llm", "tokio", "toml 1.1.4+spec-1.1.0", "tracing", @@ -1782,16 +1783,38 @@ name = "tinyinference-core" version = "0.2.1" dependencies = [ "anyhow", + "httpdate", + "url", +] + +[[package]] +name = "tinyinference-embeddings" +version = "0.2.1" +dependencies = [ + "async-trait", + "reqwest", + "serde", + "serde_json", + "thiserror", + "tinyinference-core", + "tokio", + "tracing", + "url", +] + +[[package]] +name = "tinyinference-llm" +version = "0.2.1" +dependencies = [ "async-trait", "bytes", "futures", - "hex", - "httpdate", "reqwest", "serde", "serde_json", "sha2 0.11.0", "thiserror", + "tinyinference-core", "tokio", "tracing", "url", @@ -1856,7 +1879,8 @@ dependencies = [ "thiserror", "tinycortex", "tinycortex-api", - "tinyinference-core", + "tinyinference-embeddings", + "tinyinference-llm", "tinymemory-api", "tinymemory-sources", "tinymemory-sync", @@ -1881,7 +1905,7 @@ dependencies = [ "tinybus", "tinybus-module", "tinycortex", - "tinyinference-core", + "tinyinference-llm", "tinymemory", "tinymemory-api", "tinymemory-bus", diff --git a/crates/tinymemory-module/Cargo.toml b/crates/tinymemory-module/Cargo.toml index b21b8eac..e324b780 100644 --- a/crates/tinymemory-module/Cargo.toml +++ b/crates/tinymemory-module/Cargo.toml @@ -53,7 +53,7 @@ tinymemory-tinycortex = { path = "../tinymemory-tinycortex", features = ["memory # upstream, so a Linux or Windows artifact still compiles none of them. tinycortex = { version = "0.1", features = ["contacts"] } # Provider-neutral chat request and response types carried over TinyBus. -tinyinference-core = "0.2" +tinyinference-llm = "0.2" # TinyBus provides the typed service interface and the dynamic module host ABI. # Reached by path now that this crate is its own workspace root: the nested # checkout's `[workspace.package]` resolves correctly from here. @@ -113,11 +113,15 @@ tinymemory-api = { path = "../tinymemory-api" } [patch."https://github.com/tinyhumansai/tinyinference"] tinyinference-core = { path = "../../vendor/tinyinference/crates/tinyinference-core" } +tinyinference-embeddings = { path = "../../vendor/tinyinference/crates/tinyinference-embeddings" } +tinyinference-llm = { path = "../../vendor/tinyinference/crates/tinyinference-llm" } [patch.crates-io] tinycortex = { path = "../../vendor/tinycortex" } tinycortex-api = { path = "../../vendor/tinycortex/api" } tinyinference-core = { path = "../../vendor/tinyinference/crates/tinyinference-core" } +tinyinference-embeddings = { path = "../../vendor/tinyinference/crates/tinyinference-embeddings" } +tinyinference-llm = { path = "../../vendor/tinyinference/crates/tinyinference-llm" } # Mirrors the root package's set. `unsafe_code = "forbid"` holds even though # `module_export!` emits `unsafe extern "C"` symbols: the macro's expansion diff --git a/crates/tinymemory-module/src/chat.rs b/crates/tinymemory-module/src/chat.rs index 704b92de..d6cfea88 100644 --- a/crates/tinymemory-module/src/chat.rs +++ b/crates/tinymemory-module/src/chat.rs @@ -4,7 +4,7 @@ use std::sync::Arc; use async_trait::async_trait; use tinybus::Connection; -use tinyinference_core::model::{ChatModel, ModelRequest, ModelResponse}; +use tinyinference_llm::model::{ChatModel, ModelRequest, ModelResponse}; use crate::ModuleConfig; @@ -97,7 +97,7 @@ impl ChatModel<()> for BusChatModel { &self, _state: &(), request: ModelRequest, - ) -> tinyinference_core::Result { + ) -> tinyinference_llm::Result { let proxy = self .connection .proxy( @@ -105,11 +105,11 @@ impl ChatModel<()> for BusChatModel { CHAT_HOST_OBJECT_PATH, CHAT_HOST_INTERFACE, ) - .map_err(|error| tinyinference_core::Error::Model(error.to_string()))?; + .map_err(|error| tinyinference_llm::Error::Model(error.to_string()))?; proxy .call("Complete", (self.role.clone(), request)) .await - .map_err(|error| tinyinference_core::Error::Model(error.to_string())) + .map_err(|error| tinyinference_llm::Error::Model(error.to_string())) } } diff --git a/crates/tinymemory-module/src/chat_test.rs b/crates/tinymemory-module/src/chat_test.rs index 4297cce4..cf85fb77 100644 --- a/crates/tinymemory-module/src/chat_test.rs +++ b/crates/tinymemory-module/src/chat_test.rs @@ -3,9 +3,9 @@ use tinybus::broker::Broker; use tinybus::transport::memory::MemoryBus; use tinybus::{Connection, Result as BusResult}; -use tinyinference_core::message::{AssistantMessage, ContentBlock, Message}; -use tinyinference_core::model::{ModelRequest, ModelResponse}; -use tinyinference_core::usage::Usage; +use tinyinference_llm::message::{AssistantMessage, ContentBlock, Message}; +use tinyinference_llm::model::{ModelRequest, ModelResponse}; +use tinyinference_llm::usage::Usage; use super::{BusChatHost, CHAT_HOST_BUS_NAME, CHAT_HOST_OBJECT_PATH}; use crate::config::ModuleConfig; diff --git a/crates/tinymemory-module/tests/module_e2e.rs b/crates/tinymemory-module/tests/module_e2e.rs index afcdbabc..ff2960b5 100644 --- a/crates/tinymemory-module/tests/module_e2e.rs +++ b/crates/tinymemory-module/tests/module_e2e.rs @@ -123,13 +123,13 @@ impl HostChat { async fn complete( &self, _role: String, - _request: tinyinference_core::model::ModelRequest, - ) -> BusResult { - use tinyinference_core::message::{AssistantMessage, ContentBlock}; - use tinyinference_core::usage::Usage; + _request: tinyinference_llm::model::ModelRequest, + ) -> BusResult { + use tinyinference_llm::message::{AssistantMessage, ContentBlock}; + use tinyinference_llm::usage::Usage; std::future::ready(()).await; - Ok(tinyinference_core::model::ModelResponse { + Ok(tinyinference_llm::model::ModelResponse { message: AssistantMessage { id: None, content: vec![ContentBlock::Text("deterministic summary".into())], diff --git a/vendor/tinycortex b/vendor/tinycortex index 9a8167f9..1ce63400 160000 --- a/vendor/tinycortex +++ b/vendor/tinycortex @@ -1 +1 @@ -Subproject commit 9a8167f9dcc48ad82a509c2cbf111f01c85b1b4c +Subproject commit 1ce634005c3f9315bf8e2b1faf0ea3f5404d356a diff --git a/vendor/tinyinference b/vendor/tinyinference index 792028b6..bb0f820a 160000 --- a/vendor/tinyinference +++ b/vendor/tinyinference @@ -1 +1 @@ -Subproject commit 792028b6be2515ab4967ffa57e663eaa52b018e9 +Subproject commit bb0f820a246874dff7fff2569d8679303d354fb0 From a55cfeae31175b0559ca358b1b21f2fb2ae9e1a4 Mon Sep 17 00:00:00 2001 From: Steven Enamakel Date: Thu, 24 Sep 2026 21:57:44 +0530 Subject: [PATCH 7/8] chore: refresh TinyBus and TinyInference for module builds --- Cargo.lock | 46 ++++++++++++++++++++++++----- crates/tinymemory-core/Cargo.toml | 4 +-- crates/tinymemory-module/Cargo.toml | 2 +- vendor/tinybus | 2 +- vendor/tinyinference | 2 +- 5 files changed, 44 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8c57a64b..08de8c9b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -302,6 +302,15 @@ dependencies = [ "dirs-sys", ] +[[package]] +name = "dirs" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d57d423b3c82e89b9a24ca3091fee61f456a26edbd28d26c65906f4bc1dcd8f" +dependencies = [ + "dirs-sys", +] + [[package]] name = "dirs-sys" version = "0.5.0" @@ -1698,7 +1707,7 @@ dependencies = [ "async-trait", "block2", "chrono", - "dirs", + "dirs 7.0.0", "futures", "git2", "hex", @@ -1735,7 +1744,7 @@ dependencies = [ [[package]] name = "tinyinference-core" -version = "0.2.1" +version = "0.3.0" dependencies = [ "anyhow", "httpdate", @@ -1744,9 +1753,11 @@ dependencies = [ [[package]] name = "tinyinference-embeddings" -version = "0.2.1" +version = "0.3.0" dependencies = [ "async-trait", + "once_cell", + "regex", "reqwest", "serde", "serde_json", @@ -1759,7 +1770,7 @@ dependencies = [ [[package]] name = "tinyinference-llm" -version = "0.2.1" +version = "0.3.0" dependencies = [ "async-trait", "bytes", @@ -1770,9 +1781,9 @@ dependencies = [ "sha2 0.11.0", "thiserror", "tinyinference-core", + "tinytools-agent", "tokio", "tracing", - "url", ] [[package]] @@ -1841,7 +1852,7 @@ dependencies = [ "async-trait", "axum", "chrono", - "dirs", + "dirs 6.0.0", "log", "parking_lot", "rand 0.10.2", @@ -1854,7 +1865,6 @@ dependencies = [ "tempfile", "thiserror", "tinycortex", - "tinycortex-api", "tinyinference-embeddings", "tinyinference-llm", "tinymemory", @@ -1971,6 +1981,28 @@ dependencies = [ "uuid", ] +[[package]] +name = "tinytools" +version = "0.3.0" +source = "git+https://github.com/tinyhumansai/tinytools?rev=a5d04a7f3af0abc1dd748f87f94871b36ae9fe71#a5d04a7f3af0abc1dd748f87f94871b36ae9fe71" +dependencies = [ + "anyhow", + "async-trait", + "serde", + "serde_json", +] + +[[package]] +name = "tinytools-agent" +version = "0.3.0" +source = "git+https://github.com/tinyhumansai/tinytools?rev=a5d04a7f3af0abc1dd748f87f94871b36ae9fe71#a5d04a7f3af0abc1dd748f87f94871b36ae9fe71" +dependencies = [ + "regex", + "serde", + "serde_json", + "tinytools", +] + [[package]] name = "tinyvec" version = "1.12.0" diff --git a/crates/tinymemory-core/Cargo.toml b/crates/tinymemory-core/Cargo.toml index 28a9b47c..b9d79dba 100644 --- a/crates/tinymemory-core/Cargo.toml +++ b/crates/tinymemory-core/Cargo.toml @@ -32,8 +32,8 @@ tinycortex = { version = "0.1", features = ["obsidian", "persona", "people", "sy # Provider-neutral chat-model and embedding primitives used by the tree # summarizer and embedding factory. Agent runtime and session behavior do not # belong in the memory layer. -tinyinference-embeddings = "0.2" -tinyinference-llm = "0.2" +tinyinference-embeddings = "0.3" +tinyinference-llm = "0.3" anyhow = "1.0" async-trait = "0.1" # NO `git2` HERE, DELIBERATELY — do not add it back. `diff/` holds the ops and diff --git a/crates/tinymemory-module/Cargo.toml b/crates/tinymemory-module/Cargo.toml index e324b780..cddc6748 100644 --- a/crates/tinymemory-module/Cargo.toml +++ b/crates/tinymemory-module/Cargo.toml @@ -53,7 +53,7 @@ tinymemory-tinycortex = { path = "../tinymemory-tinycortex", features = ["memory # upstream, so a Linux or Windows artifact still compiles none of them. tinycortex = { version = "0.1", features = ["contacts"] } # Provider-neutral chat request and response types carried over TinyBus. -tinyinference-llm = "0.2" +tinyinference-llm = "0.3" # TinyBus provides the typed service interface and the dynamic module host ABI. # Reached by path now that this crate is its own workspace root: the nested # checkout's `[workspace.package]` resolves correctly from here. diff --git a/vendor/tinybus b/vendor/tinybus index 730b933b..b436e096 160000 --- a/vendor/tinybus +++ b/vendor/tinybus @@ -1 +1 @@ -Subproject commit 730b933b96f45fb99cfc4cdfd1e904e9393bdbf5 +Subproject commit b436e096b13aca68497ed881068a4ff96f4f7b19 diff --git a/vendor/tinyinference b/vendor/tinyinference index 92445ea5..72d030db 160000 --- a/vendor/tinyinference +++ b/vendor/tinyinference @@ -1 +1 @@ -Subproject commit 92445ea582c9b1c5dc78891ebbff4a817f9e8fa9 +Subproject commit 72d030db6a5be9c0fbdefe5e3fef7adfe8737719 From 5b82e7126e5cdb77154ecbee3653b60eac2f6750 Mon Sep 17 00:00:00 2001 From: Steven Enamakel Date: Thu, 24 Sep 2026 22:07:10 +0530 Subject: [PATCH 8/8] fix: refresh module lockfile and patched rustls --- crates/tinymemory-module/Cargo.lock | 138 ++++++++++------------------ 1 file changed, 48 insertions(+), 90 deletions(-) diff --git a/crates/tinymemory-module/Cargo.lock b/crates/tinymemory-module/Cargo.lock index 3ef19b21..84e40d33 100644 --- a/crates/tinymemory-module/Cargo.lock +++ b/crates/tinymemory-module/Cargo.lock @@ -275,6 +275,15 @@ dependencies = [ "dirs-sys", ] +[[package]] +name = "dirs" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d57d423b3c82e89b9a24ca3091fee61f456a26edbd28d26c65906f4bc1dcd8f" +dependencies = [ + "dirs-sys", +] + [[package]] name = "dirs-sys" version = "0.5.0" @@ -1349,9 +1358,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.43" +version = "0.23.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0283386ce02abc0151e1761d08802dfe86c173b0b494af5cbc086574e453da06" +checksum = "0d41d731c7d2f962d1ccc364cec258de3c0e93b38c2fb3ba97ac74513048d634" dependencies = [ "log", "once_cell", @@ -1489,15 +1498,6 @@ dependencies = [ "zmij", ] -[[package]] -name = "serde_spanned" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" -dependencies = [ - "serde", -] - [[package]] name = "serde_spanned" version = "1.1.1" @@ -1708,7 +1708,7 @@ dependencies = [ "thiserror", "tinybus-macros", "tokio", - "toml 0.8.23", + "toml", "tracing", "ureq", "zip", @@ -1743,7 +1743,7 @@ dependencies = [ "async-trait", "block2", "chrono", - "dirs", + "dirs 7.0.0", "futures", "git2", "hex", @@ -1765,7 +1765,7 @@ dependencies = [ "tinyinference-embeddings", "tinyinference-llm", "tokio", - "toml 1.1.4+spec-1.1.0", + "toml", "tracing", "uuid", "walkdir", @@ -1780,7 +1780,7 @@ dependencies = [ [[package]] name = "tinyinference-core" -version = "0.2.1" +version = "0.3.0" dependencies = [ "anyhow", "httpdate", @@ -1789,9 +1789,11 @@ dependencies = [ [[package]] name = "tinyinference-embeddings" -version = "0.2.1" +version = "0.3.0" dependencies = [ "async-trait", + "once_cell", + "regex", "reqwest", "serde", "serde_json", @@ -1804,7 +1806,7 @@ dependencies = [ [[package]] name = "tinyinference-llm" -version = "0.2.1" +version = "0.3.0" dependencies = [ "async-trait", "bytes", @@ -1815,9 +1817,9 @@ dependencies = [ "sha2 0.11.0", "thiserror", "tinyinference-core", + "tinytools-agent", "tokio", "tracing", - "url", ] [[package]] @@ -1826,7 +1828,6 @@ version = "1.16.0" dependencies = [ "anyhow", "async-trait", - "log", "serde", "serde_json", "tinymemory-api", @@ -1865,8 +1866,7 @@ dependencies = [ "anyhow", "async-trait", "chrono", - "dirs", - "futures", + "dirs 6.0.0", "log", "parking_lot", "rand", @@ -1878,15 +1878,12 @@ dependencies = [ "sha2 0.11.0", "thiserror", "tinycortex", - "tinycortex-api", "tinyinference-embeddings", "tinyinference-llm", "tinymemory-api", "tinymemory-sources", - "tinymemory-sync", "tokio", "tracing", - "url", "uuid", "walkdir", ] @@ -1930,23 +1927,12 @@ dependencies = [ "serde_json", "tinymemory-api", "tokio", - "toml 1.1.4+spec-1.1.0", + "toml", "tracing", "uuid", "walkdir", ] -[[package]] -name = "tinymemory-sync" -version = "0.1.0" -dependencies = [ - "chrono", - "log", - "serde", - "serde_json", - "tracing", -] - [[package]] name = "tinymemory-tinycortex" version = "0.1.0" @@ -1975,6 +1961,28 @@ dependencies = [ "zerovec", ] +[[package]] +name = "tinytools" +version = "0.3.0" +source = "git+https://github.com/tinyhumansai/tinytools?rev=a5d04a7f3af0abc1dd748f87f94871b36ae9fe71#a5d04a7f3af0abc1dd748f87f94871b36ae9fe71" +dependencies = [ + "anyhow", + "async-trait", + "serde", + "serde_json", +] + +[[package]] +name = "tinytools-agent" +version = "0.3.0" +source = "git+https://github.com/tinyhumansai/tinytools?rev=a5d04a7f3af0abc1dd748f87f94871b36ae9fe71#a5d04a7f3af0abc1dd748f87f94871b36ae9fe71" +dependencies = [ + "regex", + "serde", + "serde_json", + "tinytools", +] + [[package]] name = "tinyvec" version = "1.12.0" @@ -2041,18 +2049,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "toml" -version = "0.8.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" -dependencies = [ - "serde", - "serde_spanned 0.6.9", - "toml_datetime 0.6.11", - "toml_edit", -] - [[package]] name = "toml" version = "1.1.4+spec-1.1.0" @@ -2061,20 +2057,11 @@ checksum = "3aace63f4bbcdfc2c965b059de67119c89c4017a70d633be6c104910f67056f5" dependencies = [ "indexmap", "serde_core", - "serde_spanned 1.1.1", - "toml_datetime 1.1.1+spec-1.1.0", + "serde_spanned", + "toml_datetime", "toml_parser", "toml_writer", - "winnow 1.0.4", -] - -[[package]] -name = "toml_datetime" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" -dependencies = [ - "serde", + "winnow", ] [[package]] @@ -2086,35 +2073,15 @@ dependencies = [ "serde_core", ] -[[package]] -name = "toml_edit" -version = "0.22.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" -dependencies = [ - "indexmap", - "serde", - "serde_spanned 0.6.9", - "toml_datetime 0.6.11", - "toml_write", - "winnow 0.7.15", -] - [[package]] name = "toml_parser" version = "1.1.3+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d38ac1cf9b95face32296c0a3ede1fdc270627c9d9c02a7274dd6d960dc4d56" dependencies = [ - "winnow 1.0.4", + "winnow", ] -[[package]] -name = "toml_write" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" - [[package]] name = "toml_writer" version = "1.1.2+spec-1.1.0" @@ -2570,15 +2537,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" -[[package]] -name = "winnow" -version = "0.7.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" -dependencies = [ - "memchr", -] - [[package]] name = "winnow" version = "1.0.4"