@jterrats/smart-deployment 1.0.3

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 (395) hide show
  1. package/README.md +193 -0
  2. package/lib/ai/agentforce-error-handler.d.ts +81 -0
  3. package/lib/ai/agentforce-error-handler.js +196 -0
  4. package/lib/ai/agentforce-error-handler.js.map +1 -0
  5. package/lib/ai/agentforce-priority-service.d.ts +82 -0
  6. package/lib/ai/agentforce-priority-service.js +257 -0
  7. package/lib/ai/agentforce-priority-service.js.map +1 -0
  8. package/lib/ai/agentforce-service.d.ts +99 -0
  9. package/lib/ai/agentforce-service.js +300 -0
  10. package/lib/ai/agentforce-service.js.map +1 -0
  11. package/lib/ai/circuit-breaker.d.ts +115 -0
  12. package/lib/ai/circuit-breaker.js +277 -0
  13. package/lib/ai/circuit-breaker.js.map +1 -0
  14. package/lib/ai/dependency-inference-service.d.ts +76 -0
  15. package/lib/ai/dependency-inference-service.js +220 -0
  16. package/lib/ai/dependency-inference-service.js.map +1 -0
  17. package/lib/ai/llm-provider-factory.d.ts +15 -0
  18. package/lib/ai/llm-provider-factory.js +36 -0
  19. package/lib/ai/llm-provider-factory.js.map +1 -0
  20. package/lib/ai/llm-provider.d.ts +27 -0
  21. package/lib/ai/llm-provider.js +2 -0
  22. package/lib/ai/llm-provider.js.map +1 -0
  23. package/lib/ai/openai-service.d.ts +20 -0
  24. package/lib/ai/openai-service.js +89 -0
  25. package/lib/ai/openai-service.js.map +1 -0
  26. package/lib/ai/prompt-builder.d.ts +79 -0
  27. package/lib/ai/prompt-builder.js +180 -0
  28. package/lib/ai/prompt-builder.js.map +1 -0
  29. package/lib/ai/response-parser.d.ts +67 -0
  30. package/lib/ai/response-parser.js +234 -0
  31. package/lib/ai/response-parser.js.map +1 -0
  32. package/lib/ai/wave-validation-service.d.ts +111 -0
  33. package/lib/ai/wave-validation-service.js +381 -0
  34. package/lib/ai/wave-validation-service.js.map +1 -0
  35. package/lib/analysis/analysis-reporter.d.ts +56 -0
  36. package/lib/analysis/analysis-reporter.js +170 -0
  37. package/lib/analysis/analysis-reporter.js.map +1 -0
  38. package/lib/analytics/error-analytics.d.ts +80 -0
  39. package/lib/analytics/error-analytics.js +162 -0
  40. package/lib/analytics/error-analytics.js.map +1 -0
  41. package/lib/commands/analyze.d.ts +49 -0
  42. package/lib/commands/analyze.js +232 -0
  43. package/lib/commands/analyze.js.map +1 -0
  44. package/lib/commands/config.d.ts +42 -0
  45. package/lib/commands/config.js +219 -0
  46. package/lib/commands/config.js.map +1 -0
  47. package/lib/commands/resume.d.ts +26 -0
  48. package/lib/commands/resume.js +69 -0
  49. package/lib/commands/resume.js.map +1 -0
  50. package/lib/commands/start.d.ts +70 -0
  51. package/lib/commands/start.js +659 -0
  52. package/lib/commands/start.js.map +1 -0
  53. package/lib/commands/status.d.ts +37 -0
  54. package/lib/commands/status.js +69 -0
  55. package/lib/commands/status.js.map +1 -0
  56. package/lib/commands/validate.d.ts +33 -0
  57. package/lib/commands/validate.js +66 -0
  58. package/lib/commands/validate.js.map +1 -0
  59. package/lib/config/repo-config.d.ts +22 -0
  60. package/lib/config/repo-config.js +31 -0
  61. package/lib/config/repo-config.js.map +1 -0
  62. package/lib/constants/agentforce-limits.d.ts +174 -0
  63. package/lib/constants/agentforce-limits.js +262 -0
  64. package/lib/constants/agentforce-limits.js.map +1 -0
  65. package/lib/constants/api-version.d.ts +70 -0
  66. package/lib/constants/api-version.js +122 -0
  67. package/lib/constants/api-version.js.map +1 -0
  68. package/lib/constants/deployment-order.d.ts +68 -0
  69. package/lib/constants/deployment-order.js +162 -0
  70. package/lib/constants/deployment-order.js.map +1 -0
  71. package/lib/constants/salesforce-limits.d.ts +107 -0
  72. package/lib/constants/salesforce-limits.js +104 -0
  73. package/lib/constants/salesforce-limits.js.map +1 -0
  74. package/lib/dependencies/circular-dependency-detector.d.ts +137 -0
  75. package/lib/dependencies/circular-dependency-detector.js +329 -0
  76. package/lib/dependencies/circular-dependency-detector.js.map +1 -0
  77. package/lib/dependencies/cycle-remediation-planner.d.ts +50 -0
  78. package/lib/dependencies/cycle-remediation-planner.js +192 -0
  79. package/lib/dependencies/cycle-remediation-planner.js.map +1 -0
  80. package/lib/dependencies/dependency-cache.d.ts +134 -0
  81. package/lib/dependencies/dependency-cache.js +303 -0
  82. package/lib/dependencies/dependency-cache.js.map +1 -0
  83. package/lib/dependencies/dependency-depth-calculator.d.ts +145 -0
  84. package/lib/dependencies/dependency-depth-calculator.js +368 -0
  85. package/lib/dependencies/dependency-depth-calculator.js.map +1 -0
  86. package/lib/dependencies/dependency-graph-builder.d.ts +151 -0
  87. package/lib/dependencies/dependency-graph-builder.js +411 -0
  88. package/lib/dependencies/dependency-graph-builder.js.map +1 -0
  89. package/lib/dependencies/dependency-impact-analyzer.d.ts +145 -0
  90. package/lib/dependencies/dependency-impact-analyzer.js +330 -0
  91. package/lib/dependencies/dependency-impact-analyzer.js.map +1 -0
  92. package/lib/dependencies/dependency-merger.d.ts +122 -0
  93. package/lib/dependencies/dependency-merger.js +245 -0
  94. package/lib/dependencies/dependency-merger.js.map +1 -0
  95. package/lib/dependencies/dependency-resolver.d.ts +157 -0
  96. package/lib/dependencies/dependency-resolver.js +298 -0
  97. package/lib/dependencies/dependency-resolver.js.map +1 -0
  98. package/lib/dependencies/dependency-validator.d.ts +123 -0
  99. package/lib/dependencies/dependency-validator.js +291 -0
  100. package/lib/dependencies/dependency-validator.js.map +1 -0
  101. package/lib/dependencies/graph-visualizer.d.ts +110 -0
  102. package/lib/dependencies/graph-visualizer.js +262 -0
  103. package/lib/dependencies/graph-visualizer.js.map +1 -0
  104. package/lib/dependencies/heuristic-inference.d.ts +136 -0
  105. package/lib/dependencies/heuristic-inference.js +430 -0
  106. package/lib/dependencies/heuristic-inference.js.map +1 -0
  107. package/lib/deployment/cycle-source-editor.d.ts +34 -0
  108. package/lib/deployment/cycle-source-editor.js +121 -0
  109. package/lib/deployment/cycle-source-editor.js.map +1 -0
  110. package/lib/deployment/deployment-error-handler.d.ts +38 -0
  111. package/lib/deployment/deployment-error-handler.js +79 -0
  112. package/lib/deployment/deployment-error-handler.js.map +1 -0
  113. package/lib/deployment/deployment-reporter.d.ts +63 -0
  114. package/lib/deployment/deployment-reporter.js +150 -0
  115. package/lib/deployment/deployment-reporter.js.map +1 -0
  116. package/lib/deployment/deployment-state-summary.d.ts +38 -0
  117. package/lib/deployment/deployment-state-summary.js +209 -0
  118. package/lib/deployment/deployment-state-summary.js.map +1 -0
  119. package/lib/deployment/deployment-status-service.d.ts +36 -0
  120. package/lib/deployment/deployment-status-service.js +128 -0
  121. package/lib/deployment/deployment-status-service.js.map +1 -0
  122. package/lib/deployment/deployment-tracker.d.ts +42 -0
  123. package/lib/deployment/deployment-tracker.js +79 -0
  124. package/lib/deployment/deployment-tracker.js.map +1 -0
  125. package/lib/deployment/deployment-validation-service.d.ts +28 -0
  126. package/lib/deployment/deployment-validation-service.js +161 -0
  127. package/lib/deployment/deployment-validation-service.js.map +1 -0
  128. package/lib/deployment/retry-handler.d.ts +37 -0
  129. package/lib/deployment/retry-handler.js +86 -0
  130. package/lib/deployment/retry-handler.js.map +1 -0
  131. package/lib/deployment/sf-cli-integration.d.ts +42 -0
  132. package/lib/deployment/sf-cli-integration.js +105 -0
  133. package/lib/deployment/sf-cli-integration.js.map +1 -0
  134. package/lib/deployment/state-manager.d.ts +61 -0
  135. package/lib/deployment/state-manager.js +83 -0
  136. package/lib/deployment/state-manager.js.map +1 -0
  137. package/lib/deployment/test-executor.d.ts +41 -0
  138. package/lib/deployment/test-executor.js +87 -0
  139. package/lib/deployment/test-executor.js.map +1 -0
  140. package/lib/errors/base-error.d.ts +24 -0
  141. package/lib/errors/base-error.js +66 -0
  142. package/lib/errors/base-error.js.map +1 -0
  143. package/lib/errors/dependency-error.d.ts +37 -0
  144. package/lib/errors/dependency-error.js +76 -0
  145. package/lib/errors/dependency-error.js.map +1 -0
  146. package/lib/errors/deployment-error.d.ts +55 -0
  147. package/lib/errors/deployment-error.js +132 -0
  148. package/lib/errors/deployment-error.js.map +1 -0
  149. package/lib/errors/index.d.ts +45 -0
  150. package/lib/errors/index.js +71 -0
  151. package/lib/errors/index.js.map +1 -0
  152. package/lib/errors/network-error.d.ts +53 -0
  153. package/lib/errors/network-error.js +111 -0
  154. package/lib/errors/network-error.js.map +1 -0
  155. package/lib/errors/parsing-error.d.ts +41 -0
  156. package/lib/errors/parsing-error.js +69 -0
  157. package/lib/errors/parsing-error.js.map +1 -0
  158. package/lib/errors/validation-error-reporter.d.ts +34 -0
  159. package/lib/errors/validation-error-reporter.js +99 -0
  160. package/lib/errors/validation-error-reporter.js.map +1 -0
  161. package/lib/errors/validation-error.d.ts +58 -0
  162. package/lib/errors/validation-error.js +131 -0
  163. package/lib/errors/validation-error.js.map +1 -0
  164. package/lib/index.d.ts +2 -0
  165. package/lib/index.js +2 -0
  166. package/lib/index.js.map +1 -0
  167. package/lib/monitoring/performance-monitor.d.ts +98 -0
  168. package/lib/monitoring/performance-monitor.js +260 -0
  169. package/lib/monitoring/performance-monitor.js.map +1 -0
  170. package/lib/parsers/apex-class-parser.d.ts +47 -0
  171. package/lib/parsers/apex-class-parser.js +368 -0
  172. package/lib/parsers/apex-class-parser.js.map +1 -0
  173. package/lib/parsers/apex-trigger-parser.d.ts +48 -0
  174. package/lib/parsers/apex-trigger-parser.js +229 -0
  175. package/lib/parsers/apex-trigger-parser.js.map +1 -0
  176. package/lib/parsers/aura-parser.d.ts +55 -0
  177. package/lib/parsers/aura-parser.js +229 -0
  178. package/lib/parsers/aura-parser.js.map +1 -0
  179. package/lib/parsers/bot-parser.d.ts +65 -0
  180. package/lib/parsers/bot-parser.js +225 -0
  181. package/lib/parsers/bot-parser.js.map +1 -0
  182. package/lib/parsers/custom-metadata-parser.d.ts +94 -0
  183. package/lib/parsers/custom-metadata-parser.js +199 -0
  184. package/lib/parsers/custom-metadata-parser.js.map +1 -0
  185. package/lib/parsers/custom-object-parser.d.ts +62 -0
  186. package/lib/parsers/custom-object-parser.js +297 -0
  187. package/lib/parsers/custom-object-parser.js.map +1 -0
  188. package/lib/parsers/email-template-parser.d.ts +64 -0
  189. package/lib/parsers/email-template-parser.js +238 -0
  190. package/lib/parsers/email-template-parser.js.map +1 -0
  191. package/lib/parsers/error-resilient-parser.d.ts +110 -0
  192. package/lib/parsers/error-resilient-parser.js +277 -0
  193. package/lib/parsers/error-resilient-parser.js.map +1 -0
  194. package/lib/parsers/flexipage-parser.d.ts +64 -0
  195. package/lib/parsers/flexipage-parser.js +196 -0
  196. package/lib/parsers/flexipage-parser.js.map +1 -0
  197. package/lib/parsers/flow-parser.d.ts +54 -0
  198. package/lib/parsers/flow-parser.js +287 -0
  199. package/lib/parsers/flow-parser.js.map +1 -0
  200. package/lib/parsers/genai-prompt-parser.d.ts +67 -0
  201. package/lib/parsers/genai-prompt-parser.js +160 -0
  202. package/lib/parsers/genai-prompt-parser.js.map +1 -0
  203. package/lib/parsers/layout-parser.d.ts +64 -0
  204. package/lib/parsers/layout-parser.js +267 -0
  205. package/lib/parsers/layout-parser.js.map +1 -0
  206. package/lib/parsers/lwc-parser.d.ts +60 -0
  207. package/lib/parsers/lwc-parser.js +264 -0
  208. package/lib/parsers/lwc-parser.js.map +1 -0
  209. package/lib/parsers/permission-set-parser.d.ts +86 -0
  210. package/lib/parsers/permission-set-parser.js +152 -0
  211. package/lib/parsers/permission-set-parser.js.map +1 -0
  212. package/lib/parsers/profile-parser.d.ts +81 -0
  213. package/lib/parsers/profile-parser.js +141 -0
  214. package/lib/parsers/profile-parser.js.map +1 -0
  215. package/lib/parsers/visualforce-parser.d.ts +47 -0
  216. package/lib/parsers/visualforce-parser.js +180 -0
  217. package/lib/parsers/visualforce-parser.js.map +1 -0
  218. package/lib/provisioning/data-provisioner.d.ts +88 -0
  219. package/lib/provisioning/data-provisioner.js +257 -0
  220. package/lib/provisioning/data-provisioner.js.map +1 -0
  221. package/lib/scanner/custom-structure-scanner.d.ts +66 -0
  222. package/lib/scanner/custom-structure-scanner.js +229 -0
  223. package/lib/scanner/custom-structure-scanner.js.map +1 -0
  224. package/lib/scanner/forceignore-parser.d.ts +69 -0
  225. package/lib/scanner/forceignore-parser.js +195 -0
  226. package/lib/scanner/forceignore-parser.js.map +1 -0
  227. package/lib/scanner/metadata-format-scanner.d.ts +77 -0
  228. package/lib/scanner/metadata-format-scanner.js +282 -0
  229. package/lib/scanner/metadata-format-scanner.js.map +1 -0
  230. package/lib/scanner/monorepo-scanner.d.ts +71 -0
  231. package/lib/scanner/monorepo-scanner.js +225 -0
  232. package/lib/scanner/monorepo-scanner.js.map +1 -0
  233. package/lib/scanner/project-validator.d.ts +55 -0
  234. package/lib/scanner/project-validator.js +235 -0
  235. package/lib/scanner/project-validator.js.map +1 -0
  236. package/lib/scanner/sfdx-project-detector.d.ts +86 -0
  237. package/lib/scanner/sfdx-project-detector.js +240 -0
  238. package/lib/scanner/sfdx-project-detector.js.map +1 -0
  239. package/lib/scanner/structure-validator.d.ts +64 -0
  240. package/lib/scanner/structure-validator.js +296 -0
  241. package/lib/scanner/structure-validator.js.map +1 -0
  242. package/lib/services/metadata-scanner-service.d.ts +64 -0
  243. package/lib/services/metadata-scanner-service.js +651 -0
  244. package/lib/services/metadata-scanner-service.js.map +1 -0
  245. package/lib/types/agentforce.d.ts +157 -0
  246. package/lib/types/agentforce.js +2 -0
  247. package/lib/types/agentforce.js.map +1 -0
  248. package/lib/types/dependency.d.ts +98 -0
  249. package/lib/types/dependency.js +5 -0
  250. package/lib/types/dependency.js.map +1 -0
  251. package/lib/types/deployment-plan.d.ts +81 -0
  252. package/lib/types/deployment-plan.js +6 -0
  253. package/lib/types/deployment-plan.js.map +1 -0
  254. package/lib/types/deployment.d.ts +88 -0
  255. package/lib/types/deployment.js +5 -0
  256. package/lib/types/deployment.js.map +1 -0
  257. package/lib/types/graph.d.ts +35 -0
  258. package/lib/types/graph.js +5 -0
  259. package/lib/types/graph.js.map +1 -0
  260. package/lib/types/index.d.ts +12 -0
  261. package/lib/types/index.js +17 -0
  262. package/lib/types/index.js.map +1 -0
  263. package/lib/types/metadata.d.ts +101 -0
  264. package/lib/types/metadata.js +13 -0
  265. package/lib/types/metadata.js.map +1 -0
  266. package/lib/types/project.d.ts +156 -0
  267. package/lib/types/project.js +56 -0
  268. package/lib/types/project.js.map +1 -0
  269. package/lib/types/salesforce/apex.d.ts +94 -0
  270. package/lib/types/salesforce/apex.js +6 -0
  271. package/lib/types/salesforce/apex.js.map +1 -0
  272. package/lib/types/salesforce/aura.d.ts +150 -0
  273. package/lib/types/salesforce/aura.js +6 -0
  274. package/lib/types/salesforce/aura.js.map +1 -0
  275. package/lib/types/salesforce/bot.d.ts +293 -0
  276. package/lib/types/salesforce/bot.js +6 -0
  277. package/lib/types/salesforce/bot.js.map +1 -0
  278. package/lib/types/salesforce/common.d.ts +15 -0
  279. package/lib/types/salesforce/common.js +5 -0
  280. package/lib/types/salesforce/common.js.map +1 -0
  281. package/lib/types/salesforce/custom-metadata.d.ts +92 -0
  282. package/lib/types/salesforce/custom-metadata.js +6 -0
  283. package/lib/types/salesforce/custom-metadata.js.map +1 -0
  284. package/lib/types/salesforce/email.d.ts +56 -0
  285. package/lib/types/salesforce/email.js +6 -0
  286. package/lib/types/salesforce/email.js.map +1 -0
  287. package/lib/types/salesforce/flexipage.d.ts +149 -0
  288. package/lib/types/salesforce/flexipage.js +6 -0
  289. package/lib/types/salesforce/flexipage.js.map +1 -0
  290. package/lib/types/salesforce/flow.d.ts +516 -0
  291. package/lib/types/salesforce/flow.js +6 -0
  292. package/lib/types/salesforce/flow.js.map +1 -0
  293. package/lib/types/salesforce/genai.d.ts +67 -0
  294. package/lib/types/salesforce/genai.js +6 -0
  295. package/lib/types/salesforce/genai.js.map +1 -0
  296. package/lib/types/salesforce/index.d.ts +27 -0
  297. package/lib/types/salesforce/index.js +43 -0
  298. package/lib/types/salesforce/index.js.map +1 -0
  299. package/lib/types/salesforce/layout.d.ts +236 -0
  300. package/lib/types/salesforce/layout.js +6 -0
  301. package/lib/types/salesforce/layout.js.map +1 -0
  302. package/lib/types/salesforce/lwc.d.ts +123 -0
  303. package/lib/types/salesforce/lwc.js +6 -0
  304. package/lib/types/salesforce/lwc.js.map +1 -0
  305. package/lib/types/salesforce/object.d.ts +427 -0
  306. package/lib/types/salesforce/object.js +6 -0
  307. package/lib/types/salesforce/object.js.map +1 -0
  308. package/lib/types/salesforce/parser-types.d.ts +79 -0
  309. package/lib/types/salesforce/parser-types.js +80 -0
  310. package/lib/types/salesforce/parser-types.js.map +1 -0
  311. package/lib/types/salesforce/permission.d.ts +289 -0
  312. package/lib/types/salesforce/permission.js +6 -0
  313. package/lib/types/salesforce/permission.js.map +1 -0
  314. package/lib/types/salesforce/resource.d.ts +93 -0
  315. package/lib/types/salesforce/resource.js +6 -0
  316. package/lib/types/salesforce/resource.js.map +1 -0
  317. package/lib/types/salesforce/visualforce.d.ts +70 -0
  318. package/lib/types/salesforce/visualforce.js +6 -0
  319. package/lib/types/salesforce/visualforce.js.map +1 -0
  320. package/lib/utils/cache-manager.d.ts +158 -0
  321. package/lib/utils/cache-manager.js +429 -0
  322. package/lib/utils/cache-manager.js.map +1 -0
  323. package/lib/utils/deployment-plan-manager.d.ts +40 -0
  324. package/lib/utils/deployment-plan-manager.js +183 -0
  325. package/lib/utils/deployment-plan-manager.js.map +1 -0
  326. package/lib/utils/error-aggregator.d.ts +117 -0
  327. package/lib/utils/error-aggregator.js +268 -0
  328. package/lib/utils/error-aggregator.js.map +1 -0
  329. package/lib/utils/file-system.d.ts +62 -0
  330. package/lib/utils/file-system.js +167 -0
  331. package/lib/utils/file-system.js.map +1 -0
  332. package/lib/utils/functional.d.ts +52 -0
  333. package/lib/utils/functional.js +61 -0
  334. package/lib/utils/functional.js.map +1 -0
  335. package/lib/utils/graph-algorithms.d.ts +53 -0
  336. package/lib/utils/graph-algorithms.js +177 -0
  337. package/lib/utils/graph-algorithms.js.map +1 -0
  338. package/lib/utils/logger.d.ts +154 -0
  339. package/lib/utils/logger.js +327 -0
  340. package/lib/utils/logger.js.map +1 -0
  341. package/lib/utils/network-handler.d.ts +64 -0
  342. package/lib/utils/network-handler.js +147 -0
  343. package/lib/utils/network-handler.js.map +1 -0
  344. package/lib/utils/performance.d.ts +148 -0
  345. package/lib/utils/performance.js +294 -0
  346. package/lib/utils/performance.js.map +1 -0
  347. package/lib/utils/string.d.ts +197 -0
  348. package/lib/utils/string.js +331 -0
  349. package/lib/utils/string.js.map +1 -0
  350. package/lib/utils/xml.d.ts +97 -0
  351. package/lib/utils/xml.js +227 -0
  352. package/lib/utils/xml.js.map +1 -0
  353. package/lib/validators/xml-metadata-validator.d.ts +106 -0
  354. package/lib/validators/xml-metadata-validator.js +509 -0
  355. package/lib/validators/xml-metadata-validator.js.map +1 -0
  356. package/lib/waves/priority-wave-generator-ai.d.ts +85 -0
  357. package/lib/waves/priority-wave-generator-ai.js +191 -0
  358. package/lib/waves/priority-wave-generator-ai.js.map +1 -0
  359. package/lib/waves/priority-wave-generator.d.ts +47 -0
  360. package/lib/waves/priority-wave-generator.js +88 -0
  361. package/lib/waves/priority-wave-generator.js.map +1 -0
  362. package/lib/waves/test-optimizer.d.ts +155 -0
  363. package/lib/waves/test-optimizer.js +290 -0
  364. package/lib/waves/test-optimizer.js.map +1 -0
  365. package/lib/waves/wave-builder.d.ts +147 -0
  366. package/lib/waves/wave-builder.js +286 -0
  367. package/lib/waves/wave-builder.js.map +1 -0
  368. package/lib/waves/wave-diff-generator.d.ts +17 -0
  369. package/lib/waves/wave-diff-generator.js +6 -0
  370. package/lib/waves/wave-diff-generator.js.map +1 -0
  371. package/lib/waves/wave-executor.d.ts +33 -0
  372. package/lib/waves/wave-executor.js +50 -0
  373. package/lib/waves/wave-executor.js.map +1 -0
  374. package/lib/waves/wave-merger.d.ts +96 -0
  375. package/lib/waves/wave-merger.js +181 -0
  376. package/lib/waves/wave-merger.js.map +1 -0
  377. package/lib/waves/wave-metadata-generator.d.ts +13 -0
  378. package/lib/waves/wave-metadata-generator.js +12 -0
  379. package/lib/waves/wave-metadata-generator.js.map +1 -0
  380. package/lib/waves/wave-splitter.d.ts +154 -0
  381. package/lib/waves/wave-splitter.js +307 -0
  382. package/lib/waves/wave-splitter.js.map +1 -0
  383. package/lib/waves/wave-validator.d.ts +17 -0
  384. package/lib/waves/wave-validator.js +15 -0
  385. package/lib/waves/wave-validator.js.map +1 -0
  386. package/messages/analyze.json +18 -0
  387. package/messages/config.json +29 -0
  388. package/messages/resume.json +9 -0
  389. package/messages/start.json +24 -0
  390. package/messages/status.json +8 -0
  391. package/messages/validate.json +9 -0
  392. package/npm-shrinkwrap.json +25676 -0
  393. package/oclif.lock +11988 -0
  394. package/oclif.manifest.json +589 -0
  395. package/package.json +224 -0
@@ -0,0 +1,330 @@
1
+ /**
2
+ * Dependency Impact Analyzer
3
+ * Analyzes the impact of changes to components in the dependency graph
4
+ *
5
+ * @ac US-032-AC-1: Given a component, find all dependents
6
+ * @ac US-032-AC-2: Calculate impact radius
7
+ * @ac US-032-AC-3: Identify critical components
8
+ * @ac US-032-AC-4: Generate impact report
9
+ * @ac US-032-AC-5: Suggest test scope based on impact
10
+ *
11
+ * @issue #32
12
+ */
13
+ import { getLogger } from '../utils/logger.js';
14
+ const logger = getLogger('DependencyImpactAnalyzer');
15
+ /**
16
+ * Dependency Impact Analyzer
17
+ *
18
+ * Analyzes the impact of changes to determine:
19
+ * - Which components are affected
20
+ * - Impact radius and severity
21
+ * - Critical components
22
+ * - Test scope recommendations
23
+ *
24
+ * Performance: O(V + E) using BFS
25
+ *
26
+ * @example
27
+ * const analyzer = new DependencyImpactAnalyzer(graph, reverseGraph);
28
+ * const result = analyzer.analyze(['ApexClass:AccountService']);
29
+ * console.log(`Total affected: ${result.totalAffected}`);
30
+ * console.log(`Impact level: ${result.overallImpactLevel}`);
31
+ * console.log(`Tests required: ${result.testScope.requiredTests.length}`);
32
+ */
33
+ export class DependencyImpactAnalyzer {
34
+ graph;
35
+ reverseGraph;
36
+ options;
37
+ constructor(graph, reverseGraph, options = {}) {
38
+ this.graph = graph;
39
+ this.reverseGraph = reverseGraph;
40
+ this.options = {
41
+ maxDepth: options.maxDepth ?? Number.POSITIVE_INFINITY,
42
+ includeTests: options.includeTests ?? true,
43
+ criticalThreshold: options.criticalThreshold ?? 10,
44
+ };
45
+ logger.debug('Initialized DependencyImpactAnalyzer', {
46
+ nodes: this.graph.size,
47
+ criticalThreshold: this.options.criticalThreshold,
48
+ });
49
+ }
50
+ /**
51
+ * Analyze impact of changes to one or more components
52
+ *
53
+ * @ac US-032-AC-1: Given a component, find all dependents
54
+ * @ac US-032-AC-2: Calculate impact radius
55
+ * @ac US-032-AC-4: Generate impact report
56
+ */
57
+ analyze(changedComponents) {
58
+ const startTime = Date.now();
59
+ // Calculate impact for each changed component
60
+ const impacts = new Map();
61
+ const allAffected = new Set();
62
+ for (const nodeId of changedComponents) {
63
+ const impact = this.calculateImpact(nodeId);
64
+ impacts.set(nodeId, impact);
65
+ // Collect all affected components (including transitive)
66
+ allAffected.add(nodeId);
67
+ const transitiveAffected = this.findAllDependents(nodeId);
68
+ for (const affected of transitiveAffected) {
69
+ allAffected.add(affected);
70
+ }
71
+ }
72
+ // Find critical components
73
+ const criticalComponents = this.identifyCriticalComponents();
74
+ // Calculate overall impact level
75
+ const overallImpactLevel = this.calculateOverallImpactLevel(impacts);
76
+ // Generate test scope recommendations
77
+ const testScope = this.generateTestScope(Array.from(allAffected), impacts);
78
+ const duration = Date.now() - startTime;
79
+ logger.info('Impact analysis completed', {
80
+ changedComponents: changedComponents.length,
81
+ totalAffected: allAffected.size,
82
+ impactLevel: overallImpactLevel,
83
+ criticalComponents: criticalComponents.length,
84
+ durationMs: duration,
85
+ });
86
+ return {
87
+ changedComponents,
88
+ impacts,
89
+ totalAffected: allAffected.size,
90
+ overallImpactLevel,
91
+ criticalComponents,
92
+ testScope,
93
+ };
94
+ }
95
+ /**
96
+ * Calculate impact for a single component
97
+ */
98
+ calculateImpact(nodeId) {
99
+ const directDependents = Array.from(this.reverseGraph.get(nodeId) ?? []);
100
+ const allAffected = this.findAllDependents(nodeId);
101
+ const impactRadius = this.calculateImpactRadius(nodeId, allAffected);
102
+ const riskScore = this.calculateRiskScore(directDependents.length, allAffected.size);
103
+ const impactLevel = DependencyImpactAnalyzer.getImpactLevel(riskScore);
104
+ return {
105
+ nodeId,
106
+ directDependents,
107
+ totalAffected: allAffected.size,
108
+ impactRadius,
109
+ impactLevel,
110
+ riskScore,
111
+ isCritical: directDependents.length >= this.options.criticalThreshold,
112
+ };
113
+ }
114
+ /**
115
+ * Find all dependents (transitive closure) of a component using BFS
116
+ */
117
+ findAllDependents(nodeId) {
118
+ const affected = new Set();
119
+ const queue = [{ nodeId, depth: 0 }];
120
+ const visited = new Set();
121
+ while (queue.length > 0) {
122
+ const { nodeId: current, depth } = queue.shift();
123
+ if (visited.has(current) || depth > this.options.maxDepth) {
124
+ continue;
125
+ }
126
+ visited.add(current);
127
+ affected.add(current);
128
+ const dependents = this.reverseGraph.get(current) ?? new Set();
129
+ for (const dependent of dependents) {
130
+ // Filter out test classes if configured
131
+ if (!this.options.includeTests && this.isTestClass(dependent)) {
132
+ continue;
133
+ }
134
+ if (!visited.has(dependent)) {
135
+ queue.push({ nodeId: dependent, depth: depth + 1 });
136
+ }
137
+ }
138
+ }
139
+ // Remove the original node from affected set
140
+ affected.delete(nodeId);
141
+ return affected;
142
+ }
143
+ /**
144
+ * Calculate impact radius (maximum distance to affected component)
145
+ */
146
+ calculateImpactRadius(nodeId, affected) {
147
+ let maxRadius = 0;
148
+ const queue = [{ nodeId, distance: 0 }];
149
+ const visited = new Set();
150
+ while (queue.length > 0) {
151
+ const { nodeId: current, distance } = queue.shift();
152
+ if (visited.has(current)) {
153
+ continue;
154
+ }
155
+ visited.add(current);
156
+ maxRadius = Math.max(maxRadius, distance);
157
+ const dependents = this.reverseGraph.get(current) ?? new Set();
158
+ for (const dependent of dependents) {
159
+ if (affected.has(dependent) && !visited.has(dependent)) {
160
+ queue.push({ nodeId: dependent, distance: distance + 1 });
161
+ }
162
+ }
163
+ }
164
+ return maxRadius;
165
+ }
166
+ /**
167
+ * Calculate risk score (0-100) based on number of affected components
168
+ */
169
+ calculateRiskScore(directDependents, totalAffected) {
170
+ // Risk factors:
171
+ // - Direct dependents (40% weight)
172
+ // - Total affected (60% weight)
173
+ const directScore = Math.min((directDependents / this.options.criticalThreshold) * 40, 40);
174
+ const totalScore = Math.min((totalAffected / (this.options.criticalThreshold * 3)) * 60, 60);
175
+ return Math.round(directScore + totalScore);
176
+ }
177
+ /**
178
+ * Get impact level based on risk score
179
+ */
180
+ static getImpactLevel(riskScore) {
181
+ if (riskScore >= 80)
182
+ return 'critical';
183
+ if (riskScore >= 60)
184
+ return 'high';
185
+ if (riskScore >= 40)
186
+ return 'medium';
187
+ if (riskScore >= 20)
188
+ return 'low';
189
+ return 'minimal';
190
+ }
191
+ /**
192
+ * @ac US-032-AC-3: Identify critical components
193
+ *
194
+ * Find components with many dependents
195
+ */
196
+ identifyCriticalComponents() {
197
+ const critical = [];
198
+ for (const [nodeId, dependents] of this.reverseGraph.entries()) {
199
+ if (dependents.size >= this.options.criticalThreshold) {
200
+ critical.push(nodeId);
201
+ }
202
+ }
203
+ // Sort by number of dependents (descending)
204
+ critical.sort((a, b) => {
205
+ const aCount = this.reverseGraph.get(a)?.size ?? 0;
206
+ const bCount = this.reverseGraph.get(b)?.size ?? 0;
207
+ return bCount - aCount;
208
+ });
209
+ logger.info('Critical components identified', {
210
+ count: critical.length,
211
+ threshold: this.options.criticalThreshold,
212
+ });
213
+ return critical;
214
+ }
215
+ /**
216
+ * Calculate overall impact level from individual impacts
217
+ */
218
+ calculateOverallImpactLevel(impacts) {
219
+ let maxScore = 0;
220
+ for (const impact of impacts.values()) {
221
+ maxScore = Math.max(maxScore, impact.riskScore);
222
+ }
223
+ return DependencyImpactAnalyzer.getImpactLevel(maxScore);
224
+ }
225
+ /**
226
+ * @ac US-032-AC-5: Suggest test scope based on impact
227
+ *
228
+ * Generate test scope recommendations
229
+ */
230
+ generateTestScope(affectedComponents, impacts) {
231
+ const requiredTests = [];
232
+ const recommendedTests = [];
233
+ const optionalTests = [];
234
+ for (const nodeId of affectedComponents) {
235
+ // Check if it's a test class
236
+ if (this.isTestClass(nodeId)) {
237
+ // Direct changes to test classes are required
238
+ if (impacts.has(nodeId)) {
239
+ requiredTests.push(nodeId);
240
+ }
241
+ else {
242
+ recommendedTests.push(nodeId);
243
+ }
244
+ continue;
245
+ }
246
+ // Find associated test class
247
+ const testClass = this.findTestClass(nodeId);
248
+ if (testClass) {
249
+ const impact = impacts.get(nodeId);
250
+ if (impact) {
251
+ // High/critical impact = required
252
+ if (impact.impactLevel === 'high' || impact.impactLevel === 'critical') {
253
+ requiredTests.push(testClass);
254
+ }
255
+ else if (impact.impactLevel === 'medium') {
256
+ recommendedTests.push(testClass);
257
+ }
258
+ else {
259
+ optionalTests.push(testClass);
260
+ }
261
+ }
262
+ else {
263
+ // Affected but not directly changed
264
+ recommendedTests.push(testClass);
265
+ }
266
+ }
267
+ }
268
+ // Determine priority
269
+ let priority = 'low';
270
+ const totalTests = requiredTests.length + recommendedTests.length;
271
+ if (requiredTests.length >= 1 && affectedComponents.length > 15) {
272
+ priority = 'high';
273
+ }
274
+ else if (requiredTests.length > 10 || impacts.size > 5) {
275
+ priority = 'high';
276
+ }
277
+ else if (requiredTests.length > 3 || totalTests > 10) {
278
+ priority = 'medium';
279
+ }
280
+ return {
281
+ requiredTests: Array.from(new Set(requiredTests)),
282
+ recommendedTests: Array.from(new Set(recommendedTests)),
283
+ optionalTests: Array.from(new Set(optionalTests)),
284
+ estimatedTestCount: requiredTests.length + recommendedTests.length,
285
+ priority,
286
+ };
287
+ }
288
+ /**
289
+ * Check if a component is a test class
290
+ */
291
+ isTestClass(nodeId) {
292
+ return nodeId.toLowerCase().includes('test');
293
+ }
294
+ /**
295
+ * Find associated test class for a component
296
+ */
297
+ findTestClass(nodeId) {
298
+ // Extract component name
299
+ const parts = nodeId.split(':');
300
+ if (parts.length !== 2)
301
+ return undefined;
302
+ const [type, name] = parts;
303
+ // Common test naming patterns
304
+ const testPatterns = [
305
+ `${type}:${name}Test`,
306
+ `${type}:Test${name}`,
307
+ `${type}:${name}_Test`,
308
+ `${type}:${name}Tests`,
309
+ ];
310
+ for (const pattern of testPatterns) {
311
+ if (this.graph.has(pattern)) {
312
+ return pattern;
313
+ }
314
+ }
315
+ return undefined;
316
+ }
317
+ /**
318
+ * Get impact for a specific component
319
+ */
320
+ getImpact(nodeId) {
321
+ return this.calculateImpact(nodeId);
322
+ }
323
+ /**
324
+ * Get all critical components
325
+ */
326
+ getCriticalComponents() {
327
+ return this.identifyCriticalComponents();
328
+ }
329
+ }
330
+ //# sourceMappingURL=dependency-impact-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-impact-analyzer.js","sourceRoot":"","sources":["../../src/dependencies/dependency-impact-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,MAAM,MAAM,GAAG,SAAS,CAAC,0BAA0B,CAAC,CAAC;AAuDrD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,wBAAwB;IAC3B,KAAK,CAAkB;IACvB,YAAY,CAAkB;IAC9B,OAAO,CAAkC;IAEjD,YACE,KAAsB,EACtB,YAA6B,EAC7B,UAAiC,EAAE;QAEnC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG;YACb,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,iBAAiB;YACtD,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,IAAI;YAC1C,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,IAAI,EAAE;SACnD,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE;YACnD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YACtB,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB;SAClD,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACI,OAAO,CAAC,iBAA2B;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,8CAA8C;QAC9C,MAAM,OAAO,GAAG,IAAI,GAAG,EAA2B,CAAC;QACnD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QAEtC,KAAK,MAAM,MAAM,IAAI,iBAAiB,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAE5B,yDAAyD;YACzD,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACxB,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC1D,KAAK,MAAM,QAAQ,IAAI,kBAAkB,EAAE,CAAC;gBAC1C,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,MAAM,kBAAkB,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAE7D,iCAAiC;QACjC,MAAM,kBAAkB,GAAG,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC;QAErE,sCAAsC;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;QAE3E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE;YACvC,iBAAiB,EAAE,iBAAiB,CAAC,MAAM;YAC3C,aAAa,EAAE,WAAW,CAAC,IAAI;YAC/B,WAAW,EAAE,kBAAkB;YAC/B,kBAAkB,EAAE,kBAAkB,CAAC,MAAM;YAC7C,UAAU,EAAE,QAAQ;SACrB,CAAC,CAAC;QAEH,OAAO;YACL,iBAAiB;YACjB,OAAO;YACP,aAAa,EAAE,WAAW,CAAC,IAAI;YAC/B,kBAAkB;YAClB,kBAAkB;YAClB,SAAS;SACV,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,MAAc;QACpC,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACzE,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACrE,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QACrF,MAAM,WAAW,GAAG,wBAAwB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAEvE,OAAO;YACL,MAAM;YACN,gBAAgB;YAChB,aAAa,EAAE,WAAW,CAAC,IAAI;YAC/B,YAAY;YACZ,WAAW;YACX,SAAS;YACT,UAAU,EAAE,gBAAgB,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB;SACtE,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,MAAc;QACtC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,MAAM,KAAK,GAA6C,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/E,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAElC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;YAElD,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAC1D,SAAS;YACX,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACrB,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAEtB,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;YAC/D,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACnC,wCAAwC;gBACxC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC9D,SAAS;gBACX,CAAC;gBAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;gBACtD,CAAC;YACH,CAAC;QACH,CAAC;QAED,6CAA6C;QAC7C,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAExB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,MAAc,EAAE,QAAqB;QACjE,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,MAAM,KAAK,GAAgD,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QACrF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAElC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;YAErD,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzB,SAAS;YACX,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACrB,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAE1C,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;YAC/D,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACnC,IAAI,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBACvD,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC5D,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,gBAAwB,EAAE,aAAqB;QACxE,gBAAgB;QAChB,mCAAmC;QACnC,gCAAgC;QAEhC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3F,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;QAE7F,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,cAAc,CAAC,SAAiB;QAC7C,IAAI,SAAS,IAAI,EAAE;YAAE,OAAO,UAAU,CAAC;QACvC,IAAI,SAAS,IAAI,EAAE;YAAE,OAAO,MAAM,CAAC;QACnC,IAAI,SAAS,IAAI,EAAE;YAAE,OAAO,QAAQ,CAAC;QACrC,IAAI,SAAS,IAAI,EAAE;YAAE,OAAO,KAAK,CAAC;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACK,0BAA0B;QAChC,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,KAAK,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;YAC/D,IAAI,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;gBACtD,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QAED,4CAA4C;QAC5C,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACrB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC;YACnD,OAAO,MAAM,GAAG,MAAM,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE;YAC5C,KAAK,EAAE,QAAQ,CAAC,MAAM;YACtB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB;SAC1C,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,2BAA2B,CAAC,OAAqC;QACvE,IAAI,QAAQ,GAAG,CAAC,CAAC;QAEjB,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACtC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,wBAAwB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC3D,CAAC;IAED;;;;OAIG;IACK,iBAAiB,CAAC,kBAA4B,EAAE,OAAqC;QAC3F,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,MAAM,gBAAgB,GAAa,EAAE,CAAC;QACtC,MAAM,aAAa,GAAa,EAAE,CAAC;QAEnC,KAAK,MAAM,MAAM,IAAI,kBAAkB,EAAE,CAAC;YACxC,6BAA6B;YAC7B,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7B,8CAA8C;gBAC9C,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBACxB,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC7B,CAAC;qBAAM,CAAC;oBACN,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAChC,CAAC;gBACD,SAAS;YACX,CAAC;YAED,6BAA6B;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACnC,IAAI,MAAM,EAAE,CAAC;oBACX,kCAAkC;oBAClC,IAAI,MAAM,CAAC,WAAW,KAAK,MAAM,IAAI,MAAM,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;wBACvE,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAChC,CAAC;yBAAM,IAAI,MAAM,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;wBAC3C,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACnC,CAAC;yBAAM,CAAC;wBACN,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAChC,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,oCAAoC;oBACpC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,IAAI,QAAQ,GAA8B,KAAK,CAAC;QAChD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC;QAElE,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,IAAI,kBAAkB,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YAChE,QAAQ,GAAG,MAAM,CAAC;QACpB,CAAC;aAAM,IAAI,aAAa,CAAC,MAAM,GAAG,EAAE,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACzD,QAAQ,GAAG,MAAM,CAAC;QACpB,CAAC;aAAM,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,GAAG,EAAE,EAAE,CAAC;YACvD,QAAQ,GAAG,QAAQ,CAAC;QACtB,CAAC;QAED,OAAO;YACL,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;YACjD,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC;YACvD,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;YACjD,kBAAkB,EAAE,aAAa,CAAC,MAAM,GAAG,gBAAgB,CAAC,MAAM;YAClE,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,MAAc;QAChC,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,MAAc;QAClC,yBAAyB;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAEzC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;QAE3B,8BAA8B;QAC9B,MAAM,YAAY,GAAG;YACnB,GAAG,IAAI,IAAI,IAAI,MAAM;YACrB,GAAG,IAAI,QAAQ,IAAI,EAAE;YACrB,GAAG,IAAI,IAAI,IAAI,OAAO;YACtB,GAAG,IAAI,IAAI,IAAI,OAAO;SACvB,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5B,OAAO,OAAO,CAAC;YACjB,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACI,SAAS,CAAC,MAAc;QAC7B,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACI,qBAAqB;QAC1B,OAAO,IAAI,CAAC,0BAA0B,EAAE,CAAC;IAC3C,CAAC;CACF"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Dependency Merger
3
+ * Merges static parser dependencies with AI-inferred dependencies
4
+ *
5
+ * @ac US-037-AC-1: Merge static parser dependencies
6
+ * @ac US-037-AC-2: Merge AI-inferred dependencies
7
+ * @ac US-037-AC-3: Resolve conflicts (prefer static)
8
+ * @ac US-037-AC-4: Track dependency source
9
+ * @ac US-037-AC-5: Report merged dependencies
10
+ * @ac US-037-AC-6: Confidence scoring
11
+ *
12
+ * @issue #37
13
+ */
14
+ import type { NodeId, DependencyGraph, InferredDependency } from '../types/dependency.js';
15
+ import type { MetadataComponent } from '../types/metadata.js';
16
+ /**
17
+ * Dependency source
18
+ */
19
+ export type DependencySource = 'static' | 'inferred' | 'merged';
20
+ /**
21
+ * Merged dependency information
22
+ */
23
+ export type MergedDependency = {
24
+ from: NodeId;
25
+ to: NodeId;
26
+ source: DependencySource;
27
+ confidence: number;
28
+ reasons: string[];
29
+ };
30
+ /**
31
+ * Merge result
32
+ */
33
+ export type MergeResult = {
34
+ graph: DependencyGraph;
35
+ dependencies: MergedDependency[];
36
+ stats: MergeStats;
37
+ };
38
+ /**
39
+ * Merge statistics
40
+ */
41
+ export type MergeStats = {
42
+ totalDependencies: number;
43
+ staticDependencies: number;
44
+ inferredDependencies: number;
45
+ mergedDependencies: number;
46
+ conflicts: number;
47
+ avgConfidence: number;
48
+ };
49
+ /**
50
+ * Merger options
51
+ */
52
+ export type MergerOptions = {
53
+ /** Minimum confidence threshold for inferred dependencies (0-1) */
54
+ minConfidence?: number;
55
+ /** Prefer static over inferred in conflicts */
56
+ preferStatic?: boolean;
57
+ /** Include low confidence inferences */
58
+ includeLowConfidence?: boolean;
59
+ };
60
+ /**
61
+ * Dependency Merger
62
+ *
63
+ * Merges dependencies from multiple sources:
64
+ * 1. Static parser dependencies (from metadata files)
65
+ * 2. AI-inferred dependencies (from heuristics/patterns)
66
+ *
67
+ * Conflict Resolution:
68
+ * - Static dependencies always take precedence
69
+ * - Inferred dependencies are added if not in static
70
+ * - Confidence scores help prioritize inferences
71
+ *
72
+ * Performance: O(V + E)
73
+ *
74
+ * @example
75
+ * const merger = new DependencyMerger({
76
+ * minConfidence: 0.7,
77
+ * preferStatic: true
78
+ * });
79
+ *
80
+ * const result = merger.merge(components, inferences);
81
+ * console.log(`Merged ${result.stats.totalDependencies} dependencies`);
82
+ */
83
+ export declare class DependencyMerger {
84
+ private options;
85
+ constructor(options?: MergerOptions);
86
+ /**
87
+ * @ac US-037-AC-1: Merge static parser dependencies
88
+ * @ac US-037-AC-2: Merge AI-inferred dependencies
89
+ * @ac US-037-AC-3: Resolve conflicts (prefer static)
90
+ * @ac US-037-AC-4: Track dependency source
91
+ * @ac US-037-AC-5: Report merged dependencies
92
+ */
93
+ merge(components: Map<NodeId, MetadataComponent>, inferences: InferredDependency[]): MergeResult;
94
+ /**
95
+ * Filter dependencies by confidence
96
+ */
97
+ filterByConfidence(dependencies: MergedDependency[], minConfidence: number): MergedDependency[];
98
+ /**
99
+ * Get dependencies by source
100
+ */
101
+ getDependenciesBySource(dependencies: MergedDependency[], source: DependencySource): MergedDependency[];
102
+ /**
103
+ * Get low confidence dependencies (potential false positives)
104
+ */
105
+ getLowConfidenceDependencies(dependencies: MergedDependency[], threshold?: number): MergedDependency[];
106
+ /**
107
+ * @ac US-037-AC-6: Confidence scoring
108
+ */
109
+ calculateOverallConfidence(dependencies: MergedDependency[]): number;
110
+ /**
111
+ * Get conflicts (dependencies that exist in both static and inferred)
112
+ */
113
+ getConflicts(staticDeps: Set<string>, inferences: InferredDependency[]): Array<{
114
+ from: NodeId;
115
+ to: NodeId;
116
+ confidence: number;
117
+ }>;
118
+ /**
119
+ * Generate merge report
120
+ */
121
+ generateReport(result: MergeResult): string;
122
+ }