mcp-adr-analysis-server 2.1.9 → 2.1.20

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 (408) hide show
  1. package/README.md +55 -8
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/src/index.d.ts +78 -2
  4. package/dist/src/index.d.ts.map +1 -1
  5. package/dist/src/index.js +1793 -577
  6. package/dist/src/index.js.map +1 -1
  7. package/dist/src/prompts/index.d.ts.map +1 -1
  8. package/dist/src/prompts/index.js +23 -6
  9. package/dist/src/prompts/index.js.map +1 -1
  10. package/dist/src/prompts/validated-pattern-prompts.d.ts +33 -0
  11. package/dist/src/prompts/validated-pattern-prompts.d.ts.map +1 -0
  12. package/dist/src/prompts/validated-pattern-prompts.js +337 -0
  13. package/dist/src/prompts/validated-pattern-prompts.js.map +1 -0
  14. package/dist/src/resources/adr-by-id-resource.d.ts +116 -0
  15. package/dist/src/resources/adr-by-id-resource.d.ts.map +1 -0
  16. package/dist/src/resources/adr-by-id-resource.js +213 -0
  17. package/dist/src/resources/adr-by-id-resource.js.map +1 -0
  18. package/dist/src/resources/code-quality-resource.d.ts +105 -0
  19. package/dist/src/resources/code-quality-resource.d.ts.map +1 -0
  20. package/dist/src/resources/code-quality-resource.js +282 -0
  21. package/dist/src/resources/code-quality-resource.js.map +1 -0
  22. package/dist/src/resources/deployment-history-resource.d.ts +214 -0
  23. package/dist/src/resources/deployment-history-resource.d.ts.map +1 -0
  24. package/dist/src/resources/deployment-history-resource.js +308 -0
  25. package/dist/src/resources/deployment-history-resource.js.map +1 -0
  26. package/dist/src/resources/deployment-status-resource.d.ts +256 -0
  27. package/dist/src/resources/deployment-status-resource.d.ts.map +1 -0
  28. package/dist/src/resources/deployment-status-resource.js +665 -0
  29. package/dist/src/resources/deployment-status-resource.js.map +1 -0
  30. package/dist/src/resources/environment-analysis-resource.d.ts +237 -0
  31. package/dist/src/resources/environment-analysis-resource.d.ts.map +1 -0
  32. package/dist/src/resources/environment-analysis-resource.js +646 -0
  33. package/dist/src/resources/environment-analysis-resource.js.map +1 -0
  34. package/dist/src/resources/index.d.ts +6 -2
  35. package/dist/src/resources/index.d.ts.map +1 -1
  36. package/dist/src/resources/index.js +247 -492
  37. package/dist/src/resources/index.js.map +1 -1
  38. package/dist/src/resources/memory-snapshots-resource.d.ts +180 -0
  39. package/dist/src/resources/memory-snapshots-resource.d.ts.map +1 -0
  40. package/dist/src/resources/memory-snapshots-resource.js +847 -0
  41. package/dist/src/resources/memory-snapshots-resource.js.map +1 -0
  42. package/dist/src/resources/pattern-base-code-by-platform-resource.d.ts +35 -0
  43. package/dist/src/resources/pattern-base-code-by-platform-resource.d.ts.map +1 -0
  44. package/dist/src/resources/pattern-base-code-by-platform-resource.js +72 -0
  45. package/dist/src/resources/pattern-base-code-by-platform-resource.js.map +1 -0
  46. package/dist/src/resources/pattern-by-name-resource.d.ts +53 -0
  47. package/dist/src/resources/pattern-by-name-resource.d.ts.map +1 -0
  48. package/dist/src/resources/pattern-by-name-resource.js +200 -0
  49. package/dist/src/resources/pattern-by-name-resource.js.map +1 -0
  50. package/dist/src/resources/pattern-sources-by-platform-resource.d.ts +26 -0
  51. package/dist/src/resources/pattern-sources-by-platform-resource.d.ts.map +1 -0
  52. package/dist/src/resources/pattern-sources-by-platform-resource.js +59 -0
  53. package/dist/src/resources/pattern-sources-by-platform-resource.js.map +1 -0
  54. package/dist/src/resources/project-metrics-resource.d.ts +180 -0
  55. package/dist/src/resources/project-metrics-resource.d.ts.map +1 -0
  56. package/dist/src/resources/project-metrics-resource.js +487 -0
  57. package/dist/src/resources/project-metrics-resource.js.map +1 -0
  58. package/dist/src/resources/project-status-resource.d.ts +75 -0
  59. package/dist/src/resources/project-status-resource.d.ts.map +1 -0
  60. package/dist/src/resources/project-status-resource.js +189 -0
  61. package/dist/src/resources/project-status-resource.js.map +1 -0
  62. package/dist/src/resources/research-by-topic-resource.d.ts +21 -0
  63. package/dist/src/resources/research-by-topic-resource.d.ts.map +1 -0
  64. package/dist/src/resources/research-by-topic-resource.js +125 -0
  65. package/dist/src/resources/research-by-topic-resource.js.map +1 -0
  66. package/dist/src/resources/research-index-resource.d.ts +100 -0
  67. package/dist/src/resources/research-index-resource.d.ts.map +1 -0
  68. package/dist/src/resources/research-index-resource.js +200 -0
  69. package/dist/src/resources/research-index-resource.js.map +1 -0
  70. package/dist/src/resources/resource-cache.d.ts +144 -0
  71. package/dist/src/resources/resource-cache.d.ts.map +1 -0
  72. package/dist/src/resources/resource-cache.js +316 -0
  73. package/dist/src/resources/resource-cache.js.map +1 -0
  74. package/dist/src/resources/resource-router.d.ts +45 -0
  75. package/dist/src/resources/resource-router.d.ts.map +1 -0
  76. package/dist/src/resources/resource-router.js +96 -0
  77. package/dist/src/resources/resource-router.js.map +1 -0
  78. package/dist/src/resources/rule-by-id-resource.d.ts +38 -0
  79. package/dist/src/resources/rule-by-id-resource.d.ts.map +1 -0
  80. package/dist/src/resources/rule-by-id-resource.js +104 -0
  81. package/dist/src/resources/rule-by-id-resource.js.map +1 -0
  82. package/dist/src/resources/rule-catalog-resource.d.ts +126 -0
  83. package/dist/src/resources/rule-catalog-resource.d.ts.map +1 -0
  84. package/dist/src/resources/rule-catalog-resource.js +224 -0
  85. package/dist/src/resources/rule-catalog-resource.js.map +1 -0
  86. package/dist/src/resources/rule-generation-resource.d.ts +80 -0
  87. package/dist/src/resources/rule-generation-resource.d.ts.map +1 -0
  88. package/dist/src/resources/rule-generation-resource.js +282 -0
  89. package/dist/src/resources/rule-generation-resource.js.map +1 -0
  90. package/dist/src/resources/technology-by-name-resource.d.ts +43 -0
  91. package/dist/src/resources/technology-by-name-resource.d.ts.map +1 -0
  92. package/dist/src/resources/technology-by-name-resource.js +176 -0
  93. package/dist/src/resources/technology-by-name-resource.js.map +1 -0
  94. package/dist/src/resources/todo-by-id-resource.d.ts +46 -0
  95. package/dist/src/resources/todo-by-id-resource.d.ts.map +1 -0
  96. package/dist/src/resources/todo-by-id-resource.js +192 -0
  97. package/dist/src/resources/todo-by-id-resource.js.map +1 -0
  98. package/dist/src/resources/todo-list-resource.d.ts +96 -0
  99. package/dist/src/resources/todo-list-resource.d.ts.map +1 -0
  100. package/dist/src/resources/todo-list-resource.js +209 -0
  101. package/dist/src/resources/todo-list-resource.js.map +1 -0
  102. package/dist/src/resources/validated-pattern-by-platform-resource.d.ts +14 -0
  103. package/dist/src/resources/validated-pattern-by-platform-resource.d.ts.map +1 -0
  104. package/dist/src/resources/validated-pattern-by-platform-resource.js +45 -0
  105. package/dist/src/resources/validated-pattern-by-platform-resource.js.map +1 -0
  106. package/dist/src/resources/validated-patterns-catalog-resource.d.ts +36 -0
  107. package/dist/src/resources/validated-patterns-catalog-resource.d.ts.map +1 -0
  108. package/dist/src/resources/validated-patterns-catalog-resource.js +57 -0
  109. package/dist/src/resources/validated-patterns-catalog-resource.js.map +1 -0
  110. package/dist/src/templates/domain-knowledge-templates.d.ts.map +1 -1
  111. package/dist/src/templates/domain-knowledge-templates.js +49 -49
  112. package/dist/src/templates/domain-knowledge-templates.js.map +1 -1
  113. package/dist/src/tools/adr-bootstrap-validation-tool.d.ts.map +1 -1
  114. package/dist/src/tools/adr-bootstrap-validation-tool.js +214 -4
  115. package/dist/src/tools/adr-bootstrap-validation-tool.js.map +1 -1
  116. package/dist/src/tools/adr-suggestion-tool.d.ts +2 -2
  117. package/dist/src/tools/adr-suggestion-tool.d.ts.map +1 -1
  118. package/dist/src/tools/adr-suggestion-tool.js +129 -12
  119. package/dist/src/tools/adr-suggestion-tool.js.map +1 -1
  120. package/dist/src/tools/adr-validation-tool.d.ts +98 -0
  121. package/dist/src/tools/adr-validation-tool.d.ts.map +1 -0
  122. package/dist/src/tools/adr-validation-tool.js +372 -0
  123. package/dist/src/tools/adr-validation-tool.js.map +1 -0
  124. package/dist/src/tools/bootstrap-validation-loop-tool.d.ts +262 -0
  125. package/dist/src/tools/bootstrap-validation-loop-tool.d.ts.map +1 -0
  126. package/dist/src/tools/bootstrap-validation-loop-tool.js +1934 -0
  127. package/dist/src/tools/bootstrap-validation-loop-tool.js.map +1 -0
  128. package/dist/src/tools/conversation-memory-tool.d.ts +48 -0
  129. package/dist/src/tools/conversation-memory-tool.d.ts.map +1 -0
  130. package/dist/src/tools/conversation-memory-tool.js +254 -0
  131. package/dist/src/tools/conversation-memory-tool.js.map +1 -0
  132. package/dist/src/tools/deployment-analysis-tool.d.ts.map +1 -1
  133. package/dist/src/tools/deployment-analysis-tool.js +82 -6
  134. package/dist/src/tools/deployment-analysis-tool.js.map +1 -1
  135. package/dist/src/tools/deployment-guidance-tool.d.ts.map +1 -1
  136. package/dist/src/tools/deployment-guidance-tool.js +126 -25
  137. package/dist/src/tools/deployment-guidance-tool.js.map +1 -1
  138. package/dist/src/tools/deployment-readiness-tool.d.ts.map +1 -1
  139. package/dist/src/tools/deployment-readiness-tool.js +166 -5
  140. package/dist/src/tools/deployment-readiness-tool.js.map +1 -1
  141. package/dist/src/tools/environment-analysis-tool.d.ts.map +1 -1
  142. package/dist/src/tools/environment-analysis-tool.js +36 -1
  143. package/dist/src/tools/environment-analysis-tool.js.map +1 -1
  144. package/dist/src/tools/expand-analysis-tool.d.ts +23 -0
  145. package/dist/src/tools/expand-analysis-tool.d.ts.map +1 -0
  146. package/dist/src/tools/expand-analysis-tool.js +107 -0
  147. package/dist/src/tools/expand-analysis-tool.js.map +1 -0
  148. package/dist/src/tools/get-server-context-tool.d.ts +67 -0
  149. package/dist/src/tools/get-server-context-tool.d.ts.map +1 -0
  150. package/dist/src/tools/get-server-context-tool.js +75 -0
  151. package/dist/src/tools/get-server-context-tool.js.map +1 -0
  152. package/dist/src/tools/interactive-adr-planning-tool.d.ts.map +1 -1
  153. package/dist/src/tools/interactive-adr-planning-tool.js +82 -9
  154. package/dist/src/tools/interactive-adr-planning-tool.js.map +1 -1
  155. package/dist/src/tools/llm-cloud-management-tool.d.ts +62 -0
  156. package/dist/src/tools/llm-cloud-management-tool.d.ts.map +1 -0
  157. package/dist/src/tools/llm-cloud-management-tool.js +202 -0
  158. package/dist/src/tools/llm-cloud-management-tool.js.map +1 -0
  159. package/dist/src/tools/llm-database-management-tool.d.ts +62 -0
  160. package/dist/src/tools/llm-database-management-tool.d.ts.map +1 -0
  161. package/dist/src/tools/llm-database-management-tool.js +203 -0
  162. package/dist/src/tools/llm-database-management-tool.js.map +1 -0
  163. package/dist/src/tools/llm-web-search-tool.d.ts +59 -0
  164. package/dist/src/tools/llm-web-search-tool.d.ts.map +1 -0
  165. package/dist/src/tools/llm-web-search-tool.js +165 -0
  166. package/dist/src/tools/llm-web-search-tool.js.map +1 -0
  167. package/dist/src/tools/mcp-planning-tool.d.ts.map +1 -1
  168. package/dist/src/tools/mcp-planning-tool.js +10 -3
  169. package/dist/src/tools/mcp-planning-tool.js.map +1 -1
  170. package/dist/src/tools/memory-loading-tool.d.ts.map +1 -1
  171. package/dist/src/tools/memory-loading-tool.js +4 -2
  172. package/dist/src/tools/memory-loading-tool.js.map +1 -1
  173. package/dist/src/tools/perform-research-tool.d.ts +61 -0
  174. package/dist/src/tools/perform-research-tool.d.ts.map +1 -0
  175. package/dist/src/tools/perform-research-tool.js +324 -0
  176. package/dist/src/tools/perform-research-tool.js.map +1 -0
  177. package/dist/src/tools/research-question-tool.d.ts.map +1 -1
  178. package/dist/src/tools/research-question-tool.js +11 -9
  179. package/dist/src/tools/research-question-tool.js.map +1 -1
  180. package/dist/src/tools/review-existing-adrs-tool.d.ts.map +1 -1
  181. package/dist/src/tools/review-existing-adrs-tool.js +42 -3
  182. package/dist/src/tools/review-existing-adrs-tool.js.map +1 -1
  183. package/dist/src/tools/tool-chain-orchestrator.d.ts +15 -94
  184. package/dist/src/tools/tool-chain-orchestrator.d.ts.map +1 -1
  185. package/dist/src/tools/tool-chain-orchestrator.js +2 -2
  186. package/dist/src/tools/tool-chain-orchestrator.js.map +1 -1
  187. package/dist/src/tools/troubleshoot-guided-workflow-tool.d.ts +25 -120
  188. package/dist/src/tools/troubleshoot-guided-workflow-tool.d.ts.map +1 -1
  189. package/dist/src/tools/troubleshoot-guided-workflow-tool.js +91 -2
  190. package/dist/src/tools/troubleshoot-guided-workflow-tool.js.map +1 -1
  191. package/dist/src/types/ape-framework.d.ts +50 -283
  192. package/dist/src/types/ape-framework.d.ts.map +1 -1
  193. package/dist/src/types/conversation-context.d.ts.map +1 -1
  194. package/dist/src/types/conversation-context.js +12 -12
  195. package/dist/src/types/conversation-context.js.map +1 -1
  196. package/dist/src/types/conversation-memory.d.ts +184 -0
  197. package/dist/src/types/conversation-memory.d.ts.map +1 -0
  198. package/dist/src/types/conversation-memory.js +8 -0
  199. package/dist/src/types/conversation-memory.js.map +1 -0
  200. package/dist/src/types/index.d.ts +112 -339
  201. package/dist/src/types/index.d.ts.map +1 -1
  202. package/dist/src/types/knowledge-generation.d.ts +96 -401
  203. package/dist/src/types/knowledge-generation.d.ts.map +1 -1
  204. package/dist/src/types/knowledge-graph-schemas.d.ts +77 -715
  205. package/dist/src/types/knowledge-graph-schemas.d.ts.map +1 -1
  206. package/dist/src/types/knowledge-graph-schemas.js +8 -8
  207. package/dist/src/types/knowledge-graph-schemas.js.map +1 -1
  208. package/dist/src/types/memory-entities.d.ts +1230 -6164
  209. package/dist/src/types/memory-entities.d.ts.map +1 -1
  210. package/dist/src/types/memory-entities.js +8 -8
  211. package/dist/src/types/memory-entities.js.map +1 -1
  212. package/dist/src/types/reflexion-framework.d.ts +35 -264
  213. package/dist/src/types/reflexion-framework.d.ts.map +1 -1
  214. package/dist/src/types/reflexion-framework.js +1 -1
  215. package/dist/src/types/reflexion-framework.js.map +1 -1
  216. package/dist/src/types/state-reinforcement.d.ts +87 -0
  217. package/dist/src/types/state-reinforcement.d.ts.map +1 -0
  218. package/dist/src/types/state-reinforcement.js +5 -0
  219. package/dist/src/types/state-reinforcement.js.map +1 -0
  220. package/dist/src/types/tiered-response.d.ts +61 -0
  221. package/dist/src/types/tiered-response.d.ts.map +1 -0
  222. package/dist/src/types/tiered-response.js +8 -0
  223. package/dist/src/types/tiered-response.js.map +1 -0
  224. package/dist/src/types/tool-context.d.ts +50 -0
  225. package/dist/src/types/tool-context.d.ts.map +1 -0
  226. package/dist/src/types/tool-context.js +20 -0
  227. package/dist/src/types/tool-context.js.map +1 -0
  228. package/dist/src/utils/adr-action-analyzer.d.ts +23 -0
  229. package/dist/src/utils/adr-action-analyzer.d.ts.map +1 -0
  230. package/dist/src/utils/adr-action-analyzer.js +323 -0
  231. package/dist/src/utils/adr-action-analyzer.js.map +1 -0
  232. package/dist/src/utils/adr-context-detector.d.ts +33 -0
  233. package/dist/src/utils/adr-context-detector.d.ts.map +1 -0
  234. package/dist/src/utils/adr-context-detector.js +279 -0
  235. package/dist/src/utils/adr-context-detector.js.map +1 -0
  236. package/dist/src/utils/adr-discovery.d.ts +28 -2
  237. package/dist/src/utils/adr-discovery.d.ts.map +1 -1
  238. package/dist/src/utils/adr-discovery.js +91 -7
  239. package/dist/src/utils/adr-discovery.js.map +1 -1
  240. package/dist/src/utils/adr-knowledge-initializer.d.ts +54 -0
  241. package/dist/src/utils/adr-knowledge-initializer.d.ts.map +1 -0
  242. package/dist/src/utils/adr-knowledge-initializer.js +240 -0
  243. package/dist/src/utils/adr-knowledge-initializer.js.map +1 -0
  244. package/dist/src/utils/adr-timeline-extractor.d.ts +21 -0
  245. package/dist/src/utils/adr-timeline-extractor.d.ts.map +1 -0
  246. package/dist/src/utils/adr-timeline-extractor.js +294 -0
  247. package/dist/src/utils/adr-timeline-extractor.js.map +1 -0
  248. package/dist/src/utils/adr-timeline-types.d.ts +234 -0
  249. package/dist/src/utils/adr-timeline-types.d.ts.map +1 -0
  250. package/dist/src/utils/adr-timeline-types.js +7 -0
  251. package/dist/src/utils/adr-timeline-types.js.map +1 -0
  252. package/dist/src/utils/ai-executor.d.ts +36 -0
  253. package/dist/src/utils/ai-executor.d.ts.map +1 -1
  254. package/dist/src/utils/ai-executor.js +39 -3
  255. package/dist/src/utils/ai-executor.js.map +1 -1
  256. package/dist/src/utils/apply-cot-enhancement.d.ts.map +1 -1
  257. package/dist/src/utils/apply-cot-enhancement.js +15 -15
  258. package/dist/src/utils/apply-cot-enhancement.js.map +1 -1
  259. package/dist/src/utils/automatic-prompt-engineering.d.ts.map +1 -1
  260. package/dist/src/utils/automatic-prompt-engineering.js +68 -58
  261. package/dist/src/utils/automatic-prompt-engineering.js.map +1 -1
  262. package/dist/src/utils/conditional-request.d.ts +105 -0
  263. package/dist/src/utils/conditional-request.d.ts.map +1 -0
  264. package/dist/src/utils/conditional-request.js +186 -0
  265. package/dist/src/utils/conditional-request.js.map +1 -0
  266. package/dist/src/utils/config.d.ts +72 -18
  267. package/dist/src/utils/config.d.ts.map +1 -1
  268. package/dist/src/utils/config.js +75 -0
  269. package/dist/src/utils/config.js.map +1 -1
  270. package/dist/src/utils/context-document-manager.d.ts +112 -0
  271. package/dist/src/utils/context-document-manager.d.ts.map +1 -0
  272. package/dist/src/utils/context-document-manager.js +351 -0
  273. package/dist/src/utils/context-document-manager.js.map +1 -0
  274. package/dist/src/utils/conversation-memory-manager.d.ts +86 -0
  275. package/dist/src/utils/conversation-memory-manager.d.ts.map +1 -0
  276. package/dist/src/utils/conversation-memory-manager.js +443 -0
  277. package/dist/src/utils/conversation-memory-manager.js.map +1 -0
  278. package/dist/src/utils/dag-executor.d.ts +106 -0
  279. package/dist/src/utils/dag-executor.d.ts.map +1 -0
  280. package/dist/src/utils/dag-executor.js +453 -0
  281. package/dist/src/utils/dag-executor.js.map +1 -0
  282. package/dist/src/utils/deployment-analysis.d.ts.map +1 -1
  283. package/dist/src/utils/deployment-analysis.js +17 -9
  284. package/dist/src/utils/deployment-analysis.js.map +1 -1
  285. package/dist/src/utils/deployment-type-registry.d.ts +52 -0
  286. package/dist/src/utils/deployment-type-registry.d.ts.map +1 -0
  287. package/dist/src/utils/deployment-type-registry.js +543 -0
  288. package/dist/src/utils/deployment-type-registry.js.map +1 -0
  289. package/dist/src/utils/dynamic-deployment-intelligence.d.ts +117 -0
  290. package/dist/src/utils/dynamic-deployment-intelligence.d.ts.map +1 -0
  291. package/dist/src/utils/dynamic-deployment-intelligence.js +445 -0
  292. package/dist/src/utils/dynamic-deployment-intelligence.js.map +1 -0
  293. package/dist/src/utils/environment-analysis.d.ts.map +1 -1
  294. package/dist/src/utils/environment-analysis.js +63 -44
  295. package/dist/src/utils/environment-analysis.js.map +1 -1
  296. package/dist/src/utils/environment-capability-registry.d.ts +101 -0
  297. package/dist/src/utils/environment-capability-registry.d.ts.map +1 -0
  298. package/dist/src/utils/environment-capability-registry.js +489 -0
  299. package/dist/src/utils/environment-capability-registry.js.map +1 -0
  300. package/dist/src/utils/index.d.ts +3 -3
  301. package/dist/src/utils/index.d.ts.map +1 -1
  302. package/dist/src/utils/index.js +3 -3
  303. package/dist/src/utils/index.js.map +1 -1
  304. package/dist/src/utils/knowledge-generation.d.ts.map +1 -1
  305. package/dist/src/utils/knowledge-generation.js +61 -35
  306. package/dist/src/utils/knowledge-generation.js.map +1 -1
  307. package/dist/src/utils/knowledge-graph-manager.d.ts +19 -0
  308. package/dist/src/utils/knowledge-graph-manager.d.ts.map +1 -1
  309. package/dist/src/utils/knowledge-graph-manager.js +165 -1
  310. package/dist/src/utils/knowledge-graph-manager.js.map +1 -1
  311. package/dist/src/utils/llm-artifact-detector.d.ts.map +1 -1
  312. package/dist/src/utils/llm-artifact-detector.js +28 -24
  313. package/dist/src/utils/llm-artifact-detector.js.map +1 -1
  314. package/dist/src/utils/mermaid-diagrams.d.ts +101 -0
  315. package/dist/src/utils/mermaid-diagrams.d.ts.map +1 -0
  316. package/dist/src/utils/mermaid-diagrams.js +445 -0
  317. package/dist/src/utils/mermaid-diagrams.js.map +1 -0
  318. package/dist/src/utils/monitoring.d.ts +249 -0
  319. package/dist/src/utils/monitoring.d.ts.map +1 -0
  320. package/dist/src/utils/monitoring.js +513 -0
  321. package/dist/src/utils/monitoring.js.map +1 -0
  322. package/dist/src/utils/pattern-contribution-helper.d.ts +60 -0
  323. package/dist/src/utils/pattern-contribution-helper.d.ts.map +1 -0
  324. package/dist/src/utils/pattern-contribution-helper.js +308 -0
  325. package/dist/src/utils/pattern-contribution-helper.js.map +1 -0
  326. package/dist/src/utils/pattern-loader.d.ts +183 -0
  327. package/dist/src/utils/pattern-loader.d.ts.map +1 -0
  328. package/dist/src/utils/pattern-loader.js +200 -0
  329. package/dist/src/utils/pattern-loader.js.map +1 -0
  330. package/dist/src/utils/pattern-research-utility.d.ts +107 -0
  331. package/dist/src/utils/pattern-research-utility.d.ts.map +1 -0
  332. package/dist/src/utils/pattern-research-utility.js +360 -0
  333. package/dist/src/utils/pattern-research-utility.js.map +1 -0
  334. package/dist/src/utils/pattern-to-dag-converter.d.ts +62 -0
  335. package/dist/src/utils/pattern-to-dag-converter.d.ts.map +1 -0
  336. package/dist/src/utils/pattern-to-dag-converter.js +265 -0
  337. package/dist/src/utils/pattern-to-dag-converter.js.map +1 -0
  338. package/dist/src/utils/platform-detector.d.ts +86 -0
  339. package/dist/src/utils/platform-detector.d.ts.map +1 -0
  340. package/dist/src/utils/platform-detector.js +509 -0
  341. package/dist/src/utils/platform-detector.js.map +1 -0
  342. package/dist/src/utils/prompt-composition.d.ts.map +1 -1
  343. package/dist/src/utils/prompt-composition.js +1 -4
  344. package/dist/src/utils/prompt-composition.js.map +1 -1
  345. package/dist/src/utils/reflexion.d.ts.map +1 -1
  346. package/dist/src/utils/reflexion.js +51 -42
  347. package/dist/src/utils/reflexion.js.map +1 -1
  348. package/dist/src/utils/research-integration.d.ts.map +1 -1
  349. package/dist/src/utils/research-integration.js +8 -2
  350. package/dist/src/utils/research-integration.js.map +1 -1
  351. package/dist/src/utils/research-orchestrator.d.ts +209 -0
  352. package/dist/src/utils/research-orchestrator.d.ts.map +1 -0
  353. package/dist/src/utils/research-orchestrator.js +863 -0
  354. package/dist/src/utils/research-orchestrator.js.map +1 -0
  355. package/dist/src/utils/research-questions.d.ts.map +1 -1
  356. package/dist/src/utils/research-questions.js +4 -1
  357. package/dist/src/utils/research-questions.js.map +1 -1
  358. package/dist/src/utils/resource-extractor.d.ts +57 -0
  359. package/dist/src/utils/resource-extractor.d.ts.map +1 -0
  360. package/dist/src/utils/resource-extractor.js +323 -0
  361. package/dist/src/utils/resource-extractor.js.map +1 -0
  362. package/dist/src/utils/resource-versioning.d.ts +124 -0
  363. package/dist/src/utils/resource-versioning.d.ts.map +1 -0
  364. package/dist/src/utils/resource-versioning.js +272 -0
  365. package/dist/src/utils/resource-versioning.js.map +1 -0
  366. package/dist/src/utils/root-manager.d.ts +118 -0
  367. package/dist/src/utils/root-manager.d.ts.map +1 -0
  368. package/dist/src/utils/root-manager.js +154 -0
  369. package/dist/src/utils/root-manager.js.map +1 -0
  370. package/dist/src/utils/rule-generation.d.ts.map +1 -1
  371. package/dist/src/utils/rule-generation.js +4 -1
  372. package/dist/src/utils/rule-generation.js.map +1 -1
  373. package/dist/src/utils/server-context-generator.d.ts +47 -0
  374. package/dist/src/utils/server-context-generator.d.ts.map +1 -0
  375. package/dist/src/utils/server-context-generator.js +666 -0
  376. package/dist/src/utils/server-context-generator.js.map +1 -0
  377. package/dist/src/utils/state-reinforcement-manager.d.ts +60 -0
  378. package/dist/src/utils/state-reinforcement-manager.d.ts.map +1 -0
  379. package/dist/src/utils/state-reinforcement-manager.js +200 -0
  380. package/dist/src/utils/state-reinforcement-manager.js.map +1 -0
  381. package/dist/src/utils/system-card-manager.d.ts +194 -0
  382. package/dist/src/utils/system-card-manager.d.ts.map +1 -0
  383. package/dist/src/utils/system-card-manager.js +336 -0
  384. package/dist/src/utils/system-card-manager.js.map +1 -0
  385. package/dist/src/utils/tiered-response-manager.d.ts +40 -0
  386. package/dist/src/utils/tiered-response-manager.d.ts.map +1 -0
  387. package/dist/src/utils/tiered-response-manager.js +243 -0
  388. package/dist/src/utils/tiered-response-manager.js.map +1 -0
  389. package/dist/src/utils/tree-sitter-analyzer.d.ts.map +1 -1
  390. package/dist/src/utils/tree-sitter-analyzer.js +83 -11
  391. package/dist/src/utils/tree-sitter-analyzer.js.map +1 -1
  392. package/dist/src/utils/validated-pattern-definitions.d.ts +219 -0
  393. package/dist/src/utils/validated-pattern-definitions.d.ts.map +1 -0
  394. package/dist/src/utils/validated-pattern-definitions.js +1511 -0
  395. package/dist/src/utils/validated-pattern-definitions.js.map +1 -0
  396. package/package.json +22 -13
  397. package/dist/src/prompts/todo-prompts.d.ts +0 -49
  398. package/dist/src/prompts/todo-prompts.d.ts.map +0 -1
  399. package/dist/src/prompts/todo-prompts.js +0 -824
  400. package/dist/src/prompts/todo-prompts.js.map +0 -1
  401. package/dist/src/types/todo-json-schemas.d.ts +0 -17
  402. package/dist/src/types/todo-json-schemas.d.ts.map +0 -1
  403. package/dist/src/types/todo-json-schemas.js +0 -9
  404. package/dist/src/types/todo-json-schemas.js.map +0 -1
  405. package/dist/src/utils/todo-file-watcher.d.ts +0 -14
  406. package/dist/src/utils/todo-file-watcher.d.ts.map +0 -1
  407. package/dist/src/utils/todo-file-watcher.js +0 -25
  408. package/dist/src/utils/todo-file-watcher.js.map +0 -1
@@ -0,0 +1,240 @@
1
+ /**
2
+ * ADR Knowledge Initializer
3
+ *
4
+ * Initializes the knowledge base with existing ADRs from the project
5
+ * on first run of analyze_project_ecosystem. This ensures that future
6
+ * ADR suggestions and analysis build on established architectural decisions.
7
+ */
8
+ import { discoverAdrsInDirectory } from './adr-discovery.js';
9
+ import { createLogger } from './config.js';
10
+ const logger = createLogger({ logLevel: process.env['LOG_LEVEL'] || 'info' });
11
+ /**
12
+ * Initialize knowledge base with existing ADRs
13
+ *
14
+ * @param kgManager - Knowledge graph manager instance
15
+ * @param adrDirectory - Directory containing ADRs
16
+ * @param projectPath - Root project path
17
+ * @returns Promise resolving to initialization result
18
+ */
19
+ export async function initializeAdrKnowledgeBase(kgManager, adrDirectory, projectPath) {
20
+ logger.info(`Initializing ADR knowledge base from: ${adrDirectory}`);
21
+ const errors = [];
22
+ const nodes = [];
23
+ try {
24
+ // Discover all existing ADRs
25
+ const discoveryResult = await discoverAdrsInDirectory(adrDirectory, projectPath, {
26
+ includeContent: true,
27
+ includeTimeline: false,
28
+ });
29
+ logger.info(`Discovered ${discoveryResult.totalAdrs} ADRs for knowledge base initialization`);
30
+ if (discoveryResult.totalAdrs === 0) {
31
+ logger.info('No ADRs found - skipping knowledge base initialization');
32
+ return {
33
+ success: true,
34
+ adrsIndexed: 0,
35
+ nodes: [],
36
+ errors: [],
37
+ };
38
+ }
39
+ // Parse and index each ADR
40
+ for (const adr of discoveryResult.adrs) {
41
+ try {
42
+ const node = await indexAdrToKnowledgeGraph(adr, discoveryResult.adrs, kgManager);
43
+ nodes.push(node);
44
+ }
45
+ catch (error) {
46
+ const errorMsg = `Failed to index ADR ${adr.filename}: ${error instanceof Error ? error.message : String(error)}`;
47
+ logger.warn(errorMsg);
48
+ errors.push(errorMsg);
49
+ }
50
+ }
51
+ // Create relationships between ADRs
52
+ await createAdrRelationships(nodes, kgManager);
53
+ logger.info(`✅ Successfully initialized ADR knowledge base with ${nodes.length} ADRs`);
54
+ return {
55
+ success: true,
56
+ adrsIndexed: nodes.length,
57
+ nodes,
58
+ errors,
59
+ };
60
+ }
61
+ catch (error) {
62
+ const errorMsg = `Failed to initialize ADR knowledge base: ${error instanceof Error ? error.message : String(error)}`;
63
+ logger.error(errorMsg);
64
+ errors.push(errorMsg);
65
+ return {
66
+ success: false,
67
+ adrsIndexed: 0,
68
+ nodes: [],
69
+ errors,
70
+ };
71
+ }
72
+ }
73
+ /**
74
+ * Index a single ADR to the knowledge graph
75
+ */
76
+ async function indexAdrToKnowledgeGraph(adr, allAdrs, kgManager) {
77
+ // Extract related ADRs from content
78
+ const relatedAdrs = extractRelatedAdrs(adr, allAdrs);
79
+ // Create ADR knowledge node
80
+ const metadata = {
81
+ tags: adr.metadata?.tags || [],
82
+ };
83
+ // Only include optional metadata if they exist
84
+ if (adr.metadata?.number) {
85
+ metadata.number = adr.metadata.number;
86
+ }
87
+ if (adr.metadata?.category) {
88
+ metadata.category = adr.metadata.category;
89
+ }
90
+ const node = {
91
+ id: adr.metadata?.number || adr.filename.replace(/\.md$/, ''),
92
+ type: 'adr',
93
+ title: adr.title,
94
+ status: adr.status,
95
+ context: adr.context || '',
96
+ decision: adr.decision || '',
97
+ consequences: adr.consequences || '',
98
+ filePath: adr.path,
99
+ metadata,
100
+ relationships: {
101
+ relatedAdrs,
102
+ supersedes: extractSupersedes(adr),
103
+ supersededBy: extractSupersededBy(adr),
104
+ },
105
+ };
106
+ // Add date if it exists
107
+ if (adr.date) {
108
+ node.date = adr.date;
109
+ }
110
+ // Add memory execution tracking for ADR indexing
111
+ await kgManager.addMemoryExecution('adr_knowledge_initializer', 'index', 'adr', true, {
112
+ adrId: node.id,
113
+ title: node.title,
114
+ status: node.status,
115
+ relatedAdrs: relatedAdrs.length,
116
+ });
117
+ logger.debug(`Indexed ADR to knowledge graph: ${node.id} - ${node.title}`);
118
+ return node;
119
+ }
120
+ /**
121
+ * Extract related ADR references from content
122
+ */
123
+ function extractRelatedAdrs(adr, allAdrs) {
124
+ const related = [];
125
+ const content = `${adr.context || ''} ${adr.decision || ''} ${adr.consequences || ''}`;
126
+ // Match patterns like "ADR-001", "ADR 001", "adr-1", etc.
127
+ const adrReferences = content.match(/ADR[-\s]?(\d+)/gi);
128
+ if (adrReferences) {
129
+ for (const ref of adrReferences) {
130
+ const id = ref.match(/\d+/)?.[0];
131
+ if (id) {
132
+ const relatedAdr = allAdrs.find(a => a.metadata?.number === id || a.filename.includes(id));
133
+ if (relatedAdr && relatedAdr.filename !== adr.filename) {
134
+ const relatedId = relatedAdr.metadata?.number || relatedAdr.filename.replace(/\.md$/, '');
135
+ related.push(relatedId);
136
+ }
137
+ }
138
+ }
139
+ }
140
+ return [...new Set(related)];
141
+ }
142
+ /**
143
+ * Extract ADRs that this ADR supersedes
144
+ */
145
+ function extractSupersedes(adr) {
146
+ const content = `${adr.context || ''} ${adr.decision || ''} ${adr.consequences || ''}`;
147
+ const supersedes = [];
148
+ // Match patterns like "supersedes ADR-001", "replaces ADR 002", etc.
149
+ const supersedesMatches = content.match(/(?:supersedes|replaces)\s+ADR[-\s]?(\d+)/gi);
150
+ if (supersedesMatches) {
151
+ for (const match of supersedesMatches) {
152
+ const id = match.match(/\d+/)?.[0];
153
+ if (id) {
154
+ supersedes.push(id);
155
+ }
156
+ }
157
+ }
158
+ return [...new Set(supersedes)];
159
+ }
160
+ /**
161
+ * Extract ADRs that supersede this ADR
162
+ */
163
+ function extractSupersededBy(adr) {
164
+ // Check status for "superseded" indication
165
+ if (adr.status.toLowerCase() === 'superseded') {
166
+ const content = `${adr.context || ''} ${adr.decision || ''} ${adr.consequences || ''}`;
167
+ // Match patterns like "superseded by ADR-003"
168
+ const supersededByMatches = content.match(/superseded\s+by\s+ADR[-\s]?(\d+)/gi);
169
+ if (supersededByMatches) {
170
+ const supersededBy = [];
171
+ for (const match of supersededByMatches) {
172
+ const id = match.match(/\d+/)?.[0];
173
+ if (id) {
174
+ supersededBy.push(id);
175
+ }
176
+ }
177
+ return [...new Set(supersededBy)];
178
+ }
179
+ }
180
+ return [];
181
+ }
182
+ /**
183
+ * Create relationship tracking between ADRs in the knowledge graph
184
+ */
185
+ async function createAdrRelationships(nodes, kgManager) {
186
+ logger.info(`Creating relationships between ${nodes.length} ADRs`);
187
+ for (const node of nodes) {
188
+ // Track related ADRs
189
+ for (const relatedId of node.relationships.relatedAdrs) {
190
+ await kgManager.addMemoryExecution('adr_knowledge_initializer', 'relate', 'adr_relationship', true, {
191
+ sourceAdr: node.id,
192
+ targetAdr: relatedId,
193
+ relationshipType: 'related',
194
+ });
195
+ }
196
+ // Track supersedes relationships
197
+ if (node.relationships.supersedes && node.relationships.supersedes.length > 0) {
198
+ for (const supersededId of node.relationships.supersedes) {
199
+ await kgManager.addMemoryExecution('adr_knowledge_initializer', 'supersede', 'adr_relationship', true, {
200
+ sourceAdr: node.id,
201
+ targetAdr: supersededId,
202
+ relationshipType: 'supersedes',
203
+ });
204
+ }
205
+ }
206
+ // Track superseded-by relationships
207
+ if (node.relationships.supersededBy && node.relationships.supersededBy.length > 0) {
208
+ for (const supersedingId of node.relationships.supersededBy) {
209
+ await kgManager.addMemoryExecution('adr_knowledge_initializer', 'superseded-by', 'adr_relationship', true, {
210
+ sourceAdr: node.id,
211
+ targetAdr: supersedingId,
212
+ relationshipType: 'superseded-by',
213
+ });
214
+ }
215
+ }
216
+ }
217
+ logger.info('✅ ADR relationships created successfully');
218
+ }
219
+ /**
220
+ * Check if ADR knowledge base has been initialized
221
+ *
222
+ * @param kgManager - Knowledge graph manager instance
223
+ * @returns Promise resolving to whether ADRs have been indexed
224
+ */
225
+ export async function isAdrKnowledgeBaseInitialized(kgManager) {
226
+ try {
227
+ const kg = await kgManager.loadKnowledgeGraph();
228
+ // Check if we have any ADR-related memory operations
229
+ if (kg.memoryOperations && kg.memoryOperations.length > 0) {
230
+ const adrOperations = kg.memoryOperations.filter((op) => op.entityType === 'adr' && op.action === 'index');
231
+ return adrOperations.length > 0;
232
+ }
233
+ return false;
234
+ }
235
+ catch (error) {
236
+ logger.warn('Failed to check ADR knowledge base initialization status:', error);
237
+ return false;
238
+ }
239
+ }
240
+ //# sourceMappingURL=adr-knowledge-initializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adr-knowledge-initializer.js","sourceRoot":"","sources":["../../../src/utils/adr-knowledge-initializer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * ADR Timeline Extractor
3
+ *
4
+ * Extracts timeline information from ADRs using git history,
5
+ * content parsing, or filesystem metadata with smart conditional logic
6
+ */
7
+ import type { BasicTimeline, TimelineExtractionOptions } from './adr-timeline-types.js';
8
+ /**
9
+ * Extract basic timeline for an ADR with smart conditional logic
10
+ *
11
+ * Only extracts when necessary:
12
+ * - No timestamp in content
13
+ * - File modified recently
14
+ * - Cache miss or stale
15
+ */
16
+ export declare function extractBasicTimeline(adrPath: string, adrContent: string, options?: TimelineExtractionOptions): Promise<BasicTimeline>;
17
+ /**
18
+ * Helper to extract keywords from ADR content for implementation tracking
19
+ */
20
+ export declare function extractKeywordsFromAdr(title: string, decision?: string): string[];
21
+ //# sourceMappingURL=adr-timeline-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adr-timeline-extractor.d.ts","sourceRoot":"","sources":["../../../src/utils/adr-timeline-extractor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAsCxF;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,aAAa,CAAC,CAiFxB;AA2MD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CA0BjF"}
@@ -0,0 +1,294 @@
1
+ /**
2
+ * ADR Timeline Extractor
3
+ *
4
+ * Extracts timeline information from ADRs using git history,
5
+ * content parsing, or filesystem metadata with smart conditional logic
6
+ */
7
+ import { exec } from 'child_process';
8
+ import { promisify } from 'util';
9
+ import { stat } from 'fs/promises';
10
+ const execAsync = promisify(exec);
11
+ const timelineCache = new Map();
12
+ function getCachedTimeline(key) {
13
+ const entry = timelineCache.get(key);
14
+ if (!entry)
15
+ return null;
16
+ const age = Date.now() - entry.timestamp;
17
+ if (age > entry.ttl * 1000) {
18
+ timelineCache.delete(key);
19
+ return null;
20
+ }
21
+ return entry.data;
22
+ }
23
+ function setCachedTimeline(key, data, ttl) {
24
+ timelineCache.set(key, {
25
+ data,
26
+ timestamp: Date.now(),
27
+ ttl,
28
+ });
29
+ }
30
+ /**
31
+ * Extract basic timeline for an ADR with smart conditional logic
32
+ *
33
+ * Only extracts when necessary:
34
+ * - No timestamp in content
35
+ * - File modified recently
36
+ * - Cache miss or stale
37
+ */
38
+ export async function extractBasicTimeline(adrPath, adrContent, options = {}) {
39
+ const { useCache = true, cacheTTL = 3600, // 1 hour default
40
+ forceExtract = false, } = options;
41
+ // Check if extraction can be skipped (unless forced)
42
+ if (!forceExtract) {
43
+ const decision = await shouldExtractTimeline(adrPath, adrContent);
44
+ if (!decision.shouldExtract && decision.useExisting) {
45
+ // Use existing date from content
46
+ return createTimelineFromContent(adrContent, decision.useExisting, decision.reason);
47
+ }
48
+ if (!decision.shouldExtract && !decision.useExisting) {
49
+ // Use cached data
50
+ const cached = getCachedTimeline(`timeline:${adrPath}`);
51
+ if (cached) {
52
+ return cached;
53
+ }
54
+ }
55
+ // Log extraction reason for debugging
56
+ if (decision.shouldExtract) {
57
+ console.log(`[Timeline] Extracting for ${adrPath}: ${decision.reason}`);
58
+ }
59
+ }
60
+ // Perform extraction using priority order: git → content → filesystem
61
+ let timeline = null;
62
+ // Try git extraction first
63
+ timeline = await tryGitExtraction(adrPath);
64
+ // Fallback to content parsing
65
+ if (!timeline || !timeline.created_at) {
66
+ const contentDate = extractDateFromContent(adrContent);
67
+ if (contentDate) {
68
+ timeline = {
69
+ created_at: contentDate,
70
+ updated_at: contentDate,
71
+ extraction_method: 'content',
72
+ };
73
+ }
74
+ }
75
+ // Final fallback to filesystem
76
+ if (!timeline || !timeline.created_at) {
77
+ timeline = await fallbackToFilesystem(adrPath);
78
+ }
79
+ // Calculate derived fields
80
+ const stats = await stat(adrPath);
81
+ const ageDays = calculateAgeDays(timeline.created_at);
82
+ const daysSinceUpdate = calculateAgeDays(timeline.updated_at);
83
+ const fullTimeline = {
84
+ created_at: timeline.created_at,
85
+ updated_at: timeline.updated_at,
86
+ age_days: ageDays,
87
+ days_since_update: daysSinceUpdate,
88
+ staleness_warnings: generateBasicWarnings(ageDays, daysSinceUpdate),
89
+ extraction_method: timeline.extraction_method,
90
+ };
91
+ // Cache result with file modification time for future checks
92
+ if (useCache) {
93
+ setCachedTimeline(`timeline:${adrPath}`, {
94
+ ...fullTimeline,
95
+ _fileModifiedAt: stats.mtime.toISOString(),
96
+ _cachedAt: new Date().toISOString(),
97
+ }, cacheTTL);
98
+ }
99
+ return fullTimeline;
100
+ }
101
+ /**
102
+ * Determine if timeline extraction should run
103
+ */
104
+ async function shouldExtractTimeline(adrPath, adrContent) {
105
+ // Check if ADR content has a date field
106
+ const dateInContent = extractDateFromContent(adrContent);
107
+ // Check file modification time
108
+ const stats = await stat(adrPath);
109
+ const fileModifiedAt = stats.mtime;
110
+ // Check cache
111
+ const cacheKey = `timeline:${adrPath}`;
112
+ const cached = getCachedTimeline(cacheKey);
113
+ // CONDITION 1: No date in content → MUST extract
114
+ if (!dateInContent) {
115
+ return {
116
+ shouldExtract: true,
117
+ reason: 'No timestamp found in ADR content',
118
+ };
119
+ }
120
+ // CONDITION 2: Has date + cached + file unchanged → SKIP
121
+ if (cached && cached._fileModifiedAt) {
122
+ const cachedModTime = new Date(cached._fileModifiedAt);
123
+ if (fileModifiedAt <= cachedModTime) {
124
+ return {
125
+ shouldExtract: false,
126
+ reason: 'File unchanged since last extraction',
127
+ useExisting: dateInContent,
128
+ };
129
+ }
130
+ }
131
+ // CONDITION 3: Has date + file modified recently → RE-EXTRACT
132
+ const daysSinceModification = (Date.now() - fileModifiedAt.getTime()) / (1000 * 60 * 60 * 24);
133
+ if (daysSinceModification < 7) {
134
+ // Modified within last week
135
+ return {
136
+ shouldExtract: true,
137
+ reason: `File modified ${Math.floor(daysSinceModification)} days ago`,
138
+ };
139
+ }
140
+ // CONDITION 4: Has date + old file → USE CONTENT DATE
141
+ return {
142
+ shouldExtract: false,
143
+ reason: 'File has valid date and is stable (not recently modified)',
144
+ useExisting: dateInContent,
145
+ };
146
+ }
147
+ /**
148
+ * Extract date from ADR content using regex
149
+ */
150
+ function extractDateFromContent(content) {
151
+ const dateMatch = content.match(/(?:##?\s*date|date:|\*\*date\*\*:)\s*(.+?)(?:\n|$)/i);
152
+ if (dateMatch && dateMatch[1]) {
153
+ const dateStr = dateMatch[1].trim();
154
+ try {
155
+ // Validate it's a parseable date
156
+ const date = new Date(dateStr);
157
+ if (!isNaN(date.getTime())) {
158
+ return date.toISOString();
159
+ }
160
+ }
161
+ catch {
162
+ // Invalid date format
163
+ }
164
+ }
165
+ return null;
166
+ }
167
+ /**
168
+ * Create timeline from ADR content date (no git extraction needed)
169
+ */
170
+ function createTimelineFromContent(_content, dateStr, reason) {
171
+ let decisionDate;
172
+ try {
173
+ decisionDate = new Date(dateStr);
174
+ }
175
+ catch {
176
+ // Fallback to current time if parsing fails
177
+ decisionDate = new Date();
178
+ }
179
+ const isoDate = decisionDate.toISOString();
180
+ const ageDays = calculateAgeDays(isoDate);
181
+ return {
182
+ created_at: isoDate,
183
+ updated_at: isoDate, // Assume same as creation
184
+ age_days: ageDays,
185
+ days_since_update: ageDays,
186
+ staleness_warnings: generateBasicWarnings(ageDays, ageDays),
187
+ extraction_method: 'content',
188
+ extraction_skipped: true,
189
+ skip_reason: reason,
190
+ };
191
+ }
192
+ /**
193
+ * Try to extract timeline from git history
194
+ */
195
+ async function tryGitExtraction(adrPath) {
196
+ try {
197
+ // Creation date (first commit)
198
+ const { stdout: created } = await execAsync(`git log --diff-filter=A --follow --format=%aI -- "${adrPath}" | tail -1`, { timeout: 5000 });
199
+ // Last modification date
200
+ const { stdout: updated } = await execAsync(`git log -1 --format=%aI -- "${adrPath}"`, {
201
+ timeout: 5000,
202
+ });
203
+ if (!created.trim() || !updated.trim()) {
204
+ return null;
205
+ }
206
+ return {
207
+ created_at: created.trim(),
208
+ updated_at: updated.trim(),
209
+ extraction_method: 'git',
210
+ };
211
+ }
212
+ catch (error) {
213
+ // Git not available, not a git repo, or command failed
214
+ console.warn(`[Timeline] Git extraction failed for ${adrPath}:`, error);
215
+ return null;
216
+ }
217
+ }
218
+ /**
219
+ * Fallback to filesystem timestamps
220
+ */
221
+ async function fallbackToFilesystem(adrPath) {
222
+ try {
223
+ const stats = await stat(adrPath);
224
+ return {
225
+ created_at: stats.birthtime.toISOString(),
226
+ updated_at: stats.mtime.toISOString(),
227
+ extraction_method: 'filesystem',
228
+ };
229
+ }
230
+ catch {
231
+ // Last resort: use current time
232
+ const now = new Date().toISOString();
233
+ return {
234
+ created_at: now,
235
+ updated_at: now,
236
+ extraction_method: 'filesystem',
237
+ };
238
+ }
239
+ }
240
+ /**
241
+ * Calculate age in days from ISO timestamp
242
+ */
243
+ function calculateAgeDays(isoTimestamp) {
244
+ const date = new Date(isoTimestamp);
245
+ const now = new Date();
246
+ const diffMs = now.getTime() - date.getTime();
247
+ return Math.floor(diffMs / (1000 * 60 * 60 * 24));
248
+ }
249
+ /**
250
+ * Generate basic staleness warnings
251
+ */
252
+ function generateBasicWarnings(ageDays, daysSinceUpdate) {
253
+ const warnings = [];
254
+ // Warning: Old ADR
255
+ if (ageDays > 180) {
256
+ warnings.push(`ADR is ${ageDays} days old (>6 months)`);
257
+ }
258
+ // Warning: No recent updates
259
+ if (daysSinceUpdate > 365) {
260
+ warnings.push(`No updates in ${daysSinceUpdate} days (>1 year)`);
261
+ }
262
+ // Warning: Very old dormant ADR
263
+ if (daysSinceUpdate > 730) {
264
+ warnings.push(`Dormant for ${Math.floor(daysSinceUpdate / 365)} years - may be obsolete`);
265
+ }
266
+ return warnings;
267
+ }
268
+ /**
269
+ * Helper to extract keywords from ADR content for implementation tracking
270
+ */
271
+ export function extractKeywordsFromAdr(title, decision) {
272
+ const text = `${title} ${decision || ''}`.toLowerCase();
273
+ const keywords = [];
274
+ // Extract technology names
275
+ const techPatterns = [
276
+ /\b(redis|postgres|mongodb|mysql|kafka|rabbitmq|docker|kubernetes|aws|gcp|azure)\b/gi,
277
+ /\b(react|vue|angular|node|express|fastapi|django|flask|spring)\b/gi,
278
+ /\b(graphql|rest|grpc|websocket|oauth|jwt|saml)\b/gi,
279
+ ];
280
+ techPatterns.forEach(pattern => {
281
+ const matches = text.match(pattern);
282
+ if (matches) {
283
+ keywords.push(...matches.map(m => m.toLowerCase()));
284
+ }
285
+ });
286
+ // Extract quoted terms (likely important concepts)
287
+ const quoted = text.match(/"([^"]+)"/g);
288
+ if (quoted) {
289
+ keywords.push(...quoted.map(q => q.replace(/"/g, '').toLowerCase()));
290
+ }
291
+ // Remove duplicates
292
+ return [...new Set(keywords)];
293
+ }
294
+ //# sourceMappingURL=adr-timeline-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adr-timeline-extractor.js","sourceRoot":"","sources":["../../../src/utils/adr-timeline-extractor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAGnC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAalC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAsB,CAAC;AAEpD,SAAS,iBAAiB,CAAC,GAAW;IACpC,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC;IACzC,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC;QAC3B,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC;AACpB,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW,EAAE,IAAS,EAAE,GAAW;IAC5D,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE;QACrB,IAAI;QACJ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,GAAG;KACJ,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAe,EACf,UAAkB,EAClB,UAAqC,EAAE;IAEvC,MAAM,EACJ,QAAQ,GAAG,IAAI,EACf,QAAQ,GAAG,IAAI,EAAE,iBAAiB;IAClC,YAAY,GAAG,KAAK,GACrB,GAAG,OAAO,CAAC;IAEZ,qDAAqD;IACrD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAElE,IAAI,CAAC,QAAQ,CAAC,aAAa,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;YACpD,iCAAiC;YACjC,OAAO,yBAAyB,CAAC,UAAU,EAAE,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtF,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,aAAa,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YACrD,kBAAkB;YAClB,MAAM,MAAM,GAAG,iBAAiB,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;YACxD,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,MAAuB,CAAC;YACjC,CAAC;QACH,CAAC;QAED,sCAAsC;QACtC,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,6BAA6B,OAAO,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,sEAAsE;IACtE,IAAI,QAAQ,GAAkC,IAAI,CAAC;IAEnD,2BAA2B;IAC3B,QAAQ,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAE3C,8BAA8B;IAC9B,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;QACvD,IAAI,WAAW,EAAE,CAAC;YAChB,QAAQ,GAAG;gBACT,UAAU,EAAE,WAAW;gBACvB,UAAU,EAAE,WAAW;gBACvB,iBAAiB,EAAE,SAAS;aAC7B,CAAC;QACJ,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QACtC,QAAQ,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;IAED,2BAA2B;IAC3B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,CAAC,UAAW,CAAC,CAAC;IACvD,MAAM,eAAe,GAAG,gBAAgB,CAAC,QAAQ,CAAC,UAAW,CAAC,CAAC;IAE/D,MAAM,YAAY,GAAkB;QAClC,UAAU,EAAE,QAAQ,CAAC,UAAW;QAChC,UAAU,EAAE,QAAQ,CAAC,UAAW;QAChC,QAAQ,EAAE,OAAO;QACjB,iBAAiB,EAAE,eAAe;QAClC,kBAAkB,EAAE,qBAAqB,CAAC,OAAO,EAAE,eAAe,CAAC;QACnE,iBAAiB,EAAE,QAAQ,CAAC,iBAAqD;KAClF,CAAC;IAEF,6DAA6D;IAC7D,IAAI,QAAQ,EAAE,CAAC;QACb,iBAAiB,CACf,YAAY,OAAO,EAAE,EACrB;YACE,GAAG,YAAY;YACf,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE;YAC1C,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,EACD,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,qBAAqB,CAClC,OAAe,EACf,UAAkB;IAMlB,wCAAwC;IACxC,MAAM,aAAa,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAEzD,+BAA+B;IAC/B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC;IAEnC,cAAc;IACd,MAAM,QAAQ,GAAG,YAAY,OAAO,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAE3C,iDAAiD;IACjD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO;YACL,aAAa,EAAE,IAAI;YACnB,MAAM,EAAE,mCAAmC;SAC5C,CAAC;IACJ,CAAC;IAED,yDAAyD;IACzD,IAAI,MAAM,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QACrC,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QACvD,IAAI,cAAc,IAAI,aAAa,EAAE,CAAC;YACpC,OAAO;gBACL,aAAa,EAAE,KAAK;gBACpB,MAAM,EAAE,sCAAsC;gBAC9C,WAAW,EAAE,aAAa;aAC3B,CAAC;QACJ,CAAC;IACH,CAAC;IAED,8DAA8D;IAC9D,MAAM,qBAAqB,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAE9F,IAAI,qBAAqB,GAAG,CAAC,EAAE,CAAC;QAC9B,4BAA4B;QAC5B,OAAO;YACL,aAAa,EAAE,IAAI;YACnB,MAAM,EAAE,iBAAiB,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,WAAW;SACtE,CAAC;IACJ,CAAC;IAED,sDAAsD;IACtD,OAAO;QACL,aAAa,EAAE,KAAK;QACpB,MAAM,EAAE,2DAA2D;QACnE,WAAW,EAAE,aAAa;KAC3B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,OAAe;IAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACvF,IAAI,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,iCAAiC;YACjC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;YAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC3B,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,sBAAsB;QACxB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,yBAAyB,CAChC,QAAgB,EAChB,OAAe,EACf,MAAc;IAEd,IAAI,YAAkB,CAAC;IACvB,IAAI,CAAC;QACH,YAAY,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,4CAA4C;QAC5C,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAE1C,OAAO;QACL,UAAU,EAAE,OAAO;QACnB,UAAU,EAAE,OAAO,EAAE,0BAA0B;QAC/C,QAAQ,EAAE,OAAO;QACjB,iBAAiB,EAAE,OAAO;QAC1B,kBAAkB,EAAE,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC;QAC3D,iBAAiB,EAAE,SAAS;QAC5B,kBAAkB,EAAE,IAAI;QACxB,WAAW,EAAE,MAAM;KACpB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAAC,OAAe;IAC7C,IAAI,CAAC;QACH,+BAA+B;QAC/B,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,SAAS,CACzC,qDAAqD,OAAO,aAAa,EACzE,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAC;QAEF,yBAAyB;QACzB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,SAAS,CAAC,+BAA+B,OAAO,GAAG,EAAE;YACrF,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,UAAU,EAAE,OAAO,CAAC,IAAI,EAAE;YAC1B,UAAU,EAAE,OAAO,CAAC,IAAI,EAAE;YAC1B,iBAAiB,EAAE,KAAK;SACzB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,uDAAuD;QACvD,OAAO,CAAC,IAAI,CAAC,wCAAwC,OAAO,GAAG,EAAE,KAAK,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,oBAAoB,CAAC,OAAe;IACjD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;QAElC,OAAO;YACL,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE;YACzC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE;YACrC,iBAAiB,EAAE,YAAY;SAChC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,gCAAgC;QAChC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,OAAO;YACL,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,GAAG;YACf,iBAAiB,EAAE,YAAY;SAChC,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,YAAoB;IAC5C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,OAAe,EAAE,eAAuB;IACrE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,mBAAmB;IACnB,IAAI,OAAO,GAAG,GAAG,EAAE,CAAC;QAClB,QAAQ,CAAC,IAAI,CAAC,UAAU,OAAO,uBAAuB,CAAC,CAAC;IAC1D,CAAC;IAED,6BAA6B;IAC7B,IAAI,eAAe,GAAG,GAAG,EAAE,CAAC;QAC1B,QAAQ,CAAC,IAAI,CAAC,iBAAiB,eAAe,iBAAiB,CAAC,CAAC;IACnE,CAAC;IAED,gCAAgC;IAChC,IAAI,eAAe,GAAG,GAAG,EAAE,CAAC;QAC1B,QAAQ,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAC5F,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAa,EAAE,QAAiB;IACrE,MAAM,IAAI,GAAG,GAAG,KAAK,IAAI,QAAQ,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC;IACxD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,2BAA2B;IAC3B,MAAM,YAAY,GAAG;QACnB,qFAAqF;QACrF,oEAAoE;QACpE,oDAAoD;KACrD,CAAC;IAEF,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,OAAO,EAAE,CAAC;YACZ,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,mDAAmD;IACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACxC,IAAI,MAAM,EAAE,CAAC;QACX,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,oBAAoB;IACpB,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;AAChC,CAAC"}