@bli-cockpit/memory-mcp 0.1.1 → 0.1.3

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/README.md CHANGED
@@ -132,6 +132,14 @@ memories it has today. The **remote** is the identity, so every worktree of one
132
132
  repo shares a space. A folder that is not a git repository still gets its own
133
133
  space (`dir_<name>__<sha16>`), because a folder is a legitimate workspace.
134
134
 
135
+ One repository can still have TWO tags on the shelf — the vendor's, kept
136
+ verbatim when its memories were imported, and the one derived above. Tower
137
+ reconciles them server-side (`agent_memory_container_aliases`, BLI-3620):
138
+ `search_memory` is answered from every tag that names the same space, and
139
+ `save_memory` lands in the canonical one. That is why a saved memory can report
140
+ a space you did not pass — the tool names where the row actually went, not what
141
+ it asked for.
142
+
135
143
  ## The stdio contract
136
144
 
137
145
  **stdout carries the JSON-RPC stream and nothing else.** Every operational
package/dist/server.js CHANGED
@@ -200,6 +200,11 @@ export function createServer(deps) {
200
200
  return textResult(lines.join("\n"), {
201
201
  query: args.query,
202
202
  containerTag,
203
+ // BLI-3620: every space the door actually searched. One repository can
204
+ // have two container tags — the vendor's and the one this scheme
205
+ // derives — and the alias table is what makes a question asked under
206
+ // either find both. Echoed so a caller can see it happened.
207
+ searchedContainerTags: response.body.containerTags ?? [containerTag],
203
208
  results,
204
209
  recent,
205
210
  degraded: response.body.degraded ?? null,
@@ -227,10 +232,16 @@ export function createServer(deps) {
227
232
  return doorFailure("save", response);
228
233
  const outcome = String(response.body.outcome ?? "created");
229
234
  const id = response.body.id === null ? "—" : String(response.body.id ?? "—");
235
+ // BLI-3620: the space the SERVER used, which is the canonical tag when
236
+ // this repository has more than one on the shelf. Saying the tag we sent
237
+ // would name a space the row is not in.
238
+ const landedIn = typeof response.body.containerTag === "string" && response.body.containerTag
239
+ ? response.body.containerTag
240
+ : containerTag;
230
241
  const embedNote = response.body.embedded === false && response.body.embedSkippedReason
231
242
  ? ` It was stored without a search vector (${String(response.body.embedSkippedReason)}), so it is findable by keyword and not yet by meaning.`
232
243
  : "";
233
- return textResult(`Memory ${outcome} in ${containerTag} (id: ${id}).${embedNote}`, response.body);
244
+ return textResult(`Memory ${outcome} in ${landedIn} (id: ${id}).${embedNote}`, response.body);
234
245
  });
235
246
  server.registerTool("update_memory", {
236
247
  title: "Correct a memory",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bli-cockpit/memory-mcp",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "private": false,
5
5
  "description": "BLI Memory — an MCP server for the memory layer BLI owns (save, search, update, forget).",
6
6
  "type": "module",
@@ -28,7 +28,7 @@
28
28
  "start": "node dist/index.js"
29
29
  },
30
30
  "dependencies": {
31
- "@bli-cockpit/telemetry-core": "0.1.26",
31
+ "@bli-cockpit/telemetry-core": "0.1.28",
32
32
  "@modelcontextprotocol/sdk": "^1.29.0",
33
33
  "zod": "^4.3.6"
34
34
  },