@coreyuan/vector-mind 1.0.48 → 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 (117) hide show
  1. package/README.md +146 -394
  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 +7 -2
  7. package/dist/builtin-conventions.js.map +1 -1
  8. package/dist/builtin-instructions.d.ts +1 -1
  9. package/dist/builtin-instructions.js +1 -1
  10. package/dist/builtin-instructions.js.map +1 -1
  11. package/dist/config.d.ts +28 -0
  12. package/dist/config.js +189 -0
  13. package/dist/config.js.map +1 -0
  14. package/dist/database-runtime.d.ts +54 -0
  15. package/dist/database-runtime.js +512 -0
  16. package/dist/database-runtime.js.map +1 -0
  17. package/dist/development-warnings.d.ts +93 -0
  18. package/dist/development-warnings.js +589 -0
  19. package/dist/development-warnings.js.map +1 -0
  20. package/dist/file-indexing.d.ts +22 -0
  21. package/dist/file-indexing.js +243 -0
  22. package/dist/file-indexing.js.map +1 -0
  23. package/dist/grep.d.ts +64 -0
  24. package/dist/grep.js +475 -0
  25. package/dist/grep.js.map +1 -0
  26. package/dist/index.js +167 -6884
  27. package/dist/index.js.map +1 -1
  28. package/dist/large-file-split.d.ts +29 -0
  29. package/dist/large-file-split.js +146 -0
  30. package/dist/large-file-split.js.map +1 -0
  31. package/dist/memory-maintenance.d.ts +80 -0
  32. package/dist/memory-maintenance.js +537 -0
  33. package/dist/memory-maintenance.js.map +1 -0
  34. package/dist/memory-mutations.d.ts +23 -0
  35. package/dist/memory-mutations.js +83 -0
  36. package/dist/memory-mutations.js.map +1 -0
  37. package/dist/memory-recall.d.ts +93 -0
  38. package/dist/memory-recall.js +796 -0
  39. package/dist/memory-recall.js.map +1 -0
  40. package/dist/path-filters.d.ts +1 -0
  41. package/dist/path-filters.js +27 -0
  42. package/dist/path-filters.js.map +1 -0
  43. package/dist/path-rules.d.ts +12 -0
  44. package/dist/path-rules.js +208 -0
  45. package/dist/path-rules.js.map +1 -0
  46. package/dist/pending-changes.d.ts +22 -0
  47. package/dist/pending-changes.js +166 -0
  48. package/dist/pending-changes.js.map +1 -0
  49. package/dist/project-files.d.ts +66 -0
  50. package/dist/project-files.js +215 -0
  51. package/dist/project-files.js.map +1 -0
  52. package/dist/root.d.ts +15 -0
  53. package/dist/root.js +191 -0
  54. package/dist/root.js.map +1 -0
  55. package/dist/rtk-tools.d.ts +20 -0
  56. package/dist/rtk-tools.js +318 -0
  57. package/dist/rtk-tools.js.map +1 -0
  58. package/dist/server-instructions.d.ts +1 -0
  59. package/dist/server-instructions.js +88 -0
  60. package/dist/server-instructions.js.map +1 -0
  61. package/dist/symbols.d.ts +2 -0
  62. package/dist/symbols.js +159 -0
  63. package/dist/symbols.js.map +1 -0
  64. package/dist/token-savings.d.ts +40 -0
  65. package/dist/token-savings.js +50 -0
  66. package/dist/token-savings.js.map +1 -0
  67. package/dist/tool-catalog.d.ts +18 -0
  68. package/dist/tool-catalog.js +243 -0
  69. package/dist/tool-catalog.js.map +1 -0
  70. package/dist/tool-handlers/context-recovery.d.ts +6 -0
  71. package/dist/tool-handlers/context-recovery.js +319 -0
  72. package/dist/tool-handlers/context-recovery.js.map +1 -0
  73. package/dist/tool-handlers/context.d.ts +34 -0
  74. package/dist/tool-handlers/context.js +2 -0
  75. package/dist/tool-handlers/context.js.map +1 -0
  76. package/dist/tool-handlers/diagnostics.d.ts +8 -0
  77. package/dist/tool-handlers/diagnostics.js +114 -0
  78. package/dist/tool-handlers/diagnostics.js.map +1 -0
  79. package/dist/tool-handlers/files.d.ts +8 -0
  80. package/dist/tool-handlers/files.js +493 -0
  81. package/dist/tool-handlers/files.js.map +1 -0
  82. package/dist/tool-handlers/large-files.d.ts +4 -0
  83. package/dist/tool-handlers/large-files.js +139 -0
  84. package/dist/tool-handlers/large-files.js.map +1 -0
  85. package/dist/tool-handlers/maintenance.d.ts +4 -0
  86. package/dist/tool-handlers/maintenance.js +160 -0
  87. package/dist/tool-handlers/maintenance.js.map +1 -0
  88. package/dist/tool-handlers/memory-diagnostics.d.ts +5 -0
  89. package/dist/tool-handlers/memory-diagnostics.js +509 -0
  90. package/dist/tool-handlers/memory-diagnostics.js.map +1 -0
  91. package/dist/tool-handlers/memory.d.ts +6 -0
  92. package/dist/tool-handlers/memory.js +334 -0
  93. package/dist/tool-handlers/memory.js.map +1 -0
  94. package/dist/tool-handlers/notes-decisions.d.ts +7 -0
  95. package/dist/tool-handlers/notes-decisions.js +169 -0
  96. package/dist/tool-handlers/notes-decisions.js.map +1 -0
  97. package/dist/tool-handlers/requirements.d.ts +7 -0
  98. package/dist/tool-handlers/requirements.js +357 -0
  99. package/dist/tool-handlers/requirements.js.map +1 -0
  100. package/dist/tool-handlers.d.ts +4 -0
  101. package/dist/tool-handlers.js +105 -0
  102. package/dist/tool-handlers.js.map +1 -0
  103. package/dist/tool-output.d.ts +213 -0
  104. package/dist/tool-output.js +278 -0
  105. package/dist/tool-output.js.map +1 -0
  106. package/dist/tool-schemas.d.ts +434 -0
  107. package/dist/tool-schemas.js +328 -0
  108. package/dist/tool-schemas.js.map +1 -0
  109. package/dist/types.d.ts +61 -0
  110. package/dist/types.js +2 -0
  111. package/dist/types.js.map +1 -0
  112. package/docs/capability-matrix.md +43 -0
  113. package/package.json +11 -10
  114. package/skills/vector-mind-autopilot/SKILL.md +149 -0
  115. package/skills/vector-mind-autopilot/references/claude-desktop-mcp-config.json +9 -0
  116. package/skills/vector-mind-autopilot/references/claude-project-instructions.md +47 -0
  117. package/skills/vector-mind-autopilot/references/universal-system-prompt.md +78 -0
@@ -0,0 +1,357 @@
1
+ import path from "node:path";
2
+ import { CompleteRequirementArgsSchema, GetPendingChangesArgsSchema, MAX_PENDING_LIMIT, PreflightChangeScopeArgsSchema, StartRequirementArgsSchema, SyncChangeIntentArgsSchema } from "../tool-schemas.js";
3
+ import { buildDevelopmentWarnings, buildRequirementMappingWarnings, buildRequirementScopeContract, buildRequirementStartWarnings, buildScopeDriftWarnings, getRequirementItems, getRequirementScopeContract, isDevelopmentWarningBlockingForChangeMode, mergeScopeContracts, normalizeRequirementItems } from "../development-warnings.js";
4
+ import { mergePendingWithGit } from "../pending-changes.js";
5
+ import { toolCompactOrJson } from "../token-savings.js";
6
+ import { flushPendingChangeBuffer, indexFile } from "../file-indexing.js";
7
+ import { completeAllActiveRequirementMemoryItems, completeRequirementMemoryItemsByReqId } from "../memory-mutations.js";
8
+ import { makePreviewText } from "../memory-recall.js";
9
+ import { logActivity } from "../activity-log.js";
10
+ import { compactPreflightChangeScopeText, safeJson, toolJson } from "../tool-output.js";
11
+ export async function handleStartRequirement(rawArgs, context) {
12
+ const sha256Hex = context.sha256Hex;
13
+ const { insertRequirementStmt, completeAllActiveRequirementsStmt, insertMemoryItemStmt } = context.getStatements();
14
+ const args = StartRequirementArgsSchema.parse(rawArgs);
15
+ flushPendingChangeBuffer();
16
+ const scope_contract = buildRequirementScopeContract({
17
+ title: args.title,
18
+ background: args.background,
19
+ scope_allow: args.scope_allow,
20
+ scope_deny: args.scope_deny,
21
+ allowed_paths: args.allowed_paths,
22
+ denied_paths: args.denied_paths,
23
+ });
24
+ const requirement_items = normalizeRequirementItems(args.requirement_items);
25
+ const development_warnings = buildRequirementStartWarnings({
26
+ title: args.title,
27
+ background: args.background,
28
+ close_previous: args.close_previous,
29
+ });
30
+ if (args.close_previous) {
31
+ try {
32
+ completeAllActiveRequirementsStmt.run();
33
+ completeAllActiveRequirementMemoryItems();
34
+ }
35
+ catch (err) {
36
+ console.error("[vectormind] failed to close previous active requirements:", err);
37
+ }
38
+ }
39
+ const info = insertRequirementStmt.run(args.title, args.background || null);
40
+ const id = Number(info.lastInsertRowid);
41
+ const background = args.background?.trim() ?? "";
42
+ const content = background ? `${args.title}\n\n${background}` : args.title;
43
+ const memoryInfo = insertMemoryItemStmt.run("requirement", args.title, content, null, null, null, id, safeJson({ status: "active", scope_contract, requirement_items }), sha256Hex(content));
44
+ const memory_id = Number(memoryInfo.lastInsertRowid);
45
+ logActivity("start_requirement", {
46
+ req_id: id,
47
+ title: args.title,
48
+ closed_previous: args.close_previous,
49
+ scope_contract,
50
+ requirement_items,
51
+ development_warnings: development_warnings.length,
52
+ });
53
+ return {
54
+ content: [
55
+ {
56
+ type: "text",
57
+ text: toolJson({
58
+ ok: true,
59
+ requirement: { id, title: args.title },
60
+ memory_item: { id: memory_id },
61
+ closed_previous: args.close_previous,
62
+ scope_contract,
63
+ requirement_items,
64
+ development_warnings,
65
+ }),
66
+ },
67
+ ],
68
+ };
69
+ }
70
+ export async function handlePreflightChangeScope(rawArgs, context) {
71
+ const normalizeToDbPath = context.normalizeToDbPath;
72
+ const { getActiveRequirementStmt } = context.getStatements();
73
+ const args = PreflightChangeScopeArgsSchema.parse(rawArgs);
74
+ const changeMode = args.change_mode;
75
+ flushPendingChangeBuffer();
76
+ const files = (args.files ?? args.planned_files ?? []).filter((f) => typeof f === "string" && f.length > 0);
77
+ const active = getActiveRequirementStmt.get();
78
+ const explicitContract = buildRequirementScopeContract({
79
+ title: active?.title ?? "",
80
+ background: active?.context_data ?? "",
81
+ scope_allow: args.scope_allow,
82
+ scope_deny: args.scope_deny,
83
+ allowed_paths: args.allowed_paths,
84
+ denied_paths: args.denied_paths,
85
+ });
86
+ const explicitRequirementItems = normalizeRequirementItems(args.requirement_items);
87
+ const requirementItems = explicitRequirementItems.length
88
+ ? explicitRequirementItems
89
+ : active
90
+ ? getRequirementItems(active.id)
91
+ : [];
92
+ const fileInputs = files.map((file_path) => ({ file_path }));
93
+ const development_warnings = [
94
+ ...buildDevelopmentWarnings(fileInputs, { includeUnspecified: fileInputs.length === 0 }),
95
+ ...buildScopeDriftWarnings({
96
+ requirement: active,
97
+ contract: explicitContract,
98
+ intent: args.intent,
99
+ files: fileInputs,
100
+ includeMissingContractHint: true,
101
+ }),
102
+ ...buildRequirementMappingWarnings({
103
+ requirement: active,
104
+ requirement_items: requirementItems,
105
+ planned_changes: args.planned_changes,
106
+ files: fileInputs,
107
+ change_mode: changeMode,
108
+ }),
109
+ ];
110
+ const scope_contract = mergeScopeContracts(active ? getRequirementScopeContract(active.id) : null, explicitContract);
111
+ logActivity("preflight_change_scope", {
112
+ req_id: active?.id ?? null,
113
+ intent_preview: makePreviewText(args.intent, 200),
114
+ change_mode: changeMode,
115
+ files: files.slice(0, 25),
116
+ files_total: files.length,
117
+ development_warnings: development_warnings.length,
118
+ });
119
+ const hasTargetFiles = fileInputs.length > 0;
120
+ const hugeWarnings = development_warnings.filter((w) => w.code === "huge_file_modularization_required");
121
+ const hasHugeFile = hugeWarnings.length > 0;
122
+ const blockingWarnings = development_warnings.filter((w) => isDevelopmentWarningBlockingForChangeMode(w, changeMode));
123
+ const hasBlockingWarnings = blockingWarnings.length > 0;
124
+ const safeToEdit = hasTargetFiles && !hasBlockingWarnings;
125
+ const recommendedAction = !hasTargetFiles
126
+ ? "Identify the intended target files/modules and rerun preflight_change_scope before editing."
127
+ : hasHugeFile && changeMode === "mechanical_modularization" && safeToEdit
128
+ ? "Proceed only with mechanical modularization: call plan_large_file_split, move whole declarations into real named modules/directories, avoid generated/parts files, validate, then record_large_file_split."
129
+ : hasHugeFile && changeMode === "emergency_hotfix" && safeToEdit
130
+ ? "Proceed only with the smallest urgent fix, do not add new responsibilities, record why mechanical modularization was deferred, and plan/record the split next."
131
+ : hasHugeFile
132
+ ? "Stop normal feature work. Call plan_large_file_split and perform mechanical modularization first, or rerun preflight_change_scope with change_mode='mechanical_modularization' for the split itself."
133
+ : hasBlockingWarnings
134
+ ? "Stop before editing. Narrow the planned files or explicitly expand the current requirement/scope contract."
135
+ : "Planned files are within the current generic scope checks.";
136
+ const requiredAction = hasHugeFile && changeMode !== "mechanical_modularization"
137
+ ? "mechanical_modularization"
138
+ : undefined;
139
+ const allowedChangeModes = hasHugeFile
140
+ ? ["mechanical_modularization", "emergency_hotfix"]
141
+ : undefined;
142
+ const outputValue = {
143
+ ok: safeToEdit,
144
+ safe_to_edit: safeToEdit,
145
+ change_mode: changeMode,
146
+ recommended_action: recommendedAction,
147
+ required_action: requiredAction,
148
+ allowed_change_modes: allowedChangeModes,
149
+ active_requirement: active ? { id: active.id, title: active.title } : null,
150
+ intent: args.intent,
151
+ files: files.map(normalizeToDbPath),
152
+ requirement_mapping: {
153
+ requirement_items: requirementItems,
154
+ planned_changes: args.planned_changes ?? [],
155
+ },
156
+ scope_contract,
157
+ development_warnings,
158
+ };
159
+ return {
160
+ content: [
161
+ {
162
+ type: "text",
163
+ text: toolCompactOrJson("preflight_change_scope", outputValue, compactPreflightChangeScopeText(outputValue), args.format),
164
+ },
165
+ ],
166
+ };
167
+ }
168
+ export async function handleSyncChangeIntent(rawArgs, context) {
169
+ const db = context.getDb();
170
+ const projectRoot = context.getProjectRoot();
171
+ const normalizeToDbPath = context.normalizeToDbPath;
172
+ const sha256Hex = context.sha256Hex;
173
+ const getFileStateHash = context.getFileStateHash;
174
+ const { insertChangeLogStmt, insertMemoryItemStmt, getActiveRequirementStmt, listPendingChangesStmt, deletePendingChangeStmt, deleteAllPendingChangesStmt, } = context.getStatements();
175
+ const args = SyncChangeIntentArgsSchema.parse(rawArgs);
176
+ flushPendingChangeBuffer();
177
+ const explicitFiles = (args.files ?? args.affected_files ?? []).filter((f) => typeof f === "string" && f.length > 0);
178
+ const active = getActiveRequirementStmt.get();
179
+ if (!active) {
180
+ return {
181
+ isError: true,
182
+ content: [
183
+ {
184
+ type: "text",
185
+ text: toolJson({
186
+ ok: false,
187
+ error: "No active requirement. Call start_requirement({ project_root, title, background }) before syncing change intent.",
188
+ }),
189
+ },
190
+ ],
191
+ };
192
+ }
193
+ const created = [];
194
+ const synced_files = [];
195
+ const insertTx = db.transaction(() => {
196
+ const targets = [];
197
+ if (explicitFiles.length) {
198
+ for (const rawFile of explicitFiles) {
199
+ const dbFilePath = normalizeToDbPath(rawFile);
200
+ targets.push({ rawFile, dbFilePath, event: "manual", source: "args" });
201
+ }
202
+ for (const t of targets) {
203
+ deletePendingChangeStmt.run(t.dbFilePath);
204
+ }
205
+ }
206
+ else {
207
+ const pendingAll = listPendingChangesStmt.all();
208
+ const merged = mergePendingWithGit(pendingAll, { offset: 0, limit: MAX_PENDING_LIMIT });
209
+ if (merged.page.length) {
210
+ for (const p of merged.page) {
211
+ targets.push({
212
+ rawFile: p.file_path,
213
+ dbFilePath: p.file_path,
214
+ event: p.last_event,
215
+ source: p.source === "git" ? "pending" : "pending",
216
+ });
217
+ }
218
+ deleteAllPendingChangesStmt.run();
219
+ }
220
+ else {
221
+ targets.push({
222
+ rawFile: "(unspecified)",
223
+ dbFilePath: "(unspecified)",
224
+ event: "manual",
225
+ source: "unspecified",
226
+ });
227
+ }
228
+ }
229
+ for (const t of targets) {
230
+ const isUnspecified = t.dbFilePath === "(unspecified)";
231
+ const changeInfo = insertChangeLogStmt.run(active.id, t.dbFilePath, args.intent);
232
+ const change_log_id = Number(changeInfo.lastInsertRowid);
233
+ const memoryInfo = insertMemoryItemStmt.run("change_intent", active.title, args.intent, isUnspecified ? null : t.dbFilePath, null, null, active.id, safeJson({
234
+ change_log_id,
235
+ event: t.event,
236
+ source: t.source,
237
+ file_state_hash: isUnspecified ? null : getFileStateHash(t.rawFile),
238
+ }), sha256Hex(args.intent));
239
+ const memory_item_id = Number(memoryInfo.lastInsertRowid);
240
+ synced_files.push({ file_path: t.dbFilePath, event: t.event, source: t.source });
241
+ created.push({
242
+ file_path: t.dbFilePath,
243
+ event: t.event,
244
+ source: t.source,
245
+ change_log_id,
246
+ memory_item_id,
247
+ });
248
+ if (!isUnspecified && t.event !== "unlink") {
249
+ const abs = path.isAbsolute(t.rawFile)
250
+ ? t.rawFile
251
+ : path.join(projectRoot, t.rawFile);
252
+ indexFile(abs, "manual");
253
+ }
254
+ }
255
+ });
256
+ insertTx();
257
+ const development_warnings = [
258
+ ...buildDevelopmentWarnings(synced_files, {
259
+ includeUnspecified: synced_files.some((f) => f.file_path === "(unspecified)"),
260
+ }),
261
+ ...buildScopeDriftWarnings({
262
+ requirement: active,
263
+ intent: args.intent,
264
+ files: synced_files,
265
+ }),
266
+ ];
267
+ logActivity("sync_change_intent", {
268
+ req_id: active.id,
269
+ title: active.title,
270
+ intent_preview: makePreviewText(args.intent, 200),
271
+ files: synced_files.slice(0, 25),
272
+ files_total: synced_files.length,
273
+ development_warnings: development_warnings.length,
274
+ });
275
+ return {
276
+ content: [
277
+ {
278
+ type: "text",
279
+ text: toolJson({
280
+ ok: true,
281
+ linked_to_requirement: { id: active.id, title: active.title },
282
+ synced_files,
283
+ created,
284
+ development_warnings,
285
+ }),
286
+ },
287
+ ],
288
+ };
289
+ }
290
+ export async function handleGetPendingChanges(rawArgs, context) {
291
+ const { getActiveRequirementStmt, listPendingChangesStmt } = context.getStatements();
292
+ const args = GetPendingChangesArgsSchema.parse(rawArgs);
293
+ flushPendingChangeBuffer();
294
+ const offset = args.offset;
295
+ const limit = args.limit;
296
+ const pendingDbRows = listPendingChangesStmt.all();
297
+ const mergedPending = mergePendingWithGit(pendingDbRows, { offset, limit });
298
+ const total = mergedPending.total;
299
+ const truncated = mergedPending.truncated;
300
+ const pending = mergedPending.page;
301
+ const activeForScope = getActiveRequirementStmt.get();
302
+ const development_warnings = [
303
+ ...buildDevelopmentWarnings(pending),
304
+ ...(activeForScope ? buildScopeDriftWarnings({ requirement: activeForScope, files: pending }) : []),
305
+ ];
306
+ logActivity("get_pending_changes", {
307
+ total,
308
+ offset,
309
+ limit,
310
+ returned: pending.length,
311
+ truncated,
312
+ development_warnings: development_warnings.length,
313
+ });
314
+ return {
315
+ content: [
316
+ {
317
+ type: "text",
318
+ text: toolJson({ ok: true, total, offset, limit, truncated, pending, development_warnings }),
319
+ },
320
+ ],
321
+ };
322
+ }
323
+ export async function handleCompleteRequirement(rawArgs, context) {
324
+ const db = context.getDb();
325
+ const { completeAllActiveRequirementsStmt, getActiveRequirementStmt, completeRequirementByIdStmt } = context.getStatements();
326
+ const args = CompleteRequirementArgsSchema.parse(rawArgs);
327
+ flushPendingChangeBuffer();
328
+ const updated = [];
329
+ if (args.all_active) {
330
+ const activeRows = db.prepare(`SELECT id FROM requirements WHERE status = 'active' ORDER BY created_at DESC, id DESC`).all().slice(0, 200);
331
+ try {
332
+ completeAllActiveRequirementsStmt.run();
333
+ completeAllActiveRequirementMemoryItems();
334
+ }
335
+ catch (err) {
336
+ console.error("[vectormind] complete all active requirements failed:", err);
337
+ }
338
+ for (const r of activeRows)
339
+ updated.push({ id: r.id });
340
+ logActivity("complete_requirement", { all_active: true, completed: updated.map((u) => u.id) });
341
+ return { content: [{ type: "text", text: toolJson({ ok: true, completed: updated }) }] };
342
+ }
343
+ const targetId = args.req_id ?? getActiveRequirementStmt.get()?.id ?? null;
344
+ if (!targetId) {
345
+ return { content: [{ type: "text", text: toolJson({ ok: true, completed: [] }) }] };
346
+ }
347
+ try {
348
+ completeRequirementByIdStmt.run(targetId);
349
+ completeRequirementMemoryItemsByReqId(targetId);
350
+ }
351
+ catch (err) {
352
+ console.error("[vectormind] complete requirement failed:", err);
353
+ }
354
+ logActivity("complete_requirement", { req_id: targetId });
355
+ return { content: [{ type: "text", text: toolJson({ ok: true, completed: [{ id: targetId }] }) }] };
356
+ }
357
+ //# sourceMappingURL=requirements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requirements.js","sourceRoot":"","sources":["../../src/tool-handlers/requirements.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Server } from "@modelcontextprotocol/sdk/server/index.js";
2
+ import type { ToolHandlerContext } from "./tool-handlers/context.js";
3
+ export type { ToolHandlerContext } from "./tool-handlers/context.js";
4
+ export declare function registerToolHandlers(server: Server, context: ToolHandlerContext): void;
@@ -0,0 +1,105 @@
1
+ import { CallToolRequestSchema } from "@modelcontextprotocol/sdk/types.js";
2
+ import { handleStartRequirement, handlePreflightChangeScope, handleSyncChangeIntent, handleGetPendingChanges, handleCompleteRequirement } from "./tool-handlers/requirements.js";
3
+ import { handlePruneIndex, handleMaintainMemory } from "./tool-handlers/maintenance.js";
4
+ import { handlePlanLargeFileSplit, handleRecordLargeFileSplit } from "./tool-handlers/large-files.js";
5
+ import { handleBootstrapContext, handleGetBrainDump, handleReadMemoryItem, handleSemanticSearch } from "./tool-handlers/memory.js";
6
+ import { handleGrep, handleListProjectFiles, handleReadFileText, handleReadCodexTextFile, handleReadFileLines, handleQueryCodebase } from "./tool-handlers/files.js";
7
+ import { handleUpsertProjectSummary, handleAddNote, handleUpsertDecision, handleSupersedeMemory, handleUpsertConvention } from "./tool-handlers/notes-decisions.js";
8
+ import { handleGetActivityLog, handleGetActivitySummary, handleClearActivityLog, handleDetectRtk, handleInstallRtk, handleGetTokenSavings } from "./tool-handlers/diagnostics.js";
9
+ import { handleCreateCheckpoint, handleListCheckpoints, handleMemoryTimeline, handleRestoreCheckpointContext } from "./tool-handlers/context-recovery.js";
10
+ import { handleAnalyzeMemoryConflicts, handleCompareCheckpointContext, handleMemoryQualityReport } from "./tool-handlers/memory-diagnostics.js";
11
+ import { oneLine, toolJson } from "./tool-output.js";
12
+ const TOOL_HANDLERS = {
13
+ start_requirement: handleStartRequirement,
14
+ prune_index: handlePruneIndex,
15
+ maintain_memory: handleMaintainMemory,
16
+ preflight_change_scope: handlePreflightChangeScope,
17
+ plan_large_file_split: handlePlanLargeFileSplit,
18
+ record_large_file_split: handleRecordLargeFileSplit,
19
+ sync_change_intent: handleSyncChangeIntent,
20
+ bootstrap_context: handleBootstrapContext,
21
+ get_brain_dump: handleGetBrainDump,
22
+ get_pending_changes: handleGetPendingChanges,
23
+ complete_requirement: handleCompleteRequirement,
24
+ read_memory_item: handleReadMemoryItem,
25
+ get_activity_log: handleGetActivityLog,
26
+ get_activity_summary: handleGetActivitySummary,
27
+ clear_activity_log: handleClearActivityLog,
28
+ detect_rtk: handleDetectRtk,
29
+ install_rtk: handleInstallRtk,
30
+ get_token_savings: handleGetTokenSavings,
31
+ grep: handleGrep,
32
+ list_project_files: handleListProjectFiles,
33
+ read_file_text: handleReadFileText,
34
+ read_codex_text_file: handleReadCodexTextFile,
35
+ read_file_lines: handleReadFileLines,
36
+ query_codebase: handleQueryCodebase,
37
+ upsert_project_summary: handleUpsertProjectSummary,
38
+ add_note: handleAddNote,
39
+ upsert_decision: handleUpsertDecision,
40
+ supersede_memory: handleSupersedeMemory,
41
+ upsert_convention: handleUpsertConvention,
42
+ semantic_search: handleSemanticSearch,
43
+ memory_timeline: handleMemoryTimeline,
44
+ create_checkpoint: handleCreateCheckpoint,
45
+ list_checkpoints: handleListCheckpoints,
46
+ restore_checkpoint_context: handleRestoreCheckpointContext,
47
+ analyze_memory_conflicts: handleAnalyzeMemoryConflicts,
48
+ memory_quality_report: handleMemoryQualityReport,
49
+ compare_checkpoint_context: handleCompareCheckpointContext,
50
+ };
51
+ function attachProjectContextAdvisory(result, advisory) {
52
+ if (!advisory)
53
+ return result;
54
+ const content = result.content?.map((item, index) => {
55
+ if (index !== 0 || item.type !== "text" || typeof item.text !== "string")
56
+ return item;
57
+ const text = item.text.trim();
58
+ if (text.startsWith("{") || text.startsWith("[")) {
59
+ try {
60
+ const parsed = JSON.parse(item.text);
61
+ return {
62
+ ...item,
63
+ text: toolJson({
64
+ ...parsed,
65
+ project_context_advisory: advisory,
66
+ }),
67
+ };
68
+ }
69
+ catch {
70
+ // Fall back to compact-text injection below.
71
+ }
72
+ }
73
+ const advisoryLine = `project_context_advisory ${advisory.code}: external_reference=true read_only_reference=true previous="${oneLine(advisory.previous_project_root, 90)}" current="${oneLine(advisory.current_project_root, 90)}"`;
74
+ return {
75
+ ...item,
76
+ text: `${advisoryLine}\n${item.text}`,
77
+ };
78
+ });
79
+ return { ...result, content };
80
+ }
81
+ export function registerToolHandlers(server, context) {
82
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
83
+ const toolName = request.params.name;
84
+ const rawArgs = (request.params.arguments ?? {});
85
+ try {
86
+ await context.ensureInitializedForArgs(rawArgs);
87
+ const handler = TOOL_HANDLERS[toolName];
88
+ if (!handler) {
89
+ return attachProjectContextAdvisory({
90
+ isError: true,
91
+ content: [{ type: "text", text: `Unknown tool: ${toolName}` }],
92
+ }, context.consumeProjectContextAdvisory());
93
+ }
94
+ const result = await handler(rawArgs, context);
95
+ return attachProjectContextAdvisory(result, context.consumeProjectContextAdvisory());
96
+ }
97
+ catch (err) {
98
+ return attachProjectContextAdvisory({
99
+ isError: true,
100
+ content: [{ type: "text", text: String(err) }],
101
+ }, context.consumeProjectContextAdvisory());
102
+ }
103
+ });
104
+ }
105
+ //# sourceMappingURL=tool-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-handlers.js","sourceRoot":"","sources":["../src/tool-handlers.ts"],"names":[],"mappings":"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"}