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.
Files changed (288) hide show
  1. package/README.md +131 -24
  2. package/dist/constants.d.ts +12 -1
  3. package/dist/constants.d.ts.map +1 -1
  4. package/dist/constants.js +19 -1
  5. package/dist/constants.js.map +1 -1
  6. package/dist/database.d.ts +9 -0
  7. package/dist/database.d.ts.map +1 -1
  8. package/dist/database.js +16 -0
  9. package/dist/database.js.map +1 -1
  10. package/dist/index.js +16 -1
  11. package/dist/index.js.map +1 -1
  12. package/dist/installer/config-writer.d.ts +11 -2
  13. package/dist/installer/config-writer.d.ts.map +1 -1
  14. package/dist/installer/config-writer.js +28 -3
  15. package/dist/installer/config-writer.js.map +1 -1
  16. package/dist/installer/ide-detector.d.ts.map +1 -1
  17. package/dist/installer/ide-detector.js +10 -6
  18. package/dist/installer/ide-detector.js.map +1 -1
  19. package/dist/installer/index.d.ts.map +1 -1
  20. package/dist/installer/index.js +156 -23
  21. package/dist/installer/index.js.map +1 -1
  22. package/dist/repositories/changes.repo.d.ts.map +1 -1
  23. package/dist/repositories/changes.repo.js +5 -3
  24. package/dist/repositories/changes.repo.js.map +1 -1
  25. package/dist/repositories/config.repo.d.ts +5 -0
  26. package/dist/repositories/config.repo.d.ts.map +1 -1
  27. package/dist/repositories/config.repo.js +8 -0
  28. package/dist/repositories/config.repo.js.map +1 -1
  29. package/dist/repositories/decisions.repo.d.ts +8 -0
  30. package/dist/repositories/decisions.repo.d.ts.map +1 -1
  31. package/dist/repositories/decisions.repo.js +23 -0
  32. package/dist/repositories/decisions.repo.js.map +1 -1
  33. package/dist/repositories/file-notes.repo.d.ts +9 -0
  34. package/dist/repositories/file-notes.repo.d.ts.map +1 -1
  35. package/dist/repositories/file-notes.repo.js +22 -4
  36. package/dist/repositories/file-notes.repo.js.map +1 -1
  37. package/dist/response.d.ts +1 -0
  38. package/dist/response.d.ts.map +1 -1
  39. package/dist/response.js.map +1 -1
  40. package/dist/services/index.d.ts +2 -0
  41. package/dist/services/index.d.ts.map +1 -1
  42. package/dist/services/index.js +1 -0
  43. package/dist/services/index.js.map +1 -1
  44. package/dist/services/update.service.d.ts +29 -0
  45. package/dist/services/update.service.d.ts.map +1 -0
  46. package/dist/services/update.service.js +166 -0
  47. package/dist/services/update.service.js.map +1 -0
  48. package/dist/tools/backup.d.ts.map +1 -1
  49. package/dist/tools/backup.js +20 -45
  50. package/dist/tools/backup.js.map +1 -1
  51. package/dist/tools/changes.d.ts.map +1 -1
  52. package/dist/tools/changes.js +24 -33
  53. package/dist/tools/changes.js.map +1 -1
  54. package/dist/tools/compaction.d.ts.map +1 -1
  55. package/dist/tools/compaction.js +19 -72
  56. package/dist/tools/compaction.js.map +1 -1
  57. package/dist/tools/conventions.d.ts.map +1 -1
  58. package/dist/tools/conventions.js +9 -18
  59. package/dist/tools/conventions.js.map +1 -1
  60. package/dist/tools/decisions.d.ts.map +1 -1
  61. package/dist/tools/decisions.js +71 -45
  62. package/dist/tools/decisions.js.map +1 -1
  63. package/dist/tools/export-import.d.ts.map +1 -1
  64. package/dist/tools/export-import.js +21 -35
  65. package/dist/tools/export-import.js.map +1 -1
  66. package/dist/tools/file-notes.d.ts.map +1 -1
  67. package/dist/tools/file-notes.js +58 -36
  68. package/dist/tools/file-notes.js.map +1 -1
  69. package/dist/tools/intelligence.d.ts.map +1 -1
  70. package/dist/tools/intelligence.js +109 -164
  71. package/dist/tools/intelligence.js.map +1 -1
  72. package/dist/tools/milestones.d.ts.map +1 -1
  73. package/dist/tools/milestones.js +6 -10
  74. package/dist/tools/milestones.js.map +1 -1
  75. package/dist/tools/scheduler.d.ts.map +1 -1
  76. package/dist/tools/scheduler.js +42 -89
  77. package/dist/tools/scheduler.js.map +1 -1
  78. package/dist/tools/sessions.d.ts.map +1 -1
  79. package/dist/tools/sessions.js +131 -226
  80. package/dist/tools/sessions.js.map +1 -1
  81. package/dist/tools/stats.d.ts.map +1 -1
  82. package/dist/tools/stats.js +169 -8
  83. package/dist/tools/stats.js.map +1 -1
  84. package/dist/tools/tasks.d.ts.map +1 -1
  85. package/dist/tools/tasks.js +9 -20
  86. package/dist/tools/tasks.js.map +1 -1
  87. package/dist/utils.d.ts +9 -0
  88. package/dist/utils.d.ts.map +1 -1
  89. package/dist/utils.js +18 -0
  90. package/dist/utils.js.map +1 -1
  91. package/package.json +60 -52
  92. package/scripts/inject-release-notes.js +66 -0
  93. package/dist/installer.d.ts +0 -2
  94. package/dist/installer.d.ts.map +0 -1
  95. package/dist/installer.js +0 -315
  96. package/dist/installer.js.map +0 -1
  97. package/dist/src/constants.d.ts +0 -21
  98. package/dist/src/constants.d.ts.map +0 -1
  99. package/dist/src/constants.js +0 -81
  100. package/dist/src/constants.js.map +0 -1
  101. package/dist/src/database.d.ts +0 -32
  102. package/dist/src/database.d.ts.map +0 -1
  103. package/dist/src/database.js +0 -143
  104. package/dist/src/database.js.map +0 -1
  105. package/dist/src/errors.d.ts +0 -40
  106. package/dist/src/errors.d.ts.map +0 -1
  107. package/dist/src/errors.js +0 -63
  108. package/dist/src/errors.js.map +0 -1
  109. package/dist/src/index.d.ts +0 -3
  110. package/dist/src/index.d.ts.map +0 -1
  111. package/dist/src/index.js +0 -89
  112. package/dist/src/index.js.map +0 -1
  113. package/dist/src/installer/config-writer.d.ts +0 -25
  114. package/dist/src/installer/config-writer.d.ts.map +0 -1
  115. package/dist/src/installer/config-writer.js +0 -86
  116. package/dist/src/installer/config-writer.js.map +0 -1
  117. package/dist/src/installer/ide-configs.d.ts +0 -19
  118. package/dist/src/installer/ide-configs.d.ts.map +0 -1
  119. package/dist/src/installer/ide-configs.js +0 -131
  120. package/dist/src/installer/ide-configs.js.map +0 -1
  121. package/dist/src/installer/ide-detector.d.ts +0 -6
  122. package/dist/src/installer/ide-detector.d.ts.map +0 -1
  123. package/dist/src/installer/ide-detector.js +0 -45
  124. package/dist/src/installer/ide-detector.js.map +0 -1
  125. package/dist/src/installer/index.d.ts +0 -2
  126. package/dist/src/installer/index.d.ts.map +0 -1
  127. package/dist/src/installer/index.js +0 -229
  128. package/dist/src/installer/index.js.map +0 -1
  129. package/dist/src/logger.d.ts +0 -10
  130. package/dist/src/logger.d.ts.map +0 -1
  131. package/dist/src/logger.js +0 -51
  132. package/dist/src/logger.js.map +0 -1
  133. package/dist/src/migrations.d.ts +0 -4
  134. package/dist/src/migrations.d.ts.map +0 -1
  135. package/dist/src/migrations.js +0 -343
  136. package/dist/src/migrations.js.map +0 -1
  137. package/dist/src/repositories/changes.repo.d.ts +0 -35
  138. package/dist/src/repositories/changes.repo.d.ts.map +0 -1
  139. package/dist/src/repositories/changes.repo.js +0 -53
  140. package/dist/src/repositories/changes.repo.js.map +0 -1
  141. package/dist/src/repositories/config.repo.d.ts +0 -11
  142. package/dist/src/repositories/config.repo.d.ts.map +0 -1
  143. package/dist/src/repositories/config.repo.js +0 -38
  144. package/dist/src/repositories/config.repo.js.map +0 -1
  145. package/dist/src/repositories/conventions.repo.d.ts +0 -15
  146. package/dist/src/repositories/conventions.repo.d.ts.map +0 -1
  147. package/dist/src/repositories/conventions.repo.js +0 -39
  148. package/dist/src/repositories/conventions.repo.js.map +0 -1
  149. package/dist/src/repositories/decisions.repo.d.ts +0 -19
  150. package/dist/src/repositories/decisions.repo.d.ts.map +0 -1
  151. package/dist/src/repositories/decisions.repo.js +0 -48
  152. package/dist/src/repositories/decisions.repo.js.map +0 -1
  153. package/dist/src/repositories/events.repo.d.ts +0 -34
  154. package/dist/src/repositories/events.repo.d.ts.map +0 -1
  155. package/dist/src/repositories/events.repo.js +0 -71
  156. package/dist/src/repositories/events.repo.js.map +0 -1
  157. package/dist/src/repositories/file-notes.repo.d.ts +0 -26
  158. package/dist/src/repositories/file-notes.repo.d.ts.map +0 -1
  159. package/dist/src/repositories/file-notes.repo.js +0 -55
  160. package/dist/src/repositories/file-notes.repo.js.map +0 -1
  161. package/dist/src/repositories/index.d.ts +0 -38
  162. package/dist/src/repositories/index.d.ts.map +0 -1
  163. package/dist/src/repositories/index.js +0 -41
  164. package/dist/src/repositories/index.js.map +0 -1
  165. package/dist/src/repositories/milestones.repo.d.ts +0 -10
  166. package/dist/src/repositories/milestones.repo.d.ts.map +0 -1
  167. package/dist/src/repositories/milestones.repo.js +0 -20
  168. package/dist/src/repositories/milestones.repo.js.map +0 -1
  169. package/dist/src/repositories/sessions.repo.d.ts +0 -27
  170. package/dist/src/repositories/sessions.repo.d.ts.map +0 -1
  171. package/dist/src/repositories/sessions.repo.js +0 -61
  172. package/dist/src/repositories/sessions.repo.js.map +0 -1
  173. package/dist/src/repositories/snapshot.repo.d.ts +0 -11
  174. package/dist/src/repositories/snapshot.repo.d.ts.map +0 -1
  175. package/dist/src/repositories/snapshot.repo.js +0 -17
  176. package/dist/src/repositories/snapshot.repo.js.map +0 -1
  177. package/dist/src/repositories/tasks.repo.d.ts +0 -40
  178. package/dist/src/repositories/tasks.repo.d.ts.map +0 -1
  179. package/dist/src/repositories/tasks.repo.js +0 -90
  180. package/dist/src/repositories/tasks.repo.js.map +0 -1
  181. package/dist/src/response.d.ts +0 -28
  182. package/dist/src/response.d.ts.map +0 -1
  183. package/dist/src/response.js +0 -38
  184. package/dist/src/response.js.map +0 -1
  185. package/dist/src/scripts/install-hooks.d.ts +0 -3
  186. package/dist/src/scripts/install-hooks.d.ts.map +0 -1
  187. package/dist/src/scripts/install-hooks.js +0 -89
  188. package/dist/src/scripts/install-hooks.js.map +0 -1
  189. package/dist/src/services/compaction.service.d.ts +0 -27
  190. package/dist/src/services/compaction.service.d.ts.map +0 -1
  191. package/dist/src/services/compaction.service.js +0 -93
  192. package/dist/src/services/compaction.service.js.map +0 -1
  193. package/dist/src/services/event-trigger.service.d.ts +0 -24
  194. package/dist/src/services/event-trigger.service.d.ts.map +0 -1
  195. package/dist/src/services/event-trigger.service.js +0 -60
  196. package/dist/src/services/event-trigger.service.js.map +0 -1
  197. package/dist/src/services/git.service.d.ts +0 -20
  198. package/dist/src/services/git.service.d.ts.map +0 -1
  199. package/dist/src/services/git.service.js +0 -88
  200. package/dist/src/services/git.service.js.map +0 -1
  201. package/dist/src/services/index.d.ts +0 -5
  202. package/dist/src/services/index.d.ts.map +0 -1
  203. package/dist/src/services/index.js +0 -8
  204. package/dist/src/services/index.js.map +0 -1
  205. package/dist/src/services/project-scan.service.d.ts +0 -19
  206. package/dist/src/services/project-scan.service.d.ts.map +0 -1
  207. package/dist/src/services/project-scan.service.js +0 -66
  208. package/dist/src/services/project-scan.service.js.map +0 -1
  209. package/dist/src/tools/backup.d.ts +0 -3
  210. package/dist/src/tools/backup.d.ts.map +0 -1
  211. package/dist/src/tools/backup.js +0 -191
  212. package/dist/src/tools/backup.js.map +0 -1
  213. package/dist/src/tools/changes.d.ts +0 -3
  214. package/dist/src/tools/changes.d.ts.map +0 -1
  215. package/dist/src/tools/changes.js +0 -97
  216. package/dist/src/tools/changes.js.map +0 -1
  217. package/dist/src/tools/compaction.d.ts +0 -3
  218. package/dist/src/tools/compaction.d.ts.map +0 -1
  219. package/dist/src/tools/compaction.js +0 -151
  220. package/dist/src/tools/compaction.js.map +0 -1
  221. package/dist/src/tools/conventions.d.ts +0 -3
  222. package/dist/src/tools/conventions.d.ts.map +0 -1
  223. package/dist/src/tools/conventions.js +0 -121
  224. package/dist/src/tools/conventions.js.map +0 -1
  225. package/dist/src/tools/decisions.d.ts +0 -3
  226. package/dist/src/tools/decisions.d.ts.map +0 -1
  227. package/dist/src/tools/decisions.js +0 -136
  228. package/dist/src/tools/decisions.js.map +0 -1
  229. package/dist/src/tools/export-import.d.ts +0 -3
  230. package/dist/src/tools/export-import.d.ts.map +0 -1
  231. package/dist/src/tools/export-import.js +0 -180
  232. package/dist/src/tools/export-import.js.map +0 -1
  233. package/dist/src/tools/file-notes.d.ts +0 -3
  234. package/dist/src/tools/file-notes.d.ts.map +0 -1
  235. package/dist/src/tools/file-notes.js +0 -104
  236. package/dist/src/tools/file-notes.js.map +0 -1
  237. package/dist/src/tools/intelligence.d.ts +0 -3
  238. package/dist/src/tools/intelligence.d.ts.map +0 -1
  239. package/dist/src/tools/intelligence.js +0 -427
  240. package/dist/src/tools/intelligence.js.map +0 -1
  241. package/dist/src/tools/milestones.d.ts +0 -3
  242. package/dist/src/tools/milestones.d.ts.map +0 -1
  243. package/dist/src/tools/milestones.js +0 -71
  244. package/dist/src/tools/milestones.js.map +0 -1
  245. package/dist/src/tools/scheduler.d.ts +0 -3
  246. package/dist/src/tools/scheduler.d.ts.map +0 -1
  247. package/dist/src/tools/scheduler.js +0 -363
  248. package/dist/src/tools/scheduler.js.map +0 -1
  249. package/dist/src/tools/sessions.d.ts +0 -3
  250. package/dist/src/tools/sessions.d.ts.map +0 -1
  251. package/dist/src/tools/sessions.js +0 -356
  252. package/dist/src/tools/sessions.js.map +0 -1
  253. package/dist/src/tools/stats.d.ts +0 -3
  254. package/dist/src/tools/stats.d.ts.map +0 -1
  255. package/dist/src/tools/stats.js +0 -63
  256. package/dist/src/tools/stats.js.map +0 -1
  257. package/dist/src/tools/tasks.d.ts +0 -3
  258. package/dist/src/tools/tasks.d.ts.map +0 -1
  259. package/dist/src/tools/tasks.js +0 -206
  260. package/dist/src/tools/tasks.js.map +0 -1
  261. package/dist/src/types.d.ts +0 -170
  262. package/dist/src/types.d.ts.map +0 -1
  263. package/dist/src/types.js +0 -5
  264. package/dist/src/types.js.map +0 -1
  265. package/dist/src/utils.d.ts +0 -58
  266. package/dist/src/utils.d.ts.map +0 -1
  267. package/dist/src/utils.js +0 -190
  268. package/dist/src/utils.js.map +0 -1
  269. package/dist/tests/helpers/test-db.d.ts +0 -12
  270. package/dist/tests/helpers/test-db.d.ts.map +0 -1
  271. package/dist/tests/helpers/test-db.js +0 -149
  272. package/dist/tests/helpers/test-db.js.map +0 -1
  273. package/dist/tests/installer/installer.test.d.ts +0 -2
  274. package/dist/tests/installer/installer.test.d.ts.map +0 -1
  275. package/dist/tests/installer/installer.test.js +0 -160
  276. package/dist/tests/installer/installer.test.js.map +0 -1
  277. package/dist/tests/repositories/repos.test.d.ts +0 -2
  278. package/dist/tests/repositories/repos.test.d.ts.map +0 -1
  279. package/dist/tests/repositories/repos.test.js +0 -220
  280. package/dist/tests/repositories/repos.test.js.map +0 -1
  281. package/dist/tools/maintenance.d.ts +0 -3
  282. package/dist/tools/maintenance.d.ts.map +0 -1
  283. package/dist/tools/maintenance.js +0 -647
  284. package/dist/tools/maintenance.js.map +0 -1
  285. package/dist/tools/memory.d.ts +0 -3
  286. package/dist/tools/memory.d.ts.map +0 -1
  287. package/dist/tools/memory.js +0 -446
  288. package/dist/tools/memory.js.map +0 -1
@@ -4,11 +4,9 @@
4
4
  import { z } from "zod";
5
5
  import { getDb, now, getProjectRoot } from "../database.js";
6
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";
7
+ import { scanFileTree, detectLayer, isGitRepo, getGitBranch, getGitHead, getGitLogSince, getGitFilesChanged, minutesSince, safeJsonParse, normalizePath } from "../utils.js";
8
+ import { success } from "../response.js";
8
9
  // ─── FTS5 Helpers ────────────────────────────────────────────────────
9
- /**
10
- * Check if FTS5 tables exist (migration v2 applied).
11
- */
12
10
  function hasFts(db) {
13
11
  try {
14
12
  const row = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='fts_sessions'").get();
@@ -18,10 +16,6 @@ function hasFts(db) {
18
16
  return false;
19
17
  }
20
18
  }
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
19
  function ftsEscape(query) {
26
20
  return query
27
21
  .split(/\s+/)
@@ -46,7 +40,7 @@ Returns:
46
40
  max_depth: z.number().int().min(1).max(10).default(5).describe("Max directory depth"),
47
41
  },
48
42
  annotations: {
49
- readOnlyHint: false, // It writes to cache
43
+ readOnlyHint: false,
50
44
  destructiveHint: false,
51
45
  idempotentHint: true,
52
46
  openWorldHint: false,
@@ -62,39 +56,31 @@ Returns:
62
56
  if (age < SNAPSHOT_TTL_MINUTES) {
63
57
  const snapshot = safeJsonParse(cached.value, null);
64
58
  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
- };
59
+ return success({
60
+ ...snapshot,
61
+ _cache_status: `fresh (${age}min old, TTL: ${SNAPSHOT_TTL_MINUTES}min)`,
62
+ });
74
63
  }
75
64
  }
76
65
  }
77
66
  }
78
67
  // Perform full scan
79
68
  const fileTree = scanFileTree(projectRoot, max_depth);
80
- // Auto-detect layers for each file
81
69
  const layerDist = {};
82
70
  for (const f of fileTree) {
83
71
  if (f.endsWith("/"))
84
- continue; // Skip directories
72
+ continue;
85
73
  const layer = detectLayer(f);
86
74
  layerDist[layer] = (layerDist[layer] || 0) + 1;
87
75
  }
88
- // Fetch stored intelligence
89
76
  const fileNotes = db.prepare("SELECT * FROM file_notes ORDER BY file_path").all();
90
77
  const activeDecisions = db.prepare("SELECT * FROM decisions WHERE status = 'active' ORDER BY timestamp DESC LIMIT 20").all();
91
78
  const activeConventions = db.prepare("SELECT * FROM conventions WHERE enforced = 1 ORDER BY category").all();
92
- // Git info
93
79
  let gitInfo = null;
94
80
  if (isGitRepo(projectRoot)) {
95
81
  const branch = getGitBranch(projectRoot);
96
82
  const head = getGitHead(projectRoot);
97
- gitInfo = { branch, head, is_clean: true }; // Simplified
83
+ gitInfo = { branch, head, is_clean: true };
98
84
  }
99
85
  const snapshot = {
100
86
  project_root: projectRoot,
@@ -107,22 +93,16 @@ Returns:
107
93
  generated_at: now(),
108
94
  git: gitInfo,
109
95
  };
110
- // Cache the snapshot
111
96
  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
- };
97
+ return success({
98
+ ...snapshot,
99
+ _cache_status: "freshly scanned",
100
+ });
121
101
  });
122
- // ─── SEARCH MEMORY (FTS5-powered) ──────────────────────────────────
102
+ // ─── SEARCH MEMORY (FTS5-powered, unified ranking) ────────────────
123
103
  server.registerTool(`${TOOL_PREFIX}_search`, {
124
104
  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.
105
+ 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. Results are ranked by relevance across all tables (not split evenly).
126
106
 
127
107
  Args:
128
108
  - query (string): Search term(s)
@@ -145,148 +125,129 @@ Returns:
145
125
  }, async ({ query, scope, limit }) => {
146
126
  const db = getDb();
147
127
  const useFts = hasFts(db);
148
- const results = {};
149
- let totalFound = 0;
150
- const perTable = Math.ceil(limit / 6);
128
+ const oversample = Math.min(limit * 2, MAX_SEARCH_RESULTS);
129
+ // Collect all results with rank into a single pool
130
+ const pool = [];
151
131
  if (useFts) {
152
- // ─── FTS5 Path (fast, ranked) ────────────────────────────
153
132
  const ftsQuery = ftsEscape(query);
154
133
  if (scope === "all" || scope === "sessions") {
155
134
  try {
156
135
  const rows = db.prepare(`SELECT s.*, rank FROM fts_sessions f
157
136
  JOIN sessions s ON s.id = f.rowid
158
137
  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
- }
138
+ ORDER BY rank LIMIT ?`).all(ftsQuery, oversample);
139
+ for (const r of rows)
140
+ pool.push({ table: "sessions", rank: r.rank, data: r });
164
141
  }
165
- catch { /* FTS match failed, skip */ }
142
+ catch { /* skip */ }
166
143
  }
167
144
  if (scope === "all" || scope === "changes") {
168
145
  try {
169
146
  const rows = db.prepare(`SELECT c.*, rank FROM fts_changes f
170
147
  JOIN changes c ON c.id = f.rowid
171
148
  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
- }
149
+ ORDER BY rank LIMIT ?`).all(ftsQuery, oversample);
150
+ for (const r of rows)
151
+ pool.push({ table: "changes", rank: r.rank, data: r });
177
152
  }
178
- catch { /* FTS match failed, skip */ }
153
+ catch { /* skip */ }
179
154
  }
180
155
  if (scope === "all" || scope === "decisions") {
181
156
  try {
182
157
  const rows = db.prepare(`SELECT d.*, rank FROM fts_decisions f
183
158
  JOIN decisions d ON d.id = f.rowid
184
159
  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
- }
160
+ ORDER BY rank LIMIT ?`).all(ftsQuery, oversample);
161
+ for (const r of rows)
162
+ pool.push({ table: "decisions", rank: r.rank, data: r });
190
163
  }
191
- catch { /* FTS match failed, skip */ }
164
+ catch { /* skip */ }
192
165
  }
193
166
  if (scope === "all" || scope === "file_notes") {
194
167
  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
- }
168
+ const rows = db.prepare(`SELECT fn.*, f.rank FROM fts_file_notes f
169
+ JOIN file_notes fn ON fn.file_path = f.file_path
170
+ WHERE fts_file_notes MATCH ?
171
+ ORDER BY f.rank LIMIT ?`).all(ftsQuery, oversample);
172
+ for (const r of rows)
173
+ pool.push({ table: "file_notes", rank: r.rank, data: r });
202
174
  }
203
- catch { /* FTS match failed, skip */ }
175
+ catch { /* skip */ }
204
176
  }
205
177
  if (scope === "all" || scope === "conventions") {
206
178
  try {
207
179
  const rows = db.prepare(`SELECT c.*, rank FROM fts_conventions f
208
180
  JOIN conventions c ON c.id = f.rowid
209
181
  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
- }
182
+ ORDER BY rank LIMIT ?`).all(ftsQuery, oversample);
183
+ for (const r of rows)
184
+ pool.push({ table: "conventions", rank: r.rank, data: r });
215
185
  }
216
- catch { /* FTS match failed, skip */ }
186
+ catch { /* skip */ }
217
187
  }
218
188
  if (scope === "all" || scope === "tasks") {
219
189
  try {
220
190
  const rows = db.prepare(`SELECT t.*, rank FROM fts_tasks f
221
191
  JOIN tasks t ON t.id = f.rowid
222
192
  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
- }
193
+ ORDER BY rank LIMIT ?`).all(ftsQuery, oversample);
194
+ for (const r of rows)
195
+ pool.push({ table: "tasks", rank: r.rank, data: r });
228
196
  }
229
- catch { /* FTS match failed, skip */ }
197
+ catch { /* skip */ }
230
198
  }
231
199
  }
232
200
  else {
233
- // ─── LIKE Fallback (slow but compatible) ─────────────────
201
+ // ─── LIKE Fallback (rank = 0 for all) ──────────────────
234
202
  const term = `%${query}%`;
235
203
  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
- }
204
+ const rows = db.prepare("SELECT * FROM sessions WHERE summary LIKE ? OR tags LIKE ? ORDER BY id DESC LIMIT ?").all(term, term, oversample);
205
+ for (const r of rows)
206
+ pool.push({ table: "sessions", rank: 0, data: r });
241
207
  }
242
208
  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
- }
209
+ 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, oversample);
210
+ for (const r of rows)
211
+ pool.push({ table: "changes", rank: 0, data: r });
248
212
  }
249
213
  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
- }
214
+ 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, oversample);
215
+ for (const r of rows)
216
+ pool.push({ table: "decisions", rank: 0, data: r });
255
217
  }
256
218
  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
- }
219
+ const rows = db.prepare("SELECT * FROM file_notes WHERE file_path LIKE ? OR purpose LIKE ? OR notes LIKE ? LIMIT ?").all(term, term, term, oversample);
220
+ for (const r of rows)
221
+ pool.push({ table: "file_notes", rank: 0, data: r });
262
222
  }
263
223
  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
- }
224
+ const rows = db.prepare("SELECT * FROM conventions WHERE rule LIKE ? OR examples LIKE ? LIMIT ?").all(term, term, oversample);
225
+ for (const r of rows)
226
+ pool.push({ table: "conventions", rank: 0, data: r });
269
227
  }
270
228
  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
- }
229
+ 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, oversample);
230
+ for (const r of rows)
231
+ pool.push({ table: "tasks", rank: 0, data: r });
276
232
  }
277
233
  }
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
- };
234
+ // Sort by rank (FTS5 rank is negative — more negative = better match)
235
+ pool.sort((a, b) => a.rank - b.rank);
236
+ // Take top `limit` and group by table
237
+ const top = pool.slice(0, limit);
238
+ const results = {};
239
+ for (const item of top) {
240
+ if (!results[item.table])
241
+ results[item.table] = [];
242
+ results[item.table].push(item.data);
243
+ }
244
+ return success({
245
+ query,
246
+ scope,
247
+ search_engine: useFts ? "fts5" : "like",
248
+ total_results: top.length,
249
+ results,
250
+ });
290
251
  });
291
252
  // ─── WHAT CHANGED ───────────────────────────────────────────────────
292
253
  server.registerTool(`${TOOL_PREFIX}_what_changed`, {
@@ -312,15 +273,12 @@ Returns:
312
273
  }, async ({ since, include_git }) => {
313
274
  const db = getDb();
314
275
  const projectRoot = getProjectRoot();
315
- // Resolve "since" to an ISO timestamp
316
276
  let sinceTimestamp;
317
277
  if (!since) {
318
- // Default to last session end
319
278
  const last = db.prepare("SELECT ended_at FROM sessions WHERE ended_at IS NOT NULL ORDER BY id DESC LIMIT 1").get();
320
279
  sinceTimestamp = last?.ended_at || new Date(Date.now() - 86400000).toISOString();
321
280
  }
322
281
  else if (/^\d+[hdm]$/.test(since)) {
323
- // Relative time
324
282
  const match = since.match(/^(\d+)([hdm])$/);
325
283
  if (match) {
326
284
  const amount = parseInt(match[1]);
@@ -335,39 +293,30 @@ Returns:
335
293
  else {
336
294
  sinceTimestamp = since;
337
295
  }
338
- // Agent-recorded changes
339
296
  const agentChanges = db.prepare("SELECT * FROM changes WHERE timestamp > ? ORDER BY timestamp DESC").all(sinceTimestamp);
340
- // Decisions made since
341
297
  const newDecisions = db.prepare("SELECT * FROM decisions WHERE timestamp > ? ORDER BY timestamp DESC").all(sinceTimestamp);
342
- // Git changes
343
298
  let gitLog = "";
344
299
  let gitFilesChanged = [];
345
300
  if (include_git && isGitRepo(projectRoot)) {
346
301
  gitLog = getGitLogSince(projectRoot, sinceTimestamp);
347
302
  gitFilesChanged = getGitFilesChanged(projectRoot, sinceTimestamp);
348
303
  }
349
- // Files only in git (not recorded by agent)
350
304
  const recordedFiles = new Set(agentChanges.map(c => c.file_path));
351
305
  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
- };
306
+ return success({
307
+ since: sinceTimestamp,
308
+ agent_recorded: {
309
+ count: agentChanges.length,
310
+ changes: agentChanges,
311
+ },
312
+ new_decisions: newDecisions,
313
+ git: include_git ? {
314
+ log: gitLog,
315
+ files_changed: gitFilesChanged.length,
316
+ unrecorded_changes: unrecordedGitChanges,
317
+ } : null,
318
+ summary: `${agentChanges.length} recorded changes, ${newDecisions.length} new decisions, ${gitFilesChanged.length} git file changes (${unrecordedGitChanges.length} unrecorded) since ${sinceTimestamp}.`,
319
+ });
371
320
  });
372
321
  // ─── GET DEPENDENCY MAP ─────────────────────────────────────────────
373
322
  server.registerTool(`${TOOL_PREFIX}_get_dependency_map`, {
@@ -392,10 +341,11 @@ Returns:
392
341
  },
393
342
  }, async ({ file_path, depth }) => {
394
343
  const db = getDb();
395
- function getDeps(fp, dir, currentDepth) {
344
+ const fp = normalizePath(file_path);
345
+ function getDeps(filePath, dir, currentDepth) {
396
346
  if (currentDepth > depth)
397
347
  return {};
398
- const note = db.prepare("SELECT * FROM file_notes WHERE file_path = ?").get(fp);
348
+ const note = db.prepare("SELECT * FROM file_notes WHERE file_path = ?").get(normalizePath(filePath));
399
349
  if (!note)
400
350
  return {};
401
351
  const field = dir === "up" ? "dependencies" : "dependents";
@@ -406,22 +356,17 @@ Returns:
406
356
  }
407
357
  return result;
408
358
  }
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
- };
359
+ const upstream = getDeps(fp, "up", 1);
360
+ const downstream = getDeps(fp, "down", 1);
361
+ const note = db.prepare("SELECT * FROM file_notes WHERE file_path = ?").get(fp);
362
+ return success({
363
+ file_path: fp,
364
+ purpose: note?.purpose || "(no notes recorded)",
365
+ layer: note?.layer || detectLayer(fp),
366
+ complexity: note?.complexity || "unknown",
367
+ depends_on: upstream,
368
+ depended_by: downstream,
369
+ });
425
370
  });
426
371
  }
427
372
  //# sourceMappingURL=intelligence.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"intelligence.js","sourceRoot":"","sources":["../../src/tools/intelligence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"intelligence.js","sourceRoot":"","sources":["../../src/tools/intelligence.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
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
+ {"version":3,"file":"milestones.d.ts","sourceRoot":"","sources":["../../src/tools/milestones.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMpE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuE9D"}
@@ -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 } from "../response.js";
7
8
  export function registerMilestoneTools(server) {
8
9
  server.registerTool(`${TOOL_PREFIX}_record_milestone`, {
9
10
  title: "Record Milestone",
@@ -34,15 +35,10 @@ Returns:
34
35
  const timestamp = now();
35
36
  const sessionId = getCurrentSessionId();
36
37
  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
- };
38
+ return success({
39
+ milestone_id: Number(result.lastInsertRowid),
40
+ message: `Milestone #${result.lastInsertRowid} recorded: "${title}"${version ? ` (v${version})` : ""}`,
41
+ });
46
42
  });
47
43
  server.registerTool(`${TOOL_PREFIX}_get_milestones`, {
48
44
  title: "Get Milestones",
@@ -65,7 +61,7 @@ Returns:
65
61
  }, async ({ limit }) => {
66
62
  const db = getDb();
67
63
  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) }] };
64
+ return success({ milestones });
69
65
  });
70
66
  }
71
67
  //# sourceMappingURL=milestones.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"milestones.js","sourceRoot":"","sources":["../../src/tools/milestones.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"milestones.js","sourceRoot":"","sources":["../../src/tools/milestones.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/tools/scheduler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOpE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA+U9D"}