@trentapps/manager-protocol 1.3.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 (195) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +639 -0
  3. package/dist/analyzers/ArchitectureDetector.d.ts +44 -0
  4. package/dist/analyzers/ArchitectureDetector.d.ts.map +1 -0
  5. package/dist/analyzers/ArchitectureDetector.js +218 -0
  6. package/dist/analyzers/ArchitectureDetector.js.map +1 -0
  7. package/dist/analyzers/CSSAnalyzer.d.ts +284 -0
  8. package/dist/analyzers/CSSAnalyzer.d.ts.map +1 -0
  9. package/dist/analyzers/CSSAnalyzer.js +1180 -0
  10. package/dist/analyzers/CSSAnalyzer.js.map +1 -0
  11. package/dist/analyzers/index.d.ts +5 -0
  12. package/dist/analyzers/index.d.ts.map +1 -0
  13. package/dist/analyzers/index.js +5 -0
  14. package/dist/analyzers/index.js.map +1 -0
  15. package/dist/cli.d.ts +8 -0
  16. package/dist/cli.d.ts.map +1 -0
  17. package/dist/cli.js +174 -0
  18. package/dist/cli.js.map +1 -0
  19. package/dist/design-system/index.d.ts +6 -0
  20. package/dist/design-system/index.d.ts.map +1 -0
  21. package/dist/design-system/index.js +6 -0
  22. package/dist/design-system/index.js.map +1 -0
  23. package/dist/design-system/tokens.d.ts +106 -0
  24. package/dist/design-system/tokens.d.ts.map +1 -0
  25. package/dist/design-system/tokens.js +554 -0
  26. package/dist/design-system/tokens.js.map +1 -0
  27. package/dist/engine/AuditLogger.d.ts +506 -0
  28. package/dist/engine/AuditLogger.d.ts.map +1 -0
  29. package/dist/engine/AuditLogger.js +1491 -0
  30. package/dist/engine/AuditLogger.js.map +1 -0
  31. package/dist/engine/GitHubApprovalManager.d.ts +123 -0
  32. package/dist/engine/GitHubApprovalManager.d.ts.map +1 -0
  33. package/dist/engine/GitHubApprovalManager.js +347 -0
  34. package/dist/engine/GitHubApprovalManager.js.map +1 -0
  35. package/dist/engine/GitHubClient.d.ts +183 -0
  36. package/dist/engine/GitHubClient.d.ts.map +1 -0
  37. package/dist/engine/GitHubClient.js +411 -0
  38. package/dist/engine/GitHubClient.js.map +1 -0
  39. package/dist/engine/RateLimiter.d.ts +81 -0
  40. package/dist/engine/RateLimiter.d.ts.map +1 -0
  41. package/dist/engine/RateLimiter.js +215 -0
  42. package/dist/engine/RateLimiter.js.map +1 -0
  43. package/dist/engine/RuleDependencyAnalyzer.d.ts +73 -0
  44. package/dist/engine/RuleDependencyAnalyzer.d.ts.map +1 -0
  45. package/dist/engine/RuleDependencyAnalyzer.js +475 -0
  46. package/dist/engine/RuleDependencyAnalyzer.js.map +1 -0
  47. package/dist/engine/RulesEngine.d.ts +176 -0
  48. package/dist/engine/RulesEngine.d.ts.map +1 -0
  49. package/dist/engine/RulesEngine.js +705 -0
  50. package/dist/engine/RulesEngine.js.map +1 -0
  51. package/dist/engine/TaskManager.d.ts +174 -0
  52. package/dist/engine/TaskManager.d.ts.map +1 -0
  53. package/dist/engine/TaskManager.js +663 -0
  54. package/dist/engine/TaskManager.js.map +1 -0
  55. package/dist/engine/index.d.ts +11 -0
  56. package/dist/engine/index.d.ts.map +1 -0
  57. package/dist/engine/index.js +13 -0
  58. package/dist/engine/index.js.map +1 -0
  59. package/dist/index.d.ts +21 -0
  60. package/dist/index.d.ts.map +1 -0
  61. package/dist/index.js +29 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/rules/architecture.d.ts +9 -0
  64. package/dist/rules/architecture.d.ts.map +1 -0
  65. package/dist/rules/architecture.js +322 -0
  66. package/dist/rules/architecture.js.map +1 -0
  67. package/dist/rules/azure.d.ts +7 -0
  68. package/dist/rules/azure.d.ts.map +1 -0
  69. package/dist/rules/azure.js +136 -0
  70. package/dist/rules/azure.js.map +1 -0
  71. package/dist/rules/compliance.d.ts +9 -0
  72. package/dist/rules/compliance.d.ts.map +1 -0
  73. package/dist/rules/compliance.js +286 -0
  74. package/dist/rules/compliance.js.map +1 -0
  75. package/dist/rules/condition-optimizer.d.ts +151 -0
  76. package/dist/rules/condition-optimizer.d.ts.map +1 -0
  77. package/dist/rules/condition-optimizer.js +479 -0
  78. package/dist/rules/condition-optimizer.js.map +1 -0
  79. package/dist/rules/css.d.ts +10 -0
  80. package/dist/rules/css.d.ts.map +1 -0
  81. package/dist/rules/css.js +1777 -0
  82. package/dist/rules/css.js.map +1 -0
  83. package/dist/rules/field-standards.d.ts +1172 -0
  84. package/dist/rules/field-standards.d.ts.map +1 -0
  85. package/dist/rules/field-standards.js +908 -0
  86. package/dist/rules/field-standards.js.map +1 -0
  87. package/dist/rules/flask.d.ts +7 -0
  88. package/dist/rules/flask.d.ts.map +1 -0
  89. package/dist/rules/flask.js +142 -0
  90. package/dist/rules/flask.js.map +1 -0
  91. package/dist/rules/index.d.ts +827 -0
  92. package/dist/rules/index.d.ts.map +1 -0
  93. package/dist/rules/index.js +556 -0
  94. package/dist/rules/index.js.map +1 -0
  95. package/dist/rules/ml-ai.d.ts +7 -0
  96. package/dist/rules/ml-ai.d.ts.map +1 -0
  97. package/dist/rules/ml-ai.js +148 -0
  98. package/dist/rules/ml-ai.js.map +1 -0
  99. package/dist/rules/operational.d.ts +9 -0
  100. package/dist/rules/operational.d.ts.map +1 -0
  101. package/dist/rules/operational.js +318 -0
  102. package/dist/rules/operational.js.map +1 -0
  103. package/dist/rules/patterns.d.ts +568 -0
  104. package/dist/rules/patterns.d.ts.map +1 -0
  105. package/dist/rules/patterns.js +1359 -0
  106. package/dist/rules/patterns.js.map +1 -0
  107. package/dist/rules/security.d.ts +9 -0
  108. package/dist/rules/security.d.ts.map +1 -0
  109. package/dist/rules/security.js +848 -0
  110. package/dist/rules/security.js.map +1 -0
  111. package/dist/rules/shared-patterns.d.ts +268 -0
  112. package/dist/rules/shared-patterns.d.ts.map +1 -0
  113. package/dist/rules/shared-patterns.js +556 -0
  114. package/dist/rules/shared-patterns.js.map +1 -0
  115. package/dist/rules/storage.d.ts +13 -0
  116. package/dist/rules/storage.d.ts.map +1 -0
  117. package/dist/rules/storage.js +672 -0
  118. package/dist/rules/storage.js.map +1 -0
  119. package/dist/rules/stripe.d.ts +7 -0
  120. package/dist/rules/stripe.d.ts.map +1 -0
  121. package/dist/rules/stripe.js +133 -0
  122. package/dist/rules/stripe.js.map +1 -0
  123. package/dist/rules/testing.d.ts +7 -0
  124. package/dist/rules/testing.d.ts.map +1 -0
  125. package/dist/rules/testing.js +135 -0
  126. package/dist/rules/testing.js.map +1 -0
  127. package/dist/rules/ux.d.ts +9 -0
  128. package/dist/rules/ux.d.ts.map +1 -0
  129. package/dist/rules/ux.js +280 -0
  130. package/dist/rules/ux.js.map +1 -0
  131. package/dist/rules/websocket.d.ts +7 -0
  132. package/dist/rules/websocket.d.ts.map +1 -0
  133. package/dist/rules/websocket.js +128 -0
  134. package/dist/rules/websocket.js.map +1 -0
  135. package/dist/server.d.ts +43 -0
  136. package/dist/server.d.ts.map +1 -0
  137. package/dist/server.js +1967 -0
  138. package/dist/server.js.map +1 -0
  139. package/dist/supervisor/AgentSupervisor.d.ts +195 -0
  140. package/dist/supervisor/AgentSupervisor.d.ts.map +1 -0
  141. package/dist/supervisor/AgentSupervisor.js +569 -0
  142. package/dist/supervisor/AgentSupervisor.js.map +1 -0
  143. package/dist/supervisor/ManagedServerRegistry.d.ts +185 -0
  144. package/dist/supervisor/ManagedServerRegistry.d.ts.map +1 -0
  145. package/dist/supervisor/ManagedServerRegistry.js +729 -0
  146. package/dist/supervisor/ManagedServerRegistry.js.map +1 -0
  147. package/dist/supervisor/ProjectTracker.d.ts +210 -0
  148. package/dist/supervisor/ProjectTracker.d.ts.map +1 -0
  149. package/dist/supervisor/ProjectTracker.js +709 -0
  150. package/dist/supervisor/ProjectTracker.js.map +1 -0
  151. package/dist/supervisor/index.d.ts +6 -0
  152. package/dist/supervisor/index.d.ts.map +1 -0
  153. package/dist/supervisor/index.js +6 -0
  154. package/dist/supervisor/index.js.map +1 -0
  155. package/dist/testing/index.d.ts +11 -0
  156. package/dist/testing/index.d.ts.map +1 -0
  157. package/dist/testing/index.js +12 -0
  158. package/dist/testing/index.js.map +1 -0
  159. package/dist/testing/rule-tester.d.ts +217 -0
  160. package/dist/testing/rule-tester.d.ts.map +1 -0
  161. package/dist/testing/rule-tester.examples.d.ts +57 -0
  162. package/dist/testing/rule-tester.examples.d.ts.map +1 -0
  163. package/dist/testing/rule-tester.examples.js +375 -0
  164. package/dist/testing/rule-tester.examples.js.map +1 -0
  165. package/dist/testing/rule-tester.js +381 -0
  166. package/dist/testing/rule-tester.js.map +1 -0
  167. package/dist/testing/rule-validator.d.ts +141 -0
  168. package/dist/testing/rule-validator.d.ts.map +1 -0
  169. package/dist/testing/rule-validator.js +640 -0
  170. package/dist/testing/rule-validator.js.map +1 -0
  171. package/dist/types/index.d.ts +1282 -0
  172. package/dist/types/index.d.ts.map +1 -0
  173. package/dist/types/index.js +386 -0
  174. package/dist/types/index.js.map +1 -0
  175. package/dist/utils/errors.d.ts +86 -0
  176. package/dist/utils/errors.d.ts.map +1 -0
  177. package/dist/utils/errors.js +171 -0
  178. package/dist/utils/errors.js.map +1 -0
  179. package/dist/utils/index.d.ts +7 -0
  180. package/dist/utils/index.d.ts.map +1 -0
  181. package/dist/utils/index.js +7 -0
  182. package/dist/utils/index.js.map +1 -0
  183. package/dist/utils/rate-limiting.d.ts +268 -0
  184. package/dist/utils/rate-limiting.d.ts.map +1 -0
  185. package/dist/utils/rate-limiting.js +403 -0
  186. package/dist/utils/rate-limiting.js.map +1 -0
  187. package/dist/utils/shared.d.ts +306 -0
  188. package/dist/utils/shared.d.ts.map +1 -0
  189. package/dist/utils/shared.js +464 -0
  190. package/dist/utils/shared.js.map +1 -0
  191. package/dist/utils/shell.d.ts +22 -0
  192. package/dist/utils/shell.d.ts.map +1 -0
  193. package/dist/utils/shell.js +29 -0
  194. package/dist/utils/shell.js.map +1 -0
  195. package/package.json +67 -0
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Azure-Specific Rules
3
+ * Governance rules for Azure Functions, Cosmos DB, and Azure services
4
+ */
5
+ import { createRateLimitRule } from './shared-patterns.js';
6
+ export const azureRules = [
7
+ {
8
+ id: 'azure-001',
9
+ name: 'Require Azure Functions Timeout Configuration',
10
+ description: 'Azure Functions must have explicit timeout configuration',
11
+ type: 'architecture',
12
+ enabled: true,
13
+ priority: 880,
14
+ conditions: [
15
+ { field: 'platform', operator: 'equals', value: 'azure-functions' },
16
+ { field: 'timeout', operator: 'not_exists', value: null }
17
+ ],
18
+ conditionLogic: 'all',
19
+ actions: [
20
+ { type: 'warn', message: 'Azure Functions should set explicit timeout (default 5min, max 10min for Consumption)' }
21
+ ],
22
+ riskWeight: 25,
23
+ tags: ['azure', 'functions', 'timeout', 'configuration']
24
+ },
25
+ {
26
+ id: 'azure-002',
27
+ name: 'Monitor Cosmos DB RU Consumption',
28
+ description: 'Cosmos DB RU consumption should be monitored',
29
+ type: 'operational',
30
+ enabled: true,
31
+ priority: 850,
32
+ conditions: [
33
+ { field: 'database', operator: 'equals', value: 'cosmos-db' },
34
+ { field: 'ruUsagePercent', operator: 'greater_than', value: 80 }
35
+ ],
36
+ conditionLogic: 'all',
37
+ actions: [
38
+ { type: 'warn', message: 'Cosmos DB RU usage >80% - consider scaling or optimizing queries' }
39
+ ],
40
+ riskWeight: 35,
41
+ tags: ['azure', 'cosmos-db', 'ru', 'performance', 'cost']
42
+ },
43
+ {
44
+ id: 'azure-003',
45
+ name: 'Enforce Managed Identities',
46
+ description: 'Use managed identities instead of connection strings',
47
+ type: 'security',
48
+ enabled: true,
49
+ priority: 940,
50
+ conditions: [
51
+ { field: 'platform', operator: 'contains', value: 'azure' },
52
+ { field: 'environment', operator: 'equals', value: 'production' },
53
+ { field: 'usesConnectionString', operator: 'equals', value: true }
54
+ ],
55
+ conditionLogic: 'all',
56
+ actions: [
57
+ { type: 'warn', message: 'Use Azure Managed Identities instead of connection strings in production' }
58
+ ],
59
+ riskWeight: 45,
60
+ tags: ['azure', 'security', 'managed-identity', 'authentication']
61
+ },
62
+ // Azure OpenAI Rate Limiting - uses shared rate limit pattern
63
+ createRateLimitRule({
64
+ id: 'azure-004',
65
+ name: 'Validate Azure OpenAI Rate Limits',
66
+ description: 'Azure OpenAI calls should respect rate limit headers',
67
+ limitType: 'api',
68
+ scope: {
69
+ category: 'external_api',
70
+ provider: 'azure-openai'
71
+ },
72
+ actionType: 'warn',
73
+ message: 'Implement exponential backoff and respect Azure OpenAI rate limit headers',
74
+ priority: 820,
75
+ riskWeight: 30,
76
+ tags: ['azure', 'openai', 'api']
77
+ }),
78
+ {
79
+ id: 'azure-005',
80
+ name: 'Require Application Insights',
81
+ description: 'Production Azure Functions should use Application Insights',
82
+ type: 'operational',
83
+ enabled: true,
84
+ priority: 860,
85
+ conditions: [
86
+ { field: 'platform', operator: 'equals', value: 'azure-functions' },
87
+ { field: 'environment', operator: 'equals', value: 'production' },
88
+ { field: 'appInsightsEnabled', operator: 'not_equals', value: true }
89
+ ],
90
+ conditionLogic: 'all',
91
+ actions: [
92
+ { type: 'warn', message: 'Enable Application Insights for production Azure Functions monitoring' }
93
+ ],
94
+ riskWeight: 25,
95
+ tags: ['azure', 'monitoring', 'app-insights', 'observability']
96
+ },
97
+ {
98
+ id: 'azure-006',
99
+ name: 'Cosmos DB Partition Key Strategy',
100
+ description: 'Cosmos DB containers should have optimized partition keys',
101
+ type: 'architecture',
102
+ enabled: true,
103
+ priority: 800,
104
+ conditions: [
105
+ { field: 'database', operator: 'equals', value: 'cosmos-db' },
106
+ { field: 'operation', operator: 'equals', value: 'create_container' },
107
+ { field: 'partitionKeyOptimized', operator: 'not_equals', value: true }
108
+ ],
109
+ conditionLogic: 'all',
110
+ actions: [
111
+ { type: 'warn', message: 'Cosmos DB: Choose partition key with high cardinality and even distribution' }
112
+ ],
113
+ riskWeight: 30,
114
+ tags: ['azure', 'cosmos-db', 'partition-key', 'performance']
115
+ },
116
+ {
117
+ id: 'azure-007',
118
+ name: 'Static Web App CORS Configuration',
119
+ description: 'Azure SWA should have explicit CORS configuration',
120
+ type: 'security',
121
+ enabled: true,
122
+ priority: 900,
123
+ conditions: [
124
+ { field: 'platform', operator: 'equals', value: 'azure-swa' },
125
+ { field: 'environment', operator: 'equals', value: 'production' },
126
+ { field: 'corsConfigured', operator: 'not_equals', value: true }
127
+ ],
128
+ conditionLogic: 'all',
129
+ actions: [
130
+ { type: 'warn', message: 'Configure CORS explicitly in staticwebapp.config.json' }
131
+ ],
132
+ riskWeight: 35,
133
+ tags: ['azure', 'swa', 'cors', 'security']
134
+ }
135
+ ];
136
+ //# sourceMappingURL=azure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"azure.js","sourceRoot":"","sources":["../../src/rules/azure.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Enterprise Agent Supervisor - Compliance Rules
3
+ *
4
+ * Built-in rules for regulatory compliance (GDPR, SOX, HIPAA, PCI-DSS, etc.)
5
+ */
6
+ import type { BusinessRule } from '../types/index.js';
7
+ export declare const complianceRules: BusinessRule[];
8
+ export default complianceRules;
9
+ //# sourceMappingURL=compliance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compliance.d.ts","sourceRoot":"","sources":["../../src/rules/compliance.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAQtD,eAAO,MAAM,eAAe,EAAE,YAAY,EAyRzC,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -0,0 +1,286 @@
1
+ /**
2
+ * Enterprise Agent Supervisor - Compliance Rules
3
+ *
4
+ * Built-in rules for regulatory compliance (GDPR, SOX, HIPAA, PCI-DSS, etc.)
5
+ */
6
+ import { createAuditLoggingRule, createDataTypeAuditRule, createEncryptionRule, AUDIT_CATEGORIES } from './shared-patterns.js';
7
+ export const complianceRules = [
8
+ // ============================================================================
9
+ // GDPR COMPLIANCE RULES
10
+ // ============================================================================
11
+ {
12
+ id: 'gdpr-001',
13
+ name: 'GDPR - Data Subject Access Request',
14
+ description: 'Ensures proper handling of data subject access requests',
15
+ type: 'compliance',
16
+ enabled: true,
17
+ priority: 900,
18
+ conditions: [
19
+ { field: 'actionName', operator: 'contains', value: 'personal_data' },
20
+ { field: 'requestType', operator: 'equals', value: 'subject_access' },
21
+ { field: 'verificationCompleted', operator: 'not_equals', value: true }
22
+ ],
23
+ conditionLogic: 'all',
24
+ actions: [
25
+ { type: 'deny', message: 'GDPR: Identity verification required before processing DSAR' }
26
+ ],
27
+ riskWeight: 40,
28
+ tags: ['gdpr', 'dsar', 'privacy']
29
+ },
30
+ {
31
+ id: 'gdpr-002',
32
+ name: 'GDPR - Cross-Border Data Transfer',
33
+ description: 'Requires approval for transferring data outside approved regions',
34
+ type: 'compliance',
35
+ enabled: true,
36
+ priority: 920,
37
+ conditions: [
38
+ { field: 'actionCategory', operator: 'in', value: ['data_access', 'data_modification'] },
39
+ { field: 'destinationRegion', operator: 'not_in', value: ['EU', 'EEA', 'adequacy_decision'] },
40
+ { field: 'dataContainsPII', operator: 'equals', value: true }
41
+ ],
42
+ conditionLogic: 'all',
43
+ actions: [
44
+ { type: 'require_approval', message: 'GDPR: Cross-border PII transfer requires DPO approval' },
45
+ { type: 'log' }
46
+ ],
47
+ riskWeight: 50,
48
+ tags: ['gdpr', 'cross-border', 'data-transfer']
49
+ },
50
+ {
51
+ id: 'gdpr-003',
52
+ name: 'GDPR - Data Retention Limit',
53
+ description: 'Prevents access to data beyond retention period',
54
+ type: 'compliance',
55
+ enabled: true,
56
+ priority: 850,
57
+ conditions: [
58
+ { field: 'actionCategory', operator: 'equals', value: 'data_access' },
59
+ { field: 'dataRetentionExceeded', operator: 'equals', value: true }
60
+ ],
61
+ conditionLogic: 'all',
62
+ actions: [
63
+ { type: 'deny', message: 'GDPR: Data has exceeded retention period and should be deleted' },
64
+ { type: 'notify', message: 'GDPR violation: Attempt to access expired data' }
65
+ ],
66
+ riskWeight: 45,
67
+ tags: ['gdpr', 'retention', 'data-lifecycle']
68
+ },
69
+ {
70
+ id: 'gdpr-004',
71
+ name: 'GDPR - Consent Verification',
72
+ description: 'Ensures data processing has valid consent',
73
+ type: 'compliance',
74
+ enabled: true,
75
+ priority: 910,
76
+ conditions: [
77
+ { field: 'actionCategory', operator: 'equals', value: 'data_modification' },
78
+ { field: 'processingBasis', operator: 'equals', value: 'consent' },
79
+ { field: 'consentValid', operator: 'not_equals', value: true }
80
+ ],
81
+ conditionLogic: 'all',
82
+ actions: [
83
+ { type: 'deny', message: 'GDPR: Valid consent required for this data processing activity' }
84
+ ],
85
+ riskWeight: 45,
86
+ tags: ['gdpr', 'consent']
87
+ },
88
+ // ============================================================================
89
+ // HIPAA COMPLIANCE RULES
90
+ // ============================================================================
91
+ // PHI Access Logging - uses shared audit pattern
92
+ createDataTypeAuditRule({
93
+ id: 'hipaa-001',
94
+ name: 'HIPAA - PHI Access Logging',
95
+ dataType: 'phi',
96
+ framework: 'hipaa',
97
+ priority: 950,
98
+ riskWeight: 10
99
+ }),
100
+ {
101
+ id: 'hipaa-002',
102
+ name: 'HIPAA - Minimum Necessary Standard',
103
+ description: 'Enforces minimum necessary access to PHI',
104
+ type: 'compliance',
105
+ enabled: true,
106
+ priority: 920,
107
+ conditions: [
108
+ { field: 'dataType', operator: 'equals', value: 'phi' },
109
+ { field: 'fieldsRequested', operator: 'greater_than', value: 10 },
110
+ { field: 'businessJustification', operator: 'not_exists', value: null }
111
+ ],
112
+ conditionLogic: 'all',
113
+ actions: [
114
+ { type: 'require_approval', message: 'HIPAA: Broad PHI access requires business justification' }
115
+ ],
116
+ riskWeight: 35,
117
+ tags: ['hipaa', 'minimum-necessary']
118
+ },
119
+ // PHI Encryption - uses shared encryption pattern
120
+ createEncryptionRule({
121
+ id: 'hipaa-003',
122
+ name: 'HIPAA - PHI Encryption Requirement',
123
+ description: 'Requires encryption for PHI in transit and at rest',
124
+ encryptionType: 'data',
125
+ scope: {
126
+ category: 'data_access,data_modification,external_api',
127
+ dataType: 'phi'
128
+ },
129
+ actionType: 'deny',
130
+ message: 'HIPAA: PHI must be encrypted in transit and at rest',
131
+ priority: 960,
132
+ riskWeight: 55,
133
+ tags: ['hipaa']
134
+ }),
135
+ // ============================================================================
136
+ // PCI-DSS COMPLIANCE RULES
137
+ // ============================================================================
138
+ {
139
+ id: 'pci-001',
140
+ name: 'PCI-DSS - Cardholder Data Access',
141
+ description: 'Restricts access to cardholder data',
142
+ type: 'compliance',
143
+ enabled: true,
144
+ priority: 980,
145
+ conditions: [
146
+ { field: 'dataType', operator: 'equals', value: 'cardholder' },
147
+ { field: 'userRole', operator: 'not_in', value: ['payment_processor', 'fraud_analyst', 'security_admin'] }
148
+ ],
149
+ conditionLogic: 'all',
150
+ actions: [
151
+ { type: 'deny', message: 'PCI-DSS: Cardholder data access restricted to authorized roles' }
152
+ ],
153
+ riskWeight: 60,
154
+ tags: ['pci-dss', 'cardholder-data']
155
+ },
156
+ {
157
+ id: 'pci-002',
158
+ name: 'PCI-DSS - Full PAN Display Prohibition',
159
+ description: 'Prevents display of full Primary Account Number',
160
+ type: 'compliance',
161
+ enabled: true,
162
+ priority: 970,
163
+ conditions: [
164
+ { field: 'actionName', operator: 'contains', value: 'display' },
165
+ { field: 'dataType', operator: 'equals', value: 'pan' },
166
+ { field: 'masked', operator: 'not_equals', value: true }
167
+ ],
168
+ conditionLogic: 'all',
169
+ actions: [
170
+ { type: 'deny', message: 'PCI-DSS: Full PAN cannot be displayed - must be masked' }
171
+ ],
172
+ riskWeight: 55,
173
+ tags: ['pci-dss', 'pan', 'masking']
174
+ },
175
+ {
176
+ id: 'pci-003',
177
+ name: 'PCI-DSS - CVV Storage Prohibition',
178
+ description: 'Prevents storage of CVV/CVC codes',
179
+ type: 'compliance',
180
+ enabled: true,
181
+ priority: 990,
182
+ conditions: [
183
+ { field: 'actionCategory', operator: 'equals', value: 'data_modification' },
184
+ { field: 'operation', operator: 'in', value: ['write', 'store', 'save'] },
185
+ { field: 'dataType', operator: 'equals', value: 'cvv' }
186
+ ],
187
+ conditionLogic: 'all',
188
+ actions: [
189
+ { type: 'deny', message: 'PCI-DSS: CVV/CVC storage is strictly prohibited' }
190
+ ],
191
+ riskWeight: 70,
192
+ tags: ['pci-dss', 'cvv']
193
+ },
194
+ // ============================================================================
195
+ // SOX COMPLIANCE RULES
196
+ // ============================================================================
197
+ {
198
+ id: 'sox-001',
199
+ name: 'SOX - Financial Data Modification Audit',
200
+ description: 'Ensures all financial data changes are audited',
201
+ type: 'compliance',
202
+ enabled: true,
203
+ priority: 940,
204
+ conditions: [
205
+ { field: 'actionCategory', operator: 'equals', value: 'financial' },
206
+ { field: 'operation', operator: 'in', value: ['write', 'update', 'delete'] }
207
+ ],
208
+ conditionLogic: 'all',
209
+ actions: [
210
+ { type: 'log' },
211
+ { type: 'require_approval', message: 'SOX: Financial data modification requires dual approval' }
212
+ ],
213
+ riskWeight: 45,
214
+ tags: ['sox', 'financial', 'audit']
215
+ },
216
+ {
217
+ id: 'sox-002',
218
+ name: 'SOX - Segregation of Duties',
219
+ description: 'Enforces segregation of duties for financial operations',
220
+ type: 'compliance',
221
+ enabled: true,
222
+ priority: 930,
223
+ conditions: [
224
+ { field: 'actionCategory', operator: 'equals', value: 'financial' },
225
+ { field: 'operation', operator: 'equals', value: 'approve' },
226
+ { field: 'initiatorId', operator: 'equals', value: '$userId' }
227
+ ],
228
+ conditionLogic: 'all',
229
+ actions: [
230
+ { type: 'deny', message: 'SOX: Cannot approve own financial transactions (segregation of duties)' }
231
+ ],
232
+ riskWeight: 50,
233
+ tags: ['sox', 'segregation-of-duties']
234
+ },
235
+ // ============================================================================
236
+ // GENERAL COMPLIANCE RULES
237
+ // ============================================================================
238
+ // Audit Trail - uses shared audit pattern with standard categories
239
+ createAuditLoggingRule({
240
+ id: 'comp-001',
241
+ name: 'Audit Trail Requirement',
242
+ description: 'Ensures all significant actions are logged',
243
+ categories: AUDIT_CATEGORIES,
244
+ priority: 800,
245
+ riskWeight: 5,
246
+ tags: []
247
+ }),
248
+ {
249
+ id: 'comp-002',
250
+ name: 'Data Classification Requirement',
251
+ description: 'Requires data classification before processing',
252
+ type: 'compliance',
253
+ enabled: true,
254
+ priority: 820,
255
+ conditions: [
256
+ { field: 'actionCategory', operator: 'in', value: ['data_access', 'data_modification'] },
257
+ { field: 'dataClassification', operator: 'not_exists', value: null }
258
+ ],
259
+ conditionLogic: 'all',
260
+ actions: [
261
+ { type: 'warn', message: 'Data classification should be specified for audit purposes' }
262
+ ],
263
+ riskWeight: 15,
264
+ tags: ['classification', 'governance']
265
+ },
266
+ {
267
+ id: 'comp-003',
268
+ name: 'Business Hours Processing',
269
+ description: 'Flags after-hours processing for review',
270
+ type: 'compliance',
271
+ enabled: true,
272
+ priority: 700,
273
+ conditions: [
274
+ { field: 'actionCategory', operator: 'equals', value: 'financial' },
275
+ { field: '', operator: 'custom', value: null, customEvaluator: 'businessHours' }
276
+ ],
277
+ conditionLogic: 'all',
278
+ actions: [
279
+ { type: 'warn', message: 'After-hours financial processing - flagged for review' }
280
+ ],
281
+ riskWeight: 20,
282
+ tags: ['business-hours', 'review']
283
+ }
284
+ ];
285
+ export default complianceRules;
286
+ //# sourceMappingURL=compliance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compliance.js","sourceRoot":"","sources":["../../src/rules/compliance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,151 @@
1
+ /**
2
+ * Enterprise Agent Supervisor - Condition Optimizer
3
+ * Task #34: Optimize Inefficient Condition Logic
4
+ *
5
+ * Provides utilities for optimizing rule conditions:
6
+ * - Use `in` operator instead of multiple `equals`
7
+ * - Order conditions for short-circuit optimization
8
+ * - Identify and consolidate redundant conditions
9
+ */
10
+ import type { RuleCondition, BusinessRule } from '../types/index.js';
11
+ /**
12
+ * Result of condition optimization analysis
13
+ */
14
+ export interface OptimizationResult {
15
+ /** Original conditions */
16
+ original: RuleCondition[];
17
+ /** Optimized conditions */
18
+ optimized: RuleCondition[];
19
+ /** Changes made */
20
+ changes: OptimizationChange[];
21
+ /** Whether any optimizations were made */
22
+ wasOptimized: boolean;
23
+ /** Estimated performance improvement (0-1) */
24
+ estimatedImprovement: number;
25
+ }
26
+ /**
27
+ * Describes a single optimization change
28
+ */
29
+ export interface OptimizationChange {
30
+ type: 'combined_to_in' | 'reordered' | 'removed_redundant' | 'simplified';
31
+ description: string;
32
+ originalConditions: RuleCondition[];
33
+ newCondition?: RuleCondition;
34
+ }
35
+ /**
36
+ * Field cost for short-circuit ordering
37
+ * Lower cost fields should be evaluated first
38
+ */
39
+ export interface FieldCost {
40
+ field: string;
41
+ cost: number;
42
+ reason: string;
43
+ }
44
+ /**
45
+ * Default field costs for short-circuit optimization
46
+ * Lower cost = faster to evaluate = should be first
47
+ */
48
+ export declare const DEFAULT_FIELD_COSTS: FieldCost[];
49
+ /**
50
+ * Get the cost for a field (default cost for unknown fields)
51
+ */
52
+ declare function getFieldCost(field: string): number;
53
+ /**
54
+ * Combine multiple `equals` conditions on the same field into a single `in` condition
55
+ *
56
+ * @example
57
+ * Before:
58
+ * { field: 'env', operator: 'equals', value: 'dev' }
59
+ * { field: 'env', operator: 'equals', value: 'staging' }
60
+ *
61
+ * After:
62
+ * { field: 'env', operator: 'in', value: ['dev', 'staging'] }
63
+ */
64
+ export declare function combineEqualsToIn(conditions: RuleCondition[]): {
65
+ conditions: RuleCondition[];
66
+ changes: OptimizationChange[];
67
+ };
68
+ /**
69
+ * Reorder conditions for optimal short-circuit evaluation
70
+ * Cheaper conditions first, more likely to fail conditions first
71
+ */
72
+ export declare function reorderForShortCircuit(conditions: RuleCondition[]): {
73
+ conditions: RuleCondition[];
74
+ changes: OptimizationChange[];
75
+ };
76
+ /**
77
+ * Remove redundant conditions
78
+ * - Duplicate conditions
79
+ * - Conditions that are subsets of others
80
+ */
81
+ export declare function removeRedundant(conditions: RuleCondition[]): {
82
+ conditions: RuleCondition[];
83
+ changes: OptimizationChange[];
84
+ };
85
+ /**
86
+ * Simplify conditions where possible
87
+ * - Convert single-element `in` to `equals`
88
+ * - Convert `not_in` with single element to `not_equals`
89
+ */
90
+ export declare function simplifyConditions(conditions: RuleCondition[]): {
91
+ conditions: RuleCondition[];
92
+ changes: OptimizationChange[];
93
+ };
94
+ /**
95
+ * Optimize rule conditions using all available strategies
96
+ */
97
+ export declare function optimizeConditions(conditions: RuleCondition[]): OptimizationResult;
98
+ /**
99
+ * Optimize all conditions in a rule
100
+ */
101
+ export declare function optimizeRule(rule: BusinessRule): {
102
+ rule: BusinessRule;
103
+ result: OptimizationResult;
104
+ };
105
+ /**
106
+ * Optimize all rules and return summary
107
+ */
108
+ export declare function optimizeRules(rules: BusinessRule[]): {
109
+ rules: BusinessRule[];
110
+ summary: {
111
+ totalRules: number;
112
+ optimizedRules: number;
113
+ totalChanges: number;
114
+ changesByType: Record<string, number>;
115
+ averageImprovement: number;
116
+ };
117
+ details: Array<{
118
+ ruleId: string;
119
+ ruleName: string;
120
+ result: OptimizationResult;
121
+ }>;
122
+ };
123
+ /**
124
+ * Analyze rules for optimization opportunities without modifying them
125
+ */
126
+ export declare function analyzeRulesForOptimization(rules: BusinessRule[]): {
127
+ opportunities: Array<{
128
+ ruleId: string;
129
+ ruleName: string;
130
+ issues: string[];
131
+ potentialImprovement: number;
132
+ }>;
133
+ summary: {
134
+ totalOpportunities: number;
135
+ rulesWithIssues: number;
136
+ };
137
+ };
138
+ declare const _default: {
139
+ optimizeConditions: typeof optimizeConditions;
140
+ optimizeRule: typeof optimizeRule;
141
+ optimizeRules: typeof optimizeRules;
142
+ combineEqualsToIn: typeof combineEqualsToIn;
143
+ reorderForShortCircuit: typeof reorderForShortCircuit;
144
+ removeRedundant: typeof removeRedundant;
145
+ simplifyConditions: typeof simplifyConditions;
146
+ analyzeRulesForOptimization: typeof analyzeRulesForOptimization;
147
+ DEFAULT_FIELD_COSTS: FieldCost[];
148
+ getFieldCost: typeof getFieldCost;
149
+ };
150
+ export default _default;
151
+ //# sourceMappingURL=condition-optimizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condition-optimizer.d.ts","sourceRoot":"","sources":["../../src/rules/condition-optimizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAMrE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,0BAA0B;IAC1B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,2BAA2B;IAC3B,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,mBAAmB;IACnB,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,0CAA0C;IAC1C,YAAY,EAAE,OAAO,CAAC;IACtB,8CAA8C;IAC9C,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,gBAAgB,GAAG,WAAW,GAAG,mBAAmB,GAAG,YAAY,CAAC;IAC1E,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,aAAa,EAAE,CAAC;IACpC,YAAY,CAAC,EAAE,aAAa,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,EA2B1C,CAAC;AAEF;;GAEG;AACH,iBAAS,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAU3C;AAmCD;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG;IAC9D,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,OAAO,EAAE,kBAAkB,EAAE,CAAC;CAC/B,CA2CA;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG;IACnE,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,OAAO,EAAE,kBAAkB,EAAE,CAAC;CAC/B,CA4BA;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG;IAC5D,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,OAAO,EAAE,kBAAkB,EAAE,CAAC;CAC/B,CAwDA;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG;IAC/D,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,OAAO,EAAE,kBAAkB,EAAE,CAAC;CAC/B,CAqCA;AAMD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,kBAAkB,CAgElF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG;IAChD,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,kBAAkB,CAAC;CAC5B,CAUA;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG;IACpD,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtC,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,OAAO,EAAE,KAAK,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,kBAAkB,CAAC;KAC5B,CAAC,CAAC;CACJ,CAkDA;AAMD;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG;IAClE,aAAa,EAAE,KAAK,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,oBAAoB,EAAE,MAAM,CAAC;KAC9B,CAAC,CAAC;IACH,OAAO,EAAE;QACP,kBAAkB,EAAE,MAAM,CAAC;QAC3B,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH,CAkFA;;;;;;;;;;;;;AAMD,wBAkBE"}