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/dist/tools/stats.js
CHANGED
|
@@ -1,9 +1,22 @@
|
|
|
1
1
|
// ============================================================================
|
|
2
|
-
// Engram MCP Server — Stats
|
|
2
|
+
// Engram MCP Server — Stats, Config & Health Tools
|
|
3
3
|
// ============================================================================
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
import { getDb, getDbSizeKb, getRepos, now, getCurrentSessionId } from "../database.js";
|
|
6
|
+
import { TOOL_PREFIX, DB_VERSION, SERVER_VERSION, GITHUB_RELEASES_URL, CFG_AUTO_UPDATE_CHECK, CFG_AUTO_UPDATE_LAST_CHECK, CFG_AUTO_UPDATE_AVAILABLE, CFG_AUTO_UPDATE_SKIP_VERSION, CFG_AUTO_UPDATE_REMIND_AFTER, CFG_AUTO_UPDATE_NOTIFY_LEVEL, } from "../constants.js";
|
|
7
|
+
import { success, error } from "../response.js";
|
|
8
|
+
const KNOWN_CONFIG_KEYS = new Set([
|
|
9
|
+
"auto_compact",
|
|
10
|
+
"compact_threshold",
|
|
11
|
+
"retention_days",
|
|
12
|
+
"max_backups",
|
|
13
|
+
CFG_AUTO_UPDATE_CHECK,
|
|
14
|
+
CFG_AUTO_UPDATE_SKIP_VERSION,
|
|
15
|
+
CFG_AUTO_UPDATE_REMIND_AFTER,
|
|
16
|
+
CFG_AUTO_UPDATE_NOTIFY_LEVEL,
|
|
17
|
+
]);
|
|
6
18
|
export function registerStatsTools(server) {
|
|
19
|
+
// ─── STATS ────────────────────────────────────────────────────────
|
|
7
20
|
server.registerTool(`${TOOL_PREFIX}_stats`, {
|
|
8
21
|
title: "Memory Statistics",
|
|
9
22
|
description: `Get a comprehensive overview of everything stored in Engram's memory: session count, changes, decisions, file notes, conventions, tasks, milestones, most-changed files, and database size.
|
|
@@ -38,7 +51,17 @@ Returns:
|
|
|
38
51
|
schemaVersion = vRow ? parseInt(vRow.value, 10) : 0;
|
|
39
52
|
}
|
|
40
53
|
catch { /* no schema_meta */ }
|
|
41
|
-
const
|
|
54
|
+
const repos = getRepos();
|
|
55
|
+
const updateAvailable = repos.config.get(CFG_AUTO_UPDATE_AVAILABLE) || null;
|
|
56
|
+
const lastCheck = repos.config.get(CFG_AUTO_UPDATE_LAST_CHECK) || null;
|
|
57
|
+
const autoUpdateEnabled = repos.config.getBool(CFG_AUTO_UPDATE_CHECK, true);
|
|
58
|
+
return success({
|
|
59
|
+
server_version: SERVER_VERSION,
|
|
60
|
+
update_status: updateAvailable
|
|
61
|
+
? { available: true, version: updateAvailable, releases_url: GITHUB_RELEASES_URL }
|
|
62
|
+
: { available: false },
|
|
63
|
+
auto_update_check: autoUpdateEnabled ? "enabled" : "disabled",
|
|
64
|
+
last_update_check: lastCheck,
|
|
42
65
|
total_sessions: count("sessions"),
|
|
43
66
|
total_changes: count("changes"),
|
|
44
67
|
total_decisions: count("decisions"),
|
|
@@ -54,10 +77,148 @@ Returns:
|
|
|
54
77
|
tasks_by_status: tasksByStatus,
|
|
55
78
|
schema_version: schemaVersion,
|
|
56
79
|
engine: "better-sqlite3 (WAL mode)",
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
// ─── CONFIG ───────────────────────────────────────────────────────
|
|
83
|
+
server.registerTool(`${TOOL_PREFIX}_config`, {
|
|
84
|
+
title: "Config Management",
|
|
85
|
+
description: `Read or update Engram configuration values.
|
|
86
|
+
|
|
87
|
+
Known keys:
|
|
88
|
+
auto_compact (true/false) — enable/disable auto-compaction
|
|
89
|
+
compact_threshold (number) — sessions before auto-compact triggers
|
|
90
|
+
retention_days (number) — days to retain old session data
|
|
91
|
+
max_backups (number) — max number of backup files to keep
|
|
92
|
+
auto_update_check (true/false) — enable/disable background update checks (default: true)
|
|
93
|
+
auto_update_skip_version (string) — skip notifications for this specific version
|
|
94
|
+
auto_update_remind_after (string) — snooze updates: ISO date or duration like "7d", "2w", "1m"
|
|
95
|
+
auto_update_notify_level (string) — "major", "minor" (default), or "patch"
|
|
96
|
+
|
|
97
|
+
Args:
|
|
98
|
+
- action: "get" (read all config) or "set" (update a key)
|
|
99
|
+
- key (string, optional): Config key to update (required for "set")
|
|
100
|
+
- value (string, optional): New value (required for "set"). For auto_update_remind_after, accepts "7d", "2w", "1m", or an ISO date string.
|
|
101
|
+
|
|
102
|
+
Returns:
|
|
103
|
+
Current config values or confirmation of update.`,
|
|
104
|
+
inputSchema: {
|
|
105
|
+
action: z.enum(["get", "set"]).describe("Read all config or set a key"),
|
|
106
|
+
key: z.string().optional().describe("Config key (for set)"),
|
|
107
|
+
value: z.string().optional().describe("New value (for set)"),
|
|
108
|
+
},
|
|
109
|
+
annotations: {
|
|
110
|
+
readOnlyHint: false,
|
|
111
|
+
destructiveHint: false,
|
|
112
|
+
idempotentHint: true,
|
|
113
|
+
openWorldHint: false,
|
|
114
|
+
},
|
|
115
|
+
}, async ({ action, key, value }) => {
|
|
116
|
+
const repos = getRepos();
|
|
117
|
+
if (action === "get") {
|
|
118
|
+
const config = repos.config.getAll();
|
|
119
|
+
return success({ config });
|
|
120
|
+
}
|
|
121
|
+
// action === "set"
|
|
122
|
+
if (!key || value === undefined) {
|
|
123
|
+
return error("Both 'key' and 'value' are required for action 'set'.");
|
|
124
|
+
}
|
|
125
|
+
if (!KNOWN_CONFIG_KEYS.has(key)) {
|
|
126
|
+
return error(`Unknown config key: "${key}". Known keys: ${[...KNOWN_CONFIG_KEYS].join(", ")}`);
|
|
127
|
+
}
|
|
128
|
+
// Parse duration shorthand for auto_update_remind_after (e.g. "7d", "2w", "1m")
|
|
129
|
+
let storedValue = value;
|
|
130
|
+
if (key === CFG_AUTO_UPDATE_REMIND_AFTER && /^\d+[dwm]$/.test(value.trim())) {
|
|
131
|
+
const match = value.trim().match(/^(\d+)([dwm])$/);
|
|
132
|
+
if (match) {
|
|
133
|
+
const amount = parseInt(match[1], 10);
|
|
134
|
+
const unit = match[2];
|
|
135
|
+
const ms = unit === "d" ? amount * 86_400_000
|
|
136
|
+
: unit === "w" ? amount * 7 * 86_400_000
|
|
137
|
+
: amount * 30 * 86_400_000;
|
|
138
|
+
storedValue = new Date(Date.now() + ms).toISOString();
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
repos.config.set(key, storedValue, now());
|
|
142
|
+
return success({
|
|
143
|
+
message: `Config "${key}" updated to "${storedValue}".`,
|
|
144
|
+
key,
|
|
145
|
+
value: storedValue,
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
// ─── HEALTH / DIAGNOSTICS ─────────────────────────────────────────
|
|
149
|
+
server.registerTool(`${TOOL_PREFIX}_health`, {
|
|
150
|
+
title: "Health Diagnostics",
|
|
151
|
+
description: `Run health checks on the Engram database: integrity, schema version, FTS availability, WAL mode, table sizes, and config.
|
|
152
|
+
|
|
153
|
+
Returns:
|
|
154
|
+
Diagnostic report with status for each check.`,
|
|
155
|
+
inputSchema: {},
|
|
156
|
+
annotations: {
|
|
157
|
+
readOnlyHint: true,
|
|
158
|
+
destructiveHint: false,
|
|
159
|
+
idempotentHint: true,
|
|
160
|
+
openWorldHint: false,
|
|
161
|
+
},
|
|
162
|
+
}, async () => {
|
|
163
|
+
const db = getDb();
|
|
164
|
+
const repos = getRepos();
|
|
165
|
+
// Integrity check
|
|
166
|
+
let integrity = "unknown";
|
|
167
|
+
try {
|
|
168
|
+
const result = db.prepare("PRAGMA quick_check").get();
|
|
169
|
+
integrity = result?.quick_check || "ok";
|
|
170
|
+
}
|
|
171
|
+
catch (e) {
|
|
172
|
+
integrity = `error: ${e}`;
|
|
173
|
+
}
|
|
174
|
+
// Schema version
|
|
175
|
+
let schemaVersion = 0;
|
|
176
|
+
try {
|
|
177
|
+
const vRow = db.prepare("SELECT value FROM schema_meta WHERE key = 'version'").get();
|
|
178
|
+
schemaVersion = vRow ? parseInt(vRow.value, 10) : 0;
|
|
179
|
+
}
|
|
180
|
+
catch { /* no schema_meta */ }
|
|
181
|
+
// FTS5 availability
|
|
182
|
+
let ftsAvailable = false;
|
|
183
|
+
try {
|
|
184
|
+
const row = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='fts_sessions'").get();
|
|
185
|
+
ftsAvailable = !!row;
|
|
186
|
+
}
|
|
187
|
+
catch { /* skip */ }
|
|
188
|
+
// Journal mode
|
|
189
|
+
let journalMode = "unknown";
|
|
190
|
+
try {
|
|
191
|
+
const result = db.pragma("journal_mode");
|
|
192
|
+
journalMode = result[0]?.journal_mode || "unknown";
|
|
193
|
+
}
|
|
194
|
+
catch { /* skip */ }
|
|
195
|
+
// Table row counts
|
|
196
|
+
const tables = ["sessions", "changes", "decisions", "file_notes", "conventions", "tasks", "milestones", "scheduled_events"];
|
|
197
|
+
const tableCounts = {};
|
|
198
|
+
for (const table of tables) {
|
|
199
|
+
try {
|
|
200
|
+
tableCounts[table] = db.prepare(`SELECT COUNT(*) as c FROM ${table}`).get().c;
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
tableCounts[table] = -1; // table doesn't exist
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
// Config values
|
|
207
|
+
const config = repos.config.getAll();
|
|
208
|
+
// Active session
|
|
209
|
+
const activeSessionId = getCurrentSessionId();
|
|
210
|
+
return success({
|
|
211
|
+
integrity,
|
|
212
|
+
schema_version: schemaVersion,
|
|
213
|
+
expected_schema_version: DB_VERSION,
|
|
214
|
+
needs_migration: schemaVersion < DB_VERSION,
|
|
215
|
+
fts5_available: ftsAvailable,
|
|
216
|
+
journal_mode: journalMode,
|
|
217
|
+
database_size_kb: getDbSizeKb(),
|
|
218
|
+
table_row_counts: tableCounts,
|
|
219
|
+
config,
|
|
220
|
+
active_session_id: activeSessionId,
|
|
221
|
+
});
|
|
61
222
|
});
|
|
62
223
|
}
|
|
63
224
|
//# sourceMappingURL=stats.js.map
|
package/dist/tools/stats.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../src/tools/stats.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,
|
|
1
|
+
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../src/tools/stats.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/tools/tasks.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/tools/tasks.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOpE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAgMzD"}
|
package/dist/tools/tasks.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
import { getDb, now, getCurrentSessionId } from "../database.js";
|
|
6
6
|
import { TOOL_PREFIX } from "../constants.js";
|
|
7
|
+
import { success, error } from "../response.js";
|
|
7
8
|
export function registerTaskTools(server) {
|
|
8
9
|
// ─── CREATE TASK ────────────────────────────────────────────────────
|
|
9
10
|
server.registerTool(`${TOOL_PREFIX}_create_task`, {
|
|
@@ -44,15 +45,10 @@ Returns:
|
|
|
44
45
|
INSERT INTO tasks (session_id, created_at, updated_at, title, description, status, priority, assigned_files, tags, blocked_by)
|
|
45
46
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
46
47
|
`).run(sessionId, timestamp, timestamp, title, description || null, status, priority, assigned_files ? JSON.stringify(assigned_files) : null, tags ? JSON.stringify(tags) : null, blocked_by ? JSON.stringify(blocked_by) : null);
|
|
47
|
-
return {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
task_id: result.lastInsertRowid,
|
|
52
|
-
message: `Task #${result.lastInsertRowid} created: "${title}" [${priority}/${status}]`,
|
|
53
|
-
}, null, 2),
|
|
54
|
-
}],
|
|
55
|
-
};
|
|
48
|
+
return success({
|
|
49
|
+
task_id: Number(result.lastInsertRowid),
|
|
50
|
+
message: `Task #${result.lastInsertRowid} created: "${title}" [${priority}/${status}]`,
|
|
51
|
+
});
|
|
56
52
|
});
|
|
57
53
|
// ─── UPDATE TASK ────────────────────────────────────────────────────
|
|
58
54
|
server.registerTool(`${TOOL_PREFIX}_update_task`, {
|
|
@@ -122,7 +118,7 @@ Returns:
|
|
|
122
118
|
params.push(id);
|
|
123
119
|
const result = db.prepare(`UPDATE tasks SET ${updates.join(", ")} WHERE id = ?`).run(...params);
|
|
124
120
|
if (result.changes === 0) {
|
|
125
|
-
return
|
|
121
|
+
return error(`Task #${id} not found.`);
|
|
126
122
|
}
|
|
127
123
|
// If task was marked done, trigger any scheduled events waiting on it
|
|
128
124
|
let triggeredEventCount = 0;
|
|
@@ -135,11 +131,10 @@ Returns:
|
|
|
135
131
|
catch { /* scheduled_events table may not exist yet */ }
|
|
136
132
|
}
|
|
137
133
|
const updated = db.prepare("SELECT * FROM tasks WHERE id = ?").get(id);
|
|
138
|
-
const response = { ...updated };
|
|
139
134
|
if (triggeredEventCount > 0) {
|
|
140
|
-
|
|
135
|
+
updated._triggered_events = `${triggeredEventCount} scheduled event(s) triggered by this task completion. Use engram_check_events to review.`;
|
|
141
136
|
}
|
|
142
|
-
return
|
|
137
|
+
return success(updated);
|
|
143
138
|
});
|
|
144
139
|
// ─── GET TASKS ──────────────────────────────────────────────────────
|
|
145
140
|
server.registerTool(`${TOOL_PREFIX}_get_tasks`, {
|
|
@@ -187,7 +182,6 @@ Returns:
|
|
|
187
182
|
query += " AND EXISTS (SELECT 1 FROM json_each(tags) WHERE value = ?)";
|
|
188
183
|
params.push(tag);
|
|
189
184
|
}
|
|
190
|
-
// Sort: critical > high > medium > low, then by creation date
|
|
191
185
|
query += ` ORDER BY
|
|
192
186
|
CASE priority WHEN 'critical' THEN 0 WHEN 'high' THEN 1 WHEN 'medium' THEN 2 WHEN 'low' THEN 3 END,
|
|
193
187
|
created_at ASC
|
|
@@ -195,12 +189,7 @@ Returns:
|
|
|
195
189
|
params.push(limit);
|
|
196
190
|
const tasks = db.prepare(query).all(...params);
|
|
197
191
|
const openCount = db.prepare("SELECT COUNT(*) as c FROM tasks WHERE status NOT IN ('done','cancelled')").get().c;
|
|
198
|
-
return {
|
|
199
|
-
content: [{
|
|
200
|
-
type: "text",
|
|
201
|
-
text: JSON.stringify({ total_open: openCount, returned: tasks.length, tasks }, null, 2),
|
|
202
|
-
}],
|
|
203
|
-
};
|
|
192
|
+
return success({ total_open: openCount, returned: tasks.length, tasks });
|
|
204
193
|
});
|
|
205
194
|
}
|
|
206
195
|
//# sourceMappingURL=tasks.js.map
|
package/dist/tools/tasks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/tools/tasks.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,4CAA4C;AAC5C,+EAA+E;AAG/E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/tools/tasks.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
import type { ArchLayer } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Normalize a file path for consistent storage as a database key.
|
|
4
|
+
* 1. Replace backslashes with forward slashes
|
|
5
|
+
* 2. If absolute and projectRoot provided, convert to relative
|
|
6
|
+
* 3. Strip leading ./
|
|
7
|
+
* 4. Collapse consecutive /
|
|
8
|
+
* 5. Strip trailing /
|
|
9
|
+
*/
|
|
10
|
+
export declare function normalizePath(filePath: string, projectRoot?: string): string;
|
|
2
11
|
/**
|
|
3
12
|
* Auto-detect the project root by walking up from cwd looking for marker files.
|
|
4
13
|
*/
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAkBzD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAA4B,EACtC,UAAU,GAAE,MAA8B,GACzC,MAAM,EAAE,CAiDV;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAUvD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAUvE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,MAAM,CAK7F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAO/E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAOhF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,GAAE,MAAM,GAAG,UAAmB,GAAG,MAAM,CAM1F;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAIzD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAG/D"}
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAY5E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAkBzD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAA4B,EACtC,UAAU,GAAE,MAA8B,GACzC,MAAM,EAAE,CAiDV;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAUvD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAUvE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,MAAM,CAK7F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAO/E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAOhF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,GAAE,MAAM,GAAG,UAAmB,GAAG,MAAM,CAM1F;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAIzD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAG/D"}
|
package/dist/utils.js
CHANGED
|
@@ -5,6 +5,24 @@ import { execSync } from "child_process";
|
|
|
5
5
|
import * as fs from "fs";
|
|
6
6
|
import * as path from "path";
|
|
7
7
|
import { EXCLUDED_DIRS, LAYER_PATTERNS, MAX_FILE_TREE_DEPTH, MAX_FILE_TREE_ENTRIES, PROJECT_MARKERS, } from "./constants.js";
|
|
8
|
+
/**
|
|
9
|
+
* Normalize a file path for consistent storage as a database key.
|
|
10
|
+
* 1. Replace backslashes with forward slashes
|
|
11
|
+
* 2. If absolute and projectRoot provided, convert to relative
|
|
12
|
+
* 3. Strip leading ./
|
|
13
|
+
* 4. Collapse consecutive /
|
|
14
|
+
* 5. Strip trailing /
|
|
15
|
+
*/
|
|
16
|
+
export function normalizePath(filePath, projectRoot) {
|
|
17
|
+
let p = filePath.replace(/\\/g, "/");
|
|
18
|
+
if (projectRoot && path.isAbsolute(p)) {
|
|
19
|
+
p = path.relative(projectRoot, p).replace(/\\/g, "/");
|
|
20
|
+
}
|
|
21
|
+
p = p.replace(/^\.\//, "");
|
|
22
|
+
p = p.replace(/\/+/g, "/");
|
|
23
|
+
p = p.replace(/\/$/, "");
|
|
24
|
+
return p;
|
|
25
|
+
}
|
|
8
26
|
/**
|
|
9
27
|
* Auto-detect the project root by walking up from cwd looking for marker files.
|
|
10
28
|
*/
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,52 +1,60 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "engram-mcp-server",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Engram — Persistent Memory Cortex for AI coding agents. Gives agents session continuity, change tracking, decision logging, and project intelligence across sessions.",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"main": "dist/index.js",
|
|
7
|
-
"bin": {
|
|
8
|
-
"engram": "dist/index.js",
|
|
9
|
-
"engram-mcp-server": "dist/index.js"
|
|
10
|
-
},
|
|
11
|
-
"files": [
|
|
12
|
-
"dist/",
|
|
13
|
-
"scripts/"
|
|
14
|
-
],
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
"mcp",
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
"
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
"
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
"
|
|
44
|
-
"@
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
"node": "
|
|
51
|
-
|
|
52
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "engram-mcp-server",
|
|
3
|
+
"version": "1.4.0",
|
|
4
|
+
"description": "Engram — Persistent Memory Cortex for AI coding agents. Gives agents session continuity, change tracking, decision logging, and project intelligence across sessions.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"engram": "dist/index.js",
|
|
9
|
+
"engram-mcp-server": "dist/index.js"
|
|
10
|
+
},
|
|
11
|
+
"files": [
|
|
12
|
+
"dist/",
|
|
13
|
+
"scripts/"
|
|
14
|
+
],
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "https://github.com/keggan-std/Engram"
|
|
18
|
+
},
|
|
19
|
+
"releaseNotes": "# v1.4.0 — Versioned Installs, Auto-Update & Update CLI\r\n\r\n**Engram v1.4.0 is live.** This release brings full version awareness to the installer, a background update check service, and user-controlled update management — so agents can keep users informed about new releases without ever interrupting their work.\r\n\r\n---\r\n\r\n## Breaking Changes\r\n\r\nNone. v1.4.0 is fully backwards-compatible. Existing IDE config entries (without `_engram_version`) are automatically adopted on the next `engram install` run.\r\n\r\n---\r\n\r\n## What's New\r\n\r\n### Version-Tracked Installer Entries\r\n\r\nEvery IDE config entry written by the installer is now stamped with `_engram_version`. On re-install, the installer detects one of four states and reports it clearly:\r\n\r\n| State | Meaning |\r\n|-------|---------|\r\n| `added` | Fresh install — no prior entry existed |\r\n| `exists` | Already installed at this version — nothing written |\r\n| `upgraded` | Updated from a known older version to the current one |\r\n| `legacy-upgraded` | Entry existed without a version stamp (pre-v1.4.0) — adopted and stamped |\r\n\r\nThe old `\"updated\"` status has been replaced by the more precise `\"upgraded\"` and `\"legacy-upgraded\"` outcomes.\r\n\r\n### Background Auto-Update Check\r\n\r\nEngram now checks for new versions silently after the MCP server connects. The check is:\r\n- **Fire-and-forget:** runs via `setImmediate`, never blocks startup or any tool call\r\n- **Throttled:** runs at most once per 24 hours\r\n- **Opt-out:** disabled via `engram_config set auto_update_check false`\r\n- **Snooze-aware:** respects `auto_update_remind_after` (e.g., `7d`, `2w`, `1m`)\r\n- **Skip-aware:** respects `auto_update_skip_version` to permanently silence a specific version\r\n- **Level-aware:** `auto_update_notify_level` (`\"major\"` | `\"minor\"` | `\"patch\"`) controls which bump sizes trigger a notification\r\n\r\n### Update Notifications via `engram_start_session`\r\n\r\nWhen a newer version is available, `engram_start_session` includes an `update_available` field in its response across all three verbosity levels (`minimal`, `summary`, `full`):\r\n\r\n```json\r\n\"update_available\": {\r\n \"installed_version\": \"1.3.0\",\r\n \"available_version\": \"1.4.0\",\r\n \"changelog\": \"### v1.4.0 — ...\",\r\n \"releases_url\": \"https://github.com/keggan-std/Engram/releases\"\r\n}\r\n```\r\n\r\nThe agent presents this to the user, who can respond with any of:\r\n- **Update** → agent tells user to run `npx -y engram-mcp-server install`\r\n- **Skip this version** → `engram_config set auto_update_skip_version 1.4.0`\r\n- **Postpone** → `engram_config set auto_update_remind_after 7d`\r\n- **Disable checks** → `engram_config set auto_update_check false`\r\n\r\n### Two-Source Changelog Delivery\r\n\r\nUpdate notifications include the release changelog fetched from:\r\n1. **npm registry** (`https://registry.npmjs.org/engram-mcp-server/latest`) — includes the `releaseNotes` field injected at publish time by the new pre-publish script\r\n2. **GitHub Releases API** — fallback when the registry is unreachable or `releaseNotes` is absent\r\n\r\nBoth sources use a 5-second timeout. Network failures are silent — startup is never affected.\r\n\r\n### New `--check` CLI Flag\r\n\r\n```bash\r\nnpx -y engram-mcp-server install --check\r\n```\r\n\r\nShows the installed version for every detected IDE, fetches the npm latest, and correctly handles three scenarios:\r\n\r\n| Scenario | Label |\r\n|----------|-------|\r\n| Running == npm latest | `✅ up to date` |\r\n| Running > npm latest | `⚡ running pre-release (vX.Y.Z > npm vA.B.C)` |\r\n| Running < npm latest | `⬆ npm has vX.Y.Z — run: npx -y engram-mcp-server install` |\r\n\r\n### `engram_stats` — Version & Update Status\r\n\r\n`engram_stats` now returns:\r\n\r\n```json\r\n{\r\n \"server_version\": \"1.4.0\",\r\n \"update_status\": { \"available\": true, \"version\": \"1.5.0\", \"releases_url\": \"...\" },\r\n \"auto_update_check\": \"enabled\",\r\n \"last_update_check\": \"2026-02-23T00:00:00.000Z\"\r\n}\r\n```\r\n\r\n### `engram_config` — New Update Keys\r\n\r\nFour new keys are now accepted by `engram_config`:\r\n\r\n| Key | Type | Description |\r\n|-----|------|-------------|\r\n| `auto_update_check` | `true`/`false` | Enable/disable background update checks |\r\n| `auto_update_skip_version` | string | Version to permanently silence (e.g., `1.4.1`) |\r\n| `auto_update_remind_after` | duration or ISO date | Snooze updates (`7d`, `2w`, `1m`, or ISO string) |\r\n| `auto_update_notify_level` | `major`/`minor`/`patch` | Minimum bump size to trigger a notification |\r\n\r\n### Pre-publish Release Notes Injection\r\n\r\nA new `scripts/inject-release-notes.js` script runs automatically before every `npm publish` (as part of the `prepack` lifecycle). It reads `RELEASE_NOTES.md`, extracts the current version's section, and writes it into `package.json` as `releaseNotes`. This allows the update service to deliver changelogs in a single HTTP call to the npm registry — no CDN dependency, no GitHub rate limits.\r\n\r\n---\r\n\r\n## Fixes & Internal\r\n\r\n- Removed duplicate `getVersion()` function from `src/installer/index.ts` — now uses `getInstallerVersion()` from `config-writer.ts` as single source of truth\r\n- `UpdateService` uses only built-in Node.js 18+ `fetch` — no new runtime dependencies added\r\n- `addToConfig()` now uses version-first comparison instead of full JSON deep-equal, making the comparison logic explicit and testable\r\n\r\n---\r\n\r\n**Full Changelog**: https://github.com/keggan-std/Engram/compare/v1.3.0...v1.4.0\r\n\r\n---",
|
|
20
|
+
"scripts": {
|
|
21
|
+
"build": "tsc",
|
|
22
|
+
"prepack": "node scripts/inject-release-notes.js && npm run clean && npm run build",
|
|
23
|
+
"test": "vitest run",
|
|
24
|
+
"test:watch": "vitest",
|
|
25
|
+
"start": "node dist/index.js",
|
|
26
|
+
"dev": "tsc --watch",
|
|
27
|
+
"clean": "node -e \"const {rmSync,existsSync}=require('fs');if(existsSync('dist'))rmSync('dist',{recursive:true,force:true})\"",
|
|
28
|
+
"install-hooks": "node dist/scripts/install-hooks.js",
|
|
29
|
+
"install-mcp": "node scripts/install-mcp.js",
|
|
30
|
+
"install-mcp:list": "node scripts/install-mcp.js --list",
|
|
31
|
+
"inspect": "npx @modelcontextprotocol/inspector node dist/index.js"
|
|
32
|
+
},
|
|
33
|
+
"keywords": [
|
|
34
|
+
"mcp",
|
|
35
|
+
"model-context-protocol",
|
|
36
|
+
"ai-memory",
|
|
37
|
+
"coding-agent",
|
|
38
|
+
"persistent-memory",
|
|
39
|
+
"session-continuity"
|
|
40
|
+
],
|
|
41
|
+
"author": "",
|
|
42
|
+
"license": "MIT",
|
|
43
|
+
"dependencies": {
|
|
44
|
+
"@modelcontextprotocol/sdk": "^1.12.0",
|
|
45
|
+
"better-sqlite3": "^12.6.2",
|
|
46
|
+
"zod": "^3.24.0"
|
|
47
|
+
},
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"@types/better-sqlite3": "^7.6.13",
|
|
50
|
+
"@types/node": "^22.10.0",
|
|
51
|
+
"typescript": "^5.7.0",
|
|
52
|
+
"vitest": "^4.0.18"
|
|
53
|
+
},
|
|
54
|
+
"overrides": {
|
|
55
|
+
"prebuild-install": "7.1.3"
|
|
56
|
+
},
|
|
57
|
+
"engines": {
|
|
58
|
+
"node": ">=18.0.0"
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// ============================================================================
|
|
3
|
+
// Engram — Release Notes Injector
|
|
4
|
+
//
|
|
5
|
+
// Reads the latest version section from RELEASE_NOTES.md and injects it into
|
|
6
|
+
// package.json as the `releaseNotes` field before publishing.
|
|
7
|
+
// The npm registry then serves this field alongside the version metadata,
|
|
8
|
+
// allowing the update check service to fetch changelog in a single HTTP call.
|
|
9
|
+
//
|
|
10
|
+
// Usage (called automatically by the prepack script):
|
|
11
|
+
// node scripts/inject-release-notes.js
|
|
12
|
+
// ============================================================================
|
|
13
|
+
|
|
14
|
+
import fs from "fs";
|
|
15
|
+
import path from "path";
|
|
16
|
+
import { fileURLToPath } from "url";
|
|
17
|
+
|
|
18
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
19
|
+
const ROOT = path.resolve(__dirname, "..");
|
|
20
|
+
const RELEASE_NOTES_PATH = path.join(ROOT, "RELEASE_NOTES.md");
|
|
21
|
+
const PACKAGE_JSON_PATH = path.join(ROOT, "package.json");
|
|
22
|
+
|
|
23
|
+
// ─── Read files ──────────────────────────────────────────────────────
|
|
24
|
+
|
|
25
|
+
const pkg = JSON.parse(fs.readFileSync(PACKAGE_JSON_PATH, "utf-8"));
|
|
26
|
+
const notes = fs.readFileSync(RELEASE_NOTES_PATH, "utf-8");
|
|
27
|
+
|
|
28
|
+
// ─── Extract the latest version section ──────────────────────────────
|
|
29
|
+
// The file starts with the latest version heading (# vX.Y.Z — ...).
|
|
30
|
+
// We take everything up to the next top-level heading or the "## Fixes" block,
|
|
31
|
+
// so each publish only embeds the notes for that specific release.
|
|
32
|
+
|
|
33
|
+
const lines = notes.split("\n");
|
|
34
|
+
const sectionLines = [];
|
|
35
|
+
let inSection = false;
|
|
36
|
+
|
|
37
|
+
for (const line of lines) {
|
|
38
|
+
// First top-level heading = the latest version section
|
|
39
|
+
if (line.startsWith("# v") && !inSection) {
|
|
40
|
+
inSection = true;
|
|
41
|
+
sectionLines.push(line);
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Stop at the next top-level version heading or a "---" section separator
|
|
46
|
+
// that introduces historical patch notes (e.g. "## Fixes in v1.2.x")
|
|
47
|
+
if (inSection) {
|
|
48
|
+
if (line.startsWith("# v")) break; // Next version block
|
|
49
|
+
sectionLines.push(line);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const releaseNotes = sectionLines.join("\n").trim();
|
|
54
|
+
|
|
55
|
+
if (!releaseNotes) {
|
|
56
|
+
console.error("❌ inject-release-notes: could not extract release notes from RELEASE_NOTES.md");
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// ─── Inject into package.json ─────────────────────────────────────────
|
|
61
|
+
|
|
62
|
+
pkg.releaseNotes = releaseNotes;
|
|
63
|
+
|
|
64
|
+
fs.writeFileSync(PACKAGE_JSON_PATH, JSON.stringify(pkg, null, 2) + "\n", "utf-8");
|
|
65
|
+
|
|
66
|
+
console.log(`✅ inject-release-notes: injected ${releaseNotes.length} chars into package.json (v${pkg.version})`);
|
package/dist/installer.d.ts
DELETED
package/dist/installer.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"AA+KA,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,iBA0FhD"}
|