engram-mcp-server 1.2.8 → 1.2.9
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 +12 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +6 -1
- package/dist/constants.js.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.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 +79 -15
- package/dist/installer/index.js.map +1 -1
- package/package.json +6 -3
- 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
|
@@ -1,427 +0,0 @@
|
|
|
1
|
-
// ============================================================================
|
|
2
|
-
// Engram MCP Server — Project Intelligence Tools
|
|
3
|
-
// ============================================================================
|
|
4
|
-
import { z } from "zod";
|
|
5
|
-
import { getDb, now, getProjectRoot } from "../database.js";
|
|
6
|
-
import { TOOL_PREFIX, SNAPSHOT_TTL_MINUTES, MAX_SEARCH_RESULTS } from "../constants.js";
|
|
7
|
-
import { scanFileTree, detectLayer, isGitRepo, getGitBranch, getGitHead, getGitLogSince, getGitFilesChanged, minutesSince, safeJsonParse } from "../utils.js";
|
|
8
|
-
// ─── FTS5 Helpers ────────────────────────────────────────────────────
|
|
9
|
-
/**
|
|
10
|
-
* Check if FTS5 tables exist (migration v2 applied).
|
|
11
|
-
*/
|
|
12
|
-
function hasFts(db) {
|
|
13
|
-
try {
|
|
14
|
-
const row = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='fts_sessions'").get();
|
|
15
|
-
return !!row;
|
|
16
|
-
}
|
|
17
|
-
catch {
|
|
18
|
-
return false;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Escape a user query for FTS5 MATCH syntax.
|
|
23
|
-
* Wraps each word in quotes to avoid syntax errors from special chars.
|
|
24
|
-
*/
|
|
25
|
-
function ftsEscape(query) {
|
|
26
|
-
return query
|
|
27
|
-
.split(/\s+/)
|
|
28
|
-
.filter(Boolean)
|
|
29
|
-
.map(word => `"${word.replace(/"/g, '""')}"`)
|
|
30
|
-
.join(" ");
|
|
31
|
-
}
|
|
32
|
-
export function registerIntelligenceTools(server) {
|
|
33
|
-
// ─── SCAN PROJECT ───────────────────────────────────────────────────
|
|
34
|
-
server.registerTool(`${TOOL_PREFIX}_scan_project`, {
|
|
35
|
-
title: "Scan Project",
|
|
36
|
-
description: `Scan the project filesystem and build a cached snapshot of the structure. Includes file tree, auto-detected architectural layers, existing file notes, active decisions, and conventions. The snapshot is cached and reused — no need to rescan unless files changed significantly.
|
|
37
|
-
|
|
38
|
-
Args:
|
|
39
|
-
- force_refresh (boolean, optional): Force rescan even if cache is fresh (default: false)
|
|
40
|
-
- max_depth (number, optional): Max directory depth to scan (default: 5)
|
|
41
|
-
|
|
42
|
-
Returns:
|
|
43
|
-
ProjectSnapshot with file tree, layer distribution, and all stored intelligence.`,
|
|
44
|
-
inputSchema: {
|
|
45
|
-
force_refresh: z.boolean().default(false).describe("Force rescan even if cache is fresh"),
|
|
46
|
-
max_depth: z.number().int().min(1).max(10).default(5).describe("Max directory depth"),
|
|
47
|
-
},
|
|
48
|
-
annotations: {
|
|
49
|
-
readOnlyHint: false, // It writes to cache
|
|
50
|
-
destructiveHint: false,
|
|
51
|
-
idempotentHint: true,
|
|
52
|
-
openWorldHint: false,
|
|
53
|
-
},
|
|
54
|
-
}, async ({ force_refresh, max_depth }) => {
|
|
55
|
-
const db = getDb();
|
|
56
|
-
const projectRoot = getProjectRoot();
|
|
57
|
-
// Check cache freshness
|
|
58
|
-
if (!force_refresh) {
|
|
59
|
-
const cached = db.prepare("SELECT * FROM snapshot_cache WHERE key = 'project_structure'").get();
|
|
60
|
-
if (cached) {
|
|
61
|
-
const age = minutesSince(cached.updated_at);
|
|
62
|
-
if (age < SNAPSHOT_TTL_MINUTES) {
|
|
63
|
-
const snapshot = safeJsonParse(cached.value, null);
|
|
64
|
-
if (snapshot) {
|
|
65
|
-
return {
|
|
66
|
-
content: [{
|
|
67
|
-
type: "text",
|
|
68
|
-
text: JSON.stringify({
|
|
69
|
-
...snapshot,
|
|
70
|
-
_cache_status: `fresh (${age}min old, TTL: ${SNAPSHOT_TTL_MINUTES}min)`,
|
|
71
|
-
}, null, 2),
|
|
72
|
-
}],
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
// Perform full scan
|
|
79
|
-
const fileTree = scanFileTree(projectRoot, max_depth);
|
|
80
|
-
// Auto-detect layers for each file
|
|
81
|
-
const layerDist = {};
|
|
82
|
-
for (const f of fileTree) {
|
|
83
|
-
if (f.endsWith("/"))
|
|
84
|
-
continue; // Skip directories
|
|
85
|
-
const layer = detectLayer(f);
|
|
86
|
-
layerDist[layer] = (layerDist[layer] || 0) + 1;
|
|
87
|
-
}
|
|
88
|
-
// Fetch stored intelligence
|
|
89
|
-
const fileNotes = db.prepare("SELECT * FROM file_notes ORDER BY file_path").all();
|
|
90
|
-
const activeDecisions = db.prepare("SELECT * FROM decisions WHERE status = 'active' ORDER BY timestamp DESC LIMIT 20").all();
|
|
91
|
-
const activeConventions = db.prepare("SELECT * FROM conventions WHERE enforced = 1 ORDER BY category").all();
|
|
92
|
-
// Git info
|
|
93
|
-
let gitInfo = null;
|
|
94
|
-
if (isGitRepo(projectRoot)) {
|
|
95
|
-
const branch = getGitBranch(projectRoot);
|
|
96
|
-
const head = getGitHead(projectRoot);
|
|
97
|
-
gitInfo = { branch, head, is_clean: true }; // Simplified
|
|
98
|
-
}
|
|
99
|
-
const snapshot = {
|
|
100
|
-
project_root: projectRoot,
|
|
101
|
-
file_tree: fileTree,
|
|
102
|
-
total_files: fileTree.filter(f => !f.endsWith("/")).length,
|
|
103
|
-
file_notes: fileNotes,
|
|
104
|
-
recent_decisions: activeDecisions,
|
|
105
|
-
active_conventions: activeConventions,
|
|
106
|
-
layer_distribution: layerDist,
|
|
107
|
-
generated_at: now(),
|
|
108
|
-
git: gitInfo,
|
|
109
|
-
};
|
|
110
|
-
// Cache the snapshot
|
|
111
|
-
db.prepare("INSERT OR REPLACE INTO snapshot_cache (key, value, updated_at, ttl_minutes) VALUES ('project_structure', ?, ?, ?)").run(JSON.stringify(snapshot), now(), SNAPSHOT_TTL_MINUTES);
|
|
112
|
-
return {
|
|
113
|
-
content: [{
|
|
114
|
-
type: "text",
|
|
115
|
-
text: JSON.stringify({
|
|
116
|
-
...snapshot,
|
|
117
|
-
_cache_status: "freshly scanned",
|
|
118
|
-
}, null, 2),
|
|
119
|
-
}],
|
|
120
|
-
};
|
|
121
|
-
});
|
|
122
|
-
// ─── SEARCH MEMORY (FTS5-powered) ──────────────────────────────────
|
|
123
|
-
server.registerTool(`${TOOL_PREFIX}_search`, {
|
|
124
|
-
title: "Search Memory",
|
|
125
|
-
description: `Full-text search across ALL memory: sessions, changes, decisions, file notes, conventions, and tasks. Uses FTS5 for high-performance ranked results when available, falls back to LIKE for compatibility.
|
|
126
|
-
|
|
127
|
-
Args:
|
|
128
|
-
- query (string): Search term(s)
|
|
129
|
-
- scope (string, optional): Limit search to a specific table — "sessions", "changes", "decisions", "file_notes", "conventions", "tasks", or "all" (default: "all")
|
|
130
|
-
- limit (number, optional): Max total results (default: 20)
|
|
131
|
-
|
|
132
|
-
Returns:
|
|
133
|
-
Grouped search results with relevance context.`,
|
|
134
|
-
inputSchema: {
|
|
135
|
-
query: z.string().min(1).describe("Search term(s)"),
|
|
136
|
-
scope: z.enum(["all", "sessions", "changes", "decisions", "file_notes", "conventions", "tasks"]).default("all"),
|
|
137
|
-
limit: z.number().int().min(1).max(MAX_SEARCH_RESULTS).default(20),
|
|
138
|
-
},
|
|
139
|
-
annotations: {
|
|
140
|
-
readOnlyHint: true,
|
|
141
|
-
destructiveHint: false,
|
|
142
|
-
idempotentHint: true,
|
|
143
|
-
openWorldHint: false,
|
|
144
|
-
},
|
|
145
|
-
}, async ({ query, scope, limit }) => {
|
|
146
|
-
const db = getDb();
|
|
147
|
-
const useFts = hasFts(db);
|
|
148
|
-
const results = {};
|
|
149
|
-
let totalFound = 0;
|
|
150
|
-
const perTable = Math.ceil(limit / 6);
|
|
151
|
-
if (useFts) {
|
|
152
|
-
// ─── FTS5 Path (fast, ranked) ────────────────────────────
|
|
153
|
-
const ftsQuery = ftsEscape(query);
|
|
154
|
-
if (scope === "all" || scope === "sessions") {
|
|
155
|
-
try {
|
|
156
|
-
const rows = db.prepare(`SELECT s.*, rank FROM fts_sessions f
|
|
157
|
-
JOIN sessions s ON s.id = f.rowid
|
|
158
|
-
WHERE fts_sessions MATCH ?
|
|
159
|
-
ORDER BY rank LIMIT ?`).all(ftsQuery, perTable);
|
|
160
|
-
if (rows.length) {
|
|
161
|
-
results.sessions = rows;
|
|
162
|
-
totalFound += rows.length;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
catch { /* FTS match failed, skip */ }
|
|
166
|
-
}
|
|
167
|
-
if (scope === "all" || scope === "changes") {
|
|
168
|
-
try {
|
|
169
|
-
const rows = db.prepare(`SELECT c.*, rank FROM fts_changes f
|
|
170
|
-
JOIN changes c ON c.id = f.rowid
|
|
171
|
-
WHERE fts_changes MATCH ?
|
|
172
|
-
ORDER BY rank LIMIT ?`).all(ftsQuery, perTable);
|
|
173
|
-
if (rows.length) {
|
|
174
|
-
results.changes = rows;
|
|
175
|
-
totalFound += rows.length;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
catch { /* FTS match failed, skip */ }
|
|
179
|
-
}
|
|
180
|
-
if (scope === "all" || scope === "decisions") {
|
|
181
|
-
try {
|
|
182
|
-
const rows = db.prepare(`SELECT d.*, rank FROM fts_decisions f
|
|
183
|
-
JOIN decisions d ON d.id = f.rowid
|
|
184
|
-
WHERE fts_decisions MATCH ?
|
|
185
|
-
ORDER BY rank LIMIT ?`).all(ftsQuery, perTable);
|
|
186
|
-
if (rows.length) {
|
|
187
|
-
results.decisions = rows;
|
|
188
|
-
totalFound += rows.length;
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
catch { /* FTS match failed, skip */ }
|
|
192
|
-
}
|
|
193
|
-
if (scope === "all" || scope === "file_notes") {
|
|
194
|
-
try {
|
|
195
|
-
const rows = db.prepare(`SELECT * FROM file_notes WHERE file_path IN (
|
|
196
|
-
SELECT file_path FROM fts_file_notes WHERE fts_file_notes MATCH ?
|
|
197
|
-
) LIMIT ?`).all(ftsQuery, perTable);
|
|
198
|
-
if (rows.length) {
|
|
199
|
-
results.file_notes = rows;
|
|
200
|
-
totalFound += rows.length;
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
catch { /* FTS match failed, skip */ }
|
|
204
|
-
}
|
|
205
|
-
if (scope === "all" || scope === "conventions") {
|
|
206
|
-
try {
|
|
207
|
-
const rows = db.prepare(`SELECT c.*, rank FROM fts_conventions f
|
|
208
|
-
JOIN conventions c ON c.id = f.rowid
|
|
209
|
-
WHERE fts_conventions MATCH ?
|
|
210
|
-
ORDER BY rank LIMIT ?`).all(ftsQuery, perTable);
|
|
211
|
-
if (rows.length) {
|
|
212
|
-
results.conventions = rows;
|
|
213
|
-
totalFound += rows.length;
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
catch { /* FTS match failed, skip */ }
|
|
217
|
-
}
|
|
218
|
-
if (scope === "all" || scope === "tasks") {
|
|
219
|
-
try {
|
|
220
|
-
const rows = db.prepare(`SELECT t.*, rank FROM fts_tasks f
|
|
221
|
-
JOIN tasks t ON t.id = f.rowid
|
|
222
|
-
WHERE fts_tasks MATCH ?
|
|
223
|
-
ORDER BY rank LIMIT ?`).all(ftsQuery, perTable);
|
|
224
|
-
if (rows.length) {
|
|
225
|
-
results.tasks = rows;
|
|
226
|
-
totalFound += rows.length;
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
catch { /* FTS match failed, skip */ }
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
else {
|
|
233
|
-
// ─── LIKE Fallback (slow but compatible) ─────────────────
|
|
234
|
-
const term = `%${query}%`;
|
|
235
|
-
if (scope === "all" || scope === "sessions") {
|
|
236
|
-
const rows = db.prepare("SELECT * FROM sessions WHERE summary LIKE ? OR tags LIKE ? ORDER BY id DESC LIMIT ?").all(term, term, perTable);
|
|
237
|
-
if (rows.length) {
|
|
238
|
-
results.sessions = rows;
|
|
239
|
-
totalFound += rows.length;
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
if (scope === "all" || scope === "changes") {
|
|
243
|
-
const rows = db.prepare("SELECT * FROM changes WHERE description LIKE ? OR file_path LIKE ? OR diff_summary LIKE ? ORDER BY timestamp DESC LIMIT ?").all(term, term, term, perTable);
|
|
244
|
-
if (rows.length) {
|
|
245
|
-
results.changes = rows;
|
|
246
|
-
totalFound += rows.length;
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
if (scope === "all" || scope === "decisions") {
|
|
250
|
-
const rows = db.prepare("SELECT * FROM decisions WHERE decision LIKE ? OR rationale LIKE ? OR tags LIKE ? ORDER BY timestamp DESC LIMIT ?").all(term, term, term, perTable);
|
|
251
|
-
if (rows.length) {
|
|
252
|
-
results.decisions = rows;
|
|
253
|
-
totalFound += rows.length;
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
if (scope === "all" || scope === "file_notes") {
|
|
257
|
-
const rows = db.prepare("SELECT * FROM file_notes WHERE file_path LIKE ? OR purpose LIKE ? OR notes LIKE ? LIMIT ?").all(term, term, term, perTable);
|
|
258
|
-
if (rows.length) {
|
|
259
|
-
results.file_notes = rows;
|
|
260
|
-
totalFound += rows.length;
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
if (scope === "all" || scope === "conventions") {
|
|
264
|
-
const rows = db.prepare("SELECT * FROM conventions WHERE rule LIKE ? OR examples LIKE ? LIMIT ?").all(term, term, perTable);
|
|
265
|
-
if (rows.length) {
|
|
266
|
-
results.conventions = rows;
|
|
267
|
-
totalFound += rows.length;
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
if (scope === "all" || scope === "tasks") {
|
|
271
|
-
const rows = db.prepare("SELECT * FROM tasks WHERE title LIKE ? OR description LIKE ? OR tags LIKE ? ORDER BY updated_at DESC LIMIT ?").all(term, term, term, perTable);
|
|
272
|
-
if (rows.length) {
|
|
273
|
-
results.tasks = rows;
|
|
274
|
-
totalFound += rows.length;
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
return {
|
|
279
|
-
content: [{
|
|
280
|
-
type: "text",
|
|
281
|
-
text: JSON.stringify({
|
|
282
|
-
query,
|
|
283
|
-
scope,
|
|
284
|
-
search_engine: useFts ? "fts5" : "like",
|
|
285
|
-
total_results: totalFound,
|
|
286
|
-
results,
|
|
287
|
-
}, null, 2),
|
|
288
|
-
}],
|
|
289
|
-
};
|
|
290
|
-
});
|
|
291
|
-
// ─── WHAT CHANGED ───────────────────────────────────────────────────
|
|
292
|
-
server.registerTool(`${TOOL_PREFIX}_what_changed`, {
|
|
293
|
-
title: "What Changed",
|
|
294
|
-
description: `Comprehensive diff report: what changed since a given time. Combines agent-recorded changes with git history. Use to quickly catch up after being away.
|
|
295
|
-
|
|
296
|
-
Args:
|
|
297
|
-
- since (string, optional): ISO timestamp or relative like "1h", "24h", "7d" (default: last session end)
|
|
298
|
-
- include_git (boolean, optional): Include git log (default: true)
|
|
299
|
-
|
|
300
|
-
Returns:
|
|
301
|
-
Combined change report from both agent memory and git.`,
|
|
302
|
-
inputSchema: {
|
|
303
|
-
since: z.string().optional().describe('ISO timestamp or relative: "1h", "24h", "7d"'),
|
|
304
|
-
include_git: z.boolean().default(true),
|
|
305
|
-
},
|
|
306
|
-
annotations: {
|
|
307
|
-
readOnlyHint: true,
|
|
308
|
-
destructiveHint: false,
|
|
309
|
-
idempotentHint: true,
|
|
310
|
-
openWorldHint: false,
|
|
311
|
-
},
|
|
312
|
-
}, async ({ since, include_git }) => {
|
|
313
|
-
const db = getDb();
|
|
314
|
-
const projectRoot = getProjectRoot();
|
|
315
|
-
// Resolve "since" to an ISO timestamp
|
|
316
|
-
let sinceTimestamp;
|
|
317
|
-
if (!since) {
|
|
318
|
-
// Default to last session end
|
|
319
|
-
const last = db.prepare("SELECT ended_at FROM sessions WHERE ended_at IS NOT NULL ORDER BY id DESC LIMIT 1").get();
|
|
320
|
-
sinceTimestamp = last?.ended_at || new Date(Date.now() - 86400000).toISOString();
|
|
321
|
-
}
|
|
322
|
-
else if (/^\d+[hdm]$/.test(since)) {
|
|
323
|
-
// Relative time
|
|
324
|
-
const match = since.match(/^(\d+)([hdm])$/);
|
|
325
|
-
if (match) {
|
|
326
|
-
const amount = parseInt(match[1]);
|
|
327
|
-
const unit = match[2];
|
|
328
|
-
const ms = unit === "h" ? amount * 3600000 : unit === "d" ? amount * 86400000 : amount * 60000;
|
|
329
|
-
sinceTimestamp = new Date(Date.now() - ms).toISOString();
|
|
330
|
-
}
|
|
331
|
-
else {
|
|
332
|
-
sinceTimestamp = since;
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
else {
|
|
336
|
-
sinceTimestamp = since;
|
|
337
|
-
}
|
|
338
|
-
// Agent-recorded changes
|
|
339
|
-
const agentChanges = db.prepare("SELECT * FROM changes WHERE timestamp > ? ORDER BY timestamp DESC").all(sinceTimestamp);
|
|
340
|
-
// Decisions made since
|
|
341
|
-
const newDecisions = db.prepare("SELECT * FROM decisions WHERE timestamp > ? ORDER BY timestamp DESC").all(sinceTimestamp);
|
|
342
|
-
// Git changes
|
|
343
|
-
let gitLog = "";
|
|
344
|
-
let gitFilesChanged = [];
|
|
345
|
-
if (include_git && isGitRepo(projectRoot)) {
|
|
346
|
-
gitLog = getGitLogSince(projectRoot, sinceTimestamp);
|
|
347
|
-
gitFilesChanged = getGitFilesChanged(projectRoot, sinceTimestamp);
|
|
348
|
-
}
|
|
349
|
-
// Files only in git (not recorded by agent)
|
|
350
|
-
const recordedFiles = new Set(agentChanges.map(c => c.file_path));
|
|
351
|
-
const unrecordedGitChanges = gitFilesChanged.filter(f => !recordedFiles.has(f));
|
|
352
|
-
return {
|
|
353
|
-
content: [{
|
|
354
|
-
type: "text",
|
|
355
|
-
text: JSON.stringify({
|
|
356
|
-
since: sinceTimestamp,
|
|
357
|
-
agent_recorded: {
|
|
358
|
-
count: agentChanges.length,
|
|
359
|
-
changes: agentChanges,
|
|
360
|
-
},
|
|
361
|
-
new_decisions: newDecisions,
|
|
362
|
-
git: include_git ? {
|
|
363
|
-
log: gitLog,
|
|
364
|
-
files_changed: gitFilesChanged.length,
|
|
365
|
-
unrecorded_changes: unrecordedGitChanges,
|
|
366
|
-
} : null,
|
|
367
|
-
summary: `${agentChanges.length} recorded changes, ${newDecisions.length} new decisions, ${gitFilesChanged.length} git file changes (${unrecordedGitChanges.length} unrecorded) since ${sinceTimestamp}.`,
|
|
368
|
-
}, null, 2),
|
|
369
|
-
}],
|
|
370
|
-
};
|
|
371
|
-
});
|
|
372
|
-
// ─── GET DEPENDENCY MAP ─────────────────────────────────────────────
|
|
373
|
-
server.registerTool(`${TOOL_PREFIX}_get_dependency_map`, {
|
|
374
|
-
title: "Get Dependency Map",
|
|
375
|
-
description: `Get the dependency graph for a file: what it depends on and what depends on it. Built from stored file notes.
|
|
376
|
-
|
|
377
|
-
Args:
|
|
378
|
-
- file_path (string): File to query
|
|
379
|
-
- depth (number, optional): How many levels deep to traverse (default: 1)
|
|
380
|
-
|
|
381
|
-
Returns:
|
|
382
|
-
Dependency tree with upstream and downstream files.`,
|
|
383
|
-
inputSchema: {
|
|
384
|
-
file_path: z.string().describe("File to query"),
|
|
385
|
-
depth: z.number().int().min(1).max(5).default(1).describe("Traversal depth"),
|
|
386
|
-
},
|
|
387
|
-
annotations: {
|
|
388
|
-
readOnlyHint: true,
|
|
389
|
-
destructiveHint: false,
|
|
390
|
-
idempotentHint: true,
|
|
391
|
-
openWorldHint: false,
|
|
392
|
-
},
|
|
393
|
-
}, async ({ file_path, depth }) => {
|
|
394
|
-
const db = getDb();
|
|
395
|
-
function getDeps(fp, dir, currentDepth) {
|
|
396
|
-
if (currentDepth > depth)
|
|
397
|
-
return {};
|
|
398
|
-
const note = db.prepare("SELECT * FROM file_notes WHERE file_path = ?").get(fp);
|
|
399
|
-
if (!note)
|
|
400
|
-
return {};
|
|
401
|
-
const field = dir === "up" ? "dependencies" : "dependents";
|
|
402
|
-
const deps = safeJsonParse(note[field], []);
|
|
403
|
-
const result = {};
|
|
404
|
-
for (const dep of deps) {
|
|
405
|
-
result[dep] = getDeps(dep, dir, currentDepth + 1);
|
|
406
|
-
}
|
|
407
|
-
return result;
|
|
408
|
-
}
|
|
409
|
-
const upstream = getDeps(file_path, "up", 1);
|
|
410
|
-
const downstream = getDeps(file_path, "down", 1);
|
|
411
|
-
const note = db.prepare("SELECT * FROM file_notes WHERE file_path = ?").get(file_path);
|
|
412
|
-
return {
|
|
413
|
-
content: [{
|
|
414
|
-
type: "text",
|
|
415
|
-
text: JSON.stringify({
|
|
416
|
-
file_path,
|
|
417
|
-
purpose: note?.purpose || "(no notes recorded)",
|
|
418
|
-
layer: note?.layer || detectLayer(file_path),
|
|
419
|
-
complexity: note?.complexity || "unknown",
|
|
420
|
-
depends_on: upstream,
|
|
421
|
-
depended_by: downstream,
|
|
422
|
-
}, null, 2),
|
|
423
|
-
}],
|
|
424
|
-
};
|
|
425
|
-
});
|
|
426
|
-
}
|
|
427
|
-
//# sourceMappingURL=intelligence.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"intelligence.js","sourceRoot":"","sources":["../../../src/tools/intelligence.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"milestones.d.ts","sourceRoot":"","sources":["../../../src/tools/milestones.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA4E9D"}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
// ============================================================================
|
|
2
|
-
// Engram MCP Server — Milestone Tools
|
|
3
|
-
// ============================================================================
|
|
4
|
-
import { z } from "zod";
|
|
5
|
-
import { getDb, now, getCurrentSessionId } from "../database.js";
|
|
6
|
-
import { TOOL_PREFIX } from "../constants.js";
|
|
7
|
-
export function registerMilestoneTools(server) {
|
|
8
|
-
server.registerTool(`${TOOL_PREFIX}_record_milestone`, {
|
|
9
|
-
title: "Record Milestone",
|
|
10
|
-
description: `Record a major project milestone or achievement. Milestones mark significant points in the project timeline — feature completions, releases, major refactors, etc.
|
|
11
|
-
|
|
12
|
-
Args:
|
|
13
|
-
- title (string): Milestone title
|
|
14
|
-
- description (string, optional): What was achieved
|
|
15
|
-
- version (string, optional): Version number if applicable
|
|
16
|
-
- tags (array, optional): Tags
|
|
17
|
-
|
|
18
|
-
Returns:
|
|
19
|
-
Milestone ID and confirmation.`,
|
|
20
|
-
inputSchema: {
|
|
21
|
-
title: z.string().min(3).describe("Milestone title"),
|
|
22
|
-
description: z.string().optional().describe("What was achieved"),
|
|
23
|
-
version: z.string().optional().describe("Version number"),
|
|
24
|
-
tags: z.array(z.string()).optional(),
|
|
25
|
-
},
|
|
26
|
-
annotations: {
|
|
27
|
-
readOnlyHint: false,
|
|
28
|
-
destructiveHint: false,
|
|
29
|
-
idempotentHint: false,
|
|
30
|
-
openWorldHint: false,
|
|
31
|
-
},
|
|
32
|
-
}, async ({ title, description, version, tags }) => {
|
|
33
|
-
const db = getDb();
|
|
34
|
-
const timestamp = now();
|
|
35
|
-
const sessionId = getCurrentSessionId();
|
|
36
|
-
const result = db.prepare("INSERT INTO milestones (session_id, timestamp, title, description, version, tags) VALUES (?, ?, ?, ?, ?, ?)").run(sessionId, timestamp, title, description || null, version || null, tags ? JSON.stringify(tags) : null);
|
|
37
|
-
return {
|
|
38
|
-
content: [{
|
|
39
|
-
type: "text",
|
|
40
|
-
text: JSON.stringify({
|
|
41
|
-
milestone_id: result.lastInsertRowid,
|
|
42
|
-
message: `Milestone #${result.lastInsertRowid} recorded: "${title}"${version ? ` (v${version})` : ""}`,
|
|
43
|
-
}, null, 2),
|
|
44
|
-
}],
|
|
45
|
-
};
|
|
46
|
-
});
|
|
47
|
-
server.registerTool(`${TOOL_PREFIX}_get_milestones`, {
|
|
48
|
-
title: "Get Milestones",
|
|
49
|
-
description: `Retrieve project milestones. Shows the project's achievement timeline.
|
|
50
|
-
|
|
51
|
-
Args:
|
|
52
|
-
- limit (number, optional): Max results (default 20)
|
|
53
|
-
|
|
54
|
-
Returns:
|
|
55
|
-
Array of milestones in reverse chronological order.`,
|
|
56
|
-
inputSchema: {
|
|
57
|
-
limit: z.number().int().min(1).max(100).default(20),
|
|
58
|
-
},
|
|
59
|
-
annotations: {
|
|
60
|
-
readOnlyHint: true,
|
|
61
|
-
destructiveHint: false,
|
|
62
|
-
idempotentHint: true,
|
|
63
|
-
openWorldHint: false,
|
|
64
|
-
},
|
|
65
|
-
}, async ({ limit }) => {
|
|
66
|
-
const db = getDb();
|
|
67
|
-
const milestones = db.prepare("SELECT * FROM milestones ORDER BY timestamp DESC LIMIT ?").all(limit);
|
|
68
|
-
return { content: [{ type: "text", text: JSON.stringify({ milestones }, null, 2) }] };
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
//# sourceMappingURL=milestones.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"milestones.js","sourceRoot":"","sources":["../../../src/tools/milestones.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../../src/tools/scheduler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMpE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2X9D"}
|