@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,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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"}