@plur-ai/mcp 0.5.3 → 0.6.0
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 +17 -16
- package/dist/index.js +2 -2
- package/dist/{server-VFKTDY7O.js → server-5BXYBMHX.js} +23 -8
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -50,31 +50,32 @@ Your agent gets these tools automatically:
|
|
|
50
50
|
|
|
51
51
|
| Tool | What it does |
|
|
52
52
|
|------|-------------|
|
|
53
|
-
| `
|
|
54
|
-
| `
|
|
55
|
-
| `
|
|
56
|
-
| `
|
|
57
|
-
| `
|
|
58
|
-
| `
|
|
59
|
-
| `
|
|
60
|
-
| `
|
|
61
|
-
| `
|
|
62
|
-
| `
|
|
63
|
-
| `
|
|
64
|
-
| `
|
|
65
|
-
| `
|
|
66
|
-
| `
|
|
53
|
+
| `plur_session_start` | Start a session — injects relevant engrams for your task |
|
|
54
|
+
| `plur_learn` | Store a memory — correction, preference, convention, or decision |
|
|
55
|
+
| `plur_recall_hybrid` | **Best default** — BM25 + embeddings merged via RRF. Zero cost. |
|
|
56
|
+
| `plur_recall` | Keyword search (BM25 only, instant) |
|
|
57
|
+
| `plur_inject_hybrid` | Load relevant memories for the current task |
|
|
58
|
+
| `plur_feedback` | Rate a memory — trains relevance over time |
|
|
59
|
+
| `plur_forget` | Retire a memory (history preserved) |
|
|
60
|
+
| `plur_session_end` | End a session — captures summary and new learnings |
|
|
61
|
+
| `plur_capture` | Record a session event |
|
|
62
|
+
| `plur_timeline` | Query session history |
|
|
63
|
+
| `plur_ingest` | Extract learnings from text |
|
|
64
|
+
| `plur_sync` | Sync memory across machines via git |
|
|
65
|
+
| `plur_packs_install` | Install a shareable memory pack |
|
|
66
|
+
| `plur_packs_list` | List installed packs |
|
|
67
|
+
| `plur_status` | System health |
|
|
67
68
|
|
|
68
69
|
## Sync across machines
|
|
69
70
|
|
|
70
71
|
Your agent can sync memory to any git remote:
|
|
71
72
|
|
|
72
73
|
```
|
|
73
|
-
Agent:
|
|
74
|
+
Agent: plur_sync({ remote: "git@github.com:you/plur-memory.git" })
|
|
74
75
|
→ "Initialized and pushed."
|
|
75
76
|
|
|
76
77
|
# On another machine, same remote:
|
|
77
|
-
Agent:
|
|
78
|
+
Agent: plur_sync()
|
|
78
79
|
→ "Synced. Pulled 12 remote commits."
|
|
79
80
|
```
|
|
80
81
|
|
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { existsSync, readFileSync, writeFileSync, mkdirSync } from "fs";
|
|
5
5
|
import { join } from "path";
|
|
6
6
|
import { homedir } from "os";
|
|
7
|
-
var VERSION = "0.
|
|
7
|
+
var VERSION = "0.6.0";
|
|
8
8
|
var HELP = `plur-mcp v${VERSION} \u2014 persistent memory for AI agents
|
|
9
9
|
|
|
10
10
|
Usage:
|
|
@@ -143,7 +143,7 @@ if (arg === "init") {
|
|
|
143
143
|
process.exit(0);
|
|
144
144
|
}
|
|
145
145
|
if (arg === "serve" || arg === void 0) {
|
|
146
|
-
const { runStdio } = await import("./server-
|
|
146
|
+
const { runStdio } = await import("./server-5BXYBMHX.js");
|
|
147
147
|
runStdio().catch((err) => {
|
|
148
148
|
console.error("Failed to start PLUR MCP server:", err);
|
|
149
149
|
process.exit(1);
|
|
@@ -297,8 +297,15 @@ function getToolDefinitions() {
|
|
|
297
297
|
}
|
|
298
298
|
return { mode: "batch", results, summary };
|
|
299
299
|
}
|
|
300
|
-
|
|
301
|
-
|
|
300
|
+
try {
|
|
301
|
+
plur.feedback(args.id, args.signal);
|
|
302
|
+
return { success: true, id: args.id, signal: args.signal };
|
|
303
|
+
} catch (err) {
|
|
304
|
+
if (err.message?.includes("readonly store")) {
|
|
305
|
+
return { success: false, id: args.id, signal: args.signal, note: "Engram is in a readonly store. Feedback noted for this session but not persisted." };
|
|
306
|
+
}
|
|
307
|
+
throw err;
|
|
308
|
+
}
|
|
302
309
|
}
|
|
303
310
|
},
|
|
304
311
|
{
|
|
@@ -742,27 +749,35 @@ You have ${store_stats.engram_count} engrams but none matched this task. Call pl
|
|
|
742
749
|
},
|
|
743
750
|
{
|
|
744
751
|
name: "plur_session_end",
|
|
745
|
-
description:
|
|
752
|
+
description: `End a session. BEFORE calling this tool, review the conversation and extract learnings:
|
|
753
|
+
|
|
754
|
+
1. Corrections the user made ("no, use X not Y") \u2192 type: behavioral
|
|
755
|
+
2. Preferences stated ("always X", "never Y") \u2192 type: behavioral
|
|
756
|
+
3. Codebase patterns discovered (naming, structure, conventions) \u2192 type: architectural
|
|
757
|
+
4. Technical facts learned (API quirks, config, gotchas) \u2192 type: procedural
|
|
758
|
+
5. Terminology defined or clarified \u2192 type: terminological
|
|
759
|
+
|
|
760
|
+
Include at least one engram_suggestion if ANYTHING was learned. An empty suggestions array means nothing worth remembering happened \u2014 this should be rare.`,
|
|
746
761
|
annotations: { title: "Session End", destructiveHint: false, idempotentHint: false },
|
|
747
762
|
inputSchema: {
|
|
748
763
|
type: "object",
|
|
749
764
|
properties: {
|
|
750
|
-
summary: { type: "string", description: "What happened in this session" },
|
|
765
|
+
summary: { type: "string", description: "What happened in this session (1-3 sentences)" },
|
|
751
766
|
session_id: { type: "string", description: "Session ID from plur_session_start" },
|
|
752
767
|
engram_suggestions: {
|
|
753
768
|
type: "array",
|
|
754
769
|
items: {
|
|
755
770
|
type: "object",
|
|
756
771
|
properties: {
|
|
757
|
-
statement: { type: "string", description: "
|
|
772
|
+
statement: { type: "string", description: "A concise, reusable assertion. Write it as advice to your future self." },
|
|
758
773
|
type: { type: "string", enum: ["behavioral", "terminological", "procedural", "architectural"] }
|
|
759
774
|
},
|
|
760
775
|
required: ["statement"]
|
|
761
776
|
},
|
|
762
|
-
description: "
|
|
777
|
+
description: "Learnings from this session. Review the conversation for corrections, preferences, patterns, and technical facts before calling."
|
|
763
778
|
}
|
|
764
779
|
},
|
|
765
|
-
required: ["summary"]
|
|
780
|
+
required: ["summary", "engram_suggestions"]
|
|
766
781
|
},
|
|
767
782
|
handler: async (args, plur) => {
|
|
768
783
|
const summary = args.summary;
|
|
@@ -896,7 +911,7 @@ You have ${store_stats.engram_count} engrams but none matched this task. Call pl
|
|
|
896
911
|
|
|
897
912
|
// src/server.ts
|
|
898
913
|
import { z } from "zod";
|
|
899
|
-
var VERSION = "0.
|
|
914
|
+
var VERSION = "0.6.0";
|
|
900
915
|
var INSTRUCTIONS = `PLUR is your persistent memory. Corrections, preferences, and conventions persist across sessions as engrams.
|
|
901
916
|
|
|
902
917
|
REQUIRED at session boundaries:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plur-ai/mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"plur-mcp": "dist/index.js"
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@modelcontextprotocol/sdk": "^1.12.0",
|
|
14
14
|
"zod": "^3.23.0",
|
|
15
|
-
"@plur-ai/core": "0.
|
|
15
|
+
"@plur-ai/core": "0.6.0"
|
|
16
16
|
},
|
|
17
17
|
"devDependencies": {
|
|
18
18
|
"@types/node": "^25.5.0"
|