@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,180 @@
1
+ /**
2
+ * AI Prompt Builder - US-058
3
+ * Build effective AI prompts with context and token optimization
4
+ *
5
+ * @ac US-058-AC-1: Context-aware prompt generation
6
+ * @ac US-058-AC-2: Include relevant metadata snippets
7
+ * @ac US-058-AC-3: Optimize token usage
8
+ * @ac US-058-AC-4: Template-based prompts
9
+ * @ac US-058-AC-5: Version prompts
10
+ * @ac US-058-AC-6: A/B test prompts
11
+ * @issue #58
12
+ */
13
+ import { getLogger } from '../utils/logger.js';
14
+ const logger = getLogger('PromptBuilder');
15
+ /**
16
+ * @ac US-058-AC-4: Template-based prompts
17
+ * Predefined prompt templates
18
+ */
19
+ const PROMPT_TEMPLATES = {
20
+ 'dependency-inference': {
21
+ name: 'Dependency Inference',
22
+ version: '1.0.0',
23
+ systemPrompt: 'You are an expert Salesforce metadata analyzer specialized in finding implicit dependencies.',
24
+ userPromptTemplate: `Analyze these components and infer non-obvious dependencies:
25
+
26
+ Components: {{components}}
27
+
28
+ Look for dynamic references, implicit dependencies, and business logic relationships.
29
+ Return JSON array of dependencies with confidence scores.`,
30
+ maxTokens: 2000,
31
+ temperature: 0.2,
32
+ },
33
+ 'wave-validation': {
34
+ name: 'Wave Validation',
35
+ version: '1.0.0',
36
+ systemPrompt: 'You are a Salesforce deployment architect expert in wave optimization.',
37
+ userPromptTemplate: `Validate these deployment waves for issues:
38
+
39
+ Waves: {{waves}}
40
+
41
+ Identify business logic issues, performance concerns, and risks.
42
+ Return JSON with issues, optimizations, and risk assessments.`,
43
+ maxTokens: 3000,
44
+ temperature: 0.1,
45
+ },
46
+ 'priority-analysis': {
47
+ name: 'Priority Analysis',
48
+ version: '1.0.0',
49
+ systemPrompt: 'You are a Salesforce architect expert in deployment prioritization.',
50
+ userPromptTemplate: `Analyze component priorities for deployment:
51
+
52
+ Components: {{components}}
53
+ Organization Type: {{orgType}}
54
+ Industry: {{industry}}
55
+
56
+ Consider business criticality and failure impact.
57
+ Return JSON array of priority recommendations.`,
58
+ maxTokens: 2000,
59
+ temperature: 0.3,
60
+ },
61
+ };
62
+ /**
63
+ * @ac US-058-AC-1: Context-aware prompt generation
64
+ * @ac US-058-AC-2: Include relevant metadata snippets
65
+ */
66
+ export class PromptBuilder {
67
+ constructor(maxTokenEstimate = 4000) {
68
+ logger.debug('Prompt builder initialized', { maxTokenEstimate });
69
+ }
70
+ /**
71
+ * @ac US-058-AC-1: Context-aware prompt generation
72
+ * Build prompt from template and context
73
+ */
74
+ buildPrompt(options) {
75
+ const template = PROMPT_TEMPLATES[options.template];
76
+ if (!template) {
77
+ throw new Error(`Template '${options.template}' not found`);
78
+ }
79
+ logger.debug('Building prompt', {
80
+ template: options.template,
81
+ variant: options.variant,
82
+ });
83
+ // Get variant-specific template if A/B testing
84
+ const userTemplate = this.getTemplateVariant(template, options.variant);
85
+ // Optimize context for token usage
86
+ const optimizedContext = this.optimizeContext(options.context);
87
+ // Replace placeholders
88
+ let userPrompt = userTemplate;
89
+ for (const [key, value] of Object.entries(optimizedContext)) {
90
+ const placeholder = `{{${key}}}`;
91
+ const replacement = typeof value === 'string' ? value : JSON.stringify(value, null, 2);
92
+ userPrompt = userPrompt.replaceAll(placeholder, replacement);
93
+ }
94
+ // Estimate tokens
95
+ const estimatedTokens = this.estimateTokens(template.systemPrompt + userPrompt);
96
+ logger.info('Prompt built', {
97
+ template: template.name,
98
+ version: template.version,
99
+ estimatedTokens,
100
+ });
101
+ return {
102
+ systemPrompt: template.systemPrompt,
103
+ userPrompt,
104
+ estimatedTokens,
105
+ };
106
+ }
107
+ /**
108
+ * @ac US-058-AC-6: A/B test prompts
109
+ * Get template variant for A/B testing
110
+ */
111
+ getTemplateVariant(template, variant) {
112
+ if (!variant || variant === 'A') {
113
+ return template.userPromptTemplate;
114
+ }
115
+ // Variant B: more concise version (remove extra line breaks, simplify language)
116
+ return template.userPromptTemplate
117
+ .replace(/\n\n/g, '\n')
118
+ .replace(/Look for dynamic references, implicit dependencies, and business logic relationships\.\n/, '');
119
+ }
120
+ /**
121
+ * @ac US-058-AC-3: Optimize token usage
122
+ * Optimize context to reduce token count
123
+ */
124
+ optimizeContext(context) {
125
+ const optimized = {};
126
+ const limits = context.limits ?? {};
127
+ // Limit components
128
+ if (context.components) {
129
+ const maxComponents = limits.maxComponents ?? 20;
130
+ optimized.components = Array.isArray(context.components)
131
+ ? context.components.slice(0, maxComponents)
132
+ : context.components;
133
+ }
134
+ // Limit waves
135
+ if (context.waves) {
136
+ optimized.waves = Array.isArray(context.waves) ? context.waves.slice(0, 10) : context.waves;
137
+ }
138
+ // Limit dependencies
139
+ if (context.dependencies) {
140
+ optimized.dependencies = Array.isArray(context.dependencies)
141
+ ? context.dependencies.slice(0, 30)
142
+ : context.dependencies;
143
+ }
144
+ // Include other metadata as-is
145
+ if (context.metadata) {
146
+ for (const [key, value] of Object.entries(context.metadata)) {
147
+ optimized[key] = value;
148
+ }
149
+ }
150
+ return optimized;
151
+ }
152
+ /**
153
+ * @ac US-058-AC-3: Optimize token usage
154
+ * Estimate token count (rough approximation)
155
+ */
156
+ estimateTokens(text) {
157
+ // Rough estimate: 1 token ≈ 4 characters
158
+ return Math.ceil(text.length / 4);
159
+ }
160
+ /**
161
+ * Get available templates
162
+ */
163
+ getTemplates() {
164
+ return Object.keys(PROMPT_TEMPLATES);
165
+ }
166
+ /**
167
+ * Get template details
168
+ */
169
+ getTemplate(name) {
170
+ return PROMPT_TEMPLATES[name];
171
+ }
172
+ /**
173
+ * @ac US-058-AC-5: Version prompts
174
+ * Get template version
175
+ */
176
+ getTemplateVersion(name) {
177
+ return PROMPT_TEMPLATES[name]?.version;
178
+ }
179
+ }
180
+ //# sourceMappingURL=prompt-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-builder.js","sourceRoot":"","sources":["../../src/ai/prompt-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * AI Response Parser - US-059
3
+ * Parse AI responses reliably and extract actionable information
4
+ *
5
+ * @ac US-059-AC-1: Parse JSON responses
6
+ * @ac US-059-AC-2: Handle malformed responses
7
+ * @ac US-059-AC-3: Extract structured data
8
+ * @ac US-059-AC-4: Validate response schema
9
+ * @ac US-059-AC-5: Handle AI hallucinations
10
+ * @ac US-059-AC-6: Confidence scoring
11
+ * @issue #59
12
+ */
13
+ export type ParsedResponse<T> = {
14
+ success: boolean;
15
+ data?: T;
16
+ confidence: number;
17
+ warnings: string[];
18
+ errors: string[];
19
+ rawContent: string;
20
+ hallucinationDetected: boolean;
21
+ };
22
+ export type SchemaValidationResult = {
23
+ valid: boolean;
24
+ errors: string[];
25
+ missingFields: string[];
26
+ invalidTypes: string[];
27
+ };
28
+ /**
29
+ * @ac US-059-AC-1: Parse JSON responses
30
+ * @ac US-059-AC-2: Handle malformed responses
31
+ */
32
+ export declare class ResponseParser {
33
+ /**
34
+ * @ac US-059-AC-1: Parse JSON responses
35
+ * Parse AI response into structured data
36
+ */
37
+ parse<T>(content: string, schema?: Record<string, unknown>): ParsedResponse<T>;
38
+ /**
39
+ * @ac US-059-AC-2: Handle malformed responses
40
+ * Extract JSON from potentially malformed response
41
+ */
42
+ private extractJSON;
43
+ /**
44
+ * @ac US-059-AC-4: Validate response schema
45
+ * Validate parsed data against schema
46
+ */
47
+ private validateSchema;
48
+ /**
49
+ * @ac US-059-AC-5: Handle AI hallucinations
50
+ * Detect potential hallucinations in AI response
51
+ */
52
+ private detectHallucinations;
53
+ /**
54
+ * @ac US-059-AC-6: Confidence scoring
55
+ * Calculate confidence score for parsed response
56
+ */
57
+ private calculateConfidence;
58
+ /**
59
+ * @ac US-059-AC-3: Extract structured data
60
+ * Parse array of items from response
61
+ */
62
+ parseArray<T>(content: string): ParsedResponse<T[]>;
63
+ /**
64
+ * Format parsing report
65
+ */
66
+ formatReport<T>(result: ParsedResponse<T>): string;
67
+ }
@@ -0,0 +1,234 @@
1
+ /**
2
+ * AI Response Parser - US-059
3
+ * Parse AI responses reliably and extract actionable information
4
+ *
5
+ * @ac US-059-AC-1: Parse JSON responses
6
+ * @ac US-059-AC-2: Handle malformed responses
7
+ * @ac US-059-AC-3: Extract structured data
8
+ * @ac US-059-AC-4: Validate response schema
9
+ * @ac US-059-AC-5: Handle AI hallucinations
10
+ * @ac US-059-AC-6: Confidence scoring
11
+ * @issue #59
12
+ */
13
+ import { getLogger } from '../utils/logger.js';
14
+ const logger = getLogger('ResponseParser');
15
+ /**
16
+ * @ac US-059-AC-1: Parse JSON responses
17
+ * @ac US-059-AC-2: Handle malformed responses
18
+ */
19
+ export class ResponseParser {
20
+ /**
21
+ * @ac US-059-AC-1: Parse JSON responses
22
+ * Parse AI response into structured data
23
+ */
24
+ parse(content, schema) {
25
+ const result = {
26
+ success: false,
27
+ confidence: 0,
28
+ warnings: [],
29
+ errors: [],
30
+ rawContent: content,
31
+ hallucinationDetected: false,
32
+ };
33
+ try {
34
+ // Extract JSON from response
35
+ const json = this.extractJSON(content);
36
+ if (!json) {
37
+ result.errors.push('No JSON found in response');
38
+ return result;
39
+ }
40
+ // Parse JSON
41
+ const parsed = JSON.parse(json);
42
+ // Validate schema if provided
43
+ if (schema) {
44
+ const validation = this.validateSchema(parsed, schema);
45
+ if (!validation.valid) {
46
+ result.errors.push(...validation.errors);
47
+ result.warnings.push(...validation.missingFields.map((f) => `Missing field: ${f}`));
48
+ result.success = false; // Mark as failed if schema validation fails
49
+ return result;
50
+ }
51
+ }
52
+ // Check for hallucinations
53
+ const hallucinationCheck = this.detectHallucinations(content, parsed);
54
+ if (hallucinationCheck.detected) {
55
+ result.hallucinationDetected = true;
56
+ result.warnings.push(...hallucinationCheck.warnings);
57
+ }
58
+ // Calculate confidence
59
+ result.confidence = this.calculateConfidence(parsed, schema, result.warnings.length);
60
+ result.data = parsed;
61
+ result.success = true;
62
+ logger.debug('Response parsed successfully', {
63
+ confidence: result.confidence,
64
+ warnings: result.warnings.length,
65
+ });
66
+ return result;
67
+ }
68
+ catch (error) {
69
+ result.errors.push(error instanceof Error ? error.message : String(error));
70
+ logger.error('Failed to parse response', {
71
+ error: error instanceof Error ? error.message : String(error),
72
+ });
73
+ return result;
74
+ }
75
+ }
76
+ /**
77
+ * @ac US-059-AC-2: Handle malformed responses
78
+ * Extract JSON from potentially malformed response
79
+ */
80
+ extractJSON(content) {
81
+ // Try to find JSON block with code fences
82
+ const codeBlockMatch = /```json\s*([\s\S]*?)\s*```/.exec(content);
83
+ if (codeBlockMatch) {
84
+ return codeBlockMatch[1];
85
+ }
86
+ // Try to find JSON array first (before objects, as arrays can contain objects)
87
+ const arrayMatch = /\[[\s\S]*\]/.exec(content);
88
+ if (arrayMatch) {
89
+ return arrayMatch[0];
90
+ }
91
+ // Try to find raw JSON object
92
+ const jsonMatch = /\{[\s\S]*\}/.exec(content);
93
+ if (jsonMatch) {
94
+ return jsonMatch[0];
95
+ }
96
+ return null;
97
+ }
98
+ /**
99
+ * @ac US-059-AC-4: Validate response schema
100
+ * Validate parsed data against schema
101
+ */
102
+ validateSchema(data, schema) {
103
+ const result = {
104
+ valid: true,
105
+ errors: [],
106
+ missingFields: [],
107
+ invalidTypes: [],
108
+ };
109
+ if (typeof data !== 'object' || data === null) {
110
+ result.valid = false;
111
+ result.errors.push('Data is not an object');
112
+ return result;
113
+ }
114
+ const dataObj = data;
115
+ // Check required fields
116
+ for (const [field, expectedType] of Object.entries(schema)) {
117
+ if (!(field in dataObj)) {
118
+ result.missingFields.push(field);
119
+ result.valid = false;
120
+ continue;
121
+ }
122
+ // Basic type checking
123
+ const actualType = Array.isArray(dataObj[field]) ? 'array' : typeof dataObj[field];
124
+ if (expectedType !== actualType && expectedType !== 'any') {
125
+ result.invalidTypes.push(`${field}: expected ${String(expectedType)}, got ${actualType}`);
126
+ result.valid = false;
127
+ }
128
+ }
129
+ return result;
130
+ }
131
+ /**
132
+ * @ac US-059-AC-5: Handle AI hallucinations
133
+ * Detect potential hallucinations in AI response
134
+ */
135
+ detectHallucinations(content, parsed) {
136
+ const warnings = [];
137
+ // Check for common hallucination patterns
138
+ const hallucinationPatterns = [
139
+ /I apologize|I'm sorry|I cannot|I don't have/i,
140
+ /As an AI|As a language model/i,
141
+ /hypothetical|example|placeholder/i,
142
+ ];
143
+ for (const pattern of hallucinationPatterns) {
144
+ if (pattern.test(content)) {
145
+ warnings.push(`Possible hallucination detected: ${pattern.source}`);
146
+ }
147
+ }
148
+ // Check for suspiciously generic data
149
+ if (typeof parsed === 'object' && parsed !== null) {
150
+ const dataObj = parsed;
151
+ for (const [key, value] of Object.entries(dataObj)) {
152
+ if (typeof value === 'string' &&
153
+ (value.toLowerCase().includes('example') ||
154
+ value.toLowerCase().includes('placeholder') ||
155
+ value.toLowerCase().includes('todo'))) {
156
+ warnings.push(`Suspicious generic value in field "${key}": ${value}`);
157
+ }
158
+ }
159
+ }
160
+ return {
161
+ detected: warnings.length > 0,
162
+ warnings,
163
+ };
164
+ }
165
+ /**
166
+ * @ac US-059-AC-6: Confidence scoring
167
+ * Calculate confidence score for parsed response
168
+ */
169
+ calculateConfidence(data, schema, warningCount = 0) {
170
+ let confidence = 1.0;
171
+ // Reduce confidence for schema validation issues
172
+ if (schema) {
173
+ const validation = this.validateSchema(data, schema);
174
+ confidence -= validation.missingFields.length * 0.1;
175
+ confidence -= validation.invalidTypes.length * 0.15;
176
+ }
177
+ // Reduce confidence for warnings
178
+ confidence -= warningCount * 0.05;
179
+ // Check data completeness
180
+ if (typeof data === 'object' && data !== null) {
181
+ const dataObj = data;
182
+ const emptyFields = Object.values(dataObj).filter((v) => v === null || v === undefined || v === '').length;
183
+ confidence -= emptyFields * 0.05;
184
+ }
185
+ return Math.max(0, Math.min(1, confidence));
186
+ }
187
+ /**
188
+ * @ac US-059-AC-3: Extract structured data
189
+ * Parse array of items from response
190
+ */
191
+ parseArray(content) {
192
+ const result = this.parse(content);
193
+ if (result.success && result.data && !Array.isArray(result.data)) {
194
+ result.success = false;
195
+ result.errors.push('Response is not an array');
196
+ result.data = undefined;
197
+ }
198
+ return result;
199
+ }
200
+ /**
201
+ * Format parsing report
202
+ */
203
+ formatReport(result) {
204
+ const lines = [];
205
+ lines.push('📝 AI Response Parse Report');
206
+ lines.push('═══════════════════════════════════════');
207
+ if (result.success) {
208
+ lines.push(`✅ Success: Confidence ${(result.confidence * 100).toFixed(0)}%`);
209
+ }
210
+ else {
211
+ lines.push('❌ Failed to parse response');
212
+ }
213
+ if (result.errors.length > 0) {
214
+ lines.push('');
215
+ lines.push('❌ Errors:');
216
+ for (const error of result.errors) {
217
+ lines.push(` - ${error}`);
218
+ }
219
+ }
220
+ if (result.warnings.length > 0) {
221
+ lines.push('');
222
+ lines.push('⚠️ Warnings:');
223
+ for (const warning of result.warnings) {
224
+ lines.push(` - ${warning}`);
225
+ }
226
+ }
227
+ if (result.hallucinationDetected) {
228
+ lines.push('');
229
+ lines.push('🔍 Hallucination detected - review data carefully');
230
+ }
231
+ return lines.join('\n');
232
+ }
233
+ }
234
+ //# sourceMappingURL=response-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-parser.js","sourceRoot":"","sources":["../../src/ai/response-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * AI Wave Validation Service - US-056
3
+ * Uses Agentforce to validate deployment waves for business logic issues
4
+ *
5
+ * @ac US-056-AC-1: Send wave structure to Agentforce
6
+ * @ac US-056-AC-2: Receive validation feedback
7
+ * @ac US-056-AC-3: Identify potential issues
8
+ * @ac US-056-AC-4: Suggest optimizations
9
+ * @ac US-056-AC-5: Risk assessment per wave
10
+ * @ac US-056-AC-6: Apply AI suggestions (optional)
11
+ * @issue #56
12
+ */
13
+ import type { Wave } from '../waves/wave-builder.js';
14
+ import type { LLMProvider } from './llm-provider.js';
15
+ export type WaveValidationIssue = {
16
+ waveNumber: number;
17
+ severity: 'low' | 'medium' | 'high' | 'critical';
18
+ category: 'dependency' | 'business-logic' | 'performance' | 'risk';
19
+ message: string;
20
+ affectedComponents: string[];
21
+ suggestion?: string;
22
+ };
23
+ export type WaveOptimization = {
24
+ waveNumber: number;
25
+ type: 'merge' | 'split' | 'reorder' | 'add-component' | 'remove-component';
26
+ description: string;
27
+ confidence: number;
28
+ estimatedImprovement: string;
29
+ };
30
+ export type WaveRiskAssessment = {
31
+ waveNumber: number;
32
+ riskLevel: 'low' | 'medium' | 'high' | 'critical';
33
+ riskFactors: string[];
34
+ mitigation: string[];
35
+ recommendedActions: string[];
36
+ };
37
+ export type WaveValidationResult = {
38
+ isValid: boolean;
39
+ issues: WaveValidationIssue[];
40
+ optimizations: WaveOptimization[];
41
+ riskAssessments: WaveRiskAssessment[];
42
+ overallRisk: 'low' | 'medium' | 'high' | 'critical';
43
+ executionTime: number;
44
+ aiAnalyzed: boolean;
45
+ };
46
+ export type WaveValidationServiceOptions = {
47
+ baseDir?: string;
48
+ };
49
+ /**
50
+ * @ac US-056-AC-1: Send wave structure to Agentforce
51
+ * @ac US-056-AC-2: Receive validation feedback
52
+ */
53
+ export declare class WaveValidationService {
54
+ private readonly llmProvider;
55
+ constructor(llmProviderOrOptions?: LLMProvider | WaveValidationServiceOptions);
56
+ private resolveProvider;
57
+ /**
58
+ * @ac US-056-AC-1: Send wave structure to Agentforce
59
+ * Validate deployment waves using AI
60
+ */
61
+ validateWaves(waves: Wave[]): Promise<WaveValidationResult>;
62
+ /**
63
+ * Build validation prompt
64
+ */
65
+ private buildValidationPrompt;
66
+ /**
67
+ * @ac US-056-AC-2: Receive validation feedback
68
+ * @ac US-056-AC-3: Identify potential issues
69
+ * @ac US-056-AC-4: Suggest optimizations
70
+ * @ac US-056-AC-5: Risk assessment per wave
71
+ */
72
+ private parseValidationResponse;
73
+ /**
74
+ * Parse issues from AI response
75
+ */
76
+ private parseIssues;
77
+ /**
78
+ * Parse optimizations from AI response
79
+ */
80
+ private parseOptimizations;
81
+ /**
82
+ * Parse risk assessments from AI response
83
+ */
84
+ private parseRiskAssessments;
85
+ /**
86
+ * Get mock validation (fallback when AI unavailable)
87
+ */
88
+ private getMockValidation;
89
+ /**
90
+ * Calculate overall risk from individual assessments
91
+ */
92
+ private calculateOverallRisk;
93
+ /**
94
+ * @ac US-056-AC-6: Apply AI suggestions (optional)
95
+ * Apply optimization suggestions to waves
96
+ */
97
+ applyOptimizations(waves: Wave[], optimizations: WaveOptimization[]): Wave[];
98
+ getProviderConfig(): Readonly<ReturnType<LLMProvider['getConfig']>>;
99
+ /**
100
+ * Format validation report
101
+ */
102
+ formatValidationReport(result: WaveValidationResult): string;
103
+ /**
104
+ * Get risk level icon
105
+ */
106
+ private getRiskIcon;
107
+ /**
108
+ * Get severity icon
109
+ */
110
+ private getSeverityIcon;
111
+ }