From 769fad29a5f9f7a0b8f8a091b03b5e052e741695 Mon Sep 17 00:00:00 2001 From: Nocturnal Date: Mon, 24 Aug 2026 18:04:08 +0700 Subject: [PATCH 1/3] Add composio gmail_sync_query to scope background Gmail ingestion New [composio] gmail_sync_query config field (e.g. 'label:brain'), plumbed ComposioConfig -> memory host ComposioMode.gmail_sync_query -> tinymemory's Gmail sync pipeline filter. Only matching messages auto-ingest into memory; on-demand Gmail access is unaffected. Blocked on tinyhumansai/tinymemory#94 (the pipeline half); the vendor/tinymemory submodule bump follows once that merges. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01UMNxXS5ucxpzNoHnuhyQPu --- src/openhuman/config/schema/tools/integrations.rs | 10 ++++++++++ src/openhuman/memory/host.rs | 3 +++ 2 files changed, 13 insertions(+) diff --git a/src/openhuman/config/schema/tools/integrations.rs b/src/openhuman/config/schema/tools/integrations.rs index 1d06016afea..6667c571a0b 100644 --- a/src/openhuman/config/schema/tools/integrations.rs +++ b/src/openhuman/config/schema/tools/integrations.rs @@ -63,6 +63,15 @@ pub struct ComposioConfig { /// the keychain-backed value over this field. Default `None`. #[serde(default)] pub api_key: Option, + + /// Gmail search query that scopes the background Gmail→memory sync to + /// matching messages only (full Gmail search syntax — `label:brain`, + /// `from:someone`, `newer_than:30d`; space-separated clauses AND). + /// Empty (the default) = the whole inbox window. On-demand agent access + /// to Gmail is unaffected — this gates only what auto-ingests into + /// memory. + #[serde(default)] + pub gmail_sync_query: String, } fn default_entity_id() -> String { @@ -78,6 +87,7 @@ impl Default for ComposioConfig { triage_disabled_toolkits: Vec::new(), mode: default_composio_mode(), api_key: None, + gmail_sync_query: String::new(), } } } diff --git a/src/openhuman/memory/host.rs b/src/openhuman/memory/host.rs index b7eaf8a4a78..a5f152b0a6f 100644 --- a/src/openhuman/memory/host.rs +++ b/src/openhuman/memory/host.rs @@ -138,6 +138,9 @@ impl MemoryHostConfig for Config { entity_id: self.composio.entity_id.clone(), api_key: self.composio.api_key.clone(), triage_disabled: self.composio.triage_disabled, + gmail_sync_query: Some(self.composio.gmail_sync_query.trim()) + .filter(|q| !q.is_empty()) + .map(str::to_string), } } From 3cb24b69aabf073570ac90c0803853a66cb00227 Mon Sep 17 00:00:00 2001 From: Steven Enamakel Date: Sat, 12 Sep 2026 07:30:00 +0300 Subject: [PATCH 2/3] fix(memory): align tinymemory pin with main Co-authored-by: Medulla --- vendor/tinymemory | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/tinymemory b/vendor/tinymemory index be6524c8031..cc090323956 160000 --- a/vendor/tinymemory +++ b/vendor/tinymemory @@ -1 +1 @@ -Subproject commit be6524c80313da3be61bd42c270dc3ca6a225f77 +Subproject commit cc0903239563b7448bbacc759867524507545c9d From eee8000f2162cb46c0d545ed437653ca6ee8eded Mon Sep 17 00:00:00 2001 From: Steven Enamakel Date: Sat, 12 Sep 2026 07:38:29 +0300 Subject: [PATCH 3/3] chore(host): remove stale merge conflict markers in composio config Removed the leftover conflict block that was keeping the old `gmail_sync_query` assignment from a previous merge, restoring the intended behaviour of trimming and forwarding the query string from configuration. Auto-committed-on: dragonfly Co-authored-by: Medulla --- src/openhuman/memory/host.rs | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/openhuman/memory/host.rs b/src/openhuman/memory/host.rs index 5754517c3d0..29aa51ecaa2 100644 --- a/src/openhuman/memory/host.rs +++ b/src/openhuman/memory/host.rs @@ -138,20 +138,9 @@ impl MemoryHostConfig for Config { entity_id: self.composio.entity_id.clone(), api_key: self.composio.api_key.clone(), triage_disabled: self.composio.triage_disabled, -<<<<<<< HEAD gmail_sync_query: Some(self.composio.gmail_sync_query.trim()) .filter(|q| !q.is_empty()) .map(str::to_string), -======= - // `None` = the whole inbox window, which is exactly what this host - // does today. The field is new on the contract (tinymemory#115-ish) - // and scopes the *background* Gmail sync to a search query; - // OpenHuman's `[integrations.composio]` has no such setting, so - // there is nothing to forward and inventing a default here would - // silently narrow what gets synced. Exposing it needs a config - // field, its schema and a migration — a follow-up, not this branch. - gmail_sync_query: None, ->>>>>>> refs/remotes/upstream/main } }