Skip to content

feat(sdk): listMemories() pages every memory without a query (WALM-388) - #1020

Open
nikola0x0 wants to merge 1 commit into
devfrom
nikolale/walm-388-no-operation-to-list-stored-blobs-writes-are-unauditable-and
Open

nikola0x0 wants to merge 1 commit into
devfrom
nikolale/walm-388-no-operation-to-list-stored-blobs-writes-are-unauditable-and

Conversation

@nikola0x0

Copy link
Copy Markdown
Collaborator

Summary

Recall is similarity-ranked and limit-bounded, so a write cannot be confirmed and a namespace cannot be counted. This adds listMemories({ cursor?, limit?, namespace? }) over the existing GET /v1/owners/{owner}/memories (WALM-295), reusing resolveOwner() like listNamespaces().

  • Metadata only: no blob fetch, no decrypt, no SEAL session. No preview; use recall() for content.
  • namespace is filtered client-side because the relayer has no namespace filter. A filtered page can be empty while has_more is true; documented.
  • deleted / must_resync default to [] / false for relayers older than WALM-363.
  • New exported types: MemorySummary, DeletedMemorySummary, MemoriesResult, ListMemoriesOptions.
  • Docs: docs/sdk/api-reference.md.

Out of scope: the memwal_list MCP tool (needs the SDK published first), a server-side ?namespace= filter, the mock client.

Test

  • Unit: test/list-memories.test.mjs (9 tests). 148/148 pass.
  • Live (test/e2e/live.e2e.mjs, dev relayer): writes 3 memories to a fresh namespace, pages them with listMemories({ namespace }), checks exactly those 3 blob ids and listNamespaces() memory_count: 3. 12/12 pass.

Part of WALM-388.

@harrymove-ctrl harrymove-ctrl left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The feature design, types, offline mock, and documentation for listMemories() look great and address WALM-388 cleanly.

Please rebase onto current dev — there is a small conflict in packages/sdk/src/memwal.ts because PR #902 just landed on dev. Once rebased, this is ready to approve.

Recall is similarity-ranked and limit-bounded, so a write can't be
confirmed and a namespace can't be counted. listMemories() wraps the
existing GET /v1/owners/{owner}/memories and reuses resolveOwner().
Metadata only: no blob fetch, no decrypt.

The relayer has no namespace filter, so the optional namespace is
applied client-side; a filtered page can be empty while has_more is
true. Tombstone fields default for relayers older than WALM-363.
@nikola0x0
nikola0x0 force-pushed the nikolale/walm-388-no-operation-to-list-stored-blobs-writes-are-unauditable-and branch from 7e0fcff to aa42596 Compare September 25, 2026 06:47

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants