@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.
- package/LICENSE +21 -0
- package/README.md +446 -0
- package/dist/analyzers/ArchitectureDetector.d.ts +44 -0
- package/dist/analyzers/ArchitectureDetector.d.ts.map +1 -0
- package/dist/analyzers/ArchitectureDetector.js +218 -0
- package/dist/analyzers/ArchitectureDetector.js.map +1 -0
- package/dist/analyzers/CSSAnalyzer.d.ts +104 -0
- package/dist/analyzers/CSSAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/CSSAnalyzer.js +578 -0
- package/dist/analyzers/CSSAnalyzer.js.map +1 -0
- package/dist/analyzers/index.d.ts +5 -0
- package/dist/analyzers/index.d.ts.map +1 -0
- package/dist/analyzers/index.js +5 -0
- package/dist/analyzers/index.js.map +1 -0
- package/dist/cli.d.ts +8 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +174 -0
- package/dist/cli.js.map +1 -0
- package/dist/design-system/index.d.ts +6 -0
- package/dist/design-system/index.d.ts.map +1 -0
- package/dist/design-system/index.js +6 -0
- package/dist/design-system/index.js.map +1 -0
- package/dist/design-system/tokens.d.ts +106 -0
- package/dist/design-system/tokens.d.ts.map +1 -0
- package/dist/design-system/tokens.js +554 -0
- package/dist/design-system/tokens.js.map +1 -0
- package/dist/engine/AppMonitor.d.ts +162 -0
- package/dist/engine/AppMonitor.d.ts.map +1 -0
- package/dist/engine/AppMonitor.js +754 -0
- package/dist/engine/AppMonitor.js.map +1 -0
- package/dist/engine/AuditLogger.d.ts +138 -0
- package/dist/engine/AuditLogger.d.ts.map +1 -0
- package/dist/engine/AuditLogger.js +448 -0
- package/dist/engine/AuditLogger.js.map +1 -0
- package/dist/engine/GitHubApprovalManager.d.ts +106 -0
- package/dist/engine/GitHubApprovalManager.d.ts.map +1 -0
- package/dist/engine/GitHubApprovalManager.js +315 -0
- package/dist/engine/GitHubApprovalManager.js.map +1 -0
- package/dist/engine/RateLimiter.d.ts +79 -0
- package/dist/engine/RateLimiter.d.ts.map +1 -0
- package/dist/engine/RateLimiter.js +232 -0
- package/dist/engine/RateLimiter.js.map +1 -0
- package/dist/engine/RulesEngine.d.ts +77 -0
- package/dist/engine/RulesEngine.d.ts.map +1 -0
- package/dist/engine/RulesEngine.js +400 -0
- package/dist/engine/RulesEngine.js.map +1 -0
- package/dist/engine/TaskManager.d.ts +173 -0
- package/dist/engine/TaskManager.d.ts.map +1 -0
- package/dist/engine/TaskManager.js +678 -0
- package/dist/engine/TaskManager.js.map +1 -0
- package/dist/engine/index.d.ts +9 -0
- package/dist/engine/index.d.ts.map +1 -0
- package/dist/engine/index.js +9 -0
- package/dist/engine/index.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/rules/architecture.d.ts +9 -0
- package/dist/rules/architecture.d.ts.map +1 -0
- package/dist/rules/architecture.js +322 -0
- package/dist/rules/architecture.js.map +1 -0
- package/dist/rules/azure.d.ts +7 -0
- package/dist/rules/azure.d.ts.map +1 -0
- package/dist/rules/azure.js +138 -0
- package/dist/rules/azure.js.map +1 -0
- package/dist/rules/compliance.d.ts +9 -0
- package/dist/rules/compliance.d.ts.map +1 -0
- package/dist/rules/compliance.js +304 -0
- package/dist/rules/compliance.js.map +1 -0
- package/dist/rules/css.d.ts +10 -0
- package/dist/rules/css.d.ts.map +1 -0
- package/dist/rules/css.js +1239 -0
- package/dist/rules/css.js.map +1 -0
- package/dist/rules/flask.d.ts +7 -0
- package/dist/rules/flask.d.ts.map +1 -0
- package/dist/rules/flask.js +155 -0
- package/dist/rules/flask.js.map +1 -0
- package/dist/rules/index.d.ts +607 -0
- package/dist/rules/index.d.ts.map +1 -0
- package/dist/rules/index.js +401 -0
- package/dist/rules/index.js.map +1 -0
- package/dist/rules/ml-ai.d.ts +7 -0
- package/dist/rules/ml-ai.d.ts.map +1 -0
- package/dist/rules/ml-ai.js +150 -0
- package/dist/rules/ml-ai.js.map +1 -0
- package/dist/rules/operational.d.ts +9 -0
- package/dist/rules/operational.d.ts.map +1 -0
- package/dist/rules/operational.js +318 -0
- package/dist/rules/operational.js.map +1 -0
- package/dist/rules/security.d.ts +9 -0
- package/dist/rules/security.d.ts.map +1 -0
- package/dist/rules/security.js +287 -0
- package/dist/rules/security.js.map +1 -0
- package/dist/rules/storage.d.ts +7 -0
- package/dist/rules/storage.d.ts.map +1 -0
- package/dist/rules/storage.js +134 -0
- package/dist/rules/storage.js.map +1 -0
- package/dist/rules/stripe.d.ts +7 -0
- package/dist/rules/stripe.d.ts.map +1 -0
- package/dist/rules/stripe.js +140 -0
- package/dist/rules/stripe.js.map +1 -0
- package/dist/rules/testing.d.ts +7 -0
- package/dist/rules/testing.d.ts.map +1 -0
- package/dist/rules/testing.js +135 -0
- package/dist/rules/testing.js.map +1 -0
- package/dist/rules/ux.d.ts +9 -0
- package/dist/rules/ux.d.ts.map +1 -0
- package/dist/rules/ux.js +280 -0
- package/dist/rules/ux.js.map +1 -0
- package/dist/rules/websocket.d.ts +7 -0
- package/dist/rules/websocket.d.ts.map +1 -0
- package/dist/rules/websocket.js +136 -0
- package/dist/rules/websocket.js.map +1 -0
- package/dist/server.d.ts +49 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +2330 -0
- package/dist/server.js.map +1 -0
- package/dist/supervisor/AgentSupervisor.d.ts +235 -0
- package/dist/supervisor/AgentSupervisor.d.ts.map +1 -0
- package/dist/supervisor/AgentSupervisor.js +596 -0
- package/dist/supervisor/AgentSupervisor.js.map +1 -0
- package/dist/supervisor/ManagedServerRegistry.d.ts +48 -0
- package/dist/supervisor/ManagedServerRegistry.d.ts.map +1 -0
- package/dist/supervisor/ManagedServerRegistry.js +145 -0
- package/dist/supervisor/ManagedServerRegistry.js.map +1 -0
- package/dist/supervisor/ProjectTracker.d.ts +188 -0
- package/dist/supervisor/ProjectTracker.d.ts.map +1 -0
- package/dist/supervisor/ProjectTracker.js +617 -0
- package/dist/supervisor/ProjectTracker.js.map +1 -0
- package/dist/supervisor/index.d.ts +6 -0
- package/dist/supervisor/index.d.ts.map +1 -0
- package/dist/supervisor/index.js +6 -0
- package/dist/supervisor/index.js.map +1 -0
- package/dist/types/index.d.ts +1176 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +391 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/errors.d.ts +86 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +171 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +5 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/shell.d.ts +22 -0
- package/dist/utils/shell.d.ts.map +1 -0
- package/dist/utils/shell.js +29 -0
- package/dist/utils/shell.js.map +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Architecture Change Detector
|
|
3
|
+
*
|
|
4
|
+
* Detects when agent actions represent architectural changes that should
|
|
5
|
+
* be documented in the project's CLAUDE.md file.
|
|
6
|
+
*/
|
|
7
|
+
import path from 'path';
|
|
8
|
+
export class ArchitectureDetector {
|
|
9
|
+
/**
|
|
10
|
+
* Detect if an action represents an architectural change
|
|
11
|
+
*/
|
|
12
|
+
static detectChanges(action, _context) {
|
|
13
|
+
// Only process file-related actions
|
|
14
|
+
if (!this.isFileAction(action)) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
const filePath = this.extractFilePath(action);
|
|
18
|
+
if (!filePath) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
// Skip non-architectural files
|
|
22
|
+
if (this.shouldSkipFile(filePath)) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
// Detect the type of architectural change
|
|
26
|
+
const componentType = this.detectComponentType(filePath);
|
|
27
|
+
if (!componentType) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
// Generate documentation suggestion
|
|
31
|
+
return this.generateDocumentation(filePath, componentType, action);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Check if action is file-related
|
|
35
|
+
*/
|
|
36
|
+
static isFileAction(action) {
|
|
37
|
+
const fileActions = [
|
|
38
|
+
'write_file',
|
|
39
|
+
'create_file',
|
|
40
|
+
'edit_file',
|
|
41
|
+
'modify_file',
|
|
42
|
+
'file_system'
|
|
43
|
+
];
|
|
44
|
+
return (fileActions.some(a => action.name.toLowerCase().includes(a)) ||
|
|
45
|
+
action.category === 'file_system');
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Extract file path from action parameters
|
|
49
|
+
*/
|
|
50
|
+
static extractFilePath(action) {
|
|
51
|
+
const params = action.parameters || {};
|
|
52
|
+
// Try common parameter names
|
|
53
|
+
const pathKeys = ['filePath', 'file_path', 'path', 'file', 'target'];
|
|
54
|
+
for (const key of pathKeys) {
|
|
55
|
+
if (params[key] && typeof params[key] === 'string') {
|
|
56
|
+
return params[key];
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Check if file should be skipped (not architectural)
|
|
63
|
+
*/
|
|
64
|
+
static shouldSkipFile(filePath) {
|
|
65
|
+
const skipPatterns = [
|
|
66
|
+
/\.test\.(ts|js|py)$/, // Test files
|
|
67
|
+
/\.spec\.(ts|js|py)$/, // Spec files
|
|
68
|
+
/\.md$/, // Documentation (except CLAUDE.md)
|
|
69
|
+
/node_modules\//, // Dependencies
|
|
70
|
+
/\.git\//, // Git files
|
|
71
|
+
/dist\//, // Build output
|
|
72
|
+
/build\//, // Build output
|
|
73
|
+
/\.env/, // Environment files
|
|
74
|
+
/package-lock\.json$/, // Lock files
|
|
75
|
+
/yarn\.lock$/, // Lock files
|
|
76
|
+
/\.gitignore$/, // Config files
|
|
77
|
+
/\.eslintrc/, // Config files
|
|
78
|
+
/tsconfig\.json$/, // Config files
|
|
79
|
+
/\.prettierrc/, // Config files
|
|
80
|
+
/README\.md$/, // READMEs
|
|
81
|
+
/LICENSE$/, // License files
|
|
82
|
+
/\.(png|jpg|jpeg|gif|svg|ico)$/ // Images
|
|
83
|
+
];
|
|
84
|
+
return skipPatterns.some(pattern => pattern.test(filePath));
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Detect the type of component being added/modified
|
|
88
|
+
*/
|
|
89
|
+
static detectComponentType(filePath) {
|
|
90
|
+
const normalized = filePath.toLowerCase();
|
|
91
|
+
// Check directory structure
|
|
92
|
+
if (normalized.includes('/src/services/') || normalized.includes('/services/')) {
|
|
93
|
+
return 'service';
|
|
94
|
+
}
|
|
95
|
+
if (normalized.includes('/src/components/') || normalized.includes('/components/')) {
|
|
96
|
+
return 'component';
|
|
97
|
+
}
|
|
98
|
+
if (normalized.includes('/src/api/') || normalized.includes('/api/') ||
|
|
99
|
+
normalized.includes('/routes/') || normalized.includes('/blueprints/')) {
|
|
100
|
+
return 'api';
|
|
101
|
+
}
|
|
102
|
+
if (normalized.includes('/src/models/') || normalized.includes('/models/') ||
|
|
103
|
+
normalized.includes('/schemas/')) {
|
|
104
|
+
return 'model';
|
|
105
|
+
}
|
|
106
|
+
if (normalized.includes('/src/utils/') || normalized.includes('/utils/') ||
|
|
107
|
+
normalized.includes('/helpers/')) {
|
|
108
|
+
return 'utility';
|
|
109
|
+
}
|
|
110
|
+
if (normalized.includes('/src/middleware/') || normalized.includes('/middleware/')) {
|
|
111
|
+
return 'middleware';
|
|
112
|
+
}
|
|
113
|
+
if (normalized.includes('/src/config/') || normalized.includes('/config/')) {
|
|
114
|
+
return 'configuration';
|
|
115
|
+
}
|
|
116
|
+
if (normalized.includes('/src/integrations/') || normalized.includes('/integrations/')) {
|
|
117
|
+
return 'integration';
|
|
118
|
+
}
|
|
119
|
+
if (normalized.includes('/src/engine/') || normalized.includes('/engine/')) {
|
|
120
|
+
return 'engine';
|
|
121
|
+
}
|
|
122
|
+
if (normalized.includes('/src/analyzers/') || normalized.includes('/analyzers/')) {
|
|
123
|
+
return 'analyzer';
|
|
124
|
+
}
|
|
125
|
+
if (normalized.includes('/src/dashboard/') || normalized.includes('/dashboard/')) {
|
|
126
|
+
return 'dashboard';
|
|
127
|
+
}
|
|
128
|
+
// Check for package.json (dependency change)
|
|
129
|
+
if (normalized.endsWith('package.json')) {
|
|
130
|
+
return 'dependency';
|
|
131
|
+
}
|
|
132
|
+
// Check for specific file patterns
|
|
133
|
+
if (normalized.endsWith('server.ts') || normalized.endsWith('server.js') ||
|
|
134
|
+
normalized.endsWith('app.ts') || normalized.endsWith('app.js')) {
|
|
135
|
+
return 'main';
|
|
136
|
+
}
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Generate documentation suggestion
|
|
141
|
+
*/
|
|
142
|
+
static generateDocumentation(filePath, componentType, _action) {
|
|
143
|
+
const fileName = path.basename(filePath, path.extname(filePath));
|
|
144
|
+
const componentName = this.formatComponentName(fileName);
|
|
145
|
+
const templates = {
|
|
146
|
+
service: {
|
|
147
|
+
section: 'Services',
|
|
148
|
+
template: (name) => `### ${name}\n\nBrief description of what this service does.\n\n**Purpose**: Core functionality provided by this service\n\n**Key Features**:\n- Feature 1\n- Feature 2\n\n**Dependencies**: List any external services or APIs used`
|
|
149
|
+
},
|
|
150
|
+
component: {
|
|
151
|
+
section: 'Components',
|
|
152
|
+
template: (name) => `### ${name}\n\nDescription of this component's role.\n\n**Props/Interface**:\n- Prop 1: Description\n- Prop 2: Description\n\n**Usage Example**:\n\`\`\`typescript\n// Usage example here\n\`\`\``
|
|
153
|
+
},
|
|
154
|
+
api: {
|
|
155
|
+
section: 'API Endpoints',
|
|
156
|
+
template: (name) => `### ${name} Endpoints\n\n**Routes**:\n- \`GET /api/${name.toLowerCase()}\` - Description\n- \`POST /api/${name.toLowerCase()}\` - Description\n\n**Authentication**: Required/Optional\n\n**Request/Response Format**:\n\`\`\`json\n{\n "example": "data"\n}\n\`\`\``
|
|
157
|
+
},
|
|
158
|
+
model: {
|
|
159
|
+
section: 'Data Models',
|
|
160
|
+
template: (name) => `### ${name}\n\n**Schema**:\n\`\`\`typescript\ninterface ${name} {\n // Define schema here\n}\n\`\`\`\n\n**Relationships**: Related models or tables\n\n**Validation**: Key validation rules`
|
|
161
|
+
},
|
|
162
|
+
utility: {
|
|
163
|
+
section: 'Utilities',
|
|
164
|
+
template: (name) => `### ${name}\n\n**Purpose**: What this utility provides\n\n**Key Functions**:\n- \`function1()\` - Description\n- \`function2()\` - Description\n\n**Usage**: Common use cases`
|
|
165
|
+
},
|
|
166
|
+
middleware: {
|
|
167
|
+
section: 'Middleware',
|
|
168
|
+
template: (name) => `### ${name}\n\n**Purpose**: What this middleware does\n\n**Applied To**: Which routes/endpoints\n\n**Configuration**: Any configuration options`
|
|
169
|
+
},
|
|
170
|
+
integration: {
|
|
171
|
+
section: 'Integrations',
|
|
172
|
+
template: (name) => `### ${name}\n\n**External Service**: Name and purpose\n\n**API Version**: Version of external API\n\n**Configuration**:\n- API Key: How to configure\n- Endpoints: List of used endpoints\n\n**Error Handling**: How failures are handled`
|
|
173
|
+
},
|
|
174
|
+
engine: {
|
|
175
|
+
section: 'Core Engine',
|
|
176
|
+
template: (name) => `### ${name}\n\n**Purpose**: Core engine component responsibility\n\n**Key Methods**:\n- Method 1: Description\n- Method 2: Description\n\n**Integration**: How it integrates with other components`
|
|
177
|
+
},
|
|
178
|
+
analyzer: {
|
|
179
|
+
section: 'Analyzers',
|
|
180
|
+
template: (name) => `### ${name}\n\n**Analyzes**: What this analyzer evaluates\n\n**Returns**: Analysis result format\n\n**Usage**: When and how to use this analyzer`
|
|
181
|
+
},
|
|
182
|
+
dashboard: {
|
|
183
|
+
section: 'Dashboard',
|
|
184
|
+
template: (name) => `### ${name}\n\n**Feature**: Dashboard feature provided\n\n**API Endpoints**: Related endpoints\n\n**UI Components**: User interface elements`
|
|
185
|
+
},
|
|
186
|
+
dependency: {
|
|
187
|
+
section: 'Dependencies',
|
|
188
|
+
template: () => `### New Dependency Added\n\nA new dependency was added to package.json.\n\n**Review Required**: Check package.json for the new dependency and document its purpose here.`
|
|
189
|
+
},
|
|
190
|
+
main: {
|
|
191
|
+
section: 'Core Application',
|
|
192
|
+
template: (name) => `### ${name}\n\n**Purpose**: Main application entry point changes\n\n**Configuration**: New configuration options\n\n**Startup**: Changes to startup sequence`
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
const template = templates[componentType] || templates.utility;
|
|
196
|
+
const suggestedContent = template.template(componentName);
|
|
197
|
+
return {
|
|
198
|
+
needed: true,
|
|
199
|
+
reason: `New ${componentType} detected at ${filePath}`,
|
|
200
|
+
suggestedContent,
|
|
201
|
+
section: template.section
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Format component name for documentation
|
|
206
|
+
*/
|
|
207
|
+
static formatComponentName(fileName) {
|
|
208
|
+
// Convert PascalCase/camelCase to Title Case
|
|
209
|
+
return fileName
|
|
210
|
+
.replace(/([A-Z])/g, ' $1') // Add space before capitals
|
|
211
|
+
.replace(/[-_]/g, ' ') // Replace dashes and underscores with spaces
|
|
212
|
+
.trim() // Remove leading/trailing spaces
|
|
213
|
+
.split(' ') // Split into words
|
|
214
|
+
.map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
|
|
215
|
+
.join(' ');
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=ArchitectureDetector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArchitectureDetector.js","sourceRoot":"","sources":["../../src/analyzers/ArchitectureDetector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enterprise Agent Supervisor - CSS Analyzer
|
|
3
|
+
*
|
|
4
|
+
* Analyzes CSS rules for optimization, deduplication, and best practices.
|
|
5
|
+
*/
|
|
6
|
+
export interface CSSRule {
|
|
7
|
+
selector: string;
|
|
8
|
+
properties: Record<string, string>;
|
|
9
|
+
source: 'inline' | 'style_tag' | 'external' | 'unknown';
|
|
10
|
+
file?: string;
|
|
11
|
+
line?: number;
|
|
12
|
+
specificity?: number;
|
|
13
|
+
}
|
|
14
|
+
export interface CSSAnalysisContext {
|
|
15
|
+
newRule: CSSRule;
|
|
16
|
+
existingRules?: CSSRule[];
|
|
17
|
+
projectType?: 'spa' | 'mpa' | 'component_library' | 'website';
|
|
18
|
+
framework?: 'react' | 'vue' | 'angular' | 'svelte' | 'vanilla' | 'other';
|
|
19
|
+
hasStyleSystem?: boolean;
|
|
20
|
+
styleSystemName?: string;
|
|
21
|
+
globalStylesFile?: string;
|
|
22
|
+
componentName?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface CSSSuggestion {
|
|
25
|
+
type: 'use_existing' | 'make_global' | 'externalize' | 'remove_unused' | 'consolidate' | 'use_variable' | 'use_utility' | 'specificity_warning' | 'naming_convention';
|
|
26
|
+
severity: 'error' | 'warning' | 'info' | 'suggestion';
|
|
27
|
+
message: string;
|
|
28
|
+
details?: string;
|
|
29
|
+
existingRule?: CSSRule;
|
|
30
|
+
suggestedAction?: string;
|
|
31
|
+
codeExample?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface CSSAnalysisResult {
|
|
34
|
+
ruleId: string;
|
|
35
|
+
newRule: CSSRule;
|
|
36
|
+
shouldExternalize: boolean;
|
|
37
|
+
shouldMakeGlobal: boolean;
|
|
38
|
+
duplicates: CSSRule[];
|
|
39
|
+
suggestions: CSSSuggestion[];
|
|
40
|
+
removableCandidates: CSSRule[];
|
|
41
|
+
riskScore: number;
|
|
42
|
+
summary: string;
|
|
43
|
+
}
|
|
44
|
+
export declare class CSSAnalyzer {
|
|
45
|
+
private knownUtilityClasses;
|
|
46
|
+
constructor();
|
|
47
|
+
/**
|
|
48
|
+
* Main analysis entry point
|
|
49
|
+
*/
|
|
50
|
+
analyze(context: CSSAnalysisContext): CSSAnalysisResult;
|
|
51
|
+
/**
|
|
52
|
+
* Find duplicate or similar CSS rules
|
|
53
|
+
*/
|
|
54
|
+
private findDuplicates;
|
|
55
|
+
/**
|
|
56
|
+
* Check if CSS should be externalized
|
|
57
|
+
*/
|
|
58
|
+
private checkExternalization;
|
|
59
|
+
/**
|
|
60
|
+
* Check if CSS should be made global
|
|
61
|
+
*/
|
|
62
|
+
private checkGlobalCandidate;
|
|
63
|
+
/**
|
|
64
|
+
* Check for CSS variable candidates using design system tokens
|
|
65
|
+
*/
|
|
66
|
+
private checkVariableCandidates;
|
|
67
|
+
/**
|
|
68
|
+
* Check for utility class opportunities
|
|
69
|
+
*/
|
|
70
|
+
private checkUtilityOpportunities;
|
|
71
|
+
/**
|
|
72
|
+
* Check CSS specificity issues
|
|
73
|
+
*/
|
|
74
|
+
private checkSpecificity;
|
|
75
|
+
/**
|
|
76
|
+
* Check naming convention
|
|
77
|
+
*/
|
|
78
|
+
private checkNamingConvention;
|
|
79
|
+
/**
|
|
80
|
+
* Find CSS rules that can be safely removed
|
|
81
|
+
*/
|
|
82
|
+
private findRemovableCandidates;
|
|
83
|
+
private generateRuleId;
|
|
84
|
+
private simpleHash;
|
|
85
|
+
private calculateSimilarity;
|
|
86
|
+
private calculateSpecificity;
|
|
87
|
+
private isReusablePattern;
|
|
88
|
+
private isTypographyRule;
|
|
89
|
+
private isButtonPattern;
|
|
90
|
+
private generateExternalizeExample;
|
|
91
|
+
private getFontWeightName;
|
|
92
|
+
private suggestBEMName;
|
|
93
|
+
private completelyOverrides;
|
|
94
|
+
private isLikelyUnused;
|
|
95
|
+
private prioritizeSuggestions;
|
|
96
|
+
private generateSummary;
|
|
97
|
+
private initializeKnownPatterns;
|
|
98
|
+
/**
|
|
99
|
+
* Map VARIABLE_CANDIDATES types to design token categories
|
|
100
|
+
*/
|
|
101
|
+
private mapTypeToTokenCategory;
|
|
102
|
+
}
|
|
103
|
+
export declare const cssAnalyzer: CSSAnalyzer;
|
|
104
|
+
//# sourceMappingURL=CSSAnalyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CSSAnalyzer.d.ts","sourceRoot":"","sources":["../../src/analyzers/CSSAnalyzer.ts"],"names":[],"mappings":"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"}
|