@memnexus-ai/typescript-sdk 1.59.17 → 1.59.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -3419,6 +3419,13 @@ var MemoriesService = class extends BaseService {
3419
3419
  * Retrieve the current HEAD version of a named memory by its user-assigned name.
3420
3420
  Supports the same detail levels as GET /api/memories/{id}.
3421
3421
 
3422
+ 404 semantics: a 404 does NOT always mean the name was never created. It
3423
+ is also returned when the name's current head was superseded, contradicted,
3424
+ or duplicated and left with no successor version carrying the name (an
3425
+ integrity condition — an orphaned head). Only current (or legacy
3426
+ unstamped) heads are served; a superseded head is never returned as stale
3427
+ content. Callers must not assume 404 == never-existed.
3428
+
3422
3429
  * @param name - Memory name (kebab-case, 2-64 chars)
3423
3430
  * @param detail - Detail level: minimal (raw memory), standard (default, + topics/entities/facts/relationships), full (+ conversation context and relationship previews)
3424
3431
  */
@@ -3502,9 +3509,12 @@ var MemoriesService = class extends BaseService {
3502
3509
  * Atomically append a block to a named memory
3503
3510
  * Atomically appends a text block to a named memory, eliminating the
3504
3511
  read-modify-write clobber that concurrent full-content updates cause on
3505
- shared named memories. The server reads the current head, concatenates
3506
- `existing + separator + block`, and writes a new version under the
3507
- NameLock with an internal compare-and-swap + bounded retry — so
3512
+ shared named memories. Each append runs inside a single transaction that
3513
+ holds the per-name NameLock end to end: it acquires the lock, reads the
3514
+ current head UNDER the lock, concatenates `existing + separator + block`,
3515
+ and writes the new version — all before releasing the lock. Concurrent
3516
+ appends therefore QUEUE on the lock and serialize (the same mechanism the
3517
+ full-content PUT path uses); there is no compare-and-swap retry loop, so
3508
3518
  simultaneous appends all survive and the client needs no retry logic.
3509
3519
  Content is decrypted, assembled, size-checked, and re-encrypted
3510
3520
  server-side; plaintext is never returned to other callers.