@coreyuan/vector-mind 1.0.49 → 1.0.52

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 (114) hide show
  1. package/README.md +67 -60
  2. package/dist/activity-log.d.ts +19 -0
  3. package/dist/activity-log.js +106 -0
  4. package/dist/activity-log.js.map +1 -0
  5. package/dist/builtin-conventions.d.ts +2 -1
  6. package/dist/builtin-conventions.js +5 -0
  7. package/dist/builtin-conventions.js.map +1 -1
  8. package/dist/config.d.ts +28 -0
  9. package/dist/config.js +189 -0
  10. package/dist/config.js.map +1 -0
  11. package/dist/database-runtime.d.ts +54 -0
  12. package/dist/database-runtime.js +512 -0
  13. package/dist/database-runtime.js.map +1 -0
  14. package/dist/development-warnings.d.ts +93 -0
  15. package/dist/development-warnings.js +589 -0
  16. package/dist/development-warnings.js.map +1 -0
  17. package/dist/file-indexing.d.ts +22 -0
  18. package/dist/file-indexing.js +243 -0
  19. package/dist/file-indexing.js.map +1 -0
  20. package/dist/grep.d.ts +64 -0
  21. package/dist/grep.js +475 -0
  22. package/dist/grep.js.map +1 -0
  23. package/dist/index.js +167 -7279
  24. package/dist/index.js.map +1 -1
  25. package/dist/large-file-split.d.ts +29 -0
  26. package/dist/large-file-split.js +146 -0
  27. package/dist/large-file-split.js.map +1 -0
  28. package/dist/memory-maintenance.d.ts +80 -0
  29. package/dist/memory-maintenance.js +537 -0
  30. package/dist/memory-maintenance.js.map +1 -0
  31. package/dist/memory-mutations.d.ts +23 -0
  32. package/dist/memory-mutations.js +83 -0
  33. package/dist/memory-mutations.js.map +1 -0
  34. package/dist/memory-recall.d.ts +93 -0
  35. package/dist/memory-recall.js +796 -0
  36. package/dist/memory-recall.js.map +1 -0
  37. package/dist/path-filters.d.ts +1 -0
  38. package/dist/path-filters.js +27 -0
  39. package/dist/path-filters.js.map +1 -0
  40. package/dist/path-rules.d.ts +12 -0
  41. package/dist/path-rules.js +208 -0
  42. package/dist/path-rules.js.map +1 -0
  43. package/dist/pending-changes.d.ts +22 -0
  44. package/dist/pending-changes.js +166 -0
  45. package/dist/pending-changes.js.map +1 -0
  46. package/dist/project-files.d.ts +66 -0
  47. package/dist/project-files.js +215 -0
  48. package/dist/project-files.js.map +1 -0
  49. package/dist/root.d.ts +15 -0
  50. package/dist/root.js +191 -0
  51. package/dist/root.js.map +1 -0
  52. package/dist/rtk-tools.d.ts +20 -0
  53. package/dist/rtk-tools.js +318 -0
  54. package/dist/rtk-tools.js.map +1 -0
  55. package/dist/server-instructions.d.ts +1 -0
  56. package/dist/server-instructions.js +88 -0
  57. package/dist/server-instructions.js.map +1 -0
  58. package/dist/symbols.d.ts +2 -0
  59. package/dist/symbols.js +159 -0
  60. package/dist/symbols.js.map +1 -0
  61. package/dist/token-savings.d.ts +40 -0
  62. package/dist/token-savings.js +50 -0
  63. package/dist/token-savings.js.map +1 -0
  64. package/dist/tool-catalog.d.ts +18 -0
  65. package/dist/tool-catalog.js +243 -0
  66. package/dist/tool-catalog.js.map +1 -0
  67. package/dist/tool-handlers/context-recovery.d.ts +6 -0
  68. package/dist/tool-handlers/context-recovery.js +319 -0
  69. package/dist/tool-handlers/context-recovery.js.map +1 -0
  70. package/dist/tool-handlers/context.d.ts +34 -0
  71. package/dist/tool-handlers/context.js +2 -0
  72. package/dist/tool-handlers/context.js.map +1 -0
  73. package/dist/tool-handlers/diagnostics.d.ts +8 -0
  74. package/dist/tool-handlers/diagnostics.js +114 -0
  75. package/dist/tool-handlers/diagnostics.js.map +1 -0
  76. package/dist/tool-handlers/files.d.ts +8 -0
  77. package/dist/tool-handlers/files.js +493 -0
  78. package/dist/tool-handlers/files.js.map +1 -0
  79. package/dist/tool-handlers/large-files.d.ts +4 -0
  80. package/dist/tool-handlers/large-files.js +139 -0
  81. package/dist/tool-handlers/large-files.js.map +1 -0
  82. package/dist/tool-handlers/maintenance.d.ts +4 -0
  83. package/dist/tool-handlers/maintenance.js +160 -0
  84. package/dist/tool-handlers/maintenance.js.map +1 -0
  85. package/dist/tool-handlers/memory-diagnostics.d.ts +5 -0
  86. package/dist/tool-handlers/memory-diagnostics.js +509 -0
  87. package/dist/tool-handlers/memory-diagnostics.js.map +1 -0
  88. package/dist/tool-handlers/memory.d.ts +6 -0
  89. package/dist/tool-handlers/memory.js +334 -0
  90. package/dist/tool-handlers/memory.js.map +1 -0
  91. package/dist/tool-handlers/notes-decisions.d.ts +7 -0
  92. package/dist/tool-handlers/notes-decisions.js +169 -0
  93. package/dist/tool-handlers/notes-decisions.js.map +1 -0
  94. package/dist/tool-handlers/requirements.d.ts +7 -0
  95. package/dist/tool-handlers/requirements.js +357 -0
  96. package/dist/tool-handlers/requirements.js.map +1 -0
  97. package/dist/tool-handlers.d.ts +4 -0
  98. package/dist/tool-handlers.js +105 -0
  99. package/dist/tool-handlers.js.map +1 -0
  100. package/dist/tool-output.d.ts +213 -0
  101. package/dist/tool-output.js +278 -0
  102. package/dist/tool-output.js.map +1 -0
  103. package/dist/tool-schemas.d.ts +434 -0
  104. package/dist/tool-schemas.js +328 -0
  105. package/dist/tool-schemas.js.map +1 -0
  106. package/dist/types.d.ts +61 -0
  107. package/dist/types.js +2 -0
  108. package/dist/types.js.map +1 -0
  109. package/docs/capability-matrix.md +43 -0
  110. package/package.json +11 -10
  111. package/skills/vector-mind-autopilot/SKILL.md +149 -0
  112. package/skills/vector-mind-autopilot/references/claude-desktop-mcp-config.json +9 -0
  113. package/skills/vector-mind-autopilot/references/claude-project-instructions.md +47 -0
  114. package/skills/vector-mind-autopilot/references/universal-system-prompt.md +78 -0
@@ -0,0 +1,509 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { AnalyzeMemoryConflictsArgsSchema, CompareCheckpointContextArgsSchema, MemoryQualityReportArgsSchema, } from "../tool-schemas.js";
4
+ import { flushPendingChangeBuffer } from "../file-indexing.js";
5
+ import { isHiddenFromDefaultRecall, parseMetadataJson, toMemoryItemPreview, toRequirementPreview } from "../memory-recall.js";
6
+ import { mergePendingWithGit } from "../pending-changes.js";
7
+ import { logActivity } from "../activity-log.js";
8
+ import { oneLine, toolJson } from "../tool-output.js";
9
+ import { toolCompactOrJson } from "../token-savings.js";
10
+ function compactConflictText(data) {
11
+ const lines = [
12
+ `memory_conflicts conflicts=${data.conflicts.length} scanned=${data.scanned} read_only=${data.read_only}`,
13
+ ];
14
+ for (const c of data.conflicts.slice(0, 50)) {
15
+ lines.push(`- [${c.severity}] ${c.code}: ${oneLine(c.summary, 180)}`);
16
+ for (const item of c.items.slice(0, 4)) {
17
+ const id = item.id != null ? `#${item.id}` : "";
18
+ const kind = item.kind ?? "item";
19
+ const title = item.title ? ` ${oneLine(item.title, 80)}` : "";
20
+ const status = item.status ? ` status=${item.status}` : "";
21
+ const preview = item.preview ? `: ${oneLine(item.preview, 140)}` : "";
22
+ lines.push(` - ${id} ${kind}${title}${status}${preview}`.trimEnd());
23
+ }
24
+ lines.push(` action: ${oneLine(c.suggested_action, 180)}`);
25
+ }
26
+ if (!data.conflicts.length)
27
+ lines.push("- no likely memory conflicts found");
28
+ lines.push("hint: conflict detection is read-only evidence; verify with repo facts and model judgment");
29
+ return lines.join("\n");
30
+ }
31
+ function compactQualityText(data) {
32
+ const totals = Object.entries(data.totals)
33
+ .sort(([a], [b]) => a.localeCompare(b))
34
+ .map(([k, v]) => `${k}=${v}`)
35
+ .join(" ");
36
+ const lines = [
37
+ `memory_quality read_only=${data.read_only} totals ${totals || "none"}`,
38
+ `hidden superseded=${data.hidden.superseded} compacted=${data.hidden.compacted}`,
39
+ `issues duplicate_titles=${data.duplicate_titles.length} duplicate_hashes=${data.duplicate_hashes.length} oversized_checkpoints=${data.oversized_checkpoints.length} stale_indexes=${data.stale_index_samples.length} orphaned=${data.orphaned_memory_items.length}`,
40
+ ];
41
+ for (const [label, items] of [
42
+ ["duplicate_title", data.duplicate_titles],
43
+ ["duplicate_hash", data.duplicate_hashes],
44
+ ["oversized_checkpoint", data.oversized_checkpoints],
45
+ ["stale_index", data.stale_index_samples],
46
+ ["orphaned_memory", data.orphaned_memory_items],
47
+ ]) {
48
+ for (const item of items.slice(0, 5)) {
49
+ lines.push(`- ${label}: ${oneLine(JSON.stringify(item), 220)}`);
50
+ }
51
+ }
52
+ lines.push("hint: report is diagnostic only; use maintain_memory/prune_index separately when needed");
53
+ return lines.join("\n");
54
+ }
55
+ function compactCheckpointDiffText(data) {
56
+ const d = data.diff;
57
+ const lines = [
58
+ `checkpoint_diff #${data.checkpoint.id} ${oneLine(data.checkpoint.title ?? "checkpoint", 100)} read_only=${data.read_only}`,
59
+ `active_changed=${d.active_requirement_changed} summary_changed=${d.project_summary_changed}`,
60
+ `decisions added=${d.decisions_added.length} removed=${d.decisions_removed.length} changed=${d.decisions_changed.length}`,
61
+ `recent_memory added=${d.recent_memory_added.length} no_longer_recent=${d.recent_memory_no_longer_recent.length}`,
62
+ `pending added=${d.pending_added.length} removed=${d.pending_removed.length}`,
63
+ ];
64
+ for (const item of d.decisions_added.slice(0, 5))
65
+ lines.push(`- decision_added: #${item.id} ${oneLine(item.title ?? "", 100)}`);
66
+ for (const item of d.decisions_removed.slice(0, 5))
67
+ lines.push(`- decision_removed: #${item.id} ${oneLine(item.title ?? "", 100)}`);
68
+ for (const item of d.recent_memory_added.slice(0, 5))
69
+ lines.push(`- memory_added: #${item.id} ${item.kind} ${oneLine(item.title ?? "", 100)}`);
70
+ for (const p of d.pending_added.slice(0, 5))
71
+ lines.push(`- pending_added: ${p}`);
72
+ lines.push("hint: checkpoint diff is read-only; it does not restore, mutate, or expand the current requirement");
73
+ return lines.join("\n");
74
+ }
75
+ function metadataStatus(row) {
76
+ const meta = parseMetadataJson(row.metadata_json);
77
+ if (typeof meta.status === "string")
78
+ return meta.status;
79
+ if (meta.superseded === true)
80
+ return "superseded";
81
+ if (meta.compacted === true)
82
+ return "compacted";
83
+ return "current";
84
+ }
85
+ function itemConflictPreview(row) {
86
+ return {
87
+ id: row.id,
88
+ kind: row.kind,
89
+ title: row.title,
90
+ status: metadataStatus(row),
91
+ preview: oneLine(row.content ?? "", 160),
92
+ };
93
+ }
94
+ function normalizeKey(value) {
95
+ return (value ?? "").trim().toLowerCase().replace(/\s+/g, " ");
96
+ }
97
+ function shouldCheckDuplicateTitle(kind) {
98
+ return ["requirement", "note", "decision", "convention", "project_summary", "checkpoint"].includes(kind);
99
+ }
100
+ function getCoreMemoryRows(context, args) {
101
+ const db = context.getDb();
102
+ const clauses = [
103
+ "kind IN ('requirement', 'change_intent', 'note', 'decision', 'checkpoint', 'memory_compaction', 'project_summary', 'convention')",
104
+ ];
105
+ const params = [];
106
+ if (args.query) {
107
+ const like = `%${context.escapeLike(args.query)}%`;
108
+ clauses.push("(title LIKE ? ESCAPE '\\' OR content LIKE ? ESCAPE '\\' OR metadata_json LIKE ? ESCAPE '\\')");
109
+ params.push(like, like, like);
110
+ }
111
+ if (args.decision_key) {
112
+ const like = `%${context.escapeLike(args.decision_key)}%`;
113
+ clauses.push("(title = ? OR metadata_json LIKE ? ESCAPE '\\' OR content LIKE ? ESCAPE '\\')");
114
+ params.push(args.decision_key, like, like);
115
+ }
116
+ params.push(args.scan_limit);
117
+ return db
118
+ .prepare(`SELECT id, kind, title, content, file_path, start_line, end_line, req_id, metadata_json, content_hash, created_at, updated_at
119
+ FROM memory_items
120
+ WHERE ${clauses.join(" AND ")}
121
+ ORDER BY updated_at DESC, id DESC
122
+ LIMIT ?`)
123
+ .all(...params);
124
+ }
125
+ function getCurrentSnapshot(context, recentLimit, pendingLimit) {
126
+ flushPendingChangeBuffer();
127
+ const db = context.getDb();
128
+ const { getActiveRequirementStmt, getProjectSummaryStmt, listCurrentDecisionsStmt, listPendingChangesStmt, } = context.getStatements();
129
+ const active = getActiveRequirementStmt.get();
130
+ const projectSummary = getProjectSummaryStmt.get();
131
+ const decisions = listCurrentDecisionsStmt.all(20)
132
+ .filter((row) => !isHiddenFromDefaultRecall(row))
133
+ .map((row) => toMemoryItemPreview(row, false, 180, 1200));
134
+ const recentMemory = db
135
+ .prepare(`SELECT id, kind, title, content, file_path, start_line, end_line, req_id, metadata_json, content_hash, created_at, updated_at
136
+ FROM memory_items
137
+ WHERE kind IN ('requirement', 'change_intent', 'note', 'decision', 'checkpoint', 'memory_compaction', 'project_summary', 'convention')
138
+ ORDER BY updated_at DESC, id DESC
139
+ LIMIT ?`)
140
+ .all(Math.max(recentLimit * 4, recentLimit));
141
+ const visibleRecent = recentMemory
142
+ .filter((row) => !isHiddenFromDefaultRecall(row))
143
+ .slice(0, recentLimit)
144
+ .map((row) => toMemoryItemPreview(row, false, 180, 1200));
145
+ const pendingRows = listPendingChangesStmt.all();
146
+ const pending = pendingLimit > 0 ? mergePendingWithGit(pendingRows, { offset: 0, limit: pendingLimit }).page : [];
147
+ return {
148
+ active_requirement: active ? toRequirementPreview(active, false, 180, 1200) : null,
149
+ project_summary: projectSummary ? toMemoryItemPreview(projectSummary, false, 180, 1200) : null,
150
+ decisions,
151
+ recent_memory: visibleRecent,
152
+ pending_changes: pending,
153
+ };
154
+ }
155
+ function previewArrayById(items) {
156
+ const result = new Map();
157
+ if (!Array.isArray(items))
158
+ return result;
159
+ for (const raw of items) {
160
+ const item = raw;
161
+ if (typeof item?.id === "number")
162
+ result.set(item.id, item);
163
+ }
164
+ return result;
165
+ }
166
+ function diffPreviewMaps(before, after) {
167
+ const added = [];
168
+ const removed = [];
169
+ const changed = [];
170
+ for (const [id, item] of after) {
171
+ const old = before.get(id);
172
+ if (!old)
173
+ added.push(item);
174
+ else if ((old.preview ?? "") !== (item.preview ?? "") || old.updated_at !== item.updated_at)
175
+ changed.push(item);
176
+ }
177
+ for (const [id, item] of before) {
178
+ if (!after.has(id))
179
+ removed.push(item);
180
+ }
181
+ return { added, removed, changed };
182
+ }
183
+ function pendingPaths(items) {
184
+ const result = new Set();
185
+ if (!Array.isArray(items))
186
+ return result;
187
+ for (const item of items) {
188
+ if (typeof item.file_path === "string")
189
+ result.add(item.file_path);
190
+ }
191
+ return result;
192
+ }
193
+ export async function handleAnalyzeMemoryConflicts(rawArgs, context) {
194
+ const args = AnalyzeMemoryConflictsArgsSchema.parse(rawArgs);
195
+ const rows = getCoreMemoryRows(context, args);
196
+ const conflicts = [];
197
+ const visibleRows = rows.filter((row) => args.include_hidden || !isHiddenFromDefaultRecall(row));
198
+ const activeReqs = context.getDb()
199
+ .prepare(`SELECT id, title, status, context_data, created_at FROM requirements WHERE status = 'active' ORDER BY created_at DESC, id DESC`)
200
+ .all();
201
+ if (activeReqs.length > 1) {
202
+ conflicts.push({
203
+ code: "multiple_active_requirements",
204
+ severity: "medium",
205
+ summary: `There are ${activeReqs.length} active requirements. This can make scope recovery ambiguous.`,
206
+ suggested_action: "Complete old requirements or start a new requirement with close_previous=true if appropriate.",
207
+ items: activeReqs.slice(0, 8).map((r) => ({ id: r.id, kind: "requirement", title: r.title, status: r.status })),
208
+ });
209
+ }
210
+ const titleGroups = new Map();
211
+ for (const row of visibleRows) {
212
+ if (!shouldCheckDuplicateTitle(row.kind))
213
+ continue;
214
+ const key = `${row.kind}:${normalizeKey(row.title)}`;
215
+ if (!row.title || key.endsWith(":"))
216
+ continue;
217
+ const list = titleGroups.get(key) ?? [];
218
+ list.push(row);
219
+ titleGroups.set(key, list);
220
+ }
221
+ for (const group of titleGroups.values()) {
222
+ const contentKeys = new Set(group.map((row) => row.content_hash ?? context.sha256Hex(row.content)));
223
+ if (group.length > 1 && contentKeys.size > 1) {
224
+ conflicts.push({
225
+ code: "duplicate_visible_title",
226
+ severity: "low",
227
+ summary: `${group.length} visible ${group[0]?.kind ?? "memory"} records share the title "${group[0]?.title ?? ""}" but differ in content.`,
228
+ suggested_action: "Review whether older records should be superseded or merged; do not change source code based on this report alone.",
229
+ items: group.slice(0, 6).map(itemConflictPreview),
230
+ });
231
+ }
232
+ }
233
+ const currentDecisions = rows.filter((row) => row.kind === "decision" && !isHiddenFromDefaultRecall(row) && metadataStatus(row) === "current");
234
+ for (const decision of currentDecisions) {
235
+ const meta = parseMetadataJson(decision.metadata_json);
236
+ const memoryIds = Array.isArray(meta.supersedes_memory_ids) ? meta.supersedes_memory_ids : [];
237
+ for (const rawId of memoryIds) {
238
+ const id = Number(rawId);
239
+ if (!Number.isFinite(id) || id <= 0)
240
+ continue;
241
+ const target = context.getStatements().getMemoryItemByIdStmt.get(id);
242
+ if (target && !isHiddenFromDefaultRecall(target)) {
243
+ conflicts.push({
244
+ code: "superseded_target_still_visible",
245
+ severity: "high",
246
+ summary: `Decision #${decision.id} says memory #${target.id} is superseded, but the target is still visible to default recall.`,
247
+ suggested_action: "Run supersede_memory for the target or inspect why metadata was not updated.",
248
+ items: [itemConflictPreview(decision), itemConflictPreview(target)],
249
+ });
250
+ }
251
+ }
252
+ const reqIds = Array.isArray(meta.supersedes_req_ids) ? meta.supersedes_req_ids : [];
253
+ for (const rawId of reqIds) {
254
+ const id = Number(rawId);
255
+ if (!Number.isFinite(id) || id <= 0)
256
+ continue;
257
+ const req = context.getDb()
258
+ .prepare(`SELECT id, title, status, context_data, created_at FROM requirements WHERE id = ?`)
259
+ .get(id);
260
+ if (req?.status === "active") {
261
+ conflicts.push({
262
+ code: "superseded_requirement_still_active",
263
+ severity: "high",
264
+ summary: `Decision #${decision.id} says requirement #${req.id} is superseded, but it is still active.`,
265
+ suggested_action: "Complete or supersede the old requirement if the newer decision is confirmed.",
266
+ items: [itemConflictPreview(decision), { id: req.id, kind: "requirement", title: req.title, status: req.status }],
267
+ });
268
+ }
269
+ }
270
+ }
271
+ if (args.query || args.decision_key) {
272
+ const hiddenMatches = rows.filter((row) => isHiddenFromDefaultRecall(row));
273
+ const visibleMatches = rows.filter((row) => !isHiddenFromDefaultRecall(row));
274
+ if (hiddenMatches.length > 0 && visibleMatches.length > 0) {
275
+ conflicts.push({
276
+ code: "mixed_current_and_hidden_matches",
277
+ severity: "low",
278
+ summary: "The same query matched both visible current memory and hidden old memory. This is usually safe, but useful when auditing stale-rule regressions.",
279
+ suggested_action: "Prefer visible/current records and use memory_timeline if ordering is unclear.",
280
+ items: [...visibleMatches.slice(0, 3), ...hiddenMatches.slice(0, 3)].map(itemConflictPreview),
281
+ });
282
+ }
283
+ }
284
+ const outputValue = {
285
+ ok: true,
286
+ read_only: true,
287
+ advisory_only: true,
288
+ basis: {
289
+ query: args.query ?? null,
290
+ decision_key: args.decision_key ?? null,
291
+ include_hidden: args.include_hidden,
292
+ scan_limit: args.scan_limit,
293
+ },
294
+ scanned: rows.length,
295
+ conflicts: conflicts.slice(0, args.limit),
296
+ };
297
+ logActivity("analyze_memory_conflicts", {
298
+ query: args.query ?? null,
299
+ decision_key: args.decision_key ?? null,
300
+ scanned: rows.length,
301
+ conflicts: outputValue.conflicts.length,
302
+ });
303
+ return {
304
+ content: [{ type: "text", text: toolCompactOrJson("analyze_memory_conflicts", outputValue, compactConflictText(outputValue), args.format) }],
305
+ };
306
+ }
307
+ export async function handleMemoryQualityReport(rawArgs, context) {
308
+ const args = MemoryQualityReportArgsSchema.parse(rawArgs);
309
+ const db = context.getDb();
310
+ const rows = db
311
+ .prepare(`SELECT id, kind, title, content, file_path, start_line, end_line, req_id, metadata_json, content_hash, created_at, updated_at
312
+ FROM memory_items
313
+ ORDER BY updated_at DESC, id DESC
314
+ LIMIT ?`)
315
+ .all(args.scan_limit);
316
+ const totals = {};
317
+ let superseded = 0;
318
+ let compacted = 0;
319
+ for (const row of rows) {
320
+ totals[row.kind] = (totals[row.kind] ?? 0) + 1;
321
+ const status = metadataStatus(row);
322
+ if (status === "superseded")
323
+ superseded += 1;
324
+ if (status === "compacted")
325
+ compacted += 1;
326
+ }
327
+ const visible = rows.filter((row) => !isHiddenFromDefaultRecall(row));
328
+ const duplicateTitleMap = new Map();
329
+ for (const row of visible) {
330
+ if (!shouldCheckDuplicateTitle(row.kind))
331
+ continue;
332
+ const key = `${row.kind}:${normalizeKey(row.title)}`;
333
+ if (!row.title || key.endsWith(":"))
334
+ continue;
335
+ const list = duplicateTitleMap.get(key) ?? [];
336
+ list.push(row);
337
+ duplicateTitleMap.set(key, list);
338
+ }
339
+ const duplicateTitles = Array.from(duplicateTitleMap.values())
340
+ .filter((group) => group.length > 1)
341
+ .slice(0, args.limit)
342
+ .map((group) => ({
343
+ kind: group[0]?.kind,
344
+ title: group[0]?.title,
345
+ count: group.length,
346
+ ids: group.slice(0, 10).map((row) => row.id),
347
+ }));
348
+ const duplicateHashes = db
349
+ .prepare(`WITH recent AS (
350
+ SELECT id, kind, content_hash, updated_at
351
+ FROM memory_items
352
+ ORDER BY updated_at DESC, id DESC
353
+ LIMIT ?
354
+ )
355
+ SELECT kind, content_hash, COUNT(*) as count, GROUP_CONCAT(id) as ids
356
+ FROM recent
357
+ WHERE content_hash IS NOT NULL AND content_hash != ''
358
+ AND kind NOT IN ('change_intent', 'code_chunk', 'doc_chunk')
359
+ GROUP BY kind, content_hash
360
+ HAVING COUNT(*) > 1
361
+ ORDER BY count DESC
362
+ LIMIT ?`)
363
+ .all(args.scan_limit, args.limit);
364
+ const oversizedCheckpoints = rows
365
+ .filter((row) => row.kind === "checkpoint")
366
+ .map((row) => ({
367
+ id: row.id,
368
+ title: row.title,
369
+ chars: (row.content?.length ?? 0) + (row.metadata_json?.length ?? 0),
370
+ updated_at: row.updated_at,
371
+ }))
372
+ .filter((item) => item.chars > args.max_checkpoint_chars)
373
+ .slice(0, args.limit);
374
+ const projectRoot = context.getProjectRoot();
375
+ const staleIndexSamples = [];
376
+ for (const row of rows) {
377
+ if (staleIndexSamples.length >= args.limit)
378
+ break;
379
+ if (row.kind !== "code_chunk" && row.kind !== "doc_chunk")
380
+ continue;
381
+ if (!row.file_path)
382
+ continue;
383
+ const abs = path.resolve(projectRoot, row.file_path);
384
+ if (!fs.existsSync(abs))
385
+ staleIndexSamples.push({ id: row.id, kind: row.kind, file_path: row.file_path });
386
+ }
387
+ const orphanedMemoryItems = db
388
+ .prepare(`WITH recent AS (
389
+ SELECT id, kind, title, req_id, updated_at
390
+ FROM memory_items
391
+ ORDER BY updated_at DESC, id DESC
392
+ LIMIT ?
393
+ )
394
+ SELECT m.id, m.kind, m.title, m.req_id
395
+ FROM recent m
396
+ LEFT JOIN requirements r ON r.id = m.req_id
397
+ WHERE m.req_id IS NOT NULL AND r.id IS NULL
398
+ ORDER BY m.updated_at DESC, m.id DESC
399
+ LIMIT ?`)
400
+ .all(args.scan_limit, args.limit);
401
+ const outputValue = {
402
+ ok: true,
403
+ read_only: true,
404
+ dry_run: true,
405
+ advisory_only: true,
406
+ scanned: rows.length,
407
+ totals,
408
+ hidden: {
409
+ superseded,
410
+ compacted,
411
+ },
412
+ duplicate_titles: duplicateTitles,
413
+ duplicate_hashes: duplicateHashes,
414
+ oversized_checkpoints: oversizedCheckpoints,
415
+ stale_index_samples: staleIndexSamples,
416
+ orphaned_memory_items: orphanedMemoryItems,
417
+ recommendations: [
418
+ "Use supersede_memory/upsert_decision only after verifying a stale memory is truly obsolete.",
419
+ "Use maintain_memory({ dry_run: true }) for old-memory compaction and prune_index({ dry_run: true }) for stale indexes.",
420
+ "Keep checkpoints compact; checkpoint diff is for diagnosis, not restore-by-default.",
421
+ ],
422
+ };
423
+ logActivity("memory_quality_report", {
424
+ scanned: rows.length,
425
+ duplicate_titles: duplicateTitles.length,
426
+ stale_indexes: staleIndexSamples.length,
427
+ });
428
+ return {
429
+ content: [{ type: "text", text: toolCompactOrJson("memory_quality_report", outputValue, compactQualityText(outputValue), args.format) }],
430
+ };
431
+ }
432
+ export async function handleCompareCheckpointContext(rawArgs, context) {
433
+ const args = CompareCheckpointContextArgsSchema.parse(rawArgs);
434
+ const db = context.getDb();
435
+ const clauses = ["kind = 'checkpoint'"];
436
+ const params = [];
437
+ if (args.checkpoint_id) {
438
+ clauses.push("id = ?");
439
+ params.push(args.checkpoint_id);
440
+ }
441
+ if (args.title) {
442
+ clauses.push("title = ?");
443
+ params.push(args.title);
444
+ }
445
+ const row = db
446
+ .prepare(`SELECT id, kind, title, content, file_path, start_line, end_line, req_id, metadata_json, content_hash, created_at, updated_at
447
+ FROM memory_items
448
+ WHERE ${clauses.join(" AND ")}
449
+ ORDER BY updated_at DESC, id DESC
450
+ LIMIT 1`)
451
+ .get(...params);
452
+ if (!row) {
453
+ return {
454
+ isError: true,
455
+ content: [{ type: "text", text: toolJson({ ok: false, error: "checkpoint not found" }) }],
456
+ };
457
+ }
458
+ const meta = parseMetadataJson(row.metadata_json);
459
+ const checkpointSnapshot = (meta.snapshot && typeof meta.snapshot === "object" ? meta.snapshot : {});
460
+ const currentSnapshot = getCurrentSnapshot(context, args.recent_limit, args.pending_limit);
461
+ const beforeDecisions = previewArrayById(checkpointSnapshot.decisions);
462
+ const afterDecisions = previewArrayById(currentSnapshot.decisions);
463
+ const decisionDiff = diffPreviewMaps(beforeDecisions, afterDecisions);
464
+ const beforeRecent = previewArrayById(checkpointSnapshot.recent_memory);
465
+ const afterRecent = previewArrayById(currentSnapshot.recent_memory);
466
+ const recentDiff = diffPreviewMaps(beforeRecent, afterRecent);
467
+ const beforePending = pendingPaths(checkpointSnapshot.pending_changes);
468
+ const afterPending = pendingPaths(currentSnapshot.pending_changes);
469
+ const pendingAdded = Array.from(afterPending).filter((p) => !beforePending.has(p));
470
+ const pendingRemoved = Array.from(beforePending).filter((p) => !afterPending.has(p));
471
+ const checkpointActive = checkpointSnapshot.active_requirement;
472
+ const currentActive = currentSnapshot.active_requirement;
473
+ const checkpointSummary = checkpointSnapshot.project_summary;
474
+ const currentSummary = currentSnapshot.project_summary;
475
+ const diff = {
476
+ active_requirement_changed: (checkpointActive?.id ?? null) !== (currentActive?.id ?? null) ||
477
+ (checkpointActive?.title ?? "") !== (currentActive?.title ?? "") ||
478
+ (checkpointActive?.status ?? "") !== (currentActive?.status ?? ""),
479
+ project_summary_changed: (checkpointSummary?.id ?? null) !== (currentSummary?.id ?? null) ||
480
+ (checkpointSummary?.preview ?? "") !== (currentSummary?.preview ?? "") ||
481
+ (checkpointSummary?.updated_at ?? "") !== (currentSummary?.updated_at ?? ""),
482
+ decisions_added: decisionDiff.added,
483
+ decisions_removed: decisionDiff.removed,
484
+ decisions_changed: decisionDiff.changed,
485
+ recent_memory_added: recentDiff.added,
486
+ recent_memory_no_longer_recent: recentDiff.removed,
487
+ pending_added: pendingAdded,
488
+ pending_removed: pendingRemoved,
489
+ };
490
+ const outputValue = {
491
+ ok: true,
492
+ read_only: true,
493
+ advisory_only: true,
494
+ checkpoint: toMemoryItemPreview(row, false, args.preview_chars, args.content_max_chars),
495
+ checkpoint_snapshot: checkpointSnapshot,
496
+ current_snapshot: currentSnapshot,
497
+ diff,
498
+ };
499
+ logActivity("compare_checkpoint_context", {
500
+ checkpoint_id: row.id,
501
+ active_changed: diff.active_requirement_changed,
502
+ decisions_added: diff.decisions_added.length,
503
+ memory_added: diff.recent_memory_added.length,
504
+ });
505
+ return {
506
+ content: [{ type: "text", text: toolCompactOrJson("compare_checkpoint_context", outputValue, compactCheckpointDiffText(outputValue), args.format) }],
507
+ };
508
+ }
509
+ //# sourceMappingURL=memory-diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-diagnostics.js","sourceRoot":"","sources":["../../src/tool-handlers/memory-diagnostics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
2
+ import type { ToolHandlerContext } from "./context.js";
3
+ export declare function handleBootstrapContext(rawArgs: Record<string, unknown>, context: ToolHandlerContext): Promise<CallToolResult>;
4
+ export declare function handleGetBrainDump(rawArgs: Record<string, unknown>, context: ToolHandlerContext): Promise<CallToolResult>;
5
+ export declare function handleReadMemoryItem(rawArgs: Record<string, unknown>, context: ToolHandlerContext): Promise<CallToolResult>;
6
+ export declare function handleSemanticSearch(rawArgs: Record<string, unknown>, _context: ToolHandlerContext): Promise<CallToolResult>;