@jterrats/smart-deployment 1.0.3 → 1.0.5

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 (258) hide show
  1. package/LICENSE +29 -0
  2. package/README.md +6 -0
  3. package/lib/ai/wave-validation-service.d.ts +21 -0
  4. package/lib/ai/wave-validation-service.js +189 -114
  5. package/lib/ai/wave-validation-service.js.map +1 -1
  6. package/lib/analysis/analysis-reporter.d.ts +12 -0
  7. package/lib/analysis/analysis-reporter.js +61 -0
  8. package/lib/analysis/analysis-reporter.js.map +1 -1
  9. package/lib/analysis/analyze-artifact-service.d.ts +25 -0
  10. package/lib/analysis/analyze-artifact-service.js +50 -0
  11. package/lib/analysis/analyze-artifact-service.js.map +1 -0
  12. package/lib/analysis/analyze-context-service.d.ts +25 -0
  13. package/lib/analysis/analyze-context-service.js +28 -0
  14. package/lib/analysis/analyze-context-service.js.map +1 -0
  15. package/lib/analysis/project-analysis-service.d.ts +48 -0
  16. package/lib/analysis/project-analysis-service.js +134 -0
  17. package/lib/analysis/project-analysis-service.js.map +1 -0
  18. package/lib/commands/analyze.d.ts +0 -2
  19. package/lib/commands/analyze.js +31 -162
  20. package/lib/commands/analyze.js.map +1 -1
  21. package/lib/commands/config.d.ts +0 -4
  22. package/lib/commands/config.js +25 -95
  23. package/lib/commands/config.js.map +1 -1
  24. package/lib/commands/resume.js +6 -16
  25. package/lib/commands/resume.js.map +1 -1
  26. package/lib/commands/start.d.ts +0 -11
  27. package/lib/commands/start.js +38 -550
  28. package/lib/commands/start.js.map +1 -1
  29. package/lib/commands/status.js +36 -12
  30. package/lib/commands/status.js.map +1 -1
  31. package/lib/commands/validate.d.ts +3 -0
  32. package/lib/commands/validate.js +5 -7
  33. package/lib/commands/validate.js.map +1 -1
  34. package/lib/config/config-mutation-service.d.ts +21 -0
  35. package/lib/config/config-mutation-service.js +61 -0
  36. package/lib/config/config-mutation-service.js.map +1 -0
  37. package/lib/dependencies/circular-dependency-detector.d.ts +5 -0
  38. package/lib/dependencies/circular-dependency-detector.js +67 -72
  39. package/lib/dependencies/circular-dependency-detector.js.map +1 -1
  40. package/lib/dependencies/dependency-depth-calculator.d.ts +28 -0
  41. package/lib/dependencies/dependency-depth-calculator.js +86 -39
  42. package/lib/dependencies/dependency-depth-calculator.js.map +1 -1
  43. package/lib/dependencies/dependency-graph-builder.d.ts +45 -13
  44. package/lib/dependencies/dependency-graph-builder.js +228 -123
  45. package/lib/dependencies/dependency-graph-builder.js.map +1 -1
  46. package/lib/dependencies/dependency-impact-analyzer.d.ts +13 -0
  47. package/lib/dependencies/dependency-impact-analyzer.js +146 -102
  48. package/lib/dependencies/dependency-impact-analyzer.js.map +1 -1
  49. package/lib/dependencies/dependency-merger.d.ts +10 -0
  50. package/lib/dependencies/dependency-merger.js +123 -61
  51. package/lib/dependencies/dependency-merger.js.map +1 -1
  52. package/lib/dependencies/dependency-resolver.d.ts +34 -9
  53. package/lib/dependencies/dependency-resolver.js +181 -112
  54. package/lib/dependencies/dependency-resolver.js.map +1 -1
  55. package/lib/dependencies/dependency-semantics.d.ts +20 -0
  56. package/lib/dependencies/dependency-semantics.js +55 -0
  57. package/lib/dependencies/dependency-semantics.js.map +1 -0
  58. package/lib/dependencies/graph-visualizer.d.ts +6 -1
  59. package/lib/dependencies/graph-visualizer.js +38 -4
  60. package/lib/dependencies/graph-visualizer.js.map +1 -1
  61. package/lib/dependencies/heuristic-inference.d.ts +2 -53
  62. package/lib/dependencies/heuristic-inference.js +8 -317
  63. package/lib/dependencies/heuristic-inference.js.map +1 -1
  64. package/lib/dependencies/heuristic-patterns.d.ts +14 -0
  65. package/lib/dependencies/heuristic-patterns.js +247 -0
  66. package/lib/dependencies/heuristic-patterns.js.map +1 -0
  67. package/lib/deployment/cycle-remediation-runner.d.ts +36 -0
  68. package/lib/deployment/cycle-remediation-runner.js +262 -0
  69. package/lib/deployment/cycle-remediation-runner.js.map +1 -0
  70. package/lib/deployment/deployment-context-service.d.ts +24 -0
  71. package/lib/deployment/deployment-context-service.js +17 -0
  72. package/lib/deployment/deployment-context-service.js.map +1 -0
  73. package/lib/deployment/deployment-runner.d.ts +37 -0
  74. package/lib/deployment/deployment-runner.js +94 -0
  75. package/lib/deployment/deployment-runner.js.map +1 -0
  76. package/lib/deployment/deployment-status-service.d.ts +5 -0
  77. package/lib/deployment/deployment-status-service.js +39 -18
  78. package/lib/deployment/deployment-status-service.js.map +1 -1
  79. package/lib/deployment/deployment-validation-service.d.ts +5 -2
  80. package/lib/deployment/deployment-validation-service.js +48 -45
  81. package/lib/deployment/deployment-validation-service.js.map +1 -1
  82. package/lib/deployment/resume-deployment-service.d.ts +14 -0
  83. package/lib/deployment/resume-deployment-service.js +25 -0
  84. package/lib/deployment/resume-deployment-service.js.map +1 -0
  85. package/lib/deployment/start-execution-service.d.ts +44 -0
  86. package/lib/deployment/start-execution-service.js +94 -0
  87. package/lib/deployment/start-execution-service.js.map +1 -0
  88. package/lib/deployment/test-executor.d.ts +60 -1
  89. package/lib/deployment/test-executor.js +180 -12
  90. package/lib/deployment/test-executor.js.map +1 -1
  91. package/lib/deployment/test-plan-service.d.ts +8 -0
  92. package/lib/deployment/test-plan-service.js +26 -0
  93. package/lib/deployment/test-plan-service.js.map +1 -0
  94. package/lib/deployment/wave-manifest-service.d.ts +11 -0
  95. package/lib/deployment/wave-manifest-service.js +41 -0
  96. package/lib/deployment/wave-manifest-service.js.map +1 -0
  97. package/lib/parsers/apex-class-parser.js +180 -98
  98. package/lib/parsers/apex-class-parser.js.map +1 -1
  99. package/lib/parsers/apex-trigger-parser.js +56 -7
  100. package/lib/parsers/apex-trigger-parser.js.map +1 -1
  101. package/lib/parsers/aura-parser.js +2 -2
  102. package/lib/parsers/aura-parser.js.map +1 -1
  103. package/lib/parsers/bot-parser.js +31 -4
  104. package/lib/parsers/bot-parser.js.map +1 -1
  105. package/lib/parsers/custom-metadata-parser.js +37 -3
  106. package/lib/parsers/custom-metadata-parser.js.map +1 -1
  107. package/lib/parsers/custom-object-parser.js +284 -150
  108. package/lib/parsers/custom-object-parser.js.map +1 -1
  109. package/lib/parsers/email-template-parser.js +115 -58
  110. package/lib/parsers/email-template-parser.js.map +1 -1
  111. package/lib/parsers/flexipage-parser.js +41 -16
  112. package/lib/parsers/flexipage-parser.js.map +1 -1
  113. package/lib/parsers/flow-parser.js +73 -63
  114. package/lib/parsers/flow-parser.js.map +1 -1
  115. package/lib/parsers/genai-prompt-parser.js +16 -4
  116. package/lib/parsers/genai-prompt-parser.js.map +1 -1
  117. package/lib/parsers/layout-parser.d.ts +11 -0
  118. package/lib/parsers/layout-parser.js +143 -68
  119. package/lib/parsers/layout-parser.js.map +1 -1
  120. package/lib/parsers/lwc-parser.d.ts +0 -9
  121. package/lib/parsers/lwc-parser.js +245 -100
  122. package/lib/parsers/lwc-parser.js.map +1 -1
  123. package/lib/parsers/parser-utils.d.ts +3 -0
  124. package/lib/parsers/parser-utils.js +16 -0
  125. package/lib/parsers/parser-utils.js.map +1 -0
  126. package/lib/parsers/permission-set-parser.d.ts +6 -0
  127. package/lib/parsers/permission-set-parser.js +31 -40
  128. package/lib/parsers/permission-set-parser.js.map +1 -1
  129. package/lib/parsers/profile-parser.d.ts +13 -0
  130. package/lib/parsers/profile-parser.js +39 -34
  131. package/lib/parsers/profile-parser.js.map +1 -1
  132. package/lib/parsers/visualforce-parser.js +2 -1
  133. package/lib/parsers/visualforce-parser.js.map +1 -1
  134. package/lib/presentation/analyze-command-presenter.d.ts +10 -0
  135. package/lib/presentation/analyze-command-presenter.js +30 -0
  136. package/lib/presentation/analyze-command-presenter.js.map +1 -0
  137. package/lib/presentation/config-command-presenter.d.ts +15 -0
  138. package/lib/presentation/config-command-presenter.js +50 -0
  139. package/lib/presentation/config-command-presenter.js.map +1 -0
  140. package/lib/presentation/project-analysis-presenter.d.ts +9 -0
  141. package/lib/presentation/project-analysis-presenter.js +9 -0
  142. package/lib/presentation/project-analysis-presenter.js.map +1 -0
  143. package/lib/presentation/resume-command-presenter.d.ts +7 -0
  144. package/lib/presentation/resume-command-presenter.js +12 -0
  145. package/lib/presentation/resume-command-presenter.js.map +1 -0
  146. package/lib/presentation/start-command-presenter.d.ts +15 -0
  147. package/lib/presentation/start-command-presenter.js +29 -0
  148. package/lib/presentation/start-command-presenter.js.map +1 -0
  149. package/lib/presentation/status-command-presenter.d.ts +7 -0
  150. package/lib/presentation/status-command-presenter.js +16 -0
  151. package/lib/presentation/status-command-presenter.js.map +1 -0
  152. package/lib/presentation/validate-command-presenter.d.ts +9 -0
  153. package/lib/presentation/validate-command-presenter.js +50 -0
  154. package/lib/presentation/validate-command-presenter.js.map +1 -0
  155. package/lib/services/metadata-scanner-service.d.ts +8 -12
  156. package/lib/services/metadata-scanner-service.js +55 -533
  157. package/lib/services/metadata-scanner-service.js.map +1 -1
  158. package/lib/services/scanners/automation-ai-metadata-scanner.d.ts +4 -0
  159. package/lib/services/scanners/automation-ai-metadata-scanner.js +61 -0
  160. package/lib/services/scanners/automation-ai-metadata-scanner.js.map +1 -0
  161. package/lib/services/scanners/code-metadata-scanner.d.ts +23 -0
  162. package/lib/services/scanners/code-metadata-scanner.js +149 -0
  163. package/lib/services/scanners/code-metadata-scanner.js.map +1 -0
  164. package/lib/services/scanners/data-metadata-scanner.d.ts +3 -0
  165. package/lib/services/scanners/data-metadata-scanner.js +82 -0
  166. package/lib/services/scanners/data-metadata-scanner.js.map +1 -0
  167. package/lib/services/scanners/experience-metadata-scanner.d.ts +5 -0
  168. package/lib/services/scanners/experience-metadata-scanner.js +123 -0
  169. package/lib/services/scanners/experience-metadata-scanner.js.map +1 -0
  170. package/lib/services/scanners/scanner-runtime.d.ts +11 -0
  171. package/lib/services/scanners/scanner-runtime.js +115 -0
  172. package/lib/services/scanners/scanner-runtime.js.map +1 -0
  173. package/lib/services/scanners/security-metadata-scanner.d.ts +3 -0
  174. package/lib/services/scanners/security-metadata-scanner.js +71 -0
  175. package/lib/services/scanners/security-metadata-scanner.js.map +1 -0
  176. package/lib/types/dependency.d.ts +11 -1
  177. package/lib/types/metadata.d.ts +17 -0
  178. package/lib/types/salesforce/flow/actions.d.ts +108 -0
  179. package/lib/types/salesforce/flow/actions.js +2 -0
  180. package/lib/types/salesforce/flow/actions.js.map +1 -0
  181. package/lib/types/salesforce/flow/common.d.ts +36 -0
  182. package/lib/types/salesforce/flow/common.js +5 -0
  183. package/lib/types/salesforce/flow/common.js.map +1 -0
  184. package/lib/types/salesforce/flow/metadata.d.ts +37 -0
  185. package/lib/types/salesforce/flow/metadata.js +2 -0
  186. package/lib/types/salesforce/flow/metadata.js.map +1 -0
  187. package/lib/types/salesforce/flow/records.d.ts +38 -0
  188. package/lib/types/salesforce/flow/records.js +2 -0
  189. package/lib/types/salesforce/flow/records.js.map +1 -0
  190. package/lib/types/salesforce/flow/resources.d.ts +44 -0
  191. package/lib/types/salesforce/flow/resources.js +2 -0
  192. package/lib/types/salesforce/flow/resources.js.map +1 -0
  193. package/lib/types/salesforce/flow/screens.d.ts +56 -0
  194. package/lib/types/salesforce/flow/screens.js +2 -0
  195. package/lib/types/salesforce/flow/screens.js.map +1 -0
  196. package/lib/types/salesforce/flow/start.d.ts +24 -0
  197. package/lib/types/salesforce/flow/start.js +2 -0
  198. package/lib/types/salesforce/flow/start.js.map +1 -0
  199. package/lib/types/salesforce/flow.d.ts +9 -514
  200. package/lib/types/salesforce/flow.js +1 -1
  201. package/lib/types/salesforce/object/core.d.ts +68 -0
  202. package/lib/types/salesforce/object/core.js +5 -0
  203. package/lib/types/salesforce/object/core.js.map +1 -0
  204. package/lib/types/salesforce/object/field.d.ts +155 -0
  205. package/lib/types/salesforce/object/field.js +5 -0
  206. package/lib/types/salesforce/object/field.js.map +1 -0
  207. package/lib/types/salesforce/object/filter.d.ts +16 -0
  208. package/lib/types/salesforce/object/filter.js +5 -0
  209. package/lib/types/salesforce/object/filter.js.map +1 -0
  210. package/lib/types/salesforce/object/policy.d.ts +27 -0
  211. package/lib/types/salesforce/object/policy.js +5 -0
  212. package/lib/types/salesforce/object/policy.js.map +1 -0
  213. package/lib/types/salesforce/object/record.d.ts +44 -0
  214. package/lib/types/salesforce/object/record.js +5 -0
  215. package/lib/types/salesforce/object/record.js.map +1 -0
  216. package/lib/types/salesforce/object/view.d.ts +71 -0
  217. package/lib/types/salesforce/object/view.js +5 -0
  218. package/lib/types/salesforce/object/view.js.map +1 -0
  219. package/lib/types/salesforce/object/weblink.d.ts +70 -0
  220. package/lib/types/salesforce/object/weblink.js +5 -0
  221. package/lib/types/salesforce/object/weblink.js.map +1 -0
  222. package/lib/types/salesforce/object.d.ts +7 -423
  223. package/lib/types/salesforce/object.js +7 -1
  224. package/lib/types/salesforce/object.js.map +1 -1
  225. package/lib/utils/cache-manager.d.ts +16 -15
  226. package/lib/utils/cache-manager.js +290 -188
  227. package/lib/utils/cache-manager.js.map +1 -1
  228. package/lib/utils/logger.d.ts +8 -0
  229. package/lib/utils/logger.js +82 -69
  230. package/lib/utils/logger.js.map +1 -1
  231. package/lib/validators/xml/xml-reference-rules.d.ts +3 -0
  232. package/lib/validators/xml/xml-reference-rules.js +173 -0
  233. package/lib/validators/xml/xml-reference-rules.js.map +1 -0
  234. package/lib/validators/xml/xml-report-formatter.d.ts +2 -0
  235. package/lib/validators/xml/xml-report-formatter.js +47 -0
  236. package/lib/validators/xml/xml-report-formatter.js.map +1 -0
  237. package/lib/validators/xml/xml-schema-rules.d.ts +3 -0
  238. package/lib/validators/xml/xml-schema-rules.js +75 -0
  239. package/lib/validators/xml/xml-schema-rules.js.map +1 -0
  240. package/lib/validators/xml/xml-validation-types.d.ts +25 -0
  241. package/lib/validators/xml/xml-validation-types.js +2 -0
  242. package/lib/validators/xml/xml-validation-types.js.map +1 -0
  243. package/lib/validators/xml-metadata-validator.d.ts +2 -63
  244. package/lib/validators/xml-metadata-validator.js +7 -338
  245. package/lib/validators/xml-metadata-validator.js.map +1 -1
  246. package/lib/waves/test-optimizer.d.ts +13 -0
  247. package/lib/waves/test-optimizer.js +124 -63
  248. package/lib/waves/test-optimizer.js.map +1 -1
  249. package/lib/waves/wave-builder.d.ts +17 -21
  250. package/lib/waves/wave-builder.js +199 -135
  251. package/lib/waves/wave-builder.js.map +1 -1
  252. package/lib/waves/wave-splitter.d.ts +12 -8
  253. package/lib/waves/wave-splitter.js +156 -115
  254. package/lib/waves/wave-splitter.js.map +1 -1
  255. package/npm-shrinkwrap.json +959 -422
  256. package/oclif.lock +294 -57
  257. package/oclif.manifest.json +1 -1
  258. package/package.json +21 -9
@@ -14,18 +14,18 @@
14
14
  */
15
15
  import { Messages } from '@salesforce/core';
16
16
  import { Flags, SfCommand } from '@salesforce/sf-plugins-core';
17
+ import { AnalyzeArtifactService } from '../analysis/analyze-artifact-service.js';
18
+ import { AnalyzeContextService } from '../analysis/analyze-context-service.js';
19
+ import { AnalyzeCommandPresenter } from '../presentation/analyze-command-presenter.js';
20
+ import { ProjectAnalysisPresenter } from '../presentation/project-analysis-presenter.js';
17
21
  import { getLogger } from '../utils/logger.js';
18
- import { AnalysisReporter } from '../analysis/analysis-reporter.js';
19
- import { DependencyInferenceService } from '../ai/dependency-inference-service.js';
20
- import { DeploymentPlanManager } from '../utils/deployment-plan-manager.js';
21
- import { MetadataScannerService } from '../services/metadata-scanner-service.js';
22
- import { WaveBuilder } from '../waves/wave-builder.js';
23
- import { AIEnhancedPriorityWaveGenerator } from '../waves/priority-wave-generator-ai.js';
24
- import { AgentforcePriorityService } from '../ai/agentforce-priority-service.js';
25
- import { DependencyGraphBuilder } from '../dependencies/dependency-graph-builder.js';
26
22
  const logger = getLogger('AnalyzeCommand');
27
23
  Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
28
24
  const messages = Messages.loadMessages('@jterrats/smart-deployment', 'analyze');
25
+ const analyzeContextService = new AnalyzeContextService();
26
+ const artifactService = new AnalyzeArtifactService();
27
+ const projectAnalysisPresenter = new ProjectAnalysisPresenter();
28
+ const presenter = new AnalyzeCommandPresenter();
29
29
  export default class Analyze extends SfCommand {
30
30
  static summary = messages.getMessage('summary');
31
31
  static description = messages.getMessage('description');
@@ -59,174 +59,43 @@ export default class Analyze extends SfCommand {
59
59
  useAI: flags['use-ai'],
60
60
  });
61
61
  this.log('📊 Analyzing metadata...');
62
- const analysisContext = await this.buildAnalysisContext(flags, sourcePath);
62
+ const analysisContext = await analyzeContextService.buildContext({
63
+ sourcePath,
64
+ useAI: Boolean(flags['use-ai']),
65
+ orgType: typeof flags['org-type'] === 'string' ? flags['org-type'] : undefined,
66
+ industry: typeof flags.industry === 'string' ? flags.industry : undefined,
67
+ });
68
+ projectAnalysisPresenter.reportDiagnostics(this, analysisContext.scanResult, analysisContext.messages);
63
69
  const { scanResult, waveResult, priorityOverrides, aiContext } = analysisContext;
64
70
  const components = scanResult.components.length;
65
71
  const dependencies = scanResult.dependencyResult.stats.totalDependencies;
66
- const cycles = scanResult.dependencyResult.circularDependencies.length;
67
- this.log(`✅ Found ${components} components with ${dependencies} dependencies`);
68
- if (cycles > 0) {
69
- this.log(`⚠️ Warning: ${cycles} circular dependency cycle(s) detected`);
70
- }
71
- // Generate waves
72
- this.log('');
73
- this.log('🌊 Generating deployment waves...');
74
- this.log(`✅ Generated ${waveResult.waves.length} deployment wave(s)`);
75
- this.log(` Total components: ${waveResult.totalComponents}`);
76
- if (waveResult.unplacedComponents.length > 0) {
77
- this.log(` ⚠️ ${waveResult.unplacedComponents.length} component(s) couldn't be placed (circular deps)`);
78
- }
79
- let planSaved = false;
80
- // Generate and save plan if requested
72
+ presenter.reportAnalysisSummary(this, scanResult, waveResult);
81
73
  if (flags['save-plan']) {
82
74
  this.log('');
83
75
  this.log('📋 Generating deployment plan...');
84
- // Convert waves to plan format
85
- const planWaves = waveResult.waves.map((wave) => ({
86
- number: wave.number,
87
- components: wave.components,
88
- metadata: {
89
- componentCount: wave.metadata.componentCount,
90
- types: wave.metadata.types,
91
- maxDepth: wave.metadata.maxDepth,
92
- hasCircularDeps: wave.metadata.hasCircularDeps,
93
- estimatedTime: wave.metadata.estimatedTime,
94
- },
95
- }));
96
- // Extract priorities from components (if any)
97
- const priorities = { ...priorityOverrides };
98
- for (const component of scanResult.components) {
99
- if (component.priorityBoost > 0) {
100
- const nodeId = `${component.type}:${component.name}`;
101
- priorities[nodeId] = {
102
- priority: component.priorityBoost,
103
- source: 'static',
104
- appliedAt: new Date().toISOString(),
105
- };
106
- }
107
- }
108
- const plan = DeploymentPlanManager.createPlan(planWaves, priorities, {
109
- aiEnabled: flags['use-ai'],
110
- aiModel: aiContext?.model,
111
- orgType: flags['org-type'],
112
- industry: flags.industry,
113
- generatedBy: 'smart-deployment CLI',
114
- });
115
- await DeploymentPlanManager.savePlan(plan, flags['plan-path']);
116
- const planPath = flags['plan-path'] ?? '.smart-deployment/deployment-plan.json';
117
- this.log(`✅ Deployment plan saved to: ${planPath}`);
118
- planSaved = true;
119
- this.log('');
120
- this.log('💡 Next steps:');
121
- this.log(' 1. Review the plan in your PR');
122
- this.log(' 2. Commit the plan to your repo');
123
- this.log(` 3. Use ${planPath} as a reviewed deployment artifact in CI/CD`);
124
76
  }
125
- // Output report if requested
126
- if (flags.output) {
127
- const format = flags.format === 'html' ? 'html' : 'json';
128
- const reporter = new AnalysisReporter();
129
- const report = reporter.createReport(scanResult, waveResult, aiContext);
130
- await reporter.saveReport(report, flags.output, format);
131
- this.log(`📄 Report saved to: ${flags.output} (format: ${format})`);
132
- }
133
- return { success: true, components, dependencies, planSaved, ai: aiContext };
134
- }
135
- catch (error) {
136
- logger.error('Analysis failed', { error });
137
- this.error(`Analysis failed: ${error instanceof Error ? error.message : String(error)}`);
138
- }
139
- }
140
- async buildAnalysisContext(flags, sourcePath) {
141
- const scanner = new MetadataScannerService();
142
- const scanResult = await scanner.scan({ sourcePath });
143
- const waveBuilder = new WaveBuilder({
144
- maxComponentsPerWave: 10_000,
145
- respectTypeOrder: true,
146
- handleCircularDeps: true,
147
- });
148
- let waveResult = waveBuilder.generateWaves(scanResult.dependencyResult.graph);
149
- let priorityOverrides = {};
150
- let aiContext;
151
- if (flags['use-ai']) {
152
- const inferenceService = new DependencyInferenceService({
153
- baseDir: sourcePath ?? process.cwd(),
154
- });
155
- const inferenceResult = await inferenceService.inferDependencies(scanResult.components, scanResult.dependencyResult.graph);
156
- if (inferenceResult.dependencies.length > 0) {
157
- const enrichedComponents = this.applyInferredDependencies(scanResult.components, inferenceResult.dependencies);
158
- const graphBuilder = new DependencyGraphBuilder();
159
- graphBuilder.addComponents(enrichedComponents);
160
- scanResult.components = enrichedComponents;
161
- scanResult.dependencyResult = graphBuilder.build();
162
- }
163
- this.log(' 🤖 Using AI priority weighting for analysis output...');
164
- const priorityService = new AgentforcePriorityService({
165
- baseDir: sourcePath ?? process.cwd(),
166
- });
167
- const aiWaveGenerator = new AIEnhancedPriorityWaveGenerator({
168
- agentforceService: priorityService,
77
+ const artifacts = await artifactService.generateArtifacts(scanResult, waveResult, priorityOverrides, {
78
+ savePlan: flags['save-plan'],
79
+ planPath: typeof flags['plan-path'] === 'string' ? flags['plan-path'] : undefined,
80
+ outputPath: typeof flags.output === 'string' ? flags.output : undefined,
81
+ outputFormat: flags.format === 'html' ? 'html' : 'json',
82
+ aiEnabled: Boolean(flags['use-ai']),
83
+ aiContext,
169
84
  orgType: typeof flags['org-type'] === 'string' ? flags['org-type'] : undefined,
170
85
  industry: typeof flags.industry === 'string' ? flags.industry : undefined,
171
86
  });
172
- const prioritizedWaves = await aiWaveGenerator.applyPriorityWavesAsync(waveResult.waves, scanResult.dependencyResult.components);
173
- waveResult = {
174
- ...waveResult,
175
- waves: prioritizedWaves,
176
- };
177
- priorityOverrides = aiWaveGenerator.getAIPriorityOverrides(scanResult.dependencyResult.components);
178
- const unknownTypesWarning = aiWaveGenerator.getUnknownTypesWarning();
179
- if (unknownTypesWarning) {
180
- this.warn(unknownTypesWarning);
87
+ if (artifacts.planSaved && artifacts.planPath) {
88
+ presenter.reportPlanSaved(this, artifacts.planPath);
181
89
  }
182
- const aiReport = aiWaveGenerator.getAIReport();
183
- if (aiReport) {
184
- this.log(aiReport);
90
+ if (artifacts.reportSaved && artifacts.reportPath && artifacts.reportFormat) {
91
+ presenter.reportReportSaved(this, artifacts.reportPath, artifacts.reportFormat);
185
92
  }
186
- const aiStats = aiWaveGenerator.getAIStats();
187
- const providerConfig = priorityService.getProviderConfig();
188
- aiContext = {
189
- enabled: true,
190
- provider: providerConfig.provider,
191
- model: providerConfig.model,
192
- aiAdjustments: aiStats?.aiAdjustments ?? 0,
193
- unknownTypes: aiStats?.unknownTypes ?? [],
194
- inferredDependencies: inferenceResult.highConfidenceCount,
195
- inferenceFallback: inferenceResult.fallbackToStatic,
196
- };
197
- }
198
- return {
199
- scanResult,
200
- waveResult,
201
- priorityOverrides,
202
- aiContext,
203
- };
204
- }
205
- applyInferredDependencies(components, inferredDependencies) {
206
- const clonedComponents = components.map((component) => ({
207
- ...component,
208
- dependencies: new Set(component.dependencies),
209
- dependents: new Set(component.dependents),
210
- }));
211
- const nodeIdsByName = new Map();
212
- for (const component of clonedComponents) {
213
- nodeIdsByName.set(component.name, `${component.type}:${component.name}`);
214
- }
215
- const componentsByNodeId = new Map();
216
- for (const component of clonedComponents) {
217
- const nodeId = `${component.type}:${component.name}`;
218
- componentsByNodeId.set(nodeId, component);
93
+ return { success: true, components, dependencies, planSaved: artifacts.planSaved, ai: aiContext };
219
94
  }
220
- for (const inferred of inferredDependencies) {
221
- const fromNodeId = nodeIdsByName.get(inferred.from);
222
- const toNodeId = nodeIdsByName.get(inferred.to);
223
- if (!fromNodeId || !toNodeId) {
224
- continue;
225
- }
226
- componentsByNodeId.get(fromNodeId)?.dependencies.add(toNodeId);
227
- componentsByNodeId.get(toNodeId)?.dependents.add(fromNodeId);
95
+ catch (error) {
96
+ logger.error('Analysis failed', { error });
97
+ this.error(`Analysis failed: ${error instanceof Error ? error.message : String(error)}`);
228
98
  }
229
- return clonedComponents;
230
99
  }
231
100
  }
232
101
  //# sourceMappingURL=analyze.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"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"}
@@ -32,11 +32,7 @@ export default class Config extends SfCommand<{
32
32
  run(): Promise<{
33
33
  success: boolean;
34
34
  }>;
35
- private displayConfig;
36
- private showLlmConfig;
37
- private showPriority;
38
35
  private updateLlmConfig;
39
36
  private setPriority;
40
- private showConfigValue;
41
37
  private setConfigValue;
42
38
  }
@@ -11,11 +11,15 @@
11
11
  */
12
12
  import { Messages } from '@salesforce/core';
13
13
  import { Flags, SfCommand } from '@salesforce/sf-plugins-core';
14
- import { getLogger } from '../utils/logger.js';
15
14
  import { loadRepoConfig, saveRepoConfig } from '../config/repo-config.js';
15
+ import { ConfigMutationService } from '../config/config-mutation-service.js';
16
+ import { ConfigCommandPresenter } from '../presentation/config-command-presenter.js';
17
+ import { getLogger } from '../utils/logger.js';
16
18
  const logger = getLogger('ConfigCommand');
17
19
  Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
18
20
  const messages = Messages.loadMessages('@jterrats/smart-deployment', 'config');
21
+ const configMutationService = new ConfigMutationService();
22
+ const presenter = new ConfigCommandPresenter();
19
23
  export default class Config extends SfCommand {
20
24
  static summary = messages.getMessage('summary');
21
25
  static description = messages.getMessage('description');
@@ -73,14 +77,17 @@ export default class Config extends SfCommand {
73
77
  const config = await loadRepoConfig(baseDir);
74
78
  // Handle --list flag
75
79
  if (flags.list) {
76
- this.displayConfig(config);
80
+ presenter.reportCurrentConfig(this, config);
77
81
  return { success: true };
78
82
  }
79
83
  if (flags['get-llm']) {
80
- return this.showLlmConfig(config);
84
+ presenter.reportLlmConfig(this, config);
85
+ return { success: true };
81
86
  }
82
87
  if (flags['get-priority']) {
83
- return this.showPriority(config, flags['get-priority']);
88
+ const priority = config.priorities?.[flags['get-priority']] ?? 0;
89
+ presenter.reportPriority(this, flags['get-priority'], priority);
90
+ return { success: true };
84
91
  }
85
92
  const hasLlmUpdate = flags['set-llm-provider'] !== undefined ||
86
93
  flags['set-llm-model'] !== undefined ||
@@ -93,13 +100,14 @@ export default class Config extends SfCommand {
93
100
  return await this.setPriority(config, flags['set-priority'], baseDir);
94
101
  }
95
102
  if (flags.get) {
96
- return this.showConfigValue(config, flags.get);
103
+ presenter.reportConfigValue(this, flags.get, config[flags.get]);
104
+ return { success: true };
97
105
  }
98
106
  if (flags.set) {
99
107
  return await this.setConfigValue(config, flags.set, baseDir);
100
108
  }
101
109
  // No flags - show help
102
- this.log('Use --help to see available options');
110
+ presenter.reportUsageHint(this);
103
111
  return { success: true };
104
112
  }
105
113
  catch (error) {
@@ -107,111 +115,33 @@ export default class Config extends SfCommand {
107
115
  this.error(`Configuration failed: ${error instanceof Error ? error.message : String(error)}`);
108
116
  }
109
117
  }
110
- displayConfig(config) {
111
- this.log('📋 Current Configuration:');
112
- this.log('');
113
- if (Object.keys(config).length === 0) {
114
- this.log(' (no configuration set)');
115
- return;
116
- }
117
- // Display priorities
118
- if (config.priorities && Object.keys(config.priorities).length > 0) {
119
- this.log(' Metadata Priorities:');
120
- for (const [metadata, priority] of Object.entries(config.priorities)) {
121
- this.log(` ${metadata}: ${priority}`);
122
- }
123
- this.log('');
124
- }
125
- // Display other config
126
- const { priorities, ...otherConfig } = config;
127
- void priorities;
128
- if (Object.keys(otherConfig).length > 0) {
129
- this.log(' Other Settings:');
130
- for (const [key, value] of Object.entries(otherConfig)) {
131
- const displayValue = typeof value === 'string' || typeof value === 'number' ? String(value) : JSON.stringify(value);
132
- this.log(` ${key}: ${displayValue}`);
133
- }
134
- }
135
- }
136
- showLlmConfig(config) {
137
- const llmConfig = config.llm ?? {};
138
- this.log(`llm: ${JSON.stringify(llmConfig)}`);
139
- return { success: true };
140
- }
141
- showPriority(config, metadataId) {
142
- const priority = config.priorities?.[metadataId] ?? 0;
143
- this.log(`Priority for ${metadataId}: ${priority}`);
144
- return { success: true };
145
- }
146
118
  async updateLlmConfig(config, flags, baseDir) {
147
- const nextLlmConfig = {
148
- ...(config.llm ?? {}),
149
- };
150
- const nextConfig = {
151
- ...config,
152
- llm: nextLlmConfig,
153
- };
154
119
  const llmProvider = typeof flags['set-llm-provider'] === 'string' ? flags['set-llm-provider'] : undefined;
155
120
  const llmModel = typeof flags['set-llm-model'] === 'string' ? flags['set-llm-model'] : undefined;
156
121
  const llmEndpoint = typeof flags['set-llm-endpoint'] === 'string' ? flags['set-llm-endpoint'] : undefined;
157
122
  const llmTimeout = typeof flags['set-llm-timeout'] === 'number' ? flags['set-llm-timeout'] : undefined;
158
- if (llmProvider) {
159
- nextLlmConfig.provider = llmProvider;
160
- }
161
- if (llmModel) {
162
- nextLlmConfig.model = llmModel;
163
- }
164
- if (llmEndpoint) {
165
- nextLlmConfig.endpoint = llmEndpoint;
166
- }
167
- if (llmTimeout !== undefined) {
168
- if (llmTimeout < 1) {
169
- this.error(messages.getMessage('errors.invalidLlmTimeout'));
170
- }
171
- nextLlmConfig.timeout = llmTimeout;
172
- }
123
+ const nextConfig = configMutationService.updateLlmConfig(config, {
124
+ provider: llmProvider,
125
+ model: llmModel,
126
+ endpoint: llmEndpoint,
127
+ timeout: llmTimeout,
128
+ });
173
129
  await saveRepoConfig(nextConfig, baseDir);
174
- this.log(`✅ Updated LLM configuration: ${JSON.stringify(nextConfig.llm)}`);
130
+ presenter.reportLlmUpdated(this, nextConfig);
175
131
  logger.info('LLM config updated', { llm: nextConfig.llm });
176
132
  return { success: true };
177
133
  }
178
134
  async setPriority(config, rawValue, baseDir) {
179
- const match = rawValue.match(/^(.+)=(\d+)$/);
180
- if (!match) {
181
- this.error('Invalid format. Use: MetadataType:Name=priority (e.g., ApexClass:MyClass=100)');
182
- }
183
- const [, metadataId, priorityStr] = match;
184
- const priority = parseInt(priorityStr, 10);
185
- const nextConfig = {
186
- ...config,
187
- priorities: {
188
- ...(config.priorities ?? {}),
189
- [metadataId]: priority,
190
- },
191
- };
135
+ const { nextConfig, metadataId, priority } = configMutationService.setPriority(config, rawValue);
192
136
  await saveRepoConfig(nextConfig, baseDir);
193
- this.log(`✅ Set priority for ${metadataId} = ${priority}`);
137
+ presenter.reportPriorityUpdated(this, metadataId, priority);
194
138
  logger.info('Priority updated', { metadataId, priority });
195
139
  return { success: true };
196
140
  }
197
- showConfigValue(config, key) {
198
- const value = config[key];
199
- const displayValue = value === undefined ? 'not set' : typeof value === 'string' ? value : JSON.stringify(value);
200
- this.log(`${key}: ${displayValue}`);
201
- return { success: true };
202
- }
203
141
  async setConfigValue(config, rawValue, baseDir) {
204
- const match = rawValue.match(/^([^=]+)=(.+)$/);
205
- if (!match) {
206
- this.error('Invalid format. Use: key=value');
207
- }
208
- const [, key, value] = match;
209
- const nextConfig = {
210
- ...config,
211
- [key]: value,
212
- };
142
+ const { nextConfig, key, value } = configMutationService.setConfigValue(config, rawValue);
213
143
  await saveRepoConfig(nextConfig, baseDir);
214
- this.log(`✅ Set ${key} = ${value}`);
144
+ presenter.reportConfigValueUpdated(this, key, value);
215
145
  logger.info('Config updated', { key, value });
216
146
  return { success: true };
217
147
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
@@ -11,12 +11,14 @@
11
11
  */
12
12
  import { Messages } from '@salesforce/core';
13
13
  import { Flags, SfCommand, optionalOrgFlagWithDeprecations } from '@salesforce/sf-plugins-core';
14
+ import { ResumeDeploymentService } from '../deployment/resume-deployment-service.js';
15
+ import { ResumeCommandPresenter } from '../presentation/resume-command-presenter.js';
14
16
  import { getLogger } from '../utils/logger.js';
15
17
  import { StateManager } from '../deployment/state-manager.js';
16
- import { createResumedState, summarizeDeploymentState } from '../deployment/deployment-state-summary.js';
17
18
  const logger = getLogger('ResumeCommand');
18
19
  Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
19
20
  const messages = Messages.loadMessages('@jterrats/smart-deployment', 'resume');
21
+ const presenter = new ResumeCommandPresenter();
20
22
  export default class Resume extends SfCommand {
21
23
  static summary = messages.getMessage('summary');
22
24
  static examples = messages.getMessages('examples');
@@ -37,22 +39,10 @@ export default class Resume extends SfCommand {
37
39
  const sourcePath = typeof flags['source-path'] === 'string' ? flags['source-path'] : undefined;
38
40
  try {
39
41
  logger.info('Resuming deployment', { flags });
40
- const stateManager = new StateManager({ baseDir: sourcePath });
41
- const state = await stateManager.loadState();
42
- if (!state?.failedWave) {
43
- this.error('No failed deployment state found to resume');
44
- }
45
- const summary = summarizeDeploymentState(state);
46
42
  const retryStrategy = flags['retry-strategy'];
47
- const resumedState = createResumedState(state, retryStrategy);
48
- await stateManager.saveState(resumedState);
49
- this.log(`🔄 Resume prepared for deployment ${summary.deploymentId}`);
50
- this.log(`Retry strategy: ${retryStrategy}`);
51
- this.log(`Resuming from wave ${summary.currentWave}/${summary.totalWaves}`);
52
- this.log(`Remaining waves: ${summary.remainingWaves}`);
53
- if (summary.failureReason) {
54
- this.log(`Previous failure: ${summary.failureReason}`);
55
- }
43
+ const resumeService = new ResumeDeploymentService(new StateManager({ baseDir: sourcePath }));
44
+ const summary = await resumeService.prepareResume(retryStrategy);
45
+ presenter.reportResumePreparation(this, summary, retryStrategy);
56
46
  return {
57
47
  success: true,
58
48
  resumedFromWave: summary.currentWave,
@@ -1 +1 @@
1
- {"version":3,"file":"resume.js","sourceRoot":"","sources":["../../src/commands/resume.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resume.js","sourceRoot":"","sources":["../../src/commands/resume.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAChG,OAAO,EAAE,uBAAuB,EAA4B,MAAM,4CAA4C,CAAC;AAC/G,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D,MAAM,MAAM,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;AAC1C,QAAQ,CAAC,kCAAkC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,4BAA4B,EAAE,QAAQ,CAAC,CAAC;AAC/E,MAAM,SAAS,GAAG,IAAI,sBAAsB,EAAE,CAAC;AAS/C,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,SAAuB;IAClD,MAAM,CAAU,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,CAAU,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,CAAU,KAAK,GAAyB;QACnD,YAAY,EAAE,+BAA+B;QAC7C,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC;YAC7B,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,2BAA2B,CAAC;YACzD,MAAM,EAAE,IAAI;SACb,CAAC;QACF,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC;YAC7B,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,8BAA8B,CAAC;YAC5D,OAAO,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,eAAe,CAAC;YAC/C,OAAO,EAAE,UAAU;SACpB,CAAC;KACH,CAAC;IAEK,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE/F,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAE9C,MAAM,aAAa,GAAG,KAAK,CAAC,gBAAgB,CAAwB,CAAC;YACrE,MAAM,aAAa,GAAG,IAAI,uBAAuB,CAAC,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;YAC7F,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;YACjE,SAAS,CAAC,uBAAuB,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;YAEhE,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,eAAe,EAAE,OAAO,CAAC,WAAW;gBACpC,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,YAAY,EAAE,OAAO,CAAC,YAAY;aACnC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,kBAAkB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzF,CAAC;IACH,CAAC"}
@@ -54,17 +54,6 @@ export default class Start extends SfCommand<StartResult> {
54
54
  * @ac US-046-AC-10: Handles failures gracefully
55
55
  */
56
56
  run(): Promise<StartResult>;
57
- private analyzeMetadata;
58
- private executeDeployment;
59
- private buildDeploymentContext;
60
- private generateReport;
61
- private forEachSequentially;
62
- private executeCycleRemediationDeployment;
63
- private createCycleEditRequest;
64
- private applyInferredDependencies;
65
- private restoreCycleEdits;
66
- private resolveTestLevel;
67
57
  private getTargetOrgIdentifier;
68
- private generateWaveManifest;
69
58
  }
70
59
  export {};