@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
@@ -0,0 +1,375 @@
1
+ /**
2
+ * Enterprise Agent Supervisor - Rule Testing Framework Examples
3
+ *
4
+ * This file demonstrates how to use the RuleTester class to test business rules.
5
+ * These examples can be run with vitest or used as reference for writing your own tests.
6
+ */
7
+ import { RuleTester, testRule, createTestCase, expectApproval, expectWarn, expectNoMatch, assertions } from './rule-tester.js';
8
+ import { validateRule, checkForConflicts, lintRules } from './rule-validator.js';
9
+ // ============================================================================
10
+ // EXAMPLE RULE DEFINITIONS
11
+ // ============================================================================
12
+ /**
13
+ * Example security rule that blocks PII access without authorization
14
+ */
15
+ export const examplePiiAccessRule = {
16
+ id: 'example-pii-access',
17
+ name: 'Block PII Access Without Authorization',
18
+ description: 'Prevents unauthorized access to personally identifiable information',
19
+ type: 'security',
20
+ enabled: true,
21
+ priority: 950,
22
+ conditions: [
23
+ { field: 'actionCategory', operator: 'equals', value: 'pii_access' },
24
+ { field: 'userRole', operator: 'not_in', value: ['admin', 'data_officer', 'compliance'] }
25
+ ],
26
+ conditionLogic: 'all',
27
+ actions: [
28
+ { type: 'deny', message: 'PII access requires authorized role' }
29
+ ],
30
+ riskWeight: 45,
31
+ tags: ['pii', 'gdpr', 'privacy']
32
+ };
33
+ /**
34
+ * Example rule that requires approval for production deployments
35
+ */
36
+ export const exampleProductionDeployRule = {
37
+ id: 'example-prod-deploy',
38
+ name: 'Require Approval for Production Deployment',
39
+ description: 'Requires human approval for deploying to production',
40
+ type: 'operational',
41
+ enabled: true,
42
+ priority: 900,
43
+ conditions: [
44
+ { field: 'actionName', operator: 'contains', value: 'deploy' },
45
+ { field: 'environment', operator: 'equals', value: 'production' }
46
+ ],
47
+ conditionLogic: 'all',
48
+ actions: [
49
+ { type: 'require_approval', message: 'Production deployments require approval' }
50
+ ],
51
+ riskWeight: 35,
52
+ tags: ['deployment', 'production']
53
+ };
54
+ /**
55
+ * Example rule that warns about large data operations
56
+ */
57
+ export const exampleLargeDataWarningRule = {
58
+ id: 'example-large-data-warning',
59
+ name: 'Warn on Large Data Operations',
60
+ description: 'Warns when operating on more than 10,000 records',
61
+ type: 'data_governance',
62
+ enabled: true,
63
+ priority: 700,
64
+ conditions: [
65
+ { field: 'recordCount', operator: 'greater_than', value: 10000 }
66
+ ],
67
+ conditionLogic: 'all',
68
+ actions: [
69
+ { type: 'warn', message: 'Large data operation detected (>10,000 records)' }
70
+ ],
71
+ riskWeight: 15,
72
+ tags: ['data', 'performance']
73
+ };
74
+ /**
75
+ * Example rule with dependencies
76
+ */
77
+ export const exampleAuthCheckRule = {
78
+ id: 'example-auth-check',
79
+ name: 'Check Authentication First',
80
+ description: 'Base authentication check that other rules depend on',
81
+ type: 'security',
82
+ enabled: true,
83
+ priority: 1000,
84
+ conditions: [
85
+ { field: 'authToken', operator: 'not_exists', value: null }
86
+ ],
87
+ conditionLogic: 'all',
88
+ actions: [
89
+ { type: 'deny', message: 'Authentication required' }
90
+ ],
91
+ riskWeight: 50,
92
+ tags: ['authentication']
93
+ };
94
+ export const exampleApiCallRule = {
95
+ id: 'example-api-call',
96
+ name: 'API Call Logging',
97
+ description: 'Logs all external API calls',
98
+ type: 'operational',
99
+ enabled: true,
100
+ priority: 800,
101
+ conditions: [
102
+ { field: 'actionCategory', operator: 'equals', value: 'external_api' }
103
+ ],
104
+ conditionLogic: 'all',
105
+ actions: [
106
+ { type: 'log', message: 'External API call detected' },
107
+ { type: 'allow' }
108
+ ],
109
+ riskWeight: 10,
110
+ tags: ['api', 'logging'],
111
+ dependsOn: ['example-auth-check'], // Must check auth first
112
+ relatedRules: ['example-pii-access']
113
+ };
114
+ // ============================================================================
115
+ // EXAMPLE TEST CASES USING RuleTester
116
+ // ============================================================================
117
+ /**
118
+ * Example: Testing PII access rule with RuleTester class
119
+ */
120
+ export function runPiiAccessRuleTests() {
121
+ const tester = new RuleTester({ verbose: true });
122
+ const result = tester.testRule(examplePiiAccessRule, [
123
+ // Test 1: Should deny unauthorized user accessing PII
124
+ {
125
+ description: 'Should deny regular user accessing PII',
126
+ input: {
127
+ action: {
128
+ name: 'read_customer_data',
129
+ category: 'pii_access'
130
+ },
131
+ context: {
132
+ userRole: 'developer'
133
+ }
134
+ },
135
+ expectedResult: {
136
+ shouldMatch: true,
137
+ status: 'denied',
138
+ allowed: false,
139
+ violationCount: 1
140
+ }
141
+ },
142
+ // Test 2: Should allow admin to access PII
143
+ {
144
+ description: 'Should allow admin to access PII',
145
+ input: {
146
+ action: {
147
+ name: 'read_customer_data',
148
+ category: 'pii_access'
149
+ },
150
+ context: {
151
+ userRole: 'admin'
152
+ }
153
+ },
154
+ expectedResult: {
155
+ shouldMatch: false // Rule should not match for authorized users
156
+ }
157
+ },
158
+ // Test 3: Should allow data_officer to access PII
159
+ {
160
+ description: 'Should allow data_officer to access PII',
161
+ input: {
162
+ action: {
163
+ name: 'export_user_emails',
164
+ category: 'pii_access'
165
+ },
166
+ context: {
167
+ userRole: 'data_officer'
168
+ }
169
+ },
170
+ expectedResult: {
171
+ shouldMatch: false
172
+ }
173
+ },
174
+ // Test 4: Should not match non-PII access
175
+ {
176
+ description: 'Should not match non-PII data access',
177
+ input: {
178
+ action: {
179
+ name: 'read_public_stats',
180
+ category: 'data_access'
181
+ },
182
+ context: {
183
+ userRole: 'developer'
184
+ }
185
+ },
186
+ expectedResult: {
187
+ shouldMatch: false
188
+ }
189
+ }
190
+ ]);
191
+ console.log('\nPII Access Rule Test Results:');
192
+ console.log(` Total: ${result.totalTests}`);
193
+ console.log(` Passed: ${result.passedTests}`);
194
+ console.log(` Failed: ${result.failedTests}`);
195
+ }
196
+ /**
197
+ * Example: Using convenience functions for test cases
198
+ */
199
+ export function runProductionDeployTests() {
200
+ const result = testRule(exampleProductionDeployRule, [
201
+ // Using expectApproval helper
202
+ expectApproval('Should require approval for production deployment', {
203
+ name: 'deploy_service',
204
+ category: 'code_execution'
205
+ }, { context: { environment: 'production' } }),
206
+ // Using expectNoMatch helper
207
+ expectNoMatch('Should not require approval for staging deployment', {
208
+ name: 'deploy_service',
209
+ category: 'code_execution'
210
+ }, { environment: 'staging' }),
211
+ // Using createTestCase for custom expectations
212
+ createTestCase('Should require approval only when deploying to production', {
213
+ name: 'deploy_application',
214
+ category: 'code_execution'
215
+ }, {
216
+ shouldMatch: true,
217
+ status: 'pending_approval',
218
+ requiresHumanApproval: true
219
+ }, { environment: 'production' })
220
+ ]);
221
+ console.log('\nProduction Deploy Rule Test Results:');
222
+ console.log(` Total: ${result.totalTests}`);
223
+ console.log(` Passed: ${result.passedTests}`);
224
+ console.log(` Failed: ${result.failedTests}`);
225
+ }
226
+ /**
227
+ * Example: Testing warning rules
228
+ */
229
+ export function runLargeDataWarningTests() {
230
+ const result = testRule(exampleLargeDataWarningRule, [
231
+ // Using expectWarn helper
232
+ expectWarn('Should warn for large data operations', {
233
+ name: 'bulk_update',
234
+ category: 'data_modification',
235
+ parameters: { recordCount: 50000 }
236
+ }),
237
+ // Should not warn for small operations
238
+ expectNoMatch('Should not warn for small data operations', {
239
+ name: 'update_record',
240
+ category: 'data_modification',
241
+ parameters: { recordCount: 100 }
242
+ })
243
+ ]);
244
+ console.log('\nLarge Data Warning Rule Test Results:');
245
+ console.log(` Total: ${result.totalTests}`);
246
+ console.log(` Passed: ${result.passedTests}`);
247
+ console.log(` Failed: ${result.failedTests}`);
248
+ }
249
+ // ============================================================================
250
+ // EXAMPLE: USING ASSERTION HELPERS
251
+ // ============================================================================
252
+ /**
253
+ * Example: Using assertion helpers for vitest/jest integration
254
+ */
255
+ export function demonstrateAssertions() {
256
+ const action = {
257
+ name: 'read_customer_data',
258
+ category: 'pii_access'
259
+ };
260
+ const unauthorizedContext = { userRole: 'developer' };
261
+ const authorizedContext = { userRole: 'admin' };
262
+ // Using assertion helpers
263
+ const matchesUnauthorized = assertions.ruleMatches(examplePiiAccessRule, action, unauthorizedContext);
264
+ console.log(`Rule matches unauthorized access: ${matchesUnauthorized}`); // true
265
+ const matchesAuthorized = assertions.ruleMatches(examplePiiAccessRule, action, authorizedContext);
266
+ console.log(`Rule matches authorized access: ${matchesAuthorized}`); // false
267
+ const deniesUnauthorized = assertions.ruleDenies(examplePiiAccessRule, action, unauthorizedContext);
268
+ console.log(`Rule denies unauthorized access: ${deniesUnauthorized}`); // true
269
+ }
270
+ // ============================================================================
271
+ // EXAMPLE: RULE VALIDATION
272
+ // ============================================================================
273
+ /**
274
+ * Example: Validating rule structure
275
+ */
276
+ export function demonstrateValidation() {
277
+ // Valid rule
278
+ const validResult = validateRule(examplePiiAccessRule);
279
+ console.log('\nValid rule validation:');
280
+ console.log(` Is valid: ${validResult.isValid}`);
281
+ console.log(` Errors: ${validResult.errors.length}`);
282
+ console.log(` Warnings: ${validResult.warnings.length}`);
283
+ // Invalid rule (missing required fields)
284
+ const invalidRule = {
285
+ id: 'invalid-rule',
286
+ // Missing name, type, conditions, actions
287
+ };
288
+ const invalidResult = validateRule(invalidRule);
289
+ console.log('\nInvalid rule validation:');
290
+ console.log(` Is valid: ${invalidResult.isValid}`);
291
+ console.log(` Errors: ${invalidResult.errors.map(e => e.message).join(', ')}`);
292
+ }
293
+ /**
294
+ * Example: Checking for rule conflicts
295
+ */
296
+ export function demonstrateConflictDetection() {
297
+ // Create two rules with conflicting actions
298
+ const rule1 = {
299
+ id: 'conflict-allow',
300
+ name: 'Allow API Calls',
301
+ type: 'operational',
302
+ enabled: true,
303
+ priority: 500,
304
+ conditions: [
305
+ { field: 'actionCategory', operator: 'equals', value: 'external_api' }
306
+ ],
307
+ conditionLogic: 'all',
308
+ actions: [{ type: 'allow' }],
309
+ riskWeight: 0
310
+ };
311
+ const rule2 = {
312
+ id: 'conflict-deny',
313
+ name: 'Deny API Calls',
314
+ type: 'security',
315
+ enabled: true,
316
+ priority: 500,
317
+ conditions: [
318
+ { field: 'actionCategory', operator: 'equals', value: 'external_api' }
319
+ ],
320
+ conditionLogic: 'all',
321
+ actions: [{ type: 'deny' }],
322
+ riskWeight: 50
323
+ };
324
+ const conflictResult = checkForConflicts([rule1, rule2]);
325
+ console.log('\nConflict detection:');
326
+ console.log(` Has conflicts: ${conflictResult.hasConflicts}`);
327
+ for (const conflict of conflictResult.conflicts) {
328
+ console.log(` - ${conflict.conflictType}: ${conflict.description}`);
329
+ }
330
+ }
331
+ /**
332
+ * Example: Linting rules for best practices
333
+ */
334
+ export function demonstrateLinting() {
335
+ const rules = [
336
+ examplePiiAccessRule,
337
+ exampleProductionDeployRule,
338
+ exampleLargeDataWarningRule,
339
+ exampleAuthCheckRule,
340
+ exampleApiCallRule
341
+ ];
342
+ const lintResult = lintRules(rules);
343
+ console.log('\nLint results:');
344
+ console.log(` Total issues: ${lintResult.totalIssues}`);
345
+ console.log(` Errors: ${lintResult.errors.length}`);
346
+ console.log(` Warnings: ${lintResult.warnings.length}`);
347
+ console.log(` Suggestions: ${lintResult.suggestions.length}`);
348
+ for (const error of lintResult.errors) {
349
+ console.log(` [ERROR] ${error.ruleId}: ${error.message}`);
350
+ }
351
+ for (const warning of lintResult.warnings) {
352
+ console.log(` [WARN] ${warning.ruleId}: ${warning.message}`);
353
+ }
354
+ }
355
+ // ============================================================================
356
+ // RUN ALL EXAMPLES
357
+ // ============================================================================
358
+ /**
359
+ * Run all examples to demonstrate the testing framework
360
+ */
361
+ export function runAllExamples() {
362
+ console.log('=== Rule Testing Framework Examples ===\n');
363
+ console.log('--- Test Case Examples ---');
364
+ runPiiAccessRuleTests();
365
+ runProductionDeployTests();
366
+ runLargeDataWarningTests();
367
+ console.log('\n--- Assertion Helpers ---');
368
+ demonstrateAssertions();
369
+ console.log('\n--- Validation Examples ---');
370
+ demonstrateValidation();
371
+ demonstrateConflictDetection();
372
+ demonstrateLinting();
373
+ console.log('\n=== Examples Complete ===');
374
+ }
375
+ //# sourceMappingURL=rule-tester.examples.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-tester.examples.js","sourceRoot":"","sources":["../../src/testing/rule-tester.examples.ts"],"names":[],"mappings":"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"}