mirror of
https://github.com/JackChen-me/open-multi-agent.git
synced 2026-10-23 03:24:25 -05:00
* feat: expose custom MemoryStore via TeamConfig.sharedMemoryStore (#156) The MemoryStore interface was already public, and SharedMemory / TeamInfo already used the interface internally. This adds the final user-config wire so integrators can attach custom backends (Redis, Postgres, Engram, etc.) without hacking SharedMemory private fields. Priority: sharedMemoryStore > sharedMemory: true > no memory. Fully backward-compatible: existing sharedMemory: true users see no change. SDK-only: the CLI cannot pass runtime objects through JSON config. Closes #156. * fix: validate sharedMemoryStore shape and reject from CLI JSON Addresses Codex P2 review on #157. Plain objects from untrusted JSON could previously reach `new SharedMemory(plainObject)` and crash later on the first `.set`/`.list` call with a cryptic TypeError. Defense-in-depth: - SharedMemory constructor performs a runtime shape check and throws a clear TypeError if the provided store does not implement get/set/list/delete/clear. - CLI `asTeamConfig` explicitly rejects `sharedMemoryStore` in JSON with a message pointing to the SDK path, since this field is documented SDK-only. Adds 4 tests covering malformed stores (plain object, partial interface, null, Team constructor path). * fix: route falsy-but-present sharedMemoryStore through shape check Addresses Codex finding 2 on #157. The truthy gate silently skipped falsy values (null, 0, ''), letting config bugs downgrade to the default in-memory store or no memory instead of failing fast. Switched to `!== undefined` so any present value reaches SharedMemory's runtime shape check and throws a clear TypeError. Adds 2 tests: null as a bogus store throws; omitting the field still honors `sharedMemory: true`.