@nifrajs/cli 2.13.0 → 3.1.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/dist/capabilities-tool.d.ts +54 -1
- package/dist/capabilities-tool.d.ts.map +1 -1
- package/dist/capabilities-tool.js +146 -18
- package/dist/capabilities-tool.js.map +1 -1
- package/dist/check.d.ts +11 -11
- package/dist/check.d.ts.map +1 -1
- package/dist/check.js +260 -49
- package/dist/check.js.map +1 -1
- package/dist/cli.d.ts +11 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +130 -414
- package/dist/cli.js.map +1 -1
- package/dist/command-catalog.d.ts +250 -0
- package/dist/command-catalog.d.ts.map +1 -0
- package/dist/command-catalog.js +1032 -0
- package/dist/command-catalog.js.map +1 -0
- package/dist/contracts.d.ts +9 -0
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js +22 -6
- package/dist/contracts.js.map +1 -1
- package/dist/doctor.d.ts +55 -0
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +82 -9
- package/dist/doctor.js.map +1 -1
- package/dist/env-file.d.ts +17 -0
- package/dist/env-file.d.ts.map +1 -0
- package/dist/env-file.js +113 -0
- package/dist/env-file.js.map +1 -0
- package/dist/fix-recipes.d.ts.map +1 -1
- package/dist/fix-recipes.js +91 -15
- package/dist/fix-recipes.js.map +1 -1
- package/dist/internal/reserved-segment-codemod.d.ts +36 -0
- package/dist/internal/reserved-segment-codemod.d.ts.map +1 -0
- package/dist/internal/reserved-segment-codemod.js +134 -0
- package/dist/internal/reserved-segment-codemod.js.map +1 -0
- package/dist/internal/typescript-import.d.ts +1 -1
- package/dist/internal/typescript-import.d.ts.map +1 -1
- package/dist/internal/typescript-import.js +62 -11
- package/dist/internal/typescript-import.js.map +1 -1
- package/dist/introspect.d.ts +26 -1
- package/dist/introspect.d.ts.map +1 -1
- package/dist/introspect.js +74 -24
- package/dist/introspect.js.map +1 -1
- package/dist/load.d.ts.map +1 -1
- package/dist/load.js +22 -5
- package/dist/load.js.map +1 -1
- package/dist/manifest-tool.d.ts +15 -1
- package/dist/manifest-tool.d.ts.map +1 -1
- package/dist/manifest-tool.js +23 -9
- package/dist/manifest-tool.js.map +1 -1
- package/dist/mcp-http.js +1 -1
- package/dist/mcp-http.js.map +1 -1
- package/dist/mcp.d.ts +16 -0
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +127 -355
- package/dist/mcp.js.map +1 -1
- package/dist/project-facts.d.ts +40 -0
- package/dist/project-facts.d.ts.map +1 -0
- package/dist/project-facts.js +36 -0
- package/dist/project-facts.js.map +1 -0
- package/dist/recipes/3.0.0.d.ts +10 -0
- package/dist/recipes/3.0.0.d.ts.map +1 -0
- package/dist/recipes/3.0.0.js +23 -0
- package/dist/recipes/3.0.0.js.map +1 -0
- package/dist/recipes/index.d.ts.map +1 -1
- package/dist/recipes/index.js +2 -0
- package/dist/recipes/index.js.map +1 -1
- package/dist/release-verification.d.ts.map +1 -1
- package/dist/release-verification.js +15 -0
- package/dist/release-verification.js.map +1 -1
- package/dist/rules/comment-markers.d.ts +8 -0
- package/dist/rules/comment-markers.d.ts.map +1 -1
- package/dist/rules/comment-markers.js +36 -0
- package/dist/rules/comment-markers.js.map +1 -1
- package/dist/rules/index.d.ts +2 -3
- package/dist/rules/index.d.ts.map +1 -1
- package/dist/rules/index.js.map +1 -1
- package/dist/rules/routes.d.ts.map +1 -1
- package/dist/rules/routes.js +29 -44
- package/dist/rules/routes.js.map +1 -1
- package/dist/rules/security.js +14 -14
- package/dist/rules/security.js.map +1 -1
- package/dist/workspace-link.d.ts +37 -0
- package/dist/workspace-link.d.ts.map +1 -0
- package/dist/workspace-link.js +72 -0
- package/dist/workspace-link.js.map +1 -0
- package/docs/examples.json +1 -1
- package/docs/llms-full.txt +362 -20
- package/docs/types.json +956 -56
- package/package.json +9 -9
- package/src/capabilities-tool.ts +229 -21
- package/src/check.ts +312 -65
- package/src/cli.ts +140 -405
- package/src/command-catalog.ts +1435 -0
- package/src/contracts.ts +28 -7
- package/src/doctor.ts +134 -12
- package/src/env-file.ts +121 -0
- package/src/fix-recipes.ts +101 -15
- package/src/internal/reserved-segment-codemod.ts +150 -0
- package/src/internal/typescript-import.ts +61 -11
- package/src/introspect.ts +82 -21
- package/src/load.ts +25 -6
- package/src/manifest-tool.ts +43 -12
- package/src/mcp-http.ts +1 -1
- package/src/mcp.ts +163 -420
- package/src/project-facts.ts +86 -0
- package/src/recipes/3.0.0.ts +24 -0
- package/src/recipes/index.ts +2 -0
- package/src/release-verification.ts +17 -0
- package/src/rules/comment-markers.ts +36 -0
- package/src/rules/index.ts +3 -4
- package/src/rules/routes.ts +30 -44
- package/src/rules/security.ts +14 -14
- package/src/workspace-link.ts +80 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-catalog.js","sourceRoot":"","sources":["../src/command-catalog.ts"],"names":[],"mappings":"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"}
|
package/dist/contracts.d.ts
CHANGED
|
@@ -9,11 +9,20 @@ export interface ContractsLock {
|
|
|
9
9
|
}
|
|
10
10
|
export declare const DEFAULT_CONTRACTS_LOCK = "contracts.lock.json";
|
|
11
11
|
export declare function digestRoute(route: ReflectedRoute): Promise<ContractDigest>;
|
|
12
|
+
/** The digest a route with NO declared schema produces on both sides - `sha256("{}")`. A lock whose
|
|
13
|
+
* every route hashes to this is guarding nothing: drift detection can only ever compare empty schema to
|
|
14
|
+
* empty schema. Computed through the same canonical/stringify path as {@link digestRoute} so it tracks
|
|
15
|
+
* that path rather than a hard-coded literal. */
|
|
16
|
+
export declare function emptySchemaDigest(): Promise<string>;
|
|
17
|
+
/** Whether every route in `lock` hashes to the empty-schema digest (so no route declares a schema). An
|
|
18
|
+
* empty `routes` map is NOT vacuous in this sense - there is no route whose contract went unguarded. */
|
|
19
|
+
export declare function isVacuousLock(lock: ContractsLock): Promise<boolean>;
|
|
12
20
|
export declare function buildContractsLock(source: unknown): Promise<ContractsLock>;
|
|
13
21
|
export declare function snapshotContracts(cwd: string, out?: string): Promise<ContractsLock>;
|
|
14
22
|
export declare function parseContractsLock(value: unknown): ContractsLock;
|
|
15
23
|
export declare function checkContractsLock(cwd: string, file?: string): Promise<{
|
|
16
24
|
present: boolean;
|
|
25
|
+
vacuous: boolean;
|
|
17
26
|
diagnostics: Array<{
|
|
18
27
|
route?: string;
|
|
19
28
|
message: string;
|
package/dist/contracts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAAiB,MAAM,0BAA0B,CAAA;AAE7E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;IACnB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAA;CAC1D;AAED,eAAO,MAAM,sBAAsB,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAAiB,MAAM,0BAA0B,CAAA;AAE7E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;IACnB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAA;CAC1D;AAED,eAAO,MAAM,sBAAsB,wBAAwB,CAAA;AAkD3D,wBAAsB,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAIhF;AAED;;;iDAGiD;AACjD,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAEzD;AAED;wGACwG;AACxG,wBAAsB,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAKzE;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAYhF;AAYD,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,GAAG,SAAyB,GAC3B,OAAO,CAAC,aAAa,CAAC,CAIxB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAwBhE;AAED,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,IAAI,SAAyB,GAC5B,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,KAAK,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACxD,CAAC,CAwBD"}
|
package/dist/contracts.js
CHANGED
|
@@ -37,8 +37,7 @@ async function sha256(value) {
|
|
|
37
37
|
const digest = new Uint8Array(await crypto.subtle.digest("SHA-256", bytes));
|
|
38
38
|
return [...digest].map((item) => item.toString(16).padStart(2, "0")).join("");
|
|
39
39
|
}
|
|
40
|
-
function schemaValue(
|
|
41
|
-
const schema = route.schema;
|
|
40
|
+
function schemaValue(schema, side) {
|
|
42
41
|
if (schema === undefined)
|
|
43
42
|
return {};
|
|
44
43
|
if (side === "request") {
|
|
@@ -58,10 +57,26 @@ function schemaValue(route, side) {
|
|
|
58
57
|
};
|
|
59
58
|
}
|
|
60
59
|
export async function digestRoute(route) {
|
|
61
|
-
const request = JSON.stringify(canonical(schemaValue(route, "request")));
|
|
62
|
-
const response = JSON.stringify(canonical(schemaValue(route, "response")));
|
|
60
|
+
const request = JSON.stringify(canonical(schemaValue(route.schema, "request")));
|
|
61
|
+
const response = JSON.stringify(canonical(schemaValue(route.schema, "response")));
|
|
63
62
|
return { request: await sha256(request), response: await sha256(response) };
|
|
64
63
|
}
|
|
64
|
+
/** The digest a route with NO declared schema produces on both sides - `sha256("{}")`. A lock whose
|
|
65
|
+
* every route hashes to this is guarding nothing: drift detection can only ever compare empty schema to
|
|
66
|
+
* empty schema. Computed through the same canonical/stringify path as {@link digestRoute} so it tracks
|
|
67
|
+
* that path rather than a hard-coded literal. */
|
|
68
|
+
export async function emptySchemaDigest() {
|
|
69
|
+
return sha256(JSON.stringify(canonical(schemaValue(undefined, "request"))));
|
|
70
|
+
}
|
|
71
|
+
/** Whether every route in `lock` hashes to the empty-schema digest (so no route declares a schema). An
|
|
72
|
+
* empty `routes` map is NOT vacuous in this sense - there is no route whose contract went unguarded. */
|
|
73
|
+
export async function isVacuousLock(lock) {
|
|
74
|
+
const digests = Object.values(lock.routes);
|
|
75
|
+
if (digests.length === 0)
|
|
76
|
+
return false;
|
|
77
|
+
const empty = await emptySchemaDigest();
|
|
78
|
+
return digests.every((d) => d.request === empty && d.response === empty);
|
|
79
|
+
}
|
|
65
80
|
export async function buildContractsLock(source) {
|
|
66
81
|
const routes = Object.fromEntries(await Promise.all(reflectRoutes(source).map(async (route) => [`${route.method} ${route.path}`, await digestRoute(route)])));
|
|
67
82
|
return {
|
|
@@ -111,9 +126,10 @@ export function parseContractsLock(value) {
|
|
|
111
126
|
export async function checkContractsLock(cwd, file = DEFAULT_CONTRACTS_LOCK) {
|
|
112
127
|
const path = resolve(cwd, file);
|
|
113
128
|
if (!existsSync(path))
|
|
114
|
-
return { present: false, diagnostics: [] };
|
|
129
|
+
return { present: false, vacuous: false, diagnostics: [] };
|
|
115
130
|
const parsed = parseContractsLock(JSON.parse(await Bun.file(path).text()));
|
|
116
131
|
const current = await buildContractsLock(await loadBackend(cwd));
|
|
132
|
+
const vacuous = await isVacuousLock(current);
|
|
117
133
|
const diagnostics = [];
|
|
118
134
|
const keys = new Set([...Object.keys(parsed.routes), ...Object.keys(current.routes)]);
|
|
119
135
|
for (const key of [...keys].sort()) {
|
|
@@ -129,6 +145,6 @@ export async function checkContractsLock(cwd, file = DEFAULT_CONTRACTS_LOCK) {
|
|
|
129
145
|
});
|
|
130
146
|
}
|
|
131
147
|
}
|
|
132
|
-
return { present: true, diagnostics };
|
|
148
|
+
return { present: true, vacuous, diagnostics };
|
|
133
149
|
}
|
|
134
150
|
//# sourceMappingURL=contracts.js.map
|
package/dist/contracts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAuB,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAY7E,MAAM,CAAC,MAAM,sBAAsB,GAAG,qBAAqB,CAAA;AAC3D,MAAM,MAAM,GAAG,gBAAgB,CAAA;AAE/B,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACzE,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC,CAAC,SAAS,CAAA;AACf,CAAC;AAED,SAAS,SAAS,CAAC,KAAc,EAAE,GAAY;IAC7C,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE,CAAC;QAChF,OAAO,SAAS,CAAA;IAClB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;IACrE,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC9B,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,KAAK,CAAA;IACtC,MAAM,GAAG,GAA4B,EAAE,CAAA;IACvC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAA;QAC1C,IAAI,IAAI,KAAK,SAAS;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC1C,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,KAAa;IACjC,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC7C,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAA;IAC3E,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAC/E,CAAC;AAED,SAAS,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"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"}
|
package/dist/doctor.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type IdentityParityCopy, type IdentityParityFinding } from "@nifrajs/web/internal/parity";
|
|
2
2
|
import { type SourceFinding } from "./check.js";
|
|
3
|
+
import { type ToolingDrift } from "./mcp-root.js";
|
|
3
4
|
import { type PipelineReport } from "./pipeline-report.js";
|
|
4
5
|
import { type ResolvedTarget } from "./port.js";
|
|
5
6
|
/**
|
|
@@ -29,10 +30,37 @@ export interface DoctorResult {
|
|
|
29
30
|
readonly findings: readonly DoctorFinding[];
|
|
30
31
|
/** Packages that resolve to more than one physical install across this workspace. */
|
|
31
32
|
readonly duplicateInstalls: readonly DuplicateInstallFinding[];
|
|
33
|
+
/**
|
|
34
|
+
* Duplicate installs the app declared single-copy (`"nifra": { "singleCopy": [...] }`), which nifra
|
|
35
|
+
* collapses to one copy at resolve time. Reported so the topology stays visible, never folded into
|
|
36
|
+
* `ok`: the copies exist on disk but cannot both load. Absent on an older result shape.
|
|
37
|
+
*/
|
|
38
|
+
readonly deduplicatedInstalls?: readonly DuplicateInstallFinding[];
|
|
39
|
+
/**
|
|
40
|
+
* Which tree the identity scan actually looked at, in the same words the build/dev preflight uses.
|
|
41
|
+
* Both run the same seam now; printing the basis is what lets a reader confirm that instead of
|
|
42
|
+
* having to trust it. Absent on an older result shape.
|
|
43
|
+
*/
|
|
44
|
+
readonly identityBasis?: string;
|
|
45
|
+
/**
|
|
46
|
+
* The identity scan stopped at the workspace-enumeration cap, so "no duplicates" means "none in the
|
|
47
|
+
* part that was scanned". Never folded into `ok` - a huge workspace is not a defect - but it is
|
|
48
|
+
* always printed, because an unqualified clean bill from a partial scan is the failure mode this
|
|
49
|
+
* whole report exists to avoid.
|
|
50
|
+
*/
|
|
51
|
+
readonly identityScanTruncated?: boolean;
|
|
32
52
|
/** Workspace-linked deps whose `default`-condition artifact lags their `bun`-condition source.
|
|
33
53
|
* Advisory (never folded into `ok`): while actively editing a linked package its dist is always
|
|
34
54
|
* momentarily behind - the finding matters when a dev server starts against it. */
|
|
35
55
|
readonly staleDists: readonly StaleDistFinding[];
|
|
56
|
+
/**
|
|
57
|
+
* The running CLI is a different feature version than the `@nifrajs/cli` (or `@nifrajs/core`) the
|
|
58
|
+
* project installs. Advisory (never folded into `ok`): a stale global/bunx binary answering about a
|
|
59
|
+
* project it does not match is an environment problem, not a defect in the project - but every
|
|
60
|
+
* answer it gives (types, checks, docs) reads as authoritative. Present only when `cliVersion` was
|
|
61
|
+
* supplied and the feature versions disagree. Computed by {@link detectToolingDrift}.
|
|
62
|
+
*/
|
|
63
|
+
readonly toolingDrift?: ToolingDrift;
|
|
36
64
|
/** Static production-readiness evidence for the selected deploy target. */
|
|
37
65
|
readonly readiness?: DoctorReadiness;
|
|
38
66
|
/**
|
|
@@ -87,9 +115,32 @@ export interface DoctorSkippedFix {
|
|
|
87
115
|
* The shared parity seam resolves the governing workspace root, while paths are still REPORTED
|
|
88
116
|
* relative to `cwd` so the findings read the way the user's terminal does. */
|
|
89
117
|
export declare function collectDuplicateInstalls(cwd: string, rootPackage: Record<string, unknown>): Promise<DuplicateInstallFinding[]>;
|
|
118
|
+
/**
|
|
119
|
+
* Both halves of the identity scan: what still breaks, and what a declaration already collapses -
|
|
120
|
+
* plus the basis they were decided on.
|
|
121
|
+
*
|
|
122
|
+
* The basis travels with the findings because doctor and the build/dev preflight answer the same
|
|
123
|
+
* question, and a reader who gets two answers needs to see which tree each one looked at. They now
|
|
124
|
+
* scan identically (one shared seam, one workspace resolution), so the line is corroboration rather
|
|
125
|
+
* than an excuse - and it is the only way a TRUNCATED scan can be told apart from a clean one.
|
|
126
|
+
*/
|
|
127
|
+
export declare function collectAllDuplicateInstalls(cwd: string, rootPackage: Record<string, unknown>): Promise<{
|
|
128
|
+
readonly duplicates: DuplicateInstallFinding[];
|
|
129
|
+
readonly deduplicated: DuplicateInstallFinding[];
|
|
130
|
+
readonly basis: string;
|
|
131
|
+
readonly truncated: boolean;
|
|
132
|
+
}>;
|
|
90
133
|
/** A workspace-linked dependency whose build artifact is older than its source. */
|
|
91
134
|
export interface StaleDistFinding {
|
|
92
135
|
readonly package: string;
|
|
136
|
+
/** Where the linked package actually lives, relative to the doctor root when possible. A workspace
|
|
137
|
+
* link routinely points into a SIBLING repo, so "rebuild it" is not actionable without the path -
|
|
138
|
+
* this is the directory the rebuild runs in. */
|
|
139
|
+
readonly packageDir: string;
|
|
140
|
+
/** The package's own build script name (`scripts.build` etc.), or `undefined` when it declares none -
|
|
141
|
+
* then the rebuild cannot be automated and the report says so instead of suggesting a command that
|
|
142
|
+
* would fail. */
|
|
143
|
+
readonly buildScript: string | undefined;
|
|
93
144
|
/** The `default`-condition artifact (what Vite's SSR runner, vitest, and node consumers load),
|
|
94
145
|
* relative to the doctor root when possible. `missing: true` means it was never built at all. */
|
|
95
146
|
readonly distFile: string;
|
|
@@ -114,11 +165,13 @@ export declare function collectStaleWorkspaceDists(cwd: string, rootPackage: Rec
|
|
|
114
165
|
export declare function collectDoctorResult(cwd: string, opts?: {
|
|
115
166
|
readonly target?: string;
|
|
116
167
|
readonly strict?: boolean;
|
|
168
|
+
readonly cliVersion?: string;
|
|
117
169
|
}): Promise<DoctorResult>;
|
|
118
170
|
/** Safely add undeclared imports to package.json when the version can be inferred without network I/O. */
|
|
119
171
|
export declare function applyDoctorAutoFix(cwd: string, opts?: {
|
|
120
172
|
readonly target?: string;
|
|
121
173
|
readonly strict?: boolean;
|
|
174
|
+
readonly cliVersion?: string;
|
|
122
175
|
}): Promise<DoctorResult>;
|
|
123
176
|
/** Run doctor; print a report (`--json` for machine output) and return whether it passed. */
|
|
124
177
|
export declare function runDoctor(cwd: string, opts?: {
|
|
@@ -126,5 +179,7 @@ export declare function runDoctor(cwd: string, opts?: {
|
|
|
126
179
|
readonly autoFix?: boolean;
|
|
127
180
|
readonly strict?: boolean;
|
|
128
181
|
readonly target?: string;
|
|
182
|
+
/** The running CLI's own version, so doctor can flag a binary that mismatches the project. */
|
|
183
|
+
readonly cliVersion?: string;
|
|
129
184
|
}): Promise<boolean>;
|
|
130
185
|
//# sourceMappingURL=doctor.d.ts.map
|
package/dist/doctor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAsBA,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/doctor.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { readdir, stat } from "node:fs/promises";
|
|
2
2
|
import { builtinModules } from "node:module";
|
|
3
3
|
import { dirname, join, relative, sep } from "node:path";
|
|
4
|
-
import { collectIdentityParity, displayPath, resolvedInstalledCopy, } from "@nifrajs/web/internal/parity";
|
|
4
|
+
import { collectIdentityParity, displayPath, identityParityBasis, resolvedInstalledCopy, } from "@nifrajs/web/internal/parity";
|
|
5
5
|
import { codePositionMask, stripComments, walkSource } from "./check.js";
|
|
6
|
+
import { detectToolingDrift } from "./mcp-root.js";
|
|
6
7
|
import { collectPipelineReport } from "./pipeline-report.js";
|
|
7
8
|
import { resolveTarget } from "./port.js";
|
|
9
|
+
import { buildScriptName } from "./workspace-link.js";
|
|
8
10
|
// Runtime-provided modules that are never an npm dependency: Node core (bare + `node:` form) and Bun's
|
|
9
11
|
// own `bun` module. `node:`/`bun:`-prefixed specifiers are filtered in packageOf by prefix.
|
|
10
12
|
const BUILTINS = new Set([
|
|
@@ -203,11 +205,29 @@ const scopeForFile = (scopes, file) => scopes.find((scope) => scope.relativeRoot
|
|
|
203
205
|
* The shared parity seam resolves the governing workspace root, while paths are still REPORTED
|
|
204
206
|
* relative to `cwd` so the findings read the way the user's terminal does. */
|
|
205
207
|
export async function collectDuplicateInstalls(cwd, rootPackage) {
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
}))
|
|
208
|
+
return (await collectAllDuplicateInstalls(cwd, rootPackage)).duplicates;
|
|
209
|
+
}
|
|
210
|
+
const asDuplicateInstall = (finding) => ({
|
|
211
|
+
...finding,
|
|
212
|
+
copies: finding.copies.map((copy) => ({ ...copy })),
|
|
213
|
+
});
|
|
214
|
+
/**
|
|
215
|
+
* Both halves of the identity scan: what still breaks, and what a declaration already collapses -
|
|
216
|
+
* plus the basis they were decided on.
|
|
217
|
+
*
|
|
218
|
+
* The basis travels with the findings because doctor and the build/dev preflight answer the same
|
|
219
|
+
* question, and a reader who gets two answers needs to see which tree each one looked at. They now
|
|
220
|
+
* scan identically (one shared seam, one workspace resolution), so the line is corroboration rather
|
|
221
|
+
* than an excuse - and it is the only way a TRUNCATED scan can be told apart from a clean one.
|
|
222
|
+
*/
|
|
223
|
+
export async function collectAllDuplicateInstalls(cwd, rootPackage) {
|
|
224
|
+
const result = await collectIdentityParity(cwd, rootPackage);
|
|
225
|
+
return {
|
|
226
|
+
duplicates: result.findings.map(asDuplicateInstall),
|
|
227
|
+
deduplicated: result.deduplicated.map(asDuplicateInstall),
|
|
228
|
+
basis: identityParityBasis(result),
|
|
229
|
+
truncated: result.truncated,
|
|
230
|
+
};
|
|
211
231
|
}
|
|
212
232
|
/**
|
|
213
233
|
* Resolve one condition through an export-map entry: a string is terminal; an object takes the first
|
|
@@ -310,6 +330,8 @@ export async function collectStaleWorkspaceDists(cwd, rootPackage) {
|
|
|
310
330
|
}
|
|
311
331
|
if (newest === undefined)
|
|
312
332
|
continue;
|
|
333
|
+
const packageDir = displayPath(cwd, copy.path);
|
|
334
|
+
const buildScript = buildScriptName(meta);
|
|
313
335
|
// Report the package once, anchored on its stalest (or missing) artifact.
|
|
314
336
|
let worst;
|
|
315
337
|
for (const pair of pairs) {
|
|
@@ -318,6 +340,8 @@ export async function collectStaleWorkspaceDists(cwd, rootPackage) {
|
|
|
318
340
|
const finding = distStat === undefined
|
|
319
341
|
? {
|
|
320
342
|
package: name,
|
|
343
|
+
packageDir,
|
|
344
|
+
buildScript,
|
|
321
345
|
distFile: displayPath(cwd, distPath),
|
|
322
346
|
missing: true,
|
|
323
347
|
sourceFile: displayPath(cwd, newest.file),
|
|
@@ -326,6 +350,8 @@ export async function collectStaleWorkspaceDists(cwd, rootPackage) {
|
|
|
326
350
|
: distStat.mtimeMs < newest.mtimeMs
|
|
327
351
|
? {
|
|
328
352
|
package: name,
|
|
353
|
+
packageDir,
|
|
354
|
+
buildScript,
|
|
329
355
|
distFile: displayPath(cwd, distPath),
|
|
330
356
|
missing: false,
|
|
331
357
|
sourceFile: displayPath(cwd, newest.file),
|
|
@@ -475,12 +501,17 @@ export async function collectDoctorResult(cwd, opts = {}) {
|
|
|
475
501
|
}
|
|
476
502
|
}, { includeTests: true });
|
|
477
503
|
findings.sort((a, b) => a.file.localeCompare(b.file) || a.line - b.line);
|
|
478
|
-
const
|
|
504
|
+
const identity = await collectAllDuplicateInstalls(cwd, pkg);
|
|
505
|
+
const duplicateInstalls = identity.duplicates;
|
|
479
506
|
const staleDists = await collectStaleWorkspaceDists(cwd, pkg);
|
|
480
507
|
const pipeline = await collectPipelineReport(cwd);
|
|
481
508
|
const pipelineErrors = pipeline.findings.filter((f) => f.severity === "error");
|
|
482
509
|
const readiness = await collectDoctorReadiness(cwd, opts);
|
|
483
|
-
//
|
|
510
|
+
// A stale binary answering about a project it does not match is an environment condition, so like
|
|
511
|
+
// `staleDists` it is reported but never folded into `ok`. Skipped entirely when the caller did not
|
|
512
|
+
// pass its own version (e.g. the MCP server, which already annotates every result with the drift).
|
|
513
|
+
const toolingDrift = opts.cliVersion !== undefined ? await detectToolingDrift(cwd, opts.cliVersion) : undefined;
|
|
514
|
+
// `staleDists` and `toolingDrift` are advisory (see DoctorResult): they never fail `ok`.
|
|
484
515
|
return {
|
|
485
516
|
ok: findings.length === 0 &&
|
|
486
517
|
duplicateInstalls.length === 0 &&
|
|
@@ -489,8 +520,12 @@ export async function collectDoctorResult(cwd, opts = {}) {
|
|
|
489
520
|
ran: true,
|
|
490
521
|
findings,
|
|
491
522
|
duplicateInstalls,
|
|
523
|
+
deduplicatedInstalls: identity.deduplicated,
|
|
524
|
+
identityBasis: identity.basis,
|
|
525
|
+
...(identity.truncated ? { identityScanTruncated: true } : {}),
|
|
492
526
|
staleDists,
|
|
493
527
|
readiness,
|
|
528
|
+
...(toolingDrift !== undefined ? { toolingDrift } : {}),
|
|
494
529
|
...(pipeline.ran ? { pipeline } : {}),
|
|
495
530
|
};
|
|
496
531
|
}
|
|
@@ -629,8 +664,24 @@ export async function runDoctor(cwd, opts = {}) {
|
|
|
629
664
|
}
|
|
630
665
|
console.log("");
|
|
631
666
|
}
|
|
667
|
+
// Advisory, printed regardless of ok: the binary answering is a different feature version than the
|
|
668
|
+
// one the project builds with, so its types/checks/docs describe a surface the code does not have.
|
|
669
|
+
if (result.toolingDrift !== undefined) {
|
|
670
|
+
const drift = result.toolingDrift;
|
|
671
|
+
console.log(`⚠ this CLI is nifra ${drift.cli}, but the project installs ${drift.package} ${drift.project} - ` +
|
|
672
|
+
"its types, checks, and docs may describe a different version than your code builds with.");
|
|
673
|
+
console.log(" fix: run the project's own CLI (`bunx --bun nifra doctor` from the project directory, " +
|
|
674
|
+
"or ./node_modules/.bin/nifra)\n");
|
|
675
|
+
}
|
|
632
676
|
if (result.ok) {
|
|
633
677
|
console.log("✓ every imported package is declared and identity-sensitive installs are deduplicated");
|
|
678
|
+
if (result.identityBasis !== undefined)
|
|
679
|
+
console.log(` identity scan: ${result.identityBasis}`);
|
|
680
|
+
// A partial scan that prints a bare ✓ is a lie by omission - the packages past the cap were never
|
|
681
|
+
// looked at, and the reader has no way to know that from the tick alone.
|
|
682
|
+
if (result.identityScanTruncated === true) {
|
|
683
|
+
console.log(" ! the identity scan was truncated, so this is not a clean bill for the whole workspace");
|
|
684
|
+
}
|
|
634
685
|
return true;
|
|
635
686
|
}
|
|
636
687
|
// Group by package so the fix ("add X to dependencies") is stated once with its import sites.
|
|
@@ -650,15 +701,37 @@ export async function runDoctor(cwd, opts = {}) {
|
|
|
650
701
|
}
|
|
651
702
|
if (result.duplicateInstalls.length > 0) {
|
|
652
703
|
console.log(`${byPkg.size > 0 ? "\n" : ""}✗ identity-sensitive packages resolve to multiple physical copies:\n`);
|
|
704
|
+
if (result.identityBasis !== undefined)
|
|
705
|
+
console.log(` scan: ${result.identityBasis}\n`);
|
|
653
706
|
for (const finding of result.duplicateInstalls) {
|
|
654
|
-
console.log(` ${finding.package}`);
|
|
707
|
+
console.log(` ${finding.package} [${finding.cause}]`);
|
|
708
|
+
console.log(` versions: ${finding.versions.join(", ")}`);
|
|
655
709
|
for (const copy of finding.copies) {
|
|
656
710
|
console.log(` ${copy.version} at ${copy.path} ← ${copy.importers.join(", ")}`);
|
|
657
711
|
}
|
|
658
712
|
console.log(` ${finding.explanation}`);
|
|
713
|
+
// The shape of the split decides which fix can work, so it is printed above the fix itself.
|
|
714
|
+
if (finding.topology !== undefined)
|
|
715
|
+
console.log(` topology: ${finding.topology}`);
|
|
716
|
+
// Why a copy this directory never imports still counts. Without it, a workspace-wide answer
|
|
717
|
+
// read from inside one app looks like the tool checking the wrong project.
|
|
718
|
+
if (finding.scope !== undefined)
|
|
719
|
+
console.log(` scope: ${finding.scope}`);
|
|
659
720
|
console.log(` fix: ${finding.remediation}`);
|
|
660
721
|
}
|
|
661
722
|
}
|
|
723
|
+
// Not a failure and not silence: the copies are real, and whoever reads this report needs to know
|
|
724
|
+
// the graph is held together by a declaration rather than by the install.
|
|
725
|
+
if (result.deduplicatedInstalls !== undefined && result.deduplicatedInstalls.length > 0) {
|
|
726
|
+
console.log("\n• identity-sensitive packages deduplicated by declaration:\n");
|
|
727
|
+
for (const finding of result.deduplicatedInstalls) {
|
|
728
|
+
console.log(` ${finding.package} @ ${finding.versions.join(", ")}`);
|
|
729
|
+
for (const copy of finding.copies) {
|
|
730
|
+
console.log(` ${copy.path} ← ${copy.importers.join(", ")}`);
|
|
731
|
+
}
|
|
732
|
+
console.log(` ${finding.remediation}`);
|
|
733
|
+
}
|
|
734
|
+
}
|
|
662
735
|
if (result.readiness?.strict === true && result.readiness.ok === false) {
|
|
663
736
|
console.log("\n✗ production readiness is incomplete under --strict");
|
|
664
737
|
}
|