@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
@@ -198,7 +198,7 @@ export interface CodeAnalyzer {
198
198
  /** Languages supported by this analyzer (e.g., ["typescript", "javascript"]) */
199
199
  readonly languages: string[];
200
200
  /** Analyze a single file and return symbols + relations */
201
- analyzeFile(filePath: string, basePath: string): AnalyzedFile;
201
+ analyzeFile(filePath: string, basePath: string): Promise<AnalyzedFile>;
202
202
  }
203
203
  export interface IndexResult {
204
204
  fileCount: number;
@@ -1 +1 @@
1
- {"version":3,"file":"code-types.d.ts","sourceRoot":"","sources":["../../../src/core/code/code-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"code-types.d.ts","sourceRoot":"","sources":["../../../src/core/code/code-types.ts"],"names":[],"mappings":"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"}
@@ -2,11 +2,17 @@
2
2
  * TypeScript AST analyzer using ts.createSourceFile() (parse-only, no type checker).
3
3
  * Extracts symbols and relations from TypeScript files syntactically.
4
4
  * ~10-100x faster than ts.createProgram() with ~95% accuracy.
5
+ *
6
+ * Uses dynamic import for the "typescript" package so the module loads
7
+ * gracefully even when typescript is not installed (e.g. production / global installs).
5
8
  */
6
9
  import type { AnalyzedFile } from "./code-types.js";
10
+ /** Reset the lazy loader state (for testing purposes). */
11
+ export declare function resetTypeScriptLoader(): void;
7
12
  /**
8
13
  * Analyze a single TypeScript file syntactically.
9
14
  * Returns extracted symbols and relations with paths relative to basePath.
15
+ * Returns empty result if the typescript package is unavailable.
10
16
  */
11
- export declare function analyzeFile(filePath: string, basePath: string): AnalyzedFile;
17
+ export declare function analyzeFile(filePath: string, basePath: string): Promise<AnalyzedFile>;
12
18
  //# sourceMappingURL=ts-analyzer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ts-analyzer.d.ts","sourceRoot":"","sources":["../../../src/core/code/ts-analyzer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,YAAY,EAA4B,MAAM,iBAAiB,CAAC;AAK9E;;;GAGG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,CA+B5E"}
1
+ {"version":3,"file":"ts-analyzer.d.ts","sourceRoot":"","sources":["../../../src/core/code/ts-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EAAE,YAAY,EAA4B,MAAM,iBAAiB,CAAC;AA0B9E,0DAA0D;AAC1D,wBAAgB,qBAAqB,IAAI,IAAI,CAG5C;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAqC3F"}
@@ -2,28 +2,61 @@
2
2
  * TypeScript AST analyzer using ts.createSourceFile() (parse-only, no type checker).
3
3
  * Extracts symbols and relations from TypeScript files syntactically.
4
4
  * ~10-100x faster than ts.createProgram() with ~95% accuracy.
5
+ *
6
+ * Uses dynamic import for the "typescript" package so the module loads
7
+ * gracefully even when typescript is not installed (e.g. production / global installs).
5
8
  */
6
- import ts from "typescript";
7
9
  import { readFileSync } from "node:fs";
8
10
  import path from "node:path";
9
11
  import { logger } from "../utils/logger.js";
12
+ // ── Lazy TypeScript loader ──────────────────────────────
13
+ let tsModule = null;
14
+ let loadAttempted = false;
15
+ async function loadTypeScript() {
16
+ if (tsModule)
17
+ return tsModule;
18
+ if (loadAttempted)
19
+ return null;
20
+ loadAttempted = true;
21
+ try {
22
+ const mod = await import("typescript");
23
+ tsModule = mod.default ?? mod;
24
+ return tsModule;
25
+ }
26
+ catch {
27
+ logger.warn("ts-analyzer:typescript-unavailable", {
28
+ message: "typescript not found — code analysis disabled",
29
+ });
30
+ return null;
31
+ }
32
+ }
33
+ /** Reset the lazy loader state (for testing purposes). */
34
+ export function resetTypeScriptLoader() {
35
+ tsModule = null;
36
+ loadAttempted = false;
37
+ }
10
38
  /**
11
39
  * Analyze a single TypeScript file syntactically.
12
40
  * Returns extracted symbols and relations with paths relative to basePath.
41
+ * Returns empty result if the typescript package is unavailable.
13
42
  */
14
- export function analyzeFile(filePath, basePath) {
15
- const content = readFileSync(filePath, "utf-8");
43
+ export async function analyzeFile(filePath, basePath) {
16
44
  const relativePath = path.relative(basePath, filePath);
17
- const sourceFile = ts.createSourceFile(relativePath, content, ts.ScriptTarget.Latest, true, // setParentNodes
18
- ts.ScriptKind.TS);
45
+ const tsLib = await loadTypeScript();
46
+ if (!tsLib) {
47
+ return { file: relativePath, symbols: [], relations: [] };
48
+ }
49
+ const content = readFileSync(filePath, "utf-8");
50
+ const sourceFile = tsLib.createSourceFile(relativePath, content, tsLib.ScriptTarget.Latest, true, // setParentNodes
51
+ tsLib.ScriptKind.TS);
19
52
  const symbols = [];
20
53
  const relations = [];
21
54
  // Track imports for call resolution: localName → { modulePath, importedName }
22
55
  const importMap = new Map();
23
56
  // First pass: collect imports
24
- collectImports(sourceFile, importMap);
57
+ collectImports(tsLib, sourceFile, importMap);
25
58
  // Second pass: extract symbols and relations
26
- visitNode(sourceFile, sourceFile, relativePath, symbols, relations, importMap, null);
59
+ visitNode(tsLib, sourceFile, sourceFile, relativePath, symbols, relations, importMap, null);
27
60
  logger.debug("ts-analyzer:file", {
28
61
  file: relativePath,
29
62
  symbols: symbols.length,
@@ -32,11 +65,11 @@ export function analyzeFile(filePath, basePath) {
32
65
  return { file: relativePath, symbols, relations };
33
66
  }
34
67
  // ── Import Collection ────────────────────────────────
35
- function collectImports(sourceFile, importMap) {
68
+ function collectImports(tsLib, sourceFile, importMap) {
36
69
  for (const stmt of sourceFile.statements) {
37
- if (!ts.isImportDeclaration(stmt))
70
+ if (!tsLib.isImportDeclaration(stmt))
38
71
  continue;
39
- if (!stmt.moduleSpecifier || !ts.isStringLiteral(stmt.moduleSpecifier))
72
+ if (!stmt.moduleSpecifier || !tsLib.isStringLiteral(stmt.moduleSpecifier))
40
73
  continue;
41
74
  const modulePath = stmt.moduleSpecifier.text;
42
75
  const clause = stmt.importClause;
@@ -47,7 +80,7 @@ function collectImports(sourceFile, importMap) {
47
80
  importMap.set(clause.name.text, { modulePath, importedName: "default" });
48
81
  }
49
82
  // Named imports: import { a, b as c } from '...'
50
- if (clause.namedBindings && ts.isNamedImports(clause.namedBindings)) {
83
+ if (clause.namedBindings && tsLib.isNamedImports(clause.namedBindings)) {
51
84
  for (const specifier of clause.namedBindings.elements) {
52
85
  const localName = specifier.name.text;
53
86
  const importedName = specifier.propertyName?.text ?? localName;
@@ -55,49 +88,49 @@ function collectImports(sourceFile, importMap) {
55
88
  }
56
89
  }
57
90
  // Namespace import: import * as ns from '...'
58
- if (clause.namedBindings && ts.isNamespaceImport(clause.namedBindings)) {
91
+ if (clause.namedBindings && tsLib.isNamespaceImport(clause.namedBindings)) {
59
92
  importMap.set(clause.namedBindings.name.text, { modulePath, importedName: "*" });
60
93
  }
61
94
  }
62
95
  }
63
96
  // ── AST Visitor ──────────────────────────────────────
64
- function visitNode(node, sourceFile, file, symbols, relations, importMap, currentClass) {
97
+ function visitNode(tsLib, node, sourceFile, file, symbols, relations, importMap, currentClass) {
65
98
  // Function declarations
66
- if (ts.isFunctionDeclaration(node) && node.name) {
99
+ if (tsLib.isFunctionDeclaration(node) && node.name) {
67
100
  const name = node.name.text;
68
- const { line: startLine } = ts.getLineAndCharacterOfPosition(sourceFile, node.getStart());
69
- const { line: endLine } = ts.getLineAndCharacterOfPosition(sourceFile, node.getEnd());
101
+ const { line: startLine } = tsLib.getLineAndCharacterOfPosition(sourceFile, node.getStart());
102
+ const { line: endLine } = tsLib.getLineAndCharacterOfPosition(sourceFile, node.getEnd());
70
103
  symbols.push({
71
104
  name,
72
105
  kind: "function",
73
106
  file,
74
107
  startLine: startLine + 1,
75
108
  endLine: endLine + 1,
76
- exported: hasExportModifier(node),
77
- signature: extractSignature(node, sourceFile),
109
+ exported: hasExportModifier(tsLib, node),
110
+ signature: extractSignature(tsLib, node, sourceFile),
78
111
  });
79
112
  // Scan function body for calls
80
113
  if (node.body) {
81
- collectCalls(node.body, sourceFile, file, name, relations, importMap);
114
+ collectCalls(tsLib, node.body, sourceFile, file, name, relations, importMap);
82
115
  }
83
116
  }
84
117
  // Class declarations
85
- if (ts.isClassDeclaration(node) && node.name) {
118
+ if (tsLib.isClassDeclaration(node) && node.name) {
86
119
  const className = node.name.text;
87
- const { line: startLine } = ts.getLineAndCharacterOfPosition(sourceFile, node.getStart());
88
- const { line: endLine } = ts.getLineAndCharacterOfPosition(sourceFile, node.getEnd());
120
+ const { line: startLine } = tsLib.getLineAndCharacterOfPosition(sourceFile, node.getStart());
121
+ const { line: endLine } = tsLib.getLineAndCharacterOfPosition(sourceFile, node.getEnd());
89
122
  symbols.push({
90
123
  name: className,
91
124
  kind: "class",
92
125
  file,
93
126
  startLine: startLine + 1,
94
127
  endLine: endLine + 1,
95
- exported: hasExportModifier(node),
128
+ exported: hasExportModifier(tsLib, node),
96
129
  });
97
130
  // Heritage clauses: extends / implements
98
131
  if (node.heritageClauses) {
99
132
  for (const clause of node.heritageClauses) {
100
- const relType = clause.token === ts.SyntaxKind.ExtendsKeyword ? "extends" : "implements";
133
+ const relType = clause.token === tsLib.SyntaxKind.ExtendsKeyword ? "extends" : "implements";
101
134
  for (const typeExpr of clause.types) {
102
135
  const baseName = typeExpr.expression.getText(sourceFile);
103
136
  relations.push({
@@ -105,17 +138,17 @@ function visitNode(node, sourceFile, file, symbols, relations, importMap, curren
105
138
  toSymbol: baseName,
106
139
  type: relType,
107
140
  file,
108
- line: ts.getLineAndCharacterOfPosition(sourceFile, typeExpr.getStart()).line + 1,
141
+ line: tsLib.getLineAndCharacterOfPosition(sourceFile, typeExpr.getStart()).line + 1,
109
142
  });
110
143
  }
111
144
  }
112
145
  }
113
146
  // Visit class members
114
147
  for (const member of node.members) {
115
- if (ts.isMethodDeclaration(member) && member.name) {
148
+ if (tsLib.isMethodDeclaration(member) && member.name) {
116
149
  const methodName = member.name.getText(sourceFile);
117
- const { line: mStartLine } = ts.getLineAndCharacterOfPosition(sourceFile, member.getStart());
118
- const { line: mEndLine } = ts.getLineAndCharacterOfPosition(sourceFile, member.getEnd());
150
+ const { line: mStartLine } = tsLib.getLineAndCharacterOfPosition(sourceFile, member.getStart());
151
+ const { line: mEndLine } = tsLib.getLineAndCharacterOfPosition(sourceFile, member.getEnd());
119
152
  symbols.push({
120
153
  name: methodName,
121
154
  kind: "method",
@@ -123,7 +156,7 @@ function visitNode(node, sourceFile, file, symbols, relations, importMap, curren
123
156
  startLine: mStartLine + 1,
124
157
  endLine: mEndLine + 1,
125
158
  exported: false,
126
- signature: extractSignature(member, sourceFile),
159
+ signature: extractSignature(tsLib, member, sourceFile),
127
160
  });
128
161
  relations.push({
129
162
  fromSymbol: methodName,
@@ -134,12 +167,12 @@ function visitNode(node, sourceFile, file, symbols, relations, importMap, curren
134
167
  });
135
168
  // Scan method body for calls
136
169
  if (member.body) {
137
- collectCalls(member.body, sourceFile, file, methodName, relations, importMap);
170
+ collectCalls(tsLib, member.body, sourceFile, file, methodName, relations, importMap);
138
171
  }
139
172
  }
140
- if (ts.isConstructorDeclaration(member) && member.body) {
141
- const { line: cStartLine } = ts.getLineAndCharacterOfPosition(sourceFile, member.getStart());
142
- const { line: cEndLine } = ts.getLineAndCharacterOfPosition(sourceFile, member.getEnd());
173
+ if (tsLib.isConstructorDeclaration(member) && member.body) {
174
+ const { line: cStartLine } = tsLib.getLineAndCharacterOfPosition(sourceFile, member.getStart());
175
+ const { line: cEndLine } = tsLib.getLineAndCharacterOfPosition(sourceFile, member.getEnd());
143
176
  symbols.push({
144
177
  name: "constructor",
145
178
  kind: "method",
@@ -155,60 +188,60 @@ function visitNode(node, sourceFile, file, symbols, relations, importMap, curren
155
188
  file,
156
189
  line: cStartLine + 1,
157
190
  });
158
- collectCalls(member.body, sourceFile, file, "constructor", relations, importMap);
191
+ collectCalls(tsLib, member.body, sourceFile, file, "constructor", relations, importMap);
159
192
  }
160
193
  }
161
194
  return; // Don't recurse into class children again
162
195
  }
163
196
  // Interface declarations
164
- if (ts.isInterfaceDeclaration(node)) {
197
+ if (tsLib.isInterfaceDeclaration(node)) {
165
198
  const name = node.name.text;
166
- const { line: startLine } = ts.getLineAndCharacterOfPosition(sourceFile, node.getStart());
167
- const { line: endLine } = ts.getLineAndCharacterOfPosition(sourceFile, node.getEnd());
199
+ const { line: startLine } = tsLib.getLineAndCharacterOfPosition(sourceFile, node.getStart());
200
+ const { line: endLine } = tsLib.getLineAndCharacterOfPosition(sourceFile, node.getEnd());
168
201
  symbols.push({
169
202
  name,
170
203
  kind: "interface",
171
204
  file,
172
205
  startLine: startLine + 1,
173
206
  endLine: endLine + 1,
174
- exported: hasExportModifier(node),
207
+ exported: hasExportModifier(tsLib, node),
175
208
  });
176
209
  }
177
210
  // Type alias declarations
178
- if (ts.isTypeAliasDeclaration(node)) {
211
+ if (tsLib.isTypeAliasDeclaration(node)) {
179
212
  const name = node.name.text;
180
- const { line: startLine } = ts.getLineAndCharacterOfPosition(sourceFile, node.getStart());
181
- const { line: endLine } = ts.getLineAndCharacterOfPosition(sourceFile, node.getEnd());
213
+ const { line: startLine } = tsLib.getLineAndCharacterOfPosition(sourceFile, node.getStart());
214
+ const { line: endLine } = tsLib.getLineAndCharacterOfPosition(sourceFile, node.getEnd());
182
215
  symbols.push({
183
216
  name,
184
217
  kind: "type_alias",
185
218
  file,
186
219
  startLine: startLine + 1,
187
220
  endLine: endLine + 1,
188
- exported: hasExportModifier(node),
221
+ exported: hasExportModifier(tsLib, node),
189
222
  });
190
223
  }
191
224
  // Enum declarations
192
- if (ts.isEnumDeclaration(node)) {
225
+ if (tsLib.isEnumDeclaration(node)) {
193
226
  const name = node.name.text;
194
- const { line: startLine } = ts.getLineAndCharacterOfPosition(sourceFile, node.getStart());
195
- const { line: endLine } = ts.getLineAndCharacterOfPosition(sourceFile, node.getEnd());
227
+ const { line: startLine } = tsLib.getLineAndCharacterOfPosition(sourceFile, node.getStart());
228
+ const { line: endLine } = tsLib.getLineAndCharacterOfPosition(sourceFile, node.getEnd());
196
229
  symbols.push({
197
230
  name,
198
231
  kind: "enum",
199
232
  file,
200
233
  startLine: startLine + 1,
201
234
  endLine: endLine + 1,
202
- exported: hasExportModifier(node),
235
+ exported: hasExportModifier(tsLib, node),
203
236
  });
204
237
  }
205
238
  // Variable statements (top-level exports: export const X = ...)
206
- if (ts.isVariableStatement(node) && hasExportModifier(node)) {
239
+ if (tsLib.isVariableStatement(node) && hasExportModifier(tsLib, node)) {
207
240
  for (const decl of node.declarationList.declarations) {
208
- if (ts.isIdentifier(decl.name)) {
241
+ if (tsLib.isIdentifier(decl.name)) {
209
242
  const name = decl.name.text;
210
- const { line: startLine } = ts.getLineAndCharacterOfPosition(sourceFile, node.getStart());
211
- const { line: endLine } = ts.getLineAndCharacterOfPosition(sourceFile, node.getEnd());
243
+ const { line: startLine } = tsLib.getLineAndCharacterOfPosition(sourceFile, node.getStart());
244
+ const { line: endLine } = tsLib.getLineAndCharacterOfPosition(sourceFile, node.getEnd());
212
245
  symbols.push({
213
246
  name,
214
247
  kind: "variable",
@@ -221,12 +254,12 @@ function visitNode(node, sourceFile, file, symbols, relations, importMap, curren
221
254
  }
222
255
  }
223
256
  // Import declarations → import relations (file-level, from each imported name to the file)
224
- if (ts.isImportDeclaration(node) && node.moduleSpecifier && ts.isStringLiteral(node.moduleSpecifier)) {
257
+ if (tsLib.isImportDeclaration(node) && node.moduleSpecifier && tsLib.isStringLiteral(node.moduleSpecifier)) {
225
258
  const modulePath = node.moduleSpecifier.text;
226
259
  const clause = node.importClause;
227
260
  if (clause) {
228
- const { line } = ts.getLineAndCharacterOfPosition(sourceFile, node.getStart());
229
- if (clause.namedBindings && ts.isNamedImports(clause.namedBindings)) {
261
+ const { line } = tsLib.getLineAndCharacterOfPosition(sourceFile, node.getStart());
262
+ if (clause.namedBindings && tsLib.isNamedImports(clause.namedBindings)) {
230
263
  for (const specifier of clause.namedBindings.elements) {
231
264
  const importedName = specifier.propertyName?.text ?? specifier.name.text;
232
265
  relations.push({
@@ -252,21 +285,21 @@ function visitNode(node, sourceFile, file, symbols, relations, importMap, curren
252
285
  }
253
286
  }
254
287
  // Recurse into children (except class which is handled above)
255
- if (!ts.isClassDeclaration(node)) {
256
- ts.forEachChild(node, (child) => {
257
- visitNode(child, sourceFile, file, symbols, relations, importMap, currentClass);
288
+ if (!tsLib.isClassDeclaration(node)) {
289
+ tsLib.forEachChild(node, (child) => {
290
+ visitNode(tsLib, child, sourceFile, file, symbols, relations, importMap, currentClass);
258
291
  });
259
292
  }
260
293
  }
261
294
  // ── Call Collection ──────────────────────────────────
262
- function collectCalls(body, sourceFile, file, callerName, relations, importMap) {
295
+ function collectCalls(tsLib, body, sourceFile, file, callerName, relations, importMap) {
263
296
  const seen = new Set();
264
297
  function walk(node) {
265
- if (ts.isCallExpression(node)) {
266
- const calleeName = extractCalleeName(node.expression, sourceFile);
298
+ if (tsLib.isCallExpression(node)) {
299
+ const calleeName = extractCalleeName(tsLib, node.expression, sourceFile);
267
300
  if (calleeName && calleeName !== callerName && !seen.has(calleeName)) {
268
301
  seen.add(calleeName);
269
- const { line } = ts.getLineAndCharacterOfPosition(sourceFile, node.getStart());
302
+ const { line } = tsLib.getLineAndCharacterOfPosition(sourceFile, node.getStart());
270
303
  // Resolve through import map if available
271
304
  const importEntry = importMap.get(calleeName);
272
305
  const resolvedName = importEntry
@@ -283,11 +316,11 @@ function collectCalls(body, sourceFile, file, callerName, relations, importMap)
283
316
  });
284
317
  }
285
318
  }
286
- if (ts.isNewExpression(node)) {
287
- const calleeName = extractCalleeName(node.expression, sourceFile);
319
+ if (tsLib.isNewExpression(node)) {
320
+ const calleeName = extractCalleeName(tsLib, node.expression, sourceFile);
288
321
  if (calleeName && !seen.has(calleeName)) {
289
322
  seen.add(calleeName);
290
- const { line } = ts.getLineAndCharacterOfPosition(sourceFile, node.getStart());
323
+ const { line } = tsLib.getLineAndCharacterOfPosition(sourceFile, node.getStart());
291
324
  relations.push({
292
325
  fromSymbol: callerName,
293
326
  toSymbol: calleeName,
@@ -297,29 +330,29 @@ function collectCalls(body, sourceFile, file, callerName, relations, importMap)
297
330
  });
298
331
  }
299
332
  }
300
- ts.forEachChild(node, walk);
333
+ tsLib.forEachChild(node, walk);
301
334
  }
302
335
  walk(body);
303
336
  }
304
337
  // ── Helpers ──────────────────────────────────────────
305
- function hasExportModifier(node) {
306
- if (!ts.canHaveModifiers(node))
338
+ function hasExportModifier(tsLib, node) {
339
+ if (!tsLib.canHaveModifiers(node))
307
340
  return false;
308
- const modifiers = ts.getModifiers(node);
309
- return modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword) ?? false;
341
+ const modifiers = tsLib.getModifiers(node);
342
+ return modifiers?.some((m) => m.kind === tsLib.SyntaxKind.ExportKeyword) ?? false;
310
343
  }
311
- function extractCalleeName(expr, _sourceFile) {
344
+ function extractCalleeName(tsLib, expr, _sourceFile) {
312
345
  // Simple identifier: foo()
313
- if (ts.isIdentifier(expr)) {
346
+ if (tsLib.isIdentifier(expr)) {
314
347
  return expr.text;
315
348
  }
316
349
  // Property access: obj.method() → extract method name
317
- if (ts.isPropertyAccessExpression(expr)) {
350
+ if (tsLib.isPropertyAccessExpression(expr)) {
318
351
  return expr.name.text;
319
352
  }
320
353
  return null;
321
354
  }
322
- function extractSignature(node, sourceFile) {
355
+ function extractSignature(tsLib, node, sourceFile) {
323
356
  if (!node.parameters || node.parameters.length === 0)
324
357
  return undefined;
325
358
  const params = node.parameters
@@ -1 +1 @@
1
- {"version":3,"file":"ts-analyzer.js","sourceRoot":"","sources":["../../../src/core/code/ts-analyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ts-analyzer.js","sourceRoot":"","sources":["../../../src/core/code/ts-analyzer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ai-memory-generator.d.ts","sourceRoot":"","sources":["../../../src/core/config/ai-memory-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,YAAY,6BAA6B,CAAC;AACvD,eAAO,MAAM,UAAU,2BAA2B,CAAC;AAyInD,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA6BnE;AAED,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA6BvE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAgBhF"}
1
+ {"version":3,"file":"ai-memory-generator.d.ts","sourceRoot":"","sources":["../../../src/core/config/ai-memory-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,YAAY,6BAA6B,CAAC;AACvD,eAAO,MAAM,UAAU,2BAA2B,CAAC;AAuMnD,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAiCnE;AAED,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAoCvE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAgBhF"}
@@ -4,6 +4,18 @@
4
4
  */
5
5
  export const MARKER_START = "<!-- mcp-graph:start -->";
6
6
  export const MARKER_END = "<!-- mcp-graph:end -->";
7
+ const MANDATORY_EXECUTION_RULE = `### ⚠️ Regra de Execução OBRIGATÓRIA
8
+
9
+ **O mcp-graph é a fonte de verdade ABSOLUTA. Nenhuma implementação acontece fora do grafo.**
10
+
11
+ 1. **Node deve existir** — antes de escrever QUALQUER código, o node correspondente DEVE existir no grafo
12
+ 2. **Fluxo obrigatório** — \`next → context → [implementar com TDD] → update_status → next\` — SEM EXCEÇÕES
13
+ 3. **Epic = estrutura primeiro** — criar Epic + tasks filhas + edges ANTES de implementar
14
+ 4. **Status tracking** — \`update_status → in_progress\` ANTES de codar, \`→ done\` APÓS completar
15
+ 5. **Validação** — usar \`validate\` (action: \`ac\`) após cada task para checar critérios de aceitação
16
+ 6. **Zero trabalho não-rastreado** — se não tem node no grafo, CRIAR PRIMEIRO
17
+
18
+ > **Sem node no grafo = sem código escrito.**`;
7
19
  const TOOL_TABLE_FULL = `#### Projeto & Grafo
8
20
 
9
21
  | Tool | Quando usar |
@@ -20,9 +32,7 @@ const TOOL_TABLE_FULL = `#### Projeto & Grafo
20
32
 
21
33
  | Tool | Quando usar |
22
34
  |------|-------------|
23
- | \`add_node\` | Criar node manualmente (task, milestone, phase, epic) |
24
- | \`update_node\` | Atualizar campos de um node (title, description, AC, tags) |
25
- | \`delete_node\` | Remover node do grafo (cascata em filhos) |
35
+ | \`node\` | CRUD de nodes: action \`add\` (criar), \`update\` (atualizar), \`delete\` (remover) |
26
36
  | \`move_node\` | Mover node para outro parent |
27
37
  | \`clone_node\` | Clonar node com filhos (deep copy) |
28
38
  | \`edge\` | Criar/remover relações entre nodes (depends_on, blocks, related_to) |
@@ -61,8 +71,24 @@ const TOOL_TABLE_FULL = `#### Projeto & Grafo
61
71
 
62
72
  | Tool | Quando usar |
63
73
  |------|-------------|
64
- | \`validate_task\` | Validar com Playwright (A/B comparison, CSS selector scoping, auto-index knowledge) |
65
- | \`validate_ac\` | Validar crit\u00E9rios de aceita\u00E7\u00E3o de uma task (checklist autom\u00E1tico) |`;
74
+ | \`validate\` | Validação: action \`task\` (browser A/B com Playwright) ou \`ac\` (critérios de aceitação) |
75
+
76
+ #### Skills
77
+
78
+ | Tool | Quando usar |
79
+ |------|-------------|
80
+ | \`manage_skill\` | Gerenciar skills: action \`list\` (listar/filtrar por fase), \`enable\`/\`disable\`, CRUD de custom skills |
81
+
82
+ #### Tools Deprecated (backward compat, removidos na v7.0)
83
+
84
+ | Tool antigo | Usar no lugar |
85
+ |-------------|---------------|
86
+ | \`add_node\` | \`node\` com action:\`add\` |
87
+ | \`update_node\` | \`node\` com action:\`update\` |
88
+ | \`delete_node\` | \`node\` com action:\`delete\` |
89
+ | \`validate_task\` | \`validate\` com action:\`task\` |
90
+ | \`validate_ac\` | \`validate\` com action:\`ac\` |
91
+ | \`list_skills\` | \`manage_skill\` com action:\`list\` |`;
66
92
  const ANALYZE_MODES_SECTION = `### Modos do analyze por fase
67
93
 
68
94
  | Fase | Modo | O que verifica |
@@ -107,6 +133,39 @@ Recupera\u00E7\u00E3o: \`rag_context\` monta contexto phase-aware com budget de
107
133
  - 10% metadata de fase
108
134
 
109
135
  Manual: \`reindex_knowledge\` para rebuild completo do \u00EDndice.`;
136
+ const SKILLS_SECTION = `### Skills Built-in (40 skills)
137
+
138
+ 40 skills mapeadas \u00E0s fases do lifecycle. Use \`list_skills\` para descobrir por fase ou ver instru\u00E7\u00F5es completas.
139
+
140
+ #### Skills por fase
141
+
142
+ | Fase | Skills sugeridas |
143
+ |------|-----------------|
144
+ | ANALYZE | \`create-prd-chat-mode\`, \`business-analyst\`, \`product-manager\` |
145
+ | DESIGN | \`breakdown-epic-arch\`, \`context-architect\`, \`backend-architect\` |
146
+ | PLAN | \`breakdown-feature-prd\`, \`track-with-mcp-graph\` |
147
+ | IMPLEMENT | \`subagent-driven-development\`, \`xp-bootstrap\`, \`self-healing-awareness\` |
148
+ | VALIDATE | \`playwright-explore-website\`, \`playwright-generate-test\`, \`e2e-testing\` |
149
+ | REVIEW | \`code-reviewer\`, \`code-review-checklist\`, \`review-and-refactor\`, \`observability-engineer\` |
150
+
151
+ #### Categorias adicionais (multi-fase)
152
+
153
+ | Categoria | Skills |
154
+ |-----------|--------|
155
+ | software-design | SOLID, KISS, YAGNI, DRY, clean-architecture, composition-over-inheritance |
156
+ | security | \`owasp-web-security\`, \`auth-and-secrets\`, \`database-and-deps-security\` |
157
+ | ddd | \`domain-driven-design\` (DESIGN, PLAN) |
158
+ | testing | \`comprehensive-testing-reference\`, \`self-healing-awareness\` (IMPLEMENT, VALIDATE) |
159
+ | cost-reducer | \`cloud-infra-cost\`, \`code-level-savings\`, \`finops-services\` (DESIGN, REVIEW) |
160
+ | frontend-design | \`ui-ux-patterns\` (DESIGN, IMPLEMENT) |
161
+
162
+ #### Custom Skills
163
+
164
+ Crie skills espec\u00EDficas do projeto via \`manage_skill\` (create/enable/disable). Custom skills s\u00E3o armazenadas no grafo e aparecem junto com as built-in em \`list_skills\`.
165
+
166
+ #### Self-Healing Awareness
167
+
168
+ A skill \`self-healing-awareness\` monitora padr\u00F5es de erro recorrentes e sugere corre\u00E7\u00F5es automaticamente. Ativa nas fases IMPLEMENT e VALIDATE.`;
110
169
  const LIFECYCLE_SUMMARY = `### Lifecycle (8 fases)
111
170
 
112
171
  1. **ANALYZE** \u2014 Criar PRD, definir requisitos (\`import_prd\`, \`add_node\`)
@@ -129,6 +188,7 @@ const CLI_COMMANDS = `### Comandos essenciais
129
188
  \`\`\`bash
130
189
  npx mcp-graph stats # Estat\u00EDsticas do grafo
131
190
  npx mcp-graph list # Listar nodes
191
+ npx mcp-graph update # Atualizar configs para \u00FAltima vers\u00E3o
132
192
  npx mcp-graph doctor # Validar ambiente de execu\u00E7\u00E3o
133
193
  npx mcp-graph doctor --json # Diagn\u00F3stico em JSON estruturado
134
194
  npx mcp-graph serve --port 3000 # Dashboard visual
@@ -141,13 +201,15 @@ ${MARKER_START}
141
201
  Este projeto usa **mcp-graph** para gest\u00E3o de execu\u00E7\u00E3o via grafo persistente (SQLite).
142
202
  Dados armazenados em \`workflow-graph/graph.db\` (local, gitignored).
143
203
 
144
- ### Ferramentas MCP dispon\u00EDveis (30 tools)
204
+ ${MANDATORY_EXECUTION_RULE}
205
+
206
+ ### Ferramentas MCP dispon\u00EDveis (28 tools + 6 deprecated)
145
207
 
146
208
  ${TOOL_TABLE_FULL}
147
209
 
148
210
  ${ANALYZE_MODES_SECTION}
149
211
 
150
- ### Fluxo de trabalho recomendado
212
+ ### Fluxo de trabalho OBRIGATÓRIO
151
213
 
152
214
  \`\`\`
153
215
  next \u2192 context \u2192 [implementar com TDD] \u2192 update_status \u2192 next
@@ -157,6 +219,8 @@ ${LIFECYCLE_SUMMARY}
157
219
 
158
220
  ${KNOWLEDGE_PIPELINE_SECTION}
159
221
 
222
+ ${SKILLS_SECTION}
223
+
160
224
  ${XP_PRINCIPLES}
161
225
 
162
226
  ${CLI_COMMANDS}
@@ -184,6 +248,13 @@ Dados em \`workflow-graph/graph.db\`.
184
248
  | \`validate_task\` | Validar com Playwright (A/B, CSS scoping) |
185
249
  | \`validate_ac\` | Validar crit\u00E9rios de aceita\u00E7\u00E3o (checklist autom\u00E1tico) |
186
250
  | \`rag_context\` | Contexto RAG phase-aware (budget 60/30/10) |
251
+ | \`list_skills\` | Listar skills built-in (filtrar por fase) |
252
+ | \`manage_skill\` | Habilitar/desabilitar skills, CRUD de custom skills |
253
+
254
+ #### Skills
255
+ 40 skills built-in mapeadas ao lifecycle. Use \`list_skills\` para descobrir por fase.
256
+ Skills-chave: \`create-prd-chat-mode\` (ANALYZE), \`subagent-driven-development\` (IMPLEMENT), \`code-reviewer\` (REVIEW).
257
+ Custom skills: \`manage_skill\` (create/enable/disable).
187
258
 
188
259
  ### Fluxo: \`next \u2192 context \u2192 [TDD] \u2192 update_status \u2192 next\`
189
260