Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions crates/tinymemory-api/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,6 @@
//! and how strongly, with the buffer that queues it left in the engine crate.
//! - [`composio`]: the connector-sync vocabulary — [`composio::SyncOutcome`],
//! [`composio::NormalizedTask`], [`composio::SyncState`],
//! [`composio::ToolScope`] and friends. **Not** [`host::composio`], which is
//! the *client* seam: connections, execute responses and the capability
//! matrix a host serves to the memory layer. This one is what a provider run
//! produces and remembers; that one is how it reaches Composio at all.
//! - [`recall`]: the borrowed [`recall::RecallOpts`] and owned, serde-derived
//! [`recall::OwnedRecallOpts`] recall filters (both re-exported from
//! [`types`]).
Expand Down
3 changes: 1 addition & 2 deletions crates/tinymemory-core/src/sources/readers/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,7 @@ pub trait SourceReader: Send + Sync {
/// forgotten under it, and removing it would orphan every row already written.
/// What left is the *reading*: an OAuth connector is reached with a credential
/// this crate does not hold and must not, so the host fetches through
/// `tinyconnectors` and hands the records here through
/// [`crate::provider::MemorySourceSink`].
/// `tinyconnectors` and hands the records to the memory provider.
///
/// Returning `Option` rather than a stub reader that always errors is
/// deliberate: a caller has to decide what to do about a kind it cannot read,
Expand Down
9 changes: 1 addition & 8 deletions crates/tinymemory-core/src/sources/reconcile.rs
Original file line number Diff line number Diff line change
Expand Up @@ -119,14 +119,7 @@ pub async fn apply_composio_source_caps_migration() -> Result<(), String> {
Ok(())
}

fn title_case(s: &str) -> String {
let mut chars = s.chars();
match chars.next() {
None => String::new(),
Some(c) => c.to_uppercase().chain(chars).collect(),
}
}

#[cfg(test)]
fn short_id(id: &str) -> &str {
// Show only the last 8 Unicode scalar values to keep labels compact.
// Byte-slicing would panic if the cut point isn't a UTF-8 boundary.
Expand Down
1 change: 0 additions & 1 deletion crates/tinymemory-core/src/store/identity.rs
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,6 @@ pub fn is_self_identity_any_toolkit(kind: IdentityKind, raw_value: &str) -> bool

/// Render a compact section for prompt injection. Skips `user_id` (not
/// human-readable), prefixes `handle` with `@`.

/// Fold a token to the shape used in a profile-store key.
pub fn normalize_token(raw: &str) -> String {
let mut out = String::with_capacity(raw.len());
Expand Down
10 changes: 3 additions & 7 deletions crates/tinymemory-core/src/sync/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,22 @@
//!
//! One top-level module hosting every "pull data from upstream → land it
//! in memory_store" pipeline, organised by the kind of upstream it talks
//! to. Three kinds today:
//! to. Two kinds today:
//!
//! - [`composio`] — Composio managed connectors (Gmail, Slack, GitHub,
//! Notion, Linear, ClickUp, …). Pulls via the Composio Edge API.
//! - [`workspace`] — Local workspace connectors (filesystem vault sync,
//! local-only ingest, agent-experience capture from the harness).
//! - [`mcp`] — Third-party MCP servers. Pulls via the MCP protocol over
//! stdio/SSE.
//!
//! All three implement the `SyncPipeline` trait so the orchestrator
//! Both implement the `SyncPipeline` trait so the orchestrator
//! (`memory::jobs`) can drive them uniformly: `init` → `tick` → repeat.
//!
//! ## Layer rules
//!
//! - Sync writes into `memory_store` only — never directly into trees,
//! never directly into unified. The ingest pipeline in
//! `memory::ingest_pipeline` is the seam.
//! - One pipeline per upstream service. Composio's GitHub and MCP's
//! GitHub are distinct pipelines because they hit different surfaces
//! with different cadence and auth.
//! - One pipeline per upstream service.
//! - Pipeline modules own their own types, their own state, and their
//! own retry/backoff policy. The trait gives the orchestrator a
//! single shape to call; everything else stays local.
Expand Down
11 changes: 0 additions & 11 deletions crates/tinymemory-core/src/test_seams.rs
Original file line number Diff line number Diff line change
Expand Up @@ -87,14 +87,3 @@ impl crate::chat_host::ChatHost for TestChatHost {
(true, "test chat host reports a summariser")
}
}

/// A [`ComposioHost`] that behaves like a signed-out user.
///
/// Every method reports the no-backend-session state, which is the branch the
/// core's own tests exercise; a stub that succeeded would need to fake Composio

/// The message [`TestComposioHost`] reports. Matches the shape the real backend
/// client produces when no session token is stored, which is what the tests
/// assert on.
const NO_SESSION: &str = "composio backend mode unavailable: no backend session token. \
Sign in first (auth_store_session).";
8 changes: 4 additions & 4 deletions crates/tinymemory-module/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading