@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,298 @@
1
+ /**
2
+ * Dependency Resolver
3
+ * Resolves component dependencies and generates deployment order
4
+ *
5
+ * @ac US-033-AC-1: Resolve direct dependencies
6
+ * @ac US-033-AC-2: Resolve transitive dependencies
7
+ * @ac US-033-AC-3: Handle optional dependencies
8
+ * @ac US-033-AC-4: Skip managed package dependencies
9
+ * @ac US-033-AC-5: Report unresolved dependencies
10
+ * @ac US-033-AC-6: Generate dependency report
11
+ *
12
+ * @issue #33
13
+ */
14
+ import { getLogger } from '../utils/logger.js';
15
+ const logger = getLogger('DependencyResolver');
16
+ /**
17
+ * Dependency Resolver
18
+ *
19
+ * Resolves dependencies and generates deployment order using topological sort.
20
+ * Handles circular dependencies, optional dependencies, and managed packages.
21
+ *
22
+ * Performance: O(V + E) using Kahn's algorithm
23
+ *
24
+ * @example
25
+ * const resolver = new DependencyResolver(graph, components);
26
+ * const result = resolver.resolve();
27
+ * console.log(`Deployment order: ${result.deploymentOrder.join(' → ')}`);
28
+ * console.log(`Unresolved: ${result.unresolved.length}`);
29
+ */
30
+ export class DependencyResolver {
31
+ graph;
32
+ components;
33
+ options;
34
+ constructor(graph, components, options = {}) {
35
+ this.graph = graph;
36
+ this.components = components;
37
+ this.options = {
38
+ includeOptional: options.includeOptional ?? false,
39
+ skipManaged: options.skipManaged ?? true,
40
+ circularDependencies: options.circularDependencies ?? [],
41
+ orderingConstraints: options.orderingConstraints ?? [],
42
+ };
43
+ logger.debug('Initialized DependencyResolver', {
44
+ components: this.components.size,
45
+ includeOptional: this.options.includeOptional,
46
+ skipManaged: this.options.skipManaged,
47
+ circularDeps: this.options.circularDependencies.length,
48
+ });
49
+ }
50
+ /**
51
+ * Resolve all dependencies and generate deployment order
52
+ *
53
+ * @ac US-033-AC-1: Resolve direct dependencies
54
+ * @ac US-033-AC-2: Resolve transitive dependencies
55
+ * @ac US-033-AC-6: Generate dependency report
56
+ */
57
+ resolve() {
58
+ const startTime = Date.now();
59
+ // Build filtered graph
60
+ const filteredGraph = this.buildFilteredGraph();
61
+ // Perform topological sort
62
+ const { deploymentOrder, unresolved } = this.topologicalSort(filteredGraph);
63
+ // Build resolved dependencies map
64
+ const resolved = this.buildResolvedMap(deploymentOrder, filteredGraph);
65
+ // Categorize components
66
+ const optional = this.findOptionalDependencies();
67
+ const managed = this.findManagedPackages();
68
+ // Generate report
69
+ const report = this.generateReport(resolved, unresolved, optional, managed);
70
+ const duration = Date.now() - startTime;
71
+ logger.info('Dependency resolution completed', {
72
+ totalComponents: this.components.size,
73
+ resolved: resolved.size,
74
+ unresolved: unresolved.length,
75
+ deploymentLevels: report.deploymentLevels,
76
+ durationMs: duration,
77
+ });
78
+ return {
79
+ resolved,
80
+ deploymentOrder,
81
+ unresolved,
82
+ optional,
83
+ managed,
84
+ circular: this.options.circularDependencies,
85
+ report,
86
+ };
87
+ }
88
+ /**
89
+ * Build filtered graph based on options
90
+ */
91
+ buildFilteredGraph() {
92
+ const filtered = new Map();
93
+ for (const [nodeId, deps] of this.graph.entries()) {
94
+ // Skip managed packages if configured
95
+ if (this.options.skipManaged && this.isManagedPackage(nodeId)) {
96
+ continue;
97
+ }
98
+ const filteredDeps = new Set();
99
+ for (const dep of deps) {
100
+ // Skip managed dependencies
101
+ if (this.options.skipManaged && this.isManagedPackage(dep)) {
102
+ continue;
103
+ }
104
+ // Handle optional dependencies
105
+ if (this.isOptionalDependency()) {
106
+ if (this.options.includeOptional) {
107
+ filteredDeps.add(dep);
108
+ }
109
+ continue;
110
+ }
111
+ filteredDeps.add(dep);
112
+ }
113
+ filtered.set(nodeId, filteredDeps);
114
+ }
115
+ // Apply ordering constraints
116
+ this.applyOrderingConstraints(filtered);
117
+ return filtered;
118
+ }
119
+ /**
120
+ * Apply manual ordering constraints to the graph
121
+ *
122
+ * @ac US-033-AC-5: Support manual ordering constraints
123
+ */
124
+ applyOrderingConstraints(graph) {
125
+ for (const { before, after } of this.options.orderingConstraints) {
126
+ // Ensure 'before' depends on 'after' (before must be deployed after 'after')
127
+ if (!graph.has(before)) {
128
+ graph.set(before, new Set());
129
+ }
130
+ graph.get(before).add(after);
131
+ }
132
+ }
133
+ /**
134
+ * Perform topological sort using Kahn's algorithm
135
+ */
136
+ topologicalSort(graph) {
137
+ const deploymentOrder = [];
138
+ const unresolved = [];
139
+ // Calculate in-degree for each node
140
+ const inDegree = new Map();
141
+ for (const nodeId of graph.keys()) {
142
+ inDegree.set(nodeId, 0);
143
+ }
144
+ for (const deps of graph.values()) {
145
+ for (const dep of deps) {
146
+ if (!inDegree.has(dep)) {
147
+ // Dependency not in graph - external/missing
148
+ continue;
149
+ }
150
+ inDegree.set(dep, (inDegree.get(dep) ?? 0) + 1);
151
+ }
152
+ }
153
+ // Start with nodes that have no dependencies (in-degree = 0)
154
+ const queue = [];
155
+ for (const [nodeId, degree] of inDegree.entries()) {
156
+ if (degree === 0) {
157
+ queue.push(nodeId);
158
+ }
159
+ }
160
+ // Process nodes in topological order
161
+ while (queue.length > 0) {
162
+ const nodeId = queue.shift();
163
+ deploymentOrder.push(nodeId);
164
+ const deps = graph.get(nodeId) ?? new Set();
165
+ for (const dep of deps) {
166
+ if (!inDegree.has(dep)) {
167
+ continue; // External dependency
168
+ }
169
+ const newDegree = (inDegree.get(dep) ?? 0) - 1;
170
+ inDegree.set(dep, newDegree);
171
+ if (newDegree === 0) {
172
+ queue.push(dep);
173
+ }
174
+ }
175
+ }
176
+ // Check for unresolved dependencies (cycles or missing)
177
+ for (const [nodeId, degree] of inDegree.entries()) {
178
+ if (degree > 0) {
179
+ // Node not processed - part of cycle or has missing deps
180
+ const missingDeps = this.findMissingDependencies(nodeId, graph);
181
+ unresolved.push({ nodeId, missingDependencies: missingDeps });
182
+ }
183
+ }
184
+ return { deploymentOrder, unresolved };
185
+ }
186
+ /**
187
+ * Find missing dependencies for a node
188
+ */
189
+ findMissingDependencies(nodeId, graph) {
190
+ const deps = graph.get(nodeId) ?? new Set();
191
+ const missing = [];
192
+ for (const dep of deps) {
193
+ if (!graph.has(dep)) {
194
+ missing.push(dep);
195
+ }
196
+ }
197
+ return missing;
198
+ }
199
+ /**
200
+ * Build resolved dependencies map with deployment order
201
+ */
202
+ buildResolvedMap(deploymentOrder, graph) {
203
+ const resolved = new Map();
204
+ for (let i = 0; i < deploymentOrder.length; i++) {
205
+ const nodeId = deploymentOrder[i];
206
+ const deps = Array.from(graph.get(nodeId) ?? []);
207
+ resolved.set(nodeId, {
208
+ nodeId,
209
+ dependencies: deps,
210
+ status: 'resolved',
211
+ order: i,
212
+ });
213
+ }
214
+ return resolved;
215
+ }
216
+ /**
217
+ * @ac US-033-AC-3: Handle optional dependencies
218
+ * Note: Current MetadataComponent doesn't track dependency types
219
+ */
220
+ findOptionalDependencies() {
221
+ // TODO: When MetadataComponent includes dependency types, implement this properly
222
+ return [];
223
+ }
224
+ /**
225
+ * @ac US-033-AC-4: Skip managed package dependencies
226
+ */
227
+ findManagedPackages() {
228
+ const managed = [];
229
+ for (const nodeId of this.components.keys()) {
230
+ if (this.isManagedPackage(nodeId)) {
231
+ managed.push(nodeId);
232
+ }
233
+ }
234
+ return managed;
235
+ }
236
+ /**
237
+ * Check if a component is from a managed package
238
+ */
239
+ isManagedPackage(nodeId) {
240
+ // Check for namespace prefix (e.g., "ns__ObjectName")
241
+ return nodeId.includes('__') || (this.components.get(nodeId)?.name.includes('__') ?? false);
242
+ }
243
+ /**
244
+ * Check if a dependency is optional (soft dependency)
245
+ * Note: Current MetadataComponent uses Set<string> for dependencies
246
+ * For now, we'll return false as type info is not available
247
+ */
248
+ isOptionalDependency() {
249
+ // TODO: When MetadataComponent includes dependency types, implement this properly
250
+ return false;
251
+ }
252
+ /**
253
+ * @ac US-033-AC-6: Generate dependency report
254
+ */
255
+ generateReport(resolved, unresolved, optional, managed) {
256
+ // Calculate deployment levels
257
+ let maxOrder = 0;
258
+ for (const dep of resolved.values()) {
259
+ maxOrder = Math.max(maxOrder, dep.order);
260
+ }
261
+ return {
262
+ totalComponents: this.components.size,
263
+ resolvedCount: resolved.size,
264
+ unresolvedCount: unresolved.length,
265
+ optionalCount: optional.length,
266
+ managedCount: managed.length,
267
+ circularCount: this.options.circularDependencies.length,
268
+ deploymentLevels: maxOrder + 1,
269
+ };
270
+ }
271
+ /**
272
+ * Get resolution status for a specific component
273
+ */
274
+ getResolution(nodeId) {
275
+ const result = this.resolve();
276
+ return result.resolved.get(nodeId);
277
+ }
278
+ /**
279
+ * Check if a component can be resolved
280
+ */
281
+ canResolve(nodeId) {
282
+ const result = this.resolve();
283
+ return result.resolved.has(nodeId);
284
+ }
285
+ /**
286
+ * Get deployment order for specific components
287
+ */
288
+ getDeploymentOrder(nodeIds) {
289
+ const result = this.resolve();
290
+ const orderMap = new Map();
291
+ for (const dep of result.resolved.values()) {
292
+ orderMap.set(dep.nodeId, dep.order);
293
+ }
294
+ // Sort by order
295
+ return nodeIds.filter((id) => orderMap.has(id)).sort((a, b) => (orderMap.get(a) ?? 0) - (orderMap.get(b) ?? 0));
296
+ }
297
+ }
298
+ //# sourceMappingURL=dependency-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-resolver.js","sourceRoot":"","sources":["../../src/dependencies/dependency-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Dependency Validator
3
+ * Validates the dependency graph for correctness and consistency
4
+ *
5
+ * @ac US-034-AC-1: Validate no dangling references
6
+ * @ac US-034-AC-2: Validate all nodes have types
7
+ * @ac US-034-AC-3: Validate no self-loops (except cycles)
8
+ * @ac US-034-AC-4: Validate edge consistency
9
+ * @ac US-034-AC-5: Generate validation report
10
+ * @ac US-034-AC-6: Fail on critical issues
11
+ *
12
+ * @issue #34
13
+ */
14
+ import type { NodeId, DependencyGraph, CircularDependency } from '../types/dependency.js';
15
+ import type { MetadataComponent } from '../types/metadata.js';
16
+ /**
17
+ * Validation severity
18
+ */
19
+ export type ValidationSeverity = 'info' | 'warning' | 'error' | 'critical';
20
+ /**
21
+ * Validation issue
22
+ */
23
+ export type ValidationIssue = {
24
+ severity: ValidationSeverity;
25
+ code: string;
26
+ message: string;
27
+ nodeId?: NodeId;
28
+ relatedNodes?: NodeId[];
29
+ suggestion?: string;
30
+ };
31
+ /**
32
+ * Validation result
33
+ */
34
+ export type ValidationResult = {
35
+ isValid: boolean;
36
+ issues: ValidationIssue[];
37
+ errors: ValidationIssue[];
38
+ warnings: ValidationIssue[];
39
+ critical: ValidationIssue[];
40
+ stats: ValidationStats;
41
+ };
42
+ /**
43
+ * Validation statistics
44
+ */
45
+ export type ValidationStats = {
46
+ totalNodes: number;
47
+ totalEdges: number;
48
+ danglingReferences: number;
49
+ selfLoops: number;
50
+ invalidNodes: number;
51
+ edgeInconsistencies: number;
52
+ };
53
+ /**
54
+ * Validator options
55
+ */
56
+ export type ValidatorOptions = {
57
+ /** Fail on warnings (not just errors) */
58
+ strictMode?: boolean;
59
+ /** Known circular dependencies to ignore for self-loop checks */
60
+ circularDependencies?: CircularDependency[];
61
+ /** Allow self-loops in specific node types */
62
+ allowSelfLoops?: boolean;
63
+ };
64
+ /**
65
+ * Dependency Validator
66
+ *
67
+ * Validates dependency graph integrity:
68
+ * - No dangling references (edges to non-existent nodes)
69
+ * - All nodes have valid types
70
+ * - No self-loops (unless in known cycles)
71
+ * - Edge consistency (graph ↔ components)
72
+ *
73
+ * Performance: O(V + E)
74
+ *
75
+ * @example
76
+ * const validator = new DependencyValidator(graph, components);
77
+ * const result = validator.validate();
78
+ * if (!result.isValid) {
79
+ * console.error(`Found ${result.errors.length} errors`);
80
+ * result.errors.forEach(e => console.error(e.message));
81
+ * }
82
+ */
83
+ export declare class DependencyValidator {
84
+ private graph;
85
+ private components;
86
+ private options;
87
+ constructor(graph: DependencyGraph, components: Map<NodeId, MetadataComponent>, options?: ValidatorOptions);
88
+ /**
89
+ * Validate the dependency graph
90
+ *
91
+ * @ac US-034-AC-5: Generate validation report
92
+ * @ac US-034-AC-6: Fail on critical issues
93
+ */
94
+ validate(): ValidationResult;
95
+ /**
96
+ * @ac US-034-AC-1: Validate no dangling references
97
+ */
98
+ private validateDanglingReferences;
99
+ /**
100
+ * @ac US-034-AC-2: Validate all nodes have types
101
+ */
102
+ private validateNodeTypes;
103
+ /**
104
+ * @ac US-034-AC-3: Validate no self-loops (except cycles)
105
+ */
106
+ private validateSelfLoops;
107
+ /**
108
+ * @ac US-034-AC-4: Validate edge consistency
109
+ */
110
+ private validateEdgeConsistency;
111
+ /**
112
+ * Calculate validation statistics
113
+ */
114
+ private calculateStats;
115
+ /**
116
+ * Validate a specific component
117
+ */
118
+ validateComponent(nodeId: NodeId): ValidationIssue[];
119
+ /**
120
+ * Check if validation would pass
121
+ */
122
+ isValid(): boolean;
123
+ }