@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
@@ -0,0 +1,306 @@
1
+ /**
2
+ * Enterprise Agent Supervisor - Shared Utilities
3
+ *
4
+ * Common utility functions used across the codebase.
5
+ * Extracted from various modules to reduce duplication and ensure consistency.
6
+ *
7
+ * Tasks: #40, #41, #42, #48
8
+ */
9
+ /**
10
+ * Simple string hash function for generating IDs.
11
+ * Uses a fast, non-cryptographic hash algorithm (djb2 variant).
12
+ *
13
+ * @param str - The string to hash
14
+ * @param options - Optional configuration
15
+ * @returns Hexadecimal hash string (default) or base36 string
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * hashString('hello world'); // Returns: 'a3e45bc1'
20
+ * hashString('hello world', { base: 36 }); // Returns: 'x7k2m'
21
+ * hashString('hello world', { length: 16 }); // Returns: '00000000a3e45bc1'
22
+ * ```
23
+ */
24
+ export declare function hashString(str: string, options?: {
25
+ base?: 16 | 36;
26
+ length?: number;
27
+ }): string;
28
+ /**
29
+ * Options for TimeWindow calculations
30
+ */
31
+ export interface TimeWindowOptions {
32
+ /** Duration in milliseconds. Defaults to 24 hours */
33
+ durationMs?: number;
34
+ /** Reference time (defaults to Date.now()) */
35
+ referenceTime?: number;
36
+ }
37
+ /**
38
+ * Result of a time window check
39
+ */
40
+ export interface TimeWindowResult {
41
+ /** Start of the window (ISO timestamp) */
42
+ start: string;
43
+ /** End of the window (ISO timestamp) */
44
+ end: string;
45
+ /** Start timestamp in milliseconds */
46
+ startMs: number;
47
+ /** End timestamp in milliseconds */
48
+ endMs: number;
49
+ /** Whether a given timestamp is within this window */
50
+ contains: (timestamp: string | number | Date) => boolean;
51
+ }
52
+ /**
53
+ * Common time window durations
54
+ */
55
+ export declare const TimeWindows: {
56
+ /** 1 hour in milliseconds */
57
+ readonly HOUR: number;
58
+ /** 24 hours in milliseconds */
59
+ readonly DAY: number;
60
+ /** 7 days in milliseconds */
61
+ readonly WEEK: number;
62
+ /** 30 days in milliseconds */
63
+ readonly MONTH: number;
64
+ };
65
+ /**
66
+ * Create a time window for filtering data.
67
+ *
68
+ * @param options - Time window options
69
+ * @returns TimeWindowResult with start/end times and contains() function
70
+ *
71
+ * @example
72
+ * ```typescript
73
+ * // Last 24 hours
74
+ * const window = createTimeWindow();
75
+ *
76
+ * // Last hour
77
+ * const hourWindow = createTimeWindow({ durationMs: TimeWindows.HOUR });
78
+ *
79
+ * // Check if a timestamp is in the window
80
+ * if (window.contains(event.timestamp)) {
81
+ * // Event is within the time window
82
+ * }
83
+ * ```
84
+ */
85
+ export declare function createTimeWindow(options?: TimeWindowOptions): TimeWindowResult;
86
+ /**
87
+ * Check if a window has expired based on start time and duration.
88
+ * Uses >= comparison for consistency (window expires AT the boundary).
89
+ *
90
+ * @param windowStart - Window start timestamp in milliseconds
91
+ * @param windowMs - Window duration in milliseconds
92
+ * @param now - Current time (defaults to Date.now())
93
+ * @returns true if the window has expired
94
+ *
95
+ * @example
96
+ * ```typescript
97
+ * if (isWindowExpired(bucket.windowStart, config.windowMs)) {
98
+ * // Reset the window
99
+ * bucket.count = 0;
100
+ * bucket.windowStart = Date.now();
101
+ * }
102
+ * ```
103
+ */
104
+ export declare function isWindowExpired(windowStart: number, windowMs: number, now?: number): boolean;
105
+ /**
106
+ * Calculate the reset time for a window.
107
+ *
108
+ * @param windowStart - Window start timestamp in milliseconds
109
+ * @param windowMs - Window duration in milliseconds
110
+ * @returns Date object for when the window resets
111
+ */
112
+ export declare function getWindowResetTime(windowStart: number, windowMs: number): Date;
113
+ /**
114
+ * Options for metric calculation
115
+ */
116
+ export interface MetricCalculationOptions<T> {
117
+ /** Field to extract for aggregation (e.g., 'tokensUsed', 'latencyMs') */
118
+ valueField?: keyof T;
119
+ /** Field containing the timestamp (defaults to 'timestamp') */
120
+ timestampField?: keyof T;
121
+ /** Field to check for errors (defaults to 'outcome') */
122
+ outcomeField?: keyof T;
123
+ /** Value that indicates failure (defaults to 'failure') */
124
+ failureValue?: string;
125
+ /** Include 24h metrics (defaults to true) */
126
+ include24h?: boolean;
127
+ }
128
+ /**
129
+ * Generic metrics summary structure
130
+ */
131
+ export interface MetricsSummary {
132
+ total: number;
133
+ count: number;
134
+ average: number;
135
+ min: number;
136
+ max: number;
137
+ errorCount: number;
138
+ errorRate: number;
139
+ last24h?: {
140
+ total: number;
141
+ count: number;
142
+ errors: number;
143
+ };
144
+ }
145
+ /**
146
+ * Calculate aggregate metrics from an array of data items.
147
+ *
148
+ * @param items - Array of items to analyze
149
+ * @param valueExtractor - Function to extract numeric value from each item
150
+ * @param options - Configuration options
151
+ * @returns Aggregated metrics
152
+ *
153
+ * @example
154
+ * ```typescript
155
+ * const activities = [
156
+ * { tokensUsed: 100, timestamp: '2024-01-01T00:00:00Z', outcome: 'success' },
157
+ * { tokensUsed: 200, timestamp: '2024-01-01T01:00:00Z', outcome: 'failure' },
158
+ * ];
159
+ *
160
+ * const metrics = calculateMetrics(
161
+ * activities,
162
+ * item => item.tokensUsed,
163
+ * {
164
+ * timestampField: 'timestamp',
165
+ * outcomeField: 'outcome',
166
+ * failureValue: 'failure'
167
+ * }
168
+ * );
169
+ * // Returns: { total: 300, count: 2, average: 150, min: 100, max: 200, ... }
170
+ * ```
171
+ */
172
+ export declare function calculateMetrics<T>(items: T[], valueExtractor: (item: T) => number | undefined, options?: MetricCalculationOptions<T>): MetricsSummary;
173
+ /**
174
+ * Calculate grouped metrics (e.g., by category, by type).
175
+ *
176
+ * @param items - Array of items to analyze
177
+ * @param groupExtractor - Function to extract group key from each item
178
+ * @returns Map of group key to count
179
+ *
180
+ * @example
181
+ * ```typescript
182
+ * const events = [
183
+ * { eventType: 'action_evaluated' },
184
+ * { eventType: 'action_approved' },
185
+ * { eventType: 'action_evaluated' },
186
+ * ];
187
+ *
188
+ * const byType = calculateGroupedCounts(events, e => e.eventType);
189
+ * // Returns: { 'action_evaluated': 2, 'action_approved': 1 }
190
+ * ```
191
+ */
192
+ export declare function calculateGroupedCounts<T>(items: T[], groupExtractor: (item: T) => string | undefined): Record<string, number>;
193
+ /**
194
+ * Get top N items from a count record.
195
+ *
196
+ * @param counts - Record of key to count
197
+ * @param limit - Maximum number of items to return
198
+ * @returns Array of { key, count } sorted by count descending
199
+ */
200
+ export declare function getTopCounts(counts: Record<string, number>, limit?: number): Array<{
201
+ key: string;
202
+ count: number;
203
+ }>;
204
+ /**
205
+ * Validation result
206
+ */
207
+ export interface ValidationResult {
208
+ valid: boolean;
209
+ error?: string;
210
+ }
211
+ /**
212
+ * Collection of common input validators.
213
+ *
214
+ * Each validator returns { valid: true } or { valid: false, error: 'message' }
215
+ */
216
+ export declare const validators: {
217
+ /**
218
+ * Validate email format
219
+ *
220
+ * @example
221
+ * ```typescript
222
+ * validators.email('user@example.com'); // { valid: true }
223
+ * validators.email('invalid'); // { valid: false, error: '...' }
224
+ * ```
225
+ */
226
+ email(value: string): ValidationResult;
227
+ /**
228
+ * Validate URL format
229
+ *
230
+ * @example
231
+ * ```typescript
232
+ * validators.url('https://example.com'); // { valid: true }
233
+ * validators.url('not-a-url'); // { valid: false, error: '...' }
234
+ * ```
235
+ */
236
+ url(value: string, options?: {
237
+ requireHttps?: boolean;
238
+ }): ValidationResult;
239
+ /**
240
+ * Validate file path (basic validation, no traversal attacks)
241
+ *
242
+ * @example
243
+ * ```typescript
244
+ * validators.path('/valid/path'); // { valid: true }
245
+ * validators.path('../traversal'); // { valid: false, error: '...' }
246
+ * ```
247
+ */
248
+ path(value: string, options?: {
249
+ allowRelative?: boolean;
250
+ }): ValidationResult;
251
+ /**
252
+ * Validate that a string is non-empty
253
+ */
254
+ nonEmpty(value: string, fieldName?: string): ValidationResult;
255
+ /**
256
+ * Validate string length
257
+ */
258
+ length(value: string, options?: {
259
+ min?: number;
260
+ max?: number;
261
+ fieldName?: string;
262
+ }): ValidationResult;
263
+ /**
264
+ * Validate number within range
265
+ */
266
+ numberRange(value: number, options?: {
267
+ min?: number;
268
+ max?: number;
269
+ fieldName?: string;
270
+ }): ValidationResult;
271
+ /**
272
+ * Validate port number
273
+ */
274
+ port(value: number): ValidationResult;
275
+ /**
276
+ * Validate identifier (alphanumeric with dashes/underscores)
277
+ */
278
+ identifier(value: string, fieldName?: string): ValidationResult;
279
+ /**
280
+ * Validate enum value
281
+ */
282
+ enum<T extends string>(value: string, allowedValues: readonly T[], fieldName?: string): ValidationResult;
283
+ /**
284
+ * Validate ISO date string
285
+ */
286
+ isoDate(value: string): ValidationResult;
287
+ /**
288
+ * Validate GitHub repository format (owner/repo)
289
+ */
290
+ githubRepo(value: string): ValidationResult;
291
+ /**
292
+ * Compose multiple validators (all must pass)
293
+ */
294
+ all(...validations: ValidationResult[]): ValidationResult;
295
+ };
296
+ /**
297
+ * Helper to run validation and throw on failure
298
+ *
299
+ * @example
300
+ * ```typescript
301
+ * assertValid(validators.email(userEmail), 'email');
302
+ * // Throws if invalid: "Validation failed for email: Invalid email format"
303
+ * ```
304
+ */
305
+ export declare function assertValid(result: ValidationResult, context?: string): void;
306
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/utils/shared.ts"],"names":[],"mappings":"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"}