You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Fixed
A memory longer than the embedding model's context window no longer fails its write. Every embedding request now carries at most limits.embeddingInputChars characters (default 6000, 2–100000) of the memory content or search query, cut at a code-point boundary; the stored content stays complete and full-text search still covers all of it. Before, an OpenAI-compatible backend answered such content with HTTP 400, which failed PUT, MCP remember and revise with a 500, and aborted a whole POST /Memory/import batch. The bound counts characters, not tokens: 6000 fits a 2,048-token window for typical English prose, while token-dense content (CJK text, code) or a smaller window needs a lower value (#30).
Changed
Memories longer than 6000 characters are now embedded from their first 6000 characters, on every backend. A deployment whose model holds more can raise limits.embeddingInputChars (up to limits.contentChars). Existing rows keep their vectors until their content is revised.
Added
scripts/copy-memories.mjs copies every memory from one app running this plugin to another (withdrawn, superseded and expired ones included), checks the target before writing, and verifies it afterwards (#27).
GET /Memory/?includeWithdrawn=true lists withdrawn memories too, for a super_user only (403 include_withdrawn_forbidden for anyone else); the response then carries includeWithdrawn: true.
POST /Memory/import rows may carry contentFlag and needsReview, kept on a created row, so a copied memory stays quarantined and its pending review survives.