@mcp-graph-workflow/mcp-graph 5.2.0 → 5.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (244) hide show
  1. package/dist/api/router.d.ts +0 -1
  2. package/dist/api/router.d.ts.map +1 -1
  3. package/dist/api/router.js +4 -5
  4. package/dist/api/router.js.map +1 -1
  5. package/dist/api/routes/benchmark.d.ts.map +1 -1
  6. package/dist/api/routes/benchmark.js +47 -2
  7. package/dist/api/routes/benchmark.js.map +1 -1
  8. package/dist/api/routes/code-graph.d.ts +12 -0
  9. package/dist/api/routes/code-graph.d.ts.map +1 -0
  10. package/dist/api/routes/code-graph.js +154 -0
  11. package/dist/api/routes/code-graph.js.map +1 -0
  12. package/dist/api/routes/context.d.ts.map +1 -1
  13. package/dist/api/routes/context.js +75 -0
  14. package/dist/api/routes/context.js.map +1 -1
  15. package/dist/api/routes/folder.d.ts +1 -4
  16. package/dist/api/routes/folder.d.ts.map +1 -1
  17. package/dist/api/routes/folder.js +19 -17
  18. package/dist/api/routes/folder.js.map +1 -1
  19. package/dist/api/routes/integrations.d.ts.map +1 -1
  20. package/dist/api/routes/integrations.js +60 -16
  21. package/dist/api/routes/integrations.js.map +1 -1
  22. package/dist/api/routes/knowledge.js +1 -1
  23. package/dist/api/routes/knowledge.js.map +1 -1
  24. package/dist/api/routes/skills.d.ts +2 -1
  25. package/dist/api/routes/skills.d.ts.map +1 -1
  26. package/dist/api/routes/skills.js +194 -4
  27. package/dist/api/routes/skills.js.map +1 -1
  28. package/dist/cli/commands/index-cmd.js +5 -5
  29. package/dist/cli/commands/index-cmd.js.map +1 -1
  30. package/dist/core/code/code-indexer.d.ts +20 -0
  31. package/dist/core/code/code-indexer.d.ts.map +1 -0
  32. package/dist/core/code/code-indexer.js +161 -0
  33. package/dist/core/code/code-indexer.js.map +1 -0
  34. package/dist/core/code/code-search.d.ts +16 -0
  35. package/dist/core/code/code-search.d.ts.map +1 -0
  36. package/dist/core/code/code-search.js +77 -0
  37. package/dist/core/code/code-search.js.map +1 -0
  38. package/dist/core/code/code-store.d.ts +35 -0
  39. package/dist/core/code/code-store.d.ts.map +1 -0
  40. package/dist/core/code/code-store.js +228 -0
  41. package/dist/core/code/code-store.js.map +1 -0
  42. package/dist/core/code/code-types.d.ts +209 -0
  43. package/dist/core/code/code-types.d.ts.map +1 -0
  44. package/dist/core/code/code-types.js +94 -0
  45. package/dist/core/code/code-types.js.map +1 -0
  46. package/dist/core/code/graph-traversal.d.ts +27 -0
  47. package/dist/core/code/graph-traversal.d.ts.map +1 -0
  48. package/dist/core/code/graph-traversal.js +122 -0
  49. package/dist/core/code/graph-traversal.js.map +1 -0
  50. package/dist/core/code/process-detector.d.ts +11 -0
  51. package/dist/core/code/process-detector.d.ts.map +1 -0
  52. package/dist/core/code/process-detector.js +65 -0
  53. package/dist/core/code/process-detector.js.map +1 -0
  54. package/dist/core/code/ts-analyzer.d.ts +12 -0
  55. package/dist/core/code/ts-analyzer.d.ts.map +1 -0
  56. package/dist/core/code/ts-analyzer.js +331 -0
  57. package/dist/core/code/ts-analyzer.js.map +1 -0
  58. package/dist/core/config/ai-memory-generator.d.ts.map +1 -1
  59. package/dist/core/config/ai-memory-generator.js +149 -61
  60. package/dist/core/config/ai-memory-generator.js.map +1 -1
  61. package/dist/core/config/config-loader.d.ts.map +1 -1
  62. package/dist/core/config/config-loader.js +2 -10
  63. package/dist/core/config/config-loader.js.map +1 -1
  64. package/dist/core/config/config-schema.d.ts +1 -2
  65. package/dist/core/config/config-schema.d.ts.map +1 -1
  66. package/dist/core/config/config-schema.js +2 -3
  67. package/dist/core/config/config-schema.js.map +1 -1
  68. package/dist/core/context/compact-context.d.ts +51 -0
  69. package/dist/core/context/compact-context.d.ts.map +1 -1
  70. package/dist/core/context/compact-context.js +292 -0
  71. package/dist/core/context/compact-context.js.map +1 -1
  72. package/dist/core/context/context-assembler.d.ts +1 -1
  73. package/dist/core/context/context-assembler.js +1 -1
  74. package/dist/core/doctor/doctor-checks.d.ts +1 -1
  75. package/dist/core/doctor/doctor-checks.js +21 -21
  76. package/dist/core/doctor/doctor-checks.js.map +1 -1
  77. package/dist/core/events/event-types.d.ts +18 -1
  78. package/dist/core/events/event-types.d.ts.map +1 -1
  79. package/dist/core/graph/graph-types.d.ts +1 -0
  80. package/dist/core/graph/graph-types.d.ts.map +1 -1
  81. package/dist/core/insights/bottleneck-detector.js +1 -1
  82. package/dist/core/insights/bottleneck-detector.js.map +1 -1
  83. package/dist/core/integrations/enriched-context.d.ts +10 -6
  84. package/dist/core/integrations/enriched-context.d.ts.map +1 -1
  85. package/dist/core/integrations/enriched-context.js +35 -35
  86. package/dist/core/integrations/enriched-context.js.map +1 -1
  87. package/dist/core/integrations/integration-orchestrator.js +2 -2
  88. package/dist/core/integrations/integration-orchestrator.js.map +1 -1
  89. package/dist/core/integrations/mcp-deps-installer.d.ts +1 -1
  90. package/dist/core/integrations/mcp-deps-installer.d.ts.map +1 -1
  91. package/dist/core/integrations/mcp-deps-installer.js +1 -60
  92. package/dist/core/integrations/mcp-deps-installer.js.map +1 -1
  93. package/dist/core/integrations/mcp-servers-config.d.ts +1 -1
  94. package/dist/core/integrations/mcp-servers-config.d.ts.map +1 -1
  95. package/dist/core/integrations/mcp-servers-config.js +0 -17
  96. package/dist/core/integrations/mcp-servers-config.js.map +1 -1
  97. package/dist/core/integrations/tool-status.d.ts +8 -3
  98. package/dist/core/integrations/tool-status.d.ts.map +1 -1
  99. package/dist/core/integrations/tool-status.js +38 -48
  100. package/dist/core/integrations/tool-status.js.map +1 -1
  101. package/dist/core/memory/memory-migrator.d.ts +15 -0
  102. package/dist/core/memory/memory-migrator.d.ts.map +1 -0
  103. package/dist/core/memory/memory-migrator.js +64 -0
  104. package/dist/core/memory/memory-migrator.js.map +1 -0
  105. package/dist/core/memory/memory-reader.d.ts +30 -0
  106. package/dist/core/memory/memory-reader.d.ts.map +1 -0
  107. package/dist/core/memory/memory-reader.js +106 -0
  108. package/dist/core/memory/memory-reader.js.map +1 -0
  109. package/dist/core/planner/lifecycle-phase.d.ts +1 -0
  110. package/dist/core/planner/lifecycle-phase.d.ts.map +1 -1
  111. package/dist/core/planner/lifecycle-phase.js +11 -8
  112. package/dist/core/planner/lifecycle-phase.js.map +1 -1
  113. package/dist/core/rag/memory-indexer.d.ts +16 -0
  114. package/dist/core/rag/memory-indexer.d.ts.map +1 -0
  115. package/dist/core/rag/{serena-indexer.js → memory-indexer.js} +12 -12
  116. package/dist/core/rag/memory-indexer.js.map +1 -0
  117. package/dist/core/rag/{serena-rag-query.d.ts → memory-rag-query.d.ts} +11 -9
  118. package/dist/core/rag/memory-rag-query.d.ts.map +1 -0
  119. package/dist/core/rag/{serena-rag-query.js → memory-rag-query.js} +18 -15
  120. package/dist/core/rag/memory-rag-query.js.map +1 -0
  121. package/dist/core/rag/skill-indexer.d.ts +16 -0
  122. package/dist/core/rag/skill-indexer.d.ts.map +1 -0
  123. package/dist/core/rag/skill-indexer.js +98 -0
  124. package/dist/core/rag/skill-indexer.js.map +1 -0
  125. package/dist/core/skills/built-in-skills.d.ts +26 -0
  126. package/dist/core/skills/built-in-skills.d.ts.map +1 -0
  127. package/dist/core/skills/built-in-skills.js +467 -0
  128. package/dist/core/skills/built-in-skills.js.map +1 -0
  129. package/dist/core/skills/self-healing-listener.d.ts +22 -0
  130. package/dist/core/skills/self-healing-listener.d.ts.map +1 -0
  131. package/dist/core/skills/self-healing-listener.js +102 -0
  132. package/dist/core/skills/self-healing-listener.js.map +1 -0
  133. package/dist/core/skills/skill-store.d.ts +14 -0
  134. package/dist/core/skills/skill-store.d.ts.map +1 -0
  135. package/dist/core/skills/skill-store.js +109 -0
  136. package/dist/core/skills/skill-store.js.map +1 -0
  137. package/dist/core/store/knowledge-store.d.ts +1 -1
  138. package/dist/core/store/knowledge-store.js +1 -1
  139. package/dist/core/store/migrations.d.ts.map +1 -1
  140. package/dist/core/store/migrations.js +128 -0
  141. package/dist/core/store/migrations.js.map +1 -1
  142. package/dist/core/store/path-resolver.d.ts +38 -0
  143. package/dist/core/store/path-resolver.d.ts.map +1 -0
  144. package/dist/core/store/path-resolver.js +92 -0
  145. package/dist/core/store/path-resolver.js.map +1 -0
  146. package/dist/core/store/sqlite-store.d.ts +21 -0
  147. package/dist/core/store/sqlite-store.d.ts.map +1 -1
  148. package/dist/core/store/sqlite-store.js +81 -30
  149. package/dist/core/store/sqlite-store.js.map +1 -1
  150. package/dist/core/store/tool-token-store.d.ts +39 -0
  151. package/dist/core/store/tool-token-store.d.ts.map +1 -0
  152. package/dist/core/store/tool-token-store.js +79 -0
  153. package/dist/core/store/tool-token-store.js.map +1 -0
  154. package/dist/core/utils/constants.d.ts +10 -0
  155. package/dist/core/utils/constants.d.ts.map +1 -1
  156. package/dist/core/utils/constants.js +12 -0
  157. package/dist/core/utils/constants.js.map +1 -1
  158. package/dist/mcp/app-factory.d.ts +0 -1
  159. package/dist/mcp/app-factory.d.ts.map +1 -1
  160. package/dist/mcp/app-factory.js +2 -2
  161. package/dist/mcp/app-factory.js.map +1 -1
  162. package/dist/mcp/lifecycle-wrapper.d.ts +3 -1
  163. package/dist/mcp/lifecycle-wrapper.d.ts.map +1 -1
  164. package/dist/mcp/lifecycle-wrapper.js +41 -1
  165. package/dist/mcp/lifecycle-wrapper.js.map +1 -1
  166. package/dist/mcp/server.js +19 -14
  167. package/dist/mcp/server.js.map +1 -1
  168. package/dist/mcp/tools/index.d.ts.map +1 -1
  169. package/dist/mcp/tools/index.js +6 -0
  170. package/dist/mcp/tools/index.js.map +1 -1
  171. package/dist/mcp/tools/list-skills.d.ts +7 -0
  172. package/dist/mcp/tools/list-skills.d.ts.map +1 -0
  173. package/dist/mcp/tools/list-skills.js +68 -0
  174. package/dist/mcp/tools/list-skills.js.map +1 -0
  175. package/dist/mcp/tools/manage-skill.d.ts +8 -0
  176. package/dist/mcp/tools/manage-skill.d.ts.map +1 -0
  177. package/dist/mcp/tools/manage-skill.js +149 -0
  178. package/dist/mcp/tools/manage-skill.js.map +1 -0
  179. package/dist/mcp/tools/memory.d.ts +8 -0
  180. package/dist/mcp/tools/memory.d.ts.map +1 -0
  181. package/dist/mcp/tools/memory.js +106 -0
  182. package/dist/mcp/tools/memory.js.map +1 -0
  183. package/dist/mcp/tools/reindex-knowledge.d.ts.map +1 -1
  184. package/dist/mcp/tools/reindex-knowledge.js +11 -7
  185. package/dist/mcp/tools/reindex-knowledge.js.map +1 -1
  186. package/dist/schemas/graph.schema.d.ts +2 -0
  187. package/dist/schemas/graph.schema.d.ts.map +1 -1
  188. package/dist/schemas/graph.schema.js +1 -0
  189. package/dist/schemas/graph.schema.js.map +1 -1
  190. package/dist/schemas/knowledge.schema.d.ts +4 -0
  191. package/dist/schemas/knowledge.schema.d.ts.map +1 -1
  192. package/dist/schemas/knowledge.schema.js +1 -1
  193. package/dist/schemas/knowledge.schema.js.map +1 -1
  194. package/dist/schemas/skill.schema.d.ts +57 -0
  195. package/dist/schemas/skill.schema.d.ts.map +1 -0
  196. package/dist/schemas/skill.schema.js +24 -0
  197. package/dist/schemas/skill.schema.js.map +1 -0
  198. package/dist/web/dashboard/dist/assets/benchmark-tab-BW4QxI49.js +1 -0
  199. package/dist/web/dashboard/dist/assets/constants-kpH_c6vY.js +1 -0
  200. package/dist/web/dashboard/dist/assets/context-tab-C5RAlXNW.js +1 -0
  201. package/dist/web/dashboard/dist/assets/gitnexus-tab-BnxxYl2F.js +430 -0
  202. package/dist/web/dashboard/dist/assets/graph-tab-Cv_wQ6Az.js +1 -0
  203. package/dist/web/dashboard/dist/assets/graph-utils-Ds1zJyD1.js +7 -0
  204. package/dist/web/dashboard/dist/assets/index-BAeZDWWy.js +53 -0
  205. package/dist/web/dashboard/dist/assets/index-Bic_URMs.js +17 -0
  206. package/dist/web/dashboard/dist/assets/index-DQqYFXms.css +1 -0
  207. package/dist/web/dashboard/dist/assets/insights-tab-U_ATOqPu.js +52 -0
  208. package/dist/web/dashboard/dist/assets/{logs-tab-Cxpcv_ni.js → logs-tab-B8psCXuB.js} +1 -1
  209. package/dist/web/dashboard/dist/assets/memories-tab-DcWok2by.js +1 -0
  210. package/dist/web/dashboard/dist/assets/prd-backlog-tab-CjftveTc.js +1 -0
  211. package/dist/web/dashboard/dist/assets/skills-tab-Ddp1w4vS.js +1 -0
  212. package/dist/web/dashboard/dist/index.html +2 -2
  213. package/package.json +2 -2
  214. package/dist/api/routes/gitnexus.d.ts +0 -12
  215. package/dist/api/routes/gitnexus.d.ts.map +0 -1
  216. package/dist/api/routes/gitnexus.js +0 -164
  217. package/dist/api/routes/gitnexus.js.map +0 -1
  218. package/dist/core/integrations/gitnexus-launcher.d.ts +0 -67
  219. package/dist/core/integrations/gitnexus-launcher.d.ts.map +0 -1
  220. package/dist/core/integrations/gitnexus-launcher.js +0 -268
  221. package/dist/core/integrations/gitnexus-launcher.js.map +0 -1
  222. package/dist/core/integrations/gitnexus-queries.d.ts +0 -55
  223. package/dist/core/integrations/gitnexus-queries.d.ts.map +0 -1
  224. package/dist/core/integrations/gitnexus-queries.js +0 -168
  225. package/dist/core/integrations/gitnexus-queries.js.map +0 -1
  226. package/dist/core/integrations/serena-reader.d.ts +0 -18
  227. package/dist/core/integrations/serena-reader.d.ts.map +0 -1
  228. package/dist/core/integrations/serena-reader.js +0 -68
  229. package/dist/core/integrations/serena-reader.js.map +0 -1
  230. package/dist/core/rag/serena-indexer.d.ts +0 -16
  231. package/dist/core/rag/serena-indexer.d.ts.map +0 -1
  232. package/dist/core/rag/serena-indexer.js.map +0 -1
  233. package/dist/core/rag/serena-rag-query.d.ts.map +0 -1
  234. package/dist/core/rag/serena-rag-query.js.map +0 -1
  235. package/dist/web/dashboard/dist/assets/benchmark-tab-DE6hAHVG.js +0 -1
  236. package/dist/web/dashboard/dist/assets/constants-BIEJOBya.js +0 -1
  237. package/dist/web/dashboard/dist/assets/gitnexus-tab-DsBjJHx8.js +0 -312
  238. package/dist/web/dashboard/dist/assets/graph-tab-C09DzeZ_.js +0 -1
  239. package/dist/web/dashboard/dist/assets/graph-utils-D4LFspTf.js +0 -23
  240. package/dist/web/dashboard/dist/assets/index-B2fTJ4AS.js +0 -53
  241. package/dist/web/dashboard/dist/assets/index-CkqEqKiH.css +0 -1
  242. package/dist/web/dashboard/dist/assets/insights-tab-Bm7CDckb.js +0 -1
  243. package/dist/web/dashboard/dist/assets/prd-backlog-tab-X84Rj-IB.js +0 -1
  244. package/dist/web/dashboard/dist/assets/serena-tab-BunULNvw.js +0 -1
@@ -0,0 +1,331 @@
1
+ /**
2
+ * TypeScript AST analyzer using ts.createSourceFile() (parse-only, no type checker).
3
+ * Extracts symbols and relations from TypeScript files syntactically.
4
+ * ~10-100x faster than ts.createProgram() with ~95% accuracy.
5
+ */
6
+ import ts from "typescript";
7
+ import { readFileSync } from "node:fs";
8
+ import path from "node:path";
9
+ import { logger } from "../utils/logger.js";
10
+ /**
11
+ * Analyze a single TypeScript file syntactically.
12
+ * Returns extracted symbols and relations with paths relative to basePath.
13
+ */
14
+ export function analyzeFile(filePath, basePath) {
15
+ const content = readFileSync(filePath, "utf-8");
16
+ const relativePath = path.relative(basePath, filePath);
17
+ const sourceFile = ts.createSourceFile(relativePath, content, ts.ScriptTarget.Latest, true, // setParentNodes
18
+ ts.ScriptKind.TS);
19
+ const symbols = [];
20
+ const relations = [];
21
+ // Track imports for call resolution: localName → { modulePath, importedName }
22
+ const importMap = new Map();
23
+ // First pass: collect imports
24
+ collectImports(sourceFile, importMap);
25
+ // Second pass: extract symbols and relations
26
+ visitNode(sourceFile, sourceFile, relativePath, symbols, relations, importMap, null);
27
+ logger.debug("ts-analyzer:file", {
28
+ file: relativePath,
29
+ symbols: symbols.length,
30
+ relations: relations.length,
31
+ });
32
+ return { file: relativePath, symbols, relations };
33
+ }
34
+ // ── Import Collection ────────────────────────────────
35
+ function collectImports(sourceFile, importMap) {
36
+ for (const stmt of sourceFile.statements) {
37
+ if (!ts.isImportDeclaration(stmt))
38
+ continue;
39
+ if (!stmt.moduleSpecifier || !ts.isStringLiteral(stmt.moduleSpecifier))
40
+ continue;
41
+ const modulePath = stmt.moduleSpecifier.text;
42
+ const clause = stmt.importClause;
43
+ if (!clause)
44
+ continue;
45
+ // Default import
46
+ if (clause.name) {
47
+ importMap.set(clause.name.text, { modulePath, importedName: "default" });
48
+ }
49
+ // Named imports: import { a, b as c } from '...'
50
+ if (clause.namedBindings && ts.isNamedImports(clause.namedBindings)) {
51
+ for (const specifier of clause.namedBindings.elements) {
52
+ const localName = specifier.name.text;
53
+ const importedName = specifier.propertyName?.text ?? localName;
54
+ importMap.set(localName, { modulePath, importedName });
55
+ }
56
+ }
57
+ // Namespace import: import * as ns from '...'
58
+ if (clause.namedBindings && ts.isNamespaceImport(clause.namedBindings)) {
59
+ importMap.set(clause.namedBindings.name.text, { modulePath, importedName: "*" });
60
+ }
61
+ }
62
+ }
63
+ // ── AST Visitor ──────────────────────────────────────
64
+ function visitNode(node, sourceFile, file, symbols, relations, importMap, currentClass) {
65
+ // Function declarations
66
+ if (ts.isFunctionDeclaration(node) && node.name) {
67
+ const name = node.name.text;
68
+ const { line: startLine } = ts.getLineAndCharacterOfPosition(sourceFile, node.getStart());
69
+ const { line: endLine } = ts.getLineAndCharacterOfPosition(sourceFile, node.getEnd());
70
+ symbols.push({
71
+ name,
72
+ kind: "function",
73
+ file,
74
+ startLine: startLine + 1,
75
+ endLine: endLine + 1,
76
+ exported: hasExportModifier(node),
77
+ signature: extractSignature(node, sourceFile),
78
+ });
79
+ // Scan function body for calls
80
+ if (node.body) {
81
+ collectCalls(node.body, sourceFile, file, name, relations, importMap);
82
+ }
83
+ }
84
+ // Class declarations
85
+ if (ts.isClassDeclaration(node) && node.name) {
86
+ const className = node.name.text;
87
+ const { line: startLine } = ts.getLineAndCharacterOfPosition(sourceFile, node.getStart());
88
+ const { line: endLine } = ts.getLineAndCharacterOfPosition(sourceFile, node.getEnd());
89
+ symbols.push({
90
+ name: className,
91
+ kind: "class",
92
+ file,
93
+ startLine: startLine + 1,
94
+ endLine: endLine + 1,
95
+ exported: hasExportModifier(node),
96
+ });
97
+ // Heritage clauses: extends / implements
98
+ if (node.heritageClauses) {
99
+ for (const clause of node.heritageClauses) {
100
+ const relType = clause.token === ts.SyntaxKind.ExtendsKeyword ? "extends" : "implements";
101
+ for (const typeExpr of clause.types) {
102
+ const baseName = typeExpr.expression.getText(sourceFile);
103
+ relations.push({
104
+ fromSymbol: className,
105
+ toSymbol: baseName,
106
+ type: relType,
107
+ file,
108
+ line: ts.getLineAndCharacterOfPosition(sourceFile, typeExpr.getStart()).line + 1,
109
+ });
110
+ }
111
+ }
112
+ }
113
+ // Visit class members
114
+ for (const member of node.members) {
115
+ if (ts.isMethodDeclaration(member) && member.name) {
116
+ const methodName = member.name.getText(sourceFile);
117
+ const { line: mStartLine } = ts.getLineAndCharacterOfPosition(sourceFile, member.getStart());
118
+ const { line: mEndLine } = ts.getLineAndCharacterOfPosition(sourceFile, member.getEnd());
119
+ symbols.push({
120
+ name: methodName,
121
+ kind: "method",
122
+ file,
123
+ startLine: mStartLine + 1,
124
+ endLine: mEndLine + 1,
125
+ exported: false,
126
+ signature: extractSignature(member, sourceFile),
127
+ });
128
+ relations.push({
129
+ fromSymbol: methodName,
130
+ toSymbol: className,
131
+ type: "belongs_to",
132
+ file,
133
+ line: mStartLine + 1,
134
+ });
135
+ // Scan method body for calls
136
+ if (member.body) {
137
+ collectCalls(member.body, sourceFile, file, methodName, relations, importMap);
138
+ }
139
+ }
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());
143
+ symbols.push({
144
+ name: "constructor",
145
+ kind: "method",
146
+ file,
147
+ startLine: cStartLine + 1,
148
+ endLine: cEndLine + 1,
149
+ exported: false,
150
+ });
151
+ relations.push({
152
+ fromSymbol: "constructor",
153
+ toSymbol: className,
154
+ type: "belongs_to",
155
+ file,
156
+ line: cStartLine + 1,
157
+ });
158
+ collectCalls(member.body, sourceFile, file, "constructor", relations, importMap);
159
+ }
160
+ }
161
+ return; // Don't recurse into class children again
162
+ }
163
+ // Interface declarations
164
+ if (ts.isInterfaceDeclaration(node)) {
165
+ const name = node.name.text;
166
+ const { line: startLine } = ts.getLineAndCharacterOfPosition(sourceFile, node.getStart());
167
+ const { line: endLine } = ts.getLineAndCharacterOfPosition(sourceFile, node.getEnd());
168
+ symbols.push({
169
+ name,
170
+ kind: "interface",
171
+ file,
172
+ startLine: startLine + 1,
173
+ endLine: endLine + 1,
174
+ exported: hasExportModifier(node),
175
+ });
176
+ }
177
+ // Type alias declarations
178
+ if (ts.isTypeAliasDeclaration(node)) {
179
+ const name = node.name.text;
180
+ const { line: startLine } = ts.getLineAndCharacterOfPosition(sourceFile, node.getStart());
181
+ const { line: endLine } = ts.getLineAndCharacterOfPosition(sourceFile, node.getEnd());
182
+ symbols.push({
183
+ name,
184
+ kind: "type_alias",
185
+ file,
186
+ startLine: startLine + 1,
187
+ endLine: endLine + 1,
188
+ exported: hasExportModifier(node),
189
+ });
190
+ }
191
+ // Enum declarations
192
+ if (ts.isEnumDeclaration(node)) {
193
+ const name = node.name.text;
194
+ const { line: startLine } = ts.getLineAndCharacterOfPosition(sourceFile, node.getStart());
195
+ const { line: endLine } = ts.getLineAndCharacterOfPosition(sourceFile, node.getEnd());
196
+ symbols.push({
197
+ name,
198
+ kind: "enum",
199
+ file,
200
+ startLine: startLine + 1,
201
+ endLine: endLine + 1,
202
+ exported: hasExportModifier(node),
203
+ });
204
+ }
205
+ // Variable statements (top-level exports: export const X = ...)
206
+ if (ts.isVariableStatement(node) && hasExportModifier(node)) {
207
+ for (const decl of node.declarationList.declarations) {
208
+ if (ts.isIdentifier(decl.name)) {
209
+ const name = decl.name.text;
210
+ const { line: startLine } = ts.getLineAndCharacterOfPosition(sourceFile, node.getStart());
211
+ const { line: endLine } = ts.getLineAndCharacterOfPosition(sourceFile, node.getEnd());
212
+ symbols.push({
213
+ name,
214
+ kind: "variable",
215
+ file,
216
+ startLine: startLine + 1,
217
+ endLine: endLine + 1,
218
+ exported: true,
219
+ });
220
+ }
221
+ }
222
+ }
223
+ // Import declarations → import relations (file-level, from each imported name to the file)
224
+ if (ts.isImportDeclaration(node) && node.moduleSpecifier && ts.isStringLiteral(node.moduleSpecifier)) {
225
+ const modulePath = node.moduleSpecifier.text;
226
+ const clause = node.importClause;
227
+ if (clause) {
228
+ const { line } = ts.getLineAndCharacterOfPosition(sourceFile, node.getStart());
229
+ if (clause.namedBindings && ts.isNamedImports(clause.namedBindings)) {
230
+ for (const specifier of clause.namedBindings.elements) {
231
+ const importedName = specifier.propertyName?.text ?? specifier.name.text;
232
+ relations.push({
233
+ fromSymbol: file,
234
+ toSymbol: importedName,
235
+ type: "imports",
236
+ file,
237
+ line: line + 1,
238
+ metadata: { modulePath },
239
+ });
240
+ }
241
+ }
242
+ if (clause.name) {
243
+ relations.push({
244
+ fromSymbol: file,
245
+ toSymbol: clause.name.text,
246
+ type: "imports",
247
+ file,
248
+ line: line + 1,
249
+ metadata: { modulePath },
250
+ });
251
+ }
252
+ }
253
+ }
254
+ // 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);
258
+ });
259
+ }
260
+ }
261
+ // ── Call Collection ──────────────────────────────────
262
+ function collectCalls(body, sourceFile, file, callerName, relations, importMap) {
263
+ const seen = new Set();
264
+ function walk(node) {
265
+ if (ts.isCallExpression(node)) {
266
+ const calleeName = extractCalleeName(node.expression, sourceFile);
267
+ if (calleeName && calleeName !== callerName && !seen.has(calleeName)) {
268
+ seen.add(calleeName);
269
+ const { line } = ts.getLineAndCharacterOfPosition(sourceFile, node.getStart());
270
+ // Resolve through import map if available
271
+ const importEntry = importMap.get(calleeName);
272
+ const resolvedName = importEntry
273
+ ? importEntry.importedName === "*"
274
+ ? calleeName
275
+ : importEntry.importedName
276
+ : calleeName;
277
+ relations.push({
278
+ fromSymbol: callerName,
279
+ toSymbol: resolvedName,
280
+ type: "calls",
281
+ file,
282
+ line: line + 1,
283
+ });
284
+ }
285
+ }
286
+ if (ts.isNewExpression(node)) {
287
+ const calleeName = extractCalleeName(node.expression, sourceFile);
288
+ if (calleeName && !seen.has(calleeName)) {
289
+ seen.add(calleeName);
290
+ const { line } = ts.getLineAndCharacterOfPosition(sourceFile, node.getStart());
291
+ relations.push({
292
+ fromSymbol: callerName,
293
+ toSymbol: calleeName,
294
+ type: "calls",
295
+ file,
296
+ line: line + 1,
297
+ });
298
+ }
299
+ }
300
+ ts.forEachChild(node, walk);
301
+ }
302
+ walk(body);
303
+ }
304
+ // ── Helpers ──────────────────────────────────────────
305
+ function hasExportModifier(node) {
306
+ if (!ts.canHaveModifiers(node))
307
+ return false;
308
+ const modifiers = ts.getModifiers(node);
309
+ return modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword) ?? false;
310
+ }
311
+ function extractCalleeName(expr, _sourceFile) {
312
+ // Simple identifier: foo()
313
+ if (ts.isIdentifier(expr)) {
314
+ return expr.text;
315
+ }
316
+ // Property access: obj.method() → extract method name
317
+ if (ts.isPropertyAccessExpression(expr)) {
318
+ return expr.name.text;
319
+ }
320
+ return null;
321
+ }
322
+ function extractSignature(node, sourceFile) {
323
+ if (!node.parameters || node.parameters.length === 0)
324
+ return undefined;
325
+ const params = node.parameters
326
+ .map((p) => p.getText(sourceFile))
327
+ .join(", ");
328
+ const returnType = node.type ? `: ${node.type.getText(sourceFile)}` : "";
329
+ return `(${params})${returnType}`;
330
+ }
331
+ //# sourceMappingURL=ts-analyzer.js.map
@@ -0,0 +1 @@
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;AA+CnD,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA+BnE;AAED,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA0BvE;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;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"}
@@ -4,100 +4,188 @@
4
4
  */
5
5
  export const MARKER_START = "<!-- mcp-graph:start -->";
6
6
  export const MARKER_END = "<!-- mcp-graph:end -->";
7
- const TOOL_REFERENCE = `| Tool | Quando usar |
7
+ const TOOL_TABLE_FULL = `#### Projeto & Grafo
8
+
9
+ | Tool | Quando usar |
10
+ |------|-------------|
11
+ | \`init\` | Inicializar grafo do projeto (cria DB, AI memory files, detecta MCPs) |
12
+ | \`list\` | Listar nodes do grafo (filtrar por tipo/status/parent) |
13
+ | \`show\` | Ver detalhes de um node específico (metadata, deps, knowledge) |
14
+ | \`search\` | Busca full-text no grafo (FTS5 + BM25 ranking) |
15
+ | \`export\` | Exportar grafo (JSON completo ou Mermaid diagram) |
16
+ | \`snapshot\` | Criar/restaurar snapshots do grafo (backup/rollback) |
17
+ | \`metrics\` | Estatísticas do grafo (\`stats\`) ou velocidade por sprint (\`velocity\`) |
18
+
19
+ #### Nodes & Edges
20
+
21
+ | Tool | Quando usar |
8
22
  |------|-------------|
9
- | \`init\` | Inicializar grafo do projeto |
10
- | \`import_prd\` | Importar PRD (texto/markdown) para o grafo |
11
- | \`list\` | Listar nodes do grafo (filtrar por tipo/status) |
12
- | \`show\` | Ver detalhes de um node específico |
13
- | \`next\` | Próxima task recomendada (prioridade + dependências + knowledge coverage + TDD hints) |
14
- | \`context\` | Contexto comprimido da task (token-efficient) |
15
- | \`update_status\` | Mudar status de um node (backlog→ready→in_progress→done) |
16
- | \`add_node\` | Criar node manualmente |
17
- | \`update_node\` | Atualizar campos de um node |
18
- | \`delete_node\` | Remover node do grafo |
19
- | \`edge\` | Criar/remover relações entre nodes |
20
- | \`analyze\` | Analisar grafo (qualidade, escopo, riscos, dependências, decomposição) |
21
- | \`search\` | Busca full-text no grafo (FTS5 + BM25) |
22
- | \`rag_context\` | Contexto RAG com knowledge base |
23
- | \`plan_sprint\` | Gerar relatório de planejamento de sprint |
24
- | \`metrics\` | Métricas do projeto (stats ou velocity) |
25
- | \`export\` | Exportar grafo (JSON ou Mermaid) |
26
- | \`snapshot\` | Criar/restaurar snapshots do grafo |
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) |
27
26
  | \`move_node\` | Mover node para outro parent |
28
- | \`clone_node\` | Clonar node com filhos |
29
- | \`sync_stack_docs\` | Sincronizar docs das libs do projeto |
30
- | \`reindex_knowledge\` | Reindexar knowledge store |
31
- | \`validate_task\` | Validar task com browser (Playwright) |`;
27
+ | \`clone_node\` | Clonar node com filhos (deep copy) |
28
+ | \`edge\` | Criar/remover relações entre nodes (depends_on, blocks, related_to) |
29
+ | \`update_status\` | Mudar status de um node (backlog\u2192ready\u2192in_progress\u2192done) |
30
+ | \`bulk_update_status\` | Atualizar status de m\u00FAltiplos nodes de uma vez |
31
+
32
+ #### PRD & Planejamento
33
+
34
+ | Tool | Quando usar |
35
+ |------|-------------|
36
+ | \`import_prd\` | Importar PRD \u2192 segmentar \u2192 classificar \u2192 extrair \u2192 inferir deps \u2192 criar grafo + indexar knowledge |
37
+ | \`plan_sprint\` | Gerar relat\u00F3rio de planejamento de sprint (capacity, velocity, recomenda\u00E7\u00F5es) |
38
+ | \`analyze\` | 24 modos de an\u00E1lise por fase do lifecycle (ver modos abaixo) |
39
+ | \`set_phase\` | For\u00E7ar/resetar fase do lifecycle (strict/advisory, gate checks) |
40
+
41
+ #### Contexto & RAG
42
+
43
+ | Tool | Quando usar |
44
+ |------|-------------|
45
+ | \`next\` | Pr\u00F3xima task recomendada (prioridade + deps + knowledge coverage 0-1 + TDD hints + velocity) |
46
+ | \`context\` | Contexto comprimido da task (token-efficient, ~73% redu\u00E7\u00E3o) |
47
+ | \`rag_context\` | Contexto RAG phase-aware (tiers: summary/standard/deep, budget 60/30/10) |
48
+ | \`reindex_knowledge\` | Rebuild completo do \u00EDndice de knowledge (BM25 + TF-IDF) |
49
+ | \`sync_stack_docs\` | Sincronizar docs das libs do projeto via Context7 |
50
+
51
+ #### Mem\u00F3rias do Projeto
52
+
53
+ | Tool | Quando usar |
54
+ |------|-------------|
55
+ | \`write_memory\` | Escrever mem\u00F3ria em workflow-graph/memories/{name}.md (auto-indexa no RAG) |
56
+ | \`read_memory\` | Ler conte\u00FAdo de uma mem\u00F3ria espec\u00EDfica |
57
+ | \`list_memories\` | Listar todas as mem\u00F3rias dispon\u00EDveis |
58
+ | \`delete_memory\` | Remover mem\u00F3ria do filesystem e do knowledge store |
59
+
60
+ #### Valida\u00E7\u00E3o
61
+
62
+ | Tool | Quando usar |
63
+ |------|-------------|
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) |`;
66
+ const ANALYZE_MODES_SECTION = `### Modos do analyze por fase
67
+
68
+ | Fase | Modo | O que verifica |
69
+ |------|------|----------------|
70
+ | ANALYZE | \`prd_quality\` | Qualidade do PRD (completude, user stories, AC) |
71
+ | ANALYZE | \`scope\` | Escopo do grafo (tipos, distribui\u00E7\u00E3o, cobertura) |
72
+ | ANALYZE | \`ready\` | Definition of Ready (bloqueios, depend\u00EAncias, AC) |
73
+ | ANALYZE | \`risk\` | Riscos (complexidade, deps, tamanho, AC faltantes) |
74
+ | ANALYZE | \`blockers\` | Bloqueios transitivos de um node |
75
+ | ANALYZE | \`cycles\` | Ciclos de depend\u00EAncia no grafo |
76
+ | ANALYZE | \`critical_path\` | Caminho cr\u00EDtico (sequ\u00EAncia mais longa de deps) |
77
+ | PLAN | \`decompose\` | Tasks grandes que precisam ser decompostas |
78
+ | DESIGN | \`adr\` | Valida\u00E7\u00E3o de ADRs (Architecture Decision Records) |
79
+ | DESIGN | \`traceability\` | Matriz de rastreabilidade (req \u2192 task \u2192 test) |
80
+ | DESIGN | \`coupling\` | Acoplamento entre m\u00F3dulos |
81
+ | DESIGN | \`interfaces\` | Verifica\u00E7\u00E3o de interfaces e contratos |
82
+ | DESIGN | \`tech_risk\` | Riscos t\u00E9cnicos (complexidade, stack, deps externas) |
83
+ | DESIGN | \`design_ready\` | Gate DESIGN\u2192PLAN (pr\u00E9-requisitos atendidos?) |
84
+ | IMPLEMENT | \`implement_done\` | Definition of Done (8 checks: 4 required + 4 recommended) |
85
+ | IMPLEMENT | \`tdd_check\` | Ader\u00EAncia TDD (specs sugeridos por AC) |
86
+ | IMPLEMENT | \`progress\` | Sprint burndown + velocity trend + blockers + ETA |
87
+ | VALIDATE | \`validate_ready\` | Gate IMPLEMENT\u2192VALIDATE |
88
+ | VALIDATE | \`done_integrity\` | Integridade dos nodes marcados done |
89
+ | VALIDATE | \`status_flow\` | Fluxo de status v\u00E1lido (sem pulos) |
90
+ | REVIEW | \`review_ready\` | Gate VALIDATE\u2192REVIEW |
91
+ | HANDOFF | \`handoff_ready\` | Gate REVIEW\u2192HANDOFF |
92
+ | HANDOFF | \`doc_completeness\` | Completude de documenta\u00E7\u00E3o |
93
+ | LISTENING | \`listening_ready\` | Gate HANDOFF\u2192LISTENING |
94
+ | LISTENING | \`backlog_health\` | Sa\u00FAde do backlog (distribui\u00E7\u00E3o, aging) |`;
95
+ const KNOWLEDGE_PIPELINE_SECTION = `### Pipeline de Conhecimento (Knowledge Store + RAG)
96
+
97
+ Fontes indexadas automaticamente:
98
+ - **Project memories** \u2014 ao escrever com \`write_memory\` (auto-indexa)
99
+ - **PRD imports** \u2014 ao importar com \`import_prd\`
100
+ - **Browser captures** \u2014 ao validar com \`validate_task\`
101
+ - **Stack docs** \u2014 ao sincronizar com \`sync_stack_docs\`
102
+ - **Sprint reports** \u2014 ao gerar com \`plan_sprint\`
103
+
104
+ Recupera\u00E7\u00E3o: \`rag_context\` monta contexto phase-aware com budget de tokens:
105
+ - 60% contexto do grafo (nodes, deps, status)
106
+ - 30% knowledge store (BM25 + TF-IDF)
107
+ - 10% metadata de fase
108
+
109
+ Manual: \`reindex_knowledge\` para rebuild completo do \u00EDndice.`;
32
110
  const LIFECYCLE_SUMMARY = `### Lifecycle (8 fases)
33
111
 
34
- 1. **ANALYZE** Criar PRD, definir requisitos (\`import_prd\`, \`add_node\`)
35
- 2. **DESIGN** Arquitetura, decisões técnicas (\`add_node\`, \`edge\`, \`analyze\`)
36
- 3. **PLAN** Sprint planning, decomposição (\`plan_sprint\`, \`analyze\`, \`sync_stack_docs\`)
37
- 4. **IMPLEMENT** TDD Red→Green→Refactor (\`next\`, \`context\`, \`update_status\`, \`analyze\` modes: implement_done, tdd_check, progress)
38
- 5. **VALIDATE** Testes E2E, critérios de aceitação (\`validate_task\`, \`metrics\`)
39
- 6. **REVIEW** Code review, blast radius (\`export\`, \`metrics\`)
40
- 7. **HANDOFF** PR, documentação, entrega (\`export\`, \`snapshot\`)
41
- 8. **LISTENING** Feedback, novo ciclo (\`add_node\`, \`import_prd\`)`;
42
- const XP_PRINCIPLES = `### Princípios XP Anti-Vibe-Coding
43
-
44
- - **TDD obrigatório** Teste antes do código. Sem teste = sem implementação.
45
- - **Anti-one-shot** Nunca gere sistemas inteiros em um prompt. Decomponha em tasks atômicas.
46
- - **Decomposição atômica** Cada task deve ser completável em ≤2h.
47
- - **Code detachment** Se a IA errou, explique o erro via prompt. Nunca edite manualmente.
48
- - **CLAUDE.md como spec evolutiva** Documente padrões e decisões aqui.`;
112
+ 1. **ANALYZE** \u2014 Criar PRD, definir requisitos (\`import_prd\`, \`add_node\`)
113
+ 2. **DESIGN** \u2014 Arquitetura, decis\u00F5es t\u00E9cnicas (\`add_node\`, \`edge\`, \`analyze\`)
114
+ 3. **PLAN** \u2014 Sprint planning, decomposi\u00E7\u00E3o (\`plan_sprint\`, \`analyze\`, \`sync_stack_docs\`)
115
+ 4. **IMPLEMENT** \u2014 TDD Red\u2192Green\u2192Refactor (\`next\`, \`context\`, \`update_status\`, \`analyze\` \u2014 modes: implement_done, tdd_check, progress)
116
+ 5. **VALIDATE** \u2014 Testes E2E, crit\u00E9rios de aceita\u00E7\u00E3o (\`validate_task\`, \`metrics\`)
117
+ 6. **REVIEW** \u2014 Code review, blast radius (\`export\`, \`metrics\`)
118
+ 7. **HANDOFF** \u2014 PR, documenta\u00E7\u00E3o, entrega (\`export\`, \`snapshot\`)
119
+ 8. **LISTENING** \u2014 Feedback, novo ciclo (\`add_node\`, \`import_prd\`)`;
120
+ const XP_PRINCIPLES = `### Princ\u00EDpios XP Anti-Vibe-Coding
121
+
122
+ - **TDD obrigat\u00F3rio** \u2014 Teste antes do c\u00F3digo. Sem teste = sem implementa\u00E7\u00E3o.
123
+ - **Anti-one-shot** \u2014 Nunca gere sistemas inteiros em um prompt. Decomponha em tasks at\u00F4micas.
124
+ - **Decomposi\u00E7\u00E3o at\u00F4mica** \u2014 Cada task deve ser complet\u00E1vel em \u22642h.
125
+ - **Code detachment** \u2014 Se a IA errou, explique o erro via prompt. Nunca edite manualmente.
126
+ - **CLAUDE.md como spec evolutiva** \u2014 Documente padr\u00F5es e decis\u00F5es aqui.`;
127
+ const CLI_COMMANDS = `### Comandos essenciais
128
+
129
+ \`\`\`bash
130
+ npx mcp-graph stats # Estat\u00EDsticas do grafo
131
+ npx mcp-graph list # Listar nodes
132
+ npx mcp-graph doctor # Validar ambiente de execu\u00E7\u00E3o
133
+ npx mcp-graph doctor --json # Diagn\u00F3stico em JSON estruturado
134
+ npx mcp-graph serve --port 3000 # Dashboard visual
135
+ \`\`\``;
49
136
  export function generateClaudeMdSection(projectName) {
50
137
  return `
51
138
  ${MARKER_START}
52
- ## mcp-graph ${projectName}
139
+ ## mcp-graph \u2014 ${projectName}
53
140
 
54
- Este projeto usa **mcp-graph** para gestão de execução via grafo persistente (SQLite).
141
+ Este projeto usa **mcp-graph** para gest\u00E3o de execu\u00E7\u00E3o via grafo persistente (SQLite).
55
142
  Dados armazenados em \`workflow-graph/graph.db\` (local, gitignored).
56
143
 
57
- ### Ferramentas MCP disponíveis (26 tools)
144
+ ### Ferramentas MCP dispon\u00EDveis (30 tools)
58
145
 
59
- ${TOOL_REFERENCE}
146
+ ${TOOL_TABLE_FULL}
147
+
148
+ ${ANALYZE_MODES_SECTION}
60
149
 
61
150
  ### Fluxo de trabalho recomendado
62
151
 
63
152
  \`\`\`
64
- next context [implementar com TDD] update_status next
153
+ next \u2192 context \u2192 [implementar com TDD] \u2192 update_status \u2192 next
65
154
  \`\`\`
66
155
 
67
156
  ${LIFECYCLE_SUMMARY}
68
157
 
69
- ${XP_PRINCIPLES}
158
+ ${KNOWLEDGE_PIPELINE_SECTION}
70
159
 
71
- ### Comandos essenciais
160
+ ${XP_PRINCIPLES}
72
161
 
73
- \`\`\`bash
74
- npx mcp-graph stats # Estatísticas do grafo
75
- npx mcp-graph list # Listar nodes
76
- npx mcp-graph serve --port 3000 # Dashboard visual
77
- \`\`\`
162
+ ${CLI_COMMANDS}
78
163
  ${MARKER_END}
79
164
  `;
80
165
  }
81
166
  export function generateCopilotInstructions(projectName) {
82
167
  return `${MARKER_START}
83
- ## mcp-graph ${projectName}
168
+ ## mcp-graph \u2014 ${projectName}
84
169
 
85
- Este projeto usa **mcp-graph** para gestão de execução via grafo persistente.
170
+ Este projeto usa **mcp-graph** para gest\u00E3o de execu\u00E7\u00E3o via grafo persistente.
86
171
  Dados em \`workflow-graph/graph.db\`.
87
172
 
88
173
  ### Ferramentas MCP (principais)
89
174
 
90
175
  | Tool | Uso |
91
176
  |------|-----|
92
- | \`next\` | Próxima task recomendada |
93
- | \`context\` | Contexto comprimido (token-efficient) |
94
- | \`update_status\` | Mudar status (backlog→ready→in_progress→done) |
95
- | \`import_prd\` | Importar PRD para o grafo |
96
- | \`plan_sprint\` | Planejamento de sprint |
97
- | \`decompose\` | Decompor tasks grandes |
98
- | \`validate_task\` | Validar com Playwright |
99
-
100
- ### Fluxo: \`next context [TDD] update_status next\`
177
+ | \`next\` | Pr\u00F3xima task recomendada (prioridade + deps + knowledge coverage + TDD hints) |
178
+ | \`context\` | Contexto comprimido (token-efficient, ~73% redu\u00E7\u00E3o) |
179
+ | \`update_status\` | Mudar status (backlog\u2192ready\u2192in_progress\u2192done) |
180
+ | \`import_prd\` | Importar PRD \u2192 segmentar \u2192 classificar \u2192 extrair \u2192 criar grafo |
181
+ | \`plan_sprint\` | Planejamento de sprint (capacity, velocity) |
182
+ | \`analyze\` | 24 modos de an\u00E1lise por fase do lifecycle |
183
+ | \`set_phase\` | For\u00E7ar/resetar fase do lifecycle (gate checks) |
184
+ | \`validate_task\` | Validar com Playwright (A/B, CSS scoping) |
185
+ | \`validate_ac\` | Validar crit\u00E9rios de aceita\u00E7\u00E3o (checklist autom\u00E1tico) |
186
+ | \`rag_context\` | Contexto RAG phase-aware (budget 60/30/10) |
187
+
188
+ ### Fluxo: \`next \u2192 context \u2192 [TDD] \u2192 update_status \u2192 next\`
101
189
 
102
190
  ${LIFECYCLE_SUMMARY}
103
191
 
@@ -1 +1 @@
1
- {"version":3,"file":"ai-memory-generator.js","sourceRoot":"","sources":["../../../src/core/config/ai-memory-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,0BAA0B,CAAC;AACvD,MAAM,CAAC,MAAM,UAAU,GAAG,wBAAwB,CAAC;AAEnD,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;8DAwBuC,CAAC;AAE/D,MAAM,iBAAiB,GAAG;;;;;;;;;uEAS6C,CAAC;AAExE,MAAM,aAAa,GAAG;;;;;;yEAMmD,CAAC;AAE1E,MAAM,UAAU,uBAAuB,CAAC,WAAmB;IACzD,OAAO;EACP,YAAY;iBACG,WAAW;;;;;;;EAO1B,cAAc;;;;;;;;EAQd,iBAAiB;;EAEjB,aAAa;;;;;;;;;EASb,UAAU;CACX,CAAC;AACF,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,WAAmB;IAC7D,OAAO,GAAG,YAAY;iBACP,WAAW;;;;;;;;;;;;;;;;;;;EAmB1B,iBAAiB;;EAEjB,aAAa;EACb,UAAU;CACX,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,eAAuB,EAAE,UAAkB;IACtE,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;IAEhD,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;QAChE,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;QAChF,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,OAAO,UAAU,GAAG,cAAc,GAAG,SAAS,CAAC;IACjD,CAAC;IAED,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACpD,OAAO,MAAM,GAAG,cAAc,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"ai-memory-generator.js","sourceRoot":"","sources":["../../../src/core/config/ai-memory-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,0BAA0B,CAAC;AACvD,MAAM,CAAC,MAAM,UAAU,GAAG,wBAAwB,CAAC;AAEnD,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4GA0DoF,CAAC;AAE7G,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;2FA4B6D,CAAC;AAE5F,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;;oEAciC,CAAC;AAErE,MAAM,iBAAiB,GAAG;;;;;;;;;4EASkD,CAAC;AAE7E,MAAM,aAAa,GAAG;;;;;;wFAMkE,CAAC;AAEzF,MAAM,YAAY,GAAG;;;;;;;;OAQd,CAAC;AAER,MAAM,UAAU,uBAAuB,CAAC,WAAmB;IACzD,OAAO;EACP,YAAY;sBACQ,WAAW;;;;;;;EAO/B,eAAe;;EAEf,qBAAqB;;;;;;;;EAQrB,iBAAiB;;EAEjB,0BAA0B;;EAE1B,aAAa;;EAEb,YAAY;EACZ,UAAU;CACX,CAAC;AACF,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,WAAmB;IAC7D,OAAO,GAAG,YAAY;sBACF,WAAW;;;;;;;;;;;;;;;;;;;;;;EAsB/B,iBAAiB;;EAEjB,aAAa;EACb,UAAU;CACX,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,eAAuB,EAAE,UAAkB;IACtE,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC;IAEhD,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;QAChE,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;QAChF,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,OAAO,UAAU,GAAG,cAAc,GAAG,SAAS,CAAC;IACjD,CAAC;IAED,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACpD,OAAO,MAAM,GAAG,cAAc,CAAC;AACjC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../../src/core/config/config-loader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKvE,wBAAgB,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,cAAc,CA6C5D"}
1
+ {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../../src/core/config/config-loader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKvE,wBAAgB,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,cAAc,CAoC5D"}
@@ -29,17 +29,9 @@ export function loadConfig(basePath) {
29
29
  fileConfig.port = envPort;
30
30
  }
31
31
  }
32
- if (process.env.GITNEXUS_PORT) {
33
- const envGitnexusPort = parseInt(process.env.GITNEXUS_PORT, 10);
34
- if (!isNaN(envGitnexusPort)) {
35
- const integrations = (fileConfig.integrations ?? {});
36
- integrations.gitnexusPort = envGitnexusPort;
37
- fileConfig.integrations = integrations;
38
- }
39
- }
40
- if (process.env.GITNEXUS_AUTO_START) {
32
+ if (process.env.CODE_GRAPH_AUTO_INDEX) {
41
33
  const integrations = (fileConfig.integrations ?? {});
42
- integrations.gitnexusAutoStart = process.env.GITNEXUS_AUTO_START !== "false";
34
+ integrations.codeGraphAutoIndex = process.env.CODE_GRAPH_AUTO_INDEX !== "false";
43
35
  fileConfig.integrations = integrations;
44
36
  }
45
37
  const config = ConfigSchema.parse(fileConfig);