@mcp-graph-workflow/mcp-graph 5.3.0 → 5.5.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 (144) hide show
  1. package/dist/api/router.js +1 -1
  2. package/dist/api/router.js.map +1 -1
  3. package/dist/api/routes/code-graph.js +2 -2
  4. package/dist/api/routes/code-graph.js.map +1 -1
  5. package/dist/api/routes/context.d.ts.map +1 -1
  6. package/dist/api/routes/context.js +75 -0
  7. package/dist/api/routes/context.js.map +1 -1
  8. package/dist/api/routes/folder.js +2 -2
  9. package/dist/api/routes/folder.js.map +1 -1
  10. package/dist/api/routes/skills.d.ts +2 -1
  11. package/dist/api/routes/skills.d.ts.map +1 -1
  12. package/dist/api/routes/skills.js +139 -3
  13. package/dist/api/routes/skills.js.map +1 -1
  14. package/dist/cli/commands/update.d.ts +3 -0
  15. package/dist/cli/commands/update.d.ts.map +1 -0
  16. package/dist/cli/commands/update.js +60 -0
  17. package/dist/cli/commands/update.js.map +1 -0
  18. package/dist/cli/index.js +2 -0
  19. package/dist/cli/index.js.map +1 -1
  20. package/dist/core/code/code-indexer.d.ts +2 -2
  21. package/dist/core/code/code-indexer.d.ts.map +1 -1
  22. package/dist/core/code/code-indexer.js +3 -3
  23. package/dist/core/code/code-indexer.js.map +1 -1
  24. package/dist/core/code/code-types.d.ts +1 -1
  25. package/dist/core/code/code-types.d.ts.map +1 -1
  26. package/dist/core/code/ts-analyzer.d.ts +7 -1
  27. package/dist/core/code/ts-analyzer.d.ts.map +1 -1
  28. package/dist/core/code/ts-analyzer.js +105 -72
  29. package/dist/core/code/ts-analyzer.js.map +1 -1
  30. package/dist/core/config/ai-memory-generator.d.ts.map +1 -1
  31. package/dist/core/config/ai-memory-generator.js +78 -7
  32. package/dist/core/config/ai-memory-generator.js.map +1 -1
  33. package/dist/core/events/event-types.d.ts +18 -1
  34. package/dist/core/events/event-types.d.ts.map +1 -1
  35. package/dist/core/graph/graph-types.d.ts +1 -0
  36. package/dist/core/graph/graph-types.d.ts.map +1 -1
  37. package/dist/core/importer/prd-to-graph.d.ts.map +1 -1
  38. package/dist/core/importer/prd-to-graph.js +49 -12
  39. package/dist/core/importer/prd-to-graph.js.map +1 -1
  40. package/dist/core/parser/classify.d.ts +1 -0
  41. package/dist/core/parser/classify.d.ts.map +1 -1
  42. package/dist/core/parser/classify.js +1 -0
  43. package/dist/core/parser/classify.js.map +1 -1
  44. package/dist/core/skills/built-in-skills.d.ts +1 -1
  45. package/dist/core/skills/built-in-skills.d.ts.map +1 -1
  46. package/dist/core/skills/built-in-skills.js +265 -1
  47. package/dist/core/skills/built-in-skills.js.map +1 -1
  48. package/dist/core/skills/self-healing-listener.d.ts +22 -0
  49. package/dist/core/skills/self-healing-listener.d.ts.map +1 -0
  50. package/dist/core/skills/self-healing-listener.js +102 -0
  51. package/dist/core/skills/self-healing-listener.js.map +1 -0
  52. package/dist/core/skills/skill-store.d.ts +14 -0
  53. package/dist/core/skills/skill-store.d.ts.map +1 -0
  54. package/dist/core/skills/skill-store.js +109 -0
  55. package/dist/core/skills/skill-store.js.map +1 -0
  56. package/dist/core/store/migrations.d.ts.map +1 -1
  57. package/dist/core/store/migrations.js +39 -0
  58. package/dist/core/store/migrations.js.map +1 -1
  59. package/dist/core/store/path-resolver.d.ts +38 -0
  60. package/dist/core/store/path-resolver.d.ts.map +1 -0
  61. package/dist/core/store/path-resolver.js +92 -0
  62. package/dist/core/store/path-resolver.js.map +1 -0
  63. package/dist/core/store/sqlite-store.d.ts +21 -0
  64. package/dist/core/store/sqlite-store.d.ts.map +1 -1
  65. package/dist/core/store/sqlite-store.js +109 -40
  66. package/dist/core/store/sqlite-store.js.map +1 -1
  67. package/dist/core/utils/constants.d.ts +10 -0
  68. package/dist/core/utils/constants.d.ts.map +1 -1
  69. package/dist/core/utils/constants.js +12 -0
  70. package/dist/core/utils/constants.js.map +1 -1
  71. package/dist/mcp/init-project.d.ts +14 -0
  72. package/dist/mcp/init-project.d.ts.map +1 -1
  73. package/dist/mcp/init-project.js +140 -36
  74. package/dist/mcp/init-project.js.map +1 -1
  75. package/dist/mcp/lifecycle-wrapper.d.ts +2 -1
  76. package/dist/mcp/lifecycle-wrapper.d.ts.map +1 -1
  77. package/dist/mcp/lifecycle-wrapper.js +20 -1
  78. package/dist/mcp/lifecycle-wrapper.js.map +1 -1
  79. package/dist/mcp/server.js +18 -16
  80. package/dist/mcp/server.js.map +1 -1
  81. package/dist/mcp/tools/add-node.d.ts +3 -0
  82. package/dist/mcp/tools/add-node.d.ts.map +1 -1
  83. package/dist/mcp/tools/add-node.js +7 -3
  84. package/dist/mcp/tools/add-node.js.map +1 -1
  85. package/dist/mcp/tools/delete-node.d.ts +3 -0
  86. package/dist/mcp/tools/delete-node.d.ts.map +1 -1
  87. package/dist/mcp/tools/delete-node.js +7 -3
  88. package/dist/mcp/tools/delete-node.js.map +1 -1
  89. package/dist/mcp/tools/index.d.ts.map +1 -1
  90. package/dist/mcp/tools/index.js +21 -10
  91. package/dist/mcp/tools/index.js.map +1 -1
  92. package/dist/mcp/tools/list-skills.d.ts +1 -2
  93. package/dist/mcp/tools/list-skills.d.ts.map +1 -1
  94. package/dist/mcp/tools/list-skills.js +6 -4
  95. package/dist/mcp/tools/list-skills.js.map +1 -1
  96. package/dist/mcp/tools/manage-skill.d.ts +8 -0
  97. package/dist/mcp/tools/manage-skill.d.ts.map +1 -0
  98. package/dist/mcp/tools/manage-skill.js +202 -0
  99. package/dist/mcp/tools/manage-skill.js.map +1 -0
  100. package/dist/mcp/tools/node.d.ts +9 -0
  101. package/dist/mcp/tools/node.d.ts.map +1 -0
  102. package/dist/mcp/tools/node.js +195 -0
  103. package/dist/mcp/tools/node.js.map +1 -0
  104. package/dist/mcp/tools/update-node.d.ts +3 -0
  105. package/dist/mcp/tools/update-node.d.ts.map +1 -1
  106. package/dist/mcp/tools/update-node.js +7 -3
  107. package/dist/mcp/tools/update-node.js.map +1 -1
  108. package/dist/mcp/tools/validate-ac.d.ts +3 -0
  109. package/dist/mcp/tools/validate-ac.d.ts.map +1 -1
  110. package/dist/mcp/tools/validate-ac.js +6 -2
  111. package/dist/mcp/tools/validate-ac.js.map +1 -1
  112. package/dist/mcp/tools/validate-task.d.ts +3 -0
  113. package/dist/mcp/tools/validate-task.d.ts.map +1 -1
  114. package/dist/mcp/tools/validate-task.js +6 -1
  115. package/dist/mcp/tools/validate-task.js.map +1 -1
  116. package/dist/mcp/tools/validate.d.ts +9 -0
  117. package/dist/mcp/tools/validate.d.ts.map +1 -0
  118. package/dist/mcp/tools/validate.js +70 -0
  119. package/dist/mcp/tools/validate.js.map +1 -0
  120. package/dist/schemas/graph.schema.d.ts +2 -0
  121. package/dist/schemas/graph.schema.d.ts.map +1 -1
  122. package/dist/schemas/graph.schema.js +1 -0
  123. package/dist/schemas/graph.schema.js.map +1 -1
  124. package/dist/schemas/skill.schema.d.ts +57 -0
  125. package/dist/schemas/skill.schema.d.ts.map +1 -0
  126. package/dist/schemas/skill.schema.js +24 -0
  127. package/dist/schemas/skill.schema.js.map +1 -0
  128. package/dist/web/dashboard/dist/assets/{benchmark-tab-B5Sr8Cah.js → benchmark-tab-BW4QxI49.js} +1 -1
  129. package/dist/web/dashboard/dist/assets/context-tab-C5RAlXNW.js +1 -0
  130. package/dist/web/dashboard/dist/assets/{gitnexus-tab-DqmbSdzV.js → gitnexus-tab-BnxxYl2F.js} +1 -1
  131. package/dist/web/dashboard/dist/assets/{graph-tab-BKns5HdW.js → graph-tab-Cv_wQ6Az.js} +1 -1
  132. package/dist/web/dashboard/dist/assets/{graph-utils-BxUWNvsI.js → graph-utils-Ds1zJyD1.js} +1 -1
  133. package/dist/web/dashboard/dist/assets/{index-CZOiKbTP.js → index-BAeZDWWy.js} +11 -11
  134. package/dist/web/dashboard/dist/assets/{index-Dd4vKyDX.js → index-Bic_URMs.js} +1 -1
  135. package/dist/web/dashboard/dist/assets/index-DQqYFXms.css +1 -0
  136. package/dist/web/dashboard/dist/assets/{insights-tab-B1kPckBM.js → insights-tab-U_ATOqPu.js} +1 -1
  137. package/dist/web/dashboard/dist/assets/{logs-tab-BWfsrRlB.js → logs-tab-B8psCXuB.js} +1 -1
  138. package/dist/web/dashboard/dist/assets/{memories-tab-D3zm-1Sq.js → memories-tab-DcWok2by.js} +1 -1
  139. package/dist/web/dashboard/dist/assets/{prd-backlog-tab-DXP4dFP-.js → prd-backlog-tab-CjftveTc.js} +1 -1
  140. package/dist/web/dashboard/dist/assets/skills-tab-Ddp1w4vS.js +1 -0
  141. package/dist/web/dashboard/dist/index.html +2 -2
  142. package/package.json +1 -1
  143. package/dist/web/dashboard/dist/assets/index-xyMN-_UV.css +0 -1
  144. package/dist/web/dashboard/dist/assets/skills-tab-CAlVL80S.js +0 -1
@@ -107,6 +107,18 @@ function rowToEdge(row) {
107
107
  edge.metadata = JSON.parse(row.metadata);
108
108
  return edge;
109
109
  }
110
+ // ── Row → Domain mapping ─────────────────────────────────
111
+ function rowToProject(row) {
112
+ const project = {
113
+ id: row.id,
114
+ name: row.name,
115
+ createdAt: row.created_at,
116
+ updatedAt: row.updated_at,
117
+ };
118
+ if (row.fs_path)
119
+ project.fsPath = row.fs_path;
120
+ return project;
121
+ }
110
122
  // ── SqliteStore ──────────────────────────────────────────
111
123
  export class SqliteStore {
112
124
  db;
@@ -166,6 +178,27 @@ export class SqliteStore {
166
178
  logger.info(`Store opened${basePath === ":memory:" ? " (in-memory)" : ` at ${basePath}`}`);
167
179
  return store;
168
180
  }
181
+ /**
182
+ * Open a store at an absolute DB file path.
183
+ * Creates the file and parent dirs if they don't exist.
184
+ * Useful for global mode where the DB is at ~/.mcp-graph/graph.db.
185
+ */
186
+ static openDb(dbPath) {
187
+ const dir = path.dirname(dbPath);
188
+ mkdirSync(dir, { recursive: true });
189
+ const db = new Database(dbPath);
190
+ configureDb(db);
191
+ runMigrations(db);
192
+ const store = new SqliteStore(db);
193
+ // Auto-load project if one exists
194
+ const row = db
195
+ .prepare("SELECT id FROM projects LIMIT 1")
196
+ .get();
197
+ if (row)
198
+ store.projectId = row.id;
199
+ logger.info(`Store opened at ${dbPath}`);
200
+ return store;
201
+ }
169
202
  /** Expose the raw database instance for extension modules (e.g. DocsCacheStore). */
170
203
  getDb() {
171
204
  return this.db;
@@ -192,12 +225,7 @@ export class SqliteStore {
192
225
  if (existing) {
193
226
  this.projectId = existing.id;
194
227
  logger.info("Project activated by name", { name, projectId: existing.id });
195
- return {
196
- id: existing.id,
197
- name: existing.name,
198
- createdAt: existing.created_at,
199
- updatedAt: existing.updated_at,
200
- };
228
+ return rowToProject(existing);
201
229
  }
202
230
  }
203
231
  // No active project, or different name — check if project already exists by name
@@ -208,12 +236,7 @@ export class SqliteStore {
208
236
  if (existing) {
209
237
  this.projectId = existing.id;
210
238
  logger.info("Project activated by name", { name: projectName, projectId: existing.id });
211
- return {
212
- id: existing.id,
213
- name: existing.name,
214
- createdAt: existing.created_at,
215
- updatedAt: existing.updated_at,
216
- };
239
+ return rowToProject(existing);
217
240
  }
218
241
  // If no name provided but a project exists in DB, reuse it
219
242
  if (!name) {
@@ -223,12 +246,7 @@ export class SqliteStore {
223
246
  if (anyProject) {
224
247
  this.projectId = anyProject.id;
225
248
  logger.info("Project activated (existing)", { name: anyProject.name, projectId: anyProject.id });
226
- return {
227
- id: anyProject.id,
228
- name: anyProject.name,
229
- createdAt: anyProject.created_at,
230
- updatedAt: anyProject.updated_at,
231
- };
249
+ return rowToProject(anyProject);
232
250
  }
233
251
  }
234
252
  // Truly no project exists — create new
@@ -249,12 +267,7 @@ export class SqliteStore {
249
267
  .get(this.projectId);
250
268
  if (!row)
251
269
  return null;
252
- return {
253
- id: row.id,
254
- name: row.name,
255
- createdAt: row.created_at,
256
- updatedAt: row.updated_at,
257
- };
270
+ return rowToProject(row);
258
271
  }
259
272
  /** Alias for getProject — returns the currently active project. */
260
273
  getActiveProject() {
@@ -265,12 +278,7 @@ export class SqliteStore {
265
278
  const rows = this.db
266
279
  .prepare("SELECT * FROM projects ORDER BY created_at")
267
280
  .all();
268
- return rows.map((row) => ({
269
- id: row.id,
270
- name: row.name,
271
- createdAt: row.created_at,
272
- updatedAt: row.updated_at,
273
- }));
281
+ return rows.map(rowToProject);
274
282
  }
275
283
  /** Switch the active project. Throws if project ID does not exist. */
276
284
  activateProject(projectId) {
@@ -283,6 +291,49 @@ export class SqliteStore {
283
291
  this.projectId = projectId;
284
292
  logger.info("Project activated", { projectId });
285
293
  }
294
+ /**
295
+ * Find a project by its filesystem path.
296
+ * Returns null if no project is registered at that path.
297
+ */
298
+ findProjectByPath(fsPath) {
299
+ const row = this.db
300
+ .prepare("SELECT * FROM projects WHERE fs_path = ?")
301
+ .get(fsPath);
302
+ return row ? rowToProject(row) : null;
303
+ }
304
+ /**
305
+ * Register a project with a filesystem path.
306
+ * If a project already exists at that path, returns the existing one.
307
+ * Creates and activates a new project otherwise.
308
+ */
309
+ registerProject(name, fsPath) {
310
+ // Check if project already exists at this path
311
+ const existing = this.findProjectByPath(fsPath);
312
+ if (existing) {
313
+ this.projectId = existing.id;
314
+ logger.info("Project found by path", { name: existing.name, fsPath, projectId: existing.id });
315
+ return existing;
316
+ }
317
+ // Create new project with fs_path
318
+ const id = generateId("proj");
319
+ const timestamp = now();
320
+ this.db
321
+ .prepare("INSERT INTO projects (id, name, fs_path, created_at, updated_at) VALUES (?, ?, ?, ?, ?)")
322
+ .run(id, name, fsPath, timestamp, timestamp);
323
+ this.projectId = id;
324
+ logger.info(`Project registered: ${name} at ${fsPath} (${id})`);
325
+ return { id, name, fsPath, createdAt: timestamp, updatedAt: timestamp };
326
+ }
327
+ /**
328
+ * Set or update the filesystem path for a project.
329
+ */
330
+ setProjectFsPath(projectId, fsPath) {
331
+ const timestamp = now();
332
+ this.db
333
+ .prepare("UPDATE projects SET fs_path = ?, updated_at = ? WHERE id = ?")
334
+ .run(fsPath, timestamp, projectId);
335
+ logger.info("Project fs_path updated", { projectId, fsPath });
336
+ }
286
337
  ensureProject() {
287
338
  if (!this.projectId) {
288
339
  throw new GraphNotInitializedError();
@@ -435,16 +486,34 @@ export class SqliteStore {
435
486
  const pid = this.ensureProject();
436
487
  logger.debug("tx:delete-node", { id });
437
488
  return this.db.transaction(() => {
438
- // Delete edges referencing this node
439
- this.db
440
- .prepare("DELETE FROM edges WHERE project_id = ? AND (from_node = ? OR to_node = ?)")
441
- .run(pid, id, id);
442
- const result = this.db
443
- .prepare("DELETE FROM nodes WHERE id = ? AND project_id = ?")
444
- .run(id, pid);
445
- const deleted = result.changes > 0;
446
- if (deleted)
447
- this._eventBus?.emitTyped("node:deleted", { nodeId: id });
489
+ // Recursively collect all descendant node IDs
490
+ const toDelete = [];
491
+ const collectDescendants = (nodeId) => {
492
+ toDelete.push(nodeId);
493
+ const children = this.db
494
+ .prepare("SELECT id FROM nodes WHERE project_id = ? AND parent_id = ?")
495
+ .all(pid, nodeId);
496
+ for (const child of children) {
497
+ collectDescendants(child.id);
498
+ }
499
+ };
500
+ collectDescendants(id);
501
+ // Delete edges and nodes for all collected IDs
502
+ for (const nodeId of toDelete) {
503
+ this.db
504
+ .prepare("DELETE FROM edges WHERE project_id = ? AND (from_node = ? OR to_node = ?)")
505
+ .run(pid, nodeId, nodeId);
506
+ }
507
+ let deleted = false;
508
+ for (const nodeId of toDelete) {
509
+ const result = this.db
510
+ .prepare("DELETE FROM nodes WHERE id = ? AND project_id = ?")
511
+ .run(nodeId, pid);
512
+ if (result.changes > 0) {
513
+ deleted = true;
514
+ this._eventBus?.emitTyped("node:deleted", { nodeId });
515
+ }
516
+ }
448
517
  return deleted;
449
518
  })();
450
519
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite-store.js","sourceRoot":"","sources":["../../../src/core/store/sqlite-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sqlite-store.js","sourceRoot":"","sources":["../../../src/core/store/sqlite-store.ts"],"names":[],"mappings":"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"}
@@ -7,4 +7,14 @@ export declare const STORE_DIR = "workflow-graph";
7
7
  export declare const LEGACY_STORE_DIR = ".mcp-graph";
8
8
  /** Default database file name */
9
9
  export declare const DB_FILE = "graph.db";
10
+ /** Global store directory name (inside home dir) */
11
+ export declare const GLOBAL_STORE_DIR = ".mcp-graph";
12
+ /** Global store directory path (~/.mcp-graph/) */
13
+ export declare const GLOBAL_DB_DIR: string;
14
+ /** Global database file path (~/.mcp-graph/graph.db) */
15
+ export declare const GLOBAL_DB_PATH: string;
16
+ /** Global memories directory (~/.mcp-graph/memories/) */
17
+ export declare const GLOBAL_MEMORIES_DIR: string;
18
+ /** Global config file (~/.mcp-graph/config.json) */
19
+ export declare const GLOBAL_CONFIG_FILE: string;
10
20
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/core/utils/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,yDAAyD;AACzD,eAAO,MAAM,SAAS,mBAAmB,CAAC;AAE1C,0DAA0D;AAC1D,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAE7C,iCAAiC;AACjC,eAAO,MAAM,OAAO,aAAa,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/core/utils/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,yDAAyD;AACzD,eAAO,MAAM,SAAS,mBAAmB,CAAC;AAE1C,0DAA0D;AAC1D,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAE7C,iCAAiC;AACjC,eAAO,MAAM,OAAO,aAAa,CAAC;AAElC,oDAAoD;AACpD,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAE7C,kDAAkD;AAClD,eAAO,MAAM,aAAa,QAA4C,CAAC;AAEvE,wDAAwD;AACxD,eAAO,MAAM,cAAc,QAAoC,CAAC;AAEhE,yDAAyD;AACzD,eAAO,MAAM,mBAAmB,QAAuC,CAAC;AAExE,oDAAoD;AACpD,eAAO,MAAM,kBAAkB,QAA0C,CAAC"}
@@ -1,10 +1,22 @@
1
1
  /**
2
2
  * Centralized constants for mcp-graph store directories.
3
3
  */
4
+ import path from "node:path";
5
+ import os from "node:os";
4
6
  /** Current store directory name (visible, not hidden) */
5
7
  export const STORE_DIR = "workflow-graph";
6
8
  /** Legacy store directory name (hidden, pre-migration) */
7
9
  export const LEGACY_STORE_DIR = ".mcp-graph";
8
10
  /** Default database file name */
9
11
  export const DB_FILE = "graph.db";
12
+ /** Global store directory name (inside home dir) */
13
+ export const GLOBAL_STORE_DIR = ".mcp-graph";
14
+ /** Global store directory path (~/.mcp-graph/) */
15
+ export const GLOBAL_DB_DIR = path.join(os.homedir(), GLOBAL_STORE_DIR);
16
+ /** Global database file path (~/.mcp-graph/graph.db) */
17
+ export const GLOBAL_DB_PATH = path.join(GLOBAL_DB_DIR, DB_FILE);
18
+ /** Global memories directory (~/.mcp-graph/memories/) */
19
+ export const GLOBAL_MEMORIES_DIR = path.join(GLOBAL_DB_DIR, "memories");
20
+ /** Global config file (~/.mcp-graph/config.json) */
21
+ export const GLOBAL_CONFIG_FILE = path.join(GLOBAL_DB_DIR, "config.json");
10
22
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/core/utils/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,yDAAyD;AACzD,MAAM,CAAC,MAAM,SAAS,GAAG,gBAAgB,CAAC;AAE1C,0DAA0D;AAC1D,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAE7C,iCAAiC;AACjC,MAAM,CAAC,MAAM,OAAO,GAAG,UAAU,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/core/utils/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,yDAAyD;AACzD,MAAM,CAAC,MAAM,SAAS,GAAG,gBAAgB,CAAC;AAE1C,0DAA0D;AAC1D,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAE7C,iCAAiC;AACjC,MAAM,CAAC,MAAM,OAAO,GAAG,UAAU,CAAC;AAElC,oDAAoD;AACpD,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAE7C,kDAAkD;AAClD,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,gBAAgB,CAAC,CAAC;AAEvE,wDAAwD;AACxD,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AAEhE,yDAAyD;AACzD,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;AAExE,oDAAoD;AACpD,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC"}
@@ -1,2 +1,16 @@
1
+ export interface UpdateStepResult {
2
+ step: string;
3
+ status: "updated" | "up-to-date" | "created" | "skipped" | "error";
4
+ message: string;
5
+ }
6
+ export interface UpdateReport {
7
+ steps: UpdateStepResult[];
8
+ hasChanges: boolean;
9
+ }
10
+ export interface UpdateOptions {
11
+ only?: string[];
12
+ dryRun?: boolean;
13
+ }
14
+ export declare function runUpdate(projectDir: string, options?: UpdateOptions): Promise<UpdateReport>;
1
15
  export declare function runInit(projectDir: string): Promise<void>;
2
16
  //# sourceMappingURL=init-project.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init-project.d.ts","sourceRoot":"","sources":["../../src/mcp/init-project.ts"],"names":[],"mappings":"AA0IA,wBAAsB,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgC/D"}
1
+ {"version":3,"file":"init-project.d.ts","sourceRoot":"","sources":["../../src/mcp/init-project.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACnE,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAwMD,wBAAsB,SAAS,CAC7B,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAiDvB;AAED,wBAAsB,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgC/D"}
@@ -2,12 +2,14 @@ import { writeFileSync, existsSync, readFileSync, mkdirSync } from "node:fs";
2
2
  import path from "node:path";
3
3
  import { SqliteStore } from "../core/store/sqlite-store.js";
4
4
  import { logger } from "../core/utils/logger.js";
5
+ import { GraphNotInitializedError } from "../core/utils/errors.js";
5
6
  import { buildMcpServersConfig } from "../core/integrations/mcp-servers-config.js";
6
7
  import { installAllMcpDeps } from "../core/integrations/mcp-deps-installer.js";
7
8
  import { generateClaudeMdSection, generateCopilotInstructions, applySection } from "../core/config/ai-memory-generator.js";
8
9
  import { STORE_DIR } from "../core/utils/constants.js";
9
10
  const MCP_CONFIG_FILE = ".mcp.json";
10
11
  const GITIGNORE_ENTRY = "workflow-graph/";
12
+ // --- Internal helpers ---
11
13
  function _resolveCommand() {
12
14
  // Check if running via npx/global — use package name
13
15
  // Check if running from node_modules — use relative path
@@ -24,10 +26,11 @@ function _resolveArgs() {
24
26
  }
25
27
  return ["-y", "mcp-graph"];
26
28
  }
27
- function writeMcpJson(projectDir) {
29
+ function writeMcpJson(projectDir, dryRun) {
28
30
  const mcpConfigPath = path.join(projectDir, MCP_CONFIG_FILE);
29
31
  let existing = {};
30
- if (existsSync(mcpConfigPath)) {
32
+ const fileExists = existsSync(mcpConfigPath);
33
+ if (fileExists) {
31
34
  try {
32
35
  existing = JSON.parse(readFileSync(mcpConfigPath, "utf-8"));
33
36
  }
@@ -36,15 +39,29 @@ function writeMcpJson(projectDir) {
36
39
  }
37
40
  }
38
41
  const config = buildMcpServersConfig(existing);
39
- writeFileSync(mcpConfigPath, JSON.stringify(config, null, 2) + "\n", "utf-8");
40
- logger.info(`${MCP_CONFIG_FILE} configured with all MCP servers`, { path: mcpConfigPath });
42
+ const newContent = JSON.stringify(config, null, 2) + "\n";
43
+ if (fileExists) {
44
+ const currentContent = readFileSync(mcpConfigPath, "utf-8");
45
+ if (currentContent === newContent) {
46
+ return { step: "mcp-json", status: "up-to-date", message: ".mcp.json up-to-date" };
47
+ }
48
+ }
49
+ if (!dryRun) {
50
+ writeFileSync(mcpConfigPath, newContent, "utf-8");
51
+ logger.info(`${MCP_CONFIG_FILE} configured with all MCP servers`, { path: mcpConfigPath });
52
+ }
53
+ return {
54
+ step: "mcp-json",
55
+ status: fileExists ? "updated" : "created",
56
+ message: fileExists ? ".mcp.json updated" : ".mcp.json created",
57
+ };
41
58
  }
42
- function writeVscodeMcpJson(projectDir) {
59
+ function writeVscodeMcpJson(projectDir, dryRun) {
43
60
  const vscodeDir = path.join(projectDir, ".vscode");
44
- mkdirSync(vscodeDir, { recursive: true });
45
61
  const vscodeMcpPath = path.join(vscodeDir, "mcp.json");
46
62
  let existing = {};
47
- if (existsSync(vscodeMcpPath)) {
63
+ const fileExists = existsSync(vscodeMcpPath);
64
+ if (fileExists) {
48
65
  try {
49
66
  existing = JSON.parse(readFileSync(vscodeMcpPath, "utf-8"));
50
67
  }
@@ -59,59 +76,146 @@ function writeVscodeMcpJson(projectDir) {
59
76
  servers[name] = { type: "stdio", command: entry.command, args: entry.args };
60
77
  }
61
78
  const config = { ...existing, servers };
62
- writeFileSync(vscodeMcpPath, JSON.stringify(config, null, 2) + "\n", "utf-8");
63
- logger.info(".vscode/mcp.json configured with all MCP servers", { path: vscodeMcpPath });
79
+ const newContent = JSON.stringify(config, null, 2) + "\n";
80
+ if (fileExists) {
81
+ const currentContent = readFileSync(vscodeMcpPath, "utf-8");
82
+ if (currentContent === newContent) {
83
+ return { step: "vscode-mcp", status: "up-to-date", message: ".vscode/mcp.json up-to-date" };
84
+ }
85
+ }
86
+ if (!dryRun) {
87
+ mkdirSync(vscodeDir, { recursive: true });
88
+ writeFileSync(vscodeMcpPath, newContent, "utf-8");
89
+ logger.info(".vscode/mcp.json configured with all MCP servers", { path: vscodeMcpPath });
90
+ }
91
+ return {
92
+ step: "vscode-mcp",
93
+ status: fileExists ? "updated" : "created",
94
+ message: fileExists ? ".vscode/mcp.json updated" : ".vscode/mcp.json created",
95
+ };
64
96
  }
65
- function ensureGitignore(projectDir) {
97
+ function ensureGitignore(projectDir, dryRun) {
66
98
  const gitignorePath = path.join(projectDir, ".gitignore");
67
99
  if (!existsSync(gitignorePath)) {
68
- writeFileSync(gitignorePath, GITIGNORE_ENTRY + "\n", "utf-8");
69
- logger.info(".gitignore created", { entry: GITIGNORE_ENTRY });
70
- return;
100
+ if (!dryRun) {
101
+ writeFileSync(gitignorePath, GITIGNORE_ENTRY + "\n", "utf-8");
102
+ logger.info(".gitignore created", { entry: GITIGNORE_ENTRY });
103
+ }
104
+ return { step: "gitignore", status: "created", message: ".gitignore created with workflow-graph/" };
71
105
  }
72
106
  const content = readFileSync(gitignorePath, "utf-8");
73
107
  if (content.includes(GITIGNORE_ENTRY)) {
74
- logger.debug(".gitignore already has entry", { entry: GITIGNORE_ENTRY });
75
- return;
108
+ return { step: "gitignore", status: "up-to-date", message: ".gitignore up-to-date" };
76
109
  }
77
- const separator = content.endsWith("\n") ? "" : "\n";
78
- writeFileSync(gitignorePath, content + separator + GITIGNORE_ENTRY + "\n", "utf-8");
79
- logger.info(".gitignore updated", { entry: GITIGNORE_ENTRY });
80
- }
81
- function initStore(projectDir) {
82
- const storeDir = path.join(projectDir, STORE_DIR);
83
- mkdirSync(storeDir, { recursive: true });
84
- const store = SqliteStore.open(projectDir);
85
- const projectName = path.basename(projectDir);
86
- store.initProject(projectName);
87
- store.close();
88
- logger.info("Database initialized", { dir: STORE_DIR });
110
+ if (!dryRun) {
111
+ const separator = content.endsWith("\n") ? "" : "\n";
112
+ writeFileSync(gitignorePath, content + separator + GITIGNORE_ENTRY + "\n", "utf-8");
113
+ logger.info(".gitignore updated", { entry: GITIGNORE_ENTRY });
114
+ }
115
+ return { step: "gitignore", status: "updated", message: ".gitignore updated with workflow-graph/" };
89
116
  }
90
- function generateAndWriteClaudeMd(projectDir) {
117
+ function generateAndWriteClaudeMd(projectDir, dryRun) {
91
118
  const projectName = path.basename(projectDir);
92
119
  const claudeMdPath = path.join(projectDir, "CLAUDE.md");
93
120
  const section = generateClaudeMdSection(projectName);
121
+ const fileExists = existsSync(claudeMdPath);
94
122
  let existing = "";
95
- if (existsSync(claudeMdPath)) {
123
+ if (fileExists) {
96
124
  existing = readFileSync(claudeMdPath, "utf-8");
97
125
  }
98
126
  const result = applySection(existing, section);
99
- writeFileSync(claudeMdPath, result, "utf-8");
100
- logger.info("CLAUDE.md updated with mcp-graph instructions", { path: claudeMdPath });
127
+ if (fileExists && existing === result) {
128
+ return { step: "claude-md", status: "up-to-date", message: "CLAUDE.md up-to-date" };
129
+ }
130
+ if (!dryRun) {
131
+ writeFileSync(claudeMdPath, result, "utf-8");
132
+ logger.info("CLAUDE.md updated with mcp-graph instructions", { path: claudeMdPath });
133
+ }
134
+ return {
135
+ step: "claude-md",
136
+ status: fileExists ? "updated" : "created",
137
+ message: fileExists ? "CLAUDE.md updated" : "CLAUDE.md created",
138
+ };
101
139
  }
102
- function generateAndWriteCopilotInstructions(projectDir) {
140
+ function generateAndWriteCopilotInstructions(projectDir, dryRun) {
103
141
  const projectName = path.basename(projectDir);
104
142
  const githubDir = path.join(projectDir, ".github");
105
- mkdirSync(githubDir, { recursive: true });
106
143
  const copilotPath = path.join(githubDir, "copilot-instructions.md");
107
144
  const section = generateCopilotInstructions(projectName);
145
+ const fileExists = existsSync(copilotPath);
108
146
  let existing = "";
109
- if (existsSync(copilotPath)) {
147
+ if (fileExists) {
110
148
  existing = readFileSync(copilotPath, "utf-8");
111
149
  }
112
150
  const result = applySection(existing, section);
113
- writeFileSync(copilotPath, result, "utf-8");
114
- logger.info("copilot-instructions.md updated", { path: copilotPath });
151
+ if (fileExists && existing === result) {
152
+ return { step: "copilot-md", status: "up-to-date", message: "copilot-instructions.md up-to-date" };
153
+ }
154
+ if (!dryRun) {
155
+ mkdirSync(githubDir, { recursive: true });
156
+ writeFileSync(copilotPath, result, "utf-8");
157
+ logger.info("copilot-instructions.md updated", { path: copilotPath });
158
+ }
159
+ return {
160
+ step: "copilot-md",
161
+ status: fileExists ? "updated" : "created",
162
+ message: fileExists ? "copilot-instructions.md updated" : "copilot-instructions.md created",
163
+ };
164
+ }
165
+ function initStore(projectDir) {
166
+ const storeDir = path.join(projectDir, STORE_DIR);
167
+ mkdirSync(storeDir, { recursive: true });
168
+ const store = SqliteStore.open(projectDir);
169
+ const projectName = path.basename(projectDir);
170
+ store.initProject(projectName);
171
+ store.close();
172
+ logger.info("Database initialized", { dir: STORE_DIR });
173
+ }
174
+ // --- Public API ---
175
+ export async function runUpdate(projectDir, options = {}) {
176
+ const dbPath = path.join(projectDir, STORE_DIR, "graph.db");
177
+ if (!existsSync(dbPath)) {
178
+ throw new GraphNotInitializedError();
179
+ }
180
+ const steps = [];
181
+ const shouldRun = (step) => !options.only || options.only.includes(step);
182
+ // 1. DB migrations
183
+ if (shouldRun("db")) {
184
+ const store = SqliteStore.open(projectDir);
185
+ store.close();
186
+ steps.push({ step: "db", status: "up-to-date", message: "Database migrations applied" });
187
+ }
188
+ // 2. Config files
189
+ if (shouldRun("mcp-json"))
190
+ steps.push(writeMcpJson(projectDir, options.dryRun));
191
+ if (shouldRun("vscode-mcp"))
192
+ steps.push(writeVscodeMcpJson(projectDir, options.dryRun));
193
+ if (shouldRun("gitignore"))
194
+ steps.push(ensureGitignore(projectDir, options.dryRun));
195
+ // 3. MCP dependencies
196
+ if (shouldRun("deps")) {
197
+ const depResults = await installAllMcpDeps(projectDir);
198
+ const ready = depResults.filter((r) => r.status === "installed" || r.status === "already_available");
199
+ steps.push({
200
+ step: "deps",
201
+ status: "up-to-date",
202
+ message: `MCP dependencies: ${ready.length}/${depResults.length} ready`,
203
+ });
204
+ }
205
+ // 4. AI instruction files
206
+ if (shouldRun("claude-md"))
207
+ steps.push(generateAndWriteClaudeMd(projectDir, options.dryRun));
208
+ if (shouldRun("copilot-md"))
209
+ steps.push(generateAndWriteCopilotInstructions(projectDir, options.dryRun));
210
+ const report = {
211
+ steps,
212
+ hasChanges: steps.some((s) => s.status === "updated" || s.status === "created"),
213
+ };
214
+ logger.info("mcp-graph update complete", {
215
+ updated: steps.filter((s) => s.status === "updated").length,
216
+ upToDate: steps.filter((s) => s.status === "up-to-date").length,
217
+ });
218
+ return report;
115
219
  }
116
220
  export async function runInit(projectDir) {
117
221
  logger.info("mcp-graph init", { dir: projectDir });