engram-mcp-server 1.2.8 → 1.4.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 +131 -24
- package/dist/constants.d.ts +12 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +19 -1
- package/dist/constants.js.map +1 -1
- package/dist/database.d.ts +9 -0
- package/dist/database.d.ts.map +1 -1
- package/dist/database.js +16 -0
- package/dist/database.js.map +1 -1
- package/dist/index.js +16 -1
- package/dist/index.js.map +1 -1
- package/dist/installer/config-writer.d.ts +11 -2
- package/dist/installer/config-writer.d.ts.map +1 -1
- package/dist/installer/config-writer.js +28 -3
- package/dist/installer/config-writer.js.map +1 -1
- package/dist/installer/ide-detector.d.ts.map +1 -1
- package/dist/installer/ide-detector.js +10 -6
- package/dist/installer/ide-detector.js.map +1 -1
- package/dist/installer/index.d.ts.map +1 -1
- package/dist/installer/index.js +156 -23
- package/dist/installer/index.js.map +1 -1
- package/dist/repositories/changes.repo.d.ts.map +1 -1
- package/dist/repositories/changes.repo.js +5 -3
- package/dist/repositories/changes.repo.js.map +1 -1
- package/dist/repositories/config.repo.d.ts +5 -0
- package/dist/repositories/config.repo.d.ts.map +1 -1
- package/dist/repositories/config.repo.js +8 -0
- package/dist/repositories/config.repo.js.map +1 -1
- package/dist/repositories/decisions.repo.d.ts +8 -0
- package/dist/repositories/decisions.repo.d.ts.map +1 -1
- package/dist/repositories/decisions.repo.js +23 -0
- package/dist/repositories/decisions.repo.js.map +1 -1
- package/dist/repositories/file-notes.repo.d.ts +9 -0
- package/dist/repositories/file-notes.repo.d.ts.map +1 -1
- package/dist/repositories/file-notes.repo.js +22 -4
- package/dist/repositories/file-notes.repo.js.map +1 -1
- package/dist/response.d.ts +1 -0
- package/dist/response.d.ts.map +1 -1
- package/dist/response.js.map +1 -1
- package/dist/services/index.d.ts +2 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +1 -0
- package/dist/services/index.js.map +1 -1
- package/dist/services/update.service.d.ts +29 -0
- package/dist/services/update.service.d.ts.map +1 -0
- package/dist/services/update.service.js +166 -0
- package/dist/services/update.service.js.map +1 -0
- package/dist/tools/backup.d.ts.map +1 -1
- package/dist/tools/backup.js +20 -45
- package/dist/tools/backup.js.map +1 -1
- package/dist/tools/changes.d.ts.map +1 -1
- package/dist/tools/changes.js +24 -33
- package/dist/tools/changes.js.map +1 -1
- package/dist/tools/compaction.d.ts.map +1 -1
- package/dist/tools/compaction.js +19 -72
- package/dist/tools/compaction.js.map +1 -1
- package/dist/tools/conventions.d.ts.map +1 -1
- package/dist/tools/conventions.js +9 -18
- package/dist/tools/conventions.js.map +1 -1
- package/dist/tools/decisions.d.ts.map +1 -1
- package/dist/tools/decisions.js +71 -45
- package/dist/tools/decisions.js.map +1 -1
- package/dist/tools/export-import.d.ts.map +1 -1
- package/dist/tools/export-import.js +21 -35
- package/dist/tools/export-import.js.map +1 -1
- package/dist/tools/file-notes.d.ts.map +1 -1
- package/dist/tools/file-notes.js +58 -36
- package/dist/tools/file-notes.js.map +1 -1
- package/dist/tools/intelligence.d.ts.map +1 -1
- package/dist/tools/intelligence.js +109 -164
- package/dist/tools/intelligence.js.map +1 -1
- package/dist/tools/milestones.d.ts.map +1 -1
- package/dist/tools/milestones.js +6 -10
- package/dist/tools/milestones.js.map +1 -1
- package/dist/tools/scheduler.d.ts.map +1 -1
- package/dist/tools/scheduler.js +42 -89
- package/dist/tools/scheduler.js.map +1 -1
- package/dist/tools/sessions.d.ts.map +1 -1
- package/dist/tools/sessions.js +131 -226
- package/dist/tools/sessions.js.map +1 -1
- package/dist/tools/stats.d.ts.map +1 -1
- package/dist/tools/stats.js +169 -8
- package/dist/tools/stats.js.map +1 -1
- package/dist/tools/tasks.d.ts.map +1 -1
- package/dist/tools/tasks.js +9 -20
- package/dist/tools/tasks.js.map +1 -1
- package/dist/utils.d.ts +9 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +18 -0
- package/dist/utils.js.map +1 -1
- package/package.json +60 -52
- package/scripts/inject-release-notes.js +66 -0
- package/dist/installer.d.ts +0 -2
- package/dist/installer.d.ts.map +0 -1
- package/dist/installer.js +0 -315
- package/dist/installer.js.map +0 -1
- package/dist/src/constants.d.ts +0 -21
- package/dist/src/constants.d.ts.map +0 -1
- package/dist/src/constants.js +0 -81
- package/dist/src/constants.js.map +0 -1
- package/dist/src/database.d.ts +0 -32
- package/dist/src/database.d.ts.map +0 -1
- package/dist/src/database.js +0 -143
- package/dist/src/database.js.map +0 -1
- package/dist/src/errors.d.ts +0 -40
- package/dist/src/errors.d.ts.map +0 -1
- package/dist/src/errors.js +0 -63
- package/dist/src/errors.js.map +0 -1
- package/dist/src/index.d.ts +0 -3
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -89
- package/dist/src/index.js.map +0 -1
- package/dist/src/installer/config-writer.d.ts +0 -25
- package/dist/src/installer/config-writer.d.ts.map +0 -1
- package/dist/src/installer/config-writer.js +0 -86
- package/dist/src/installer/config-writer.js.map +0 -1
- package/dist/src/installer/ide-configs.d.ts +0 -19
- package/dist/src/installer/ide-configs.d.ts.map +0 -1
- package/dist/src/installer/ide-configs.js +0 -131
- package/dist/src/installer/ide-configs.js.map +0 -1
- package/dist/src/installer/ide-detector.d.ts +0 -6
- package/dist/src/installer/ide-detector.d.ts.map +0 -1
- package/dist/src/installer/ide-detector.js +0 -45
- package/dist/src/installer/ide-detector.js.map +0 -1
- package/dist/src/installer/index.d.ts +0 -2
- package/dist/src/installer/index.d.ts.map +0 -1
- package/dist/src/installer/index.js +0 -229
- package/dist/src/installer/index.js.map +0 -1
- package/dist/src/logger.d.ts +0 -10
- package/dist/src/logger.d.ts.map +0 -1
- package/dist/src/logger.js +0 -51
- package/dist/src/logger.js.map +0 -1
- package/dist/src/migrations.d.ts +0 -4
- package/dist/src/migrations.d.ts.map +0 -1
- package/dist/src/migrations.js +0 -343
- package/dist/src/migrations.js.map +0 -1
- package/dist/src/repositories/changes.repo.d.ts +0 -35
- package/dist/src/repositories/changes.repo.d.ts.map +0 -1
- package/dist/src/repositories/changes.repo.js +0 -53
- package/dist/src/repositories/changes.repo.js.map +0 -1
- package/dist/src/repositories/config.repo.d.ts +0 -11
- package/dist/src/repositories/config.repo.d.ts.map +0 -1
- package/dist/src/repositories/config.repo.js +0 -38
- package/dist/src/repositories/config.repo.js.map +0 -1
- package/dist/src/repositories/conventions.repo.d.ts +0 -15
- package/dist/src/repositories/conventions.repo.d.ts.map +0 -1
- package/dist/src/repositories/conventions.repo.js +0 -39
- package/dist/src/repositories/conventions.repo.js.map +0 -1
- package/dist/src/repositories/decisions.repo.d.ts +0 -19
- package/dist/src/repositories/decisions.repo.d.ts.map +0 -1
- package/dist/src/repositories/decisions.repo.js +0 -48
- package/dist/src/repositories/decisions.repo.js.map +0 -1
- package/dist/src/repositories/events.repo.d.ts +0 -34
- package/dist/src/repositories/events.repo.d.ts.map +0 -1
- package/dist/src/repositories/events.repo.js +0 -71
- package/dist/src/repositories/events.repo.js.map +0 -1
- package/dist/src/repositories/file-notes.repo.d.ts +0 -26
- package/dist/src/repositories/file-notes.repo.d.ts.map +0 -1
- package/dist/src/repositories/file-notes.repo.js +0 -55
- package/dist/src/repositories/file-notes.repo.js.map +0 -1
- package/dist/src/repositories/index.d.ts +0 -38
- package/dist/src/repositories/index.d.ts.map +0 -1
- package/dist/src/repositories/index.js +0 -41
- package/dist/src/repositories/index.js.map +0 -1
- package/dist/src/repositories/milestones.repo.d.ts +0 -10
- package/dist/src/repositories/milestones.repo.d.ts.map +0 -1
- package/dist/src/repositories/milestones.repo.js +0 -20
- package/dist/src/repositories/milestones.repo.js.map +0 -1
- package/dist/src/repositories/sessions.repo.d.ts +0 -27
- package/dist/src/repositories/sessions.repo.d.ts.map +0 -1
- package/dist/src/repositories/sessions.repo.js +0 -61
- package/dist/src/repositories/sessions.repo.js.map +0 -1
- package/dist/src/repositories/snapshot.repo.d.ts +0 -11
- package/dist/src/repositories/snapshot.repo.d.ts.map +0 -1
- package/dist/src/repositories/snapshot.repo.js +0 -17
- package/dist/src/repositories/snapshot.repo.js.map +0 -1
- package/dist/src/repositories/tasks.repo.d.ts +0 -40
- package/dist/src/repositories/tasks.repo.d.ts.map +0 -1
- package/dist/src/repositories/tasks.repo.js +0 -90
- package/dist/src/repositories/tasks.repo.js.map +0 -1
- package/dist/src/response.d.ts +0 -28
- package/dist/src/response.d.ts.map +0 -1
- package/dist/src/response.js +0 -38
- package/dist/src/response.js.map +0 -1
- package/dist/src/scripts/install-hooks.d.ts +0 -3
- package/dist/src/scripts/install-hooks.d.ts.map +0 -1
- package/dist/src/scripts/install-hooks.js +0 -89
- package/dist/src/scripts/install-hooks.js.map +0 -1
- package/dist/src/services/compaction.service.d.ts +0 -27
- package/dist/src/services/compaction.service.d.ts.map +0 -1
- package/dist/src/services/compaction.service.js +0 -93
- package/dist/src/services/compaction.service.js.map +0 -1
- package/dist/src/services/event-trigger.service.d.ts +0 -24
- package/dist/src/services/event-trigger.service.d.ts.map +0 -1
- package/dist/src/services/event-trigger.service.js +0 -60
- package/dist/src/services/event-trigger.service.js.map +0 -1
- package/dist/src/services/git.service.d.ts +0 -20
- package/dist/src/services/git.service.d.ts.map +0 -1
- package/dist/src/services/git.service.js +0 -88
- package/dist/src/services/git.service.js.map +0 -1
- package/dist/src/services/index.d.ts +0 -5
- package/dist/src/services/index.d.ts.map +0 -1
- package/dist/src/services/index.js +0 -8
- package/dist/src/services/index.js.map +0 -1
- package/dist/src/services/project-scan.service.d.ts +0 -19
- package/dist/src/services/project-scan.service.d.ts.map +0 -1
- package/dist/src/services/project-scan.service.js +0 -66
- package/dist/src/services/project-scan.service.js.map +0 -1
- package/dist/src/tools/backup.d.ts +0 -3
- package/dist/src/tools/backup.d.ts.map +0 -1
- package/dist/src/tools/backup.js +0 -191
- package/dist/src/tools/backup.js.map +0 -1
- package/dist/src/tools/changes.d.ts +0 -3
- package/dist/src/tools/changes.d.ts.map +0 -1
- package/dist/src/tools/changes.js +0 -97
- package/dist/src/tools/changes.js.map +0 -1
- package/dist/src/tools/compaction.d.ts +0 -3
- package/dist/src/tools/compaction.d.ts.map +0 -1
- package/dist/src/tools/compaction.js +0 -151
- package/dist/src/tools/compaction.js.map +0 -1
- package/dist/src/tools/conventions.d.ts +0 -3
- package/dist/src/tools/conventions.d.ts.map +0 -1
- package/dist/src/tools/conventions.js +0 -121
- package/dist/src/tools/conventions.js.map +0 -1
- package/dist/src/tools/decisions.d.ts +0 -3
- package/dist/src/tools/decisions.d.ts.map +0 -1
- package/dist/src/tools/decisions.js +0 -136
- package/dist/src/tools/decisions.js.map +0 -1
- package/dist/src/tools/export-import.d.ts +0 -3
- package/dist/src/tools/export-import.d.ts.map +0 -1
- package/dist/src/tools/export-import.js +0 -180
- package/dist/src/tools/export-import.js.map +0 -1
- package/dist/src/tools/file-notes.d.ts +0 -3
- package/dist/src/tools/file-notes.d.ts.map +0 -1
- package/dist/src/tools/file-notes.js +0 -104
- package/dist/src/tools/file-notes.js.map +0 -1
- package/dist/src/tools/intelligence.d.ts +0 -3
- package/dist/src/tools/intelligence.d.ts.map +0 -1
- package/dist/src/tools/intelligence.js +0 -427
- package/dist/src/tools/intelligence.js.map +0 -1
- package/dist/src/tools/milestones.d.ts +0 -3
- package/dist/src/tools/milestones.d.ts.map +0 -1
- package/dist/src/tools/milestones.js +0 -71
- package/dist/src/tools/milestones.js.map +0 -1
- package/dist/src/tools/scheduler.d.ts +0 -3
- package/dist/src/tools/scheduler.d.ts.map +0 -1
- package/dist/src/tools/scheduler.js +0 -363
- package/dist/src/tools/scheduler.js.map +0 -1
- package/dist/src/tools/sessions.d.ts +0 -3
- package/dist/src/tools/sessions.d.ts.map +0 -1
- package/dist/src/tools/sessions.js +0 -356
- package/dist/src/tools/sessions.js.map +0 -1
- package/dist/src/tools/stats.d.ts +0 -3
- package/dist/src/tools/stats.d.ts.map +0 -1
- package/dist/src/tools/stats.js +0 -63
- package/dist/src/tools/stats.js.map +0 -1
- package/dist/src/tools/tasks.d.ts +0 -3
- package/dist/src/tools/tasks.d.ts.map +0 -1
- package/dist/src/tools/tasks.js +0 -206
- package/dist/src/tools/tasks.js.map +0 -1
- package/dist/src/types.d.ts +0 -170
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/types.js +0 -5
- package/dist/src/types.js.map +0 -1
- package/dist/src/utils.d.ts +0 -58
- package/dist/src/utils.d.ts.map +0 -1
- package/dist/src/utils.js +0 -190
- package/dist/src/utils.js.map +0 -1
- package/dist/tests/helpers/test-db.d.ts +0 -12
- package/dist/tests/helpers/test-db.d.ts.map +0 -1
- package/dist/tests/helpers/test-db.js +0 -149
- package/dist/tests/helpers/test-db.js.map +0 -1
- package/dist/tests/installer/installer.test.d.ts +0 -2
- package/dist/tests/installer/installer.test.d.ts.map +0 -1
- package/dist/tests/installer/installer.test.js +0 -160
- package/dist/tests/installer/installer.test.js.map +0 -1
- package/dist/tests/repositories/repos.test.d.ts +0 -2
- package/dist/tests/repositories/repos.test.d.ts.map +0 -1
- package/dist/tests/repositories/repos.test.js +0 -220
- package/dist/tests/repositories/repos.test.js.map +0 -1
- package/dist/tools/maintenance.d.ts +0 -3
- package/dist/tools/maintenance.d.ts.map +0 -1
- package/dist/tools/maintenance.js +0 -647
- package/dist/tools/maintenance.js.map +0 -1
- package/dist/tools/memory.d.ts +0 -3
- package/dist/tools/memory.d.ts.map +0 -1
- package/dist/tools/memory.js +0 -446
- package/dist/tools/memory.js.map +0 -1
package/README.md
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
- [Overview](#overview)
|
|
20
20
|
- [Why Engram?](#why-engram)
|
|
21
21
|
- [Installation (Auto & Manual)](#installation)
|
|
22
|
-
- [✨ What's New in v1.
|
|
22
|
+
- [✨ What's New in v1.4.0](#-whats-new-in-v140)
|
|
23
23
|
- [Features](#features)
|
|
24
24
|
- [Architecture](#architecture)
|
|
25
25
|
- [Tools Reference](#tools-reference)
|
|
@@ -50,13 +50,16 @@ Engram solves this by providing a **persistent brain** using a native SQLite (WA
|
|
|
50
50
|
|
|
51
51
|
---
|
|
52
52
|
|
|
53
|
-
## ✨ What's New in v1.
|
|
53
|
+
## ✨ What's New in v1.4.0
|
|
54
54
|
|
|
55
|
-
- **
|
|
56
|
-
- **
|
|
57
|
-
- **
|
|
58
|
-
- **
|
|
59
|
-
-
|
|
55
|
+
- **Version-Tracked Installs:** Every IDE config entry is now stamped with `_engram_version`. The installer detects four distinct states — fresh install, already up to date, upgrade from a known version, and legacy adoption (pre-tracking era entries) — and reports each one clearly.
|
|
56
|
+
- **Background Auto-Update Check:** Engram silently checks for new versions after server startup using a fire-and-forget async check (never blocks startup or any tool call). If a newer version is found, the agent is notified via `engram_start_session` and can tell the user.
|
|
57
|
+
- **User-Controlled Update Flow:** Users choose how to act on an update via agent commands — update now, skip this version forever, postpone for N days (`7d`, `2w`, `1m`), or disable checks entirely. Nothing is automatic; the user is always in control.
|
|
58
|
+
- **Two-Source Changelog Delivery:** Update notifications include the release changelog fetched from the npm registry (primary) or GitHub Releases API (fallback). Both sources are tried with a 5-second timeout; network failures are silent.
|
|
59
|
+
- **`--check` CLI Flag:** `npx -y engram-mcp-server install --check` shows the installed version for each detected IDE, compares against npm latest, and correctly handles pre-release scenarios (running ahead of the published version).
|
|
60
|
+
- **`engram_stats` Version & Update Status:** Stats now include `server_version`, `update_status` (available version + releases URL if an update is pending), `auto_update_check` state, and `last_update_check` timestamp.
|
|
61
|
+
- **`engram_config` Update Keys:** Four new configurable keys — `auto_update_check`, `auto_update_skip_version`, `auto_update_remind_after` (accepts durations like `7d`, `2w`, `1m`), and `auto_update_notify_level` (`"major"` | `"minor"` | `"patch"`).
|
|
62
|
+
- **Pre-publish Release Notes Injection:** A new `scripts/inject-release-notes.js` script runs automatically before every `npm publish`. It extracts the current version's section from `RELEASE_NOTES.md` and injects it into `package.json`, enabling single-HTTP-call changelog delivery via the npm registry API.
|
|
60
63
|
|
|
61
64
|
---
|
|
62
65
|
|
|
@@ -93,7 +96,23 @@ npx -y engram-mcp-server install --ide vscode --yes
|
|
|
93
96
|
npx -y engram-mcp-server install --remove --ide claudecode
|
|
94
97
|
```
|
|
95
98
|
|
|
96
|
-
|
|
99
|
+
**Check installed version vs npm latest:**
|
|
100
|
+
```bash
|
|
101
|
+
npx -y engram-mcp-server install --check
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Option 2: Global Install (Windows Fallback)
|
|
105
|
+
|
|
106
|
+
If `npx -y engram-mcp-server --install` fails on Windows, install globally first then run the installer:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
npm install -g engram-mcp-server
|
|
110
|
+
engram install --ide <your-ide>
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
> **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.
|
|
114
|
+
|
|
115
|
+
### Option 3: Manual Configuration
|
|
97
116
|
|
|
98
117
|
If you prefer to configure manually, find your IDE below:
|
|
99
118
|
|
|
@@ -246,22 +265,26 @@ In the extension settings → MCP Servers:
|
|
|
246
265
|
graph TB
|
|
247
266
|
AI([AI Agent / IDE])
|
|
248
267
|
MCP([MCP Protocol Server])
|
|
249
|
-
|
|
268
|
+
NPM([npm Registry / GitHub])
|
|
269
|
+
|
|
250
270
|
subgraph Core Services
|
|
251
271
|
TS[Task Service]
|
|
252
272
|
CS[Compaction Service]
|
|
253
273
|
GS[Git Tracking Service]
|
|
254
274
|
ES[Event Trigger Service]
|
|
275
|
+
US[Update Service]
|
|
255
276
|
end
|
|
256
|
-
|
|
277
|
+
|
|
257
278
|
subgraph Data Layer
|
|
258
279
|
DB[(SQLite WAL)]
|
|
259
280
|
FTS[FTS5 Search Index]
|
|
260
281
|
end
|
|
261
|
-
|
|
282
|
+
|
|
262
283
|
AI <-->|JSON-RPC| MCP
|
|
263
|
-
MCP --> TS & CS & GS & ES
|
|
284
|
+
MCP --> TS & CS & GS & ES & US
|
|
264
285
|
TS & CS & GS & ES --> DB
|
|
286
|
+
US -->|async, fire-and-forget| NPM
|
|
287
|
+
US --> DB
|
|
265
288
|
DB --> FTS
|
|
266
289
|
```
|
|
267
290
|
|
|
@@ -293,6 +316,8 @@ Engram exposes 30+ tools. Here are the core highlights of what an agent can do f
|
|
|
293
316
|
| `engram_search` | FTS5-powered full-text search across all memories. |
|
|
294
317
|
| `engram_scan_project` | Scan and cache project structure automatically. |
|
|
295
318
|
| `engram_backup` | Create a database backup to any synced folder. |
|
|
319
|
+
| `engram_config` | Read or update runtime configuration values. |
|
|
320
|
+
| `engram_health` | Run database health checks and report diagnostics. |
|
|
296
321
|
|
|
297
322
|
*(Run the agent and ask to list available tools for the complete reference).*
|
|
298
323
|
|
|
@@ -300,27 +325,109 @@ Engram exposes 30+ tools. Here are the core highlights of what an agent can do f
|
|
|
300
325
|
|
|
301
326
|
## Using with AI Agents
|
|
302
327
|
|
|
303
|
-
|
|
328
|
+
Add the following to your agent's system prompt or custom instructions (Cursor Rules, `.github/copilot-instructions.md`, `CLAUDE.md`, etc.). The goal is to ensure the agent consults Engram *before* doing work — not just after — which is where most of the token and time savings come from.
|
|
304
329
|
|
|
305
330
|
```text
|
|
306
|
-
You have access to Engram, a persistent memory MCP server.
|
|
331
|
+
You have access to Engram, a persistent memory MCP server. It stores everything
|
|
332
|
+
learned about this project across all sessions: file notes, architectural decisions,
|
|
333
|
+
conventions, tasks, and change history. Use it to avoid re-reading files you have
|
|
334
|
+
already analysed, re-debating settled decisions, and re-discovering known context.
|
|
335
|
+
|
|
336
|
+
━━━ SESSION START ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
337
|
+
|
|
338
|
+
ALWAYS call engram_start_session first — before reading any file or taking any action.
|
|
339
|
+
Act on everything it returns:
|
|
340
|
+
|
|
341
|
+
previous_session.summary → Read this immediately. Do not re-explore what is already known.
|
|
342
|
+
active_decisions → These are binding. Follow them; do not re-debate them.
|
|
343
|
+
To change one, supersede it with a new engram_record_decision call.
|
|
344
|
+
active_conventions → Enforce these in every file you touch this session.
|
|
345
|
+
open_tasks → These are pending work items. Ask the user which to focus on if unclear.
|
|
346
|
+
update_available (if set) → Immediately tell the user:
|
|
347
|
+
"Engram v{available_version} is available (you have {installed_version}).
|
|
348
|
+
Changes: {changelog}
|
|
349
|
+
Would you like to update, skip this version, or postpone?"
|
|
350
|
+
Then act on their choice:
|
|
351
|
+
Update → instruct them to run: npx -y engram-mcp-server install
|
|
352
|
+
Skip → engram_config action=set key=auto_update_skip_version value={version}
|
|
353
|
+
Postpone 7d → engram_config action=set key=auto_update_remind_after value=7d
|
|
354
|
+
Disable → engram_config action=set key=auto_update_check value=false
|
|
355
|
+
|
|
356
|
+
━━━ BEFORE READING OR REVIEWING ANY FILE ━━━━━━━━━━━━━━━━━━━
|
|
357
|
+
|
|
358
|
+
ALWAYS check Engram before opening a file:
|
|
359
|
+
|
|
360
|
+
engram_get_file_notes({ file_paths: ["path/to/file.ts"] })
|
|
361
|
+
|
|
362
|
+
If notes EXIST:
|
|
363
|
+
Use the stored purpose, dependencies, layer, and complexity to answer
|
|
364
|
+
questions or orient yourself WITHOUT reading the file.
|
|
365
|
+
Only open the file when you need the actual source code for editing or
|
|
366
|
+
a detailed line-by-line analysis.
|
|
367
|
+
|
|
368
|
+
If notes DO NOT EXIST:
|
|
369
|
+
1. Read the file.
|
|
370
|
+
2. Immediately call engram_set_file_notes with:
|
|
371
|
+
file_path, purpose, dependencies, dependents, layer, complexity, notes
|
|
372
|
+
3. For multiple files reviewed in one pass, batch them in a single call.
|
|
373
|
+
|
|
374
|
+
If notes are STALE (you see evidence the file changed significantly since
|
|
375
|
+
the notes were last recorded — e.g., from git log or change history):
|
|
376
|
+
Re-read the file and update the notes.
|
|
377
|
+
|
|
378
|
+
Rule: Never read a file you have already analysed in a previous session
|
|
379
|
+
without first checking whether Engram already knows it.
|
|
380
|
+
|
|
381
|
+
━━━ BEFORE MAKING ANY DESIGN DECISION ━━━━━━━━━━━━━━━━━━━━━━
|
|
382
|
+
|
|
383
|
+
Before choosing an implementation approach, search for an existing decision:
|
|
384
|
+
|
|
385
|
+
engram_search({ query: "relevant keywords", scope: "decisions" })
|
|
386
|
+
|
|
387
|
+
If a matching decision EXISTS → follow it.
|
|
388
|
+
If you believe it should change → explain why, then supersede it:
|
|
389
|
+
engram_record_decision({ decision: "...", supersedes: <id> })
|
|
390
|
+
|
|
391
|
+
If NO decision exists → make the call and record it:
|
|
392
|
+
engram_record_decision({ decision, rationale, affected_files, tags })
|
|
393
|
+
|
|
394
|
+
━━━ WHEN MODIFYING FILES ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
395
|
+
|
|
396
|
+
After every meaningful change, record it. Batch where possible:
|
|
397
|
+
|
|
398
|
+
engram_record_change({ changes: [{
|
|
399
|
+
file_path,
|
|
400
|
+
change_type, // created | modified | refactored | deleted | renamed | moved | config_changed
|
|
401
|
+
description, // What changed AND why — not just the action. Future sessions read this.
|
|
402
|
+
impact_scope // local | module | cross_module | global
|
|
403
|
+
}]})
|
|
307
404
|
|
|
308
|
-
|
|
309
|
-
This loads your context: previous session summary, changes, decisions, conventions, and tasks.
|
|
405
|
+
━━━ WHEN YOU DON'T KNOW SOMETHING ━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
310
406
|
|
|
311
|
-
|
|
312
|
-
|
|
407
|
+
Before asking the user, search Engram first. The user may have already explained
|
|
408
|
+
this to a previous session:
|
|
313
409
|
|
|
314
|
-
|
|
410
|
+
engram_search({ query: "keywords" }) ← general search
|
|
411
|
+
engram_scan_project() ← project structure questions
|
|
412
|
+
engram_get_decisions() ← architecture / approach questions
|
|
413
|
+
engram_get_conventions() ← style / pattern questions
|
|
414
|
+
engram_get_file_notes({ file_paths: [] }) ← what is known about specific files
|
|
315
415
|
|
|
316
|
-
|
|
317
|
-
rationale, and affected files.
|
|
416
|
+
━━━ SESSION END ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
318
417
|
|
|
319
|
-
|
|
418
|
+
Before ending every session:
|
|
320
419
|
|
|
321
|
-
|
|
420
|
+
1. Record all file changes not yet recorded (engram_record_change).
|
|
421
|
+
2. Create tasks for anything incomplete or blocked:
|
|
422
|
+
engram_create_task({ title, description, priority })
|
|
423
|
+
3. Call engram_end_session with a summary that includes:
|
|
424
|
+
• Exactly what was done — file names, function names, specific changes made
|
|
425
|
+
• What is pending or blocked, and why
|
|
426
|
+
• Any new patterns, gotchas, or constraints discovered this session
|
|
427
|
+
• Which tasks were completed or partially done
|
|
322
428
|
|
|
323
|
-
|
|
429
|
+
A precise summary is what allows the next session to start immediately
|
|
430
|
+
without re-reading files or re-asking the user for context.
|
|
324
431
|
```
|
|
325
432
|
|
|
326
433
|
---
|
package/dist/constants.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const SERVER_NAME = "engram-mcp-server";
|
|
2
|
-
export declare const SERVER_VERSION
|
|
2
|
+
export declare const SERVER_VERSION: string;
|
|
3
3
|
export declare const TOOL_PREFIX = "engram";
|
|
4
4
|
export declare const DB_DIR_NAME = ".engram";
|
|
5
5
|
export declare const DB_FILE_NAME = "memory.db";
|
|
@@ -17,5 +17,16 @@ export declare const DEFAULT_RETENTION_DAYS = 90;
|
|
|
17
17
|
export declare const MAX_BACKUP_COUNT = 10;
|
|
18
18
|
export declare const EXCLUDED_DIRS: Set<string>;
|
|
19
19
|
export declare const PROJECT_MARKERS: string[];
|
|
20
|
+
export declare const NPM_REGISTRY_URL = "https://registry.npmjs.org/engram-mcp-server/latest";
|
|
21
|
+
export declare const GITHUB_REPO = "keggan-std/Engram";
|
|
22
|
+
export declare const GITHUB_RELEASES_URL = "https://github.com/keggan-std/Engram/releases";
|
|
23
|
+
export declare const GITHUB_RELEASES_API_URL = "https://api.github.com/repos/keggan-std/Engram/releases/latest";
|
|
24
|
+
export declare const CFG_AUTO_UPDATE_CHECK = "auto_update_check";
|
|
25
|
+
export declare const CFG_AUTO_UPDATE_LAST_CHECK = "auto_update_last_check";
|
|
26
|
+
export declare const CFG_AUTO_UPDATE_AVAILABLE = "auto_update_available";
|
|
27
|
+
export declare const CFG_AUTO_UPDATE_CHANGELOG = "auto_update_changelog";
|
|
28
|
+
export declare const CFG_AUTO_UPDATE_SKIP_VERSION = "auto_update_skip_version";
|
|
29
|
+
export declare const CFG_AUTO_UPDATE_REMIND_AFTER = "auto_update_remind_after";
|
|
30
|
+
export declare const CFG_AUTO_UPDATE_NOTIFY_LEVEL = "auto_update_notify_level";
|
|
20
31
|
export declare const LAYER_PATTERNS: Record<string, RegExp[]>;
|
|
21
32
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"
|
|
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,IAAI,CAAC;AAG5B,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,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
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
// ============================================================================
|
|
2
2
|
// Engram MCP Server — Constants
|
|
3
3
|
// ============================================================================
|
|
4
|
+
import { readFileSync } from "fs";
|
|
5
|
+
import { fileURLToPath } from "url";
|
|
6
|
+
import path from "path";
|
|
7
|
+
const _pkgPath = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../package.json");
|
|
8
|
+
const _pkg = JSON.parse(readFileSync(_pkgPath, "utf-8"));
|
|
4
9
|
export const SERVER_NAME = "engram-mcp-server";
|
|
5
|
-
export const SERVER_VERSION =
|
|
10
|
+
export const SERVER_VERSION = _pkg.version;
|
|
6
11
|
export const TOOL_PREFIX = "engram";
|
|
7
12
|
// Database
|
|
8
13
|
export const DB_DIR_NAME = ".engram";
|
|
@@ -64,6 +69,19 @@ export const PROJECT_MARKERS = [
|
|
|
64
69
|
"Gemfile",
|
|
65
70
|
"composer.json",
|
|
66
71
|
];
|
|
72
|
+
// Update check
|
|
73
|
+
export const NPM_REGISTRY_URL = "https://registry.npmjs.org/engram-mcp-server/latest";
|
|
74
|
+
export const GITHUB_REPO = "keggan-std/Engram";
|
|
75
|
+
export const GITHUB_RELEASES_URL = "https://github.com/keggan-std/Engram/releases";
|
|
76
|
+
export const GITHUB_RELEASES_API_URL = "https://api.github.com/repos/keggan-std/Engram/releases/latest";
|
|
77
|
+
// Config keys — update management
|
|
78
|
+
export const CFG_AUTO_UPDATE_CHECK = "auto_update_check";
|
|
79
|
+
export const CFG_AUTO_UPDATE_LAST_CHECK = "auto_update_last_check";
|
|
80
|
+
export const CFG_AUTO_UPDATE_AVAILABLE = "auto_update_available";
|
|
81
|
+
export const CFG_AUTO_UPDATE_CHANGELOG = "auto_update_changelog";
|
|
82
|
+
export const CFG_AUTO_UPDATE_SKIP_VERSION = "auto_update_skip_version";
|
|
83
|
+
export const CFG_AUTO_UPDATE_REMIND_AFTER = "auto_update_remind_after";
|
|
84
|
+
export const CFG_AUTO_UPDATE_NOTIFY_LEVEL = "auto_update_notify_level"; // "major" | "minor" | "patch"
|
|
67
85
|
// Architecture layer detection patterns
|
|
68
86
|
export const LAYER_PATTERNS = {
|
|
69
87
|
ui: [/\/(ui|views?|screens?|pages?|components?|widgets?)\//i, /\.(jsx|tsx|vue|svelte)$/],
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,gCAAgC;AAChC,+EAA+E;AAE/E,MAAM,CAAC,MAAM,WAAW,GAAG,mBAAmB,CAAC;AAC/C,MAAM,CAAC,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,gCAAgC;AAChC,+EAA+E;AAE/E,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;AAC/F,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAEzD,MAAM,CAAC,MAAM,WAAW,GAAG,mBAAmB,CAAC;AAC/C,MAAM,CAAC,MAAM,cAAc,GAAW,IAAI,CAAC,OAAO,CAAC;AACnD,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC;AAEpC,WAAW;AACX,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC;AACrC,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAC;AACxC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC;AAE5B,SAAS;AACT,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AACrC,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AACzC,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AACrC,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AACtC,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AACzC,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAC3C,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,CAAC;AAChD,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC;AACzC,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AACzC,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAEnC,yCAAyC;AACzC,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IACnC,MAAM;IACN,SAAS;IACT,OAAO;IACP,KAAK;IACL,SAAS;IACT,SAAS;IACT,eAAe;IACf,cAAc;IACd,OAAO;IACP,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,aAAa;IACb,OAAO;IACP,OAAO;IACP,QAAQ;IACR,MAAM;IACN,YAAY;IACZ,YAAY;CACb,CAAC,CAAC;AAEH,gEAAgE;AAChE,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,MAAM;IACN,cAAc;IACd,cAAc;IACd,kBAAkB;IAClB,iBAAiB;IACjB,qBAAqB;IACrB,YAAY;IACZ,QAAQ;IACR,SAAS;IACT,gBAAgB;IAChB,UAAU;IACV,gBAAgB;IAChB,UAAU;IACV,MAAM;IACN,SAAS;IACT,cAAc;IACd,SAAS;IACT,eAAe;CAChB,CAAC;AAEF,eAAe;AACf,MAAM,CAAC,MAAM,gBAAgB,GAAG,qDAAqD,CAAC;AACtF,MAAM,CAAC,MAAM,WAAW,GAAG,mBAAmB,CAAC;AAC/C,MAAM,CAAC,MAAM,mBAAmB,GAAG,+CAA+C,CAAC;AACnF,MAAM,CAAC,MAAM,uBAAuB,GAAG,gEAAgE,CAAC;AAExG,kCAAkC;AAClC,MAAM,CAAC,MAAM,qBAAqB,GAAG,mBAAmB,CAAC;AACzD,MAAM,CAAC,MAAM,0BAA0B,GAAG,wBAAwB,CAAC;AACnE,MAAM,CAAC,MAAM,yBAAyB,GAAG,uBAAuB,CAAC;AACjE,MAAM,CAAC,MAAM,yBAAyB,GAAG,uBAAuB,CAAC;AACjE,MAAM,CAAC,MAAM,4BAA4B,GAAG,0BAA0B,CAAC;AACvE,MAAM,CAAC,MAAM,4BAA4B,GAAG,0BAA0B,CAAC;AACvE,MAAM,CAAC,MAAM,4BAA4B,GAAG,0BAA0B,CAAC,CAAC,8BAA8B;AAEtG,wCAAwC;AACxC,MAAM,CAAC,MAAM,cAAc,GAA6B;IACtD,EAAE,EAAE,CAAC,uDAAuD,EAAE,yBAAyB,CAAC;IACxF,SAAS,EAAE,CAAC,oDAAoD,CAAC;IACjE,MAAM,EAAE,CAAC,uDAAuD,CAAC;IACjE,IAAI,EAAE,CAAC,yDAAyD,CAAC;IACjE,OAAO,EAAE,CAAC,4CAA4C,CAAC;IACvD,QAAQ,EAAE,CAAC,6CAA6C,CAAC;IACzD,EAAE,EAAE,CAAC,0CAA0C,CAAC;IAChD,IAAI,EAAE,CAAC,2CAA2C,CAAC;IACnD,IAAI,EAAE,CAAC,wCAAwC,EAAE,kBAAkB,CAAC;IACpE,MAAM,EAAE,CAAC,sCAAsC,CAAC;IAChD,KAAK,EAAE,CAAC,oCAAoC,EAAE,oBAAoB,CAAC;CACpE,CAAC"}
|
package/dist/database.d.ts
CHANGED
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
import type { Database as DatabaseType } from "better-sqlite3";
|
|
2
2
|
import { type Repositories } from "./repositories/index.js";
|
|
3
|
+
import { CompactionService, ProjectScanService, GitService, EventTriggerService, UpdateService } from "./services/index.js";
|
|
4
|
+
export interface Services {
|
|
5
|
+
compaction: CompactionService;
|
|
6
|
+
scan: ProjectScanService;
|
|
7
|
+
git: GitService;
|
|
8
|
+
events: EventTriggerService;
|
|
9
|
+
update: UpdateService;
|
|
10
|
+
}
|
|
3
11
|
export declare function initDatabase(projectRoot: string): Promise<DatabaseType>;
|
|
4
12
|
export declare function getDb(): DatabaseType;
|
|
5
13
|
export declare function getRepos(): Repositories;
|
|
14
|
+
export declare function getServices(): Services;
|
|
6
15
|
export declare function getProjectRoot(): string;
|
|
7
16
|
export declare function getDbPath(): string;
|
|
8
17
|
/**
|
package/dist/database.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAK/D,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAK/D,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,UAAU,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAG5H,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,IAAI,EAAE,kBAAkB,CAAC;IACzB,GAAG,EAAE,UAAU,CAAC;IAChB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,MAAM,EAAE,aAAa,CAAC;CACvB;AAUD,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAgC7E;AAED,wBAAgB,KAAK,IAAI,YAAY,CAGpC;AAED,wBAAgB,QAAQ,IAAI,YAAY,CAGvC;AAED,wBAAgB,WAAW,IAAI,QAAQ,CAGtC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAID;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAmBxD;AAkBD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,OAAO,EAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAIvF;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,OAAO,EAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAK5F;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,OAAO,EAAO,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAI/E;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC,GAAG,IAAI,CAQvF;AAID,wBAAgB,GAAG,IAAI,MAAM,CAE5B;AAED,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAGnD;AAED,wBAAgB,uBAAuB,IAAI;IACzC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;CAC1E,GAAG,IAAI,CAWP;AAED,wBAAgB,WAAW,IAAI,MAAM,CAKpC;AAED,wBAAgB,UAAU,IAAI,IAAI,CAIjC"}
|
package/dist/database.js
CHANGED
|
@@ -7,8 +7,11 @@ import * as path from "path";
|
|
|
7
7
|
import { DB_DIR_NAME, DB_FILE_NAME, BACKUP_DIR_NAME } from "./constants.js";
|
|
8
8
|
import { runMigrations } from "./migrations.js";
|
|
9
9
|
import { createRepositories } from "./repositories/index.js";
|
|
10
|
+
import { CompactionService, ProjectScanService, GitService, EventTriggerService, UpdateService } from "./services/index.js";
|
|
11
|
+
import { SERVER_VERSION } from "./constants.js";
|
|
10
12
|
let _db = null;
|
|
11
13
|
let _repos = null;
|
|
14
|
+
let _services = null;
|
|
12
15
|
let _projectRoot = process.cwd();
|
|
13
16
|
let _dbPath = "";
|
|
14
17
|
// ─── Initialization ──────────────────────────────────────────────────
|
|
@@ -29,6 +32,14 @@ export async function initDatabase(projectRoot) {
|
|
|
29
32
|
runMigrations(_db);
|
|
30
33
|
// Initialize repositories
|
|
31
34
|
_repos = createRepositories(_db);
|
|
35
|
+
// Initialize services
|
|
36
|
+
_services = {
|
|
37
|
+
compaction: new CompactionService(_db, _repos),
|
|
38
|
+
scan: new ProjectScanService(_repos),
|
|
39
|
+
git: new GitService(projectRoot),
|
|
40
|
+
events: new EventTriggerService(_repos),
|
|
41
|
+
update: new UpdateService(_repos, SERVER_VERSION),
|
|
42
|
+
};
|
|
32
43
|
return _db;
|
|
33
44
|
}
|
|
34
45
|
export function getDb() {
|
|
@@ -41,6 +52,11 @@ export function getRepos() {
|
|
|
41
52
|
throw new Error("Repositories not initialized. Call initDatabase() first.");
|
|
42
53
|
return _repos;
|
|
43
54
|
}
|
|
55
|
+
export function getServices() {
|
|
56
|
+
if (!_services)
|
|
57
|
+
throw new Error("Services not initialized. Call initDatabase() first.");
|
|
58
|
+
return _services;
|
|
59
|
+
}
|
|
44
60
|
export function getProjectRoot() {
|
|
45
61
|
return _projectRoot;
|
|
46
62
|
}
|
package/dist/database.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,yEAAyE;AACzE,+EAA+E;AAE/E,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAqB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,yEAAyE;AACzE,+EAA+E;AAE/E,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAqB,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,UAAU,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC5H,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAUhD,IAAI,GAAG,GAAwB,IAAI,CAAC;AACpC,IAAI,MAAM,GAAwB,IAAI,CAAC;AACvC,IAAI,SAAS,GAAoB,IAAI,CAAC;AACtC,IAAI,YAAY,GAAW,OAAO,CAAC,GAAG,EAAE,CAAC;AACzC,IAAI,OAAO,GAAW,EAAE,CAAC;AAEzB,wEAAwE;AAExE,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,WAAmB;IACpD,YAAY,GAAG,WAAW,CAAC;IAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAClD,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,eAAe,CAAC,WAAW,CAAC,CAAC;IAE7B,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACzC,GAAG,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;IAE5B,sBAAsB;IACtB,GAAG,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACjC,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAChC,GAAG,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACnC,GAAG,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,YAAY;IAC9C,GAAG,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAElC,2BAA2B;IAC3B,aAAa,CAAC,GAAG,CAAC,CAAC;IAEnB,0BAA0B;IAC1B,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAEjC,sBAAsB;IACtB,SAAS,GAAG;QACV,UAAU,EAAE,IAAI,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC;QAC9C,IAAI,EAAE,IAAI,kBAAkB,CAAC,MAAM,CAAC;QACpC,GAAG,EAAE,IAAI,UAAU,CAAC,WAAW,CAAC;QAChC,MAAM,EAAE,IAAI,mBAAmB,CAAC,MAAM,CAAC;QACvC,MAAM,EAAE,IAAI,aAAa,CAAC,MAAM,EAAE,cAAc,CAAC;KAClD,CAAC;IAEF,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,KAAK;IACnB,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAClF,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IACzF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IACxF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,wEAAwE;AAExE;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,QAAiB;IAC9C,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;QACvE,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACjE,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,SAAS,KAAK,CAAC,CAAC;IAC5D,CAAC;IAED,sCAAsC;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3C,wBAAwB;IACxB,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAEpB,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,wEAAwE;AAExE,SAAS,eAAe,CAAC,WAAmB;IAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAC3D,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YACxD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBACnC,EAAE,CAAC,cAAc,CAAC,aAAa,EAAE,+BAA+B,WAAW,KAAK,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;AACxB,CAAC;AAED,wEAAwE;AAExE,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,SAAoB,EAAE;IAC1D,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAA8B,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,SAAoB,EAAE;IAC1D,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAwC,CAAC;IACvE,OAAO,GAAG,IAAI,IAAI,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAW,EAAE,SAAoB,EAAE;IACzD,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,UAAqD;IAC/E,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;QACtC,KAAK,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;YACzC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,CAAC,CAAC;IACH,WAAW,EAAE,CAAC;AAChB,CAAC;AAED,wEAAwE;AAExE,MAAM,UAAU,GAAG;IACjB,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,yEAAyE,CAAC,CAAC;IAChG,OAAO,GAAG,CAAC,CAAC,CAAE,GAAG,CAAC,EAAa,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,uBAAuB;IAGrC,MAAM,GAAG,GAAG,QAAQ,CAClB,4GAA4G,CAC7G,CAAC;IACF,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAY;QACpB,QAAQ,EAAE,GAAG,CAAC,QAAkB;QAChC,OAAO,EAAE,GAAG,CAAC,OAAwB;QACrC,UAAU,EAAE,GAAG,CAAC,UAAoB;KACrC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,CAAC,CAAC;IAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,gEAAgE;IAChE,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,EAAE,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;AACxC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -37,7 +37,14 @@ import { registerSchedulerTools } from "./tools/scheduler.js";
|
|
|
37
37
|
async function main() {
|
|
38
38
|
const args = process.argv.slice(2);
|
|
39
39
|
// ─── Auto-Installer ───────────────────────────────────────────────────
|
|
40
|
-
if (args.includes("install") ||
|
|
40
|
+
if (args.includes("install") ||
|
|
41
|
+
args.includes("--install") ||
|
|
42
|
+
args.includes("--list") ||
|
|
43
|
+
args.includes("--check") ||
|
|
44
|
+
args.includes("--help") ||
|
|
45
|
+
args.includes("-h") ||
|
|
46
|
+
args.includes("--version") ||
|
|
47
|
+
args.includes("-v")) {
|
|
41
48
|
runInstaller(args);
|
|
42
49
|
return;
|
|
43
50
|
}
|
|
@@ -80,6 +87,14 @@ async function main() {
|
|
|
80
87
|
const transport = new StdioServerTransport();
|
|
81
88
|
await server.connect(transport);
|
|
82
89
|
}
|
|
90
|
+
// ─── Schedule background update check ───────────────────────────
|
|
91
|
+
// Fire-and-forget — never blocks startup or any tool call.
|
|
92
|
+
// Results are stored in the config repo and surfaced on the next engram_start_session.
|
|
93
|
+
try {
|
|
94
|
+
const { getServices } = await import("./database.js");
|
|
95
|
+
getServices().update.scheduleCheck();
|
|
96
|
+
}
|
|
97
|
+
catch { /* update check is best-effort */ }
|
|
83
98
|
}
|
|
84
99
|
// ─── Run ──────────────────────────────────────────────────────────────
|
|
85
100
|
main().catch((error) => {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,+EAA+E;AAC/E,EAAE;AACF,2DAA2D;AAC3D,2DAA2D;AAC3D,2DAA2D;AAC3D,2DAA2D;AAC3D,2DAA2D;AAC3D,2DAA2D;AAC3D,EAAE;AACF,kDAAkD;AAClD,wCAAwC;AACxC,EAAE;AACF,+EAA+E;AAE/E,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAkB,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,qBAAqB;AACrB,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,yEAAyE;AAEzE,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,yEAAyE;IACzE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { IdeDefinition } from "./ide-configs.js";
|
|
2
|
+
/** Read the installed package version (used to stamp _engram_version in IDE configs). */
|
|
3
|
+
export declare function getInstallerVersion(): string;
|
|
2
4
|
/**
|
|
3
5
|
* Generate the Engram server entry tailored to a specific IDE's requirements.
|
|
6
|
+
* Includes _engram_version so the installer can detect upgrades and legacy installs.
|
|
4
7
|
*/
|
|
5
8
|
export declare function makeEngramEntry(ide: IdeDefinition): Record<string, any>;
|
|
6
9
|
/**
|
|
@@ -11,12 +14,18 @@ export declare function readJson(filePath: string): Record<string, any> | null;
|
|
|
11
14
|
* Write a JSON config file, creating parent directories if needed.
|
|
12
15
|
*/
|
|
13
16
|
export declare function writeJson(filePath: string, data: any): void;
|
|
17
|
+
export type InstallResult = "added" | "upgraded" | "exists" | "legacy-upgraded";
|
|
14
18
|
/**
|
|
15
19
|
* Add or update the Engram entry in a config file.
|
|
16
20
|
* Uses the IDE's configKey ("mcpServers" or "servers") to write the correct JSON structure.
|
|
17
|
-
*
|
|
21
|
+
*
|
|
22
|
+
* Returns:
|
|
23
|
+
* "added" — fresh install, no prior entry
|
|
24
|
+
* "exists" — already installed at the same version, no changes made
|
|
25
|
+
* "upgraded" — updated from an older tracked version to the current one
|
|
26
|
+
* "legacy-upgraded" — entry existed but had no _engram_version (pre-tracking era), now stamped
|
|
18
27
|
*/
|
|
19
|
-
export declare function addToConfig(configPath: string, ide: IdeDefinition):
|
|
28
|
+
export declare function addToConfig(configPath: string, ide: IdeDefinition): InstallResult;
|
|
20
29
|
/**
|
|
21
30
|
* Remove the Engram entry from a config file.
|
|
22
31
|
* Returns true if the entry was found and removed, false if not present.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-writer.d.ts","sourceRoot":"","sources":["../../src/installer/config-writer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config-writer.d.ts","sourceRoot":"","sources":["../../src/installer/config-writer.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,yFAAyF;AACzF,wBAAgB,mBAAmB,IAAI,MAAM,CAQ5C;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAqBvE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAMrE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI,CAG3D;AAED,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,iBAAiB,CAAC;AAEhF;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,GAAG,aAAa,CA2BjF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAgBhF"}
|
|
@@ -3,8 +3,21 @@
|
|
|
3
3
|
// ============================================================================
|
|
4
4
|
import fs from "fs";
|
|
5
5
|
import path from "path";
|
|
6
|
+
import { fileURLToPath } from "url";
|
|
7
|
+
/** Read the installed package version (used to stamp _engram_version in IDE configs). */
|
|
8
|
+
export function getInstallerVersion() {
|
|
9
|
+
try {
|
|
10
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
11
|
+
const pkgPath = path.resolve(__dirname, "../../package.json");
|
|
12
|
+
return JSON.parse(fs.readFileSync(pkgPath, "utf-8")).version;
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return "unknown";
|
|
16
|
+
}
|
|
17
|
+
}
|
|
6
18
|
/**
|
|
7
19
|
* Generate the Engram server entry tailored to a specific IDE's requirements.
|
|
20
|
+
* Includes _engram_version so the installer can detect upgrades and legacy installs.
|
|
8
21
|
*/
|
|
9
22
|
export function makeEngramEntry(ide) {
|
|
10
23
|
const entry = {};
|
|
@@ -21,6 +34,8 @@ export function makeEngramEntry(ide) {
|
|
|
21
34
|
entry.command = "npx";
|
|
22
35
|
entry.args = ["-y", "engram-mcp-server"];
|
|
23
36
|
}
|
|
37
|
+
// Version stamp — used by the installer to detect upgrades and legacy installs
|
|
38
|
+
entry._engram_version = getInstallerVersion();
|
|
24
39
|
return entry;
|
|
25
40
|
}
|
|
26
41
|
/**
|
|
@@ -44,7 +59,12 @@ export function writeJson(filePath, data) {
|
|
|
44
59
|
/**
|
|
45
60
|
* Add or update the Engram entry in a config file.
|
|
46
61
|
* Uses the IDE's configKey ("mcpServers" or "servers") to write the correct JSON structure.
|
|
47
|
-
*
|
|
62
|
+
*
|
|
63
|
+
* Returns:
|
|
64
|
+
* "added" — fresh install, no prior entry
|
|
65
|
+
* "exists" — already installed at the same version, no changes made
|
|
66
|
+
* "upgraded" — updated from an older tracked version to the current one
|
|
67
|
+
* "legacy-upgraded" — entry existed but had no _engram_version (pre-tracking era), now stamped
|
|
48
68
|
*/
|
|
49
69
|
export function addToConfig(configPath, ide) {
|
|
50
70
|
let config = readJson(configPath) || {};
|
|
@@ -52,14 +72,19 @@ export function addToConfig(configPath, ide) {
|
|
|
52
72
|
if (!config[key])
|
|
53
73
|
config[key] = {};
|
|
54
74
|
const newEntry = makeEngramEntry(ide);
|
|
75
|
+
const currentVersion = newEntry._engram_version;
|
|
55
76
|
if (config[key].engram) {
|
|
56
|
-
|
|
77
|
+
const existingVersion = config[key].engram._engram_version;
|
|
78
|
+
// Same version already installed — nothing to do
|
|
79
|
+
if (existingVersion === currentVersion) {
|
|
57
80
|
return "exists";
|
|
58
81
|
}
|
|
82
|
+
// Upgrade (known older version) or legacy adoption (no _engram_version)
|
|
59
83
|
config[key].engram = newEntry;
|
|
60
84
|
writeJson(configPath, config);
|
|
61
|
-
return "
|
|
85
|
+
return existingVersion ? "upgraded" : "legacy-upgraded";
|
|
62
86
|
}
|
|
87
|
+
// No prior entry at all — fresh install
|
|
63
88
|
config[key].engram = newEntry;
|
|
64
89
|
writeJson(configPath, config);
|
|
65
90
|
return "added";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-writer.js","sourceRoot":"","sources":["../../src/installer/config-writer.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,+CAA+C;AAC/C,+EAA+E;AAE/E,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config-writer.js","sourceRoot":"","sources":["../../src/installer/config-writer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ide-detector.d.ts","sourceRoot":"","sources":["../../src/installer/ide-detector.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"ide-detector.d.ts","sourceRoot":"","sources":["../../src/installer/ide-detector.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAiChD"}
|
|
@@ -7,16 +7,19 @@
|
|
|
7
7
|
*/
|
|
8
8
|
export function detectCurrentIde() {
|
|
9
9
|
const env = process.env;
|
|
10
|
-
// ───
|
|
11
|
-
if (env.ANTIGRAVITY_EDITOR_APP_ROOT)
|
|
12
|
-
return "antigravity";
|
|
13
|
-
if (env.WINDSURF_PROFILE)
|
|
14
|
-
return "windsurf";
|
|
15
|
-
// Claude Code sets its own env vars
|
|
10
|
+
// ─── Claude Code (checked first — sets explicit env vars) ────────
|
|
16
11
|
if (env.CLAUDE_CODE || env.CLAUDE_CLI)
|
|
17
12
|
return "claudecode";
|
|
18
13
|
// ─── VS Code family detection ────────────────────────────────────
|
|
14
|
+
// Antigravity and Windsurf are VS Code forks, so their signals are
|
|
15
|
+
// only meaningful inside a VS Code family environment.
|
|
19
16
|
if (env.TERM_PROGRAM === "vscode" || env.VSCODE_IPC_HOOK || env.VSCODE_CWD) {
|
|
17
|
+
// Explicit fork-specific signals (most reliable)
|
|
18
|
+
if (env.ANTIGRAVITY_EDITOR_APP_ROOT)
|
|
19
|
+
return "antigravity";
|
|
20
|
+
if (env.WINDSURF_PROFILE)
|
|
21
|
+
return "windsurf";
|
|
22
|
+
// Disambiguate via install path in VSCODE_CWD
|
|
20
23
|
const cwdLower = (env.VSCODE_CWD || "").toLowerCase();
|
|
21
24
|
if (cwdLower.includes("antigravity"))
|
|
22
25
|
return "antigravity";
|
|
@@ -24,6 +27,7 @@ export function detectCurrentIde() {
|
|
|
24
27
|
return "cursor";
|
|
25
28
|
if (cwdLower.includes("windsurf"))
|
|
26
29
|
return "windsurf";
|
|
30
|
+
// Disambiguate via PATH
|
|
27
31
|
const pathLower = (env.PATH || "").toLowerCase();
|
|
28
32
|
if (pathLower.includes("antigravity"))
|
|
29
33
|
return "antigravity";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ide-detector.js","sourceRoot":"","sources":["../../src/installer/ide-detector.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,gDAAgD;AAChD,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC5B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAExB,oEAAoE;IACpE,IAAI,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"ide-detector.js","sourceRoot":"","sources":["../../src/installer/ide-detector.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,gDAAgD;AAChD,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC5B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAExB,oEAAoE;IACpE,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,UAAU;QAAE,OAAO,YAAY,CAAC;IAE3D,oEAAoE;IACpE,mEAAmE;IACnE,uDAAuD;IACvD,IAAI,GAAG,CAAC,YAAY,KAAK,QAAQ,IAAI,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;QACzE,iDAAiD;QACjD,IAAI,GAAG,CAAC,2BAA2B;YAAE,OAAO,aAAa,CAAC;QAC1D,IAAI,GAAG,CAAC,gBAAgB;YAAE,OAAO,UAAU,CAAC;QAE5C,8CAA8C;QAC9C,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACtD,IAAI,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC;YAAE,OAAO,aAAa,CAAC;QAC3D,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,OAAO,QAAQ,CAAC;QACjD,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,OAAO,UAAU,CAAC;QAErD,wBAAwB;QACxB,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACjD,IAAI,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC;YAAE,OAAO,aAAa,CAAC;QAC5D,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,OAAO,QAAQ,CAAC;QAClD,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,OAAO,UAAU,CAAC;QAEtD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,oEAAoE;IACpE,IAAI,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,iBAAiB,EAAE,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO,WAAW,CAAC;IAE1F,OAAO,IAAI,CAAC;AAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/installer/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/installer/index.ts"],"names":[],"mappings":"AAsCA,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,iBAuQhD"}
|