@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
@@ -88,6 +88,7 @@ export declare class DependencyResolver {
88
88
  private graph;
89
89
  private components;
90
90
  private options;
91
+ private cachedResult?;
91
92
  constructor(graph: DependencyGraph, components: Map<NodeId, MetadataComponent>, options?: ResolverOptions);
92
93
  /**
93
94
  * Resolve all dependencies and generate deployment order
@@ -98,27 +99,45 @@ export declare class DependencyResolver {
98
99
  */
99
100
  resolve(): ResolutionResult;
100
101
  /**
101
- * Build filtered graph based on options
102
+ * Orchestrate the staged resolution pipeline.
103
+ */
104
+ private runResolutionPipeline;
105
+ /**
106
+ * Stage 1: build a graph filtered by component/dependency classification.
102
107
  */
103
108
  private buildFilteredGraph;
104
109
  /**
105
- * Apply manual ordering constraints to the graph
106
- *
107
- * @ac US-033-AC-5: Support manual ordering constraints
110
+ * Stage 2: apply manual ordering constraints after filtering.
108
111
  */
109
112
  private applyOrderingConstraints;
110
113
  /**
111
- * Perform topological sort using Kahn's algorithm
114
+ * Stage 3: perform topological ordering on the filtered graph.
112
115
  */
113
116
  private topologicalSort;
114
117
  /**
115
- * Find missing dependencies for a node
118
+ * Stage 4: project the deployment order into resolved entries.
116
119
  */
117
- private findMissingDependencies;
120
+ private buildResolvedMap;
118
121
  /**
119
- * Build resolved dependencies map with deployment order
122
+ * Create the mutable state used by Kahn's topological traversal.
120
123
  */
121
- private buildResolvedMap;
124
+ private createTopologicalTraversalState;
125
+ /**
126
+ * Drain the topological queue and update in-degree state.
127
+ */
128
+ private processTopologicalQueue;
129
+ /**
130
+ * Lower in-degree counts after resolving one node and enqueue newly unblocked nodes.
131
+ */
132
+ private releaseResolvedDependencies;
133
+ /**
134
+ * Collect nodes that remain blocked after traversal.
135
+ */
136
+ private collectUnresolvedNodes;
137
+ /**
138
+ * Find missing dependencies for a node
139
+ */
140
+ private findMissingDependencies;
122
141
  /**
123
142
  * @ac US-033-AC-3: Handle optional dependencies
124
143
  * Note: Current MetadataComponent doesn't track dependency types
@@ -142,6 +161,12 @@ export declare class DependencyResolver {
142
161
  * @ac US-033-AC-6: Generate dependency report
143
162
  */
144
163
  private generateReport;
164
+ private calculateDeploymentLevels;
165
+ private shouldIncludeNode;
166
+ private collectIncludedDependencies;
167
+ private classifyDependency;
168
+ private calculateInDegree;
169
+ private collectZeroDegreeNodes;
145
170
  /**
146
171
  * Get resolution status for a specific component
147
172
  */
@@ -12,6 +12,7 @@
12
12
  * @issue #33
13
13
  */
14
14
  import { getLogger } from '../utils/logger.js';
15
+ import { getComponentDependencyKind, isSoftDependencyKind, shouldIncludeDependencyInResolution, } from './dependency-semantics.js';
15
16
  const logger = getLogger('DependencyResolver');
16
17
  /**
17
18
  * Dependency Resolver
@@ -31,6 +32,7 @@ export class DependencyResolver {
31
32
  graph;
32
33
  components;
33
34
  options;
35
+ cachedResult;
34
36
  constructor(graph, components, options = {}) {
35
37
  this.graph = graph;
36
38
  this.components = components;
@@ -55,71 +57,65 @@ export class DependencyResolver {
55
57
  * @ac US-033-AC-6: Generate dependency report
56
58
  */
57
59
  resolve() {
60
+ if (this.cachedResult !== undefined) {
61
+ return this.cachedResult;
62
+ }
58
63
  const startTime = Date.now();
59
- // Build filtered graph
60
- const filteredGraph = this.buildFilteredGraph();
61
- // Perform topological sort
62
- const { deploymentOrder, unresolved } = this.topologicalSort(filteredGraph);
63
- // Build resolved dependencies map
64
- const resolved = this.buildResolvedMap(deploymentOrder, filteredGraph);
65
- // Categorize components
66
- const optional = this.findOptionalDependencies();
67
- const managed = this.findManagedPackages();
68
- // Generate report
69
- const report = this.generateReport(resolved, unresolved, optional, managed);
64
+ const pipelineState = this.runResolutionPipeline();
65
+ const report = this.generateReport(pipelineState.resolved, pipelineState.unresolved, pipelineState.optional, pipelineState.managed);
70
66
  const duration = Date.now() - startTime;
71
67
  logger.info('Dependency resolution completed', {
72
68
  totalComponents: this.components.size,
73
- resolved: resolved.size,
74
- unresolved: unresolved.length,
69
+ resolved: pipelineState.resolved.size,
70
+ unresolved: pipelineState.unresolved.length,
75
71
  deploymentLevels: report.deploymentLevels,
76
72
  durationMs: duration,
77
73
  });
74
+ this.cachedResult = {
75
+ resolved: pipelineState.resolved,
76
+ deploymentOrder: pipelineState.deploymentOrder,
77
+ unresolved: pipelineState.unresolved,
78
+ optional: pipelineState.optional,
79
+ managed: pipelineState.managed,
80
+ circular: this.options.circularDependencies,
81
+ report,
82
+ };
83
+ return this.cachedResult;
84
+ }
85
+ /**
86
+ * Orchestrate the staged resolution pipeline.
87
+ */
88
+ runResolutionPipeline() {
89
+ const filteredGraph = this.buildFilteredGraph();
90
+ const { deploymentOrder, unresolved } = this.topologicalSort(filteredGraph);
91
+ const resolved = this.buildResolvedMap(deploymentOrder, filteredGraph);
92
+ const optional = this.findOptionalDependencies();
93
+ const managed = this.findManagedPackages();
78
94
  return {
79
- resolved,
95
+ filteredGraph,
80
96
  deploymentOrder,
81
97
  unresolved,
98
+ resolved,
82
99
  optional,
83
100
  managed,
84
- circular: this.options.circularDependencies,
85
- report,
86
101
  };
87
102
  }
88
103
  /**
89
- * Build filtered graph based on options
104
+ * Stage 1: build a graph filtered by component/dependency classification.
90
105
  */
91
106
  buildFilteredGraph() {
92
107
  const filtered = new Map();
93
108
  for (const [nodeId, deps] of this.graph.entries()) {
94
- // Skip managed packages if configured
95
- if (this.options.skipManaged && this.isManagedPackage(nodeId)) {
109
+ if (!this.shouldIncludeNode(nodeId)) {
96
110
  continue;
97
111
  }
98
- const filteredDeps = new Set();
99
- for (const dep of deps) {
100
- // Skip managed dependencies
101
- if (this.options.skipManaged && this.isManagedPackage(dep)) {
102
- continue;
103
- }
104
- // Handle optional dependencies
105
- if (this.isOptionalDependency()) {
106
- if (this.options.includeOptional) {
107
- filteredDeps.add(dep);
108
- }
109
- continue;
110
- }
111
- filteredDeps.add(dep);
112
- }
113
- filtered.set(nodeId, filteredDeps);
112
+ filtered.set(nodeId, this.collectIncludedDependencies(nodeId, deps));
114
113
  }
115
- // Apply ordering constraints
116
114
  this.applyOrderingConstraints(filtered);
117
115
  return filtered;
118
116
  }
119
117
  /**
120
- * Apply manual ordering constraints to the graph
121
- *
122
- * @ac US-033-AC-5: Support manual ordering constraints
118
+ * Stage 2: apply manual ordering constraints after filtering.
123
119
  */
124
120
  applyOrderingConstraints(graph) {
125
121
  for (const { before, after } of this.options.orderingConstraints) {
@@ -131,57 +127,85 @@ export class DependencyResolver {
131
127
  }
132
128
  }
133
129
  /**
134
- * Perform topological sort using Kahn's algorithm
130
+ * Stage 3: perform topological ordering on the filtered graph.
135
131
  */
136
132
  topologicalSort(graph) {
137
- const deploymentOrder = [];
138
- const unresolved = [];
139
- // Calculate in-degree for each node
140
- const inDegree = new Map();
141
- for (const nodeId of graph.keys()) {
142
- inDegree.set(nodeId, 0);
133
+ const traversalState = this.createTopologicalTraversalState(graph);
134
+ this.processTopologicalQueue(graph, traversalState);
135
+ return {
136
+ deploymentOrder: traversalState.deploymentOrder,
137
+ unresolved: this.collectUnresolvedNodes(graph, traversalState.inDegree),
138
+ };
139
+ }
140
+ /**
141
+ * Stage 4: project the deployment order into resolved entries.
142
+ */
143
+ buildResolvedMap(deploymentOrder, graph) {
144
+ const resolved = new Map();
145
+ for (let i = 0; i < deploymentOrder.length; i++) {
146
+ const nodeId = deploymentOrder[i];
147
+ const deps = Array.from(graph.get(nodeId) ?? []);
148
+ resolved.set(nodeId, {
149
+ nodeId,
150
+ dependencies: deps,
151
+ status: 'resolved',
152
+ order: i,
153
+ });
143
154
  }
144
- for (const deps of graph.values()) {
145
- for (const dep of deps) {
146
- if (!inDegree.has(dep)) {
147
- // Dependency not in graph - external/missing
148
- continue;
149
- }
150
- inDegree.set(dep, (inDegree.get(dep) ?? 0) + 1);
151
- }
155
+ return resolved;
156
+ }
157
+ /**
158
+ * Create the mutable state used by Kahn's topological traversal.
159
+ */
160
+ createTopologicalTraversalState(graph) {
161
+ const inDegree = this.calculateInDegree(graph);
162
+ return {
163
+ deploymentOrder: [],
164
+ inDegree,
165
+ queue: this.collectZeroDegreeNodes(inDegree),
166
+ };
167
+ }
168
+ /**
169
+ * Drain the topological queue and update in-degree state.
170
+ */
171
+ processTopologicalQueue(graph, state) {
172
+ while (state.queue.length > 0) {
173
+ const nodeId = state.queue.shift();
174
+ state.deploymentOrder.push(nodeId);
175
+ this.releaseResolvedDependencies(nodeId, graph, state);
152
176
  }
153
- // Start with nodes that have no dependencies (in-degree = 0)
154
- const queue = [];
155
- for (const [nodeId, degree] of inDegree.entries()) {
156
- if (degree === 0) {
157
- queue.push(nodeId);
177
+ }
178
+ /**
179
+ * Lower in-degree counts after resolving one node and enqueue newly unblocked nodes.
180
+ */
181
+ releaseResolvedDependencies(nodeId, graph, state) {
182
+ const deps = graph.get(nodeId) ?? new Set();
183
+ for (const dep of deps) {
184
+ if (!state.inDegree.has(dep)) {
185
+ continue;
158
186
  }
159
- }
160
- // Process nodes in topological order
161
- while (queue.length > 0) {
162
- const nodeId = queue.shift();
163
- deploymentOrder.push(nodeId);
164
- const deps = graph.get(nodeId) ?? new Set();
165
- for (const dep of deps) {
166
- if (!inDegree.has(dep)) {
167
- continue; // External dependency
168
- }
169
- const newDegree = (inDegree.get(dep) ?? 0) - 1;
170
- inDegree.set(dep, newDegree);
171
- if (newDegree === 0) {
172
- queue.push(dep);
173
- }
187
+ const newDegree = (state.inDegree.get(dep) ?? 0) - 1;
188
+ state.inDegree.set(dep, newDegree);
189
+ if (newDegree === 0) {
190
+ state.queue.push(dep);
174
191
  }
175
192
  }
176
- // Check for unresolved dependencies (cycles or missing)
193
+ }
194
+ /**
195
+ * Collect nodes that remain blocked after traversal.
196
+ */
197
+ collectUnresolvedNodes(graph, inDegree) {
198
+ const unresolved = [];
177
199
  for (const [nodeId, degree] of inDegree.entries()) {
178
- if (degree > 0) {
179
- // Node not processed - part of cycle or has missing deps
180
- const missingDeps = this.findMissingDependencies(nodeId, graph);
181
- unresolved.push({ nodeId, missingDependencies: missingDeps });
200
+ if (degree <= 0) {
201
+ continue;
182
202
  }
203
+ unresolved.push({
204
+ nodeId,
205
+ missingDependencies: this.findMissingDependencies(nodeId, graph),
206
+ });
183
207
  }
184
- return { deploymentOrder, unresolved };
208
+ return unresolved;
185
209
  }
186
210
  /**
187
211
  * Find missing dependencies for a node
@@ -196,30 +220,29 @@ export class DependencyResolver {
196
220
  }
197
221
  return missing;
198
222
  }
199
- /**
200
- * Build resolved dependencies map with deployment order
201
- */
202
- buildResolvedMap(deploymentOrder, graph) {
203
- const resolved = new Map();
204
- for (let i = 0; i < deploymentOrder.length; i++) {
205
- const nodeId = deploymentOrder[i];
206
- const deps = Array.from(graph.get(nodeId) ?? []);
207
- resolved.set(nodeId, {
208
- nodeId,
209
- dependencies: deps,
210
- status: 'resolved',
211
- order: i,
212
- });
213
- }
214
- return resolved;
215
- }
216
223
  /**
217
224
  * @ac US-033-AC-3: Handle optional dependencies
218
225
  * Note: Current MetadataComponent doesn't track dependency types
219
226
  */
220
227
  findOptionalDependencies() {
221
- // TODO: When MetadataComponent includes dependency types, implement this properly
222
- return [];
228
+ if (this.options.includeOptional) {
229
+ return [];
230
+ }
231
+ const optional = [];
232
+ for (const [nodeId, deps] of this.graph.entries()) {
233
+ for (const dep of deps) {
234
+ if (!this.isOptionalDependency(nodeId, dep)) {
235
+ continue;
236
+ }
237
+ if (this.options.skipManaged && this.isManagedPackage(dep)) {
238
+ continue;
239
+ }
240
+ if (!optional.includes(dep)) {
241
+ optional.push(dep);
242
+ }
243
+ }
244
+ }
245
+ return optional;
223
246
  }
224
247
  /**
225
248
  * @ac US-033-AC-4: Skip managed package dependencies
@@ -245,19 +268,14 @@ export class DependencyResolver {
245
268
  * Note: Current MetadataComponent uses Set<string> for dependencies
246
269
  * For now, we'll return false as type info is not available
247
270
  */
248
- isOptionalDependency() {
249
- // TODO: When MetadataComponent includes dependency types, implement this properly
250
- return false;
271
+ isOptionalDependency(nodeId, dependencyId) {
272
+ const component = this.components.get(nodeId);
273
+ return isSoftDependencyKind(getComponentDependencyKind(component, dependencyId));
251
274
  }
252
275
  /**
253
276
  * @ac US-033-AC-6: Generate dependency report
254
277
  */
255
278
  generateReport(resolved, unresolved, optional, managed) {
256
- // Calculate deployment levels
257
- let maxOrder = 0;
258
- for (const dep of resolved.values()) {
259
- maxOrder = Math.max(maxOrder, dep.order);
260
- }
261
279
  return {
262
280
  totalComponents: this.components.size,
263
281
  resolvedCount: resolved.size,
@@ -265,22 +283,73 @@ export class DependencyResolver {
265
283
  optionalCount: optional.length,
266
284
  managedCount: managed.length,
267
285
  circularCount: this.options.circularDependencies.length,
268
- deploymentLevels: maxOrder + 1,
286
+ deploymentLevels: this.calculateDeploymentLevels(resolved),
269
287
  };
270
288
  }
289
+ calculateDeploymentLevels(resolved) {
290
+ let maxOrder = 0;
291
+ for (const dep of resolved.values()) {
292
+ maxOrder = Math.max(maxOrder, dep.order);
293
+ }
294
+ return maxOrder + 1;
295
+ }
296
+ shouldIncludeNode(nodeId) {
297
+ return !(this.options.skipManaged && this.isManagedPackage(nodeId));
298
+ }
299
+ collectIncludedDependencies(nodeId, dependencies) {
300
+ const filteredDependencies = new Set();
301
+ for (const dependencyId of dependencies) {
302
+ const decision = this.classifyDependency(nodeId, dependencyId);
303
+ if (decision === 'include') {
304
+ filteredDependencies.add(dependencyId);
305
+ }
306
+ }
307
+ return filteredDependencies;
308
+ }
309
+ classifyDependency(nodeId, dependencyId) {
310
+ if (this.options.skipManaged && this.isManagedPackage(dependencyId)) {
311
+ return 'exclude-managed';
312
+ }
313
+ if (!shouldIncludeDependencyInResolution(getComponentDependencyKind(this.components.get(nodeId), dependencyId), this.options.includeOptional)) {
314
+ return 'exclude-optional';
315
+ }
316
+ return 'include';
317
+ }
318
+ calculateInDegree(graph) {
319
+ const inDegree = new Map();
320
+ for (const nodeId of graph.keys()) {
321
+ inDegree.set(nodeId, 0);
322
+ }
323
+ for (const dependencies of graph.values()) {
324
+ for (const dependencyId of dependencies) {
325
+ if (!inDegree.has(dependencyId)) {
326
+ continue;
327
+ }
328
+ inDegree.set(dependencyId, (inDegree.get(dependencyId) ?? 0) + 1);
329
+ }
330
+ }
331
+ return inDegree;
332
+ }
333
+ collectZeroDegreeNodes(inDegree) {
334
+ const queue = [];
335
+ for (const [nodeId, degree] of inDegree.entries()) {
336
+ if (degree === 0) {
337
+ queue.push(nodeId);
338
+ }
339
+ }
340
+ return queue;
341
+ }
271
342
  /**
272
343
  * Get resolution status for a specific component
273
344
  */
274
345
  getResolution(nodeId) {
275
- const result = this.resolve();
276
- return result.resolved.get(nodeId);
346
+ return this.resolve().resolved.get(nodeId);
277
347
  }
278
348
  /**
279
349
  * Check if a component can be resolved
280
350
  */
281
351
  canResolve(nodeId) {
282
- const result = this.resolve();
283
- return result.resolved.has(nodeId);
352
+ return this.resolve().resolved.has(nodeId);
284
353
  }
285
354
  /**
286
355
  * Get deployment order for specific components
@@ -1 +1 @@
1
- {"version":3,"file":"dependency-resolver.js","sourceRoot":"","sources":["../../src/dependencies/dependency-resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dependency-resolver.js","sourceRoot":"","sources":["../../src/dependencies/dependency-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { NodeId } from '../types/dependency.js';
2
+ import type { MetadataComponent, MetadataDependencyKind, MetadataDependencyReference } from '../types/metadata.js';
3
+ export declare const DEFAULT_GRAPH_DEPENDENCY_KIND: MetadataDependencyKind;
4
+ export type NormalizedDependencyReference = {
5
+ nodeId: NodeId;
6
+ kind: MetadataDependencyKind;
7
+ source?: MetadataDependencyReference['source'];
8
+ reason?: string;
9
+ confidence?: number;
10
+ };
11
+ export declare function getDependencySourceForKind(kind: MetadataDependencyKind): MetadataDependencyReference['source'];
12
+ export declare function isSoftDependencyKind(kind: MetadataDependencyKind): boolean;
13
+ export declare function isInferredDependencyKind(kind: MetadataDependencyKind): boolean;
14
+ export declare function shouldIncludeDependencyInResolution(kind: MetadataDependencyKind, includeOptional: boolean): boolean;
15
+ export declare function shouldTraverseDependencyKind(kind: MetadataDependencyKind, options?: {
16
+ includeSoft?: boolean;
17
+ includeInferred?: boolean;
18
+ }): boolean;
19
+ export declare function getComponentDependencyKind(component: MetadataComponent | undefined, dependencyId: NodeId, defaultKind?: MetadataDependencyKind): MetadataDependencyKind;
20
+ export declare function expandComponentDependencyReferences(component: MetadataComponent, defaultKind?: MetadataDependencyKind): NormalizedDependencyReference[];
@@ -0,0 +1,55 @@
1
+ export const DEFAULT_GRAPH_DEPENDENCY_KIND = 'hard';
2
+ export function getDependencySourceForKind(kind) {
3
+ return kind === 'inferred' ? 'ai' : 'parser';
4
+ }
5
+ export function isSoftDependencyKind(kind) {
6
+ return kind === 'soft';
7
+ }
8
+ export function isInferredDependencyKind(kind) {
9
+ return kind === 'inferred';
10
+ }
11
+ export function shouldIncludeDependencyInResolution(kind, includeOptional) {
12
+ return includeOptional || !isSoftDependencyKind(kind);
13
+ }
14
+ export function shouldTraverseDependencyKind(kind, options = {}) {
15
+ const includeSoft = options.includeSoft ?? true;
16
+ const includeInferred = options.includeInferred ?? true;
17
+ if (isSoftDependencyKind(kind) && !includeSoft) {
18
+ return false;
19
+ }
20
+ if (isInferredDependencyKind(kind) && !includeInferred) {
21
+ return false;
22
+ }
23
+ return true;
24
+ }
25
+ export function getComponentDependencyKind(component, dependencyId, defaultKind = DEFAULT_GRAPH_DEPENDENCY_KIND) {
26
+ const explicitDetail = component?.dependencyDetails?.find((dependency) => dependency.nodeId === dependencyId);
27
+ if (explicitDetail) {
28
+ return explicitDetail.kind;
29
+ }
30
+ if (component?.optionalDependencies?.has(dependencyId)) {
31
+ return 'soft';
32
+ }
33
+ return defaultKind;
34
+ }
35
+ export function expandComponentDependencyReferences(component, defaultKind = DEFAULT_GRAPH_DEPENDENCY_KIND) {
36
+ if (component.dependencyDetails && component.dependencyDetails.length > 0) {
37
+ return component.dependencyDetails.map((dependency) => ({
38
+ nodeId: dependency.nodeId,
39
+ kind: dependency.kind,
40
+ source: dependency.source,
41
+ reason: dependency.reason,
42
+ confidence: dependency.confidence,
43
+ }));
44
+ }
45
+ return [...component.dependencies].map((dependencyId) => {
46
+ const kind = getComponentDependencyKind(component, dependencyId, defaultKind);
47
+ return {
48
+ nodeId: dependencyId,
49
+ kind,
50
+ source: getDependencySourceForKind(kind),
51
+ reason: isSoftDependencyKind(kind) ? 'Declared optional dependency' : 'Declared dependency',
52
+ };
53
+ });
54
+ }
55
+ //# sourceMappingURL=dependency-semantics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-semantics.js","sourceRoot":"","sources":["../../src/dependencies/dependency-semantics.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,6BAA6B,GAA2B,MAAM,CAAC;AAU5E,MAAM,UAAU,0BAA0B,CAAC,IAA4B;IACrE,OAAO,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAA4B;IAC/D,OAAO,IAAI,KAAK,MAAM,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,IAA4B;IACnE,OAAO,IAAI,KAAK,UAAU,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,IAA4B,EAAE,eAAwB;IACxG,OAAO,eAAe,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,IAA4B,EAC5B,UAAgE,EAAE;IAElE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC;IAChD,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC;IAExD,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC/C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QACvD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,SAAwC,EACxC,YAAoB,EACpB,cAAsC,6BAA6B;IAEnE,MAAM,cAAc,GAAG,SAAS,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC;IAC9G,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,cAAc,CAAC,IAAI,CAAC;IAC7B,CAAC;IAED,IAAI,SAAS,EAAE,oBAAoB,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QACvD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,mCAAmC,CACjD,SAA4B,EAC5B,cAAsC,6BAA6B;IAEnE,IAAI,SAAS,CAAC,iBAAiB,IAAI,SAAS,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1E,OAAO,SAAS,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YACtD,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,UAAU,EAAE,UAAU,CAAC,UAAU;SAClC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,OAAO,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE;QACtD,MAAM,IAAI,GAAG,0BAA0B,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;QAE9E,OAAO;YACL,MAAM,EAAE,YAAY;YACpB,IAAI;YACJ,MAAM,EAAE,0BAA0B,CAAC,IAAI,CAAC;YACxC,MAAM,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,qBAAqB;SAC5F,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -11,7 +11,7 @@
11
11
  *
12
12
  * @issue #35
13
13
  */
14
- import type { NodeId, DependencyGraph } from '../types/dependency.js';
14
+ import type { DependencyEdge, NodeId, DependencyGraph } from '../types/dependency.js';
15
15
  import type { MetadataType } from '../types/metadata.js';
16
16
  /**
17
17
  * Visualization format
@@ -33,6 +33,8 @@ export type VisualizationOptions = {
33
33
  showLabels?: boolean;
34
34
  /** Color scheme */
35
35
  colorScheme?: 'default' | 'type' | 'depth';
36
+ /** Edge metadata for styling/labels */
37
+ edgeMetadata?: DependencyEdge[];
36
38
  };
37
39
  /**
38
40
  * Graph Visualizer
@@ -52,6 +54,7 @@ export type VisualizationOptions = {
52
54
  */
53
55
  export declare class GraphVisualizer {
54
56
  private graph;
57
+ private edgeMetadata;
55
58
  private options;
56
59
  constructor(graph: DependencyGraph, options?: VisualizationOptions);
57
60
  /**
@@ -76,6 +79,8 @@ export declare class GraphVisualizer {
76
79
  * Check if node matches any of the given types
77
80
  */
78
81
  private matchesType;
82
+ private getMermaidEdgeStyle;
83
+ private getDotEdgeAttributes;
79
84
  /**
80
85
  * Get Mermaid node styling
81
86
  */