openclaw - 💡(How to fix) Fix Feature: bundled @openclaw/memory-lancedb should register publicArtifacts.listArtifacts for memory-wiki bridge parity with memory-core

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Bundled @openclaw/memory-lancedb (in this monorepo at extensions/memory-lancedb/) does not register the publicArtifacts.listArtifacts capability that memory-wiki bridge mode consumes. When plugins.slots.memory is set to memory-lancedb, the wiki bridge returns 0 artifacts despite MEMORY.md, daily memory notes, and dream-report markdown all being present on disk.

Bundled memory-core implements the contract cleanly at extensions/memory-core/index.ts:178 (compiled at dist/extensions/memory-core/index.js:247-253):

api.registerMemoryCapability({
    ...,
    publicArtifacts: { async listArtifacts(params) {
        const { listMemoryCorePublicArtifacts } = await import("../../public-artifacts-6GujWdJO.js");
        return await listMemoryCorePublicArtifacts(params);
    } },
});

Root Cause

Bundled @openclaw/memory-lancedb (in this monorepo at extensions/memory-lancedb/) does not register the publicArtifacts.listArtifacts capability that memory-wiki bridge mode consumes. When plugins.slots.memory is set to memory-lancedb, the wiki bridge returns 0 artifacts despite MEMORY.md, daily memory notes, and dream-report markdown all being present on disk.

Bundled memory-core implements the contract cleanly at extensions/memory-core/index.ts:178 (compiled at dist/extensions/memory-core/index.js:247-253):

api.registerMemoryCapability({
    ...,
    publicArtifacts: { async listArtifacts(params) {
        const { listMemoryCorePublicArtifacts } = await import("../../public-artifacts-6GujWdJO.js");
        return await listMemoryCorePublicArtifacts(params);
    } },
});

Fix Action

Fix / Workaround

A third-party OpenClaw operator patched their installed @openclaw/memory-lancedb to register publicArtifacts.listArtifacts and reported successful first-load:

  • 120 artifacts exported (3 memory-root, 114 daily-note, 3 dream-report, 1 generated curated-memory markdown)
  • No vectors and no LanceDB internals leaked through the public surface
  • node --check passed on the patched file

Code Example

api.registerMemoryCapability({
    ...,
    publicArtifacts: { async listArtifacts(params) {
        const { listMemoryCorePublicArtifacts } = await import("../../public-artifacts-6GujWdJO.js");
        return await listMemoryCorePublicArtifacts(params);
    } },
});

---

$ grep -rE "publicArtifacts|listArtifacts|registerMemoryCapability" \
    .../extensions/memory-lancedb/dist/
# empty — no matches

$ grep -nE "publicArtifacts|listArtifacts|registerMemoryCapability" \
    .npm-global/.../memory-core/dist/index.js
247:    api.registerMemoryCapability({
251:        publicArtifacts: { async listArtifacts(params) {
252:            const { listMemoryCorePublicArtifacts } = await import("../../public-artifacts-6GujWdJO.js");
253:            return await listMemoryCorePublicArtifacts(params);
RAW_BUFFERClick to expand / collapse

Summary

Bundled @openclaw/memory-lancedb (in this monorepo at extensions/memory-lancedb/) does not register the publicArtifacts.listArtifacts capability that memory-wiki bridge mode consumes. When plugins.slots.memory is set to memory-lancedb, the wiki bridge returns 0 artifacts despite MEMORY.md, daily memory notes, and dream-report markdown all being present on disk.

Bundled memory-core implements the contract cleanly at extensions/memory-core/index.ts:178 (compiled at dist/extensions/memory-core/index.js:247-253):

api.registerMemoryCapability({
    ...,
    publicArtifacts: { async listArtifacts(params) {
        const { listMemoryCorePublicArtifacts } = await import("../../public-artifacts-6GujWdJO.js");
        return await listMemoryCorePublicArtifacts(params);
    } },
});

Verification on v2026.5.12

$ grep -rE "publicArtifacts|listArtifacts|registerMemoryCapability" \
    .../extensions/memory-lancedb/dist/
# empty — no matches

$ grep -nE "publicArtifacts|listArtifacts|registerMemoryCapability" \
    .npm-global/.../memory-core/dist/index.js
247:    api.registerMemoryCapability({
251:        publicArtifacts: { async listArtifacts(params) {
252:            const { listMemoryCorePublicArtifacts } = await import("../../public-artifacts-6GujWdJO.js");
253:            return await listMemoryCorePublicArtifacts(params);

Context: scope rule from #81321

#81321 closed the Honcho equivalent request as external-plugin scope, citing VISION.md (external plugins host in their own repos, ClawHub handles distribution). That rule doesn't apply here: bundled @openclaw/memory-lancedb lives in this repo at extensions/memory-lancedb/. Its package.json repository field is https://github.com/openclaw/openclaw. It's one of two memory-kind slot options shipped in core; the other (memory-core) implements the contract.

Independent proof the implementation is small

A third-party OpenClaw operator patched their installed @openclaw/memory-lancedb to register publicArtifacts.listArtifacts and reported successful first-load:

  • 120 artifacts exported (3 memory-root, 114 daily-note, 3 dream-report, 1 generated curated-memory markdown)
  • No vectors and no LanceDB internals leaked through the public surface
  • node --check passed on the patched file

That suggests a contained PR mirroring memory-core's listMemoryCorePublicArtifacts import + delegation would close the gap without core changes.

Request

Add publicArtifacts.listArtifacts registration to bundled @openclaw/memory-lancedb, following the memory-core pattern (delegate to a shared or memory-lancedb-specific listPublicArtifacts helper that surfaces MEMORY.md, daily notes, and dream-report markdown — no vectors, no LanceDB internals).

Alternative: if this is intentionally out of scope, please document explicitly in concepts/active-memory.md and concepts/memory-wiki.md that memory-lancedb slot does not support bridge mode, so users don't silently end up with a starved bridge.

Related

  • #81321 / #81809 (Honcho — external-plugin scope, closed)
  • #82977 (active-memory third-party plugin incompatibility — open, related but distinct: that's about AM tool-propagation; this is about bridge artifact export)

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

openclaw - 💡(How to fix) Fix Feature: bundled @openclaw/memory-lancedb should register publicArtifacts.listArtifacts for memory-wiki bridge parity with memory-core