mcp-adr-analysis-server 2.1.11 → 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 (362) hide show
  1. package/README.md +55 -8
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/src/index.d.ts +69 -2
  4. package/dist/src/index.d.ts.map +1 -1
  5. package/dist/src/index.js +1638 -551
  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/tools/adr-bootstrap-validation-tool.d.ts.map +1 -1
  111. package/dist/src/tools/adr-bootstrap-validation-tool.js +214 -4
  112. package/dist/src/tools/adr-bootstrap-validation-tool.js.map +1 -1
  113. package/dist/src/tools/adr-suggestion-tool.d.ts.map +1 -1
  114. package/dist/src/tools/adr-suggestion-tool.js +4 -1
  115. package/dist/src/tools/adr-suggestion-tool.js.map +1 -1
  116. package/dist/src/tools/adr-validation-tool.d.ts +52 -0
  117. package/dist/src/tools/adr-validation-tool.d.ts.map +1 -1
  118. package/dist/src/tools/adr-validation-tool.js +52 -0
  119. package/dist/src/tools/adr-validation-tool.js.map +1 -1
  120. package/dist/src/tools/bootstrap-validation-loop-tool.d.ts +262 -0
  121. package/dist/src/tools/bootstrap-validation-loop-tool.d.ts.map +1 -0
  122. package/dist/src/tools/bootstrap-validation-loop-tool.js +1934 -0
  123. package/dist/src/tools/bootstrap-validation-loop-tool.js.map +1 -0
  124. package/dist/src/tools/conversation-memory-tool.d.ts +48 -0
  125. package/dist/src/tools/conversation-memory-tool.d.ts.map +1 -0
  126. package/dist/src/tools/conversation-memory-tool.js +254 -0
  127. package/dist/src/tools/conversation-memory-tool.js.map +1 -0
  128. package/dist/src/tools/deployment-analysis-tool.d.ts.map +1 -1
  129. package/dist/src/tools/deployment-analysis-tool.js +47 -5
  130. package/dist/src/tools/deployment-analysis-tool.js.map +1 -1
  131. package/dist/src/tools/deployment-guidance-tool.d.ts.map +1 -1
  132. package/dist/src/tools/deployment-guidance-tool.js +48 -1
  133. package/dist/src/tools/deployment-guidance-tool.js.map +1 -1
  134. package/dist/src/tools/deployment-readiness-tool.d.ts.map +1 -1
  135. package/dist/src/tools/deployment-readiness-tool.js +15 -1
  136. package/dist/src/tools/deployment-readiness-tool.js.map +1 -1
  137. package/dist/src/tools/expand-analysis-tool.d.ts +23 -0
  138. package/dist/src/tools/expand-analysis-tool.d.ts.map +1 -0
  139. package/dist/src/tools/expand-analysis-tool.js +107 -0
  140. package/dist/src/tools/expand-analysis-tool.js.map +1 -0
  141. package/dist/src/tools/get-server-context-tool.d.ts +67 -0
  142. package/dist/src/tools/get-server-context-tool.d.ts.map +1 -0
  143. package/dist/src/tools/get-server-context-tool.js +75 -0
  144. package/dist/src/tools/get-server-context-tool.js.map +1 -0
  145. package/dist/src/tools/llm-cloud-management-tool.d.ts +62 -0
  146. package/dist/src/tools/llm-cloud-management-tool.d.ts.map +1 -0
  147. package/dist/src/tools/llm-cloud-management-tool.js +202 -0
  148. package/dist/src/tools/llm-cloud-management-tool.js.map +1 -0
  149. package/dist/src/tools/llm-database-management-tool.d.ts +62 -0
  150. package/dist/src/tools/llm-database-management-tool.d.ts.map +1 -0
  151. package/dist/src/tools/llm-database-management-tool.js +203 -0
  152. package/dist/src/tools/llm-database-management-tool.js.map +1 -0
  153. package/dist/src/tools/llm-web-search-tool.d.ts +59 -0
  154. package/dist/src/tools/llm-web-search-tool.d.ts.map +1 -0
  155. package/dist/src/tools/llm-web-search-tool.js +165 -0
  156. package/dist/src/tools/llm-web-search-tool.js.map +1 -0
  157. package/dist/src/tools/mcp-planning-tool.d.ts.map +1 -1
  158. package/dist/src/tools/mcp-planning-tool.js +10 -3
  159. package/dist/src/tools/mcp-planning-tool.js.map +1 -1
  160. package/dist/src/tools/memory-loading-tool.d.ts.map +1 -1
  161. package/dist/src/tools/memory-loading-tool.js +4 -2
  162. package/dist/src/tools/memory-loading-tool.js.map +1 -1
  163. package/dist/src/tools/perform-research-tool.d.ts +45 -1
  164. package/dist/src/tools/perform-research-tool.d.ts.map +1 -1
  165. package/dist/src/tools/perform-research-tool.js +146 -2
  166. package/dist/src/tools/perform-research-tool.js.map +1 -1
  167. package/dist/src/tools/review-existing-adrs-tool.d.ts.map +1 -1
  168. package/dist/src/tools/review-existing-adrs-tool.js +4 -1
  169. package/dist/src/tools/review-existing-adrs-tool.js.map +1 -1
  170. package/dist/src/tools/tool-chain-orchestrator.d.ts +15 -94
  171. package/dist/src/tools/tool-chain-orchestrator.d.ts.map +1 -1
  172. package/dist/src/tools/tool-chain-orchestrator.js +2 -2
  173. package/dist/src/tools/tool-chain-orchestrator.js.map +1 -1
  174. package/dist/src/tools/troubleshoot-guided-workflow-tool.d.ts +25 -120
  175. package/dist/src/tools/troubleshoot-guided-workflow-tool.d.ts.map +1 -1
  176. package/dist/src/tools/troubleshoot-guided-workflow-tool.js +2 -2
  177. package/dist/src/types/ape-framework.d.ts +50 -283
  178. package/dist/src/types/ape-framework.d.ts.map +1 -1
  179. package/dist/src/types/conversation-memory.d.ts +184 -0
  180. package/dist/src/types/conversation-memory.d.ts.map +1 -0
  181. package/dist/src/types/conversation-memory.js +8 -0
  182. package/dist/src/types/conversation-memory.js.map +1 -0
  183. package/dist/src/types/index.d.ts +112 -339
  184. package/dist/src/types/index.d.ts.map +1 -1
  185. package/dist/src/types/knowledge-generation.d.ts +96 -401
  186. package/dist/src/types/knowledge-generation.d.ts.map +1 -1
  187. package/dist/src/types/knowledge-graph-schemas.d.ts +77 -715
  188. package/dist/src/types/knowledge-graph-schemas.d.ts.map +1 -1
  189. package/dist/src/types/knowledge-graph-schemas.js +8 -8
  190. package/dist/src/types/knowledge-graph-schemas.js.map +1 -1
  191. package/dist/src/types/memory-entities.d.ts +1230 -6164
  192. package/dist/src/types/memory-entities.d.ts.map +1 -1
  193. package/dist/src/types/memory-entities.js +8 -8
  194. package/dist/src/types/memory-entities.js.map +1 -1
  195. package/dist/src/types/reflexion-framework.d.ts +35 -264
  196. package/dist/src/types/reflexion-framework.d.ts.map +1 -1
  197. package/dist/src/types/reflexion-framework.js +1 -1
  198. package/dist/src/types/reflexion-framework.js.map +1 -1
  199. package/dist/src/types/state-reinforcement.d.ts +87 -0
  200. package/dist/src/types/state-reinforcement.d.ts.map +1 -0
  201. package/dist/src/types/state-reinforcement.js +5 -0
  202. package/dist/src/types/state-reinforcement.js.map +1 -0
  203. package/dist/src/types/tiered-response.d.ts +61 -0
  204. package/dist/src/types/tiered-response.d.ts.map +1 -0
  205. package/dist/src/types/tiered-response.js +8 -0
  206. package/dist/src/types/tiered-response.js.map +1 -0
  207. package/dist/src/types/tool-context.d.ts +50 -0
  208. package/dist/src/types/tool-context.d.ts.map +1 -0
  209. package/dist/src/types/tool-context.js +20 -0
  210. package/dist/src/types/tool-context.js.map +1 -0
  211. package/dist/src/utils/adr-action-analyzer.d.ts +23 -0
  212. package/dist/src/utils/adr-action-analyzer.d.ts.map +1 -0
  213. package/dist/src/utils/adr-action-analyzer.js +323 -0
  214. package/dist/src/utils/adr-action-analyzer.js.map +1 -0
  215. package/dist/src/utils/adr-context-detector.d.ts +33 -0
  216. package/dist/src/utils/adr-context-detector.d.ts.map +1 -0
  217. package/dist/src/utils/adr-context-detector.js +279 -0
  218. package/dist/src/utils/adr-context-detector.js.map +1 -0
  219. package/dist/src/utils/adr-discovery.d.ts +28 -2
  220. package/dist/src/utils/adr-discovery.d.ts.map +1 -1
  221. package/dist/src/utils/adr-discovery.js +91 -7
  222. package/dist/src/utils/adr-discovery.js.map +1 -1
  223. package/dist/src/utils/adr-knowledge-initializer.d.ts +54 -0
  224. package/dist/src/utils/adr-knowledge-initializer.d.ts.map +1 -0
  225. package/dist/src/utils/adr-knowledge-initializer.js +240 -0
  226. package/dist/src/utils/adr-knowledge-initializer.js.map +1 -0
  227. package/dist/src/utils/adr-timeline-extractor.d.ts +21 -0
  228. package/dist/src/utils/adr-timeline-extractor.d.ts.map +1 -0
  229. package/dist/src/utils/adr-timeline-extractor.js +294 -0
  230. package/dist/src/utils/adr-timeline-extractor.js.map +1 -0
  231. package/dist/src/utils/adr-timeline-types.d.ts +234 -0
  232. package/dist/src/utils/adr-timeline-types.d.ts.map +1 -0
  233. package/dist/src/utils/adr-timeline-types.js +7 -0
  234. package/dist/src/utils/adr-timeline-types.js.map +1 -0
  235. package/dist/src/utils/ai-executor.d.ts +36 -0
  236. package/dist/src/utils/ai-executor.d.ts.map +1 -1
  237. package/dist/src/utils/ai-executor.js +36 -0
  238. package/dist/src/utils/ai-executor.js.map +1 -1
  239. package/dist/src/utils/conditional-request.d.ts +105 -0
  240. package/dist/src/utils/conditional-request.d.ts.map +1 -0
  241. package/dist/src/utils/conditional-request.js +186 -0
  242. package/dist/src/utils/conditional-request.js.map +1 -0
  243. package/dist/src/utils/config.d.ts +72 -18
  244. package/dist/src/utils/config.d.ts.map +1 -1
  245. package/dist/src/utils/config.js +75 -0
  246. package/dist/src/utils/config.js.map +1 -1
  247. package/dist/src/utils/context-document-manager.d.ts +112 -0
  248. package/dist/src/utils/context-document-manager.d.ts.map +1 -0
  249. package/dist/src/utils/context-document-manager.js +351 -0
  250. package/dist/src/utils/context-document-manager.js.map +1 -0
  251. package/dist/src/utils/conversation-memory-manager.d.ts +86 -0
  252. package/dist/src/utils/conversation-memory-manager.d.ts.map +1 -0
  253. package/dist/src/utils/conversation-memory-manager.js +443 -0
  254. package/dist/src/utils/conversation-memory-manager.js.map +1 -0
  255. package/dist/src/utils/dag-executor.d.ts +106 -0
  256. package/dist/src/utils/dag-executor.d.ts.map +1 -0
  257. package/dist/src/utils/dag-executor.js +453 -0
  258. package/dist/src/utils/dag-executor.js.map +1 -0
  259. package/dist/src/utils/deployment-analysis.d.ts.map +1 -1
  260. package/dist/src/utils/deployment-analysis.js +4 -1
  261. package/dist/src/utils/deployment-analysis.js.map +1 -1
  262. package/dist/src/utils/deployment-type-registry.d.ts +52 -0
  263. package/dist/src/utils/deployment-type-registry.d.ts.map +1 -0
  264. package/dist/src/utils/deployment-type-registry.js +543 -0
  265. package/dist/src/utils/deployment-type-registry.js.map +1 -0
  266. package/dist/src/utils/dynamic-deployment-intelligence.d.ts +117 -0
  267. package/dist/src/utils/dynamic-deployment-intelligence.d.ts.map +1 -0
  268. package/dist/src/utils/dynamic-deployment-intelligence.js +445 -0
  269. package/dist/src/utils/dynamic-deployment-intelligence.js.map +1 -0
  270. package/dist/src/utils/environment-analysis.d.ts.map +1 -1
  271. package/dist/src/utils/environment-analysis.js +4 -1
  272. package/dist/src/utils/environment-analysis.js.map +1 -1
  273. package/dist/src/utils/knowledge-graph-manager.d.ts +16 -1
  274. package/dist/src/utils/knowledge-graph-manager.d.ts.map +1 -1
  275. package/dist/src/utils/knowledge-graph-manager.js +159 -3
  276. package/dist/src/utils/knowledge-graph-manager.js.map +1 -1
  277. package/dist/src/utils/mermaid-diagrams.d.ts +101 -0
  278. package/dist/src/utils/mermaid-diagrams.d.ts.map +1 -0
  279. package/dist/src/utils/mermaid-diagrams.js +445 -0
  280. package/dist/src/utils/mermaid-diagrams.js.map +1 -0
  281. package/dist/src/utils/monitoring.d.ts +249 -0
  282. package/dist/src/utils/monitoring.d.ts.map +1 -0
  283. package/dist/src/utils/monitoring.js +513 -0
  284. package/dist/src/utils/monitoring.js.map +1 -0
  285. package/dist/src/utils/pattern-contribution-helper.d.ts +60 -0
  286. package/dist/src/utils/pattern-contribution-helper.d.ts.map +1 -0
  287. package/dist/src/utils/pattern-contribution-helper.js +308 -0
  288. package/dist/src/utils/pattern-contribution-helper.js.map +1 -0
  289. package/dist/src/utils/pattern-loader.d.ts +183 -0
  290. package/dist/src/utils/pattern-loader.d.ts.map +1 -0
  291. package/dist/src/utils/pattern-loader.js +200 -0
  292. package/dist/src/utils/pattern-loader.js.map +1 -0
  293. package/dist/src/utils/pattern-research-utility.d.ts +107 -0
  294. package/dist/src/utils/pattern-research-utility.d.ts.map +1 -0
  295. package/dist/src/utils/pattern-research-utility.js +360 -0
  296. package/dist/src/utils/pattern-research-utility.js.map +1 -0
  297. package/dist/src/utils/pattern-to-dag-converter.d.ts +62 -0
  298. package/dist/src/utils/pattern-to-dag-converter.d.ts.map +1 -0
  299. package/dist/src/utils/pattern-to-dag-converter.js +265 -0
  300. package/dist/src/utils/pattern-to-dag-converter.js.map +1 -0
  301. package/dist/src/utils/platform-detector.d.ts +86 -0
  302. package/dist/src/utils/platform-detector.d.ts.map +1 -0
  303. package/dist/src/utils/platform-detector.js +509 -0
  304. package/dist/src/utils/platform-detector.js.map +1 -0
  305. package/dist/src/utils/research-integration.d.ts.map +1 -1
  306. package/dist/src/utils/research-integration.js +8 -2
  307. package/dist/src/utils/research-integration.js.map +1 -1
  308. package/dist/src/utils/research-orchestrator.d.ts +135 -3
  309. package/dist/src/utils/research-orchestrator.d.ts.map +1 -1
  310. package/dist/src/utils/research-orchestrator.js +440 -27
  311. package/dist/src/utils/research-orchestrator.js.map +1 -1
  312. package/dist/src/utils/research-questions.d.ts.map +1 -1
  313. package/dist/src/utils/research-questions.js +4 -1
  314. package/dist/src/utils/research-questions.js.map +1 -1
  315. package/dist/src/utils/resource-extractor.d.ts +57 -0
  316. package/dist/src/utils/resource-extractor.d.ts.map +1 -0
  317. package/dist/src/utils/resource-extractor.js +323 -0
  318. package/dist/src/utils/resource-extractor.js.map +1 -0
  319. package/dist/src/utils/resource-versioning.d.ts +124 -0
  320. package/dist/src/utils/resource-versioning.d.ts.map +1 -0
  321. package/dist/src/utils/resource-versioning.js +272 -0
  322. package/dist/src/utils/resource-versioning.js.map +1 -0
  323. package/dist/src/utils/root-manager.d.ts +118 -0
  324. package/dist/src/utils/root-manager.d.ts.map +1 -0
  325. package/dist/src/utils/root-manager.js +154 -0
  326. package/dist/src/utils/root-manager.js.map +1 -0
  327. package/dist/src/utils/rule-generation.d.ts.map +1 -1
  328. package/dist/src/utils/rule-generation.js +4 -1
  329. package/dist/src/utils/rule-generation.js.map +1 -1
  330. package/dist/src/utils/server-context-generator.d.ts +47 -0
  331. package/dist/src/utils/server-context-generator.d.ts.map +1 -0
  332. package/dist/src/utils/server-context-generator.js +666 -0
  333. package/dist/src/utils/server-context-generator.js.map +1 -0
  334. package/dist/src/utils/state-reinforcement-manager.d.ts +60 -0
  335. package/dist/src/utils/state-reinforcement-manager.d.ts.map +1 -0
  336. package/dist/src/utils/state-reinforcement-manager.js +200 -0
  337. package/dist/src/utils/state-reinforcement-manager.js.map +1 -0
  338. package/dist/src/utils/system-card-manager.d.ts +194 -0
  339. package/dist/src/utils/system-card-manager.d.ts.map +1 -0
  340. package/dist/src/utils/system-card-manager.js +336 -0
  341. package/dist/src/utils/system-card-manager.js.map +1 -0
  342. package/dist/src/utils/tiered-response-manager.d.ts +40 -0
  343. package/dist/src/utils/tiered-response-manager.d.ts.map +1 -0
  344. package/dist/src/utils/tiered-response-manager.js +243 -0
  345. package/dist/src/utils/tiered-response-manager.js.map +1 -0
  346. package/dist/src/utils/validated-pattern-definitions.d.ts +219 -0
  347. package/dist/src/utils/validated-pattern-definitions.d.ts.map +1 -0
  348. package/dist/src/utils/validated-pattern-definitions.js +1511 -0
  349. package/dist/src/utils/validated-pattern-definitions.js.map +1 -0
  350. package/package.json +22 -13
  351. package/dist/src/prompts/todo-prompts.d.ts +0 -49
  352. package/dist/src/prompts/todo-prompts.d.ts.map +0 -1
  353. package/dist/src/prompts/todo-prompts.js +0 -824
  354. package/dist/src/prompts/todo-prompts.js.map +0 -1
  355. package/dist/src/types/todo-json-schemas.d.ts +0 -17
  356. package/dist/src/types/todo-json-schemas.d.ts.map +0 -1
  357. package/dist/src/types/todo-json-schemas.js +0 -9
  358. package/dist/src/types/todo-json-schemas.js.map +0 -1
  359. package/dist/src/utils/todo-file-watcher.d.ts +0 -14
  360. package/dist/src/utils/todo-file-watcher.d.ts.map +0 -1
  361. package/dist/src/utils/todo-file-watcher.js +0 -25
  362. package/dist/src/utils/todo-file-watcher.js.map +0 -1
@@ -0,0 +1,443 @@
1
+ /**
2
+ * Conversation Memory Manager
3
+ *
4
+ * Phase 3 of context decay mitigation: Structured external memory.
5
+ * Handles conversation persistence, expandable content storage, and resumption.
6
+ */
7
+ import * as fs from 'fs/promises';
8
+ import * as path from 'path';
9
+ import * as os from 'os';
10
+ import crypto from 'crypto';
11
+ import { createLogger, loadConfig } from './config.js';
12
+ /**
13
+ * Default configuration
14
+ */
15
+ const DEFAULT_CONFIG = {
16
+ maxSessionsInMemory: 10,
17
+ persistAfterTurns: 5,
18
+ sessionMaxAgeHours: 24,
19
+ autoCleanup: true,
20
+ archivedRetentionDays: 30,
21
+ };
22
+ export class ConversationMemoryManager {
23
+ memoryDir;
24
+ sessionsDir;
25
+ expandableContentDir;
26
+ archiveDir;
27
+ config;
28
+ kgManager;
29
+ logger;
30
+ // In-memory cache
31
+ activeSession = null;
32
+ expandableContentCache = new Map();
33
+ constructor(kgManager, config = {}) {
34
+ this.config = { ...DEFAULT_CONFIG, ...config };
35
+ this.kgManager = kgManager;
36
+ const serverConfig = loadConfig();
37
+ this.logger = createLogger(serverConfig);
38
+ // Setup storage directories
39
+ const projectName = path.basename(serverConfig.projectPath);
40
+ const baseDir = path.join(os.tmpdir(), projectName, 'conversation-memory');
41
+ this.memoryDir = baseDir;
42
+ this.sessionsDir = path.join(baseDir, 'sessions');
43
+ this.expandableContentDir = path.join(baseDir, 'expandable-content');
44
+ this.archiveDir = path.join(baseDir, 'archive');
45
+ }
46
+ /**
47
+ * Initialize the conversation memory system
48
+ */
49
+ async initialize() {
50
+ try {
51
+ // Ensure directories exist
52
+ await fs.mkdir(this.memoryDir, { recursive: true });
53
+ await fs.mkdir(this.sessionsDir, { recursive: true });
54
+ await fs.mkdir(this.expandableContentDir, { recursive: true });
55
+ await fs.mkdir(this.archiveDir, { recursive: true });
56
+ // Try to load the most recent active session
57
+ await this.loadMostRecentSession();
58
+ this.logger.info('Conversation Memory Manager initialized', 'ConversationMemoryManager', {
59
+ activeSession: this.activeSession?.sessionId ?? 'none',
60
+ });
61
+ // Schedule cleanup if enabled
62
+ if (this.config.autoCleanup) {
63
+ this.scheduleCleanup();
64
+ }
65
+ }
66
+ catch (error) {
67
+ this.logger.error('Failed to initialize conversation memory', 'ConversationMemoryManager', error instanceof Error ? error : undefined);
68
+ throw error;
69
+ }
70
+ }
71
+ /**
72
+ * Start a new conversation session
73
+ */
74
+ async startNewSession(projectPath) {
75
+ const sessionId = this.generateSessionId();
76
+ const now = new Date().toISOString();
77
+ this.activeSession = {
78
+ sessionId,
79
+ projectPath,
80
+ startedAt: now,
81
+ lastActivityAt: now,
82
+ turns: [],
83
+ metadata: {
84
+ totalTokensUsed: 0,
85
+ averageResponseTime: 0,
86
+ toolsUsed: [],
87
+ knowledgeGraphIntents: [],
88
+ },
89
+ };
90
+ await this.persistSession();
91
+ this.logger.info(`New conversation session started: ${sessionId}`, 'ConversationMemoryManager');
92
+ return sessionId;
93
+ }
94
+ /**
95
+ * Record a conversation turn
96
+ */
97
+ async recordTurn(request, response, metadata = {}) {
98
+ if (!this.activeSession) {
99
+ const serverConfig = loadConfig();
100
+ await this.startNewSession(serverConfig.projectPath);
101
+ }
102
+ const turnId = this.generateTurnId();
103
+ const turnNumber = this.activeSession.turns.length + 1;
104
+ const turn = {
105
+ id: turnId,
106
+ turnNumber,
107
+ timestamp: new Date().toISOString(),
108
+ request,
109
+ response,
110
+ metadata: {
111
+ ...(metadata.duration !== undefined ? { duration: metadata.duration } : {}),
112
+ ...(metadata.model ? { model: metadata.model } : {}),
113
+ cacheHit: metadata.cacheHit ?? false,
114
+ errorOccurred: metadata.errorOccurred ?? false,
115
+ },
116
+ };
117
+ this.activeSession.turns.push(turn);
118
+ this.activeSession.lastActivityAt = turn.timestamp;
119
+ // Update session metadata
120
+ this.activeSession.metadata.totalTokensUsed += response.tokenCount;
121
+ if (request.toolName && !this.activeSession.metadata.toolsUsed.includes(request.toolName)) {
122
+ this.activeSession.metadata.toolsUsed.push(request.toolName);
123
+ }
124
+ // Persist if threshold reached
125
+ if (this.activeSession.turns.length % this.config.persistAfterTurns === 0) {
126
+ await this.persistSession();
127
+ }
128
+ this.logger.debug(`Turn ${turnNumber} recorded for session ${this.activeSession.sessionId}`, 'ConversationMemoryManager');
129
+ return turnId;
130
+ }
131
+ /**
132
+ * Store expandable content from tiered response
133
+ */
134
+ async storeExpandableContent(expandableId, content) {
135
+ try {
136
+ const filePath = path.join(this.expandableContentDir, `${expandableId}.json`);
137
+ await fs.writeFile(filePath, JSON.stringify(content, null, 2), 'utf-8');
138
+ // Cache in memory
139
+ this.expandableContentCache.set(expandableId, content);
140
+ this.logger.debug(`Expandable content stored: ${expandableId}`, 'ConversationMemoryManager');
141
+ }
142
+ catch (error) {
143
+ this.logger.error(`Failed to store expandable content: ${expandableId}`, 'ConversationMemoryManager', error instanceof Error ? error : undefined);
144
+ throw error;
145
+ }
146
+ }
147
+ /**
148
+ * Retrieve and expand stored content
149
+ */
150
+ async expandContent(request) {
151
+ try {
152
+ // Check cache first
153
+ let content = this.expandableContentCache.get(request.expandableId);
154
+ if (!content) {
155
+ // Load from disk
156
+ const filePath = path.join(this.expandableContentDir, `${request.expandableId}.json`);
157
+ const data = await fs.readFile(filePath, 'utf-8');
158
+ content = JSON.parse(data);
159
+ this.expandableContentCache.set(request.expandableId, content);
160
+ }
161
+ // Get related turns if context requested
162
+ let relatedTurns;
163
+ if (request.includeContext && this.activeSession) {
164
+ relatedTurns = this.activeSession.turns.filter(turn => turn.response.expandableId === request.expandableId);
165
+ }
166
+ // Get knowledge graph context
167
+ let knowledgeGraphContext;
168
+ if (request.includeContext) {
169
+ const intents = await this.kgManager.getActiveIntents();
170
+ knowledgeGraphContext = intents.slice(0, 3).map(intent => ({
171
+ intent: intent.humanRequest,
172
+ outcome: intent.currentStatus,
173
+ timestamp: intent.timestamp,
174
+ }));
175
+ }
176
+ return {
177
+ expandableId: request.expandableId,
178
+ content,
179
+ ...(relatedTurns ? { relatedTurns } : {}),
180
+ ...(knowledgeGraphContext ? { knowledgeGraphContext } : {}),
181
+ };
182
+ }
183
+ catch (error) {
184
+ this.logger.error(`Failed to expand content: ${request.expandableId}`, 'ConversationMemoryManager', error instanceof Error ? error : undefined);
185
+ throw error;
186
+ }
187
+ }
188
+ /**
189
+ * Get conversation context snapshot for resumption
190
+ */
191
+ async getContextSnapshot(recentTurnCount = 5) {
192
+ if (!this.activeSession) {
193
+ return null;
194
+ }
195
+ const recentTurns = this.activeSession.turns.slice(-recentTurnCount);
196
+ // Get active KG intents
197
+ const intents = await this.kgManager.getActiveIntents();
198
+ const activeIntents = intents.slice(0, 5).map(intent => ({
199
+ id: intent.intentId,
200
+ intent: intent.humanRequest,
201
+ status: intent.currentStatus,
202
+ }));
203
+ // Get recorded decisions (from KG or metadata)
204
+ const decisionsRecorded = [];
205
+ // This could be enhanced to query KG for ADRs created in this session
206
+ return {
207
+ sessionId: this.activeSession.sessionId,
208
+ recentTurns,
209
+ activeIntents,
210
+ decisionsRecorded,
211
+ // conversationFocus is optional and can be omitted
212
+ };
213
+ }
214
+ /**
215
+ * Query conversation sessions
216
+ */
217
+ async querySessions(query) {
218
+ try {
219
+ const sessionFiles = await fs.readdir(this.sessionsDir);
220
+ const sessions = [];
221
+ for (const file of sessionFiles) {
222
+ if (!file.endsWith('.json'))
223
+ continue;
224
+ const filePath = path.join(this.sessionsDir, file);
225
+ const data = await fs.readFile(filePath, 'utf-8');
226
+ const session = JSON.parse(data);
227
+ // Apply filters
228
+ if (query.projectPath && session.projectPath !== query.projectPath)
229
+ continue;
230
+ if (query.toolsUsed &&
231
+ !query.toolsUsed.some(tool => session.metadata.toolsUsed.includes(tool)))
232
+ continue;
233
+ if (query.dateRange) {
234
+ const sessionDate = new Date(session.startedAt);
235
+ const start = new Date(query.dateRange.start);
236
+ const end = new Date(query.dateRange.end);
237
+ if (sessionDate < start || sessionDate > end)
238
+ continue;
239
+ }
240
+ sessions.push(session);
241
+ }
242
+ // Apply limit
243
+ const limit = query.limit ?? 10;
244
+ return sessions.slice(0, limit);
245
+ }
246
+ catch (error) {
247
+ this.logger.error('Failed to query sessions', 'ConversationMemoryManager', error instanceof Error ? error : undefined);
248
+ return [];
249
+ }
250
+ }
251
+ /**
252
+ * Get conversation memory statistics
253
+ */
254
+ async getStats() {
255
+ try {
256
+ const sessionFiles = await fs.readdir(this.sessionsDir);
257
+ const archivedFiles = await fs.readdir(this.archiveDir);
258
+ const expandableFiles = await fs.readdir(this.expandableContentDir);
259
+ let totalTurns = 0;
260
+ let activeSessions = 0;
261
+ const now = Date.now();
262
+ const maxAge = this.config.sessionMaxAgeHours * 60 * 60 * 1000;
263
+ for (const file of sessionFiles) {
264
+ if (!file.endsWith('.json'))
265
+ continue;
266
+ const filePath = path.join(this.sessionsDir, file);
267
+ const data = await fs.readFile(filePath, 'utf-8');
268
+ const session = JSON.parse(data);
269
+ totalTurns += session.turns.length;
270
+ const sessionAge = now - new Date(session.lastActivityAt).getTime();
271
+ if (sessionAge < maxAge) {
272
+ activeSessions++;
273
+ }
274
+ }
275
+ // Calculate storage size
276
+ const getDirectorySize = async (dir) => {
277
+ let size = 0;
278
+ const files = await fs.readdir(dir);
279
+ for (const file of files) {
280
+ const filePath = path.join(dir, file);
281
+ const stat = await fs.stat(filePath);
282
+ size += stat.size;
283
+ }
284
+ return size;
285
+ };
286
+ const totalStorageBytes = (await getDirectorySize(this.sessionsDir)) +
287
+ (await getDirectorySize(this.expandableContentDir)) +
288
+ (await getDirectorySize(this.archiveDir));
289
+ return {
290
+ totalSessions: sessionFiles.filter(f => f.endsWith('.json')).length,
291
+ activeSessions,
292
+ archivedSessions: archivedFiles.filter(f => f.endsWith('.json')).length,
293
+ totalTurns,
294
+ totalExpandableContent: expandableFiles.filter(f => f.endsWith('.json')).length,
295
+ avgTurnsPerSession: sessionFiles.length > 0 ? totalTurns / sessionFiles.length : 0,
296
+ totalStorageBytes,
297
+ };
298
+ }
299
+ catch (error) {
300
+ this.logger.error('Failed to get conversation memory stats', 'ConversationMemoryManager', error instanceof Error ? error : undefined);
301
+ return {
302
+ totalSessions: 0,
303
+ activeSessions: 0,
304
+ archivedSessions: 0,
305
+ totalTurns: 0,
306
+ totalExpandableContent: 0,
307
+ avgTurnsPerSession: 0,
308
+ totalStorageBytes: 0,
309
+ };
310
+ }
311
+ }
312
+ /**
313
+ * Persist current session to disk
314
+ */
315
+ async persistSession() {
316
+ if (!this.activeSession)
317
+ return;
318
+ try {
319
+ const filePath = path.join(this.sessionsDir, `${this.activeSession.sessionId}.json`);
320
+ await fs.writeFile(filePath, JSON.stringify(this.activeSession, null, 2), 'utf-8');
321
+ this.logger.debug(`Session persisted: ${this.activeSession.sessionId}`, 'ConversationMemoryManager');
322
+ }
323
+ catch (error) {
324
+ this.logger.error('Failed to persist session', 'ConversationMemoryManager', error instanceof Error ? error : undefined);
325
+ }
326
+ }
327
+ /**
328
+ * Load most recent session
329
+ */
330
+ async loadMostRecentSession() {
331
+ try {
332
+ const sessionFiles = await fs.readdir(this.sessionsDir);
333
+ if (sessionFiles.length === 0)
334
+ return;
335
+ // Find most recent session
336
+ let mostRecentFile = '';
337
+ let mostRecentTime = 0;
338
+ for (const file of sessionFiles) {
339
+ if (!file.endsWith('.json'))
340
+ continue;
341
+ const filePath = path.join(this.sessionsDir, file);
342
+ const data = await fs.readFile(filePath, 'utf-8');
343
+ const session = JSON.parse(data);
344
+ const sessionTime = new Date(session.lastActivityAt).getTime();
345
+ if (sessionTime > mostRecentTime) {
346
+ mostRecentTime = sessionTime;
347
+ mostRecentFile = file;
348
+ }
349
+ }
350
+ if (mostRecentFile) {
351
+ const filePath = path.join(this.sessionsDir, mostRecentFile);
352
+ const data = await fs.readFile(filePath, 'utf-8');
353
+ this.activeSession = JSON.parse(data);
354
+ this.logger.info(`Loaded most recent session: ${this.activeSession.sessionId}`, 'ConversationMemoryManager');
355
+ }
356
+ }
357
+ catch (error) {
358
+ this.logger.error('Failed to load most recent session', 'ConversationMemoryManager', error instanceof Error ? error : undefined);
359
+ }
360
+ }
361
+ /**
362
+ * Schedule periodic cleanup of old sessions
363
+ */
364
+ scheduleCleanup() {
365
+ // Run cleanup every hour
366
+ setInterval(() => {
367
+ this.cleanupOldSessions().catch(error => {
368
+ this.logger.error('Scheduled cleanup failed', 'ConversationMemoryManager', error instanceof Error ? error : undefined);
369
+ });
370
+ }, 60 * 60 * 1000);
371
+ }
372
+ /**
373
+ * Archive old sessions and cleanup expired archives
374
+ */
375
+ async cleanupOldSessions() {
376
+ try {
377
+ const sessionFiles = await fs.readdir(this.sessionsDir);
378
+ const now = Date.now();
379
+ const maxAge = this.config.sessionMaxAgeHours * 60 * 60 * 1000;
380
+ const archiveAge = this.config.archivedRetentionDays * 24 * 60 * 60 * 1000;
381
+ // Archive old sessions
382
+ for (const file of sessionFiles) {
383
+ if (!file.endsWith('.json'))
384
+ continue;
385
+ const filePath = path.join(this.sessionsDir, file);
386
+ const data = await fs.readFile(filePath, 'utf-8');
387
+ const session = JSON.parse(data);
388
+ const sessionAge = now - new Date(session.lastActivityAt).getTime();
389
+ if (sessionAge > maxAge) {
390
+ // Move to archive
391
+ const archivePath = path.join(this.archiveDir, file);
392
+ await fs.rename(filePath, archivePath);
393
+ this.logger.debug(`Session archived: ${session.sessionId}`, 'ConversationMemoryManager');
394
+ }
395
+ }
396
+ // Delete expired archives
397
+ const archiveFiles = await fs.readdir(this.archiveDir);
398
+ for (const file of archiveFiles) {
399
+ if (!file.endsWith('.json'))
400
+ continue;
401
+ const filePath = path.join(this.archiveDir, file);
402
+ const stat = await fs.stat(filePath);
403
+ const fileAge = now - stat.mtimeMs;
404
+ if (fileAge > archiveAge) {
405
+ await fs.unlink(filePath);
406
+ this.logger.debug(`Archived session deleted: ${file}`, 'ConversationMemoryManager');
407
+ }
408
+ }
409
+ }
410
+ catch (error) {
411
+ this.logger.error('Cleanup failed', 'ConversationMemoryManager', error instanceof Error ? error : undefined);
412
+ }
413
+ }
414
+ /**
415
+ * Generate unique session ID
416
+ */
417
+ generateSessionId() {
418
+ const timestamp = Date.now().toString(36);
419
+ const random = crypto.randomBytes(6).toString('hex');
420
+ return `session-${timestamp}-${random}`;
421
+ }
422
+ /**
423
+ * Generate unique turn ID
424
+ */
425
+ generateTurnId() {
426
+ const timestamp = Date.now().toString(36);
427
+ const random = crypto.randomBytes(4).toString('hex');
428
+ return `turn-${timestamp}-${random}`;
429
+ }
430
+ /**
431
+ * Get current session ID
432
+ */
433
+ getCurrentSessionId() {
434
+ return this.activeSession?.sessionId ?? null;
435
+ }
436
+ /**
437
+ * Get current session
438
+ */
439
+ getCurrentSession() {
440
+ return this.activeSession;
441
+ }
442
+ }
443
+ //# sourceMappingURL=conversation-memory-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-memory-manager.js","sourceRoot":"","sources":["../../../src/utils/conversation-memory-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * DAG Executor for Bootstrap Validation Loop
3
+ *
4
+ * Executes tasks in a Directed Acyclic Graph (DAG) with:
5
+ * - Dependency resolution via topological sort
6
+ * - Parallel execution within layers
7
+ * - Fine-grained error handling and retry logic
8
+ * - Task-level validation and timeout support
9
+ */
10
+ import { SystemCardManager } from './system-card-manager.js';
11
+ /**
12
+ * A single executable task node in the DAG
13
+ */
14
+ export interface TaskNode {
15
+ id: string;
16
+ name: string;
17
+ description: string;
18
+ command?: string;
19
+ commandArgs?: string[];
20
+ expectedExitCode?: number;
21
+ timeout?: number;
22
+ dependsOn: string[];
23
+ canFailSafely?: boolean;
24
+ platforms?: string[];
25
+ retryCount?: number;
26
+ retryDelay?: number;
27
+ validationCheck?: (output: string) => boolean;
28
+ category: 'infrastructure' | 'application';
29
+ severity: 'critical' | 'error' | 'warning' | 'info';
30
+ }
31
+ /**
32
+ * Result of executing a single task
33
+ */
34
+ export interface TaskResult {
35
+ taskId: string;
36
+ success: boolean;
37
+ exitCode?: number;
38
+ stdout: string;
39
+ stderr: string;
40
+ duration: number;
41
+ error?: Error;
42
+ skipped?: boolean;
43
+ skipReason?: string;
44
+ }
45
+ /**
46
+ * Result of executing the entire DAG
47
+ */
48
+ export interface DAGExecutionResult {
49
+ success: boolean;
50
+ executedTasks: string[];
51
+ failedTasks: string[];
52
+ skippedTasks: string[];
53
+ duration: number;
54
+ taskResults: Map<string, TaskResult>;
55
+ }
56
+ /**
57
+ * DAG Executor with dependency resolution and parallel execution
58
+ */
59
+ export declare class DAGExecutor {
60
+ private logger;
61
+ private maxParallelism;
62
+ private systemCardManager;
63
+ private resourceExtractor;
64
+ constructor(maxParallelism?: number, systemCardManager?: SystemCardManager);
65
+ /**
66
+ * Execute DAG with topological sort and parallel execution
67
+ */
68
+ execute(tasks: TaskNode[]): Promise<DAGExecutionResult>;
69
+ /**
70
+ * Execute all tasks in a layer in parallel (with concurrency limit)
71
+ */
72
+ private executeLayer;
73
+ /**
74
+ * Execute tasks with concurrency limit
75
+ */
76
+ private executeWithConcurrencyLimit;
77
+ /**
78
+ * Execute a single task with retry logic
79
+ */
80
+ private executeTask;
81
+ /**
82
+ * Execute shell command with timeout
83
+ */
84
+ private executeCommand;
85
+ /**
86
+ * Validate DAG structure (no cycles, valid dependencies)
87
+ */
88
+ private validateDAG;
89
+ /**
90
+ * Detect cycles in DAG using DFS
91
+ */
92
+ private detectCycles;
93
+ /**
94
+ * Build dependency graph from tasks
95
+ */
96
+ private buildDependencyGraph;
97
+ /**
98
+ * Topological sort to determine execution order (Kahn's algorithm)
99
+ */
100
+ private topologicalSort;
101
+ /**
102
+ * Get all tasks that depend on the given task (recursively)
103
+ */
104
+ private getDependentTasks;
105
+ }
106
+ //# sourceMappingURL=dag-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dag-executor.d.ts","sourceRoot":"","sources":["../../../src/utils/dag-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAK7D;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IAGpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IAGxB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAGrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAG9C,QAAQ,EAAE,gBAAgB,GAAG,aAAa,CAAC;IAC3C,QAAQ,EAAE,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;CACrD;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACtC;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,iBAAiB,CAAgC;IACzD,OAAO,CAAC,iBAAiB,CAAoB;gBAEjC,cAAc,GAAE,MAAU,EAAE,iBAAiB,CAAC,EAAE,iBAAiB;IAO7E;;OAEG;IACG,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAsI7D;;OAEG;YACW,YAAY;IAwE1B;;OAEG;YACW,2BAA2B;IAwBzC;;OAEG;YACW,WAAW;IAuHzB;;OAEG;YACW,cAAc;IAsB5B;;OAEG;IACH,OAAO,CAAC,WAAW;IAqBnB;;OAEG;IACH,OAAO,CAAC,YAAY;IAmCpB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAU5B;;OAEG;IACH,OAAO,CAAC,eAAe;IAkDvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAwB1B"}