@trentapps/manager-protocol 1.1.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 (151) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +446 -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 +104 -0
  8. package/dist/analyzers/CSSAnalyzer.d.ts.map +1 -0
  9. package/dist/analyzers/CSSAnalyzer.js +578 -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/AppMonitor.d.ts +162 -0
  28. package/dist/engine/AppMonitor.d.ts.map +1 -0
  29. package/dist/engine/AppMonitor.js +754 -0
  30. package/dist/engine/AppMonitor.js.map +1 -0
  31. package/dist/engine/AuditLogger.d.ts +138 -0
  32. package/dist/engine/AuditLogger.d.ts.map +1 -0
  33. package/dist/engine/AuditLogger.js +448 -0
  34. package/dist/engine/AuditLogger.js.map +1 -0
  35. package/dist/engine/GitHubApprovalManager.d.ts +106 -0
  36. package/dist/engine/GitHubApprovalManager.d.ts.map +1 -0
  37. package/dist/engine/GitHubApprovalManager.js +315 -0
  38. package/dist/engine/GitHubApprovalManager.js.map +1 -0
  39. package/dist/engine/RateLimiter.d.ts +79 -0
  40. package/dist/engine/RateLimiter.d.ts.map +1 -0
  41. package/dist/engine/RateLimiter.js +232 -0
  42. package/dist/engine/RateLimiter.js.map +1 -0
  43. package/dist/engine/RulesEngine.d.ts +77 -0
  44. package/dist/engine/RulesEngine.d.ts.map +1 -0
  45. package/dist/engine/RulesEngine.js +400 -0
  46. package/dist/engine/RulesEngine.js.map +1 -0
  47. package/dist/engine/TaskManager.d.ts +173 -0
  48. package/dist/engine/TaskManager.d.ts.map +1 -0
  49. package/dist/engine/TaskManager.js +678 -0
  50. package/dist/engine/TaskManager.js.map +1 -0
  51. package/dist/engine/index.d.ts +9 -0
  52. package/dist/engine/index.d.ts.map +1 -0
  53. package/dist/engine/index.js +9 -0
  54. package/dist/engine/index.js.map +1 -0
  55. package/dist/index.d.ts +21 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +29 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/rules/architecture.d.ts +9 -0
  60. package/dist/rules/architecture.d.ts.map +1 -0
  61. package/dist/rules/architecture.js +322 -0
  62. package/dist/rules/architecture.js.map +1 -0
  63. package/dist/rules/azure.d.ts +7 -0
  64. package/dist/rules/azure.d.ts.map +1 -0
  65. package/dist/rules/azure.js +138 -0
  66. package/dist/rules/azure.js.map +1 -0
  67. package/dist/rules/compliance.d.ts +9 -0
  68. package/dist/rules/compliance.d.ts.map +1 -0
  69. package/dist/rules/compliance.js +304 -0
  70. package/dist/rules/compliance.js.map +1 -0
  71. package/dist/rules/css.d.ts +10 -0
  72. package/dist/rules/css.d.ts.map +1 -0
  73. package/dist/rules/css.js +1239 -0
  74. package/dist/rules/css.js.map +1 -0
  75. package/dist/rules/flask.d.ts +7 -0
  76. package/dist/rules/flask.d.ts.map +1 -0
  77. package/dist/rules/flask.js +155 -0
  78. package/dist/rules/flask.js.map +1 -0
  79. package/dist/rules/index.d.ts +607 -0
  80. package/dist/rules/index.d.ts.map +1 -0
  81. package/dist/rules/index.js +401 -0
  82. package/dist/rules/index.js.map +1 -0
  83. package/dist/rules/ml-ai.d.ts +7 -0
  84. package/dist/rules/ml-ai.d.ts.map +1 -0
  85. package/dist/rules/ml-ai.js +150 -0
  86. package/dist/rules/ml-ai.js.map +1 -0
  87. package/dist/rules/operational.d.ts +9 -0
  88. package/dist/rules/operational.d.ts.map +1 -0
  89. package/dist/rules/operational.js +318 -0
  90. package/dist/rules/operational.js.map +1 -0
  91. package/dist/rules/security.d.ts +9 -0
  92. package/dist/rules/security.d.ts.map +1 -0
  93. package/dist/rules/security.js +287 -0
  94. package/dist/rules/security.js.map +1 -0
  95. package/dist/rules/storage.d.ts +7 -0
  96. package/dist/rules/storage.d.ts.map +1 -0
  97. package/dist/rules/storage.js +134 -0
  98. package/dist/rules/storage.js.map +1 -0
  99. package/dist/rules/stripe.d.ts +7 -0
  100. package/dist/rules/stripe.d.ts.map +1 -0
  101. package/dist/rules/stripe.js +140 -0
  102. package/dist/rules/stripe.js.map +1 -0
  103. package/dist/rules/testing.d.ts +7 -0
  104. package/dist/rules/testing.d.ts.map +1 -0
  105. package/dist/rules/testing.js +135 -0
  106. package/dist/rules/testing.js.map +1 -0
  107. package/dist/rules/ux.d.ts +9 -0
  108. package/dist/rules/ux.d.ts.map +1 -0
  109. package/dist/rules/ux.js +280 -0
  110. package/dist/rules/ux.js.map +1 -0
  111. package/dist/rules/websocket.d.ts +7 -0
  112. package/dist/rules/websocket.d.ts.map +1 -0
  113. package/dist/rules/websocket.js +136 -0
  114. package/dist/rules/websocket.js.map +1 -0
  115. package/dist/server.d.ts +49 -0
  116. package/dist/server.d.ts.map +1 -0
  117. package/dist/server.js +2330 -0
  118. package/dist/server.js.map +1 -0
  119. package/dist/supervisor/AgentSupervisor.d.ts +235 -0
  120. package/dist/supervisor/AgentSupervisor.d.ts.map +1 -0
  121. package/dist/supervisor/AgentSupervisor.js +596 -0
  122. package/dist/supervisor/AgentSupervisor.js.map +1 -0
  123. package/dist/supervisor/ManagedServerRegistry.d.ts +48 -0
  124. package/dist/supervisor/ManagedServerRegistry.d.ts.map +1 -0
  125. package/dist/supervisor/ManagedServerRegistry.js +145 -0
  126. package/dist/supervisor/ManagedServerRegistry.js.map +1 -0
  127. package/dist/supervisor/ProjectTracker.d.ts +188 -0
  128. package/dist/supervisor/ProjectTracker.d.ts.map +1 -0
  129. package/dist/supervisor/ProjectTracker.js +617 -0
  130. package/dist/supervisor/ProjectTracker.js.map +1 -0
  131. package/dist/supervisor/index.d.ts +6 -0
  132. package/dist/supervisor/index.d.ts.map +1 -0
  133. package/dist/supervisor/index.js +6 -0
  134. package/dist/supervisor/index.js.map +1 -0
  135. package/dist/types/index.d.ts +1176 -0
  136. package/dist/types/index.d.ts.map +1 -0
  137. package/dist/types/index.js +391 -0
  138. package/dist/types/index.js.map +1 -0
  139. package/dist/utils/errors.d.ts +86 -0
  140. package/dist/utils/errors.d.ts.map +1 -0
  141. package/dist/utils/errors.js +171 -0
  142. package/dist/utils/errors.js.map +1 -0
  143. package/dist/utils/index.d.ts +5 -0
  144. package/dist/utils/index.d.ts.map +1 -0
  145. package/dist/utils/index.js +5 -0
  146. package/dist/utils/index.js.map +1 -0
  147. package/dist/utils/shell.d.ts +22 -0
  148. package/dist/utils/shell.d.ts.map +1 -0
  149. package/dist/utils/shell.js +29 -0
  150. package/dist/utils/shell.js.map +1 -0
  151. package/package.json +63 -0
@@ -0,0 +1,232 @@
1
+ /**
2
+ * Enterprise Agent Supervisor - Rate Limiter
3
+ *
4
+ * Token bucket rate limiting with multiple scopes and configurations.
5
+ */
6
+ export class RateLimiter {
7
+ configs = new Map();
8
+ buckets = new Map();
9
+ lastCleanup = Date.now();
10
+ cleanupIntervalMs = 5 * 60 * 1000; // Cleanup every 5 minutes
11
+ /**
12
+ * Register a rate limit configuration
13
+ */
14
+ registerLimit(config) {
15
+ this.configs.set(config.id, config);
16
+ }
17
+ /**
18
+ * Register multiple rate limit configurations
19
+ */
20
+ registerLimits(configs) {
21
+ for (const config of configs) {
22
+ this.registerLimit(config);
23
+ }
24
+ }
25
+ /**
26
+ * Remove a rate limit configuration
27
+ */
28
+ removeLimit(configId) {
29
+ return this.configs.delete(configId);
30
+ }
31
+ /**
32
+ * Check if an action should be rate limited
33
+ */
34
+ checkLimit(params) {
35
+ const now = Date.now();
36
+ // Periodically clean up expired buckets to prevent memory leaks
37
+ this.cleanupExpiredBuckets(now);
38
+ for (const [configId, config] of this.configs) {
39
+ if (!config.enabled)
40
+ continue;
41
+ // Check if action category matches (if specified)
42
+ if (config.actionCategories && params.actionCategory) {
43
+ if (!config.actionCategories.includes(params.actionCategory)) {
44
+ continue;
45
+ }
46
+ }
47
+ // Build bucket key based on scope
48
+ const bucketKey = this.buildBucketKey(configId, config.scope, params);
49
+ const bucket = this.getOrCreateBucket(bucketKey, now, config.windowMs);
50
+ // Check if within window
51
+ if (now - bucket.windowStart >= config.windowMs) {
52
+ // Reset window
53
+ bucket.count = 0;
54
+ bucket.windowStart = now;
55
+ bucket.burstCount = 0;
56
+ }
57
+ // Check limits
58
+ if (bucket.count >= config.maxRequests) {
59
+ const resetAt = new Date(bucket.windowStart + config.windowMs);
60
+ return {
61
+ allowed: false,
62
+ limitId: configId,
63
+ state: {
64
+ key: bucketKey,
65
+ count: bucket.count,
66
+ windowStart: bucket.windowStart,
67
+ remaining: 0,
68
+ resetAt: resetAt.toISOString()
69
+ }
70
+ };
71
+ }
72
+ // Check burst limit if configured
73
+ if (config.burstLimit && bucket.burstCount >= config.burstLimit) {
74
+ const resetAt = new Date(bucket.windowStart + config.windowMs);
75
+ return {
76
+ allowed: false,
77
+ limitId: configId,
78
+ state: {
79
+ key: bucketKey,
80
+ count: bucket.count,
81
+ windowStart: bucket.windowStart,
82
+ remaining: 0,
83
+ resetAt: resetAt.toISOString()
84
+ }
85
+ };
86
+ }
87
+ }
88
+ return { allowed: true };
89
+ }
90
+ /**
91
+ * Record a request (consume from bucket)
92
+ */
93
+ recordRequest(params) {
94
+ const now = Date.now();
95
+ for (const [configId, config] of this.configs) {
96
+ if (!config.enabled)
97
+ continue;
98
+ if (config.actionCategories && params.actionCategory) {
99
+ if (!config.actionCategories.includes(params.actionCategory)) {
100
+ continue;
101
+ }
102
+ }
103
+ const bucketKey = this.buildBucketKey(configId, config.scope, params);
104
+ const bucket = this.getOrCreateBucket(bucketKey, now, config.windowMs);
105
+ // Reset if window expired
106
+ if (now - bucket.windowStart >= config.windowMs) {
107
+ bucket.count = 0;
108
+ bucket.windowStart = now;
109
+ bucket.burstCount = 0;
110
+ }
111
+ bucket.count++;
112
+ bucket.burstCount++;
113
+ }
114
+ }
115
+ /**
116
+ * Get current state for a specific limit
117
+ */
118
+ getState(configId, params) {
119
+ const config = this.configs.get(configId);
120
+ if (!config)
121
+ return null;
122
+ const now = Date.now();
123
+ const bucketKey = this.buildBucketKey(configId, config.scope, params);
124
+ const bucket = this.buckets.get(bucketKey);
125
+ if (!bucket) {
126
+ return {
127
+ key: bucketKey,
128
+ count: 0,
129
+ windowStart: now,
130
+ remaining: config.maxRequests,
131
+ resetAt: new Date(now + config.windowMs).toISOString()
132
+ };
133
+ }
134
+ // Check if window has expired
135
+ if (now - bucket.windowStart >= config.windowMs) {
136
+ return {
137
+ key: bucketKey,
138
+ count: 0,
139
+ windowStart: now,
140
+ remaining: config.maxRequests,
141
+ resetAt: new Date(now + config.windowMs).toISOString()
142
+ };
143
+ }
144
+ return {
145
+ key: bucketKey,
146
+ count: bucket.count,
147
+ windowStart: bucket.windowStart,
148
+ remaining: Math.max(0, config.maxRequests - bucket.count),
149
+ resetAt: new Date(bucket.windowStart + config.windowMs).toISOString()
150
+ };
151
+ }
152
+ /**
153
+ * Get all registered configurations
154
+ */
155
+ getConfigs() {
156
+ return Array.from(this.configs.values());
157
+ }
158
+ /**
159
+ * Clear all buckets (useful for testing)
160
+ */
161
+ clearBuckets() {
162
+ this.buckets.clear();
163
+ }
164
+ /**
165
+ * Build a bucket key based on scope
166
+ */
167
+ buildBucketKey(configId, scope, params) {
168
+ switch (scope) {
169
+ case 'global':
170
+ return `${configId}:global`;
171
+ case 'agent':
172
+ return `${configId}:agent:${params.agentId || 'unknown'}`;
173
+ case 'session':
174
+ return `${configId}:session:${params.sessionId || 'unknown'}`;
175
+ case 'user':
176
+ return `${configId}:user:${params.userId || 'unknown'}`;
177
+ case 'action_type':
178
+ return `${configId}:action:${params.actionType || 'unknown'}`;
179
+ default:
180
+ return `${configId}:unknown`;
181
+ }
182
+ }
183
+ /**
184
+ * Get or create a bucket
185
+ */
186
+ getOrCreateBucket(key, now, _windowMs) {
187
+ let bucket = this.buckets.get(key);
188
+ if (!bucket) {
189
+ bucket = {
190
+ count: 0,
191
+ windowStart: now,
192
+ burstCount: 0
193
+ };
194
+ this.buckets.set(key, bucket);
195
+ }
196
+ return bucket;
197
+ }
198
+ /**
199
+ * Clean up expired buckets to prevent memory leaks
200
+ * Removes buckets that are older than their window duration
201
+ */
202
+ cleanupExpiredBuckets(now) {
203
+ // Only cleanup every cleanupIntervalMs to avoid excessive work
204
+ if (now - this.lastCleanup < this.cleanupIntervalMs) {
205
+ return;
206
+ }
207
+ this.lastCleanup = now;
208
+ // Find the maximum window duration across all configs
209
+ let maxWindowMs = 60000; // Default 1 minute
210
+ for (const config of this.configs.values()) {
211
+ if (config.windowMs > maxWindowMs) {
212
+ maxWindowMs = config.windowMs;
213
+ }
214
+ }
215
+ // Remove buckets that are older than the maximum window
216
+ // (bucket is expired if now - windowStart > maxWindowMs)
217
+ const expireThreshold = now - maxWindowMs * 2; // 2x window for safety margin
218
+ let removedCount = 0;
219
+ for (const [key, bucket] of this.buckets.entries()) {
220
+ if (bucket.windowStart < expireThreshold) {
221
+ this.buckets.delete(key);
222
+ removedCount++;
223
+ }
224
+ }
225
+ if (removedCount > 0) {
226
+ console.log(`[RateLimiter] Cleaned up ${removedCount} expired buckets`);
227
+ }
228
+ }
229
+ }
230
+ // Export singleton instance
231
+ export const rateLimiter = new RateLimiter();
232
+ //# sourceMappingURL=RateLimiter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RateLimiter.js","sourceRoot":"","sources":["../../src/engine/RateLimiter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Enterprise Agent Supervisor - Rules Engine Core
3
+ *
4
+ * The heart of the governance system that evaluates actions against business rules.
5
+ */
6
+ import type { AgentAction, BusinessRule, BusinessContext, RuleCondition, EvaluationResult, BusinessRulesResult } from '../types/index.js';
7
+ export declare class RulesEngine {
8
+ private rules;
9
+ private customEvaluators;
10
+ constructor();
11
+ /**
12
+ * Register a business rule
13
+ */
14
+ registerRule(rule: BusinessRule): void;
15
+ /**
16
+ * Register multiple business rules
17
+ */
18
+ registerRules(rules: BusinessRule[]): void;
19
+ /**
20
+ * Unregister a rule by ID
21
+ */
22
+ unregisterRule(ruleId: string): boolean;
23
+ /**
24
+ * Get all registered rules
25
+ */
26
+ getRules(): BusinessRule[];
27
+ /**
28
+ * Get enabled rules sorted by priority (higher priority first)
29
+ */
30
+ getActiveRules(): BusinessRule[];
31
+ /**
32
+ * Register a custom condition evaluator
33
+ */
34
+ registerCustomEvaluator(name: string, evaluator: (context: Record<string, unknown>, condition: RuleCondition) => boolean): void;
35
+ /**
36
+ * Evaluate an agent action against all active rules
37
+ */
38
+ evaluateAction(action: AgentAction, context?: BusinessContext): EvaluationResult;
39
+ /**
40
+ * Apply business rules to a context and return recommendations
41
+ */
42
+ applyBusinessRules(context: BusinessContext): BusinessRulesResult;
43
+ /**
44
+ * Build evaluation context from action and business context
45
+ */
46
+ private buildEvaluationContext;
47
+ /**
48
+ * Evaluate if all/any conditions of a rule match
49
+ */
50
+ private evaluateRuleConditions;
51
+ /**
52
+ * Evaluate a single condition
53
+ */
54
+ private evaluateCondition;
55
+ /**
56
+ * Get nested value from object using dot notation
57
+ */
58
+ private getNestedValue;
59
+ /**
60
+ * Calculate risk level from score
61
+ */
62
+ private calculateRiskLevel;
63
+ /**
64
+ * Get severity level from a rule
65
+ */
66
+ private getRuleSeverity;
67
+ /**
68
+ * Generate recommendation based on rule and action
69
+ */
70
+ private getRecommendation;
71
+ /**
72
+ * Register default custom evaluators
73
+ */
74
+ private registerDefaultEvaluators;
75
+ }
76
+ export declare const rulesEngine: RulesEngine;
77
+ //# sourceMappingURL=RulesEngine.d.ts.map
@@ -0,0 +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"}