@trentapps/manager-protocol 1.1.3 → 1.2.1

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 (142) hide show
  1. package/README.md +164 -17
  2. package/dist/analyzers/CSSAnalyzer.d.ts +180 -8
  3. package/dist/analyzers/CSSAnalyzer.d.ts.map +1 -1
  4. package/dist/analyzers/CSSAnalyzer.js +561 -105
  5. package/dist/analyzers/CSSAnalyzer.js.map +1 -1
  6. package/dist/config/dashboard.d.ts +55 -0
  7. package/dist/config/dashboard.d.ts.map +1 -0
  8. package/dist/config/dashboard.js +103 -0
  9. package/dist/config/dashboard.js.map +1 -0
  10. package/dist/config/index.d.ts +7 -0
  11. package/dist/config/index.d.ts.map +1 -0
  12. package/dist/config/index.js +7 -0
  13. package/dist/config/index.js.map +1 -0
  14. package/dist/dashboard/httpDashboard.d.ts +100 -0
  15. package/dist/dashboard/httpDashboard.d.ts.map +1 -0
  16. package/dist/dashboard/httpDashboard.js +1276 -0
  17. package/dist/dashboard/httpDashboard.js.map +1 -0
  18. package/dist/dashboard/index.d.ts +6 -0
  19. package/dist/dashboard/index.d.ts.map +1 -0
  20. package/dist/dashboard/index.js +7 -0
  21. package/dist/dashboard/index.js.map +1 -0
  22. package/dist/engine/AuditLogger.d.ts +370 -2
  23. package/dist/engine/AuditLogger.d.ts.map +1 -1
  24. package/dist/engine/AuditLogger.js +1064 -24
  25. package/dist/engine/AuditLogger.js.map +1 -1
  26. package/dist/engine/GitHubClient.d.ts +183 -0
  27. package/dist/engine/GitHubClient.d.ts.map +1 -0
  28. package/dist/engine/GitHubClient.js +411 -0
  29. package/dist/engine/GitHubClient.js.map +1 -0
  30. package/dist/engine/RateLimiter.d.ts +5 -3
  31. package/dist/engine/RateLimiter.d.ts.map +1 -1
  32. package/dist/engine/RateLimiter.js +49 -72
  33. package/dist/engine/RateLimiter.js.map +1 -1
  34. package/dist/engine/RuleDependencyAnalyzer.d.ts +73 -0
  35. package/dist/engine/RuleDependencyAnalyzer.d.ts.map +1 -0
  36. package/dist/engine/RuleDependencyAnalyzer.js +475 -0
  37. package/dist/engine/RuleDependencyAnalyzer.js.map +1 -0
  38. package/dist/engine/RulesEngine.d.ts +102 -3
  39. package/dist/engine/RulesEngine.d.ts.map +1 -1
  40. package/dist/engine/RulesEngine.js +326 -21
  41. package/dist/engine/RulesEngine.js.map +1 -1
  42. package/dist/engine/TaskManager.d.ts +10 -14
  43. package/dist/engine/TaskManager.d.ts.map +1 -1
  44. package/dist/engine/TaskManager.js +169 -197
  45. package/dist/engine/TaskManager.js.map +1 -1
  46. package/dist/engine/index.d.ts +3 -0
  47. package/dist/engine/index.d.ts.map +1 -1
  48. package/dist/engine/index.js +5 -0
  49. package/dist/engine/index.js.map +1 -1
  50. package/dist/rules/azure.d.ts.map +1 -1
  51. package/dist/rules/azure.js +12 -14
  52. package/dist/rules/azure.js.map +1 -1
  53. package/dist/rules/compliance.d.ts.map +1 -1
  54. package/dist/rules/compliance.js +23 -41
  55. package/dist/rules/compliance.js.map +1 -1
  56. package/dist/rules/condition-optimizer.d.ts +151 -0
  57. package/dist/rules/condition-optimizer.d.ts.map +1 -0
  58. package/dist/rules/condition-optimizer.js +479 -0
  59. package/dist/rules/condition-optimizer.js.map +1 -0
  60. package/dist/rules/css.d.ts.map +1 -1
  61. package/dist/rules/css.js +538 -0
  62. package/dist/rules/css.js.map +1 -1
  63. package/dist/rules/field-standards.d.ts +1172 -0
  64. package/dist/rules/field-standards.d.ts.map +1 -0
  65. package/dist/rules/field-standards.js +908 -0
  66. package/dist/rules/field-standards.js.map +1 -0
  67. package/dist/rules/flask.d.ts.map +1 -1
  68. package/dist/rules/flask.js +18 -31
  69. package/dist/rules/flask.js.map +1 -1
  70. package/dist/rules/index.d.ts +220 -0
  71. package/dist/rules/index.d.ts.map +1 -1
  72. package/dist/rules/index.js +155 -0
  73. package/dist/rules/index.js.map +1 -1
  74. package/dist/rules/ml-ai.d.ts.map +1 -1
  75. package/dist/rules/ml-ai.js +11 -13
  76. package/dist/rules/ml-ai.js.map +1 -1
  77. package/dist/rules/patterns.d.ts +568 -0
  78. package/dist/rules/patterns.d.ts.map +1 -0
  79. package/dist/rules/patterns.js +1359 -0
  80. package/dist/rules/patterns.js.map +1 -0
  81. package/dist/rules/security.d.ts.map +1 -1
  82. package/dist/rules/security.js +580 -19
  83. package/dist/rules/security.js.map +1 -1
  84. package/dist/rules/shared-patterns.d.ts +268 -0
  85. package/dist/rules/shared-patterns.d.ts.map +1 -0
  86. package/dist/rules/shared-patterns.js +556 -0
  87. package/dist/rules/shared-patterns.js.map +1 -0
  88. package/dist/rules/storage.d.ts +8 -2
  89. package/dist/rules/storage.d.ts.map +1 -1
  90. package/dist/rules/storage.js +541 -3
  91. package/dist/rules/storage.js.map +1 -1
  92. package/dist/rules/stripe.d.ts.map +1 -1
  93. package/dist/rules/stripe.js +19 -26
  94. package/dist/rules/stripe.js.map +1 -1
  95. package/dist/rules/websocket.d.ts.map +1 -1
  96. package/dist/rules/websocket.js +32 -40
  97. package/dist/rules/websocket.js.map +1 -1
  98. package/dist/supervisor/AgentSupervisor.d.ts +52 -0
  99. package/dist/supervisor/AgentSupervisor.d.ts.map +1 -1
  100. package/dist/supervisor/AgentSupervisor.js +120 -1
  101. package/dist/supervisor/AgentSupervisor.js.map +1 -1
  102. package/dist/supervisor/ManagedServerRegistry.d.ts +139 -2
  103. package/dist/supervisor/ManagedServerRegistry.d.ts.map +1 -1
  104. package/dist/supervisor/ManagedServerRegistry.js +590 -6
  105. package/dist/supervisor/ManagedServerRegistry.js.map +1 -1
  106. package/dist/supervisor/ProjectTracker.d.ts +2 -1
  107. package/dist/supervisor/ProjectTracker.d.ts.map +1 -1
  108. package/dist/supervisor/ProjectTracker.js +5 -9
  109. package/dist/supervisor/ProjectTracker.js.map +1 -1
  110. package/dist/testing/index.d.ts +11 -0
  111. package/dist/testing/index.d.ts.map +1 -0
  112. package/dist/testing/index.js +12 -0
  113. package/dist/testing/index.js.map +1 -0
  114. package/dist/testing/rule-tester.d.ts +217 -0
  115. package/dist/testing/rule-tester.d.ts.map +1 -0
  116. package/dist/testing/rule-tester.examples.d.ts +57 -0
  117. package/dist/testing/rule-tester.examples.d.ts.map +1 -0
  118. package/dist/testing/rule-tester.examples.js +375 -0
  119. package/dist/testing/rule-tester.examples.js.map +1 -0
  120. package/dist/testing/rule-tester.js +381 -0
  121. package/dist/testing/rule-tester.js.map +1 -0
  122. package/dist/testing/rule-validator.d.ts +141 -0
  123. package/dist/testing/rule-validator.d.ts.map +1 -0
  124. package/dist/testing/rule-validator.js +640 -0
  125. package/dist/testing/rule-validator.js.map +1 -0
  126. package/dist/types/index.d.ts +265 -4
  127. package/dist/types/index.d.ts.map +1 -1
  128. package/dist/types/index.js +57 -2
  129. package/dist/types/index.js.map +1 -1
  130. package/dist/utils/index.d.ts +2 -0
  131. package/dist/utils/index.d.ts.map +1 -1
  132. package/dist/utils/index.js +2 -0
  133. package/dist/utils/index.js.map +1 -1
  134. package/dist/utils/rate-limiting.d.ts +268 -0
  135. package/dist/utils/rate-limiting.d.ts.map +1 -0
  136. package/dist/utils/rate-limiting.js +403 -0
  137. package/dist/utils/rate-limiting.js.map +1 -0
  138. package/dist/utils/shared.d.ts +306 -0
  139. package/dist/utils/shared.d.ts.map +1 -0
  140. package/dist/utils/shared.js +464 -0
  141. package/dist/utils/shared.js.map +1 -0
  142. package/package.json +3 -2
@@ -1 +1 @@
1
- {"version":3,"file":"RateLimiter.js","sourceRoot":"","sources":["../../src/engine/RateLimiter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RateLimiter.js","sourceRoot":"","sources":["../../src/engine/RateLimiter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Enterprise Agent Supervisor - Rule Dependency Analyzer (Task #37)
3
+ *
4
+ * Analyzes and validates rule interdependencies, detects circular dependencies,
5
+ * and provides topologically sorted execution order.
6
+ */
7
+ import type { BusinessRule, RuleDependencyGraph, DependencyValidationResult } from '../types/index.js';
8
+ export interface DependencyAnalyzerOptions {
9
+ /**
10
+ * Maximum allowed depth for dependency chains before warning
11
+ */
12
+ maxDepthWarning?: number;
13
+ /**
14
+ * Whether to include disabled rules in analysis
15
+ */
16
+ includeDisabled?: boolean;
17
+ }
18
+ export declare class RuleDependencyAnalyzer {
19
+ private options;
20
+ constructor(options?: DependencyAnalyzerOptions);
21
+ /**
22
+ * Build a complete dependency graph from a set of rules
23
+ */
24
+ analyzeDependencies(rules: BusinessRule[]): RuleDependencyGraph;
25
+ /**
26
+ * Find all circular dependencies in the rule set
27
+ */
28
+ findCircularDependencies(rules: BusinessRule[]): string[][];
29
+ /**
30
+ * Get topologically sorted execution order for rules
31
+ * Rules with dependencies come after their dependencies
32
+ */
33
+ getExecutionOrder(rules: BusinessRule[]): string[];
34
+ /**
35
+ * Validate all dependencies in the rule set
36
+ */
37
+ validateDependencies(rules: BusinessRule[]): DependencyValidationResult;
38
+ /**
39
+ * Get rules that depend on a specific rule (direct dependents)
40
+ */
41
+ getDependents(ruleId: string, rules: BusinessRule[]): BusinessRule[];
42
+ /**
43
+ * Get all rules that a specific rule depends on (direct dependencies)
44
+ */
45
+ getDependencies(ruleId: string, rules: BusinessRule[]): BusinessRule[];
46
+ /**
47
+ * Get all transitive dependencies for a rule
48
+ */
49
+ getTransitiveDependencies(ruleId: string, rules: BusinessRule[]): BusinessRule[];
50
+ /**
51
+ * Get all rules that would be affected if a rule is disabled
52
+ */
53
+ getAffectedByDisabling(ruleId: string, rules: BusinessRule[]): BusinessRule[];
54
+ /**
55
+ * Get rules sorted by execution order respecting dependencies
56
+ * This integrates with the RulesEngine for proper evaluation order
57
+ */
58
+ getSortedRulesForExecution(rules: BusinessRule[]): BusinessRule[];
59
+ /**
60
+ * Calculate depth for each node in the dependency graph
61
+ */
62
+ private calculateDepths;
63
+ /**
64
+ * Detect conflicts between currently active rules
65
+ */
66
+ private detectActiveConflicts;
67
+ /**
68
+ * Find dependencies that reference non-existent rules
69
+ */
70
+ private findOrphanedDependencies;
71
+ }
72
+ export declare const ruleDependencyAnalyzer: RuleDependencyAnalyzer;
73
+ //# sourceMappingURL=RuleDependencyAnalyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuleDependencyAnalyzer.d.ts","sourceRoot":"","sources":["../../src/engine/RuleDependencyAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EAEnB,0BAA0B,EAC3B,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,yBAAyB;IACxC;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAOD,qBAAa,sBAAsB;IACjC,OAAO,CAAC,OAAO,CAA4B;gBAE/B,OAAO,GAAE,yBAA8B;IAInD;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,mBAAmB;IAyD/D;;OAEG;IACH,wBAAwB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,EAAE;IA+C3D;;;OAGG;IACH,iBAAiB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE;IAkFlD;;OAEG;IACH,oBAAoB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,0BAA0B;IA0GvE;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE;IAMpE;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE;IAgBtE;;OAEG;IACH,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE;IAiChF;;OAEG;IACH,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE;IA+B7E;;;OAGG;IACH,0BAA0B,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE;IA4BjE;;OAEG;IACH,OAAO,CAAC,eAAe;IA2CvB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA6B7B;;OAEG;IACH,OAAO,CAAC,wBAAwB;CAqBjC;AAGD,eAAO,MAAM,sBAAsB,wBAA+B,CAAC"}
@@ -0,0 +1,475 @@
1
+ /**
2
+ * Enterprise Agent Supervisor - Rule Dependency Analyzer (Task #37)
3
+ *
4
+ * Analyzes and validates rule interdependencies, detects circular dependencies,
5
+ * and provides topologically sorted execution order.
6
+ */
7
+ const DEFAULT_OPTIONS = {
8
+ maxDepthWarning: 5,
9
+ includeDisabled: true
10
+ };
11
+ export class RuleDependencyAnalyzer {
12
+ options;
13
+ constructor(options = {}) {
14
+ this.options = { ...DEFAULT_OPTIONS, ...options };
15
+ }
16
+ /**
17
+ * Build a complete dependency graph from a set of rules
18
+ */
19
+ analyzeDependencies(rules) {
20
+ const ruleMap = new Map();
21
+ const nodes = {};
22
+ // First pass: create rule map and initialize nodes
23
+ for (const rule of rules) {
24
+ ruleMap.set(rule.id, rule);
25
+ nodes[rule.id] = {
26
+ ruleId: rule.id,
27
+ ruleName: rule.name,
28
+ dependencies: rule.dependsOn || [],
29
+ dependents: [],
30
+ conflicts: rule.conflictsWith || [],
31
+ related: rule.relatedRules || [],
32
+ depth: 0
33
+ };
34
+ }
35
+ // Second pass: build reverse dependency map (dependents)
36
+ for (const rule of rules) {
37
+ if (rule.dependsOn) {
38
+ for (const depId of rule.dependsOn) {
39
+ if (nodes[depId]) {
40
+ nodes[depId].dependents.push(rule.id);
41
+ }
42
+ }
43
+ }
44
+ }
45
+ // Calculate depths
46
+ this.calculateDepths(nodes, ruleMap);
47
+ // Find circular dependencies
48
+ const circularPaths = this.findCircularDependencies(rules);
49
+ // Detect conflicts between active rules
50
+ const conflicts = this.detectActiveConflicts(rules);
51
+ // Find orphaned dependencies (dependencies that don't exist)
52
+ const orphanedDependencies = this.findOrphanedDependencies(rules, ruleMap);
53
+ // Get execution order via topological sort
54
+ const executionOrder = circularPaths.length === 0
55
+ ? this.getExecutionOrder(rules)
56
+ : []; // Can't provide execution order with circular deps
57
+ return {
58
+ nodes,
59
+ executionOrder,
60
+ hasCircularDependencies: circularPaths.length > 0,
61
+ circularPaths,
62
+ conflicts,
63
+ orphanedDependencies,
64
+ analyzedAt: new Date().toISOString()
65
+ };
66
+ }
67
+ /**
68
+ * Find all circular dependencies in the rule set
69
+ */
70
+ findCircularDependencies(rules) {
71
+ const ruleMap = new Map();
72
+ for (const rule of rules) {
73
+ ruleMap.set(rule.id, rule);
74
+ }
75
+ const visited = new Set();
76
+ const recursionStack = new Set();
77
+ const circularPaths = [];
78
+ const dfs = (ruleId, path) => {
79
+ if (recursionStack.has(ruleId)) {
80
+ // Found a cycle - extract it from the path
81
+ const cycleStart = path.indexOf(ruleId);
82
+ const cycle = path.slice(cycleStart);
83
+ cycle.push(ruleId); // Complete the cycle
84
+ circularPaths.push(cycle);
85
+ return;
86
+ }
87
+ if (visited.has(ruleId)) {
88
+ return;
89
+ }
90
+ visited.add(ruleId);
91
+ recursionStack.add(ruleId);
92
+ path.push(ruleId);
93
+ const rule = ruleMap.get(ruleId);
94
+ if (rule?.dependsOn) {
95
+ for (const depId of rule.dependsOn) {
96
+ dfs(depId, [...path]);
97
+ }
98
+ }
99
+ recursionStack.delete(ruleId);
100
+ };
101
+ for (const rule of rules) {
102
+ if (!visited.has(rule.id)) {
103
+ dfs(rule.id, []);
104
+ }
105
+ }
106
+ return circularPaths;
107
+ }
108
+ /**
109
+ * Get topologically sorted execution order for rules
110
+ * Rules with dependencies come after their dependencies
111
+ */
112
+ getExecutionOrder(rules) {
113
+ const ruleMap = new Map();
114
+ for (const rule of rules) {
115
+ ruleMap.set(rule.id, rule);
116
+ }
117
+ // Filter to enabled rules only (unless includeDisabled is true)
118
+ const activeRules = this.options.includeDisabled
119
+ ? rules
120
+ : rules.filter(r => r.enabled);
121
+ // Kahn's algorithm for topological sort
122
+ const inDegree = new Map();
123
+ const adjacency = new Map();
124
+ // Initialize
125
+ for (const rule of activeRules) {
126
+ inDegree.set(rule.id, 0);
127
+ adjacency.set(rule.id, []);
128
+ }
129
+ // Build adjacency and in-degree
130
+ for (const rule of activeRules) {
131
+ if (rule.dependsOn) {
132
+ for (const depId of rule.dependsOn) {
133
+ // Only count dependencies that exist in the rule set
134
+ if (ruleMap.has(depId)) {
135
+ const adj = adjacency.get(depId) || [];
136
+ adj.push(rule.id);
137
+ adjacency.set(depId, adj);
138
+ inDegree.set(rule.id, (inDegree.get(rule.id) || 0) + 1);
139
+ }
140
+ }
141
+ }
142
+ }
143
+ // Queue rules with no dependencies (in-degree 0)
144
+ const queue = [];
145
+ for (const [ruleId, degree] of inDegree) {
146
+ if (degree === 0) {
147
+ queue.push(ruleId);
148
+ }
149
+ }
150
+ // Sort by priority within the same dependency level
151
+ queue.sort((a, b) => {
152
+ const ruleA = ruleMap.get(a);
153
+ const ruleB = ruleMap.get(b);
154
+ return (ruleB?.priority || 500) - (ruleA?.priority || 500);
155
+ });
156
+ const result = [];
157
+ while (queue.length > 0) {
158
+ const ruleId = queue.shift();
159
+ result.push(ruleId);
160
+ const dependents = adjacency.get(ruleId) || [];
161
+ const nextLevel = [];
162
+ for (const depId of dependents) {
163
+ const newDegree = (inDegree.get(depId) || 0) - 1;
164
+ inDegree.set(depId, newDegree);
165
+ if (newDegree === 0) {
166
+ nextLevel.push(depId);
167
+ }
168
+ }
169
+ // Sort next level by priority
170
+ nextLevel.sort((a, b) => {
171
+ const ruleA = ruleMap.get(a);
172
+ const ruleB = ruleMap.get(b);
173
+ return (ruleB?.priority || 500) - (ruleA?.priority || 500);
174
+ });
175
+ queue.push(...nextLevel);
176
+ }
177
+ return result;
178
+ }
179
+ /**
180
+ * Validate all dependencies in the rule set
181
+ */
182
+ validateDependencies(rules) {
183
+ const ruleMap = new Map();
184
+ for (const rule of rules) {
185
+ ruleMap.set(rule.id, rule);
186
+ }
187
+ const errors = [];
188
+ const warnings = [];
189
+ // Check for missing dependencies
190
+ for (const rule of rules) {
191
+ if (rule.dependsOn) {
192
+ for (const depId of rule.dependsOn) {
193
+ // Self-dependency check
194
+ if (depId === rule.id) {
195
+ errors.push({
196
+ type: 'self_dependency',
197
+ ruleId: rule.id,
198
+ message: `Rule '${rule.name}' depends on itself`,
199
+ details: { dependencyId: depId }
200
+ });
201
+ }
202
+ // Missing dependency check
203
+ else if (!ruleMap.has(depId)) {
204
+ errors.push({
205
+ type: 'missing_dependency',
206
+ ruleId: rule.id,
207
+ message: `Rule '${rule.name}' depends on non-existent rule '${depId}'`,
208
+ details: { missingDependency: depId }
209
+ });
210
+ }
211
+ // Disabled dependency warning
212
+ else {
213
+ const depRule = ruleMap.get(depId);
214
+ if (!depRule.enabled && rule.enabled) {
215
+ warnings.push({
216
+ type: 'disabled_dependency',
217
+ ruleId: rule.id,
218
+ message: `Enabled rule '${rule.name}' depends on disabled rule '${depRule.name}'`,
219
+ details: { disabledDependency: depId }
220
+ });
221
+ }
222
+ }
223
+ }
224
+ }
225
+ // Check for conflicts with active rules
226
+ if (rule.conflictsWith && rule.enabled) {
227
+ for (const conflictId of rule.conflictsWith) {
228
+ const conflictRule = ruleMap.get(conflictId);
229
+ if (conflictRule?.enabled) {
230
+ errors.push({
231
+ type: 'conflict',
232
+ ruleId: rule.id,
233
+ message: `Rule '${rule.name}' conflicts with active rule '${conflictRule.name}'`,
234
+ details: { conflictingRule: conflictId }
235
+ });
236
+ }
237
+ }
238
+ }
239
+ }
240
+ // Check for circular dependencies
241
+ const circularPaths = this.findCircularDependencies(rules);
242
+ for (const path of circularPaths) {
243
+ errors.push({
244
+ type: 'circular_dependency',
245
+ ruleId: path[0],
246
+ message: `Circular dependency detected: ${path.join(' -> ')}`,
247
+ details: { path }
248
+ });
249
+ }
250
+ // Check for deep dependency chains
251
+ const graph = this.analyzeDependencies(rules);
252
+ for (const [ruleId, node] of Object.entries(graph.nodes)) {
253
+ if (node.depth > (this.options.maxDepthWarning || 5)) {
254
+ const rule = ruleMap.get(ruleId);
255
+ warnings.push({
256
+ type: 'deep_dependency_chain',
257
+ ruleId,
258
+ message: `Rule '${rule?.name}' has a deep dependency chain (depth: ${node.depth})`,
259
+ details: { depth: node.depth }
260
+ });
261
+ }
262
+ }
263
+ // Check for unused dependencies (rules that nothing depends on)
264
+ // This is informational, not necessarily a problem
265
+ const dependedOn = new Set();
266
+ for (const rule of rules) {
267
+ if (rule.dependsOn) {
268
+ for (const depId of rule.dependsOn) {
269
+ dependedOn.add(depId);
270
+ }
271
+ }
272
+ }
273
+ return {
274
+ valid: errors.length === 0,
275
+ errors,
276
+ warnings,
277
+ validatedAt: new Date().toISOString()
278
+ };
279
+ }
280
+ /**
281
+ * Get rules that depend on a specific rule (direct dependents)
282
+ */
283
+ getDependents(ruleId, rules) {
284
+ return rules.filter(rule => rule.dependsOn?.includes(ruleId));
285
+ }
286
+ /**
287
+ * Get all rules that a specific rule depends on (direct dependencies)
288
+ */
289
+ getDependencies(ruleId, rules) {
290
+ const rule = rules.find(r => r.id === ruleId);
291
+ if (!rule?.dependsOn) {
292
+ return [];
293
+ }
294
+ const ruleMap = new Map();
295
+ for (const r of rules) {
296
+ ruleMap.set(r.id, r);
297
+ }
298
+ return rule.dependsOn
299
+ .map(depId => ruleMap.get(depId))
300
+ .filter((r) => r !== undefined);
301
+ }
302
+ /**
303
+ * Get all transitive dependencies for a rule
304
+ */
305
+ getTransitiveDependencies(ruleId, rules) {
306
+ const ruleMap = new Map();
307
+ for (const rule of rules) {
308
+ ruleMap.set(rule.id, rule);
309
+ }
310
+ const result = new Set();
311
+ const queue = [ruleId];
312
+ const visited = new Set();
313
+ while (queue.length > 0) {
314
+ const currentId = queue.shift();
315
+ if (visited.has(currentId)) {
316
+ continue;
317
+ }
318
+ visited.add(currentId);
319
+ const currentRule = ruleMap.get(currentId);
320
+ if (currentRule?.dependsOn) {
321
+ for (const depId of currentRule.dependsOn) {
322
+ if (depId !== ruleId) { // Don't include the original rule
323
+ result.add(depId);
324
+ queue.push(depId);
325
+ }
326
+ }
327
+ }
328
+ }
329
+ return Array.from(result)
330
+ .map(id => ruleMap.get(id))
331
+ .filter((r) => r !== undefined);
332
+ }
333
+ /**
334
+ * Get all rules that would be affected if a rule is disabled
335
+ */
336
+ getAffectedByDisabling(ruleId, rules) {
337
+ const ruleMap = new Map();
338
+ for (const rule of rules) {
339
+ ruleMap.set(rule.id, rule);
340
+ }
341
+ const result = new Set();
342
+ const queue = [ruleId];
343
+ const visited = new Set();
344
+ while (queue.length > 0) {
345
+ const currentId = queue.shift();
346
+ if (visited.has(currentId)) {
347
+ continue;
348
+ }
349
+ visited.add(currentId);
350
+ // Find rules that depend on this rule
351
+ for (const rule of rules) {
352
+ if (rule.dependsOn?.includes(currentId) && rule.id !== ruleId) {
353
+ result.add(rule.id);
354
+ queue.push(rule.id);
355
+ }
356
+ }
357
+ }
358
+ return Array.from(result)
359
+ .map(id => ruleMap.get(id))
360
+ .filter((r) => r !== undefined);
361
+ }
362
+ /**
363
+ * Get rules sorted by execution order respecting dependencies
364
+ * This integrates with the RulesEngine for proper evaluation order
365
+ */
366
+ getSortedRulesForExecution(rules) {
367
+ // First validate - if there are circular deps, fall back to priority sort
368
+ const validation = this.validateDependencies(rules);
369
+ const hasCircular = validation.errors.some(e => e.type === 'circular_dependency');
370
+ if (hasCircular) {
371
+ console.warn('Circular dependencies detected, falling back to priority-based ordering');
372
+ return [...rules].sort((a, b) => (b.priority || 500) - (a.priority || 500));
373
+ }
374
+ const executionOrder = this.getExecutionOrder(rules);
375
+ const ruleMap = new Map();
376
+ for (const rule of rules) {
377
+ ruleMap.set(rule.id, rule);
378
+ }
379
+ // Get rules in execution order
380
+ const orderedRules = executionOrder
381
+ .map(id => ruleMap.get(id))
382
+ .filter((r) => r !== undefined);
383
+ // Add any rules not in execution order (shouldn't happen, but safety)
384
+ const orderedIds = new Set(executionOrder);
385
+ const remainingRules = rules.filter(r => !orderedIds.has(r.id));
386
+ return [...orderedRules, ...remainingRules];
387
+ }
388
+ /**
389
+ * Calculate depth for each node in the dependency graph
390
+ */
391
+ calculateDepths(nodes, ruleMap) {
392
+ const visited = new Set();
393
+ const calculated = new Set();
394
+ const calculateDepth = (ruleId) => {
395
+ if (calculated.has(ruleId)) {
396
+ return nodes[ruleId]?.depth || 0;
397
+ }
398
+ if (visited.has(ruleId)) {
399
+ // Circular dependency - return 0 to avoid infinite recursion
400
+ return 0;
401
+ }
402
+ visited.add(ruleId);
403
+ const node = nodes[ruleId];
404
+ if (!node || node.dependencies.length === 0) {
405
+ if (node) {
406
+ node.depth = 0;
407
+ calculated.add(ruleId);
408
+ }
409
+ return 0;
410
+ }
411
+ let maxDepth = 0;
412
+ for (const depId of node.dependencies) {
413
+ if (ruleMap.has(depId)) {
414
+ const depDepth = calculateDepth(depId);
415
+ maxDepth = Math.max(maxDepth, depDepth + 1);
416
+ }
417
+ }
418
+ node.depth = maxDepth;
419
+ calculated.add(ruleId);
420
+ return maxDepth;
421
+ };
422
+ for (const ruleId of Object.keys(nodes)) {
423
+ calculateDepth(ruleId);
424
+ }
425
+ }
426
+ /**
427
+ * Detect conflicts between currently active rules
428
+ */
429
+ detectActiveConflicts(rules) {
430
+ const conflicts = [];
431
+ const activeRules = rules.filter(r => r.enabled);
432
+ for (const rule of activeRules) {
433
+ if (rule.conflictsWith) {
434
+ for (const conflictId of rule.conflictsWith) {
435
+ const conflictRule = activeRules.find(r => r.id === conflictId);
436
+ if (conflictRule) {
437
+ // Avoid duplicate conflict entries (A conflicts B = B conflicts A)
438
+ const exists = conflicts.some(c => (c.ruleA === rule.id && c.ruleB === conflictId) ||
439
+ (c.ruleA === conflictId && c.ruleB === rule.id));
440
+ if (!exists) {
441
+ conflicts.push({
442
+ ruleA: rule.id,
443
+ ruleB: conflictId,
444
+ reason: `Rule '${rule.name}' explicitly conflicts with '${conflictRule.name}'`
445
+ });
446
+ }
447
+ }
448
+ }
449
+ }
450
+ }
451
+ return conflicts;
452
+ }
453
+ /**
454
+ * Find dependencies that reference non-existent rules
455
+ */
456
+ findOrphanedDependencies(rules, ruleMap) {
457
+ const orphaned = [];
458
+ for (const rule of rules) {
459
+ if (rule.dependsOn) {
460
+ for (const depId of rule.dependsOn) {
461
+ if (!ruleMap.has(depId)) {
462
+ orphaned.push({
463
+ ruleId: rule.id,
464
+ missingDependency: depId
465
+ });
466
+ }
467
+ }
468
+ }
469
+ }
470
+ return orphaned;
471
+ }
472
+ }
473
+ // Export singleton instance with default options
474
+ export const ruleDependencyAnalyzer = new RuleDependencyAnalyzer();
475
+ //# sourceMappingURL=RuleDependencyAnalyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuleDependencyAnalyzer.js","sourceRoot":"","sources":["../../src/engine/RuleDependencyAnalyzer.ts"],"names":[],"mappings":"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"}