Skip to content

v0.1.2

Latest

Choose a tag to compare

@kriszyp kriszyp released this 27 Oct 18:04
f69d0ca

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.