archprint 0.8.3 → 0.10.0
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 +23 -0
- package/README.md +88 -17
- package/dist/cli/adopted-rules.d.ts +49 -0
- package/dist/cli/adopted-rules.d.ts.map +1 -0
- package/dist/cli/adopted-rules.js +159 -0
- package/dist/cli/adopted-rules.js.map +1 -0
- package/dist/cli/check-diff.d.ts +19 -0
- package/dist/cli/check-diff.d.ts.map +1 -0
- package/dist/cli/check-diff.js +41 -0
- package/dist/cli/check-diff.js.map +1 -0
- package/dist/cli/check-evaluate.d.ts +10 -0
- package/dist/cli/check-evaluate.d.ts.map +1 -0
- package/dist/cli/check-evaluate.js +83 -0
- package/dist/cli/check-evaluate.js.map +1 -0
- package/dist/cli/check-git.d.ts +12 -0
- package/dist/cli/check-git.d.ts.map +1 -0
- package/dist/cli/check-git.js +83 -0
- package/dist/cli/check-git.js.map +1 -0
- package/dist/cli/check-locate.d.ts +3 -0
- package/dist/cli/check-locate.d.ts.map +1 -0
- package/dist/cli/check-locate.js +29 -0
- package/dist/cli/check-locate.js.map +1 -0
- package/dist/cli/check.d.ts +42 -0
- package/dist/cli/check.d.ts.map +1 -0
- package/dist/cli/check.js +233 -0
- package/dist/cli/check.js.map +1 -0
- package/dist/cli/generate.d.ts +5 -0
- package/dist/cli/generate.d.ts.map +1 -1
- package/dist/cli/generate.js +37 -11
- package/dist/cli/generate.js.map +1 -1
- package/dist/cli/git-env.d.ts +2 -0
- package/dist/cli/git-env.d.ts.map +1 -0
- package/dist/cli/git-env.js +14 -0
- package/dist/cli/git-env.js.map +1 -0
- package/dist/cli/layout.d.ts +2 -0
- package/dist/cli/layout.d.ts.map +1 -1
- package/dist/cli/layout.js +3 -1
- package/dist/cli/layout.js.map +1 -1
- package/dist/cli/migrate.d.ts.map +1 -1
- package/dist/cli/migrate.js +1 -0
- package/dist/cli/migrate.js.map +1 -1
- package/dist/cli/program.d.ts.map +1 -1
- package/dist/cli/program.js +53 -1
- package/dist/cli/program.js.map +1 -1
- package/dist/cli/recommend.js +1 -1
- package/dist/cli/recommend.js.map +1 -1
- package/dist/cli/report.d.ts.map +1 -1
- package/dist/cli/report.js +2 -1
- package/dist/cli/report.js.map +1 -1
- package/dist/cli/rule-guidance.js +3 -3
- package/dist/cli/rule-guidance.js.map +1 -1
- package/dist/cli/scan.d.ts.map +1 -1
- package/dist/cli/scan.js +6 -3
- package/dist/cli/scan.js.map +1 -1
- package/dist/data/adoption-catalog.js +1 -1
- package/dist/data/adoption-catalog.js.map +1 -1
- package/dist/detector/marker-inference.d.ts +3 -0
- package/dist/detector/marker-inference.d.ts.map +1 -1
- package/dist/detector/marker-inference.js +26 -18
- package/dist/detector/marker-inference.js.map +1 -1
- package/dist/detector/pattern-detector.d.ts +1 -0
- package/dist/detector/pattern-detector.d.ts.map +1 -1
- package/dist/detector/pattern-detector.js +7 -4
- package/dist/detector/pattern-detector.js.map +1 -1
- package/dist/generator/public-api-emitters.d.ts +1 -0
- package/dist/generator/public-api-emitters.d.ts.map +1 -1
- package/dist/generator/public-api-emitters.js +2 -1
- package/dist/generator/public-api-emitters.js.map +1 -1
- package/dist/generator/rule-generator.d.ts.map +1 -1
- package/dist/generator/rule-generator.js +51 -29
- package/dist/generator/rule-generator.js.map +1 -1
- package/dist/mcp/server.d.ts +27 -4
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +38 -5
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools.d.ts +3 -0
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +23 -2
- package/dist/mcp/tools.js.map +1 -1
- package/dist/scanner/file-walker.d.ts +5 -0
- package/dist/scanner/file-walker.d.ts.map +1 -1
- package/dist/scanner/file-walker.js +8 -2
- package/dist/scanner/file-walker.js.map +1 -1
- package/dist/scanner/import-graph.d.ts +2 -0
- package/dist/scanner/import-graph.d.ts.map +1 -1
- package/dist/scanner/import-graph.js +1 -1
- package/dist/scanner/import-graph.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,6 +2,26 @@ import { mkdirSync, writeFileSync } from 'node:fs';
|
|
|
2
2
|
import * as path from 'node:path';
|
|
3
3
|
import { ROLE_PATTERNS } from '../scanner/role-classifier.js';
|
|
4
4
|
const asRegexArray = (sources) => `[${sources.map((source) => `/${source}/`).join(', ')}]`;
|
|
5
|
+
const PASSING_IMPORTS = ['next/server', '@/utils/user'];
|
|
6
|
+
const withoutFullStop = (text) => text.replace(/\.$/, '');
|
|
7
|
+
const isForbidden = (config, specifier) => config.forbidden.some((pattern) => pattern.test(specifier));
|
|
8
|
+
function forbiddenSpecifier(config, result) {
|
|
9
|
+
const candidates = [
|
|
10
|
+
...result.violations.map((violation) => violation.specifier),
|
|
11
|
+
...(config.examples ?? []),
|
|
12
|
+
];
|
|
13
|
+
const specifier = candidates.find((candidate) => isForbidden(config, candidate));
|
|
14
|
+
if (specifier === undefined) {
|
|
15
|
+
throw new Error(`${config.id}: no known import matches its forbidden patterns, so its failing fixture cannot be written.`);
|
|
16
|
+
}
|
|
17
|
+
return specifier;
|
|
18
|
+
}
|
|
19
|
+
function assertPassingFixtureAllowed(config) {
|
|
20
|
+
const clash = PASSING_IMPORTS.find((specifier) => isForbidden(config, specifier));
|
|
21
|
+
if (clash !== undefined) {
|
|
22
|
+
throw new Error(`${config.id}: its forbidden patterns match "${clash}", so its passing fixture would fail.`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
5
25
|
function renderRule(config, result) {
|
|
6
26
|
const entryPatterns = config.roles
|
|
7
27
|
.flatMap((role) => ROLE_PATTERNS.get(role) ?? [])
|
|
@@ -15,7 +35,7 @@ function renderRule(config, result) {
|
|
|
15
35
|
const conform = (ratio * 100).toFixed(1);
|
|
16
36
|
return `/**
|
|
17
37
|
* @fileoverview ${config.id} ${config.name}: GENERATED BY ARCHPRINT. Do not edit by hand.
|
|
18
|
-
* Inferred from the real import graph: ${roleFileCount - violatingFileCount}/${roleFileCount}
|
|
38
|
+
* Inferred from the real import graph: ${roleFileCount - violatingFileCount}/${roleFileCount} request handlers (${conform}%) already follow this.
|
|
19
39
|
* Evidence and provenance: ./${config.name}.md
|
|
20
40
|
*/
|
|
21
41
|
import type { Rule } from 'eslint';
|
|
@@ -57,8 +77,7 @@ const rule: Rule.RuleModule = {
|
|
|
57
77
|
},
|
|
58
78
|
schema: [],
|
|
59
79
|
messages: {
|
|
60
|
-
forbidden:
|
|
61
|
-
'${config.id}: a server-entry file must not import the UI components/ layer (imported "{{specifier}}"). Move shared logic into a non-UI module.',
|
|
80
|
+
forbidden: ${JSON.stringify(`${config.id}: ${withoutFullStop(config.description)} (imported "{{specifier}}").`)},
|
|
62
81
|
},
|
|
63
82
|
},
|
|
64
83
|
create(context) {
|
|
@@ -78,7 +97,7 @@ const rule: Rule.RuleModule = {
|
|
|
78
97
|
export default rule;
|
|
79
98
|
`;
|
|
80
99
|
}
|
|
81
|
-
function renderCard(config, result, provenance) {
|
|
100
|
+
function renderCard(config, result, provenance, failingSpecifier) {
|
|
82
101
|
const { roleFileCount, violatingFileCount, ratio, roleConfidence } = result.stats;
|
|
83
102
|
const example = result.violations[0];
|
|
84
103
|
const gate = result.gate.conditions;
|
|
@@ -91,9 +110,10 @@ function renderCard(config, result, provenance) {
|
|
|
91
110
|
|
|
92
111
|
${config.description}
|
|
93
112
|
|
|
94
|
-
**
|
|
95
|
-
|
|
96
|
-
|
|
113
|
+
**Applies to request handlers:** ${config.roles.join(', ')}. A violation is a request handler that
|
|
114
|
+
directly imports something matching a forbidden pattern:
|
|
115
|
+
${config.forbidden.map((pattern) => `\`/${pattern.source}/\``).join(', ')}. It checks **direct imports** only:
|
|
116
|
+
importing a module that itself imports a forbidden target is out of scope.
|
|
97
117
|
|
|
98
118
|
## Evidence (why Archprint generated this)
|
|
99
119
|
|
|
@@ -114,50 +134,52 @@ ${example
|
|
|
114
134
|
This is a lightweight, self-contained ESLint rule. It enforces at the **import-specifier** level, which
|
|
115
135
|
is narrower than the graph-based inference that generated it:
|
|
116
136
|
|
|
117
|
-
- **Alias/barrel false negative:** an import whose
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
server-entry only when it is otherwise unclassified; named roles (service, repository, worker, db /
|
|
137
|
+
- **Alias/barrel false negative:** an import whose text matches no forbidden pattern but resolves to a
|
|
138
|
+
forbidden target (through an alias or a re-exporting barrel) is **not** caught. The detector resolves
|
|
139
|
+
such imports to the file they reach; the rule matches only the import text.
|
|
140
|
+
- **Text-match false positive:** an unrelated import whose text happens to match a forbidden pattern is
|
|
141
|
+
flagged too.
|
|
142
|
+
- **Request-handler scope:** mirrors the classifier. A file with a \`"use server"\` directive is treated as
|
|
143
|
+
a request handler only when it is otherwise unclassified; named roles (service, repository, worker, db /
|
|
125
144
|
data-access, shared, test) keep their role and are out of scope.
|
|
126
145
|
|
|
127
146
|
## Fixtures
|
|
128
147
|
|
|
129
|
-
- \`fixtures/passing.ts\`: a
|
|
130
|
-
- \`fixtures/failing.ts\`: a
|
|
148
|
+
- \`fixtures/passing.ts\`: a request handler with no forbidden import (rule stays silent).
|
|
149
|
+
- \`fixtures/failing.ts\`: a request handler that imports \`${failingSpecifier}\` (rule reports).
|
|
131
150
|
`;
|
|
132
151
|
}
|
|
133
|
-
function renderPassingFixture() {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
import {
|
|
152
|
+
function renderPassingFixture(config) {
|
|
153
|
+
assertPassingFixtureAllowed(config);
|
|
154
|
+
const [server, user] = PASSING_IMPORTS;
|
|
155
|
+
return `// app/api/example/route.ts (PASSING): a request handler with no import ${config.id} forbids.
|
|
156
|
+
import { NextResponse } from '${server}';
|
|
157
|
+
import { getUser } from '${user}';
|
|
137
158
|
|
|
138
159
|
export async function GET(): Promise<Response> {
|
|
139
160
|
return NextResponse.json(await getUser());
|
|
140
161
|
}
|
|
141
162
|
`;
|
|
142
163
|
}
|
|
143
|
-
function renderFailingFixture() {
|
|
144
|
-
return `// app/api/
|
|
164
|
+
function renderFailingFixture(config, specifier) {
|
|
165
|
+
return `// app/api/example/route.ts (FAILING): a request handler importing "${specifier}", which ${config.id} forbids.
|
|
145
166
|
import { NextResponse } from 'next/server';
|
|
146
|
-
import
|
|
167
|
+
import * as forbidden from '${specifier}';
|
|
147
168
|
|
|
148
|
-
export async function
|
|
149
|
-
return NextResponse.json(
|
|
169
|
+
export async function GET(): Promise<Response> {
|
|
170
|
+
return NextResponse.json(Object.keys(forbidden));
|
|
150
171
|
}
|
|
151
172
|
`;
|
|
152
173
|
}
|
|
153
174
|
export function generateRuleArtifacts(config, result, provenance = '') {
|
|
175
|
+
const failingSpecifier = forbiddenSpecifier(config, result);
|
|
154
176
|
return {
|
|
155
177
|
ruleName: config.name,
|
|
156
178
|
files: {
|
|
157
179
|
rule: renderRule(config, result),
|
|
158
|
-
card: renderCard(config, result, provenance),
|
|
159
|
-
passingFixture: renderPassingFixture(),
|
|
160
|
-
failingFixture: renderFailingFixture(),
|
|
180
|
+
card: renderCard(config, result, provenance, failingSpecifier),
|
|
181
|
+
passingFixture: renderPassingFixture(config),
|
|
182
|
+
failingFixture: renderFailingFixture(config, failingSpecifier),
|
|
161
183
|
},
|
|
162
184
|
};
|
|
163
185
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-generator.js","sourceRoot":"","sources":["../../src/generator/rule-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAS9D,MAAM,YAAY,GAAG,CAAC,OAA0B,EAAU,EAAE,CAC1D,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AAE3D,SAAS,UAAU,CAAC,MAAqB,EAAE,MAAuB;IAChE,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK;SAC/B,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAChD,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,gBAAgB,GAAG,CAAC,GAAG,aAAa,CAAC;SACxC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,WAAW,CAAC;SACxE,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACxE,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClE,MAAM,oBAAoB,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IACpE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;IAClE,MAAM,OAAO,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAEzC,OAAO;mBACU,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI;0CACD,aAAa,GAAG,kBAAkB,IAAI,aAAa,
|
|
1
|
+
{"version":3,"file":"rule-generator.js","sourceRoot":"","sources":["../../src/generator/rule-generator.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/server.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export declare const TOOLS: readonly [{
|
|
|
15
15
|
readonly properties: {
|
|
16
16
|
readonly path: {
|
|
17
17
|
readonly type: "string";
|
|
18
|
-
readonly description: "app or monorepo-root directory (default \".\")";
|
|
18
|
+
readonly description: "app or monorepo-root directory on this machine (default \".\"), not a URL";
|
|
19
19
|
};
|
|
20
20
|
readonly deep: {
|
|
21
21
|
readonly type: "boolean";
|
|
@@ -38,7 +38,7 @@ export declare const TOOLS: readonly [{
|
|
|
38
38
|
readonly properties: {
|
|
39
39
|
readonly path: {
|
|
40
40
|
readonly type: "string";
|
|
41
|
-
readonly description: "app or monorepo-root directory (default \".\")";
|
|
41
|
+
readonly description: "app or monorepo-root directory on this machine (default \".\"), not a URL";
|
|
42
42
|
};
|
|
43
43
|
};
|
|
44
44
|
};
|
|
@@ -51,7 +51,7 @@ export declare const TOOLS: readonly [{
|
|
|
51
51
|
readonly idempotentHint: true;
|
|
52
52
|
readonly openWorldHint: false;
|
|
53
53
|
};
|
|
54
|
-
readonly description: "Explain
|
|
54
|
+
readonly description: "Explain one rule from archprint_scan in depth, by its label (e.g. AP-002, env-access, or \"lib !-> app\"): its statement, gate status, observed conformance and confidence floor, and every file that breaks it (scan lists only a few). For the forbidden-import rules (AP-001, AP-002) it also returns each confidence-gate condition with its value and threshold, how to fix a violation, and when not to adopt the rule. Read-only.";
|
|
55
55
|
readonly inputSchema: {
|
|
56
56
|
readonly type: "object";
|
|
57
57
|
readonly properties: {
|
|
@@ -61,11 +61,34 @@ export declare const TOOLS: readonly [{
|
|
|
61
61
|
};
|
|
62
62
|
readonly path: {
|
|
63
63
|
readonly type: "string";
|
|
64
|
-
readonly description: "app or monorepo-root directory (default \".\")";
|
|
64
|
+
readonly description: "app or monorepo-root directory on this machine (default \".\"), not a URL";
|
|
65
65
|
};
|
|
66
66
|
};
|
|
67
67
|
readonly required: readonly ["id"];
|
|
68
68
|
};
|
|
69
|
+
}, {
|
|
70
|
+
readonly name: "archprint_check";
|
|
71
|
+
readonly title: "Check a change against adopted rules";
|
|
72
|
+
readonly annotations: {
|
|
73
|
+
readonly readOnlyHint: true;
|
|
74
|
+
readonly destructiveHint: false;
|
|
75
|
+
readonly idempotentHint: true;
|
|
76
|
+
readonly openWorldHint: false;
|
|
77
|
+
};
|
|
78
|
+
readonly description: "Check the current change, including uncommitted edits, against the rules this repo adopted with archprint init or generate, and report only the violations the change introduces (file, line, rule, and the evidence for the rule), plus those it fixed. Use it before finishing a change. Compares with `base` (a branch or commit, default origin/HEAD). Read-only: the files of the base commit are copied to a temporary folder outside the repo and deleted afterwards; it runs no git hooks and changes nothing in the repo. Returns status \"skipped\" with the reason when the repo has not adopted rules.";
|
|
79
|
+
readonly inputSchema: {
|
|
80
|
+
readonly type: "object";
|
|
81
|
+
readonly properties: {
|
|
82
|
+
readonly path: {
|
|
83
|
+
readonly type: "string";
|
|
84
|
+
readonly description: "repository directory where archprint was set up, on this machine (default \".\")";
|
|
85
|
+
};
|
|
86
|
+
readonly base: {
|
|
87
|
+
readonly type: "string";
|
|
88
|
+
readonly description: "branch or commit to compare against (default origin/HEAD)";
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
};
|
|
69
92
|
}];
|
|
70
93
|
export declare function runTool(name: string, args: Record<string, unknown>): unknown;
|
|
71
94
|
export type { ToolResponse };
|
package/dist/mcp/server.d.ts.map
CHANGED
|
@@ -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;AASlF,eAAO,MAAM,KAAK
|
|
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;AASlF,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+ER,CAAC;AAEX,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAoB5E;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"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
2
2
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
3
3
|
import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
|
|
4
|
-
import { explainTool, recommendTool, scanTool } from './tools.js';
|
|
4
|
+
import { checkTool, explainTool, recommendTool, scanTool } from './tools.js';
|
|
5
5
|
import { errorResponse, okResponse } from './tool-response.js';
|
|
6
6
|
const READ_ONLY = {
|
|
7
7
|
readOnlyHint: true,
|
|
@@ -18,7 +18,10 @@ export const TOOLS = [
|
|
|
18
18
|
inputSchema: {
|
|
19
19
|
type: 'object',
|
|
20
20
|
properties: {
|
|
21
|
-
path: {
|
|
21
|
+
path: {
|
|
22
|
+
type: 'string',
|
|
23
|
+
description: 'app or monorepo-root directory on this machine (default "."), not a URL',
|
|
24
|
+
},
|
|
22
25
|
deep: {
|
|
23
26
|
type: 'boolean',
|
|
24
27
|
description: 'resolve imports through barrels and aliases (slower, more accurate)',
|
|
@@ -34,7 +37,10 @@ export const TOOLS = [
|
|
|
34
37
|
inputSchema: {
|
|
35
38
|
type: 'object',
|
|
36
39
|
properties: {
|
|
37
|
-
path: {
|
|
40
|
+
path: {
|
|
41
|
+
type: 'string',
|
|
42
|
+
description: 'app or monorepo-root directory on this machine (default "."), not a URL',
|
|
43
|
+
},
|
|
38
44
|
},
|
|
39
45
|
},
|
|
40
46
|
},
|
|
@@ -42,7 +48,7 @@ export const TOOLS = [
|
|
|
42
48
|
name: 'archprint_explain',
|
|
43
49
|
title: 'Explain an architecture rule',
|
|
44
50
|
annotations: READ_ONLY,
|
|
45
|
-
description: 'Explain
|
|
51
|
+
description: 'Explain one rule from archprint_scan in depth, by its label (e.g. AP-002, env-access, or "lib !-> app"): its statement, gate status, observed conformance and confidence floor, and every file that breaks it (scan lists only a few). For the forbidden-import rules (AP-001, AP-002) it also returns each confidence-gate condition with its value and threshold, how to fix a violation, and when not to adopt the rule. Read-only.',
|
|
46
52
|
inputSchema: {
|
|
47
53
|
type: 'object',
|
|
48
54
|
properties: {
|
|
@@ -50,11 +56,33 @@ export const TOOLS = [
|
|
|
50
56
|
type: 'string',
|
|
51
57
|
description: 'rule label from archprint_scan, e.g. AP-002 or env-access',
|
|
52
58
|
},
|
|
53
|
-
path: {
|
|
59
|
+
path: {
|
|
60
|
+
type: 'string',
|
|
61
|
+
description: 'app or monorepo-root directory on this machine (default "."), not a URL',
|
|
62
|
+
},
|
|
54
63
|
},
|
|
55
64
|
required: ['id'],
|
|
56
65
|
},
|
|
57
66
|
},
|
|
67
|
+
{
|
|
68
|
+
name: 'archprint_check',
|
|
69
|
+
title: 'Check a change against adopted rules',
|
|
70
|
+
annotations: READ_ONLY,
|
|
71
|
+
description: 'Check the current change, including uncommitted edits, against the rules this repo adopted with archprint init or generate, and report only the violations the change introduces (file, line, rule, and the evidence for the rule), plus those it fixed. Use it before finishing a change. Compares with `base` (a branch or commit, default origin/HEAD). Read-only: the files of the base commit are copied to a temporary folder outside the repo and deleted afterwards; it runs no git hooks and changes nothing in the repo. Returns status "skipped" with the reason when the repo has not adopted rules.',
|
|
72
|
+
inputSchema: {
|
|
73
|
+
type: 'object',
|
|
74
|
+
properties: {
|
|
75
|
+
path: {
|
|
76
|
+
type: 'string',
|
|
77
|
+
description: 'repository directory where archprint was set up, on this machine (default ".")',
|
|
78
|
+
},
|
|
79
|
+
base: {
|
|
80
|
+
type: 'string',
|
|
81
|
+
description: 'branch or commit to compare against (default origin/HEAD)',
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
},
|
|
58
86
|
];
|
|
59
87
|
export function runTool(name, args) {
|
|
60
88
|
const input = typeof args.path === 'string' ? args.path : '.';
|
|
@@ -68,6 +96,11 @@ export function runTool(name, args) {
|
|
|
68
96
|
throw new Error('archprint_explain requires an "id" (for example AP-002).');
|
|
69
97
|
}
|
|
70
98
|
return explainTool(args.id, input);
|
|
99
|
+
case 'archprint_check':
|
|
100
|
+
if (args.base !== undefined && typeof args.base !== 'string') {
|
|
101
|
+
throw new Error('archprint_check "base" must be a branch or commit name.');
|
|
102
|
+
}
|
|
103
|
+
return checkTool(input, args.base);
|
|
71
104
|
default:
|
|
72
105
|
throw new Error(`Unknown tool: ${name}`);
|
|
73
106
|
}
|
package/dist/mcp/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AACnG,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/tools.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type RuleSummary, type ScanSummary } from '../cli/summary.js';
|
|
2
2
|
import { type Recommendations } from '../cli/recommend.js';
|
|
3
|
+
import { type RuleGuidance } from '../cli/rule-guidance.js';
|
|
3
4
|
import type { DetectedPattern } from '../detector/pattern-detector.js';
|
|
4
5
|
export interface AppScan extends ScanSummary {
|
|
5
6
|
app: string;
|
|
@@ -13,6 +14,8 @@ export interface ExplainResult {
|
|
|
13
14
|
app: string;
|
|
14
15
|
rule: RuleSummary;
|
|
15
16
|
pattern?: DetectedPattern;
|
|
17
|
+
guidance?: RuleGuidance;
|
|
16
18
|
}
|
|
17
19
|
export declare function explainTool(id: string, input: string): ExplainResult;
|
|
20
|
+
export declare function checkTool(input: string, base?: string): Record<string, unknown>;
|
|
18
21
|
//# sourceMappingURL=tools.d.ts.map
|
package/dist/mcp/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAOA,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,WAAW,EACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAqC,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC9F,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AA4BvE,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;IAC1B,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CAuBpE;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAI/E"}
|
package/dist/mcp/tools.js
CHANGED
|
@@ -1,11 +1,25 @@
|
|
|
1
1
|
import * as path from 'node:path';
|
|
2
|
+
import { fileURLToPath } from 'node:url';
|
|
2
3
|
import { discoverAppDirs } from '../scanner/app-dirs.js';
|
|
3
4
|
import { detectEnforcers } from '../scanner/enforcers.js';
|
|
4
5
|
import { scanRepo } from '../cli/scan.js';
|
|
6
|
+
import { checkReport, runCheck } from '../cli/check.js';
|
|
7
|
+
import { ARCHPRINT_DIR } from '../cli/generate.js';
|
|
5
8
|
import { summarizeRules, toScanSummary, } from '../cli/summary.js';
|
|
6
9
|
import { buildRecommendations, detectStack } from '../cli/recommend.js';
|
|
10
|
+
import { guidanceFor } from '../cli/rule-guidance.js';
|
|
11
|
+
const URL_SCHEME = /^[a-z][a-z0-9+.-]*:\/\//i;
|
|
12
|
+
const localPath = (input) => {
|
|
13
|
+
const trimmed = input.trim();
|
|
14
|
+
if (trimmed.toLowerCase().startsWith('file://'))
|
|
15
|
+
return fileURLToPath(trimmed);
|
|
16
|
+
if (URL_SCHEME.test(trimmed)) {
|
|
17
|
+
throw new Error(`"${input}" is a URL, but this server reads directories on the machine it runs on. Clone the repository and pass its directory, or run \`archprint mcp --http\` to scan a public repository by URL.`);
|
|
18
|
+
}
|
|
19
|
+
return trimmed;
|
|
20
|
+
};
|
|
7
21
|
function resolveAppDirs(input) {
|
|
8
|
-
const root = path.resolve(input);
|
|
22
|
+
const root = path.resolve(localPath(input));
|
|
9
23
|
const dirs = discoverAppDirs(root);
|
|
10
24
|
if (dirs.length === 0) {
|
|
11
25
|
throw new Error(`No tsconfig.json found under ${root}. Point archprint at an app directory (a directory with a tsconfig.json); a monorepo root is fine.`);
|
|
@@ -37,10 +51,17 @@ export function explainTool(id, input) {
|
|
|
37
51
|
const rule = rules.find((candidate) => candidate.label.toLowerCase() === wanted);
|
|
38
52
|
if (rule) {
|
|
39
53
|
const pattern = scan.patterns.find((candidate) => candidate.config.id.toLowerCase() === wanted);
|
|
40
|
-
return {
|
|
54
|
+
return {
|
|
55
|
+
app: displayApp(dir, root),
|
|
56
|
+
rule,
|
|
57
|
+
...(pattern && { pattern: pattern.result, guidance: guidanceFor(pattern.config.name) }),
|
|
58
|
+
};
|
|
41
59
|
}
|
|
42
60
|
known.push(...rules.map((candidate) => candidate.label));
|
|
43
61
|
}
|
|
44
62
|
throw new Error(`No rule "${id}" found under ${path.resolve(input)}. Rules found: ${[...new Set(known)].join(', ') || 'none'}.`);
|
|
45
63
|
}
|
|
64
|
+
export function checkTool(input, base) {
|
|
65
|
+
return checkReport(runCheck({ cwd: path.resolve(localPath(input)), out: ARCHPRINT_DIR, ...(base && { base }) }));
|
|
66
|
+
}
|
|
46
67
|
//# sourceMappingURL=tools.js.map
|
package/dist/mcp/tools.js.map
CHANGED
|
@@ -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,EACL,cAAc,EACd,aAAa,GAGd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAwB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,11 @@ export interface ResolvedImport {
|
|
|
14
14
|
}
|
|
15
15
|
export declare function listSourceFiles(rootDir: string): string[];
|
|
16
16
|
export declare function walkRepo(rootDir: string): WalkedFile[];
|
|
17
|
+
export interface ImportLocation {
|
|
18
|
+
specifier: string;
|
|
19
|
+
line: number;
|
|
20
|
+
}
|
|
21
|
+
export declare function importLocations(absoluteFilePath: string): ImportLocation[];
|
|
17
22
|
export declare function isWorkspacePackagePath(filePath: string, workspacePackages: readonly string[]): boolean;
|
|
18
23
|
export declare function createImportAnalyzer(appDir: string, options?: {
|
|
19
24
|
resolve?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-walker.d.ts","sourceRoot":"","sources":["../../src/scanner/file-walker.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,sBAAsB,CAAC;AA2B9B,MAAM,WAAW,UAAW,SAAQ,kBAAkB;IACpD,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,WAAW,GAAG,UAAU,GAAG,YAAY,CAAC;AAEtF,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAsBD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"file-walker.d.ts","sourceRoot":"","sources":["../../src/scanner/file-walker.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,sBAAsB,CAAC;AA2B9B,MAAM,WAAW,UAAW,SAAQ,kBAAkB;IACpD,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,WAAW,GAAG,UAAU,GAAG,YAAY,CAAC;AAEtF,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAsBD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAwBzD;AAaD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAkBtD;AAqED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,eAAe,CAAC,gBAAgB,EAAE,MAAM,GAAG,cAAc,EAAE,CAE1E;AAuBD,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,SAAS,MAAM,EAAE,GACnC,OAAO,CAQT;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAClC,CAAC,gBAAgB,EAAE,MAAM,KAAK,cAAc,EAAE,CAqKhD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,cAAc,EAAE,CAEzF"}
|
|
@@ -47,7 +47,8 @@ export function listSourceFiles(rootDir) {
|
|
|
47
47
|
const files = [];
|
|
48
48
|
const isIgnored = createIgnoreFilter(rootDir);
|
|
49
49
|
const walk = (dir) => {
|
|
50
|
-
|
|
50
|
+
const entries = readdirSync(dir, { withFileTypes: true }).sort((a, b) => a.name < b.name ? -1 : a.name > b.name ? 1 : 0);
|
|
51
|
+
for (const entry of entries) {
|
|
51
52
|
const full = path.join(dir, entry.name);
|
|
52
53
|
if (entry.isDirectory()) {
|
|
53
54
|
if (!SKIP_DIRS.has(entry.name) &&
|
|
@@ -119,12 +120,14 @@ function parseFastImports(absoluteFilePath) {
|
|
|
119
120
|
}
|
|
120
121
|
const { source, scriptKind } = parseableSource(absoluteFilePath, readFileSync(absoluteFilePath, 'utf8'));
|
|
121
122
|
const sourceFile = ts.createSourceFile(absoluteFilePath, source, ts.ScriptTarget.Latest, false, scriptKind);
|
|
123
|
+
const lineOf = (node) => sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile)).line + 1;
|
|
122
124
|
const raw = [];
|
|
123
125
|
for (const statement of sourceFile.statements) {
|
|
124
126
|
if (ts.isImportDeclaration(statement) && ts.isStringLiteral(statement.moduleSpecifier)) {
|
|
125
127
|
raw.push({
|
|
126
128
|
specifier: statement.moduleSpecifier.text,
|
|
127
129
|
hasValueBinding: nodeHasValueBinding(statement.importClause),
|
|
130
|
+
line: lineOf(statement),
|
|
128
131
|
});
|
|
129
132
|
}
|
|
130
133
|
}
|
|
@@ -133,7 +136,7 @@ function parseFastImports(absoluteFilePath) {
|
|
|
133
136
|
node.expression.kind === ts.SyntaxKind.ImportKeyword &&
|
|
134
137
|
node.arguments.length > 0 &&
|
|
135
138
|
ts.isStringLiteral(node.arguments[0])) {
|
|
136
|
-
raw.push({ specifier: node.arguments[0].text, hasValueBinding: true });
|
|
139
|
+
raw.push({ specifier: node.arguments[0].text, hasValueBinding: true, line: lineOf(node) });
|
|
137
140
|
}
|
|
138
141
|
ts.forEachChild(node, visit);
|
|
139
142
|
};
|
|
@@ -143,6 +146,9 @@ function parseFastImports(absoluteFilePath) {
|
|
|
143
146
|
fastParseCache.set(absoluteFilePath, { mtimeMs: stat.mtimeMs, size: stat.size, raw });
|
|
144
147
|
return raw;
|
|
145
148
|
}
|
|
149
|
+
export function importLocations(absoluteFilePath) {
|
|
150
|
+
return parseFastImports(absoluteFilePath).map(({ specifier, line }) => ({ specifier, line }));
|
|
151
|
+
}
|
|
146
152
|
function specifierLevelImports(absoluteFilePath, classifyEdge) {
|
|
147
153
|
return parseFastImports(absoluteFilePath).map((imp) => ({
|
|
148
154
|
specifier: imp.specifier,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-walker.js","sourceRoot":"","sources":["../../src/scanner/file-walker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"file-walker.js","sourceRoot":"","sources":["../../src/scanner/file-walker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-graph.d.ts","sourceRoot":"","sources":["../../src/scanner/import-graph.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"import-graph.d.ts","sourceRoot":"","sources":["../../src/scanner/import-graph.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,KAAK,UAAU,EAA2B,MAAM,qBAAqB,CAAC;AAE/E,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,KAAG,UAAU,EAIxD,CAAC;AAEN,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,WAAW,CAuC9F;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAC/B,MAAM,EAAE,EAAE,CAkDZ"}
|
|
@@ -2,7 +2,7 @@ import * as path from 'node:path';
|
|
|
2
2
|
import { createImportAnalyzer, walkRepo, } from './file-walker.js';
|
|
3
3
|
import { buildWorkspaceMap } from './workspace-resolver.js';
|
|
4
4
|
import { resolveFirstPartyImport } from './resolve-import.js';
|
|
5
|
-
const buildAliasEntries = (appDir) => Object.entries(buildWorkspaceMap(appDir)).map(([key, value]) => ({
|
|
5
|
+
export const buildAliasEntries = (appDir) => Object.entries(buildWorkspaceMap(appDir)).map(([key, value]) => ({
|
|
6
6
|
prefix: key.replace(/\/?\*$/, ''),
|
|
7
7
|
dir: path.resolve(appDir, String(value).replace(/\/?\*$/, '')),
|
|
8
8
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-graph.js","sourceRoot":"","sources":["../../src/scanner/import-graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EACL,oBAAoB,EAEpB,QAAQ,GAET,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAmB,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE/E,MAAM,iBAAiB,GAAG,CAAC,MAAc,EAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"import-graph.js","sourceRoot":"","sources":["../../src/scanner/import-graph.ts"],"names":[],"mappings":"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"}
|