@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.
- package/README.md +28 -0
- package/dist/analyzers/CSSAnalyzer.d.ts +180 -8
- package/dist/analyzers/CSSAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/CSSAnalyzer.js +561 -105
- package/dist/analyzers/CSSAnalyzer.js.map +1 -1
- package/dist/config/dashboard.d.ts +55 -0
- package/dist/config/dashboard.d.ts.map +1 -0
- package/dist/config/dashboard.js +103 -0
- package/dist/config/dashboard.js.map +1 -0
- package/dist/config/index.d.ts +7 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +7 -0
- package/dist/config/index.js.map +1 -0
- package/dist/dashboard/httpDashboard.d.ts +100 -0
- package/dist/dashboard/httpDashboard.d.ts.map +1 -0
- package/dist/dashboard/httpDashboard.js +1276 -0
- package/dist/dashboard/httpDashboard.js.map +1 -0
- package/dist/dashboard/index.d.ts +6 -0
- package/dist/dashboard/index.d.ts.map +1 -0
- package/dist/dashboard/index.js +7 -0
- package/dist/dashboard/index.js.map +1 -0
- package/dist/engine/AuditLogger.d.ts +370 -2
- package/dist/engine/AuditLogger.d.ts.map +1 -1
- package/dist/engine/AuditLogger.js +1064 -24
- package/dist/engine/AuditLogger.js.map +1 -1
- package/dist/engine/GitHubClient.d.ts +183 -0
- package/dist/engine/GitHubClient.d.ts.map +1 -0
- package/dist/engine/GitHubClient.js +411 -0
- package/dist/engine/GitHubClient.js.map +1 -0
- package/dist/engine/RateLimiter.d.ts +5 -3
- package/dist/engine/RateLimiter.d.ts.map +1 -1
- package/dist/engine/RateLimiter.js +49 -72
- package/dist/engine/RateLimiter.js.map +1 -1
- package/dist/engine/RuleDependencyAnalyzer.d.ts +73 -0
- package/dist/engine/RuleDependencyAnalyzer.d.ts.map +1 -0
- package/dist/engine/RuleDependencyAnalyzer.js +475 -0
- package/dist/engine/RuleDependencyAnalyzer.js.map +1 -0
- package/dist/engine/RulesEngine.d.ts +102 -3
- package/dist/engine/RulesEngine.d.ts.map +1 -1
- package/dist/engine/RulesEngine.js +326 -21
- package/dist/engine/RulesEngine.js.map +1 -1
- package/dist/engine/TaskManager.d.ts +10 -14
- package/dist/engine/TaskManager.d.ts.map +1 -1
- package/dist/engine/TaskManager.js +169 -197
- package/dist/engine/TaskManager.js.map +1 -1
- package/dist/engine/index.d.ts +3 -0
- package/dist/engine/index.d.ts.map +1 -1
- package/dist/engine/index.js +5 -0
- package/dist/engine/index.js.map +1 -1
- package/dist/rules/azure.d.ts.map +1 -1
- package/dist/rules/azure.js +12 -14
- package/dist/rules/azure.js.map +1 -1
- package/dist/rules/compliance.d.ts.map +1 -1
- package/dist/rules/compliance.js +23 -41
- package/dist/rules/compliance.js.map +1 -1
- package/dist/rules/condition-optimizer.d.ts +151 -0
- package/dist/rules/condition-optimizer.d.ts.map +1 -0
- package/dist/rules/condition-optimizer.js +479 -0
- package/dist/rules/condition-optimizer.js.map +1 -0
- package/dist/rules/css.d.ts.map +1 -1
- package/dist/rules/css.js +538 -0
- package/dist/rules/css.js.map +1 -1
- package/dist/rules/field-standards.d.ts +1172 -0
- package/dist/rules/field-standards.d.ts.map +1 -0
- package/dist/rules/field-standards.js +908 -0
- package/dist/rules/field-standards.js.map +1 -0
- package/dist/rules/flask.d.ts.map +1 -1
- package/dist/rules/flask.js +18 -31
- package/dist/rules/flask.js.map +1 -1
- package/dist/rules/index.d.ts +220 -0
- package/dist/rules/index.d.ts.map +1 -1
- package/dist/rules/index.js +155 -0
- package/dist/rules/index.js.map +1 -1
- package/dist/rules/ml-ai.d.ts.map +1 -1
- package/dist/rules/ml-ai.js +11 -13
- package/dist/rules/ml-ai.js.map +1 -1
- package/dist/rules/patterns.d.ts +568 -0
- package/dist/rules/patterns.d.ts.map +1 -0
- package/dist/rules/patterns.js +1359 -0
- package/dist/rules/patterns.js.map +1 -0
- package/dist/rules/security.d.ts.map +1 -1
- package/dist/rules/security.js +580 -19
- package/dist/rules/security.js.map +1 -1
- package/dist/rules/shared-patterns.d.ts +268 -0
- package/dist/rules/shared-patterns.d.ts.map +1 -0
- package/dist/rules/shared-patterns.js +556 -0
- package/dist/rules/shared-patterns.js.map +1 -0
- package/dist/rules/storage.d.ts +8 -2
- package/dist/rules/storage.d.ts.map +1 -1
- package/dist/rules/storage.js +541 -3
- package/dist/rules/storage.js.map +1 -1
- package/dist/rules/stripe.d.ts.map +1 -1
- package/dist/rules/stripe.js +19 -26
- package/dist/rules/stripe.js.map +1 -1
- package/dist/rules/websocket.d.ts.map +1 -1
- package/dist/rules/websocket.js +32 -40
- package/dist/rules/websocket.js.map +1 -1
- package/dist/supervisor/AgentSupervisor.d.ts +52 -0
- package/dist/supervisor/AgentSupervisor.d.ts.map +1 -1
- package/dist/supervisor/AgentSupervisor.js +120 -1
- package/dist/supervisor/AgentSupervisor.js.map +1 -1
- package/dist/supervisor/ManagedServerRegistry.d.ts +139 -2
- package/dist/supervisor/ManagedServerRegistry.d.ts.map +1 -1
- package/dist/supervisor/ManagedServerRegistry.js +590 -6
- package/dist/supervisor/ManagedServerRegistry.js.map +1 -1
- package/dist/supervisor/ProjectTracker.d.ts +2 -1
- package/dist/supervisor/ProjectTracker.d.ts.map +1 -1
- package/dist/supervisor/ProjectTracker.js +5 -9
- package/dist/supervisor/ProjectTracker.js.map +1 -1
- package/dist/testing/index.d.ts +11 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +12 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/rule-tester.d.ts +217 -0
- package/dist/testing/rule-tester.d.ts.map +1 -0
- package/dist/testing/rule-tester.examples.d.ts +57 -0
- package/dist/testing/rule-tester.examples.d.ts.map +1 -0
- package/dist/testing/rule-tester.examples.js +375 -0
- package/dist/testing/rule-tester.examples.js.map +1 -0
- package/dist/testing/rule-tester.js +381 -0
- package/dist/testing/rule-tester.js.map +1 -0
- package/dist/testing/rule-validator.d.ts +141 -0
- package/dist/testing/rule-validator.d.ts.map +1 -0
- package/dist/testing/rule-validator.js +640 -0
- package/dist/testing/rule-validator.js.map +1 -0
- package/dist/types/index.d.ts +265 -4
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +57 -2
- package/dist/types/index.js.map +1 -1
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/rate-limiting.d.ts +268 -0
- package/dist/utils/rate-limiting.d.ts.map +1 -0
- package/dist/utils/rate-limiting.js +403 -0
- package/dist/utils/rate-limiting.js.map +1 -0
- package/dist/utils/shared.d.ts +306 -0
- package/dist/utils/shared.d.ts.map +1 -0
- package/dist/utils/shared.js +464 -0
- package/dist/utils/shared.js.map +1 -0
- 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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"}
|