From a15080b2bb4be2ca2679e2b29b0abb7d4df7c3de Mon Sep 17 00:00:00 2001 From: renovate-bot Date: Thu, 11 Jun 2026 10:26:43 +0000 Subject: [PATCH 1/4] chore(deps): update dependency @types/node to v25.9.3 --- mcp-wrapper/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mcp-wrapper/package-lock.json b/mcp-wrapper/package-lock.json index 3d9bcdc..eca248f 100644 --- a/mcp-wrapper/package-lock.json +++ b/mcp-wrapper/package-lock.json @@ -517,9 +517,9 @@ } }, "node_modules/@types/node": { - "version": "25.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.1.tgz", - "integrity": "sha512-xfrlY7UD5rMJk3ZVJP8BNzS28J36YJg+xp+LPXV1TdWxr8uMH5A860QNxYDGQe/ylDSgjxE52Q9VnO7p75tJxg==", + "version": "25.9.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.3.tgz", + "integrity": "sha512-603BddQMv3pUcr4U2dhujk83N2tTDVr/34wII2B6bJy6g+8WD6yUb11jszNs0gdi4PesVWl7ABt8nYMVpnLUcg==", "dev": true, "license": "MIT", "dependencies": { From 1b7c89de3bd24a4195f7bbb428a6144360b3e45d Mon Sep 17 00:00:00 2001 From: Apunkt Date: Fri, 12 Jun 2026 17:54:44 +0200 Subject: [PATCH 2/4] Fix QdrantStore.all_records missing with_vectors=True Qdrant's scroll() defaults to returning only payloads, not vectors. Without with_vectors=True, all 1963 records had empty embeddings, causing community detection to fail (0 communities) and topology to show insufficient_data. Now 1959/1963 records have 1024-dim embeddings and 1844 communities are detected. --- src/iai_mcp/qdrant_store.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/iai_mcp/qdrant_store.py b/src/iai_mcp/qdrant_store.py index ec6222d..1cc21da 100644 --- a/src/iai_mcp/qdrant_store.py +++ b/src/iai_mcp/qdrant_store.py @@ -644,6 +644,7 @@ class QdrantStore: offset=offset, scroll_filter=table_filter, with_payload=True, + with_vectors=True, ) all_points.extend(points) if next_offset is None: From 2cab42355f58dd0ce8bda84caf0d6f72acc26f00 Mon Sep 17 00:00:00 2001 From: Apunkt Date: Fri, 12 Jun 2026 18:07:24 +0200 Subject: [PATCH 3/4] Fix CLS clustering: include temporal_next edges in cluster building _build_hebbian_clusters() only used hebbian edges, but 97% of hebbian edges are self-loops from reinforce_record(). Only 7 are cross-record. temporal_next edges (140) provide the cross-record connectivity needed to form clusters >= CLUSTER_MIN_SIZE. Without them, consolidation never creates summaries, no consolidated_from edges exist, and the graph remains fragmented with 514 isolated nodes and max CC=58. --- src/iai_mcp/sleep.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/iai_mcp/sleep.py b/src/iai_mcp/sleep.py index e3e6c5b..f2d9b1c 100644 --- a/src/iai_mcp/sleep.py +++ b/src/iai_mcp/sleep.py @@ -296,16 +296,22 @@ def run_light_consolidation( def _build_hebbian_clusters(store: MemoryStore) -> list[list[UUID]]: - """Find connected components in the hebbian edge graph with size >= CLUSTER_MIN_SIZE.""" + """Find connected components in the hebbian+temporal_next edge graph + with size >= CLUSTER_MIN_SIZE. + + Hebbian edges capture semantic similarity (dedup/reinforce); + temporal_next edges capture sequential proximity (same-session inserts + within 5 minutes). Both are valid signals for CLS clustering. + """ edges_df = store.db.open_table(EDGES_TABLE).to_pandas() if edges_df.empty: return [] - hebbian = edges_df[edges_df["edge_type"] == "hebbian"] - if hebbian.empty: + relevant = edges_df[edges_df["edge_type"].isin(("hebbian", "temporal_next"))] + if relevant.empty: return [] adj: dict[UUID, set[UUID]] = {} - for _, row in hebbian.iterrows(): + for _, row in relevant.iterrows(): src = UUID(row["src"]) dst = UUID(row["dst"]) adj.setdefault(src, set()).add(dst) From bc3fc9d347e199239cb2fafa1ff6b3a912cda7a2 Mon Sep 17 00:00:00 2001 From: renovate-bot Date: Fri, 12 Jun 2026 16:27:03 +0000 Subject: [PATCH 4/4] chore(deps): update dependency @types/node to v25.9.3 --- mcp-wrapper/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mcp-wrapper/package-lock.json b/mcp-wrapper/package-lock.json index 3d9bcdc..eca248f 100644 --- a/mcp-wrapper/package-lock.json +++ b/mcp-wrapper/package-lock.json @@ -517,9 +517,9 @@ } }, "node_modules/@types/node": { - "version": "25.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.1.tgz", - "integrity": "sha512-xfrlY7UD5rMJk3ZVJP8BNzS28J36YJg+xp+LPXV1TdWxr8uMH5A860QNxYDGQe/ylDSgjxE52Q9VnO7p75tJxg==", + "version": "25.9.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.3.tgz", + "integrity": "sha512-603BddQMv3pUcr4U2dhujk83N2tTDVr/34wII2B6bJy6g+8WD6yUb11jszNs0gdi4PesVWl7ABt8nYMVpnLUcg==", "dev": true, "license": "MIT", "dependencies": {