@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,85 @@
1
+ /**
2
+ * AI-Enhanced Priority Wave Generator - US-042 + US-057
3
+ * Extends priority wave generation with Agentforce AI
4
+ *
5
+ * @ac US-042-AC-1: Use deployment order constants
6
+ * @ac US-042-AC-2: Objects before classes before triggers
7
+ * @ac US-042-AC-3: Break ties using priorities
8
+ * @ac US-042-AC-4: User-defined priority overrides
9
+ * @ac US-042-AC-5: Report priority decisions
10
+ * @ac US-042-AC-6: Validate no dependency violations
11
+ * @ac US-057-AC-5: Merge with static priorities
12
+ * @ac US-057-AC-6: Report AI decisions
13
+ *
14
+ * @issue #42, #57
15
+ */
16
+ import type { AgentforcePriorityService } from '../ai/agentforce-priority-service.js';
17
+ import type { NodeId } from '../types/dependency.js';
18
+ import type { PriorityOverride } from '../types/deployment-plan.js';
19
+ import type { MetadataComponent } from '../types/metadata.js';
20
+ import { PriorityWaveGenerator, type PriorityOptions } from './priority-wave-generator.js';
21
+ import type { Wave } from './wave-builder.js';
22
+ export type AIEnhancedOptions = PriorityOptions & {
23
+ agentforceService?: AgentforcePriorityService;
24
+ orgType?: string;
25
+ industry?: string;
26
+ autoAIForUnknown?: boolean;
27
+ };
28
+ /**
29
+ * AI-Enhanced Priority Wave Generator
30
+ *
31
+ * Combines static priority rules with AI-powered recommendations
32
+ * for intelligent deployment ordering.
33
+ *
34
+ * @example
35
+ * const aiService = new AgentforcePriorityService({ apiKey: 'xxx' });
36
+ * const generator = new AIEnhancedPriorityWaveGenerator({
37
+ * agentforceService: aiService,
38
+ * orgType: 'Production',
39
+ * industry: 'Fintech'
40
+ * });
41
+ *
42
+ * const waves = await generator.applyPriorityWavesAsync(baseWaves, components);
43
+ */
44
+ export declare class AIEnhancedPriorityWaveGenerator extends PriorityWaveGenerator {
45
+ private agentforceService?;
46
+ private aiAnalysisResult?;
47
+ private orgType?;
48
+ private industry?;
49
+ private autoAIForUnknown;
50
+ private unknownTypesDetected;
51
+ constructor(options?: AIEnhancedOptions);
52
+ /**
53
+ * @ac US-057-AC-5: Merge with static priorities
54
+ * @ac US-042-AC-4: User-defined priority overrides
55
+ */
56
+ applyPriorityWavesAsync(waves: Wave[], components: Map<NodeId, MetadataComponent>): Promise<Wave[]>;
57
+ /**
58
+ * Detect components with unknown metadata types (priority 99 or not in DEPLOYMENT_ORDER)
59
+ */
60
+ private detectUnknownTypes;
61
+ /**
62
+ * @ac US-057-AC-5: Merge with static priorities
63
+ */
64
+ private mergeAIPriorities;
65
+ /**
66
+ * @ac US-057-AC-6: Report AI decisions
67
+ */
68
+ getAIReport(): string | undefined;
69
+ /**
70
+ * @ac US-057-AC-6: Report AI decisions
71
+ */
72
+ getAIStats(): {
73
+ aiAdjustments: number;
74
+ aiExecutionTime: number;
75
+ tokensUsed?: number;
76
+ unknownTypesDetected: number;
77
+ unknownTypes: string[];
78
+ usedFallback: boolean;
79
+ } | undefined;
80
+ getAIPriorityOverrides(components: Map<NodeId, MetadataComponent>): Record<string, PriorityOverride>;
81
+ /**
82
+ * Get warning message if unknown types were detected without AI
83
+ */
84
+ getUnknownTypesWarning(): string | undefined;
85
+ }
@@ -0,0 +1,191 @@
1
+ /**
2
+ * AI-Enhanced Priority Wave Generator - US-042 + US-057
3
+ * Extends priority wave generation with Agentforce AI
4
+ *
5
+ * @ac US-042-AC-1: Use deployment order constants
6
+ * @ac US-042-AC-2: Objects before classes before triggers
7
+ * @ac US-042-AC-3: Break ties using priorities
8
+ * @ac US-042-AC-4: User-defined priority overrides
9
+ * @ac US-042-AC-5: Report priority decisions
10
+ * @ac US-042-AC-6: Validate no dependency violations
11
+ * @ac US-057-AC-5: Merge with static priorities
12
+ * @ac US-057-AC-6: Report AI decisions
13
+ *
14
+ * @issue #42, #57
15
+ */
16
+ import { DEPLOYMENT_ORDER } from '../constants/deployment-order.js';
17
+ import { getLogger } from '../utils/logger.js';
18
+ import { PriorityWaveGenerator } from './priority-wave-generator.js';
19
+ const logger = getLogger('AIEnhancedPriorityWaveGenerator');
20
+ /**
21
+ * AI-Enhanced Priority Wave Generator
22
+ *
23
+ * Combines static priority rules with AI-powered recommendations
24
+ * for intelligent deployment ordering.
25
+ *
26
+ * @example
27
+ * const aiService = new AgentforcePriorityService({ apiKey: 'xxx' });
28
+ * const generator = new AIEnhancedPriorityWaveGenerator({
29
+ * agentforceService: aiService,
30
+ * orgType: 'Production',
31
+ * industry: 'Fintech'
32
+ * });
33
+ *
34
+ * const waves = await generator.applyPriorityWavesAsync(baseWaves, components);
35
+ */
36
+ export class AIEnhancedPriorityWaveGenerator extends PriorityWaveGenerator {
37
+ agentforceService;
38
+ aiAnalysisResult;
39
+ orgType;
40
+ industry;
41
+ autoAIForUnknown;
42
+ unknownTypesDetected = new Set();
43
+ constructor(options = {}) {
44
+ super(options);
45
+ this.agentforceService = options.agentforceService;
46
+ this.orgType = options.orgType;
47
+ this.industry = options.industry;
48
+ this.autoAIForUnknown = options.autoAIForUnknown ?? true;
49
+ }
50
+ /**
51
+ * @ac US-057-AC-5: Merge with static priorities
52
+ * @ac US-042-AC-4: User-defined priority overrides
53
+ */
54
+ async applyPriorityWavesAsync(waves, components) {
55
+ // Detect unknown metadata types
56
+ const unknownComponents = this.detectUnknownTypes(components);
57
+ if (unknownComponents.length > 0) {
58
+ logger.warn('Unknown metadata types detected', {
59
+ count: unknownComponents.length,
60
+ types: Array.from(this.unknownTypesDetected),
61
+ });
62
+ // Auto-enable AI for unknown types if service available
63
+ if (this.agentforceService && this.autoAIForUnknown) {
64
+ logger.info('Auto-enabling AI analysis for unknown types');
65
+ }
66
+ else if (!this.agentforceService && unknownComponents.length > 0) {
67
+ logger.warn('Unknown types found but no AI service configured', {
68
+ types: Array.from(this.unknownTypesDetected),
69
+ suggestion: 'Use --use-ai flag for intelligent prioritization',
70
+ });
71
+ }
72
+ }
73
+ // Get AI recommendations if available
74
+ if (this.agentforceService) {
75
+ const componentList = Array.from(components.values());
76
+ // Prioritize unknown types in AI analysis
77
+ const componentsToAnalyze = this.autoAIForUnknown && unknownComponents.length > 0
78
+ ? unknownComponents // Focus on unknowns first
79
+ : componentList;
80
+ this.aiAnalysisResult = await this.agentforceService.analyzePriorities(componentsToAnalyze, {
81
+ orgType: this.orgType,
82
+ industry: this.industry,
83
+ });
84
+ logger.info('AI analysis complete', {
85
+ adjustments: this.aiAnalysisResult.aiAdjustments,
86
+ executionTime: this.aiAnalysisResult.executionTime,
87
+ unknownTypesAnalyzed: unknownComponents.length,
88
+ });
89
+ // Merge AI recommendations into user priorities
90
+ this.mergeAIPriorities(components);
91
+ }
92
+ // Use base class method with enhanced priorities
93
+ return this.applyPriorityWaves(waves, components);
94
+ }
95
+ /**
96
+ * Detect components with unknown metadata types (priority 99 or not in DEPLOYMENT_ORDER)
97
+ */
98
+ detectUnknownTypes(components) {
99
+ const unknownComponents = [];
100
+ for (const component of components.values()) {
101
+ const priority = DEPLOYMENT_ORDER[component.type];
102
+ // Unknown if priority is 99 or not defined
103
+ if (!priority || priority === 99) {
104
+ this.unknownTypesDetected.add(component.type);
105
+ unknownComponents.push(component);
106
+ }
107
+ }
108
+ return unknownComponents;
109
+ }
110
+ /**
111
+ * @ac US-057-AC-5: Merge with static priorities
112
+ */
113
+ mergeAIPriorities(components) {
114
+ if (!this.aiAnalysisResult)
115
+ return;
116
+ // Access protected options from base class
117
+ const baseOptions = this.options;
118
+ const userPriorities = baseOptions.userPriorities ?? new Map();
119
+ for (const rec of this.aiAnalysisResult.recommendations) {
120
+ // Find component by name
121
+ const nodeId = Array.from(components.keys()).find((id) => id.endsWith(`:${rec.componentName}`));
122
+ if (nodeId && rec.confidence > 0.8) {
123
+ // Only apply if no user override exists
124
+ if (!userPriorities.has(nodeId)) {
125
+ userPriorities.set(nodeId, rec.priority);
126
+ logger.debug('Applied AI priority', {
127
+ component: nodeId,
128
+ priority: rec.priority,
129
+ reason: rec.reason,
130
+ });
131
+ }
132
+ }
133
+ }
134
+ }
135
+ /**
136
+ * @ac US-057-AC-6: Report AI decisions
137
+ */
138
+ getAIReport() {
139
+ if (!this.aiAnalysisResult || !this.agentforceService) {
140
+ return undefined;
141
+ }
142
+ return this.agentforceService.formatDecisionReport(this.aiAnalysisResult);
143
+ }
144
+ /**
145
+ * @ac US-057-AC-6: Report AI decisions
146
+ */
147
+ getAIStats() {
148
+ if (!this.aiAnalysisResult)
149
+ return undefined;
150
+ return {
151
+ aiAdjustments: this.aiAnalysisResult.aiAdjustments,
152
+ aiExecutionTime: this.aiAnalysisResult.executionTime,
153
+ tokensUsed: this.aiAnalysisResult.tokensUsed,
154
+ unknownTypesDetected: this.unknownTypesDetected.size,
155
+ unknownTypes: Array.from(this.unknownTypesDetected),
156
+ usedFallback: this.aiAnalysisResult.usedFallback,
157
+ };
158
+ }
159
+ getAIPriorityOverrides(components) {
160
+ if (!this.aiAnalysisResult) {
161
+ return {};
162
+ }
163
+ const overrides = {};
164
+ for (const recommendation of this.aiAnalysisResult.recommendations) {
165
+ const nodeId = Array.from(components.keys()).find((id) => id.endsWith(`:${recommendation.componentName}`));
166
+ if (nodeId && recommendation.confidence > 0.8) {
167
+ overrides[nodeId] = {
168
+ priority: recommendation.priority,
169
+ source: 'ai',
170
+ confidence: recommendation.confidence,
171
+ reason: recommendation.reason,
172
+ appliedAt: new Date().toISOString(),
173
+ };
174
+ }
175
+ }
176
+ return overrides;
177
+ }
178
+ /**
179
+ * Get warning message if unknown types were detected without AI
180
+ */
181
+ getUnknownTypesWarning() {
182
+ if (this.unknownTypesDetected.size === 0) {
183
+ return undefined;
184
+ }
185
+ if (!this.agentforceService) {
186
+ return `⚠️ Found ${this.unknownTypesDetected.size} unknown metadata type(s): ${Array.from(this.unknownTypesDetected).join(', ')}\n💡 Tip: Use --use-ai for intelligent prioritization of unknown types`;
187
+ }
188
+ return undefined;
189
+ }
190
+ }
191
+ //# sourceMappingURL=priority-wave-generator-ai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priority-wave-generator-ai.js","sourceRoot":"","sources":["../../src/waves/priority-wave-generator-ai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Priority-Based Wave Generator
3
+ * Prioritizes components by importance for wave generation
4
+ *
5
+ * @ac US-042-AC-1: Use deployment order constants
6
+ * @ac US-042-AC-2: Objects before classes before triggers
7
+ * @ac US-042-AC-3: Break ties using priorities
8
+ * @ac US-042-AC-4: User-defined priority overrides
9
+ * @ac US-042-AC-5: Report priority decisions
10
+ * @ac US-042-AC-6: Validate no dependency violations
11
+ *
12
+ * @issue #42
13
+ */
14
+ import type { NodeId } from '../types/dependency.js';
15
+ import type { MetadataComponent } from '../types/metadata.js';
16
+ import type { Wave } from './wave-builder.js';
17
+ export type PriorityOptions = {
18
+ userPriorities?: Map<NodeId, number>;
19
+ respectDependencyOrder?: boolean;
20
+ };
21
+ /**
22
+ * Priority-Based Wave Generator
23
+ *
24
+ * Generates waves with component prioritization:
25
+ * 1. Metadata type priority (Objects → Classes → Triggers)
26
+ * 2. User-defined priorities
27
+ * 3. Dependency order
28
+ *
29
+ * @example
30
+ * const generator = new PriorityWaveGenerator({
31
+ * userPriorities: new Map([['ApexClass:Critical', 100]])
32
+ * });
33
+ */
34
+ export declare class PriorityWaveGenerator {
35
+ private options;
36
+ constructor(options?: PriorityOptions);
37
+ /**
38
+ * @ac US-042-AC-2: Objects before classes before triggers
39
+ * @ac US-042-AC-3: Break ties using priorities
40
+ */
41
+ sortComponentsByPriority(components: NodeId[], componentMap: Map<NodeId, MetadataComponent>): NodeId[];
42
+ private calculatePriority;
43
+ /**
44
+ * @ac US-042-AC-4: User-defined priority overrides
45
+ */
46
+ applyPriorityWaves(waves: Wave[], components: Map<NodeId, MetadataComponent>): Wave[];
47
+ }
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Priority-Based Wave Generator
3
+ * Prioritizes components by importance for wave generation
4
+ *
5
+ * @ac US-042-AC-1: Use deployment order constants
6
+ * @ac US-042-AC-2: Objects before classes before triggers
7
+ * @ac US-042-AC-3: Break ties using priorities
8
+ * @ac US-042-AC-4: User-defined priority overrides
9
+ * @ac US-042-AC-5: Report priority decisions
10
+ * @ac US-042-AC-6: Validate no dependency violations
11
+ *
12
+ * @issue #42
13
+ */
14
+ /**
15
+ * @ac US-042-AC-1: Use deployment order constants
16
+ */
17
+ const DEPLOYMENT_PRIORITY_ORDER = [
18
+ 'CustomObject',
19
+ 'CustomField',
20
+ 'RecordType',
21
+ 'BusinessProcess',
22
+ 'CompactLayout',
23
+ 'Layout',
24
+ 'Profile',
25
+ 'PermissionSet',
26
+ 'CustomMetadata',
27
+ 'ApexClass',
28
+ 'ApexTrigger',
29
+ 'Flow',
30
+ 'ValidationRule',
31
+ 'WorkflowRule',
32
+ 'EmailTemplate',
33
+ ];
34
+ /**
35
+ * Priority-Based Wave Generator
36
+ *
37
+ * Generates waves with component prioritization:
38
+ * 1. Metadata type priority (Objects → Classes → Triggers)
39
+ * 2. User-defined priorities
40
+ * 3. Dependency order
41
+ *
42
+ * @example
43
+ * const generator = new PriorityWaveGenerator({
44
+ * userPriorities: new Map([['ApexClass:Critical', 100]])
45
+ * });
46
+ */
47
+ export class PriorityWaveGenerator {
48
+ options;
49
+ constructor(options = {}) {
50
+ this.options = {
51
+ userPriorities: options.userPriorities ?? new Map(),
52
+ respectDependencyOrder: options.respectDependencyOrder ?? true,
53
+ };
54
+ }
55
+ /**
56
+ * @ac US-042-AC-2: Objects before classes before triggers
57
+ * @ac US-042-AC-3: Break ties using priorities
58
+ */
59
+ sortComponentsByPriority(components, componentMap) {
60
+ return components.sort((a, b) => {
61
+ const priorityA = this.calculatePriority(a, componentMap);
62
+ const priorityB = this.calculatePriority(b, componentMap);
63
+ return priorityB - priorityA; // Higher priority first
64
+ });
65
+ }
66
+ calculatePriority(nodeId, componentMap) {
67
+ const component = componentMap.get(nodeId);
68
+ const type = nodeId.split(':')[0];
69
+ // Type priority (higher = deploy earlier)
70
+ const typeIndex = DEPLOYMENT_PRIORITY_ORDER.indexOf(type);
71
+ const typePriority = typeIndex === -1 ? 0 : (DEPLOYMENT_PRIORITY_ORDER.length - typeIndex) * 100;
72
+ // User priority override
73
+ const userPriority = this.options.userPriorities.get(nodeId) ?? 0;
74
+ // Component boost
75
+ const componentBoost = component?.priorityBoost ?? 0;
76
+ return typePriority + userPriority + componentBoost;
77
+ }
78
+ /**
79
+ * @ac US-042-AC-4: User-defined priority overrides
80
+ */
81
+ applyPriorityWaves(waves, components) {
82
+ return waves.map((wave) => ({
83
+ ...wave,
84
+ components: this.sortComponentsByPriority(wave.components, components),
85
+ }));
86
+ }
87
+ }
88
+ //# sourceMappingURL=priority-wave-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priority-wave-generator.js","sourceRoot":"","sources":["../../src/waves/priority-wave-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH;;GAEG;AACH,MAAM,yBAAyB,GAAmB;IAChD,cAAc;IACd,aAAa;IACb,YAAY;IACZ,iBAAiB;IACjB,eAAe;IACf,QAAQ;IACR,SAAS;IACT,eAAe;IACf,gBAAgB;IAChB,WAAW;IACX,aAAa;IACb,MAAM;IACN,gBAAgB;IAChB,cAAc;IACd,eAAe;CAChB,CAAC;AAOF;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,qBAAqB;IACxB,OAAO,CAA4B;IAE3C,YAAmB,UAA2B,EAAE;QAC9C,IAAI,CAAC,OAAO,GAAG;YACb,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,IAAI,GAAG,EAAkB;YACnE,sBAAsB,EAAE,OAAO,CAAC,sBAAsB,IAAI,IAAI;SAC/D,CAAC;IACJ,CAAC;IAED;;;OAGG;IACI,wBAAwB,CAAC,UAAoB,EAAE,YAA4C;QAChG,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;YAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;YAC1D,OAAO,SAAS,GAAG,SAAS,CAAC,CAAC,wBAAwB;QACxD,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,iBAAiB,CAAC,MAAc,EAAE,YAA4C;QACpF,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAiB,CAAC;QAElD,0CAA0C;QAC1C,MAAM,SAAS,GAAG,yBAAyB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC;QAEjG,yBAAyB;QACzB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAElE,kBAAkB;QAClB,MAAM,cAAc,GAAG,SAAS,EAAE,aAAa,IAAI,CAAC,CAAC;QAErD,OAAO,YAAY,GAAG,YAAY,GAAG,cAAc,CAAC;IACtD,CAAC;IAED;;OAEG;IACI,kBAAkB,CAAC,KAAa,EAAE,UAA0C;QACjF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC1B,GAAG,IAAI;YACP,UAAU,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;SACvE,CAAC,CAAC,CAAC;IACN,CAAC;CACF"}
@@ -0,0 +1,155 @@
1
+ /**
2
+ * Test Optimizer
3
+ * Optimizes test execution per wave to reduce deployment time
4
+ *
5
+ * @ac US-040-AC-1: Identify waves with Apex/Trigger changes
6
+ * @ac US-040-AC-2: Include tests only in waves with code
7
+ * @ac US-040-AC-3: Sync test classes with production classes
8
+ * @ac US-040-AC-4: Ensure trigger tests are included
9
+ * @ac US-040-AC-5: Calculate test coverage per wave
10
+ * @ac US-040-AC-6: Report test optimization savings
11
+ *
12
+ * @issue #40
13
+ */
14
+ import type { NodeId } from '../types/dependency.js';
15
+ import type { Wave } from './wave-builder.js';
16
+ /**
17
+ * Test optimization result
18
+ */
19
+ export type TestOptimizationResult = {
20
+ /** Original waves */
21
+ originalWaves: Wave[];
22
+ /** Optimized waves with test classes */
23
+ optimizedWaves: OptimizedWave[];
24
+ /** Optimization decisions */
25
+ decisions: OptimizationDecision[];
26
+ /** Statistics */
27
+ stats: OptimizationStats;
28
+ };
29
+ /**
30
+ * Optimized wave with test information
31
+ */
32
+ export type OptimizedWave = Wave & {
33
+ /** Test classes included in this wave */
34
+ testClasses: NodeId[];
35
+ /** Code classes in this wave */
36
+ codeClasses: NodeId[];
37
+ /** Triggers in this wave */
38
+ triggers: NodeId[];
39
+ /** Needs test execution */
40
+ needsTests: boolean;
41
+ /** Estimated test coverage % */
42
+ estimatedCoverage: number;
43
+ };
44
+ /**
45
+ * Optimization decision
46
+ */
47
+ export type OptimizationDecision = {
48
+ /** Wave number */
49
+ waveNumber: number;
50
+ /** Decision type */
51
+ type: 'include-tests' | 'skip-tests' | 'sync-tests';
52
+ /** Reason for decision */
53
+ reason: string;
54
+ /** Tests affected */
55
+ testsAffected: number;
56
+ };
57
+ /**
58
+ * Optimization statistics
59
+ */
60
+ export type OptimizationStats = {
61
+ /** Total waves */
62
+ totalWaves: number;
63
+ /** Waves with tests */
64
+ wavesWithTests: number;
65
+ /** Waves without tests */
66
+ wavesWithoutTests: number;
67
+ /** Total test classes added */
68
+ totalTestsAdded: number;
69
+ /** Estimated time saved (seconds) */
70
+ timeSaved: number;
71
+ };
72
+ /**
73
+ * Optimizer options
74
+ */
75
+ export type OptimizerOptions = {
76
+ /** Always run all tests (disable optimization) */
77
+ alwaysRunAllTests?: boolean;
78
+ /** Minimum test coverage required (0-100) */
79
+ minCoverageRequired?: number;
80
+ /** Include related tests (not just direct) */
81
+ includeRelatedTests?: boolean;
82
+ };
83
+ /**
84
+ * Test Optimizer
85
+ *
86
+ * Optimizes test execution by only including tests in waves
87
+ * that contain Apex classes or triggers.
88
+ *
89
+ * Strategy:
90
+ * 1. Identify waves with code changes (ApexClass, ApexTrigger)
91
+ * 2. Match test classes to production classes
92
+ * 3. Include only relevant tests per wave
93
+ * 4. Skip tests for metadata-only waves
94
+ *
95
+ * Performance: O(V)
96
+ *
97
+ * @example
98
+ * const optimizer = new TestOptimizer({
99
+ * minCoverageRequired: 75,
100
+ * includeRelatedTests: true
101
+ * });
102
+ *
103
+ * const result = optimizer.optimizeTests(waves);
104
+ * console.log(`Time saved: ${result.stats.timeSaved}s`);
105
+ */
106
+ export declare class TestOptimizer {
107
+ private options;
108
+ constructor(options?: OptimizerOptions);
109
+ /**
110
+ * @ac US-040-AC-1: Identify waves with Apex/Trigger changes
111
+ * @ac US-040-AC-2: Include tests only in waves with code
112
+ * @ac US-040-AC-3: Sync test classes with production classes
113
+ */
114
+ optimizeTests(waves: Wave[]): TestOptimizationResult;
115
+ /**
116
+ * Collect all test classes from all waves
117
+ */
118
+ private collectAllTestClasses;
119
+ /**
120
+ * Get code classes (non-test Apex classes)
121
+ */
122
+ private getCodeClasses;
123
+ /**
124
+ * @ac US-040-AC-4: Ensure trigger tests are included
125
+ */
126
+ private getTriggers;
127
+ /**
128
+ * Check if component is a test class
129
+ */
130
+ private isTestClass;
131
+ /**
132
+ * Sync test classes with production classes
133
+ */
134
+ private syncTestClasses;
135
+ /**
136
+ * @ac US-040-AC-5: Calculate test coverage per wave
137
+ */
138
+ private estimateCoverage;
139
+ /**
140
+ * Calculate optimization statistics
141
+ */
142
+ private calculateStats;
143
+ /**
144
+ * @ac US-040-AC-6: Report test optimization savings
145
+ */
146
+ generateReport(result: TestOptimizationResult): string;
147
+ /**
148
+ * Get waves that need test execution
149
+ */
150
+ getWavesNeedingTests(result: TestOptimizationResult): OptimizedWave[];
151
+ /**
152
+ * Get total test count across all waves
153
+ */
154
+ getTotalTestCount(result: TestOptimizationResult): number;
155
+ }