@trentapps/manager-protocol 1.1.3 → 1.2.0

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 +28 -0
  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 +2 -1
@@ -3,13 +3,23 @@
3
3
  *
4
4
  * The heart of the governance system that evaluates actions against business rules.
5
5
  */
6
- import type { AgentAction, BusinessRule, BusinessContext, RuleCondition, EvaluationResult, BusinessRulesResult } from '../types/index.js';
6
+ import type { AgentAction, BusinessRule, BusinessContext, RuleCondition, EvaluationResult, BusinessRulesResult, DependencyValidationResult } from '../types/index.js';
7
+ import { RuleDependencyAnalyzer } from './RuleDependencyAnalyzer.js';
7
8
  export declare class RulesEngine {
8
9
  private rules;
9
10
  private customEvaluators;
10
- constructor();
11
+ private evaluatorCache;
12
+ private regexCache;
13
+ private inOperatorSetCache;
14
+ private dependencyAnalyzer;
15
+ private executionOrderCache;
16
+ private respectDependencies;
17
+ constructor(options?: {
18
+ respectDependencies?: boolean;
19
+ });
11
20
  /**
12
21
  * Register a business rule
22
+ * Task #53: Clear evaluator cache when rules change to ensure fresh compilation
13
23
  */
14
24
  registerRule(rule: BusinessRule): void;
15
25
  /**
@@ -18,18 +28,91 @@ export declare class RulesEngine {
18
28
  registerRules(rules: BusinessRule[]): void;
19
29
  /**
20
30
  * Unregister a rule by ID
31
+ * Task #53: Clear evaluator cache when rules change
21
32
  */
22
33
  unregisterRule(ruleId: string): boolean;
34
+ /**
35
+ * Task #53: Clear the evaluator cache
36
+ * Task #34: Also clear regex and 'in' operator caches
37
+ * Task #37: Also clear execution order cache
38
+ * Called when rules are modified to ensure fresh compilation
39
+ */
40
+ private clearEvaluatorCache;
23
41
  /**
24
42
  * Get all registered rules
25
43
  */
26
44
  getRules(): BusinessRule[];
27
45
  /**
28
46
  * Get enabled rules sorted by priority (higher priority first)
47
+ * Task #39: In strict mode, filters out deprecated rules
48
+ * Task #37: When respectDependencies is true, returns rules in dependency-aware order
49
+ */
50
+ getActiveRules(strictMode?: boolean): BusinessRule[];
51
+ /**
52
+ * Task #37: Get rules sorted by dependency order (dependencies first, then by priority)
53
+ */
54
+ private getDependencySortedRules;
55
+ /**
56
+ * Task #39: Get all deprecated rules
57
+ */
58
+ getDeprecatedRules(): BusinessRule[];
59
+ /**
60
+ * Task #39: Analyze rules and suggest migrations for deprecated rules
61
+ * Returns migration suggestions with replacement rule information
62
+ */
63
+ migrateRules(rules: BusinessRule[]): Array<{
64
+ ruleId: string;
65
+ ruleName: string;
66
+ deprecatedMessage?: string;
67
+ replacedBy?: string;
68
+ replacementRule?: BusinessRule;
69
+ suggestion: string;
70
+ }>;
71
+ /**
72
+ * Task #39: Check if a rule is compatible with the current supervisor version
73
+ */
74
+ isRuleCompatible(rule: BusinessRule, currentVersion: string): boolean;
75
+ /**
76
+ * Task #37: Validate all rule dependencies
77
+ * Returns validation result with errors and warnings
78
+ */
79
+ validateDependencies(): DependencyValidationResult;
80
+ /**
81
+ * Task #37: Get the dependency analyzer for advanced analysis
82
+ */
83
+ getDependencyAnalyzer(): RuleDependencyAnalyzer;
84
+ /**
85
+ * Task #37: Enable or disable dependency-aware rule ordering
86
+ */
87
+ setRespectDependencies(enabled: boolean): void;
88
+ /**
89
+ * Task #37: Check if dependency-aware ordering is enabled
90
+ */
91
+ isRespectingDependencies(): boolean;
92
+ /**
93
+ * Task #37: Get rules that depend on a specific rule
94
+ */
95
+ getRuleDependents(ruleId: string): BusinessRule[];
96
+ /**
97
+ * Task #37: Get rules that a specific rule depends on
98
+ */
99
+ getRuleDependencies(ruleId: string): BusinessRule[];
100
+ /**
101
+ * Task #37: Get all rules that would be affected if a rule is disabled
102
+ */
103
+ getRulesAffectedByDisabling(ruleId: string): BusinessRule[];
104
+ /**
105
+ * Task #39: Compare semantic versions
106
+ * Returns: 1 if a > b, -1 if a < b, 0 if equal
29
107
  */
30
- getActiveRules(): BusinessRule[];
108
+ private compareVersions;
109
+ /**
110
+ * Task #39: Warn about deprecated rule usage
111
+ */
112
+ private warnDeprecatedRule;
31
113
  /**
32
114
  * Register a custom condition evaluator
115
+ * Task #53: Clear evaluator cache when custom evaluators change
33
116
  */
34
117
  registerCustomEvaluator(name: string, evaluator: (context: Record<string, unknown>, condition: RuleCondition) => boolean): void;
35
118
  /**
@@ -44,12 +127,28 @@ export declare class RulesEngine {
44
127
  * Build evaluation context from action and business context
45
128
  */
46
129
  private buildEvaluationContext;
130
+ /**
131
+ * Task #34: Sort conditions by evaluation cost for optimal short-circuit evaluation
132
+ * Cheaper operations (exists, equals) go first, expensive ones (regex, custom) last
133
+ */
134
+ private sortConditionsByEvaluationCost;
47
135
  /**
48
136
  * Evaluate if all/any conditions of a rule match
137
+ * Task #34: Optimized with condition sorting for short-circuit evaluation
49
138
  */
50
139
  private evaluateRuleConditions;
140
+ /**
141
+ * Task #34: Get cached RegExp or compile and cache it
142
+ */
143
+ private getCachedRegex;
144
+ /**
145
+ * Task #34: Get cached Set for 'in' operator or create and cache it
146
+ * Using Set provides O(1) lookup instead of O(n) array.includes()
147
+ */
148
+ private getCachedInOperatorSet;
51
149
  /**
52
150
  * Evaluate a single condition
151
+ * Task #34: Optimized with regex caching and Set-based 'in' operator
53
152
  */
54
153
  private evaluateCondition;
55
154
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"RulesEngine.d.ts","sourceRoot":"","sources":["../../src/engine/RulesEngine.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,eAAe,EACf,aAAa,EACb,gBAAgB,EAIhB,mBAAmB,EAEpB,MAAM,mBAAmB,CAAC;AAE3B,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAwC;IACrD,OAAO,CAAC,gBAAgB,CAAmG;;IAM3H;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAItC;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,IAAI;IAM1C;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIvC;;OAEG;IACH,QAAQ,IAAI,YAAY,EAAE;IAI1B;;OAEG;IACH,cAAc,IAAI,YAAY,EAAE;IAMhC;;OAEG;IACH,uBAAuB,CACrB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,aAAa,KAAK,OAAO,GACjF,IAAI;IAIP;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,gBAAgB;IAuGhF;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,mBAAmB;IA4DjE;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA4B9B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkB9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkFzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAStB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;OAEG;IACH,OAAO,CAAC,eAAe;IAQvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkBzB;;OAEG;IACH,OAAO,CAAC,yBAAyB;CAwBlC;AAGD,eAAO,MAAM,WAAW,aAAoB,CAAC"}
1
+ {"version":3,"file":"RulesEngine.d.ts","sourceRoot":"","sources":["../../src/engine/RulesEngine.ts"],"names":[],"mappings":"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"}
@@ -4,17 +4,52 @@
4
4
  * The heart of the governance system that evaluates actions against business rules.
5
5
  */
6
6
  import { v4 as uuidv4 } from 'uuid';
7
+ import { RuleDependencyAnalyzer } from './RuleDependencyAnalyzer.js';
8
+ /**
9
+ * Task #34: Condition evaluation cost weights for optimization
10
+ * Lower numbers = faster operations, should be evaluated first
11
+ */
12
+ const CONDITION_COST_WEIGHTS = {
13
+ exists: 1,
14
+ not_exists: 1,
15
+ equals: 2,
16
+ not_equals: 2,
17
+ in: 3,
18
+ not_in: 3,
19
+ greater_than: 4,
20
+ less_than: 4,
21
+ contains: 5,
22
+ not_contains: 5,
23
+ matches_regex: 10, // Expensive - evaluate last
24
+ custom: 8 // Custom evaluators can be expensive
25
+ };
7
26
  export class RulesEngine {
8
27
  rules = new Map();
9
28
  customEvaluators = new Map();
10
- constructor() {
29
+ // Task #53: Cache for compiled evaluators - keyed by evaluator name/string representation
30
+ evaluatorCache = new Map();
31
+ // Task #34: Cache for compiled RegExp objects - keyed by pattern string
32
+ regexCache = new Map();
33
+ // Task #34: Cache for optimized 'in' operator Sets - keyed by JSON.stringify of value array
34
+ inOperatorSetCache = new Map();
35
+ // Task #37: Dependency analyzer for rule ordering
36
+ dependencyAnalyzer;
37
+ // Task #37: Cache for dependency-sorted execution order
38
+ executionOrderCache = null;
39
+ // Task #37: Whether to respect rule dependencies in evaluation order
40
+ respectDependencies = true;
41
+ constructor(options) {
42
+ this.dependencyAnalyzer = new RuleDependencyAnalyzer();
43
+ this.respectDependencies = options?.respectDependencies ?? true;
11
44
  this.registerDefaultEvaluators();
12
45
  }
13
46
  /**
14
47
  * Register a business rule
48
+ * Task #53: Clear evaluator cache when rules change to ensure fresh compilation
15
49
  */
16
50
  registerRule(rule) {
17
51
  this.rules.set(rule.id, rule);
52
+ this.clearEvaluatorCache();
18
53
  }
19
54
  /**
20
55
  * Register multiple business rules
@@ -26,9 +61,26 @@ export class RulesEngine {
26
61
  }
27
62
  /**
28
63
  * Unregister a rule by ID
64
+ * Task #53: Clear evaluator cache when rules change
29
65
  */
30
66
  unregisterRule(ruleId) {
31
- return this.rules.delete(ruleId);
67
+ const result = this.rules.delete(ruleId);
68
+ if (result) {
69
+ this.clearEvaluatorCache();
70
+ }
71
+ return result;
72
+ }
73
+ /**
74
+ * Task #53: Clear the evaluator cache
75
+ * Task #34: Also clear regex and 'in' operator caches
76
+ * Task #37: Also clear execution order cache
77
+ * Called when rules are modified to ensure fresh compilation
78
+ */
79
+ clearEvaluatorCache() {
80
+ this.evaluatorCache.clear();
81
+ this.regexCache.clear();
82
+ this.inOperatorSetCache.clear();
83
+ this.executionOrderCache = null;
32
84
  }
33
85
  /**
34
86
  * Get all registered rules
@@ -38,17 +90,182 @@ export class RulesEngine {
38
90
  }
39
91
  /**
40
92
  * Get enabled rules sorted by priority (higher priority first)
93
+ * Task #39: In strict mode, filters out deprecated rules
94
+ * Task #37: When respectDependencies is true, returns rules in dependency-aware order
41
95
  */
42
- getActiveRules() {
43
- return this.getRules()
96
+ getActiveRules(strictMode = false) {
97
+ const enabledRules = this.getRules()
44
98
  .filter(rule => rule.enabled)
45
- .sort((a, b) => b.priority - a.priority);
99
+ .filter(rule => !strictMode || !rule.deprecated);
100
+ // Task #37: Return rules in dependency order if enabled
101
+ if (this.respectDependencies) {
102
+ return this.getDependencySortedRules(enabledRules);
103
+ }
104
+ // Default: sort by priority (higher priority first)
105
+ return enabledRules.sort((a, b) => b.priority - a.priority);
106
+ }
107
+ /**
108
+ * Task #37: Get rules sorted by dependency order (dependencies first, then by priority)
109
+ */
110
+ getDependencySortedRules(rules) {
111
+ // Use cached execution order if available
112
+ if (this.executionOrderCache) {
113
+ const ruleMap = new Map();
114
+ for (const rule of rules) {
115
+ ruleMap.set(rule.id, rule);
116
+ }
117
+ const orderedRules = [];
118
+ for (const ruleId of this.executionOrderCache) {
119
+ const rule = ruleMap.get(ruleId);
120
+ if (rule) {
121
+ orderedRules.push(rule);
122
+ }
123
+ }
124
+ // Add any rules not in cache (shouldn't happen, but safety)
125
+ const cachedIds = new Set(this.executionOrderCache);
126
+ for (const rule of rules) {
127
+ if (!cachedIds.has(rule.id)) {
128
+ orderedRules.push(rule);
129
+ }
130
+ }
131
+ return orderedRules;
132
+ }
133
+ // Calculate and cache execution order
134
+ const sortedRules = this.dependencyAnalyzer.getSortedRulesForExecution(rules);
135
+ this.executionOrderCache = sortedRules.map(r => r.id);
136
+ return sortedRules;
137
+ }
138
+ /**
139
+ * Task #39: Get all deprecated rules
140
+ */
141
+ getDeprecatedRules() {
142
+ return this.getRules().filter(rule => rule.deprecated === true);
143
+ }
144
+ /**
145
+ * Task #39: Analyze rules and suggest migrations for deprecated rules
146
+ * Returns migration suggestions with replacement rule information
147
+ */
148
+ migrateRules(rules) {
149
+ const migrations = [];
150
+ for (const rule of rules) {
151
+ if (rule.deprecated) {
152
+ const replacementRule = rule.replacedBy ? this.rules.get(rule.replacedBy) : undefined;
153
+ let suggestion = `Rule '${rule.name}' (${rule.id}) is deprecated.`;
154
+ if (rule.deprecatedMessage) {
155
+ suggestion += ` ${rule.deprecatedMessage}`;
156
+ }
157
+ if (rule.replacedBy) {
158
+ if (replacementRule) {
159
+ suggestion += ` Migrate to '${replacementRule.name}' (${rule.replacedBy}).`;
160
+ }
161
+ else {
162
+ suggestion += ` Recommended replacement: ${rule.replacedBy} (not found in current rules).`;
163
+ }
164
+ }
165
+ migrations.push({
166
+ ruleId: rule.id,
167
+ ruleName: rule.name,
168
+ deprecatedMessage: rule.deprecatedMessage,
169
+ replacedBy: rule.replacedBy,
170
+ replacementRule,
171
+ suggestion
172
+ });
173
+ }
174
+ }
175
+ return migrations;
176
+ }
177
+ /**
178
+ * Task #39: Check if a rule is compatible with the current supervisor version
179
+ */
180
+ isRuleCompatible(rule, currentVersion) {
181
+ if (!rule.minVersion) {
182
+ return true; // No version requirement
183
+ }
184
+ return this.compareVersions(currentVersion, rule.minVersion) >= 0;
185
+ }
186
+ /**
187
+ * Task #37: Validate all rule dependencies
188
+ * Returns validation result with errors and warnings
189
+ */
190
+ validateDependencies() {
191
+ return this.dependencyAnalyzer.validateDependencies(this.getRules());
192
+ }
193
+ /**
194
+ * Task #37: Get the dependency analyzer for advanced analysis
195
+ */
196
+ getDependencyAnalyzer() {
197
+ return this.dependencyAnalyzer;
198
+ }
199
+ /**
200
+ * Task #37: Enable or disable dependency-aware rule ordering
201
+ */
202
+ setRespectDependencies(enabled) {
203
+ if (this.respectDependencies !== enabled) {
204
+ this.respectDependencies = enabled;
205
+ this.executionOrderCache = null; // Clear cache when toggling
206
+ }
207
+ }
208
+ /**
209
+ * Task #37: Check if dependency-aware ordering is enabled
210
+ */
211
+ isRespectingDependencies() {
212
+ return this.respectDependencies;
213
+ }
214
+ /**
215
+ * Task #37: Get rules that depend on a specific rule
216
+ */
217
+ getRuleDependents(ruleId) {
218
+ return this.dependencyAnalyzer.getDependents(ruleId, this.getRules());
219
+ }
220
+ /**
221
+ * Task #37: Get rules that a specific rule depends on
222
+ */
223
+ getRuleDependencies(ruleId) {
224
+ return this.dependencyAnalyzer.getDependencies(ruleId, this.getRules());
225
+ }
226
+ /**
227
+ * Task #37: Get all rules that would be affected if a rule is disabled
228
+ */
229
+ getRulesAffectedByDisabling(ruleId) {
230
+ return this.dependencyAnalyzer.getAffectedByDisabling(ruleId, this.getRules());
231
+ }
232
+ /**
233
+ * Task #39: Compare semantic versions
234
+ * Returns: 1 if a > b, -1 if a < b, 0 if equal
235
+ */
236
+ compareVersions(a, b) {
237
+ const partsA = a.split('.').map(Number);
238
+ const partsB = b.split('.').map(Number);
239
+ for (let i = 0; i < Math.max(partsA.length, partsB.length); i++) {
240
+ const numA = partsA[i] || 0;
241
+ const numB = partsB[i] || 0;
242
+ if (numA > numB)
243
+ return 1;
244
+ if (numA < numB)
245
+ return -1;
246
+ }
247
+ return 0;
248
+ }
249
+ /**
250
+ * Task #39: Warn about deprecated rule usage
251
+ */
252
+ warnDeprecatedRule(rule) {
253
+ let message = `[DEPRECATED] Rule '${rule.name}' (${rule.id}) is deprecated.`;
254
+ if (rule.deprecatedMessage) {
255
+ message += ` ${rule.deprecatedMessage}`;
256
+ }
257
+ if (rule.replacedBy) {
258
+ message += ` Consider migrating to: ${rule.replacedBy}`;
259
+ }
260
+ console.warn(message);
46
261
  }
47
262
  /**
48
263
  * Register a custom condition evaluator
264
+ * Task #53: Clear evaluator cache when custom evaluators change
49
265
  */
50
266
  registerCustomEvaluator(name, evaluator) {
51
267
  this.customEvaluators.set(name, evaluator);
268
+ this.clearEvaluatorCache();
52
269
  }
53
270
  /**
54
271
  * Evaluate an agent action against all active rules
@@ -67,10 +284,23 @@ export class RulesEngine {
67
284
  const evalContext = this.buildEvaluationContext(action, context);
68
285
  // Get active rules and evaluate
69
286
  const activeRules = this.getActiveRules();
287
+ // Task #57: Track total priority weight for normalization
288
+ let totalPriorityWeight = 0;
289
+ let weightedRiskSum = 0;
70
290
  for (const rule of activeRules) {
71
291
  const ruleMatches = this.evaluateRuleConditions(rule, evalContext);
72
292
  if (ruleMatches) {
73
293
  appliedRules.push(rule.id);
294
+ // Task #39: Warn when deprecated rules are triggered
295
+ if (rule.deprecated) {
296
+ this.warnDeprecatedRule(rule);
297
+ }
298
+ // Task #57: Weight risk by rule priority (0-1000 scale)
299
+ // Higher priority rules have more impact on final score
300
+ const priorityMultiplier = (rule.priority + 100) / 100; // Ensure minimum weight of 1
301
+ const weightedRisk = rule.riskWeight * priorityMultiplier;
302
+ weightedRiskSum += weightedRisk;
303
+ totalPriorityWeight += priorityMultiplier;
74
304
  totalRiskWeight += rule.riskWeight;
75
305
  // Process rule actions
76
306
  for (const ruleAction of rule.actions) {
@@ -106,8 +336,11 @@ export class RulesEngine {
106
336
  }
107
337
  }
108
338
  }
109
- // Calculate risk score (0-100)
110
- const riskScore = Math.min(100, totalRiskWeight);
339
+ // Task #57: Calculate risk score using priority-weighted average (0-100)
340
+ // If no rules matched, use raw total; otherwise use weighted calculation
341
+ const riskScore = totalPriorityWeight > 0
342
+ ? Math.min(100, weightedRiskSum / totalPriorityWeight)
343
+ : Math.min(100, totalRiskWeight);
111
344
  const riskLevel = this.calculateRiskLevel(riskScore);
112
345
  // Determine final status
113
346
  let status;
@@ -230,21 +463,76 @@ export class RulesEngine {
230
463
  ...context?.customAttributes
231
464
  };
232
465
  }
466
+ /**
467
+ * Task #34: Sort conditions by evaluation cost for optimal short-circuit evaluation
468
+ * Cheaper operations (exists, equals) go first, expensive ones (regex, custom) last
469
+ */
470
+ sortConditionsByEvaluationCost(conditions) {
471
+ return [...conditions].sort((a, b) => {
472
+ const costA = CONDITION_COST_WEIGHTS[a.operator] ?? 5;
473
+ const costB = CONDITION_COST_WEIGHTS[b.operator] ?? 5;
474
+ return costA - costB;
475
+ });
476
+ }
233
477
  /**
234
478
  * Evaluate if all/any conditions of a rule match
479
+ * Task #34: Optimized with condition sorting for short-circuit evaluation
235
480
  */
236
481
  evaluateRuleConditions(rule, context) {
237
482
  if (rule.conditions.length === 0) {
238
483
  return true; // No conditions means always match
239
484
  }
240
- const results = rule.conditions.map(condition => this.evaluateCondition(condition, context));
485
+ // Task #34: Sort conditions by evaluation cost for optimal short-circuit behavior
486
+ const sortedConditions = this.sortConditionsByEvaluationCost(rule.conditions);
241
487
  if (rule.conditionLogic === 'any') {
242
- return results.some(r => r);
488
+ // For 'any' logic, evaluate until first true (cheaper conditions first)
489
+ for (const condition of sortedConditions) {
490
+ if (this.evaluateCondition(condition, context)) {
491
+ return true; // Short-circuit: found a match
492
+ }
493
+ }
494
+ return false;
243
495
  }
244
- return results.every(r => r);
496
+ // For 'all' logic (default), evaluate until first false (cheaper conditions first)
497
+ for (const condition of sortedConditions) {
498
+ if (!this.evaluateCondition(condition, context)) {
499
+ return false; // Short-circuit: found a non-match
500
+ }
501
+ }
502
+ return true;
503
+ }
504
+ /**
505
+ * Task #34: Get cached RegExp or compile and cache it
506
+ */
507
+ getCachedRegex(pattern) {
508
+ let regex = this.regexCache.get(pattern);
509
+ if (!regex) {
510
+ try {
511
+ regex = new RegExp(pattern);
512
+ this.regexCache.set(pattern, regex);
513
+ }
514
+ catch {
515
+ return null;
516
+ }
517
+ }
518
+ return regex;
519
+ }
520
+ /**
521
+ * Task #34: Get cached Set for 'in' operator or create and cache it
522
+ * Using Set provides O(1) lookup instead of O(n) array.includes()
523
+ */
524
+ getCachedInOperatorSet(values) {
525
+ const cacheKey = JSON.stringify(values);
526
+ let valueSet = this.inOperatorSetCache.get(cacheKey);
527
+ if (!valueSet) {
528
+ valueSet = new Set(values);
529
+ this.inOperatorSetCache.set(cacheKey, valueSet);
530
+ }
531
+ return valueSet;
245
532
  }
246
533
  /**
247
534
  * Evaluate a single condition
535
+ * Task #34: Optimized with regex caching and Set-based 'in' operator
248
536
  */
249
537
  evaluateCondition(condition, context) {
250
538
  const fieldValue = this.getNestedValue(context, condition.field);
@@ -276,24 +564,24 @@ export class RulesEngine {
276
564
  return typeof fieldValue === 'number' && typeof condition.value === 'number'
277
565
  && fieldValue < condition.value;
278
566
  case 'in':
567
+ // Task #34: Use Set-based lookup for O(1) performance on large value arrays
279
568
  if (Array.isArray(condition.value)) {
280
- return condition.value.includes(fieldValue);
569
+ const valueSet = this.getCachedInOperatorSet(condition.value);
570
+ return valueSet.has(fieldValue);
281
571
  }
282
572
  return false;
283
573
  case 'not_in':
574
+ // Task #34: Use Set-based lookup for O(1) performance on large value arrays
284
575
  if (Array.isArray(condition.value)) {
285
- return !condition.value.includes(fieldValue);
576
+ const valueSet = this.getCachedInOperatorSet(condition.value);
577
+ return !valueSet.has(fieldValue);
286
578
  }
287
579
  return true;
288
580
  case 'matches_regex':
581
+ // Task #34: Use cached regex compilation to avoid repeated new RegExp() calls
289
582
  if (typeof fieldValue === 'string' && typeof condition.value === 'string') {
290
- try {
291
- const regex = new RegExp(condition.value);
292
- return regex.test(fieldValue);
293
- }
294
- catch {
295
- return false;
296
- }
583
+ const regex = this.getCachedRegex(condition.value);
584
+ return regex ? regex.test(fieldValue) : false;
297
585
  }
298
586
  return false;
299
587
  case 'exists':
@@ -302,9 +590,26 @@ export class RulesEngine {
302
590
  return fieldValue === undefined || fieldValue === null;
303
591
  case 'custom':
304
592
  if (condition.customEvaluator) {
305
- const evaluator = this.customEvaluators.get(condition.customEvaluator);
593
+ // Task #53: Check cache first for compiled evaluator
594
+ const cacheKey = condition.customEvaluator;
595
+ let evaluator = this.evaluatorCache.get(cacheKey);
596
+ if (!evaluator) {
597
+ evaluator = this.customEvaluators.get(condition.customEvaluator);
598
+ if (evaluator) {
599
+ // Cache the evaluator for future use
600
+ this.evaluatorCache.set(cacheKey, evaluator);
601
+ }
602
+ }
306
603
  if (evaluator) {
307
- return evaluator(context, condition);
604
+ // Task #56: Add try-catch around custom evaluator execution
605
+ try {
606
+ return evaluator(context, condition);
607
+ }
608
+ catch (error) {
609
+ // Log error and treat failed evaluator as non-matching condition
610
+ console.error(`Custom evaluator '${condition.customEvaluator}' threw an exception:`, error instanceof Error ? error.message : String(error));
611
+ return false;
612
+ }
308
613
  }
309
614
  }
310
615
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"RulesEngine.js","sourceRoot":"","sources":["../../src/engine/RulesEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RulesEngine.js","sourceRoot":"","sources":["../../src/engine/RulesEngine.ts"],"names":[],"mappings":"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"}