engram-mcp-server 1.6.1 → 1.7.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 +119 -20
- package/dist/constants.d.ts +1 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +1 -0
- package/dist/constants.js.map +1 -1
- package/dist/index.js +17 -6
- package/dist/index.js.map +1 -1
- package/dist/modes/universal.d.ts +3 -0
- package/dist/modes/universal.d.ts.map +1 -0
- package/dist/modes/universal.js +191 -0
- package/dist/modes/universal.js.map +1 -0
- package/dist/response.d.ts +2 -2
- package/dist/response.d.ts.map +1 -1
- package/dist/response.js +10 -4
- package/dist/response.js.map +1 -1
- package/dist/tools/dispatcher-memory.d.ts.map +1 -1
- package/dist/tools/dispatcher-memory.js +34 -7
- package/dist/tools/dispatcher-memory.js.map +1 -1
- package/dist/tools/find.d.ts +16 -1
- package/dist/tools/find.d.ts.map +1 -1
- package/dist/tools/find.js +57 -17
- package/dist/tools/find.js.map +1 -1
- package/dist/tools/sessions.d.ts +0 -1
- package/dist/tools/sessions.d.ts.map +1 -1
- package/dist/tools/sessions.js +89 -566
- package/dist/tools/sessions.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -21,7 +21,8 @@
|
|
|
21
21
|
- [Overview](#overview)
|
|
22
22
|
- [Why Engram?](#why-engram)
|
|
23
23
|
- [Installation (Auto & Manual)](#installation)
|
|
24
|
-
- [✨ What's New in v1.
|
|
24
|
+
- [✨ What's New in v1.7.0](#-whats-new-in-v170)
|
|
25
|
+
- [What's New in v1.6.0](#-whats-new-in-v160)
|
|
25
26
|
- [Features](#features)
|
|
26
27
|
- [Architecture](#architecture)
|
|
27
28
|
- [Tools Reference](#tools-reference)
|
|
@@ -54,6 +55,62 @@ Engram solves this by providing a **persistent brain** using a native SQLite (WA
|
|
|
54
55
|
|
|
55
56
|
---
|
|
56
57
|
|
|
58
|
+
## ✨ What's New in v1.7.0
|
|
59
|
+
|
|
60
|
+
**v1.7.0** is a precision token-efficiency release — six improvement tracks with zero breaking changes to the 4-dispatcher API surface.
|
|
61
|
+
|
|
62
|
+
### 🔧 MCP Validation Crash Fix (Critical)
|
|
63
|
+
|
|
64
|
+
`z.array(z.unknown())` produced invalid JSON Schema (missing `items`) on `files`, `changes`, and `decisions` input arrays — causing silent validation crashes on VS Code Copilot and Cursor. **Fixed** with fully typed Zod schemas in all three affected inputs.
|
|
65
|
+
|
|
66
|
+
### ⚡ Default Search Limit: 20 → 8
|
|
67
|
+
|
|
68
|
+
`engram_memory(action:"search")` now defaults to 8 results (`DEFAULT_SEARCH_LIMIT`). Typical lookups rarely need more. Still overridable via explicit `limit` param (up to 50).
|
|
69
|
+
|
|
70
|
+
### 📋 Convention Capping by Verbosity
|
|
71
|
+
|
|
72
|
+
Active conventions are sorted (enforced-first) and capped per verbosity: `nano`=0, `minimal`=5, `summary`=10, `full`=all. Total count + hint always returned.
|
|
73
|
+
|
|
74
|
+
### 🗂️ Tiered Tool Catalog (P2)
|
|
75
|
+
|
|
76
|
+
`buildToolCatalog(tier)` delivers the right detail level per agent:
|
|
77
|
+
|
|
78
|
+
- **Tier 2** (new agents) — full params ~1,200 tokens, once
|
|
79
|
+
- **Tier 1** (returning agents) — names + descriptions ~400 tokens
|
|
80
|
+
- **Tier 0** (familiar agents) — names only ~80 tokens
|
|
81
|
+
|
|
82
|
+
Delivery history tracked per `agent_name`. Recoverable anytime via `engram_find(action:"catalog")`.
|
|
83
|
+
|
|
84
|
+
### 🤖 Sub-Agent Session Mode (P3)
|
|
85
|
+
|
|
86
|
+
`engram_session(action:"start", agent_role:"sub", task_id:"T-42")` returns a focused context slice (~300-500 tokens) scoped to that task — instead of the full session boilerplate. Ideal for sub-agents spawned within an orchestrated multi-agent workflow.
|
|
87
|
+
|
|
88
|
+
### 🌐 Built-In Universal Mode (P4)
|
|
89
|
+
|
|
90
|
+
A single `engram` tool with an ~80 token schema — now available **inside the main server** without a separate proxy package:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# CLI flag
|
|
94
|
+
npx -y engram-mcp-server --mode=universal --project-root /your/project
|
|
95
|
+
|
|
96
|
+
# Environment variable
|
|
97
|
+
ENGRAM_MODE=universal npx -y engram-mcp-server --project-root /your/project
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
BM25 routing and fuzzy action resolution built-in. Use when you want minimal token overhead without running a separate proxy.
|
|
101
|
+
|
|
102
|
+
### 🗑️ 660 Lines of Dead Code Removed (P5)
|
|
103
|
+
|
|
104
|
+
`sessions.ts` shrank from 904 → 316 lines. The deleted `registerSessionTools()` registered old v1.5 individual tools that were never called post-v1.6 migration.
|
|
105
|
+
|
|
106
|
+
### 🔍 Smarter Convention Linting (P6)
|
|
107
|
+
|
|
108
|
+
`engram_find(action:"lint")` now extracts backtick-quoted identifiers for high-priority matching, uses whole-word regex (no false positives on shared stems), and has an expanded STOP_WORDS list. AR-06 agent rule updated to require `executive_summary` on `set_file_notes`.
|
|
109
|
+
|
|
110
|
+
> Full changelog: [RELEASE_NOTES.md](RELEASE_NOTES.md)
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
57
114
|
## ✨ What's New in v1.6.0
|
|
58
115
|
|
|
59
116
|
**v1.6.0** is the largest Engram release to date — fourteen feature tracks covering a complete lean-surface rearchitecture, deeper memory intelligence, smarter multi-agent coordination, and a new thin-client proxy.
|
|
@@ -118,12 +175,13 @@ New `packages/engram-thin-client/` proxy enables Anthropic's `defer_loading` bet
|
|
|
118
175
|
|
|
119
176
|
New `packages/engram-universal-thin-client/` proxy exposes Engram as a **single MCP tool** with an ~80-token schema — works with **every** MCP-compatible agent (Cursor, VS Code Copilot, Windsurf, Gemini CLI, GPT-based IDEs, Claude). BM25 routing maps free-text or near-miss action strings to the correct dispatcher. No Anthropic API required.
|
|
120
177
|
|
|
121
|
-
| Approach
|
|
122
|
-
|
|
123
|
-
| v1.5 (50+ tools)
|
|
124
|
-
| v1.6 dispatcher (4 tools)
|
|
125
|
-
| `engram-thin-client`
|
|
126
|
-
|
|
|
178
|
+
| Approach | Schema tokens/call | Works universally |
|
|
179
|
+
| ------------------------------- | ------------------ | ---------------------------- |
|
|
180
|
+
| v1.5 (50+ tools) | ~32,500 | ✅ |
|
|
181
|
+
| v1.6 dispatcher (4 tools) | ~1,600 | ✅ |
|
|
182
|
+
| `engram-thin-client` | ~0 (deferred) | ⚠️ Anthropic only |
|
|
183
|
+
| `engram-universal-client` proxy | ~80 | ✅ All agents |
|
|
184
|
+
| **v1.7 `--mode=universal`** | **~80** | ✅ **All agents (built-in)** |
|
|
127
185
|
|
|
128
186
|
> Full changelog: [RELEASE_NOTES.md](RELEASE_NOTES.md) · Previous release: **v1.5.0** — Multi-Agent Coordination, Trustworthy Context & Knowledge Intelligence.
|
|
129
187
|
|
|
@@ -182,30 +240,70 @@ engram install --ide <your-ide>
|
|
|
182
240
|
|
|
183
241
|
> **Note:** During install you may see `npm warn deprecated prebuild-install@7.1.3`. This is a cosmetic warning from a transitive dependency used to download SQLite prebuilt binaries. It does not affect functionality and is safe to ignore.
|
|
184
242
|
|
|
185
|
-
### Option 3: Universal
|
|
243
|
+
### Option 3: Universal Mode — Built-In Single-Tool Mode (v1.7+)
|
|
244
|
+
|
|
245
|
+
Starting with v1.7.0, the main server itself can expose a **single `engram` tool** (~80 token schema) via the `--mode=universal` flag — no separate proxy package needed. BM25 fuzzy routing and `discover` action built in.
|
|
186
246
|
|
|
187
|
-
|
|
247
|
+
**VS Code Copilot** (`.vscode/mcp.json`):
|
|
248
|
+
|
|
249
|
+
```json
|
|
250
|
+
{
|
|
251
|
+
"servers": {
|
|
252
|
+
"engram": {
|
|
253
|
+
"type": "stdio",
|
|
254
|
+
"command": "npx",
|
|
255
|
+
"args": [
|
|
256
|
+
"-y",
|
|
257
|
+
"engram-mcp-server",
|
|
258
|
+
"--mode=universal",
|
|
259
|
+
"--project-root",
|
|
260
|
+
"${workspaceFolder}"
|
|
261
|
+
]
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
**Cursor** (`~/.cursor/mcp.json`), **Claude Desktop**, **Windsurf** — same pattern with `--mode=universal` added to `args`.
|
|
268
|
+
|
|
269
|
+
Or set `ENGRAM_MODE=universal` as an environment variable instead of using the flag.
|
|
270
|
+
|
|
271
|
+
### Option 4: Universal Thin Client Package (Legacy — v1.6.x)
|
|
272
|
+
|
|
273
|
+
The original separate proxy package for maximum token efficiency. Still works; prefer Option 3 for v1.7+ installs.
|
|
188
274
|
|
|
189
275
|
**Cursor** (`~/.cursor/mcp.json`):
|
|
276
|
+
|
|
190
277
|
```json
|
|
191
278
|
{
|
|
192
279
|
"mcpServers": {
|
|
193
280
|
"engram": {
|
|
194
281
|
"command": "npx",
|
|
195
|
-
"args": [
|
|
282
|
+
"args": [
|
|
283
|
+
"-y",
|
|
284
|
+
"engram-universal-client",
|
|
285
|
+
"--project-root",
|
|
286
|
+
"/absolute/path/to/project"
|
|
287
|
+
]
|
|
196
288
|
}
|
|
197
289
|
}
|
|
198
290
|
}
|
|
199
291
|
```
|
|
200
292
|
|
|
201
293
|
**VS Code Copilot** (`.vscode/mcp.json`):
|
|
294
|
+
|
|
202
295
|
```json
|
|
203
296
|
{
|
|
204
297
|
"servers": {
|
|
205
298
|
"engram": {
|
|
206
299
|
"type": "stdio",
|
|
207
300
|
"command": "npx",
|
|
208
|
-
"args": [
|
|
301
|
+
"args": [
|
|
302
|
+
"-y",
|
|
303
|
+
"engram-universal-client",
|
|
304
|
+
"--project-root",
|
|
305
|
+
"${workspaceFolder}"
|
|
306
|
+
]
|
|
209
307
|
}
|
|
210
308
|
}
|
|
211
309
|
}
|
|
@@ -215,7 +313,7 @@ For maximum token efficiency across **any** MCP-compatible agent, use the univer
|
|
|
215
313
|
|
|
216
314
|
> The agent should call `engram({"action":"start"})` first. The response includes `tool_catalog` with all available actions.
|
|
217
315
|
|
|
218
|
-
### Option
|
|
316
|
+
### Option 5: Manual Configuration
|
|
219
317
|
|
|
220
318
|
If you prefer to configure manually, find your IDE below:
|
|
221
319
|
|
|
@@ -425,19 +523,20 @@ graph TB
|
|
|
425
523
|
|
|
426
524
|
## Tools Reference
|
|
427
525
|
|
|
428
|
-
Engram v1.
|
|
526
|
+
Engram v1.7.0 exposes **4 dispatcher tools** (or 1 tool in `--mode=universal`). Every operation routes through one of them via an `action` parameter. Token overhead is ~1,600 tokens for the standard surface, or ~80 tokens in universal mode — a ~95-99% reduction from the previous 50-tool surface.
|
|
429
527
|
|
|
430
528
|
> **Use `engram_find`** when you don't know the exact `action` name. It returns parameter schemas and descriptions for any operation.
|
|
431
529
|
|
|
432
530
|
### `engram_session` — Session Lifecycle
|
|
433
531
|
|
|
434
|
-
| Action
|
|
435
|
-
|
|
|
436
|
-
| `start`
|
|
437
|
-
| `
|
|
438
|
-
| `
|
|
439
|
-
| `
|
|
440
|
-
| `
|
|
532
|
+
| Action | Purpose |
|
|
533
|
+
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
534
|
+
| `start` | Begin a session. Returns context, agent rules, tool catalog, handoff_pending, abandoned_work, suggested_focus. Pass `verbosity` to control response depth. |
|
|
535
|
+
| `start` + `agent_role:"sub"` | **v1.7** Sub-agent mode. Pass `task_id` to receive focused context (~300-500t): task details, relevant files, matching decisions, and capped conventions only. |
|
|
536
|
+
| `end` | End session with a summary. Warns on unclosed claimed tasks. |
|
|
537
|
+
| `get_history` | Retrieve past session summaries. |
|
|
538
|
+
| `handoff` | Package open tasks, git branch, and instructions for the next agent. |
|
|
539
|
+
| `acknowledge_handoff` | Clear a pending handoff from future start responses. |
|
|
441
540
|
|
|
442
541
|
### `engram_memory` — All Memory Operations
|
|
443
542
|
|
package/dist/constants.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export declare const DB_VERSION = 15;
|
|
|
7
7
|
export declare const MAX_FILE_TREE_DEPTH = 5;
|
|
8
8
|
export declare const MAX_FILE_TREE_ENTRIES = 500;
|
|
9
9
|
export declare const MAX_SEARCH_RESULTS = 50;
|
|
10
|
+
export declare const DEFAULT_SEARCH_LIMIT = 8;
|
|
10
11
|
export declare const MAX_GIT_LOG_ENTRIES = 50;
|
|
11
12
|
export declare const MAX_RESPONSE_LENGTH = 50000;
|
|
12
13
|
export declare const DEFAULT_PAGINATION_LIMIT = 20;
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,WAAW,sBAAsB,CAAC;AAC/C,eAAO,MAAM,cAAc,EAAE,MAAqB,CAAC;AACnD,eAAO,MAAM,WAAW,WAAW,CAAC;AAGpC,eAAO,MAAM,WAAW,YAAY,CAAC;AACrC,eAAO,MAAM,YAAY,cAAc,CAAC;AACxC,eAAO,MAAM,UAAU,KAAK,CAAC;AAI7B,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AACzC,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAChD,eAAO,MAAM,eAAe,YAAY,CAAC;AACzC,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAC/C,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,iCAAiC,KAAK,CAAC;AACpD,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAGnC,eAAO,MAAM,aAAa,aAqBxB,CAAC;AAGH,eAAO,MAAM,eAAe,UAmB3B,CAAC;AAGF,eAAO,MAAM,gBAAgB,wDAAwD,CAAC;AACtF,eAAO,MAAM,WAAW,sBAAsB,CAAC;AAC/C,eAAO,MAAM,mBAAmB,kDAAkD,CAAC;AACnF,eAAO,MAAM,uBAAuB,mEAAmE,CAAC;AAGxG,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AACzD,eAAO,MAAM,0BAA0B,2BAA2B,CAAC;AACnE,eAAO,MAAM,yBAAyB,0BAA0B,CAAC;AACjE,eAAO,MAAM,yBAAyB,0BAA0B,CAAC;AACjE,eAAO,MAAM,4BAA4B,6BAA6B,CAAC;AACvE,eAAO,MAAM,4BAA4B,6BAA6B,CAAC;AACvE,eAAO,MAAM,4BAA4B,6BAA6B,CAAC;AAGvE,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAYnD,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,WAAW,sBAAsB,CAAC;AAC/C,eAAO,MAAM,cAAc,EAAE,MAAqB,CAAC;AACnD,eAAO,MAAM,WAAW,WAAW,CAAC;AAGpC,eAAO,MAAM,WAAW,YAAY,CAAC;AACrC,eAAO,MAAM,YAAY,cAAc,CAAC;AACxC,eAAO,MAAM,UAAU,KAAK,CAAC;AAI7B,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AACzC,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAChD,eAAO,MAAM,eAAe,YAAY,CAAC;AACzC,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAC/C,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,iCAAiC,KAAK,CAAC;AACpD,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAGnC,eAAO,MAAM,aAAa,aAqBxB,CAAC;AAGH,eAAO,MAAM,eAAe,UAmB3B,CAAC;AAGF,eAAO,MAAM,gBAAgB,wDAAwD,CAAC;AACtF,eAAO,MAAM,WAAW,sBAAsB,CAAC;AAC/C,eAAO,MAAM,mBAAmB,kDAAkD,CAAC;AACnF,eAAO,MAAM,uBAAuB,mEAAmE,CAAC;AAGxG,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AACzD,eAAO,MAAM,0BAA0B,2BAA2B,CAAC;AACnE,eAAO,MAAM,yBAAyB,0BAA0B,CAAC;AACjE,eAAO,MAAM,yBAAyB,0BAA0B,CAAC;AACjE,eAAO,MAAM,4BAA4B,6BAA6B,CAAC;AACvE,eAAO,MAAM,4BAA4B,6BAA6B,CAAC;AACvE,eAAO,MAAM,4BAA4B,6BAA6B,CAAC;AAGvE,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAYnD,CAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -18,6 +18,7 @@ export const DB_VERSION = 15; // V7 agent-safety, V8 ctx-pressure, V9 knowledge-
|
|
|
18
18
|
export const MAX_FILE_TREE_DEPTH = 5;
|
|
19
19
|
export const MAX_FILE_TREE_ENTRIES = 500;
|
|
20
20
|
export const MAX_SEARCH_RESULTS = 50;
|
|
21
|
+
export const DEFAULT_SEARCH_LIMIT = 8; // 8 gives headroom for noise; 50 (max) is available via explicit limit param
|
|
21
22
|
export const MAX_GIT_LOG_ENTRIES = 50;
|
|
22
23
|
export const MAX_RESPONSE_LENGTH = 50000;
|
|
23
24
|
export const DEFAULT_PAGINATION_LIMIT = 20;
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -24,6 +24,8 @@ import { registerSessionDispatcher } from "./tools/sessions.js";
|
|
|
24
24
|
import { registerMemoryDispatcher } from "./tools/dispatcher-memory.js";
|
|
25
25
|
import { registerAdminDispatcher } from "./tools/dispatcher-admin.js";
|
|
26
26
|
import { registerFindTool } from "./tools/find.js";
|
|
27
|
+
// ─── v1.7 Universal Mode — 1 tool ~80 token schema ──────────────────────────
|
|
28
|
+
import { registerUniversalMode } from "./modes/universal.js";
|
|
27
29
|
// ─── F7: record-commit — git hook handler ────────────────────────────
|
|
28
30
|
// Called by the Engram post-commit git hook after each git commit.
|
|
29
31
|
// Reads the last commit's changed files and records them in Engram's DB
|
|
@@ -108,12 +110,21 @@ async function main() {
|
|
|
108
110
|
name: SERVER_NAME,
|
|
109
111
|
version: SERVER_VERSION,
|
|
110
112
|
});
|
|
111
|
-
// ─── Register
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
113
|
+
// ─── Register Tools (mode-dependent) ──────────────────────────────────
|
|
114
|
+
const isUniversalMode = args.includes("--mode=universal") || process.env.ENGRAM_MODE === "universal";
|
|
115
|
+
if (isUniversalMode) {
|
|
116
|
+
// Universal mode: 1 "engram" tool, ~80 schema tokens. All agents.
|
|
117
|
+
registerUniversalMode(server);
|
|
118
|
+
log.info(`${SERVER_NAME} v${SERVER_VERSION} — universal mode (1 tool, ~80 schema tokens)`);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
// Standard mode: 4 dispatcher tools, ~1,600 schema tokens.
|
|
122
|
+
registerSessionDispatcher(server); // engram_session: start, end, get_history, handoff
|
|
123
|
+
registerMemoryDispatcher(server); // engram_memory: all memory operations via action enum
|
|
124
|
+
registerAdminDispatcher(server); // engram_admin: backup, restore, stats, health, config, scan
|
|
125
|
+
registerFindTool(server); // engram_find: catalog keyword search
|
|
126
|
+
log.info(`${SERVER_NAME} v${SERVER_VERSION} — standard mode (4 tools, ~1,600 schema tokens)`);
|
|
127
|
+
}
|
|
117
128
|
// ─── Connect Transport ───────────────────────────────────────────
|
|
118
129
|
const transportType = process.env.ENGRAM_TRANSPORT || "stdio";
|
|
119
130
|
if (transportType === "stdio") {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"universal.d.ts","sourceRoot":"","sources":["../../src/modes/universal.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA2EpE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoH7D"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// Engram — Universal Mode (--mode=universal | ENGRAM_MODE=universal)
|
|
3
|
+
//
|
|
4
|
+
// Registers a SINGLE "engram" tool (~80 token schema) instead of 4 dispatcher
|
|
5
|
+
// tools. BM25-style routing resolves any action to the correct dispatcher.
|
|
6
|
+
//
|
|
7
|
+
// Zero subprocess, zero route-table staleness — built into the main server.
|
|
8
|
+
// Tool catalog in start response uses engram({action:"X"}) syntax.
|
|
9
|
+
// ============================================================================
|
|
10
|
+
import { z } from "zod";
|
|
11
|
+
import { registerSessionDispatcher } from "../tools/sessions.js";
|
|
12
|
+
import { registerMemoryDispatcher } from "../tools/dispatcher-memory.js";
|
|
13
|
+
import { registerAdminDispatcher } from "../tools/dispatcher-admin.js";
|
|
14
|
+
import { registerFindTool } from "../tools/find.js";
|
|
15
|
+
import { MEMORY_CATALOG, ADMIN_CATALOG } from "../tools/find.js";
|
|
16
|
+
// ─── Handler Capturer ─────────────────────────────────────────────────────────
|
|
17
|
+
// Duck-typed minimal stub that captures tool handlers without exposing them.
|
|
18
|
+
class HandlerCapturer {
|
|
19
|
+
handlers = new Map();
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
21
|
+
registerTool(name, _schema, handler) {
|
|
22
|
+
this.handlers.set(name, handler);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
// ─── Action Routing Sets ──────────────────────────────────────────────────────
|
|
26
|
+
const SESSION_ACTIONS = new Set(["start", "end", "get_history", "handoff", "acknowledge_handoff"]);
|
|
27
|
+
const MEMORY_ACTIONS = new Set(Object.keys(MEMORY_CATALOG));
|
|
28
|
+
const ADMIN_ACTIONS = new Set(Object.keys(ADMIN_CATALOG));
|
|
29
|
+
const FIND_ACTIONS = new Set(["search", "lint", "discover"]);
|
|
30
|
+
function resolveDispatcher(action) {
|
|
31
|
+
if (SESSION_ACTIONS.has(action))
|
|
32
|
+
return "session";
|
|
33
|
+
if (MEMORY_ACTIONS.has(action))
|
|
34
|
+
return "memory";
|
|
35
|
+
if (ADMIN_ACTIONS.has(action))
|
|
36
|
+
return "admin";
|
|
37
|
+
if (FIND_ACTIONS.has(action))
|
|
38
|
+
return "find";
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* BM25-style fuzzy resolver for near-miss / partial action names.
|
|
43
|
+
* Returns the best matching action name, or null if confidence is too low.
|
|
44
|
+
*/
|
|
45
|
+
function fuzzyResolveAction(query) {
|
|
46
|
+
const q = query.toLowerCase().replace(/[^a-z_]/g, "");
|
|
47
|
+
const allActions = [
|
|
48
|
+
...Array.from(SESSION_ACTIONS).map(a => ({ action: a, dispatcher: "session" })),
|
|
49
|
+
...Array.from(MEMORY_ACTIONS).map(a => ({ action: a, dispatcher: "memory" })),
|
|
50
|
+
...Array.from(ADMIN_ACTIONS).map(a => ({ action: a, dispatcher: "admin" })),
|
|
51
|
+
...Array.from(FIND_ACTIONS).map(a => ({ action: a, dispatcher: "find" })),
|
|
52
|
+
];
|
|
53
|
+
let best = null;
|
|
54
|
+
let bestScore = 0;
|
|
55
|
+
for (const entry of allActions) {
|
|
56
|
+
const a = entry.action.replace(/_/g, "");
|
|
57
|
+
// Substring match
|
|
58
|
+
if (a.includes(q) || q.includes(a)) {
|
|
59
|
+
const score = Math.min(a.length, q.length) / Math.max(a.length, q.length);
|
|
60
|
+
if (score > bestScore) {
|
|
61
|
+
bestScore = score;
|
|
62
|
+
best = entry;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return bestScore >= 0.5 ? best : null;
|
|
67
|
+
}
|
|
68
|
+
// ─── Response Rewriter ────────────────────────────────────────────────────────
|
|
69
|
+
// Rewrites tool_catalog entries so the agent sees `engram({action:"X"})` syntax
|
|
70
|
+
// instead of `engram_memory(action:"X")` (which doesn't exist in universal mode).
|
|
71
|
+
function universalizeResponse(text) {
|
|
72
|
+
return text
|
|
73
|
+
.replace(/engram_memory\(action[=:"']+([^"')]+)["']\)/g, 'engram({action:"$1"})')
|
|
74
|
+
.replace(/engram_session\(action[=:"']+([^"')]+)["']\)/g, 'engram({action:"$1"})')
|
|
75
|
+
.replace(/engram_admin\(action[=:"']+([^"')]+)["']\)/g, 'engram({action:"$1"})')
|
|
76
|
+
.replace(/engram_find\(action[=:"']+([^"')]+)["']\)/g, 'engram({action:"$1"})')
|
|
77
|
+
.replace(/engram_find\(\{query/g, 'engram({action:"discover",query');
|
|
78
|
+
}
|
|
79
|
+
// ─── Universal Tool Registration ─────────────────────────────────────────────
|
|
80
|
+
export function registerUniversalMode(server) {
|
|
81
|
+
// ── Capture dispatcher handlers without exposing them as tools ──────────
|
|
82
|
+
const capturer = new HandlerCapturer();
|
|
83
|
+
registerSessionDispatcher(capturer);
|
|
84
|
+
registerMemoryDispatcher(capturer);
|
|
85
|
+
registerAdminDispatcher(capturer);
|
|
86
|
+
registerFindTool(capturer);
|
|
87
|
+
const sessionHandler = capturer.handlers.get("engram_session");
|
|
88
|
+
const memoryHandler = capturer.handlers.get("engram_memory");
|
|
89
|
+
const adminHandler = capturer.handlers.get("engram_admin");
|
|
90
|
+
const findHandler = capturer.handlers.get("engram_find");
|
|
91
|
+
// ── Register the single universal tool ─────────────────────────────────
|
|
92
|
+
server.registerTool("engram", {
|
|
93
|
+
title: "Engram",
|
|
94
|
+
description: `Persistent memory for AI agents. Pass any action + relevant params. Examples: engram({action:"start", agent_name:"claude", verbosity:"summary"}) — engram({action:"record_change", changes:[{...}]}) — engram({action:"search", query:"auth"}).`,
|
|
95
|
+
inputSchema: {
|
|
96
|
+
action: z.string().describe("Operation name. Examples: start, end, record_change, get_file_notes, set_file_notes, search, record_decision, create_task, backup. Use action:'discover' + query to look up any action."),
|
|
97
|
+
query: z.string().optional().describe("For action:'discover' — search the action catalog."),
|
|
98
|
+
},
|
|
99
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
|
|
100
|
+
}, async (rawParams) => {
|
|
101
|
+
const { action, ...rest } = rawParams;
|
|
102
|
+
const actionStr = String(action ?? "");
|
|
103
|
+
// ── discover action: BM25 catalog search ───────────────────────────
|
|
104
|
+
if (actionStr === "discover" || actionStr === "find" || !actionStr) {
|
|
105
|
+
const query = (rest.query ?? rest.content ?? "");
|
|
106
|
+
const allActions = [
|
|
107
|
+
...Array.from(SESSION_ACTIONS).map(a => ({ call: `engram({action:"${a}"})`, dispatcher: "engram_session" })),
|
|
108
|
+
...Array.from(MEMORY_ACTIONS).map(a => {
|
|
109
|
+
const entry = MEMORY_CATALOG[a];
|
|
110
|
+
return { call: `engram({action:"${a}"})`, desc: entry?.desc, params: entry?.params, dispatcher: "engram_memory" };
|
|
111
|
+
}),
|
|
112
|
+
...Array.from(ADMIN_ACTIONS).map(a => {
|
|
113
|
+
const entry = ADMIN_CATALOG[a];
|
|
114
|
+
return { call: `engram({action:"${a}"})`, desc: entry?.desc, params: entry?.params, dispatcher: "engram_admin" };
|
|
115
|
+
}),
|
|
116
|
+
];
|
|
117
|
+
if (!query) {
|
|
118
|
+
return {
|
|
119
|
+
content: [{ type: "text", text: JSON.stringify({
|
|
120
|
+
note: "Universal mode — all actions via engram({action:'...',...params}).",
|
|
121
|
+
session_actions: Array.from(SESSION_ACTIONS),
|
|
122
|
+
memory_actions: Array.from(MEMORY_ACTIONS),
|
|
123
|
+
admin_actions: Array.from(ADMIN_ACTIONS),
|
|
124
|
+
tip: "Pass action:'discover' + query to search for specific actions and their param schemas.",
|
|
125
|
+
}) }],
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
const q = query.toLowerCase();
|
|
129
|
+
const matches = allActions.filter(a => a.call.toLowerCase().includes(q) ||
|
|
130
|
+
(a.desc ?? "").toLowerCase().includes(q) ||
|
|
131
|
+
(a.params ?? "").toLowerCase().includes(q)).slice(0, 8);
|
|
132
|
+
return {
|
|
133
|
+
content: [{ type: "text", text: JSON.stringify({ query, matches, message: `Found ${matches.length} actions matching "${query}".` }) }],
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
// ── Exact action routing ────────────────────────────────────────────
|
|
137
|
+
let dispatcher = resolveDispatcher(actionStr);
|
|
138
|
+
let resolvedAction = actionStr;
|
|
139
|
+
// ── Fuzzy routing for near-miss actions ───────────────────────────
|
|
140
|
+
if (!dispatcher) {
|
|
141
|
+
const fuzzy = fuzzyResolveAction(actionStr);
|
|
142
|
+
if (fuzzy) {
|
|
143
|
+
dispatcher = fuzzy.dispatcher;
|
|
144
|
+
resolvedAction = fuzzy.action;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
if (!dispatcher) {
|
|
148
|
+
const suggestions = [
|
|
149
|
+
...Array.from(SESSION_ACTIONS),
|
|
150
|
+
...Array.from(MEMORY_ACTIONS),
|
|
151
|
+
...Array.from(ADMIN_ACTIONS),
|
|
152
|
+
].filter(a => a.includes(actionStr.substring(0, 4)));
|
|
153
|
+
return {
|
|
154
|
+
isError: true,
|
|
155
|
+
content: [{ type: "text", text: JSON.stringify({
|
|
156
|
+
error: `Unknown action: "${actionStr}". Use action:"discover" with a query to find the right action.`,
|
|
157
|
+
suggestions: suggestions.slice(0, 5),
|
|
158
|
+
}) }],
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
// ── Dispatch to the captured handler ──────────────────────────────
|
|
162
|
+
const params = { action: resolvedAction, ...rest };
|
|
163
|
+
let result;
|
|
164
|
+
switch (dispatcher) {
|
|
165
|
+
case "session":
|
|
166
|
+
result = await sessionHandler(params);
|
|
167
|
+
break;
|
|
168
|
+
case "memory":
|
|
169
|
+
result = await memoryHandler(params);
|
|
170
|
+
break;
|
|
171
|
+
case "admin":
|
|
172
|
+
result = await adminHandler(params);
|
|
173
|
+
break;
|
|
174
|
+
case "find":
|
|
175
|
+
result = await findHandler(params);
|
|
176
|
+
break;
|
|
177
|
+
}
|
|
178
|
+
// ── Rewrite response for universal syntax ─────────────────────────
|
|
179
|
+
const mcpResult = result;
|
|
180
|
+
if (mcpResult?.content) {
|
|
181
|
+
mcpResult.content = mcpResult.content.map(c => {
|
|
182
|
+
if (c.type === "text" && c.text) {
|
|
183
|
+
return { ...c, text: universalizeResponse(c.text) };
|
|
184
|
+
}
|
|
185
|
+
return c;
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
return mcpResult;
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=universal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"universal.js","sourceRoot":"","sources":["../../src/modes/universal.ts"],"names":[],"mappings":"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"}
|
package/dist/response.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ interface McpToolResponse {
|
|
|
10
10
|
isError?: boolean;
|
|
11
11
|
}
|
|
12
12
|
/**
|
|
13
|
-
* Return a successful JSON response.
|
|
13
|
+
* Return a successful JSON response (compact, no whitespace, nulls stripped).
|
|
14
14
|
*/
|
|
15
15
|
export declare function success(data: Record<string, unknown>): McpToolResponse;
|
|
16
16
|
/**
|
|
@@ -22,7 +22,7 @@ export declare function textResult(message: string): McpToolResponse;
|
|
|
22
22
|
*/
|
|
23
23
|
export declare function error(message: string): McpToolResponse;
|
|
24
24
|
/**
|
|
25
|
-
* Return an error response with structured data.
|
|
25
|
+
* Return an error response with structured data (compact, nulls stripped).
|
|
26
26
|
*/
|
|
27
27
|
export declare function errorWithData(message: string, data: Record<string, unknown>): McpToolResponse;
|
|
28
28
|
export {};
|
package/dist/response.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../src/response.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,UAAU,eAAe;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;
|
|
1
|
+
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../src/response.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,UAAU,eAAe;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AASD;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe,CAItE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAI3D;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAKtD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe,CAK7F"}
|
package/dist/response.js
CHANGED
|
@@ -2,11 +2,17 @@
|
|
|
2
2
|
// Engram MCP Server — Response Helpers
|
|
3
3
|
// ============================================================================
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
5
|
+
* JSON replacer that strips null values — reduces response token cost by 3-8%.
|
|
6
|
+
*/
|
|
7
|
+
function stripNulls(_key, value) {
|
|
8
|
+
return value === null ? undefined : value;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Return a successful JSON response (compact, no whitespace, nulls stripped).
|
|
6
12
|
*/
|
|
7
13
|
export function success(data) {
|
|
8
14
|
return {
|
|
9
|
-
content: [{ type: "text", text: JSON.stringify(data,
|
|
15
|
+
content: [{ type: "text", text: JSON.stringify(data, stripNulls) }],
|
|
10
16
|
};
|
|
11
17
|
}
|
|
12
18
|
/**
|
|
@@ -27,12 +33,12 @@ export function error(message) {
|
|
|
27
33
|
};
|
|
28
34
|
}
|
|
29
35
|
/**
|
|
30
|
-
* Return an error response with structured data.
|
|
36
|
+
* Return an error response with structured data (compact, nulls stripped).
|
|
31
37
|
*/
|
|
32
38
|
export function errorWithData(message, data) {
|
|
33
39
|
return {
|
|
34
40
|
isError: true,
|
|
35
|
-
content: [{ type: "text", text: JSON.stringify({ error: message, ...data },
|
|
41
|
+
content: [{ type: "text", text: JSON.stringify({ error: message, ...data }, stripNulls) }],
|
|
36
42
|
};
|
|
37
43
|
}
|
|
38
44
|
//# sourceMappingURL=response.js.map
|
package/dist/response.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response.js","sourceRoot":"","sources":["../src/response.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,uCAAuC;AACvC,+EAA+E;AAW/E;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,IAA6B;IACjD,OAAO;QACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"response.js","sourceRoot":"","sources":["../src/response.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,uCAAuC;AACvC,+EAA+E;AAW/E;;GAEG;AACH,SAAS,UAAU,CAAC,IAAY,EAAE,KAAc;IAC5C,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,IAA6B;IACjD,OAAO;QACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;KACtE,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe;IACtC,OAAO;QACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;KAC7C,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,OAAe;IACjC,OAAO;QACH,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;KAC7C,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,IAA6B;IACxE,OAAO;QACH,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC;KAC7F,CAAC;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher-memory.d.ts","sourceRoot":"","sources":["../../src/tools/dispatcher-memory.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA6KpE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"dispatcher-memory.d.ts","sourceRoot":"","sources":["../../src/tools/dispatcher-memory.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA6KpE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA84BhE"}
|