@gherk/reactive-architecture 1.4.2 → 1.4.3

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/dist/index.js CHANGED
@@ -29,7 +29,7 @@ import { registerPlanFeaturePrompt } from './prompts/plan-feature.js';
29
29
  // Create the MCP server
30
30
  const server = new McpServer({
31
31
  name: 'reactive-architecture',
32
- version: '1.4.2',
32
+ version: '1.4.3',
33
33
  });
34
34
  // Register all tools
35
35
  registerArchitectureGuideTool(server);
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/tools/validate.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkTpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmG5D"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/tools/validate.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAmNpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyG5D"}
@@ -122,132 +122,49 @@ function validateDescription(description) {
122
122
  }
123
123
  return issues;
124
124
  }
125
- function validateCode(code) {
125
+ function validateCode(code, stack) {
126
126
  const issues = [];
127
127
  const lower = code.toLowerCase();
128
- // Check 1: Component injecting Service (The Cardinal Sin)
129
- // Matches: class ...Component ... inject(...Service) OR constructor(...Service)
130
- const isComponent = /class\s+\w+Component/.test(code) || /@Component/.test(code);
131
- if (isComponent) {
132
- // Regex for detecting service injection
133
- // 1. private service = inject(UserService)
134
- // 2. constructor(private userService: UserService)
135
- const injectsService = /inject\s*\(\s*\w+Service\s*\)/.test(code);
136
- const constructsService = /constructor\s*\([^)]*\w+Service/.test(code);
137
- const importsService = /import\s+.*Service.*\s+from/.test(code);
138
- if (injectsService || constructsService) {
128
+ // Heuristic detection if stack not provided
129
+ const isAngular = stack === 'angular' || /@angular/.test(code) || /@Component/.test(code);
130
+ const isReact = stack === 'react' || /react/.test(lower) || /use\w+/.test(code);
131
+ // ... (rest of the checks) ...
132
+ // Check 5: Legacy Injection (Constructor) - ANGULAR SPECIFIC
133
+ // Matches: constructor(private service: Service)
134
+ if (isAngular) {
135
+ if (/constructor\s*\(\s*(private|public|protected|readonly)?\s*\w+/.test(code)) {
139
136
  issues.push({
140
137
  severity: 'error',
141
- message: ' CRITICAL PHILOSOPHY VIOLATION: Component is injecting a Service directly.\n' +
142
- 'The Reactive Architecture mandates: Component Store Service.\n' +
143
- 'Skipping the Store breaks Unidirectional Data Flow and State Management.\n' +
144
- 'FIX: Remove Service injection. Inject the Store instead.',
145
- rule: 'component-injects-service',
138
+ message: 'Legacy Constructor Injection detected. ' +
139
+ 'Use the modern `inject(...)` function instead of constructor injection.',
140
+ rule: 'no-constructor-injection',
146
141
  });
147
142
  }
148
- else if (importsService) {
149
- // Import without injection might be okay (e.g. for types), but suspicious if used
150
- // We'll warn if we see usage like "UserService.someMethod" or "new UserService"
151
- if (/\w+Service\./.test(code) || /new\s+\w+Service/.test(code)) {
152
- issues.push({
153
- severity: 'error',
154
- message: 'Component is using a Service class directly (static or instantiation). ' +
155
- 'All logic must go through the Store.',
156
- rule: 'component-calls-service',
157
- });
158
- }
159
- }
160
- }
161
- // Check 2: Service holding state
162
- // Matches: class ...Service ... boolean = ... or array = [] (heuristic)
163
- if (/class\s+\w+Service/.test(code)) {
164
- if (/subject<|behavior_subject<|signal<|writable</i.test(code)) {
143
+ // Check 6: Legacy Decorators (@Input/@Output) - ANGULAR SPECIFIC
144
+ if (/@Input\(\)/.test(code)) {
165
145
  issues.push({
166
146
  severity: 'error',
167
- message: 'Service appears to be holding reactive state (Subject/Signal). ' +
168
- 'Services must be stateless. Move state to a Store.',
169
- rule: 'service-has-state',
170
- });
171
- }
172
- }
173
- // Check 3: Cyclomatic Complexity (Mock Linter)
174
- // Heuristic: Count branching keywords
175
- const complexityMatches = code.match(/(\bif\b|\bfor\b|\bwhile\b|\bcase\b|\bcatch\b|\?|\|\||&&)/g);
176
- const complexity = complexityMatches ? complexityMatches.length + 1 : 1;
177
- // Only strictly enforce on smaller snippets (to avoid flagging whole files)
178
- // If it looks like a single function (no 'class' keyword)
179
- const isClass = /\bclass\b/.test(code);
180
- if (!isClass && complexity > 5) {
181
- issues.push({
182
- severity: 'warning',
183
- message: `Detected High Cyclomatic Complexity (${complexity}). ` +
184
- 'Style Rules limit complexity to 5 per function. ' +
185
- 'Simplify logic or extract helper functions.',
186
- rule: 'max-complexity',
187
- });
188
- }
189
- // Check 4: Function Length
190
- // If it's not a class, check line count
191
- if (!isClass) {
192
- // Exclude empty lines and comments
193
- const meaningfulLines = code.split('\n')
194
- .map(l => l.trim())
195
- .filter(l => l && !l.startsWith('//') && !l.startsWith('/*') && !l.startsWith('*'));
196
- if (meaningfulLines.length > 15) { // 10 lines code + some leeway for imports/signatures
197
- issues.push({
198
- severity: 'warning',
199
- message: `Snippet length (${meaningfulLines.length} lines) exceeds the limit. ` +
200
- 'Functions must be ≤ 10 lines of code. Split into smaller functions.',
201
- rule: 'max-lines-per-function',
147
+ message: 'Legacy @Input() decorator detected. ' +
148
+ 'Use the modern `input()` or `input.required()` signal inputs.',
149
+ rule: 'no-input-decorator',
202
150
  });
203
151
  }
204
- }
205
- else {
206
- // Check 4: Function Length
207
- // ... (existing check) ...
208
- const lines = code.split('\n').length;
209
- if (lines > 180) { // 160 + leeway
152
+ if (/@Output\(\)/.test(code)) {
210
153
  issues.push({
211
- severity: 'warning',
212
- message: `File length (${lines} lines) exceeds the limit (160). ` +
213
- 'Refactor and split into multiple files.',
214
- rule: 'max-file-lines',
154
+ severity: 'error',
155
+ message: 'Legacy @Output() decorator detected. ' +
156
+ 'Use the modern `output()` function.',
157
+ rule: 'no-output-decorator',
215
158
  });
216
159
  }
217
160
  }
218
- // Check 5: Legacy Injection (Constructor)
219
- // Matches: constructor(private service: Service)
220
- if (/constructor\s*\(\s*(private|public|protected|readonly)?\s*\w+/.test(code)) {
221
- issues.push({
222
- severity: 'error',
223
- message: 'Legacy Constructor Injection detected. ' +
224
- 'Use the modern `inject(...)` function instead of constructor injection.',
225
- rule: 'no-constructor-injection',
226
- });
227
- }
228
- // Check 6: Legacy Decorators (@Input/@Output)
229
- if (/@Input\(\)/.test(code)) {
230
- issues.push({
231
- severity: 'error',
232
- message: 'Legacy @Input() decorator detected. ' +
233
- 'Use the modern `input()` or `input.required()` signal inputs.',
234
- rule: 'no-input-decorator',
235
- });
236
- }
237
- if (/@Output\(\)/.test(code)) {
238
- issues.push({
239
- severity: 'error',
240
- message: 'Legacy @Output() decorator detected. ' +
241
- 'Use the modern `output()` function.',
242
- rule: 'no-output-decorator',
243
- });
244
- }
245
161
  return issues;
246
162
  }
247
163
  export function registerValidateTool(server) {
248
164
  server.tool('validate_architecture', `Validates whether a proposed frontend architecture or code structure follows ` +
249
165
  `the reactive Component → Store → Service pattern. ` +
250
- `Provide a text description OR a code snippet to receive validation feedback.`, {
166
+ `Provide a text description OR a code snippet to receive validation feedback. ` +
167
+ `Can optionally specify the stack to apply framework-specific rules.`, {
251
168
  description: z
252
169
  .string()
253
170
  .optional()
@@ -256,14 +173,19 @@ export function registerValidateTool(server) {
256
173
  .string()
257
174
  .optional()
258
175
  .describe('Code snippet (Component or Service) to validate against architectural rules'),
259
- }, async ({ description, code }) => {
176
+ stack: z
177
+ .enum(['angular', 'react', 'vue', 'other'])
178
+ .optional()
179
+ .describe('The technology stack to validate against. If omitted, will attempt to detect from code.')
180
+ }, async ({ description, code, stack }) => {
260
181
  let issues = [];
261
182
  if (description) {
262
183
  issues = [...issues, ...validateDescription(description)];
263
184
  }
264
185
  if (code) {
265
- issues = [...issues, ...validateCode(code)];
186
+ issues = [...issues, ...validateCode(code, stack)];
266
187
  }
188
+ // ...
267
189
  if (issues.length === 0) {
268
190
  return {
269
191
  content: [
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/tools/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/tools/validate.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gherk/reactive-architecture",
3
- "version": "1.4.2",
3
+ "version": "1.4.3",
4
4
  "description": "MCP server that teaches AI assistants the reactive architecture philosophy: Component → Store → Service + Controller → Service → Repository",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",