@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,578 @@
1
+ /**
2
+ * Enterprise Agent Supervisor - CSS Analyzer
3
+ *
4
+ * Analyzes CSS rules for optimization, deduplication, and best practices.
5
+ */
6
+ import { suggestToken, getRecommendedTokens } from '../design-system/index.js';
7
+ /**
8
+ * Common CSS property patterns that should be variables
9
+ */
10
+ const VARIABLE_CANDIDATES = [
11
+ { pattern: /^#[0-9a-fA-F]{3,8}$/, type: 'color', varPrefix: '--color-' },
12
+ { pattern: /^rgb\(|^rgba\(|^hsl\(|^hsla\(/, type: 'color', varPrefix: '--color-' },
13
+ { pattern: /^\d+px$/, type: 'spacing', varPrefix: '--spacing-', minValue: 8 },
14
+ { pattern: /^\d+rem$/, type: 'spacing', varPrefix: '--spacing-' },
15
+ { pattern: /^(\d+(\.\d+)?)(px|rem|em)$/, type: 'font-size', varPrefix: '--font-size-' },
16
+ { pattern: /^\d{3}$/, type: 'font-weight', varPrefix: '--font-weight-' },
17
+ { pattern: /^(\d+(\.\d+)?)(s|ms)$/, type: 'duration', varPrefix: '--duration-' },
18
+ { pattern: /^cubic-bezier\(/, type: 'easing', varPrefix: '--easing-' }
19
+ ];
20
+ /**
21
+ * Properties that commonly indicate global/reusable styles
22
+ */
23
+ const GLOBAL_PROPERTY_INDICATORS = [
24
+ 'font-family',
25
+ 'color',
26
+ 'background-color',
27
+ 'border-radius',
28
+ 'box-shadow',
29
+ 'transition',
30
+ 'animation'
31
+ ];
32
+ export class CSSAnalyzer {
33
+ knownUtilityClasses = new Set();
34
+ constructor() {
35
+ this.initializeKnownPatterns();
36
+ }
37
+ /**
38
+ * Main analysis entry point
39
+ */
40
+ analyze(context) {
41
+ const ruleId = this.generateRuleId(context.newRule);
42
+ const suggestions = [];
43
+ const duplicates = [];
44
+ const removableCandidates = [];
45
+ let riskScore = 0;
46
+ // 1. Check for duplicates/similar rules
47
+ const duplicateCheck = this.findDuplicates(context.newRule, context.existingRules || []);
48
+ duplicates.push(...duplicateCheck.duplicates);
49
+ suggestions.push(...duplicateCheck.suggestions);
50
+ riskScore += duplicateCheck.duplicates.length * 10;
51
+ // 2. Check if should be externalized
52
+ const externalizeCheck = this.checkExternalization(context);
53
+ suggestions.push(...externalizeCheck.suggestions);
54
+ if (externalizeCheck.shouldExternalize)
55
+ riskScore += 15;
56
+ // 3. Check if should be global
57
+ const globalCheck = this.checkGlobalCandidate(context);
58
+ suggestions.push(...globalCheck.suggestions);
59
+ if (globalCheck.shouldMakeGlobal)
60
+ riskScore += 10;
61
+ // 4. Check for variable candidates
62
+ const variableCheck = this.checkVariableCandidates(context.newRule);
63
+ suggestions.push(...variableCheck.suggestions);
64
+ riskScore += variableCheck.suggestions.length * 5;
65
+ // 5. Check for utility class opportunities
66
+ if (context.hasStyleSystem) {
67
+ const utilityCheck = this.checkUtilityOpportunities(context);
68
+ suggestions.push(...utilityCheck.suggestions);
69
+ }
70
+ // 6. Check specificity issues
71
+ const specificityCheck = this.checkSpecificity(context.newRule);
72
+ suggestions.push(...specificityCheck.suggestions);
73
+ riskScore += specificityCheck.riskContribution;
74
+ // 7. Check naming conventions
75
+ const namingCheck = this.checkNamingConvention(context.newRule, context.framework);
76
+ suggestions.push(...namingCheck.suggestions);
77
+ // 8. Find removable candidates
78
+ if (context.existingRules) {
79
+ removableCandidates.push(...this.findRemovableCandidates(context.newRule, context.existingRules));
80
+ }
81
+ // Generate summary
82
+ const summary = this.generateSummary(context.newRule, suggestions, duplicates, externalizeCheck.shouldExternalize, globalCheck.shouldMakeGlobal);
83
+ return {
84
+ ruleId,
85
+ newRule: context.newRule,
86
+ shouldExternalize: externalizeCheck.shouldExternalize,
87
+ shouldMakeGlobal: globalCheck.shouldMakeGlobal,
88
+ duplicates,
89
+ suggestions: this.prioritizeSuggestions(suggestions),
90
+ removableCandidates,
91
+ riskScore: Math.min(100, riskScore),
92
+ summary
93
+ };
94
+ }
95
+ /**
96
+ * Find duplicate or similar CSS rules
97
+ */
98
+ findDuplicates(newRule, existingRules) {
99
+ const duplicates = [];
100
+ const suggestions = [];
101
+ for (const existing of existingRules) {
102
+ // Exact property match
103
+ const similarity = this.calculateSimilarity(newRule.properties, existing.properties);
104
+ if (similarity === 1) {
105
+ duplicates.push(existing);
106
+ suggestions.push({
107
+ type: 'use_existing',
108
+ severity: 'error',
109
+ message: `Identical CSS properties already exist in "${existing.selector}"`,
110
+ details: `Found at ${existing.source}${existing.file ? `: ${existing.file}` : ''}${existing.line ? `:${existing.line}` : ''}`,
111
+ existingRule: existing,
112
+ suggestedAction: `Use existing class "${existing.selector}" instead of creating new rule`,
113
+ codeExample: `class="${existing.selector.replace('.', '')}"`
114
+ });
115
+ }
116
+ else if (similarity >= 0.7) {
117
+ suggestions.push({
118
+ type: 'consolidate',
119
+ severity: 'warning',
120
+ message: `Similar CSS properties (${Math.round(similarity * 100)}% match) found in "${existing.selector}"`,
121
+ details: 'Consider consolidating these rules to reduce CSS bundle size',
122
+ existingRule: existing,
123
+ suggestedAction: 'Extend the existing rule or create a shared base class'
124
+ });
125
+ }
126
+ // Check for same selector different properties
127
+ if (existing.selector === newRule.selector && similarity < 1) {
128
+ suggestions.push({
129
+ type: 'consolidate',
130
+ severity: 'warning',
131
+ message: `Selector "${newRule.selector}" already exists with different properties`,
132
+ details: 'Multiple rules with same selector can cause specificity conflicts',
133
+ existingRule: existing,
134
+ suggestedAction: 'Merge properties into single rule or use more specific selectors'
135
+ });
136
+ }
137
+ }
138
+ return { duplicates, suggestions };
139
+ }
140
+ /**
141
+ * Check if CSS should be externalized
142
+ */
143
+ checkExternalization(context) {
144
+ const suggestions = [];
145
+ let shouldExternalize = false;
146
+ // Inline styles should almost always be externalized
147
+ if (context.newRule.source === 'inline') {
148
+ shouldExternalize = true;
149
+ suggestions.push({
150
+ type: 'externalize',
151
+ severity: 'warning',
152
+ message: 'Inline styles should be moved to external stylesheet',
153
+ details: 'Inline styles hurt cacheability, increase HTML size, and make maintenance difficult',
154
+ suggestedAction: 'Create a class in your stylesheet and apply it to the element',
155
+ codeExample: this.generateExternalizeExample(context.newRule, context.componentName)
156
+ });
157
+ }
158
+ // Style tags with many rules should be external
159
+ if (context.newRule.source === 'style_tag') {
160
+ const propertyCount = Object.keys(context.newRule.properties).length;
161
+ if (propertyCount > 5) {
162
+ shouldExternalize = true;
163
+ suggestions.push({
164
+ type: 'externalize',
165
+ severity: 'info',
166
+ message: 'Complex style rules (>5 properties) benefit from external stylesheets',
167
+ details: 'External stylesheets enable better caching, minification, and tooling support',
168
+ suggestedAction: `Move to ${context.globalStylesFile || 'styles.css'}`
169
+ });
170
+ }
171
+ // Reusable patterns should be external
172
+ if (this.isReusablePattern(context.newRule)) {
173
+ shouldExternalize = true;
174
+ suggestions.push({
175
+ type: 'externalize',
176
+ severity: 'suggestion',
177
+ message: 'This appears to be a reusable pattern',
178
+ details: 'Reusable CSS patterns should be in external files for consistency',
179
+ suggestedAction: 'Move to shared stylesheet or component library'
180
+ });
181
+ }
182
+ }
183
+ return { shouldExternalize, suggestions };
184
+ }
185
+ /**
186
+ * Check if CSS should be made global
187
+ */
188
+ checkGlobalCandidate(context) {
189
+ const suggestions = [];
190
+ let shouldMakeGlobal = false;
191
+ const properties = Object.keys(context.newRule.properties);
192
+ // Check for global property indicators
193
+ const globalIndicators = properties.filter(p => GLOBAL_PROPERTY_INDICATORS.includes(p));
194
+ if (globalIndicators.length >= 2) {
195
+ shouldMakeGlobal = true;
196
+ suggestions.push({
197
+ type: 'make_global',
198
+ severity: 'suggestion',
199
+ message: `Rule contains commonly global properties: ${globalIndicators.join(', ')}`,
200
+ details: 'These properties often indicate design system tokens that should be global',
201
+ suggestedAction: 'Consider adding to global styles or design system'
202
+ });
203
+ }
204
+ // Typography rules should typically be global
205
+ if (this.isTypographyRule(context.newRule)) {
206
+ shouldMakeGlobal = true;
207
+ suggestions.push({
208
+ type: 'make_global',
209
+ severity: 'suggestion',
210
+ message: 'Typography styles should be defined globally for consistency',
211
+ details: 'Consistent typography improves design cohesion and accessibility',
212
+ suggestedAction: 'Add to typography section in global styles'
213
+ });
214
+ }
215
+ // Button-like patterns should be global
216
+ if (this.isButtonPattern(context.newRule)) {
217
+ shouldMakeGlobal = true;
218
+ suggestions.push({
219
+ type: 'make_global',
220
+ severity: 'suggestion',
221
+ message: 'Button/interactive styles should be global components',
222
+ details: 'Consistent interactive elements improve UX and accessibility',
223
+ suggestedAction: 'Create a reusable button component/class'
224
+ });
225
+ }
226
+ return { shouldMakeGlobal, suggestions };
227
+ }
228
+ /**
229
+ * Check for CSS variable candidates using design system tokens
230
+ */
231
+ checkVariableCandidates(rule) {
232
+ const suggestions = [];
233
+ for (const [property, value] of Object.entries(rule.properties)) {
234
+ // First, try to find an exact or close match from the design system
235
+ const tokenSuggestion = suggestToken(value, property);
236
+ if (tokenSuggestion && tokenSuggestion.confidence >= 0.7) {
237
+ const { token, confidence } = tokenSuggestion;
238
+ const confidencePercent = Math.round(confidence * 100);
239
+ suggestions.push({
240
+ type: 'use_variable',
241
+ severity: confidence >= 0.95 ? 'warning' : 'info',
242
+ message: `${property}: ${value} should use design token var(${token.name})`,
243
+ details: confidence >= 0.95
244
+ ? `Exact match found: "${token.description}" - Use design system token for consistency`
245
+ : `Close match (${confidencePercent}%): "${token.description}" - Consider using design system token`,
246
+ suggestedAction: `Replace with var(${token.name})`,
247
+ codeExample: `${property}: var(${token.name}); /* ${token.description} */`
248
+ });
249
+ continue;
250
+ }
251
+ // Fall back to generic variable suggestions for unmatched values
252
+ for (const candidate of VARIABLE_CANDIDATES) {
253
+ if (candidate.pattern.test(value)) {
254
+ // Skip small values for spacing
255
+ if (candidate.type === 'spacing' && candidate.minValue) {
256
+ const numValue = parseInt(value);
257
+ if (numValue < candidate.minValue)
258
+ continue;
259
+ }
260
+ // Map candidate type to token category
261
+ const tokenCategory = this.mapTypeToTokenCategory(candidate.type);
262
+ const recommendedTokens = tokenCategory ? getRecommendedTokens(tokenCategory) : [];
263
+ const tokenList = recommendedTokens.slice(0, 3).map(t => t.name).join(', ');
264
+ suggestions.push({
265
+ type: 'use_variable',
266
+ severity: 'info',
267
+ message: `${property}: ${value} should use a CSS variable`,
268
+ details: recommendedTokens.length > 0
269
+ ? `Available ${candidate.type} tokens: ${tokenList}`
270
+ : `${candidate.type} values should be defined as CSS custom properties for consistency`,
271
+ suggestedAction: recommendedTokens.length > 0
272
+ ? `Consider design tokens: ${tokenList}`
273
+ : `Replace with var(${candidate.varPrefix}xxx)`,
274
+ codeExample: recommendedTokens.length > 0
275
+ ? `${property}: var(${recommendedTokens[0].name}); /* ${recommendedTokens[0].description} */`
276
+ : `${property}: var(${candidate.varPrefix}primary);`
277
+ });
278
+ break;
279
+ }
280
+ }
281
+ }
282
+ return { suggestions };
283
+ }
284
+ /**
285
+ * Check for utility class opportunities
286
+ */
287
+ checkUtilityOpportunities(context) {
288
+ const suggestions = [];
289
+ const properties = context.newRule.properties;
290
+ // Common utility mappings
291
+ const utilityMappings = {
292
+ 'display': (v) => v === 'flex' ? 'flex' : v === 'grid' ? 'grid' : v === 'none' ? 'hidden' : null,
293
+ 'flex-direction': (v) => v === 'column' ? 'flex-col' : v === 'row' ? 'flex-row' : null,
294
+ 'justify-content': (v) => `justify-${v.replace('flex-', '').replace('space-', '')}`,
295
+ 'align-items': (v) => `items-${v.replace('flex-', '')}`,
296
+ 'text-align': (v) => `text-${v}`,
297
+ 'font-weight': (v) => `font-${this.getFontWeightName(v)}`,
298
+ 'position': (v) => v,
299
+ 'overflow': (v) => `overflow-${v}`,
300
+ 'cursor': (v) => `cursor-${v}`
301
+ };
302
+ for (const [property, value] of Object.entries(properties)) {
303
+ if (utilityMappings[property]) {
304
+ const utilityClass = utilityMappings[property](value);
305
+ if (utilityClass) {
306
+ suggestions.push({
307
+ type: 'use_utility',
308
+ severity: 'suggestion',
309
+ message: `"${property}: ${value}" can be replaced with utility class`,
310
+ details: `Using ${context.styleSystemName || 'utility'} classes reduces custom CSS`,
311
+ suggestedAction: `Use class="${utilityClass}" instead`,
312
+ codeExample: `<div class="${utilityClass}">...</div>`
313
+ });
314
+ }
315
+ }
316
+ }
317
+ return { suggestions };
318
+ }
319
+ /**
320
+ * Check CSS specificity issues
321
+ */
322
+ checkSpecificity(rule) {
323
+ const suggestions = [];
324
+ let riskContribution = 0;
325
+ const specificity = this.calculateSpecificity(rule.selector);
326
+ // ID selectors
327
+ if (specificity.ids > 0) {
328
+ suggestions.push({
329
+ type: 'specificity_warning',
330
+ severity: 'warning',
331
+ message: 'Avoid ID selectors in CSS',
332
+ details: 'ID selectors have high specificity making overrides difficult',
333
+ suggestedAction: 'Use class selectors instead of IDs'
334
+ });
335
+ riskContribution += 15;
336
+ }
337
+ // Deeply nested selectors
338
+ if (specificity.depth > 3) {
339
+ suggestions.push({
340
+ type: 'specificity_warning',
341
+ severity: 'warning',
342
+ message: `Deep selector nesting (${specificity.depth} levels)`,
343
+ details: 'Deeply nested selectors are brittle and hard to override',
344
+ suggestedAction: 'Use BEM or flat class naming instead'
345
+ });
346
+ riskContribution += 10;
347
+ }
348
+ // !important
349
+ const hasImportant = Object.values(rule.properties).some(v => v.includes('!important'));
350
+ if (hasImportant) {
351
+ suggestions.push({
352
+ type: 'specificity_warning',
353
+ severity: 'error',
354
+ message: 'Avoid !important declarations',
355
+ details: '!important creates specificity problems and indicates architecture issues',
356
+ suggestedAction: 'Refactor CSS to avoid needing !important'
357
+ });
358
+ riskContribution += 25;
359
+ }
360
+ return { suggestions, riskContribution };
361
+ }
362
+ /**
363
+ * Check naming convention
364
+ */
365
+ checkNamingConvention(rule, framework) {
366
+ const suggestions = [];
367
+ const selector = rule.selector;
368
+ // Check for meaningful names
369
+ if (/^\.[a-z]$/.test(selector) || /^\.(div|span|container)\d*$/.test(selector)) {
370
+ suggestions.push({
371
+ type: 'naming_convention',
372
+ severity: 'warning',
373
+ message: 'Use descriptive class names',
374
+ details: 'Generic names like "div1" or single letters are hard to understand',
375
+ suggestedAction: 'Use semantic names that describe purpose (e.g., .card-header)'
376
+ });
377
+ }
378
+ // BEM recommendation for complex selectors
379
+ if (selector.includes(' ') && !selector.includes('__') && !selector.includes('--')) {
380
+ suggestions.push({
381
+ type: 'naming_convention',
382
+ severity: 'info',
383
+ message: 'Consider using BEM naming convention',
384
+ details: 'BEM (Block__Element--Modifier) creates clear relationships',
385
+ suggestedAction: 'Rename using BEM: .block__element--modifier',
386
+ codeExample: this.suggestBEMName(selector)
387
+ });
388
+ }
389
+ // Framework-specific conventions
390
+ if (framework === 'react' && selector.includes('_')) {
391
+ suggestions.push({
392
+ type: 'naming_convention',
393
+ severity: 'info',
394
+ message: 'React typically uses camelCase for CSS Modules',
395
+ details: 'CSS Modules work better with camelCase class names',
396
+ suggestedAction: 'Use camelCase: .cardHeader instead of .card_header'
397
+ });
398
+ }
399
+ return { suggestions };
400
+ }
401
+ /**
402
+ * Find CSS rules that can be safely removed
403
+ */
404
+ findRemovableCandidates(newRule, existingRules) {
405
+ const removable = [];
406
+ for (const existing of existingRules) {
407
+ // If new rule completely overrides existing
408
+ if (this.completelyOverrides(newRule, existing)) {
409
+ removable.push(existing);
410
+ }
411
+ // Dead selectors (would need DOM analysis in real implementation)
412
+ if (this.isLikelyUnused(existing)) {
413
+ removable.push(existing);
414
+ }
415
+ }
416
+ return removable;
417
+ }
418
+ // ============================================================================
419
+ // HELPER METHODS
420
+ // ============================================================================
421
+ generateRuleId(rule) {
422
+ const hash = this.simpleHash(rule.selector + JSON.stringify(rule.properties));
423
+ return `css-${hash}`;
424
+ }
425
+ simpleHash(str) {
426
+ let hash = 0;
427
+ for (let i = 0; i < str.length; i++) {
428
+ const char = str.charCodeAt(i);
429
+ hash = ((hash << 5) - hash) + char;
430
+ hash = hash & hash;
431
+ }
432
+ return Math.abs(hash).toString(16).substring(0, 8);
433
+ }
434
+ calculateSimilarity(props1, props2) {
435
+ const keys1 = Object.keys(props1);
436
+ const keys2 = Object.keys(props2);
437
+ const allKeys = new Set([...keys1, ...keys2]);
438
+ if (allKeys.size === 0)
439
+ return 0;
440
+ let matches = 0;
441
+ for (const key of allKeys) {
442
+ if (props1[key] === props2[key]) {
443
+ matches++;
444
+ }
445
+ }
446
+ return matches / allKeys.size;
447
+ }
448
+ calculateSpecificity(selector) {
449
+ const ids = (selector.match(/#/g) || []).length;
450
+ const classes = (selector.match(/\./g) || []).length;
451
+ const elements = (selector.match(/^[a-z]+|[\s>+~][a-z]+/gi) || []).length;
452
+ const depth = selector.split(/[\s>+~]/).length;
453
+ return { ids, classes, elements, depth };
454
+ }
455
+ isReusablePattern(rule) {
456
+ const props = Object.keys(rule.properties);
457
+ // Button patterns
458
+ if (props.includes('padding') && props.includes('border-radius') &&
459
+ (props.includes('background') || props.includes('background-color'))) {
460
+ return true;
461
+ }
462
+ // Card patterns
463
+ if (props.includes('box-shadow') && props.includes('border-radius') &&
464
+ props.includes('padding')) {
465
+ return true;
466
+ }
467
+ return false;
468
+ }
469
+ isTypographyRule(rule) {
470
+ const typographyProps = ['font-family', 'font-size', 'font-weight', 'line-height', 'letter-spacing'];
471
+ const props = Object.keys(rule.properties);
472
+ const typographyCount = props.filter(p => typographyProps.includes(p)).length;
473
+ return typographyCount >= 2;
474
+ }
475
+ isButtonPattern(rule) {
476
+ const props = Object.keys(rule.properties);
477
+ const buttonIndicators = ['cursor', 'background', 'border', 'padding', 'border-radius'];
478
+ const matchCount = props.filter(p => buttonIndicators.some(b => p.includes(b))).length;
479
+ return matchCount >= 3 && rule.properties['cursor'] === 'pointer';
480
+ }
481
+ generateExternalizeExample(rule, componentName) {
482
+ const className = componentName
483
+ ? `${componentName.toLowerCase()}-style`
484
+ : 'custom-class';
485
+ const cssProps = Object.entries(rule.properties)
486
+ .map(([k, v]) => ` ${k}: ${v};`)
487
+ .join('\n');
488
+ return `.${className} {\n${cssProps}\n}`;
489
+ }
490
+ getFontWeightName(value) {
491
+ const weights = {
492
+ '100': 'thin', '200': 'extralight', '300': 'light',
493
+ '400': 'normal', '500': 'medium', '600': 'semibold',
494
+ '700': 'bold', '800': 'extrabold', '900': 'black'
495
+ };
496
+ return weights[value] || value;
497
+ }
498
+ suggestBEMName(selector) {
499
+ const parts = selector.trim().split(/\s+/);
500
+ if (parts.length >= 2) {
501
+ const block = parts[0].replace('.', '');
502
+ const element = parts[parts.length - 1].replace('.', '');
503
+ return `.${block}__${element}`;
504
+ }
505
+ return selector;
506
+ }
507
+ completelyOverrides(newRule, existing) {
508
+ if (newRule.selector !== existing.selector)
509
+ return false;
510
+ const existingProps = Object.keys(existing.properties);
511
+ const newProps = Object.keys(newRule.properties);
512
+ return existingProps.every(prop => newProps.includes(prop));
513
+ }
514
+ isLikelyUnused(rule) {
515
+ // Heuristics for likely unused rules
516
+ const selector = rule.selector;
517
+ // Very specific selectors that might be stale
518
+ if (selector.includes('[data-v-') || selector.includes('[_ngcontent-')) {
519
+ return true; // Likely framework-generated and orphaned
520
+ }
521
+ return false;
522
+ }
523
+ prioritizeSuggestions(suggestions) {
524
+ const severityOrder = { error: 0, warning: 1, info: 2, suggestion: 3 };
525
+ return suggestions.sort((a, b) => severityOrder[a.severity] - severityOrder[b.severity]);
526
+ }
527
+ generateSummary(_rule, suggestions, duplicates, shouldExternalize, shouldMakeGlobal) {
528
+ const parts = [];
529
+ if (duplicates.length > 0) {
530
+ parts.push(`Found ${duplicates.length} duplicate rule(s)`);
531
+ }
532
+ if (shouldExternalize) {
533
+ parts.push('Should be moved to external stylesheet');
534
+ }
535
+ if (shouldMakeGlobal) {
536
+ parts.push('Consider making global');
537
+ }
538
+ const errors = suggestions.filter(s => s.severity === 'error').length;
539
+ const warnings = suggestions.filter(s => s.severity === 'warning').length;
540
+ if (errors > 0) {
541
+ parts.push(`${errors} error(s)`);
542
+ }
543
+ if (warnings > 0) {
544
+ parts.push(`${warnings} warning(s)`);
545
+ }
546
+ if (parts.length === 0) {
547
+ return 'CSS rule looks good';
548
+ }
549
+ return parts.join('. ') + '.';
550
+ }
551
+ initializeKnownPatterns() {
552
+ // Add common utility classes
553
+ const utilities = [
554
+ 'flex', 'grid', 'hidden', 'block', 'inline', 'inline-block',
555
+ 'relative', 'absolute', 'fixed', 'sticky',
556
+ 'text-center', 'text-left', 'text-right',
557
+ 'font-bold', 'font-normal', 'font-medium'
558
+ ];
559
+ utilities.forEach(u => this.knownUtilityClasses.add(u));
560
+ }
561
+ /**
562
+ * Map VARIABLE_CANDIDATES types to design token categories
563
+ */
564
+ mapTypeToTokenCategory(candidateType) {
565
+ const mapping = {
566
+ 'color': 'color',
567
+ 'spacing': 'spacing',
568
+ 'font-size': 'font-size',
569
+ 'font-weight': 'color', // No direct match in token categories
570
+ 'duration': 'transition',
571
+ 'easing': 'transition'
572
+ };
573
+ return mapping[candidateType] || null;
574
+ }
575
+ }
576
+ // Export singleton
577
+ export const cssAnalyzer = new CSSAnalyzer();
578
+ //# sourceMappingURL=CSSAnalyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CSSAnalyzer.js","sourceRoot":"","sources":["../../src/analyzers/CSSAnalyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Analyzers module exports
3
+ */
4
+ export { CSSAnalyzer, cssAnalyzer, type CSSRule, type CSSAnalysisContext, type CSSSuggestion, type CSSAnalysisResult } from './CSSAnalyzer.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/analyzers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,WAAW,EACX,WAAW,EACX,KAAK,OAAO,EACZ,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACvB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Analyzers module exports
3
+ */
4
+ export { CSSAnalyzer, cssAnalyzer } from './CSSAnalyzer.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/analyzers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,WAAW,EACX,WAAW,EAKZ,MAAM,kBAAkB,CAAC"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Enterprise Agent Supervisor - CLI Entry Point
4
+ *
5
+ * Provides command-line interface for the agent governance MCP server.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;GAIG"}