archprint 0.7.1 → 0.8.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/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # archprint
2
2
 
3
+ ## 0.8.1
4
+
5
+ ### Patch Changes
6
+
7
+ - `archprint eject` now restores an ESLint config exactly when its array starts on the same line as its first entry (for example `export default [{ ignores: ['dist/'] }, ...]`). `wire` used to break that line to insert its reference, and `eject` left the line break behind. `wire` now inserts the reference inline on that line, and `eject` removes exactly what it added. Configs with a multi-line array are unchanged.
8
+ - Scanning now skips the same files git does for `.gitignore` patterns where a wildcard has to reach past a partial match, such as `f*o/*/*` matching `foo/b/c`. Before, a few such patterns failed to match and those files were scanned. Scan output is unchanged on the large repositories we checked.
9
+ - The README and docs show three short recordings (scan, explain, and asking Claude Code in plain words) and a measured comparison of the same question in Claude Code with and without archprint on the demo app, with the method, harness and every answer published alongside.
10
+
11
+ ## 0.8.0
12
+
13
+ ### Minor Changes
14
+
15
+ - The MCP tools and `scan --json` now say what each rule means and which files break it. Every rule carries a plain-language `statement` (the same wording `archprint scan` prints) and an `exceptions` list naming the files that break it (up to 10; `violatingFiles` still has the full count). `archprint_explain` now explains any rule from the scan by its label, such as `env-access` or `lib !-> app`, not only the `AP-` rules, and returns every exception file. An agent can now answer "what rules does this repo follow?" accurately from a single scan, instead of guessing what a family name means.
16
+
17
+ ### Patch Changes
18
+
19
+ - `archprint init` now ends with the right next step. It names the config file it actually wrote (`.archprint/config.json`) and tells you to run `archprint wire` to reference the generated rules from your linter config, instead of describing an older file layout.
20
+ - The README and docs now open with a short recording of `archprint scan` and `archprint explain` on a real Next.js API, and link to a demo you can try in the browser on StackBlitz with nothing to install. The MCP section shows an MCP client calling `archprint_scan`.
21
+
3
22
  ## 0.7.1
4
23
 
5
24
  ### Patch Changes
package/README.md CHANGED
@@ -13,6 +13,40 @@ already respects, and turns the ones that pass a statistical confidence gate int
13
13
  install lint rules. Every rule ships with the evidence behind it: how many files conform, how many break it,
14
14
  and how confident the inference is.
15
15
 
16
+ **Find the rules your code already follows:**
17
+
18
+ ![archprint scan listing the rules a Next.js API already follows, with the evidence for each](docs/public/demo/scan.gif)
19
+
20
+ **See the evidence behind one:**
21
+
22
+ ![archprint explain showing the confidence gate behind AP-001](docs/public/demo/explain.gif)
23
+
24
+ **Or just ask your agent.** Claude Code calls archprint over MCP on its own:
25
+
26
+ ![Claude Code answering "What architecture rules does this repo already follow?" by calling archprint](docs/public/demo/claude-code.gif)
27
+
28
+ **Measured, with and without archprint.** The same question in Claude Code (Opus 5.5) on the demo app (70
29
+ files), five runs each, median [range]:
30
+
31
+ | | Without archprint | With archprint |
32
+ | ----------------- | ------------------------- | ------------------------- |
33
+ | Tokens read | 81k [58k to 96k] | 52k [52k to 52k] |
34
+ | Tokens written | 1.1k [1.1k to 1.4k] | 0.6k [0.6k to 0.6k] |
35
+ | Cost per question | $0.083 [$0.078 to $0.153] | $0.037 [$0.032 to $0.076] |
36
+ | Time | 17 s [15 to 19] | 10 s [9 to 31] |
37
+ | Tool calls | 5 [4 to 10] | 2 [2 to 2] |
38
+
39
+ Both found the main rule (routes reach the database only through `lib/services/`). With archprint, every run gave
40
+ the evidence for each rule and named the one file that breaks one (`lib/db.ts` reads `process.env` outside the
41
+ config layer); no run without it noticed that. Without archprint, Claude also described naming conventions
42
+ archprint does not check. About 50k of the tokens read in both columns are Claude Code's own system prompt. This
43
+ is one small repo; larger ones are not measured yet.
44
+ [Method, harness and every answer](https://github.com/Tommkruix/archprint-demo/tree/main/bench).
45
+
46
+ **Try it in your browser, nothing to install:** [open the demo in StackBlitz](https://stackblitz.com/github/Tommkruix/archprint-demo).
47
+ The scan runs as soon as it opens, and the [demo's README](https://github.com/Tommkruix/archprint-demo#try-it)
48
+ walks through enforcing a rule in ESLint, breaking it, and asking for the rules over MCP.
49
+
16
50
  Your `CLAUDE.md` is guidance. Your lint rules are enforcement. Archprint closes the gap by generating the
17
51
  enforcement from patterns your codebase already demonstrates, so you adopt rules you can trust instead of
18
52
  authoring them by hand.
@@ -138,7 +172,6 @@ A real scan of [inbox-zero](https://github.com/elie222/inbox-zero) (`apps/web`,
138
172
  trimmed:
139
173
 
140
174
  ```
141
- Archprint v0.7.1
142
175
  Scanned 2,232 TypeScript files
143
176
  Workspace aliases: 18 resolved
144
177
 
@@ -170,28 +203,28 @@ components across React (`.tsx`), Angular (`.component.ts`, `.directive.ts`), an
170
203
  components (it reads the `<script>` block of `.vue`/`.svelte` files), so the component-aware rules apply
171
204
  regardless of framework.
172
205
 
173
- | Detector | Rule it can infer | Ships as |
174
- | -------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------- |
175
- | Forbidden imports (marker based) | A role (route handler, server entry) must not import a target (the DB client, the UI layer) | Auto |
176
- | Circular dependencies | The module graph should stay acyclic (gated on how cycle free it already is) | Auto |
177
- | Test isolation | Production (non-test) code must not import test or spec files | Auto |
178
- | Dependency hygiene | Import third-party packages by their public entry, not a dependency's `src`/`internal` internals | Review |
179
- | Dependency declaration | Every imported third-party package must be declared in `package.json` (no phantom/transitive deps) | Review |
180
- | Import style | Prefer workspace aliases over deep relative imports (`../../../`) | Auto |
181
- | Console isolation | Library (non-CLI) code must not call `console.*` | Auto |
182
- | Public API (barrel) boundaries | Files outside a feature or package must import it through its `index` barrel, not deep import its internals | Auto |
183
- | Layer boundaries | Files in one layer must not import another, inferred from the dominant dependency direction | Review |
184
- | Role layering | Semantic tiers keep their direction (a REPOSITORY must not import a SERVICE, a SERVICE must not import a CONTROLLER) | Review |
185
- | Entry purity | Framework entries (pages, routes, layouts) must not be imported by other first-party code | Review |
186
- | UI / data separation | Reusable UI components must not import the DB/data layer directly | Review |
187
- | Server / client boundary | A Next.js `"use client"` module must not import a `server-only` module | Review |
188
- | Feature-slice isolation | Sibling slices under a `features`/`modules`/`slices`/`domains` container must not import each other | Review |
189
- | App isolation | Sibling apps under an `apps`/`services` container must not import each other directly | Review |
190
- | Env access | Read `process.env` only in the config/env layer | Review |
191
- | Workspace package API | Import a monorepo workspace package by its name, not a deep path into its source | Review |
192
- | Stories isolation | Storybook `.stories` files must not be imported by other code | Review |
193
- | Orphan modules | Files nothing imports and that are not framework entries (dead code candidates) | Report |
194
- | Transitive reachability | A layer boundary that a plain import rule passes but that leaks through an intermediary layer | Report |
206
+ | Detector | Rule it can infer | Ships as |
207
+ | ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------- |
208
+ | Forbidden imports (AP-001, AP-002) | AP-001: a request entry (route handler) must not import the DB client. AP-002: a server entry must not import the UI layer | Auto |
209
+ | Circular dependencies | The module graph should stay acyclic (gated on how cycle free it already is) | Auto |
210
+ | Test isolation | Production (non-test) code must not import test or spec files | Auto |
211
+ | Dependency hygiene | Import third-party packages by their public entry, not a dependency's `src`/`internal` internals | Review |
212
+ | Dependency declaration | Every imported third-party package must be declared in `package.json` (no phantom/transitive deps) | Review |
213
+ | Import style | Prefer workspace aliases over deep relative imports (`../../../`) | Auto |
214
+ | Console isolation | Library (non-CLI) code must not call `console.*` | Auto |
215
+ | Public API (barrel) boundaries | Files outside a feature or package must import it through its `index` barrel, not deep import its internals | Auto |
216
+ | Layer boundaries | Files in one layer must not import another, inferred from the dominant dependency direction | Review |
217
+ | Role layering | Semantic tiers keep their direction (a REPOSITORY must not import a SERVICE, a SERVICE must not import a CONTROLLER) | Review |
218
+ | Entry purity | Framework entries (pages, routes, layouts) must not be imported by other first-party code | Review |
219
+ | UI / data separation | Reusable UI components must not import the DB/data layer directly | Review |
220
+ | Server / client boundary | A Next.js `"use client"` module must not import a `server-only` module | Review |
221
+ | Feature-slice isolation | Sibling slices under a `features`/`modules`/`slices`/`domains` container must not import each other | Review |
222
+ | App isolation | Sibling apps under an `apps`/`services` container must not import each other directly | Review |
223
+ | Env access | Read `process.env` only in the config/env layer | Review |
224
+ | Workspace package API | Import a monorepo workspace package by its name, not a deep path into its source | Review |
225
+ | Stories isolation | Storybook `.stories` files must not be imported by other code | Review |
226
+ | Orphan modules | Files nothing imports and that are not framework entries (dead code candidates) | Report |
227
+ | Transitive reachability | A layer boundary that a plain import rule passes but that leaks through an intermediary layer | Report |
195
228
 
196
229
  ## The confidence gate
197
230
 
@@ -246,8 +279,10 @@ this layout and rewires your configs in place.
246
279
 
247
280
  `archprint mcp` runs archprint as an [MCP](https://modelcontextprotocol.io) server over stdio, so an agent can
248
281
  ask what architecture rules your repo already follows, with the evidence, before it writes code. It exposes three
249
- read-only tools: `archprint_scan`, `archprint_recommend`, and `archprint_explain`. Point Claude Desktop, Claude
250
- Code, Cursor, or any MCP client at it:
282
+ read-only tools: `archprint_scan`, `archprint_recommend`, and `archprint_explain`. Each rule comes back stated
283
+ in plain words, with its evidence and the files that break it, and `archprint_explain` takes any rule label from
284
+ the scan (for example `AP-002` or `env-access`). Point Claude Desktop, Claude Code, Cursor, or any MCP client at
285
+ it:
251
286
 
252
287
  ```json
253
288
  {
@@ -1,6 +1,6 @@
1
1
  import type { ScannedPattern, ScanResult } from './scan.js';
2
2
  import type { Recommendations } from './recommend.js';
3
- import type { ArchprintConfig } from './archprint-config.js';
3
+ import { type ArchprintConfig } from './archprint-config.js';
4
4
  export declare function renderReport(scan: ScanResult, version: string, elapsedMs?: number, deep?: boolean): string;
5
5
  export declare function renderExplain(pattern: ScannedPattern, appDir: string): string;
6
6
  export declare function renderAdoptionBody(rec: Recommendations): string;
@@ -1 +1 @@
1
- {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/cli/report.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAyG7D,wBAAgB,YAAY,CAC1B,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,UAAQ,GACX,MAAM,CA2WR;AAUD,wBAAgB,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAmC7E;AAkBD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAoB/D;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CASpF;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CA6BnF;AAED,wBAAgB,UAAU,CACxB,QAAQ,EAAE,eAAe,EACzB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,OAAO,EACnB,OAAO,EAAE,MAAM,GACd,MAAM,CAwCR"}
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/cli/report.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAe,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AA0G1E,wBAAgB,YAAY,CAC1B,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,UAAQ,GACX,MAAM,CAyWR;AAUD,wBAAgB,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAmC7E;AAkBD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAoB/D;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CASpF;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CA6BnF;AAED,wBAAgB,UAAU,CACxB,QAAQ,EAAE,eAAe,EACzB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,OAAO,EACnB,OAAO,EAAE,MAAM,GACd,MAAM,CA0CR"}
@@ -1,6 +1,8 @@
1
1
  import { reachesLayer } from '../detector/reachability.js';
2
+ import { CONFIG_FILE } from './archprint-config.js';
2
3
  import { locateImport } from './codeframe.js';
3
4
  import { guidanceFor } from './rule-guidance.js';
5
+ import { FAMILY_STATEMENTS } from './rule-statements.js';
4
6
  const enabled = !process.env.NO_COLOR && process.stdout.isTTY;
5
7
  const paint = (code) => (text) => enabled ? `\x1b[${code}m${text}\x1b[0m` : text;
6
8
  const bold = paint('1');
@@ -221,7 +223,7 @@ export function renderReport(scan, version, elapsedMs, deep = false) {
221
223
  const suffix = testIso.gate.status === 'AUTO' ? '(enforceable)' : '(suggested)';
222
224
  const floor = `${(testIso.gate.conditions.confidence.value * 100).toFixed(0)}%`;
223
225
  lines.push(label(bold(`TEST ISOLATION ${suffix}`)));
224
- lines.push(` production code must not import test files confidence ${floor}`);
226
+ lines.push(` ${FAMILY_STATEMENTS['test-isolation']} confidence ${floor}`);
225
227
  lines.push(dim(` Evidence: ${testIso.productionFileCount - testIso.offenderCount}/${testIso.productionFileCount} production files stay clean of ${testIso.testFileCount} test file(s)`));
226
228
  if (testIso.offenderCount > 0) {
227
229
  lines.push(dim(` Test imports: ${testIso.offenderCount}`));
@@ -235,7 +237,7 @@ export function renderReport(scan, version, elapsedMs, deep = false) {
235
237
  const suffix = deps.gate.status === 'AUTO' ? '(enforceable)' : '(suggested)';
236
238
  const floor = `${(deps.gate.conditions.confidence.value * 100).toFixed(0)}%`;
237
239
  lines.push(label(bold(`DEPENDENCY HYGIENE ${suffix}`)));
238
- lines.push(` import dependencies by their public entry, not their internals confidence ${floor}`);
240
+ lines.push(` ${FAMILY_STATEMENTS['dependency-hygiene']} confidence ${floor}`);
239
241
  lines.push(dim(` Evidence: ${deps.externalImporterCount - deps.offenderCount}/${deps.externalImporterCount} files importing packages avoid their build/impl dirs`));
240
242
  if (deps.offenderCount > 0) {
241
243
  lines.push(dim(` Internal imports: ${deps.offenderCount}`));
@@ -248,7 +250,7 @@ export function renderReport(scan, version, elapsedMs, deep = false) {
248
250
  const suffix = entry.gate.status === 'AUTO' ? '(review before enforcing)' : '(suggested)';
249
251
  const floor = `${(entry.gate.conditions.confidence.value * 100).toFixed(0)}%`;
250
252
  lines.push(label(bold(`ENTRY PURITY ${suffix}`)));
251
- lines.push(` framework entries must not be imported by other code confidence ${floor}`);
253
+ lines.push(` ${FAMILY_STATEMENTS['entry-purity']} confidence ${floor}`);
252
254
  lines.push(dim(` Evidence: ${entry.entryCount - entry.offenderCount}/${entry.entryCount} framework entries are imported by nothing`));
253
255
  if (entry.offenderCount > 0) {
254
256
  lines.push(dim(` Imported entries: ${entry.offenderCount}`));
@@ -262,7 +264,7 @@ export function renderReport(scan, version, elapsedMs, deep = false) {
262
264
  const suffix = phantom.gate.status === 'AUTO' ? '(enforceable)' : '(suggested)';
263
265
  const floor = `${(phantom.gate.conditions.confidence.value * 100).toFixed(0)}%`;
264
266
  lines.push(label(bold(`DEPENDENCY DECLARATION ${suffix}`)));
265
- lines.push(` import only packages declared in package.json confidence ${floor}`);
267
+ lines.push(` ${FAMILY_STATEMENTS['phantom-deps']} confidence ${floor}`);
266
268
  lines.push(dim(` Evidence: ${phantom.externalImporterCount - phantom.offenderCount}/${phantom.externalImporterCount} files import only declared packages`));
267
269
  if (phantom.offenderCount > 0) {
268
270
  lines.push(dim(` Undeclared (phantom) imports: ${phantom.offenderCount}`));
@@ -276,7 +278,7 @@ export function renderReport(scan, version, elapsedMs, deep = false) {
276
278
  const suffix = deepRel.gate.status === 'AUTO' ? '(enforceable)' : '(suggested)';
277
279
  const floor = `${(deepRel.gate.conditions.confidence.value * 100).toFixed(0)}%`;
278
280
  lines.push(label(bold(`IMPORT STYLE ${suffix}`)));
279
- lines.push(` prefer workspace aliases over deep relative imports confidence ${floor}`);
281
+ lines.push(` ${FAMILY_STATEMENTS['import-style']} confidence ${floor}`);
280
282
  lines.push(dim(` Evidence: ${deepRel.relativeImporterCount - deepRel.offenderCount}/${deepRel.relativeImporterCount} files with relative imports avoid ../../../`));
281
283
  if (deepRel.offenderCount > 0) {
282
284
  lines.push(dim(` Deep relative imports: ${deepRel.offenderCount}`));
@@ -289,7 +291,7 @@ export function renderReport(scan, version, elapsedMs, deep = false) {
289
291
  const suffix = con.gate.status === 'AUTO' ? '(enforceable)' : '(suggested)';
290
292
  const floor = `${(con.gate.conditions.confidence.value * 100).toFixed(0)}%`;
291
293
  lines.push(label(bold(`CONSOLE ISOLATION ${suffix}`)));
292
- lines.push(` library code must not use console confidence ${floor}`);
294
+ lines.push(` ${FAMILY_STATEMENTS['console-isolation']} confidence ${floor}`);
293
295
  lines.push(dim(` Evidence: ${con.libraryFileCount - con.offenderCount}/${con.libraryFileCount} library files avoid console`));
294
296
  if (con.offenderCount > 0)
295
297
  lines.push(dim(` Console usage: ${con.offenderCount}`));
@@ -301,7 +303,7 @@ export function renderReport(scan, version, elapsedMs, deep = false) {
301
303
  const suffix = env.gate.status === 'AUTO' ? '(review before enforcing)' : '(suggested)';
302
304
  const floor = `${(env.gate.conditions.confidence.value * 100).toFixed(0)}%`;
303
305
  lines.push(label(bold(`ENV ACCESS ${suffix}`)));
304
- lines.push(` read process.env only in the config layer confidence ${floor}`);
306
+ lines.push(` ${FAMILY_STATEMENTS['env-access']} confidence ${floor}`);
305
307
  lines.push(dim(` Evidence: ${env.subjectFileCount - env.offenderCount}/${env.subjectFileCount} non-config files avoid direct process.env`));
306
308
  if (env.offenderCount > 0)
307
309
  lines.push(dim(` Reads outside config: ${env.offenderCount}`));
@@ -313,7 +315,7 @@ export function renderReport(scan, version, elapsedMs, deep = false) {
313
315
  const suffix = wpkg.gate.status === 'AUTO' ? '(review before enforcing)' : '(suggested)';
314
316
  const floor = `${(wpkg.gate.conditions.confidence.value * 100).toFixed(0)}%`;
315
317
  lines.push(label(bold(`WORKSPACE PACKAGE API ${suffix}`)));
316
- lines.push(` import workspace packages by name, not a deep path confidence ${floor}`);
318
+ lines.push(` ${FAMILY_STATEMENTS['workspace-package-api']} confidence ${floor}`);
317
319
  lines.push(dim(` Evidence: ${wpkg.consumerCount - wpkg.offenderCount}/${wpkg.consumerCount} consumers import packages by name`));
318
320
  if (wpkg.offenderCount > 0) {
319
321
  lines.push(dim(` Deep package imports: ${wpkg.offenderCount}`));
@@ -327,7 +329,7 @@ export function renderReport(scan, version, elapsedMs, deep = false) {
327
329
  const suffix = stories.gate.status === 'AUTO' ? '(review before enforcing)' : '(suggested)';
328
330
  const floor = `${(stories.gate.conditions.confidence.value * 100).toFixed(0)}%`;
329
331
  lines.push(label(bold(`STORIES ISOLATION ${suffix}`)));
330
- lines.push(` Storybook stories must not be imported by other code confidence ${floor}`);
332
+ lines.push(` ${FAMILY_STATEMENTS['stories-isolation']} confidence ${floor}`);
331
333
  lines.push(dim(` Evidence: ${stories.storyCount - stories.offenderCount}/${stories.storyCount} stories are imported by nothing`));
332
334
  if (stories.offenderCount > 0) {
333
335
  lines.push(dim(` Imported stories: ${stories.offenderCount}`));
@@ -341,7 +343,7 @@ export function renderReport(scan, version, elapsedMs, deep = false) {
341
343
  const suffix = uiData.gate.status === 'AUTO' ? '(review before enforcing)' : '(suggested)';
342
344
  const floor = `${(uiData.gate.conditions.confidence.value * 100).toFixed(0)}%`;
343
345
  lines.push(label(bold(`UI / DATA SEPARATION ${suffix}`)));
344
- lines.push(` UI components must not import the data layer directly confidence ${floor}`);
346
+ lines.push(` ${FAMILY_STATEMENTS['ui-data']} confidence ${floor}`);
345
347
  lines.push(dim(` Evidence: ${uiData.componentCount - uiData.offenderCount}/${uiData.componentCount} components reach data only through services`));
346
348
  if (uiData.offenderCount > 0) {
347
349
  lines.push(dim(` Direct data imports: ${uiData.offenderCount}`));
@@ -354,7 +356,7 @@ export function renderReport(scan, version, elapsedMs, deep = false) {
354
356
  const suffix = sc.gate.status === 'AUTO' ? '(review before enforcing)' : '(suggested)';
355
357
  const floor = `${(sc.gate.conditions.confidence.value * 100).toFixed(0)}%`;
356
358
  lines.push(label(bold(`SERVER / CLIENT BOUNDARY ${suffix}`)));
357
- lines.push(` "use client" modules must not import server-only code confidence ${floor}`);
359
+ lines.push(` ${FAMILY_STATEMENTS['server-client']} confidence ${floor}`);
358
360
  lines.push(dim(` Evidence: ${sc.clientCount - sc.offenderCount}/${sc.clientCount} client modules avoid server-only imports`));
359
361
  if (sc.offenderCount > 0) {
360
362
  lines.push(dim(` Server-only imports in client code: ${sc.offenderCount}`));
@@ -502,7 +504,11 @@ export function renderInit(manifest, writtenCount, structural, version) {
502
504
  lines.push(dim(` - ${r.title}`) + evidence(r));
503
505
  lines.push('');
504
506
  }
505
- lines.push(dim(`Wrote archprint.json. Wire ${manifest.rulesDir}/*.json into your dependency-cruiser / eslint`), dim("config, then run your linter. Re-run 'archprint scan' any time to see the evidence."));
507
+ lines.push(dim(`Wrote ${manifest.rulesDir}/${CONFIG_FILE}.`));
508
+ if (writtenCount > 0) {
509
+ lines.push(dim("Run 'archprint wire' to reference the rules from your linter config, then run your"), dim('linter.'));
510
+ }
511
+ lines.push(dim("Re-run 'archprint scan' any time to see the evidence."));
506
512
  return lines.join('\n');
507
513
  }
508
514
  //# sourceMappingURL=report.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/cli/report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/cli/report.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ export declare const FAMILY_STATEMENTS: {
2
+ readonly cycles: "modules must not import each other in a cycle";
3
+ readonly 'test-isolation': "production code must not import test files";
4
+ readonly 'dependency-hygiene': "import dependencies by their public entry, not their internals";
5
+ readonly 'entry-purity': "framework entries must not be imported by other code";
6
+ readonly 'phantom-deps': "import only packages declared in package.json";
7
+ readonly 'import-style': "prefer workspace aliases over deep relative imports";
8
+ readonly 'console-isolation': "library code must not use console";
9
+ readonly 'env-access': "read process.env only in the config layer";
10
+ readonly 'workspace-package-api': "import workspace packages by name, not a deep path";
11
+ readonly 'stories-isolation': "Storybook stories must not be imported by other code";
12
+ readonly 'ui-data': "UI components must not import the data layer directly";
13
+ readonly 'server-client': "\"use client\" modules must not import server-only code";
14
+ };
15
+ export type SingleFamily = keyof typeof FAMILY_STATEMENTS;
16
+ export declare const boundaryStatement: (from: string, to: string) => string;
17
+ export declare const publicApiStatement: (dir: string) => string;
18
+ export declare const sliceStatement: (container: string) => string;
19
+ export declare const appIsolationStatement: (container: string) => string;
20
+ //# sourceMappingURL=rule-statements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-statements.d.ts","sourceRoot":"","sources":["../../src/cli/rule-statements.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;CAapB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,iBAAiB,CAAC;AAE1D,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,EAAE,IAAI,MAAM,KAAG,MAC5B,CAAC;AAElC,eAAO,MAAM,kBAAkB,GAAI,KAAK,MAAM,KAAG,MAC0B,CAAC;AAE5E,eAAO,MAAM,cAAc,GAAI,WAAW,MAAM,KAAG,MACa,CAAC;AAEjE,eAAO,MAAM,qBAAqB,GAAI,WAAW,MAAM,KAAG,MACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ export const FAMILY_STATEMENTS = {
2
+ cycles: 'modules must not import each other in a cycle',
3
+ 'test-isolation': 'production code must not import test files',
4
+ 'dependency-hygiene': 'import dependencies by their public entry, not their internals',
5
+ 'entry-purity': 'framework entries must not be imported by other code',
6
+ 'phantom-deps': 'import only packages declared in package.json',
7
+ 'import-style': 'prefer workspace aliases over deep relative imports',
8
+ 'console-isolation': 'library code must not use console',
9
+ 'env-access': 'read process.env only in the config layer',
10
+ 'workspace-package-api': 'import workspace packages by name, not a deep path',
11
+ 'stories-isolation': 'Storybook stories must not be imported by other code',
12
+ 'ui-data': 'UI components must not import the data layer directly',
13
+ 'server-client': '"use client" modules must not import server-only code',
14
+ };
15
+ export const boundaryStatement = (from, to) => `${from} must not import ${to}`;
16
+ export const publicApiStatement = (dir) => `import ${dir} through its public entry (barrel), not its internal files`;
17
+ export const sliceStatement = (container) => `feature slices under ${container} must not import each other`;
18
+ export const appIsolationStatement = (container) => `apps under ${container} must not import each other`;
19
+ //# sourceMappingURL=rule-statements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-statements.js","sourceRoot":"","sources":["../../src/cli/rule-statements.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,MAAM,EAAE,+CAA+C;IACvD,gBAAgB,EAAE,4CAA4C;IAC9D,oBAAoB,EAAE,gEAAgE;IACtF,cAAc,EAAE,sDAAsD;IACtE,cAAc,EAAE,+CAA+C;IAC/D,cAAc,EAAE,qDAAqD;IACrE,mBAAmB,EAAE,mCAAmC;IACxD,YAAY,EAAE,2CAA2C;IACzD,uBAAuB,EAAE,oDAAoD;IAC7E,mBAAmB,EAAE,sDAAsD;IAC3E,SAAS,EAAE,uDAAuD;IAClE,eAAe,EAAE,uDAAuD;CAChE,CAAC;AAIX,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAE,EAAU,EAAU,EAAE,CACpE,GAAG,IAAI,oBAAoB,EAAE,EAAE,CAAC;AAElC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAU,EAAE,CACxD,UAAU,GAAG,4DAA4D,CAAC;AAE5E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,SAAiB,EAAU,EAAE,CAC1D,wBAAwB,SAAS,6BAA6B,CAAC;AAEjE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,SAAiB,EAAU,EAAE,CACjE,cAAc,SAAS,6BAA6B,CAAC"}
@@ -1,18 +1,22 @@
1
1
  import type { GenerationStatus } from '../detector/confidence-gate.js';
2
2
  import type { ScanResult } from './scan.js';
3
+ export declare const LISTED_EXCEPTIONS = 10;
3
4
  export interface RuleSummary {
4
5
  family: string;
5
6
  label: string;
7
+ statement: string;
6
8
  status: GenerationStatus;
7
9
  observedConformance: number;
8
10
  confidenceFloor: number;
9
11
  observations: number;
10
12
  violatingFiles: number;
13
+ exceptions: string[];
11
14
  }
12
15
  export interface ScanSummary {
13
16
  fileCount: number;
14
17
  aliasCount: number;
15
18
  rules: RuleSummary[];
16
19
  }
20
+ export declare function summarizeRules(scan: ScanResult, exceptionLimit?: number): RuleSummary[];
17
21
  export declare function toScanSummary(scan: ScanResult): ScanSummary;
18
22
  //# sourceMappingURL=summary.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../src/cli/summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,gBAAgB,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAoDD,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,CAa3D"}
1
+ {"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../src/cli/summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAU5C,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AA0FD,wBAAgB,cAAc,CAC5B,IAAI,EAAE,UAAU,EAChB,cAAc,SAAoB,GACjC,WAAW,EAAE,CAcf;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,CAE3D"}
@@ -1,59 +1,98 @@
1
+ import { FAMILY_STATEMENTS, appIsolationStatement, boundaryStatement, publicApiStatement, sliceStatement, } from './rule-statements.js';
2
+ export const LISTED_EXCEPTIONS = 10;
3
+ const filesOf = (violations) => [...new Set(violations.map((violation) => violation.file))].sort();
1
4
  function collectGates(scan) {
2
5
  const entries = [];
3
6
  for (const pattern of scan.patterns)
4
7
  entries.push({
5
8
  family: 'forbidden-imports',
6
9
  label: pattern.config.id,
10
+ statement: pattern.config.description,
7
11
  gate: pattern.result.gate,
12
+ files: filesOf(pattern.result.violations),
8
13
  });
9
14
  for (const boundary of scan.layerBoundaries)
10
15
  entries.push({
11
16
  family: 'layer',
12
17
  label: `${boundary.from} !-> ${boundary.to}`,
18
+ statement: boundaryStatement(boundary.from, boundary.to),
13
19
  gate: boundary.gate,
20
+ files: filesOf(boundary.violations),
14
21
  });
15
22
  for (const boundary of scan.roleLayering.boundaries)
16
23
  entries.push({
17
24
  family: 'role-layering',
18
25
  label: `${boundary.from} !-> ${boundary.to}`,
26
+ statement: boundaryStatement(boundary.from, boundary.to),
19
27
  gate: boundary.gate,
28
+ files: filesOf(boundary.violations),
20
29
  });
21
30
  for (const group of scan.publicApi.groups)
22
- entries.push({ family: 'public-api', label: group.dir, gate: group.gate });
31
+ entries.push({
32
+ family: 'public-api',
33
+ label: group.dir,
34
+ statement: publicApiStatement(group.dir),
35
+ gate: group.gate,
36
+ files: filesOf(group.violations),
37
+ });
23
38
  for (const group of scan.featureSlices.groups)
24
- entries.push({ family: 'feature-slice', label: group.container, gate: group.gate });
39
+ entries.push({
40
+ family: 'feature-slice',
41
+ label: group.container,
42
+ statement: sliceStatement(group.container),
43
+ gate: group.gate,
44
+ files: filesOf(group.violations),
45
+ });
25
46
  for (const group of scan.appIsolation.groups)
26
- entries.push({ family: 'app-isolation', label: group.container, gate: group.gate });
47
+ entries.push({
48
+ family: 'app-isolation',
49
+ label: group.container,
50
+ statement: appIsolationStatement(group.container),
51
+ gate: group.gate,
52
+ files: filesOf(group.violations),
53
+ });
27
54
  const singles = [
28
- ['cycles', scan.cycles.gate],
29
- ['test-isolation', scan.testIsolation.gate],
30
- ['dependency-hygiene', scan.dependencyInternals.gate],
31
- ['phantom-deps', scan.phantomDependencies.gate],
32
- ['entry-purity', scan.entryPurity.gate],
33
- ['import-style', scan.deepRelative.gate],
34
- ['console-isolation', scan.consoleIsolation.gate],
35
- ['env-access', scan.envAccess.gate],
36
- ['workspace-package-api', scan.workspacePackageApi.gate],
37
- ['stories-isolation', scan.storiesIsolation.gate],
38
- ['ui-data', scan.uiDataIsolation.gate],
39
- ['server-client', scan.serverClient.gate],
55
+ ['cycles', scan.cycles.gate, [...new Set(scan.cycles.cycles.flatMap((c) => c.files))].sort()],
56
+ ['test-isolation', scan.testIsolation.gate, filesOf(scan.testIsolation.violations)],
57
+ [
58
+ 'dependency-hygiene',
59
+ scan.dependencyInternals.gate,
60
+ filesOf(scan.dependencyInternals.violations),
61
+ ],
62
+ ['phantom-deps', scan.phantomDependencies.gate, filesOf(scan.phantomDependencies.violations)],
63
+ ['entry-purity', scan.entryPurity.gate, filesOf(scan.entryPurity.violations)],
64
+ ['import-style', scan.deepRelative.gate, filesOf(scan.deepRelative.violations)],
65
+ ['console-isolation', scan.consoleIsolation.gate, filesOf(scan.consoleIsolation.violations)],
66
+ ['env-access', scan.envAccess.gate, filesOf(scan.envAccess.violations)],
67
+ [
68
+ 'workspace-package-api',
69
+ scan.workspacePackageApi.gate,
70
+ filesOf(scan.workspacePackageApi.violations),
71
+ ],
72
+ ['stories-isolation', scan.storiesIsolation.gate, filesOf(scan.storiesIsolation.violations)],
73
+ ['ui-data', scan.uiDataIsolation.gate, filesOf(scan.uiDataIsolation.violations)],
74
+ ['server-client', scan.serverClient.gate, filesOf(scan.serverClient.violations)],
40
75
  ];
41
- for (const [family, gate] of singles)
42
- entries.push({ family, label: family, gate });
76
+ for (const [family, gate, files] of singles)
77
+ entries.push({ family, label: family, statement: FAMILY_STATEMENTS[family], gate, files });
43
78
  return entries;
44
79
  }
45
- export function toScanSummary(scan) {
46
- const rules = collectGates(scan)
80
+ export function summarizeRules(scan, exceptionLimit = LISTED_EXCEPTIONS) {
81
+ return collectGates(scan)
47
82
  .filter((entry) => entry.gate.status !== 'REJECT')
48
- .map(({ family, label, gate }) => ({
83
+ .map(({ family, label, statement, gate, files }) => ({
49
84
  family,
50
85
  label,
86
+ statement,
51
87
  status: gate.status,
52
88
  observedConformance: gate.observedConformance,
53
89
  confidenceFloor: gate.conditions.confidence.value,
54
90
  observations: gate.observations,
55
91
  violatingFiles: gate.conditions.exceptions.value,
92
+ exceptions: files.slice(0, exceptionLimit),
56
93
  }));
57
- return { fileCount: scan.fileCount, aliasCount: scan.aliasCount, rules };
94
+ }
95
+ export function toScanSummary(scan) {
96
+ return { fileCount: scan.fileCount, aliasCount: scan.aliasCount, rules: summarizeRules(scan) };
58
97
  }
59
98
  //# sourceMappingURL=summary.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"summary.js","sourceRoot":"","sources":["../../src/cli/summary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"summary.js","sourceRoot":"","sources":["../../src/cli/summary.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,GAEf,MAAM,sBAAsB,CAAC;AAE9B,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AA4BpC,MAAM,OAAO,GAAG,CAAC,UAAuC,EAAY,EAAE,CACpE,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAErE,SAAS,YAAY,CAAC,IAAgB;IACpC,MAAM,OAAO,GAAgB,EAAE,CAAC;IAChC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ;QACjC,OAAO,CAAC,IAAI,CAAC;YACX,MAAM,EAAE,mBAAmB;YAC3B,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE;YACxB,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW;YACrC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI;YACzB,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;SAC1C,CAAC,CAAC;IACL,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,eAAe;QACzC,OAAO,CAAC,IAAI,CAAC;YACX,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,GAAG,QAAQ,CAAC,IAAI,QAAQ,QAAQ,CAAC,EAAE,EAAE;YAC5C,SAAS,EAAE,iBAAiB,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;YACxD,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;SACpC,CAAC,CAAC;IACL,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU;QACjD,OAAO,CAAC,IAAI,CAAC;YACX,MAAM,EAAE,eAAe;YACvB,KAAK,EAAE,GAAG,QAAQ,CAAC,IAAI,QAAQ,QAAQ,CAAC,EAAE,EAAE;YAC5C,SAAS,EAAE,iBAAiB,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;YACxD,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;SACpC,CAAC,CAAC;IACL,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM;QACvC,OAAO,CAAC,IAAI,CAAC;YACX,MAAM,EAAE,YAAY;YACpB,KAAK,EAAE,KAAK,CAAC,GAAG;YAChB,SAAS,EAAE,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC;YACxC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;SACjC,CAAC,CAAC;IACL,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM;QAC3C,OAAO,CAAC,IAAI,CAAC;YACX,MAAM,EAAE,eAAe;YACvB,KAAK,EAAE,KAAK,CAAC,SAAS;YACtB,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC;YAC1C,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;SACjC,CAAC,CAAC;IACL,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM;QAC1C,OAAO,CAAC,IAAI,CAAC;YACX,MAAM,EAAE,eAAe;YACvB,KAAK,EAAE,KAAK,CAAC,SAAS;YACtB,SAAS,EAAE,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC;YACjD,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;SACjC,CAAC,CAAC;IACL,MAAM,OAAO,GAA2C;QACtD,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7F,CAAC,gBAAgB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACnF;YACE,oBAAoB;YACpB,IAAI,CAAC,mBAAmB,CAAC,IAAI;YAC7B,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;SAC7C;QACD,CAAC,cAAc,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAC7F,CAAC,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC7E,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC/E,CAAC,mBAAmB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC5F,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACvE;YACE,uBAAuB;YACvB,IAAI,CAAC,mBAAmB,CAAC,IAAI;YAC7B,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;SAC7C;QACD,CAAC,mBAAmB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC5F,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAChF,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;KACjF,CAAC;IACF,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,OAAO;QACzC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7F,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,IAAgB,EAChB,cAAc,GAAG,iBAAiB;IAElC,OAAO,YAAY,CAAC,IAAI,CAAC;SACtB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC;SACjD,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACnD,MAAM;QACN,KAAK;QACL,SAAS;QACT,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;QAC7C,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK;QACjD,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK;QAChD,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC;KAC3C,CAAC,CAAC,CAAC;AACR,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAgB;IAC5C,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;AACjG,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"wiring.d.ts","sourceRoot":"","sources":["../../src/cli/wiring.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,aAAa,+EACoD,CAAC;AAC/E,eAAO,MAAM,WAAW,qBAAqB,CAAC;AA+C9C,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM3D;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAK7E;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,eAAe,GAAG,iBAAiB,GAAG,aAAa,CAAC;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,CAShF;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAiB3D;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAWjD;AAgBD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,CAaxF;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMnE;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CASnE;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IACxC,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC3C,OAAO,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;IACzC,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,KAAK,MAAM,CAAC;IAChE,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,UAAU,CAAC;IAC1D,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IACpC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;CACxC;AAUD,eAAO,MAAM,YAAY,EAAE,SAAS,UAAU,EAyB7C,CAAC"}
1
+ {"version":3,"file":"wiring.d.ts","sourceRoot":"","sources":["../../src/cli/wiring.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,aAAa,+EACoD,CAAC;AAC/E,eAAO,MAAM,WAAW,qBAAqB,CAAC;AAgD9C,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM3D;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAK7E;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,eAAe,GAAG,iBAAiB,GAAG,aAAa,CAAC;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,CAWhF;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAiB3D;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAWjD;AAgBD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,CAaxF;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMnE;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CASnE;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IACxC,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC3C,OAAO,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;IACzC,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,KAAK,MAAM,CAAC;IAChE,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,UAAU,CAAC;IAC1D,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IACpC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;CACxC;AAUD,eAAO,MAAM,YAAY,EAAE,SAAS,UAAU,EAyB7C,CAAC"}
@@ -5,6 +5,7 @@ import { DEPCRUISE_FILE, ESLINT_FILE } from './generate.js';
5
5
  export const MANAGED_START = '// archprint:start (managed by archprint; run `archprint eject` to remove)';
6
6
  export const MANAGED_END = '// archprint:end';
7
7
  const SPREAD_MARK = '// archprint:managed';
8
+ const INLINE_SPREAD = '...archprintRules /* archprint:managed */, ';
8
9
  const ESLINT_CONFIG_NAMES = [
9
10
  'eslint.config.js',
10
11
  'eslint.config.mjs',
@@ -72,8 +73,10 @@ export function wireEslintContent(content, reference) {
72
73
  if (insertAt === null)
73
74
  return { changed: false, reason: 'no-array-export' };
74
75
  const remainder = content.slice(insertAt);
75
- const separator = remainder.startsWith('\n') ? '' : '\n';
76
- const withSpread = `${content.slice(0, insertAt)}\n ...archprintRules, ${SPREAD_MARK}${separator}${remainder}`;
76
+ const spread = remainder.startsWith('\n')
77
+ ? `\n ...archprintRules, ${SPREAD_MARK}`
78
+ : INLINE_SPREAD;
79
+ const withSpread = `${content.slice(0, insertAt)}${spread}${remainder}`;
77
80
  const importBlock = `${MANAGED_START}\nimport archprintRules from '${reference}';\n${MANAGED_END}\n`;
78
81
  return { changed: true, content: importBlock + withSpread };
79
82
  }
@@ -95,7 +98,7 @@ export function unwireEslintContent(content) {
95
98
  continue;
96
99
  kept.push(line);
97
100
  }
98
- return kept.join('\n');
101
+ return kept.join('\n').replace(INLINE_SPREAD, '');
99
102
  }
100
103
  export function rewriteEslintReference(content, newRef) {
101
104
  return content.replace(/(import archprintRules from )(['"`])[^'"`]*\2/, `$1$2${newRef}$2`);
@@ -1 +1 @@
1
- {"version":3,"file":"wiring.js","sourceRoot":"","sources":["../../src/cli/wiring.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wiring.js","sourceRoot":"","sources":["../../src/cli/wiring.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
2
2
  import { type ToolResponse } from './tool-response.js';
3
3
  export declare const TOOLS: readonly [{
4
4
  readonly name: "archprint_scan";
5
- readonly description: "List the architecture rules this TypeScript repo already follows, with the evidence: which families are AUTO (clears the confidence gate) or SUGGEST (short of it, worth review), how many files conform vs. break each, and the confidence. Read-only. `path` defaults to \".\" and a monorepo root scans every app.";
5
+ readonly description: "List the architecture rules this TypeScript repo already follows, with the evidence: each rule stated in plain words, whether it is AUTO (clears the confidence gate) or SUGGEST (short of it, worth review), how many files conform vs. break it, the files that break it, and the confidence. Read-only. `path` defaults to \".\" and a monorepo root scans every app.";
6
6
  readonly inputSchema: {
7
7
  readonly type: "object";
8
8
  readonly properties: {
@@ -30,13 +30,13 @@ export declare const TOOLS: readonly [{
30
30
  };
31
31
  }, {
32
32
  readonly name: "archprint_explain";
33
- readonly description: "Explain the confidence-gate evidence behind one inferred rule id (e.g. AP-002): its gate status, conformance stats, and the files that violate it. Read-only.";
33
+ readonly description: "Explain the confidence-gate evidence behind one rule from archprint_scan, by its label (e.g. AP-002, env-access, or \"lib !-> app\"): its statement, gate status, conformance stats, and every file that breaks it. Read-only.";
34
34
  readonly inputSchema: {
35
35
  readonly type: "object";
36
36
  readonly properties: {
37
37
  readonly id: {
38
38
  readonly type: "string";
39
- readonly description: "rule id, e.g. AP-002";
39
+ readonly description: "rule label from archprint_scan, e.g. AP-002 or env-access";
40
40
  };
41
41
  readonly path: {
42
42
  readonly type: "string";
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAInE,OAAO,EAA6B,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElF,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwCR,CAAC;AAEX,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAe5E;AAED,YAAY,EAAE,YAAY,EAAE,CAAC;AAE7B,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,CAMlF;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQpD;AAGD,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnE"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAInE,OAAO,EAA6B,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElF,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2CR,CAAC;AAEX,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAe5E;AAED,YAAY,EAAE,YAAY,EAAE,CAAC;AAE7B,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,CAMlF;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQpD;AAGD,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnE"}
@@ -6,7 +6,7 @@ import { errorResponse, okResponse } from './tool-response.js';
6
6
  export const TOOLS = [
7
7
  {
8
8
  name: 'archprint_scan',
9
- description: 'List the architecture rules this TypeScript repo already follows, with the evidence: which families are AUTO (clears the confidence gate) or SUGGEST (short of it, worth review), how many files conform vs. break each, and the confidence. Read-only. `path` defaults to "." and a monorepo root scans every app.',
9
+ description: 'List the architecture rules this TypeScript repo already follows, with the evidence: each rule stated in plain words, whether it is AUTO (clears the confidence gate) or SUGGEST (short of it, worth review), how many files conform vs. break it, the files that break it, and the confidence. Read-only. `path` defaults to "." and a monorepo root scans every app.',
10
10
  inputSchema: {
11
11
  type: 'object',
12
12
  properties: {
@@ -30,11 +30,14 @@ export const TOOLS = [
30
30
  },
31
31
  {
32
32
  name: 'archprint_explain',
33
- description: 'Explain the confidence-gate evidence behind one inferred rule id (e.g. AP-002): its gate status, conformance stats, and the files that violate it. Read-only.',
33
+ description: 'Explain the confidence-gate evidence behind one rule from archprint_scan, by its label (e.g. AP-002, env-access, or "lib !-> app"): its statement, gate status, conformance stats, and every file that breaks it. Read-only.',
34
34
  inputSchema: {
35
35
  type: 'object',
36
36
  properties: {
37
- id: { type: 'string', description: 'rule id, e.g. AP-002' },
37
+ id: {
38
+ type: 'string',
39
+ description: 'rule label from archprint_scan, e.g. AP-002 or env-access',
40
+ },
38
41
  path: { type: 'string', description: 'app or monorepo-root directory (default ".")' },
39
42
  },
40
43
  required: ['id'],
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type ScanSummary } from '../cli/summary.js';
1
+ import { type RuleSummary, type ScanSummary } from '../cli/summary.js';
2
2
  import { type Recommendations } from '../cli/recommend.js';
3
3
  import type { DetectedPattern } from '../detector/pattern-detector.js';
4
4
  export interface AppScan extends ScanSummary {
@@ -11,7 +11,8 @@ export interface AppRecommendations extends Recommendations {
11
11
  export declare function recommendTool(input: string): AppRecommendations[];
12
12
  export interface ExplainResult {
13
13
  app: string;
14
- pattern: DetectedPattern;
14
+ rule: RuleSummary;
15
+ pattern?: DetectedPattern;
15
16
  }
16
17
  export declare function explainTool(id: string, input: string): ExplainResult;
17
18
  //# sourceMappingURL=tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAqC,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC9F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAevE,MAAM,WAAW,OAAQ,SAAQ,WAAW;IAC1C,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,UAAQ,GAAG,OAAO,EAAE,CAM/D;AAED,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACzD,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAMjE;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CASpE"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,WAAW,EACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAqC,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC9F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAevE,MAAM,WAAW,OAAQ,SAAQ,WAAW;IAC1C,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,UAAQ,GAAG,OAAO,EAAE,CAM/D;AAED,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACzD,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAMjE;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CAmBpE"}
package/dist/mcp/tools.js CHANGED
@@ -2,7 +2,7 @@ import * as path from 'node:path';
2
2
  import { discoverAppDirs } from '../scanner/app-dirs.js';
3
3
  import { detectEnforcers } from '../scanner/enforcers.js';
4
4
  import { scanRepo } from '../cli/scan.js';
5
- import { toScanSummary } from '../cli/summary.js';
5
+ import { summarizeRules, toScanSummary, } from '../cli/summary.js';
6
6
  import { buildRecommendations, detectStack } from '../cli/recommend.js';
7
7
  function resolveAppDirs(input) {
8
8
  const root = path.resolve(input);
@@ -29,11 +29,18 @@ export function recommendTool(input) {
29
29
  }
30
30
  export function explainTool(id, input) {
31
31
  const { root, dirs } = resolveAppDirs(input);
32
+ const wanted = id.toLowerCase();
33
+ const known = [];
32
34
  for (const dir of dirs) {
33
- const pattern = scanRepo(dir, { deep: false }).patterns.find((candidate) => candidate.config.id.toLowerCase() === id.toLowerCase());
34
- if (pattern)
35
- return { app: displayApp(dir, root), pattern: pattern.result };
35
+ const scan = scanRepo(dir, { deep: false });
36
+ const rules = summarizeRules(scan, Number.POSITIVE_INFINITY);
37
+ const rule = rules.find((candidate) => candidate.label.toLowerCase() === wanted);
38
+ if (rule) {
39
+ const pattern = scan.patterns.find((candidate) => candidate.config.id.toLowerCase() === wanted);
40
+ return { app: displayApp(dir, root), rule, ...(pattern && { pattern: pattern.result }) };
41
+ }
42
+ known.push(...rules.map((candidate) => candidate.label));
36
43
  }
37
- throw new Error(`No pattern "${id}" found under ${path.resolve(input)}.`);
44
+ throw new Error(`No rule "${id}" found under ${path.resolve(input)}. Rules found: ${[...new Set(known)].join(', ') || 'none'}.`);
38
45
  }
39
46
  //# sourceMappingURL=tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAoB,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAwB,MAAM,qBAAqB,CAAC;AAG9F,SAAS,cAAc,CAAC,KAAa;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,gCAAgC,IAAI,oGAAoG,CACzI,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC;AAM1F,MAAM,UAAU,QAAQ,CAAC,KAAa,EAAE,IAAI,GAAG,KAAK;IAClD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAC7C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACxB,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC;QAC1B,GAAG,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;KAC1C,CAAC,CAAC,CAAC;AACN,CAAC;AAMD,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAC7C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACxB,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC;QAC1B,GAAG,oBAAoB,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC;KAChG,CAAC,CAAC,CAAC;AACN,CAAC;AAOD,MAAM,UAAU,WAAW,CAAC,EAAU,EAAE,KAAa;IACnD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAC7C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAC1D,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,CACtE,CAAC;QACF,IAAI,OAAO;YAAE,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IAC9E,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,eAAe,EAAE,iBAAiB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC5E,CAAC"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "archprint",
3
- "version": "0.7.1",
3
+ "version": "0.8.1",
4
4
  "description": "Mine the architecture rules your TypeScript repo already enforces, with the evidence attached.",
5
5
  "keywords": [
6
6
  "eslint",
@@ -75,7 +75,7 @@
75
75
  "dependencies": {
76
76
  "@modelcontextprotocol/sdk": "^1.31.0",
77
77
  "commander": "^15.0.0",
78
- "ignore": "7.0.9",
78
+ "ignore": "7.0.10",
79
79
  "ts-morph": "28.0.0",
80
80
  "typescript": "6.0.3"
81
81
  },
@@ -85,7 +85,7 @@
85
85
  "@commitlint/config-conventional": "^21.2.0",
86
86
  "@eslint/js": "^10.0.1",
87
87
  "@types/node": "^26.1.0",
88
- "@vitest/coverage-v8": "^4.1.10",
88
+ "@vitest/coverage-v8": "^5.0.3",
89
89
  "chart.js": "^4.5.1",
90
90
  "eslint": "^10.6.0",
91
91
  "eslint-config-prettier": "^10.1.8",
@@ -98,6 +98,6 @@
98
98
  "tsx": "^4.22.4",
99
99
  "typescript-eslint": "^8.62.1",
100
100
  "vitepress": "^1.6.4",
101
- "vitest": "^4.1.9"
101
+ "vitest": "^5.0.3"
102
102
  }
103
103
  }