openclaw/extensions/memory-core
Michiel van den Donker 2c716f5677
fix: enforce memory search session visibility (#70761) (thanks @nefainl)
* [EV-001] memory-core: filter memory_search session hits by visibility

- Move session visibility + listSpawnedSessionKeys to plugin-sdk; sync test
  hook with sessions-resolution __testing.setDepsForTest
- Extract loadCombinedSessionStoreForGateway to config/sessions; re-export
  from gateway session-utils
- Add session-transcript-hit stem resolver for builtin + QMD paths
- Post-filter memory_search results before citations/recall; fail closed when
  requester session key missing; optional corpus=sessions
- Tests: stem extraction, visibility filter smoke, existing suites green

* chore: sync plugin-sdk exports for session-transcript-hit and session-visibility

Run pnpm plugin-sdk:sync-exports so package.json exports match
scripts/lib/plugin-sdk-entrypoints.json. Fixes contract tests and
lint:plugins:plugin-sdk-subpaths-exported for memory-core imports.

* fix(EV-001): cross-agent session memory hits + hoist combined store load

- resolveTranscriptStemToSessionKeys: stop filtering by requester agentId so
  keys from other agents reach createSessionVisibilityGuard (a2a + visibility=all).
- Re-export loadCombinedSessionStoreForGateway from session-transcript-hit;
  filterMemorySearchHitsBySessionVisibility loads the combined store once per pass.
- Drop unused agentId from filter params; extend tests (Greptile/Codex review).

* fix(memory_search): honor corpus=sessions before maxResults cap

Pass sources into MemoryIndexManager.search so FTS/vector queries add
source IN (...) before ranking and top-N slice (Codex: non-session hits
could fill the window).

QMD path: oversample fetch limit for single-source recall, filter by
source, then diversify/clamp to the requested maxResults.

Wire corpus=sessions from tools; extend MemorySearchManager opts and
wrappers.

* fix(memory_search): apply corpus=memory source filter like sessions

Pass sources: ["memory"] into manager.search so maxResults applies only
within the memory index; post-filter for defense in depth. Document
corpus=memory in the tool description.

* fix: scope qmd session memory search

* fix: enforce memory search session visibility (#70761) (thanks @nefainl)

---------

Co-authored-by: NefAI <info@nefai.nl>
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-04-25 09:30:21 +05:30
..
src fix: enforce memory search session visibility (#70761) (thanks @nefainl) 2026-04-25 09:30:21 +05:30
api.ts Fix dreaming replay, repair polluted artifacts, and gate wiki tabs (#65138) 2026-04-12 00:25:11 -05:00
cli-metadata.ts
index.test.ts perf: narrow memory core test imports 2026-04-24 03:46:18 +01:00
index.ts fix: enforce memory search session visibility (#70761) (thanks @nefainl) 2026-04-25 09:30:21 +05:30
manager-runtime.ts
openclaw.plugin.json fix(memory-core): declare local memoryEmbeddingProviders contract (#70873) 2026-04-24 03:09:49 +01:00
package.json chore(deps): update workspace dependencies 2026-04-24 16:55:08 +01:00
runtime-api.ts Fix dreaming replay, repair polluted artifacts, and gate wiki tabs (#65138) 2026-04-12 00:25:11 -05:00
tsconfig.json chore(plugins): bulk add package boundary tsconfig rollout 2026-04-07 08:48:23 +01:00