@bli-cockpit/memory-mcp 0.1.1 → 0.1.2
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 +8 -0
- package/dist/server.js +12 -1
- package/package.json +2 -2
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 ${
|
|
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.
|
|
3
|
+
"version": "0.1.2",
|
|
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.
|
|
31
|
+
"@bli-cockpit/telemetry-core": "0.1.27",
|
|
32
32
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
33
33
|
"zod": "^4.3.6"
|
|
34
34
|
},
|