@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,134 @@
1
+ /**
2
+ * Dependency Cache
3
+ * Caches dependency analysis results for faster subsequent runs
4
+ *
5
+ * @ac US-036-AC-1: Cache graph structure
6
+ * @ac US-036-AC-2: Invalidate cache on file changes
7
+ * @ac US-036-AC-3: Cache topological sort results
8
+ * @ac US-036-AC-4: Cache cycle detection results
9
+ * @ac US-036-AC-5: Cache heuristic inferences
10
+ * @ac US-036-AC-6: Configurable cache TTL
11
+ *
12
+ * @issue #36
13
+ */
14
+ /**
15
+ * Cache entry structure
16
+ */
17
+ export type CacheEntry<T> = {
18
+ data: T;
19
+ timestamp: number;
20
+ version: string;
21
+ fileHashes: Map<string, string>;
22
+ };
23
+ /**
24
+ * Cache key types
25
+ */
26
+ export type CacheKey = 'graph' | 'topological-sort' | 'circular-dependencies' | 'heuristic-inferences' | 'depth-analysis' | 'impact-analysis';
27
+ /**
28
+ * Cache options
29
+ */
30
+ export type CacheOptions = {
31
+ /** Cache directory */
32
+ cacheDir?: string;
33
+ /** Time to live in seconds (default: 3600 = 1 hour) */
34
+ ttl?: number;
35
+ /** Enable cache (default: true) */
36
+ enabled?: boolean;
37
+ /** Cache version (for invalidation) */
38
+ version?: string;
39
+ };
40
+ /**
41
+ * Dependency Cache
42
+ *
43
+ * Caches dependency analysis results to speed up subsequent runs.
44
+ * Automatically invalidates cache when files change.
45
+ *
46
+ * Performance: O(1) read/write
47
+ *
48
+ * @example
49
+ * const cache = new DependencyCache({ ttl: 3600 });
50
+ *
51
+ * // Try to load from cache
52
+ * const graph = await cache.get('graph', filePaths);
53
+ * if (graph) {
54
+ * console.log('Using cached graph');
55
+ * } else {
56
+ * const newGraph = buildGraph();
57
+ * await cache.set('graph', newGraph, filePaths);
58
+ * }
59
+ */
60
+ export declare class DependencyCache {
61
+ private options;
62
+ private memoryCache;
63
+ constructor(options?: CacheOptions);
64
+ /**
65
+ * @ac US-036-AC-1: Cache graph structure
66
+ */
67
+ get<T>(key: CacheKey, filePaths: string[]): Promise<T | undefined>;
68
+ /**
69
+ * @ac US-036-AC-1: Cache graph structure
70
+ * @ac US-036-AC-3: Cache topological sort results
71
+ * @ac US-036-AC-4: Cache cycle detection results
72
+ * @ac US-036-AC-5: Cache heuristic inferences
73
+ */
74
+ set<T>(key: CacheKey, data: T, filePaths: string[]): Promise<void>;
75
+ /**
76
+ * @ac US-036-AC-2: Invalidate cache on file changes
77
+ */
78
+ invalidate(key: CacheKey): Promise<void>;
79
+ /**
80
+ * Invalidate all cache entries
81
+ */
82
+ invalidateAll(): Promise<void>;
83
+ /**
84
+ * Delete a cache entry
85
+ */
86
+ private delete;
87
+ /**
88
+ * @ac US-036-AC-2: Invalidate cache on file changes
89
+ * @ac US-036-AC-6: Configurable cache TTL
90
+ */
91
+ private isValid;
92
+ /**
93
+ * Hash files for change detection
94
+ */
95
+ private hashFiles;
96
+ /**
97
+ * Get cache file path
98
+ */
99
+ private getCacheFilePath;
100
+ /**
101
+ * JSON replacer for Sets and Maps
102
+ */
103
+ private replacer;
104
+ /**
105
+ * JSON reviver for Sets and Maps
106
+ */
107
+ private reviver;
108
+ private isSerializedSet;
109
+ private isSerializedMap;
110
+ /**
111
+ * Get cache statistics
112
+ */
113
+ getStats(): {
114
+ memoryEntries: number;
115
+ enabled: boolean;
116
+ ttl: number;
117
+ };
118
+ /**
119
+ * Check if cache is enabled
120
+ */
121
+ isEnabled(): boolean;
122
+ /**
123
+ * Enable cache
124
+ */
125
+ enable(): void;
126
+ /**
127
+ * Disable cache
128
+ */
129
+ disable(): void;
130
+ }
131
+ /**
132
+ * Helper: Create a cache key from file paths
133
+ */
134
+ export declare function createCacheKey(baseKey: CacheKey, filePaths: string[]): string;
@@ -0,0 +1,303 @@
1
+ /**
2
+ * Dependency Cache
3
+ * Caches dependency analysis results for faster subsequent runs
4
+ *
5
+ * @ac US-036-AC-1: Cache graph structure
6
+ * @ac US-036-AC-2: Invalidate cache on file changes
7
+ * @ac US-036-AC-3: Cache topological sort results
8
+ * @ac US-036-AC-4: Cache cycle detection results
9
+ * @ac US-036-AC-5: Cache heuristic inferences
10
+ * @ac US-036-AC-6: Configurable cache TTL
11
+ *
12
+ * @issue #36
13
+ */
14
+ import fs from 'node:fs/promises';
15
+ import path from 'node:path';
16
+ import crypto from 'node:crypto';
17
+ import { getLogger } from '../utils/logger.js';
18
+ const logger = getLogger('DependencyCache');
19
+ /**
20
+ * Dependency Cache
21
+ *
22
+ * Caches dependency analysis results to speed up subsequent runs.
23
+ * Automatically invalidates cache when files change.
24
+ *
25
+ * Performance: O(1) read/write
26
+ *
27
+ * @example
28
+ * const cache = new DependencyCache({ ttl: 3600 });
29
+ *
30
+ * // Try to load from cache
31
+ * const graph = await cache.get('graph', filePaths);
32
+ * if (graph) {
33
+ * console.log('Using cached graph');
34
+ * } else {
35
+ * const newGraph = buildGraph();
36
+ * await cache.set('graph', newGraph, filePaths);
37
+ * }
38
+ */
39
+ export class DependencyCache {
40
+ options;
41
+ memoryCache;
42
+ constructor(options = {}) {
43
+ this.options = {
44
+ cacheDir: options.cacheDir ?? path.join(process.cwd(), '.sf-deploy-cache'),
45
+ ttl: options.ttl ?? 3600,
46
+ enabled: options.enabled ?? true,
47
+ version: options.version ?? '1.0.0',
48
+ };
49
+ this.memoryCache = new Map();
50
+ logger.debug('Initialized DependencyCache', {
51
+ cacheDir: this.options.cacheDir,
52
+ ttl: this.options.ttl,
53
+ enabled: this.options.enabled,
54
+ });
55
+ }
56
+ /**
57
+ * @ac US-036-AC-1: Cache graph structure
58
+ */
59
+ async get(key, filePaths) {
60
+ if (!this.options.enabled) {
61
+ return undefined;
62
+ }
63
+ // Try memory cache first
64
+ const memEntry = this.memoryCache.get(key);
65
+ if (memEntry && (await this.isValid(memEntry, filePaths))) {
66
+ logger.debug('Cache hit (memory)', { key });
67
+ return memEntry.data;
68
+ }
69
+ // Try disk cache
70
+ try {
71
+ const cacheFile = this.getCacheFilePath(key);
72
+ const content = await fs.readFile(cacheFile, 'utf-8');
73
+ const entry = JSON.parse(content, (_key, value) => this.reviver(_key, value));
74
+ if (await this.isValid(entry, filePaths)) {
75
+ // Store in memory for faster access
76
+ this.memoryCache.set(key, entry);
77
+ logger.debug('Cache hit (disk)', { key });
78
+ return entry.data;
79
+ }
80
+ else {
81
+ logger.debug('Cache invalid', { key });
82
+ await this.delete(key);
83
+ }
84
+ }
85
+ catch (error) {
86
+ if (error.code !== 'ENOENT') {
87
+ logger.warn('Failed to read cache', { key, error });
88
+ }
89
+ }
90
+ logger.debug('Cache miss', { key });
91
+ return undefined;
92
+ }
93
+ /**
94
+ * @ac US-036-AC-1: Cache graph structure
95
+ * @ac US-036-AC-3: Cache topological sort results
96
+ * @ac US-036-AC-4: Cache cycle detection results
97
+ * @ac US-036-AC-5: Cache heuristic inferences
98
+ */
99
+ async set(key, data, filePaths) {
100
+ if (!this.options.enabled) {
101
+ return;
102
+ }
103
+ const fileHashes = await this.hashFiles(filePaths);
104
+ const entry = {
105
+ data,
106
+ timestamp: Date.now(),
107
+ version: this.options.version,
108
+ fileHashes,
109
+ };
110
+ // Store in memory
111
+ this.memoryCache.set(key, entry);
112
+ // Store on disk
113
+ try {
114
+ await fs.mkdir(this.options.cacheDir, { recursive: true });
115
+ const cacheFile = this.getCacheFilePath(key);
116
+ const content = JSON.stringify(entry, (_key, value) => this.replacer(_key, value), 2);
117
+ await fs.writeFile(cacheFile, content, 'utf-8');
118
+ logger.debug('Cache stored', { key, files: filePaths.length });
119
+ }
120
+ catch (error) {
121
+ logger.warn('Failed to write cache', { key, error });
122
+ }
123
+ }
124
+ /**
125
+ * @ac US-036-AC-2: Invalidate cache on file changes
126
+ */
127
+ async invalidate(key) {
128
+ await this.delete(key);
129
+ logger.debug('Cache invalidated', { key });
130
+ }
131
+ /**
132
+ * Invalidate all cache entries
133
+ */
134
+ async invalidateAll() {
135
+ this.memoryCache.clear();
136
+ try {
137
+ await fs.rm(this.options.cacheDir, { recursive: true, force: true });
138
+ logger.debug('All cache invalidated');
139
+ }
140
+ catch (error) {
141
+ logger.warn('Failed to invalidate all cache', { error });
142
+ }
143
+ }
144
+ /**
145
+ * Delete a cache entry
146
+ */
147
+ async delete(key) {
148
+ this.memoryCache.delete(key);
149
+ try {
150
+ const cacheFile = this.getCacheFilePath(key);
151
+ await fs.unlink(cacheFile);
152
+ }
153
+ catch (error) {
154
+ if (error.code !== 'ENOENT') {
155
+ logger.warn('Failed to delete cache file', { key, error });
156
+ }
157
+ }
158
+ }
159
+ /**
160
+ * @ac US-036-AC-2: Invalidate cache on file changes
161
+ * @ac US-036-AC-6: Configurable cache TTL
162
+ */
163
+ async isValid(entry, filePaths) {
164
+ // Check version
165
+ if (entry.version !== this.options.version) {
166
+ logger.debug('Cache version mismatch', {
167
+ cached: entry.version,
168
+ current: this.options.version,
169
+ });
170
+ return false;
171
+ }
172
+ // Check TTL
173
+ const age = (Date.now() - entry.timestamp) / 1000;
174
+ if (age > this.options.ttl) {
175
+ logger.debug('Cache expired', { age, ttl: this.options.ttl });
176
+ return false;
177
+ }
178
+ // Check file hashes
179
+ const currentHashes = await this.hashFiles(filePaths);
180
+ if (currentHashes.size !== entry.fileHashes.size) {
181
+ logger.debug('File count changed', {
182
+ cached: entry.fileHashes.size,
183
+ current: currentHashes.size,
184
+ });
185
+ return false;
186
+ }
187
+ for (const [file, hash] of currentHashes.entries()) {
188
+ if (entry.fileHashes.get(file) !== hash) {
189
+ logger.debug('File modified', { file });
190
+ return false;
191
+ }
192
+ }
193
+ return true;
194
+ }
195
+ /**
196
+ * Hash files for change detection
197
+ */
198
+ async hashFiles(filePaths) {
199
+ const hashes = new Map();
200
+ let chain = Promise.resolve();
201
+ filePaths.forEach((filePath) => {
202
+ chain = chain.then(async () => {
203
+ try {
204
+ const stat = await fs.stat(filePath);
205
+ // Simple hash: mtime + size
206
+ const hash = crypto.createHash('md5').update(`${stat.mtimeMs}-${stat.size}`).digest('hex');
207
+ hashes.set(filePath, hash);
208
+ }
209
+ catch (error) {
210
+ logger.warn('Failed to hash file', { filePath, error });
211
+ }
212
+ });
213
+ });
214
+ await chain;
215
+ return hashes;
216
+ }
217
+ /**
218
+ * Get cache file path
219
+ */
220
+ getCacheFilePath(key) {
221
+ return path.join(this.options.cacheDir, `${key}.json`);
222
+ }
223
+ /**
224
+ * JSON replacer for Sets and Maps
225
+ */
226
+ replacer(_key, value) {
227
+ if (value instanceof Set) {
228
+ return { kind: 'Set', data: Array.from(value) };
229
+ }
230
+ if (value instanceof Map) {
231
+ return { kind: 'Map', data: Array.from(value.entries()) };
232
+ }
233
+ return value;
234
+ }
235
+ /**
236
+ * JSON reviver for Sets and Maps
237
+ */
238
+ reviver(_key, value) {
239
+ if (typeof value === 'object' && value !== null) {
240
+ if (this.isSerializedSet(value)) {
241
+ return new Set(value.data);
242
+ }
243
+ if (this.isSerializedMap(value)) {
244
+ return new Map(value.data);
245
+ }
246
+ }
247
+ return value;
248
+ }
249
+ isSerializedSet(value) {
250
+ return (typeof value === 'object' &&
251
+ value !== null &&
252
+ 'kind' in value &&
253
+ 'data' in value &&
254
+ value.kind === 'Set' &&
255
+ Array.isArray(value.data));
256
+ }
257
+ isSerializedMap(value) {
258
+ return (typeof value === 'object' &&
259
+ value !== null &&
260
+ 'kind' in value &&
261
+ 'data' in value &&
262
+ value.kind === 'Map' &&
263
+ Array.isArray(value.data));
264
+ }
265
+ /**
266
+ * Get cache statistics
267
+ */
268
+ getStats() {
269
+ return {
270
+ memoryEntries: this.memoryCache.size,
271
+ enabled: this.options.enabled,
272
+ ttl: this.options.ttl,
273
+ };
274
+ }
275
+ /**
276
+ * Check if cache is enabled
277
+ */
278
+ isEnabled() {
279
+ return this.options.enabled;
280
+ }
281
+ /**
282
+ * Enable cache
283
+ */
284
+ enable() {
285
+ this.options.enabled = true;
286
+ logger.debug('Cache enabled');
287
+ }
288
+ /**
289
+ * Disable cache
290
+ */
291
+ disable() {
292
+ this.options.enabled = false;
293
+ logger.debug('Cache disabled');
294
+ }
295
+ }
296
+ /**
297
+ * Helper: Create a cache key from file paths
298
+ */
299
+ export function createCacheKey(baseKey, filePaths) {
300
+ const hash = crypto.createHash('md5').update(filePaths.sort().join('|')).digest('hex');
301
+ return `${baseKey}-${hash.substring(0, 8)}`;
302
+ }
303
+ //# sourceMappingURL=dependency-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-cache.js","sourceRoot":"","sources":["../../src/dependencies/dependency-cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Dependency Depth Calculator
3
+ * Calculates dependency depth for each component to identify high-risk components
4
+ *
5
+ * @ac US-031-AC-1: Calculate depth from leaf nodes
6
+ * @ac US-031-AC-2: Identify components with depth > 10 (warning)
7
+ * @ac US-031-AC-3: Generate depth distribution report
8
+ * @ac US-031-AC-4: Highlight critical path components
9
+ * @ac US-031-AC-5: Consider cycle depth as infinite
10
+ *
11
+ * @issue #31
12
+ */
13
+ import type { NodeId, DependencyGraph, CircularDependency } from '../types/dependency.js';
14
+ /**
15
+ * Depth information for a component
16
+ */
17
+ export type ComponentDepth = {
18
+ nodeId: NodeId;
19
+ depth: number;
20
+ isInCycle: boolean;
21
+ isLeaf: boolean;
22
+ isHighRisk: boolean;
23
+ isCriticalPath: boolean;
24
+ pathToLeaf: NodeId[];
25
+ };
26
+ /**
27
+ * Depth distribution report
28
+ */
29
+ export type DepthDistribution = {
30
+ depthRange: string;
31
+ count: number;
32
+ percentage: number;
33
+ components: NodeId[];
34
+ };
35
+ /**
36
+ * Complete depth analysis result
37
+ */
38
+ export type DepthAnalysisResult = {
39
+ /** Depth information for each component */
40
+ depths: Map<NodeId, ComponentDepth>;
41
+ /** Components with depth > 10 */
42
+ highRiskComponents: ComponentDepth[];
43
+ /** Critical path (longest dependency chain) */
44
+ criticalPath: NodeId[];
45
+ /** Maximum depth in the graph */
46
+ maxDepth: number;
47
+ /** Average depth */
48
+ averageDepth: number;
49
+ /** Depth distribution */
50
+ distribution: DepthDistribution[];
51
+ /** Components in cycles (infinite depth) */
52
+ cyclicComponents: NodeId[];
53
+ };
54
+ /**
55
+ * Options for depth calculation
56
+ */
57
+ export type DepthCalculationOptions = {
58
+ /** Circular dependencies to consider */
59
+ circularDependencies?: CircularDependency[];
60
+ /** Depth threshold for high-risk warning */
61
+ highRiskThreshold?: number;
62
+ };
63
+ /**
64
+ * Dependency Depth Calculator
65
+ *
66
+ * Calculates the dependency depth of each component from leaf nodes.
67
+ * Leaf nodes (no dependencies) have depth 0.
68
+ * Components depending on others have depth = max(dep.depth) + 1.
69
+ *
70
+ * Performance: O(V + E) using topological sort
71
+ *
72
+ * @example
73
+ * const calculator = new DependencyDepthCalculator(graph);
74
+ * const result = calculator.calculate();
75
+ * console.log(`Max depth: ${result.maxDepth}`);
76
+ * console.log(`High-risk: ${result.highRiskComponents.length}`);
77
+ */
78
+ export declare class DependencyDepthCalculator {
79
+ private graph;
80
+ private options;
81
+ private cyclicNodes;
82
+ constructor(graph: DependencyGraph, options?: DepthCalculationOptions);
83
+ /**
84
+ * @ac US-031-AC-4: Highlight critical path components
85
+ *
86
+ * Find the critical path (longest dependency chain)
87
+ */
88
+ private static findCriticalPath;
89
+ /**
90
+ * @ac US-031-AC-3: Generate depth distribution report
91
+ */
92
+ private static generateDistribution;
93
+ /**
94
+ * Calculate maximum depth
95
+ */
96
+ private static calculateMaxDepth;
97
+ /**
98
+ * Calculate average depth (excluding cyclic nodes)
99
+ */
100
+ private static calculateAverageDepth;
101
+ /**
102
+ * Calculate depths for all components
103
+ *
104
+ * @ac US-031-AC-1: Calculate depth from leaf nodes
105
+ * @ac US-031-AC-2: Identify components with depth > 10
106
+ * @ac US-031-AC-5: Consider cycle depth as infinite
107
+ */
108
+ calculate(): DepthAnalysisResult;
109
+ /**
110
+ * Calculate depth for all nodes using BFS from leaf nodes
111
+ */
112
+ private calculateDepths;
113
+ /**
114
+ * Calculate in-degree for each node
115
+ */
116
+ private calculateInDegree;
117
+ /**
118
+ * Initialize leaf nodes in the queue
119
+ */
120
+ private initializeLeafNodes;
121
+ /**
122
+ * Process nodes in BFS order
123
+ */
124
+ private processNodesInBFS;
125
+ /**
126
+ * Update candidate node depth if this path is longer
127
+ */
128
+ private updateCandidateDepth;
129
+ /**
130
+ * Process remaining nodes not yet in depths map
131
+ */
132
+ private processRemainingNodes;
133
+ /**
134
+ * Calculate depth for a single node based on its dependencies
135
+ */
136
+ private calculateNodeDepth;
137
+ /**
138
+ * @ac US-031-AC-2: Identify components with depth > 10
139
+ */
140
+ private findHighRiskComponents;
141
+ /**
142
+ * Get depth for a specific component
143
+ */
144
+ getDepth(nodeId: NodeId): ComponentDepth | undefined;
145
+ }