spec-gen-cli 1.0.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 (303) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1078 -0
  3. package/dist/api/analyze.d.ts +17 -0
  4. package/dist/api/analyze.d.ts.map +1 -0
  5. package/dist/api/analyze.js +109 -0
  6. package/dist/api/analyze.js.map +1 -0
  7. package/dist/api/drift.d.ts +21 -0
  8. package/dist/api/drift.d.ts.map +1 -0
  9. package/dist/api/drift.js +145 -0
  10. package/dist/api/drift.js.map +1 -0
  11. package/dist/api/generate.d.ts +18 -0
  12. package/dist/api/generate.d.ts.map +1 -0
  13. package/dist/api/generate.js +251 -0
  14. package/dist/api/generate.js.map +1 -0
  15. package/dist/api/index.d.ts +39 -0
  16. package/dist/api/index.d.ts.map +1 -0
  17. package/dist/api/index.js +32 -0
  18. package/dist/api/index.js.map +1 -0
  19. package/dist/api/init.d.ts +18 -0
  20. package/dist/api/init.d.ts.map +1 -0
  21. package/dist/api/init.js +82 -0
  22. package/dist/api/init.js.map +1 -0
  23. package/dist/api/run.d.ts +19 -0
  24. package/dist/api/run.d.ts.map +1 -0
  25. package/dist/api/run.js +291 -0
  26. package/dist/api/run.js.map +1 -0
  27. package/dist/api/specs.d.ts +49 -0
  28. package/dist/api/specs.d.ts.map +1 -0
  29. package/dist/api/specs.js +136 -0
  30. package/dist/api/specs.js.map +1 -0
  31. package/dist/api/types.d.ts +176 -0
  32. package/dist/api/types.d.ts.map +1 -0
  33. package/dist/api/types.js +9 -0
  34. package/dist/api/types.js.map +1 -0
  35. package/dist/api/verify.d.ts +20 -0
  36. package/dist/api/verify.d.ts.map +1 -0
  37. package/dist/api/verify.js +117 -0
  38. package/dist/api/verify.js.map +1 -0
  39. package/dist/cli/commands/analyze.d.ts +27 -0
  40. package/dist/cli/commands/analyze.d.ts.map +1 -0
  41. package/dist/cli/commands/analyze.js +485 -0
  42. package/dist/cli/commands/analyze.js.map +1 -0
  43. package/dist/cli/commands/drift.d.ts +9 -0
  44. package/dist/cli/commands/drift.d.ts.map +1 -0
  45. package/dist/cli/commands/drift.js +540 -0
  46. package/dist/cli/commands/drift.js.map +1 -0
  47. package/dist/cli/commands/generate.d.ts +9 -0
  48. package/dist/cli/commands/generate.d.ts.map +1 -0
  49. package/dist/cli/commands/generate.js +633 -0
  50. package/dist/cli/commands/generate.js.map +1 -0
  51. package/dist/cli/commands/init.d.ts +9 -0
  52. package/dist/cli/commands/init.d.ts.map +1 -0
  53. package/dist/cli/commands/init.js +171 -0
  54. package/dist/cli/commands/init.js.map +1 -0
  55. package/dist/cli/commands/mcp.d.ts +638 -0
  56. package/dist/cli/commands/mcp.d.ts.map +1 -0
  57. package/dist/cli/commands/mcp.js +574 -0
  58. package/dist/cli/commands/mcp.js.map +1 -0
  59. package/dist/cli/commands/run.d.ts +24 -0
  60. package/dist/cli/commands/run.d.ts.map +1 -0
  61. package/dist/cli/commands/run.js +546 -0
  62. package/dist/cli/commands/run.js.map +1 -0
  63. package/dist/cli/commands/verify.d.ts +9 -0
  64. package/dist/cli/commands/verify.d.ts.map +1 -0
  65. package/dist/cli/commands/verify.js +417 -0
  66. package/dist/cli/commands/verify.js.map +1 -0
  67. package/dist/cli/commands/view.d.ts +9 -0
  68. package/dist/cli/commands/view.d.ts.map +1 -0
  69. package/dist/cli/commands/view.js +511 -0
  70. package/dist/cli/commands/view.js.map +1 -0
  71. package/dist/cli/index.d.ts +9 -0
  72. package/dist/cli/index.d.ts.map +1 -0
  73. package/dist/cli/index.js +83 -0
  74. package/dist/cli/index.js.map +1 -0
  75. package/dist/core/analyzer/architecture-writer.d.ts +67 -0
  76. package/dist/core/analyzer/architecture-writer.d.ts.map +1 -0
  77. package/dist/core/analyzer/architecture-writer.js +209 -0
  78. package/dist/core/analyzer/architecture-writer.js.map +1 -0
  79. package/dist/core/analyzer/artifact-generator.d.ts +222 -0
  80. package/dist/core/analyzer/artifact-generator.d.ts.map +1 -0
  81. package/dist/core/analyzer/artifact-generator.js +726 -0
  82. package/dist/core/analyzer/artifact-generator.js.map +1 -0
  83. package/dist/core/analyzer/call-graph.d.ts +83 -0
  84. package/dist/core/analyzer/call-graph.d.ts.map +1 -0
  85. package/dist/core/analyzer/call-graph.js +827 -0
  86. package/dist/core/analyzer/call-graph.js.map +1 -0
  87. package/dist/core/analyzer/code-shaper.d.ts +33 -0
  88. package/dist/core/analyzer/code-shaper.d.ts.map +1 -0
  89. package/dist/core/analyzer/code-shaper.js +149 -0
  90. package/dist/core/analyzer/code-shaper.js.map +1 -0
  91. package/dist/core/analyzer/dependency-graph.d.ts +179 -0
  92. package/dist/core/analyzer/dependency-graph.d.ts.map +1 -0
  93. package/dist/core/analyzer/dependency-graph.js +574 -0
  94. package/dist/core/analyzer/dependency-graph.js.map +1 -0
  95. package/dist/core/analyzer/duplicate-detector.d.ts +52 -0
  96. package/dist/core/analyzer/duplicate-detector.d.ts.map +1 -0
  97. package/dist/core/analyzer/duplicate-detector.js +279 -0
  98. package/dist/core/analyzer/duplicate-detector.js.map +1 -0
  99. package/dist/core/analyzer/embedding-service.d.ts +50 -0
  100. package/dist/core/analyzer/embedding-service.d.ts.map +1 -0
  101. package/dist/core/analyzer/embedding-service.js +104 -0
  102. package/dist/core/analyzer/embedding-service.js.map +1 -0
  103. package/dist/core/analyzer/file-walker.d.ts +78 -0
  104. package/dist/core/analyzer/file-walker.d.ts.map +1 -0
  105. package/dist/core/analyzer/file-walker.js +531 -0
  106. package/dist/core/analyzer/file-walker.js.map +1 -0
  107. package/dist/core/analyzer/import-parser.d.ts +91 -0
  108. package/dist/core/analyzer/import-parser.d.ts.map +1 -0
  109. package/dist/core/analyzer/import-parser.js +720 -0
  110. package/dist/core/analyzer/import-parser.js.map +1 -0
  111. package/dist/core/analyzer/index.d.ts +10 -0
  112. package/dist/core/analyzer/index.d.ts.map +1 -0
  113. package/dist/core/analyzer/index.js +10 -0
  114. package/dist/core/analyzer/index.js.map +1 -0
  115. package/dist/core/analyzer/refactor-analyzer.d.ts +80 -0
  116. package/dist/core/analyzer/refactor-analyzer.d.ts.map +1 -0
  117. package/dist/core/analyzer/refactor-analyzer.js +339 -0
  118. package/dist/core/analyzer/refactor-analyzer.js.map +1 -0
  119. package/dist/core/analyzer/repository-mapper.d.ts +150 -0
  120. package/dist/core/analyzer/repository-mapper.d.ts.map +1 -0
  121. package/dist/core/analyzer/repository-mapper.js +731 -0
  122. package/dist/core/analyzer/repository-mapper.js.map +1 -0
  123. package/dist/core/analyzer/signature-extractor.d.ts +31 -0
  124. package/dist/core/analyzer/signature-extractor.d.ts.map +1 -0
  125. package/dist/core/analyzer/signature-extractor.js +387 -0
  126. package/dist/core/analyzer/signature-extractor.js.map +1 -0
  127. package/dist/core/analyzer/significance-scorer.d.ts +79 -0
  128. package/dist/core/analyzer/significance-scorer.d.ts.map +1 -0
  129. package/dist/core/analyzer/significance-scorer.js +407 -0
  130. package/dist/core/analyzer/significance-scorer.js.map +1 -0
  131. package/dist/core/analyzer/subgraph-extractor.d.ts +43 -0
  132. package/dist/core/analyzer/subgraph-extractor.d.ts.map +1 -0
  133. package/dist/core/analyzer/subgraph-extractor.js +129 -0
  134. package/dist/core/analyzer/subgraph-extractor.js.map +1 -0
  135. package/dist/core/analyzer/vector-index.d.ts +63 -0
  136. package/dist/core/analyzer/vector-index.d.ts.map +1 -0
  137. package/dist/core/analyzer/vector-index.js +169 -0
  138. package/dist/core/analyzer/vector-index.js.map +1 -0
  139. package/dist/core/drift/drift-detector.d.ts +102 -0
  140. package/dist/core/drift/drift-detector.d.ts.map +1 -0
  141. package/dist/core/drift/drift-detector.js +597 -0
  142. package/dist/core/drift/drift-detector.js.map +1 -0
  143. package/dist/core/drift/git-diff.d.ts +55 -0
  144. package/dist/core/drift/git-diff.d.ts.map +1 -0
  145. package/dist/core/drift/git-diff.js +356 -0
  146. package/dist/core/drift/git-diff.js.map +1 -0
  147. package/dist/core/drift/index.d.ts +12 -0
  148. package/dist/core/drift/index.d.ts.map +1 -0
  149. package/dist/core/drift/index.js +9 -0
  150. package/dist/core/drift/index.js.map +1 -0
  151. package/dist/core/drift/spec-mapper.d.ts +73 -0
  152. package/dist/core/drift/spec-mapper.d.ts.map +1 -0
  153. package/dist/core/drift/spec-mapper.js +353 -0
  154. package/dist/core/drift/spec-mapper.js.map +1 -0
  155. package/dist/core/generator/adr-generator.d.ts +32 -0
  156. package/dist/core/generator/adr-generator.d.ts.map +1 -0
  157. package/dist/core/generator/adr-generator.js +192 -0
  158. package/dist/core/generator/adr-generator.js.map +1 -0
  159. package/dist/core/generator/index.d.ts +9 -0
  160. package/dist/core/generator/index.d.ts.map +1 -0
  161. package/dist/core/generator/index.js +12 -0
  162. package/dist/core/generator/index.js.map +1 -0
  163. package/dist/core/generator/mapping-generator.d.ts +54 -0
  164. package/dist/core/generator/mapping-generator.d.ts.map +1 -0
  165. package/dist/core/generator/mapping-generator.js +239 -0
  166. package/dist/core/generator/mapping-generator.js.map +1 -0
  167. package/dist/core/generator/openspec-compat.d.ts +160 -0
  168. package/dist/core/generator/openspec-compat.d.ts.map +1 -0
  169. package/dist/core/generator/openspec-compat.js +523 -0
  170. package/dist/core/generator/openspec-compat.js.map +1 -0
  171. package/dist/core/generator/openspec-format-generator.d.ts +111 -0
  172. package/dist/core/generator/openspec-format-generator.d.ts.map +1 -0
  173. package/dist/core/generator/openspec-format-generator.js +817 -0
  174. package/dist/core/generator/openspec-format-generator.js.map +1 -0
  175. package/dist/core/generator/openspec-writer.d.ts +131 -0
  176. package/dist/core/generator/openspec-writer.d.ts.map +1 -0
  177. package/dist/core/generator/openspec-writer.js +379 -0
  178. package/dist/core/generator/openspec-writer.js.map +1 -0
  179. package/dist/core/generator/prompts.d.ts +35 -0
  180. package/dist/core/generator/prompts.d.ts.map +1 -0
  181. package/dist/core/generator/prompts.js +212 -0
  182. package/dist/core/generator/prompts.js.map +1 -0
  183. package/dist/core/generator/spec-pipeline.d.ts +94 -0
  184. package/dist/core/generator/spec-pipeline.d.ts.map +1 -0
  185. package/dist/core/generator/spec-pipeline.js +474 -0
  186. package/dist/core/generator/spec-pipeline.js.map +1 -0
  187. package/dist/core/generator/stages/stage1-survey.d.ts +19 -0
  188. package/dist/core/generator/stages/stage1-survey.d.ts.map +1 -0
  189. package/dist/core/generator/stages/stage1-survey.js +105 -0
  190. package/dist/core/generator/stages/stage1-survey.js.map +1 -0
  191. package/dist/core/generator/stages/stage2-entities.d.ts +11 -0
  192. package/dist/core/generator/stages/stage2-entities.d.ts.map +1 -0
  193. package/dist/core/generator/stages/stage2-entities.js +67 -0
  194. package/dist/core/generator/stages/stage2-entities.js.map +1 -0
  195. package/dist/core/generator/stages/stage3-services.d.ts +11 -0
  196. package/dist/core/generator/stages/stage3-services.d.ts.map +1 -0
  197. package/dist/core/generator/stages/stage3-services.js +75 -0
  198. package/dist/core/generator/stages/stage3-services.js.map +1 -0
  199. package/dist/core/generator/stages/stage4-api.d.ts +11 -0
  200. package/dist/core/generator/stages/stage4-api.d.ts.map +1 -0
  201. package/dist/core/generator/stages/stage4-api.js +65 -0
  202. package/dist/core/generator/stages/stage4-api.js.map +1 -0
  203. package/dist/core/generator/stages/stage5-architecture.d.ts +10 -0
  204. package/dist/core/generator/stages/stage5-architecture.d.ts.map +1 -0
  205. package/dist/core/generator/stages/stage5-architecture.js +62 -0
  206. package/dist/core/generator/stages/stage5-architecture.js.map +1 -0
  207. package/dist/core/generator/stages/stage6-adr.d.ts +8 -0
  208. package/dist/core/generator/stages/stage6-adr.d.ts.map +1 -0
  209. package/dist/core/generator/stages/stage6-adr.js +41 -0
  210. package/dist/core/generator/stages/stage6-adr.js.map +1 -0
  211. package/dist/core/services/chat-agent.d.ts +45 -0
  212. package/dist/core/services/chat-agent.d.ts.map +1 -0
  213. package/dist/core/services/chat-agent.js +310 -0
  214. package/dist/core/services/chat-agent.js.map +1 -0
  215. package/dist/core/services/chat-tools.d.ts +32 -0
  216. package/dist/core/services/chat-tools.d.ts.map +1 -0
  217. package/dist/core/services/chat-tools.js +270 -0
  218. package/dist/core/services/chat-tools.js.map +1 -0
  219. package/dist/core/services/config-manager.d.ts +61 -0
  220. package/dist/core/services/config-manager.d.ts.map +1 -0
  221. package/dist/core/services/config-manager.js +143 -0
  222. package/dist/core/services/config-manager.js.map +1 -0
  223. package/dist/core/services/gitignore-manager.d.ts +29 -0
  224. package/dist/core/services/gitignore-manager.d.ts.map +1 -0
  225. package/dist/core/services/gitignore-manager.js +106 -0
  226. package/dist/core/services/gitignore-manager.js.map +1 -0
  227. package/dist/core/services/index.d.ts +8 -0
  228. package/dist/core/services/index.d.ts.map +1 -0
  229. package/dist/core/services/index.js +8 -0
  230. package/dist/core/services/index.js.map +1 -0
  231. package/dist/core/services/llm-service.d.ts +336 -0
  232. package/dist/core/services/llm-service.d.ts.map +1 -0
  233. package/dist/core/services/llm-service.js +1155 -0
  234. package/dist/core/services/llm-service.js.map +1 -0
  235. package/dist/core/services/mcp-handlers/analysis.d.ts +42 -0
  236. package/dist/core/services/mcp-handlers/analysis.d.ts.map +1 -0
  237. package/dist/core/services/mcp-handlers/analysis.js +300 -0
  238. package/dist/core/services/mcp-handlers/analysis.js.map +1 -0
  239. package/dist/core/services/mcp-handlers/graph.d.ts +65 -0
  240. package/dist/core/services/mcp-handlers/graph.d.ts.map +1 -0
  241. package/dist/core/services/mcp-handlers/graph.js +509 -0
  242. package/dist/core/services/mcp-handlers/graph.js.map +1 -0
  243. package/dist/core/services/mcp-handlers/semantic.d.ts +38 -0
  244. package/dist/core/services/mcp-handlers/semantic.d.ts.map +1 -0
  245. package/dist/core/services/mcp-handlers/semantic.js +172 -0
  246. package/dist/core/services/mcp-handlers/semantic.js.map +1 -0
  247. package/dist/core/services/mcp-handlers/utils.d.ts +21 -0
  248. package/dist/core/services/mcp-handlers/utils.d.ts.map +1 -0
  249. package/dist/core/services/mcp-handlers/utils.js +62 -0
  250. package/dist/core/services/mcp-handlers/utils.js.map +1 -0
  251. package/dist/core/services/project-detector.d.ts +32 -0
  252. package/dist/core/services/project-detector.d.ts.map +1 -0
  253. package/dist/core/services/project-detector.js +111 -0
  254. package/dist/core/services/project-detector.js.map +1 -0
  255. package/dist/core/verifier/index.d.ts +5 -0
  256. package/dist/core/verifier/index.d.ts.map +1 -0
  257. package/dist/core/verifier/index.js +5 -0
  258. package/dist/core/verifier/index.js.map +1 -0
  259. package/dist/core/verifier/verification-engine.d.ts +226 -0
  260. package/dist/core/verifier/verification-engine.d.ts.map +1 -0
  261. package/dist/core/verifier/verification-engine.js +681 -0
  262. package/dist/core/verifier/verification-engine.js.map +1 -0
  263. package/dist/types/index.d.ts +252 -0
  264. package/dist/types/index.d.ts.map +1 -0
  265. package/dist/types/index.js +5 -0
  266. package/dist/types/index.js.map +1 -0
  267. package/dist/types/pipeline.d.ts +148 -0
  268. package/dist/types/pipeline.d.ts.map +1 -0
  269. package/dist/types/pipeline.js +5 -0
  270. package/dist/types/pipeline.js.map +1 -0
  271. package/dist/utils/errors.d.ts +51 -0
  272. package/dist/utils/errors.d.ts.map +1 -0
  273. package/dist/utils/errors.js +128 -0
  274. package/dist/utils/errors.js.map +1 -0
  275. package/dist/utils/logger.d.ts +149 -0
  276. package/dist/utils/logger.d.ts.map +1 -0
  277. package/dist/utils/logger.js +331 -0
  278. package/dist/utils/logger.js.map +1 -0
  279. package/dist/utils/progress.d.ts +142 -0
  280. package/dist/utils/progress.d.ts.map +1 -0
  281. package/dist/utils/progress.js +280 -0
  282. package/dist/utils/progress.js.map +1 -0
  283. package/dist/utils/prompts.d.ts +53 -0
  284. package/dist/utils/prompts.d.ts.map +1 -0
  285. package/dist/utils/prompts.js +199 -0
  286. package/dist/utils/prompts.js.map +1 -0
  287. package/dist/utils/shutdown.d.ts +89 -0
  288. package/dist/utils/shutdown.d.ts.map +1 -0
  289. package/dist/utils/shutdown.js +237 -0
  290. package/dist/utils/shutdown.js.map +1 -0
  291. package/package.json +114 -0
  292. package/src/viewer/InteractiveGraphViewer.jsx +1486 -0
  293. package/src/viewer/app/index.html +17 -0
  294. package/src/viewer/app/main.jsx +13 -0
  295. package/src/viewer/components/ArchitectureView.jsx +177 -0
  296. package/src/viewer/components/ChatPanel.jsx +448 -0
  297. package/src/viewer/components/ClusterGraph.jsx +441 -0
  298. package/src/viewer/components/FilterBar.jsx +179 -0
  299. package/src/viewer/components/FlatGraph.jsx +275 -0
  300. package/src/viewer/components/MicroComponents.jsx +83 -0
  301. package/src/viewer/hooks/usePanZoom.js +79 -0
  302. package/src/viewer/utils/constants.js +47 -0
  303. package/src/viewer/utils/graph-helpers.js +291 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-parser.js","sourceRoot":"","sources":["../../../src/core/analyzer/import-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Analyzer module index
3
+ */
4
+ export * from './file-walker.js';
5
+ export * from './significance-scorer.js';
6
+ export * from './repository-mapper.js';
7
+ export * from './import-parser.js';
8
+ export * from './dependency-graph.js';
9
+ export * from './artifact-generator.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/analyzer/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Analyzer module index
3
+ */
4
+ export * from './file-walker.js';
5
+ export * from './significance-scorer.js';
6
+ export * from './repository-mapper.js';
7
+ export * from './import-parser.js';
8
+ export * from './dependency-graph.js';
9
+ export * from './artifact-generator.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/analyzer/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Refactoring Priority Analyzer
3
+ *
4
+ * Combines call graph metrics with requirement mappings to produce a
5
+ * prioritized list of refactoring candidates. Output is a flat JSON array
6
+ * suitable for consumption by a coding assistant.
7
+ *
8
+ * Metrics per function:
9
+ * fanIn — number of internal callers
10
+ * fanOut — number of internal callees
11
+ * depth — hops from nearest entry point (-1 = unreachable)
12
+ * sccSize — strongly connected component size (>1 = in a cycle)
13
+ * requirements — list of requirement names this function implements
14
+ *
15
+ * Issues detected:
16
+ * unreachable — not reachable from any entry point AND no requirements
17
+ * high_fan_in — fanIn >= HIGH_FAN_IN (likely hub utility)
18
+ * high_fan_out — fanOut >= HIGH_FAN_OUT (likely god function / orchestrator)
19
+ * multi_requirement — implements > SRP_MAX requirements (SRP violation)
20
+ * in_cycle — part of a cyclic dependency (sccSize > 1)
21
+ * in_clone_group — appears in a duplicate code clone group
22
+ */
23
+ import type { SerializedCallGraph } from './call-graph.js';
24
+ import type { DuplicateDetectionResult } from './duplicate-detector.js';
25
+ export type RefactorIssue = 'unreachable' | 'high_fan_in' | 'high_fan_out' | 'multi_requirement' | 'in_cycle' | 'in_clone_group';
26
+ export interface RefactorEntry {
27
+ function: string;
28
+ file: string;
29
+ className?: string;
30
+ fanIn: number;
31
+ fanOut: number;
32
+ /** Hops from nearest entry point. -1 = unreachable */
33
+ depth: number;
34
+ /** SCC size. 1 = no cycle. >1 = part of a cycle */
35
+ sccSize: number;
36
+ /** Requirement names this function is mapped to */
37
+ requirements: string[];
38
+ issues: RefactorIssue[];
39
+ /** Composite priority score for sorting (higher = more urgent) */
40
+ priorityScore: number;
41
+ }
42
+ export interface CycleSummary {
43
+ sccId: number;
44
+ size: number;
45
+ participants: Array<{
46
+ function: string;
47
+ file: string;
48
+ }>;
49
+ }
50
+ export interface RefactorReport {
51
+ generatedAt: string;
52
+ stats: {
53
+ totalFunctions: number;
54
+ withIssues: number;
55
+ unreachable: number;
56
+ highFanIn: number;
57
+ highFanOut: number;
58
+ srpViolations: number;
59
+ cycleParticipants: number;
60
+ cyclesDetected: number;
61
+ };
62
+ /** Functions with at least one issue, sorted by priorityScore descending */
63
+ priorities: RefactorEntry[];
64
+ cycles: CycleSummary[];
65
+ }
66
+ export interface MappingEntry {
67
+ requirement: string;
68
+ functions: Array<{
69
+ name: string;
70
+ file: string;
71
+ }>;
72
+ }
73
+ /**
74
+ * Analyze a call graph for refactoring priorities.
75
+ *
76
+ * @param callGraph Serialized call graph from the analyzer
77
+ * @param mappings Optional: requirement mappings from mapping.json
78
+ */
79
+ export declare function analyzeForRefactoring(callGraph: SerializedCallGraph, mappings?: MappingEntry[], duplicates?: DuplicateDetectionResult): RefactorReport;
80
+ //# sourceMappingURL=refactor-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refactor-analyzer.d.ts","sourceRoot":"","sources":["../../../src/core/analyzer/refactor-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAgB,MAAM,iBAAiB,CAAC;AACzE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAoCxE,MAAM,MAAM,aAAa,GACrB,aAAa,GACb,aAAa,GACb,cAAc,GACd,mBAAmB,GACnB,UAAU,GACV,gBAAgB,CAAC;AAErB,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,kEAAkE;IAClE,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE;QACL,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,4EAA4E;IAC5E,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD;AAkJD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,mBAAmB,EAC9B,QAAQ,CAAC,EAAE,YAAY,EAAE,EACzB,UAAU,CAAC,EAAE,wBAAwB,GACpC,cAAc,CAsJhB"}
@@ -0,0 +1,339 @@
1
+ /**
2
+ * Refactoring Priority Analyzer
3
+ *
4
+ * Combines call graph metrics with requirement mappings to produce a
5
+ * prioritized list of refactoring candidates. Output is a flat JSON array
6
+ * suitable for consumption by a coding assistant.
7
+ *
8
+ * Metrics per function:
9
+ * fanIn — number of internal callers
10
+ * fanOut — number of internal callees
11
+ * depth — hops from nearest entry point (-1 = unreachable)
12
+ * sccSize — strongly connected component size (>1 = in a cycle)
13
+ * requirements — list of requirement names this function implements
14
+ *
15
+ * Issues detected:
16
+ * unreachable — not reachable from any entry point AND no requirements
17
+ * high_fan_in — fanIn >= HIGH_FAN_IN (likely hub utility)
18
+ * high_fan_out — fanOut >= HIGH_FAN_OUT (likely god function / orchestrator)
19
+ * multi_requirement — implements > SRP_MAX requirements (SRP violation)
20
+ * in_cycle — part of a cyclic dependency (sccSize > 1)
21
+ * in_clone_group — appears in a duplicate code clone group
22
+ */
23
+ // ============================================================================
24
+ // THRESHOLDS
25
+ // ============================================================================
26
+ const HIGH_FAN_IN = 8;
27
+ const HIGH_FAN_OUT = 8;
28
+ const SRP_MAX_REQUIREMENTS = 2;
29
+ /** Minimum clone group size to flag (functions appearing in ≥ N clones) */
30
+ const MIN_CLONE_GROUP_SIZE = 2;
31
+ /**
32
+ * File path patterns for cross-cutting utility/logging modules.
33
+ * Functions in these files that are pure sinks (fanOut === 0) are designed to be
34
+ * called from everywhere — flagging them as hub overloads is noise, not signal.
35
+ */
36
+ const UTILITY_PATH_PATTERNS = [
37
+ /\/logger\.[^/]+$/i,
38
+ /\/logging\.[^/]+$/i,
39
+ /\/log\.[^/]+$/i,
40
+ /\/utils\//i,
41
+ /\/helpers\//i,
42
+ /\/common\//i,
43
+ /\/shared\//i,
44
+ ];
45
+ /** Returns true if a high-fanIn node is a cross-cutting utility sink by design. */
46
+ function isCrossCuttingHub(node) {
47
+ return node.fanOut === 0 && UTILITY_PATH_PATTERNS.some(p => p.test(node.filePath));
48
+ }
49
+ // ============================================================================
50
+ // DEPTH CALCULATION (BFS from entry points)
51
+ // ============================================================================
52
+ function computeDepths(nodes, edges) {
53
+ // Forward adjacency list
54
+ const adj = new Map();
55
+ for (const node of nodes)
56
+ adj.set(node.id, []);
57
+ for (const edge of edges) {
58
+ if (edge.calleeId) {
59
+ const list = adj.get(edge.callerId);
60
+ if (list)
61
+ list.push(edge.calleeId);
62
+ }
63
+ }
64
+ const depths = new Map();
65
+ const queue = [];
66
+ // Entry points (no internal callers) start at depth 0
67
+ for (const node of nodes) {
68
+ if (node.fanIn === 0) {
69
+ depths.set(node.id, 0);
70
+ queue.push(node.id);
71
+ }
72
+ }
73
+ // BFS
74
+ let head = 0;
75
+ while (head < queue.length) {
76
+ const id = queue[head++];
77
+ const d = depths.get(id);
78
+ for (const calleeId of adj.get(id) ?? []) {
79
+ if (!depths.has(calleeId)) {
80
+ depths.set(calleeId, d + 1);
81
+ queue.push(calleeId);
82
+ }
83
+ }
84
+ }
85
+ // Unreachable nodes get depth -1
86
+ for (const node of nodes) {
87
+ if (!depths.has(node.id)) {
88
+ depths.set(node.id, -1);
89
+ }
90
+ }
91
+ return depths;
92
+ }
93
+ // ============================================================================
94
+ // SCC — TARJAN'S ALGORITHM (iterative to avoid stack overflow)
95
+ // ============================================================================
96
+ function computeSCCs(nodes, edges) {
97
+ const adj = new Map();
98
+ for (const node of nodes)
99
+ adj.set(node.id, []);
100
+ for (const edge of edges) {
101
+ if (edge.calleeId) {
102
+ const list = adj.get(edge.callerId);
103
+ if (list)
104
+ list.push(edge.calleeId);
105
+ }
106
+ }
107
+ const sccMap = new Map(); // nodeId → sccId
108
+ const indexMap = new Map();
109
+ const lowlink = new Map();
110
+ const onStack = new Set();
111
+ const stack = [];
112
+ let counter = 0;
113
+ let sccId = 0;
114
+ // Iterative Tarjan's using explicit call stack
115
+ for (const startNode of nodes) {
116
+ if (indexMap.has(startNode.id))
117
+ continue;
118
+ // Each frame: { nodeId, neighborIndex, index }
119
+ const callStack = [
120
+ { id: startNode.id, neighborIdx: 0 },
121
+ ];
122
+ indexMap.set(startNode.id, counter);
123
+ lowlink.set(startNode.id, counter);
124
+ counter++;
125
+ stack.push(startNode.id);
126
+ onStack.add(startNode.id);
127
+ while (callStack.length > 0) {
128
+ const frame = callStack[callStack.length - 1];
129
+ const neighbors = adj.get(frame.id) ?? [];
130
+ if (frame.neighborIdx < neighbors.length) {
131
+ const w = neighbors[frame.neighborIdx++];
132
+ if (!indexMap.has(w)) {
133
+ callStack.push({ id: w, neighborIdx: 0 });
134
+ indexMap.set(w, counter);
135
+ lowlink.set(w, counter);
136
+ counter++;
137
+ stack.push(w);
138
+ onStack.add(w);
139
+ }
140
+ else if (onStack.has(w)) {
141
+ lowlink.set(frame.id, Math.min(lowlink.get(frame.id), indexMap.get(w)));
142
+ }
143
+ }
144
+ else {
145
+ // Done with this node
146
+ callStack.pop();
147
+ if (callStack.length > 0) {
148
+ const parent = callStack[callStack.length - 1];
149
+ lowlink.set(parent.id, Math.min(lowlink.get(parent.id), lowlink.get(frame.id)));
150
+ }
151
+ // If root of SCC
152
+ if (lowlink.get(frame.id) === indexMap.get(frame.id)) {
153
+ const scc = [];
154
+ let w;
155
+ do {
156
+ w = stack.pop();
157
+ onStack.delete(w);
158
+ scc.push(w);
159
+ sccMap.set(w, sccId);
160
+ } while (w !== frame.id);
161
+ sccId++;
162
+ }
163
+ }
164
+ }
165
+ }
166
+ return sccMap;
167
+ }
168
+ // ============================================================================
169
+ // MAIN ANALYZER
170
+ // ============================================================================
171
+ /**
172
+ * Analyze a call graph for refactoring priorities.
173
+ *
174
+ * @param callGraph Serialized call graph from the analyzer
175
+ * @param mappings Optional: requirement mappings from mapping.json
176
+ */
177
+ export function analyzeForRefactoring(callGraph, mappings, duplicates) {
178
+ const nodes = callGraph.nodes;
179
+ const edges = callGraph.edges;
180
+ // Build requirement reverse index: functionKey → requirement names
181
+ // Key format: "name@filePath" (partial match — file suffix match)
182
+ const reqByFn = new Map(); // functionId → requirement names
183
+ if (mappings && mappings.length > 0) {
184
+ for (const mapping of mappings) {
185
+ for (const fn of mapping.functions) {
186
+ // Match against call graph nodes
187
+ for (const node of nodes) {
188
+ const pathMatch = node.filePath === fn.file ||
189
+ node.filePath.endsWith('/' + fn.file) ||
190
+ fn.file.endsWith('/' + node.filePath) ||
191
+ fn.file === node.filePath;
192
+ if (pathMatch && node.name === fn.name) {
193
+ const existing = reqByFn.get(node.id) ?? [];
194
+ if (!existing.includes(mapping.requirement)) {
195
+ existing.push(mapping.requirement);
196
+ }
197
+ reqByFn.set(node.id, existing);
198
+ }
199
+ }
200
+ }
201
+ }
202
+ }
203
+ // Compute depths and SCCs
204
+ const depths = computeDepths(nodes, edges);
205
+ const sccMap = computeSCCs(nodes, edges);
206
+ // Compute SCC sizes
207
+ const sccSizes = new Map();
208
+ for (const sccId of sccMap.values()) {
209
+ sccSizes.set(sccId, (sccSizes.get(sccId) ?? 0) + 1);
210
+ }
211
+ // Build RefactorEntry per function
212
+ const entries = [];
213
+ for (const node of nodes) {
214
+ const requirements = reqByFn.get(node.id) ?? [];
215
+ const depth = depths.get(node.id) ?? -1;
216
+ const sccId = sccMap.get(node.id) ?? -1;
217
+ const sccSize = sccId >= 0 ? (sccSizes.get(sccId) ?? 1) : 1;
218
+ const issues = [];
219
+ if (depth === -1 && requirements.length === 0) {
220
+ issues.push('unreachable');
221
+ }
222
+ if (node.fanIn >= HIGH_FAN_IN && !isCrossCuttingHub(node)) {
223
+ issues.push('high_fan_in');
224
+ }
225
+ if (node.fanOut >= HIGH_FAN_OUT) {
226
+ issues.push('high_fan_out');
227
+ }
228
+ if (requirements.length > SRP_MAX_REQUIREMENTS) {
229
+ issues.push('multi_requirement');
230
+ }
231
+ if (sccSize > 1) {
232
+ issues.push('in_cycle');
233
+ }
234
+ // Check if this function appears in any clone group
235
+ if (duplicates && duplicates.cloneGroups.length > 0) {
236
+ const functionKey = `${node.name}@${node.filePath}`;
237
+ for (const group of duplicates.cloneGroups) {
238
+ if (group.instances.some(i => {
239
+ // Match by function name and file path (exact or partial match)
240
+ const instanceKey = `${i.functionName}@${i.file}`;
241
+ return instanceKey === functionKey ||
242
+ (i.functionName === node.name &&
243
+ (i.file === node.filePath ||
244
+ node.filePath.endsWith('/' + i.file) ||
245
+ i.file.endsWith('/' + node.filePath)));
246
+ })) {
247
+ // Only flag if clone group is significant (>= MIN_CLONE_GROUP_SIZE)
248
+ if (group.instances.length >= MIN_CLONE_GROUP_SIZE) {
249
+ issues.push('in_clone_group');
250
+ break;
251
+ }
252
+ }
253
+ }
254
+ }
255
+ const priorityScore = computePriorityScore(node, depth, sccSize, requirements.length, issues);
256
+ entries.push({
257
+ function: node.name,
258
+ file: node.filePath,
259
+ ...(node.className ? { className: node.className } : {}),
260
+ fanIn: node.fanIn,
261
+ fanOut: node.fanOut,
262
+ depth,
263
+ sccSize,
264
+ requirements,
265
+ issues,
266
+ priorityScore,
267
+ });
268
+ }
269
+ // Sort by priorityScore descending, filter to those with issues
270
+ const withIssues = entries
271
+ .filter(e => e.issues.length > 0)
272
+ .sort((a, b) => b.priorityScore - a.priorityScore);
273
+ // Build cycles summary (SCCs with size > 1)
274
+ const cycleSCCs = new Map();
275
+ for (const node of nodes) {
276
+ const sccId = sccMap.get(node.id) ?? -1;
277
+ const size = sccId >= 0 ? (sccSizes.get(sccId) ?? 1) : 1;
278
+ if (size > 1) {
279
+ if (!cycleSCCs.has(sccId)) {
280
+ cycleSCCs.set(sccId, { sccId, size, participants: [] });
281
+ }
282
+ cycleSCCs.get(sccId).participants.push({
283
+ function: node.name,
284
+ file: node.filePath,
285
+ });
286
+ }
287
+ }
288
+ const cycles = Array.from(cycleSCCs.values());
289
+ // Stats
290
+ const unreachableCount = entries.filter(e => e.issues.includes('unreachable')).length;
291
+ const highFanInCount = entries.filter(e => e.issues.includes('high_fan_in')).length;
292
+ const highFanOutCount = entries.filter(e => e.issues.includes('high_fan_out')).length;
293
+ const srpCount = entries.filter(e => e.issues.includes('multi_requirement')).length;
294
+ const cycleParticipants = entries.filter(e => e.issues.includes('in_cycle')).length;
295
+ return {
296
+ generatedAt: new Date().toISOString(),
297
+ stats: {
298
+ totalFunctions: nodes.length,
299
+ withIssues: withIssues.length,
300
+ unreachable: unreachableCount,
301
+ highFanIn: highFanInCount,
302
+ highFanOut: highFanOutCount,
303
+ srpViolations: srpCount,
304
+ cycleParticipants,
305
+ cyclesDetected: cycles.length,
306
+ },
307
+ priorities: withIssues,
308
+ cycles,
309
+ };
310
+ }
311
+ function computePriorityScore(node, depth, sccSize, reqCount, issues) {
312
+ let score = 0;
313
+ // Dead code — low urgency but worth flagging
314
+ if (issues.includes('unreachable'))
315
+ score += 1;
316
+ // High fan-in: score proportional to excess
317
+ if (node.fanIn >= HIGH_FAN_IN) {
318
+ score += 2 + Math.min(3, (node.fanIn - HIGH_FAN_IN) / HIGH_FAN_IN);
319
+ }
320
+ // High fan-out: score proportional to excess
321
+ if (node.fanOut >= HIGH_FAN_OUT) {
322
+ score += 2 + Math.min(3, (node.fanOut - HIGH_FAN_OUT) / HIGH_FAN_OUT);
323
+ }
324
+ // SRP violation: +1 per requirement above threshold
325
+ if (reqCount > SRP_MAX_REQUIREMENTS) {
326
+ score += 1.5 + (reqCount - SRP_MAX_REQUIREMENTS) * 0.5;
327
+ }
328
+ // Cycles: +2 per cycle participant
329
+ if (sccSize > 1)
330
+ score += 2;
331
+ // Clone groups: +1.5 per clone group membership
332
+ if (issues.includes('in_clone_group'))
333
+ score += 1.5;
334
+ // Depth bonus: shallower functions are more impactful to refactor
335
+ if (depth >= 0 && depth <= 2 && issues.length > 0)
336
+ score += 0.5;
337
+ return Math.round(score * 10) / 10;
338
+ }
339
+ //# sourceMappingURL=refactor-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refactor-analyzer.js","sourceRoot":"","sources":["../../../src/core/analyzer/refactor-analyzer.ts"],"names":[],"mappings":"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"}