@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.
Files changed (114) hide show
  1. package/dist/capabilities-tool.d.ts +54 -1
  2. package/dist/capabilities-tool.d.ts.map +1 -1
  3. package/dist/capabilities-tool.js +146 -18
  4. package/dist/capabilities-tool.js.map +1 -1
  5. package/dist/check.d.ts +11 -11
  6. package/dist/check.d.ts.map +1 -1
  7. package/dist/check.js +260 -49
  8. package/dist/check.js.map +1 -1
  9. package/dist/cli.d.ts +11 -0
  10. package/dist/cli.d.ts.map +1 -1
  11. package/dist/cli.js +130 -414
  12. package/dist/cli.js.map +1 -1
  13. package/dist/command-catalog.d.ts +250 -0
  14. package/dist/command-catalog.d.ts.map +1 -0
  15. package/dist/command-catalog.js +1032 -0
  16. package/dist/command-catalog.js.map +1 -0
  17. package/dist/contracts.d.ts +9 -0
  18. package/dist/contracts.d.ts.map +1 -1
  19. package/dist/contracts.js +22 -6
  20. package/dist/contracts.js.map +1 -1
  21. package/dist/doctor.d.ts +55 -0
  22. package/dist/doctor.d.ts.map +1 -1
  23. package/dist/doctor.js +82 -9
  24. package/dist/doctor.js.map +1 -1
  25. package/dist/env-file.d.ts +17 -0
  26. package/dist/env-file.d.ts.map +1 -0
  27. package/dist/env-file.js +113 -0
  28. package/dist/env-file.js.map +1 -0
  29. package/dist/fix-recipes.d.ts.map +1 -1
  30. package/dist/fix-recipes.js +91 -15
  31. package/dist/fix-recipes.js.map +1 -1
  32. package/dist/internal/reserved-segment-codemod.d.ts +36 -0
  33. package/dist/internal/reserved-segment-codemod.d.ts.map +1 -0
  34. package/dist/internal/reserved-segment-codemod.js +134 -0
  35. package/dist/internal/reserved-segment-codemod.js.map +1 -0
  36. package/dist/internal/typescript-import.d.ts +1 -1
  37. package/dist/internal/typescript-import.d.ts.map +1 -1
  38. package/dist/internal/typescript-import.js +62 -11
  39. package/dist/internal/typescript-import.js.map +1 -1
  40. package/dist/introspect.d.ts +26 -1
  41. package/dist/introspect.d.ts.map +1 -1
  42. package/dist/introspect.js +74 -24
  43. package/dist/introspect.js.map +1 -1
  44. package/dist/load.d.ts.map +1 -1
  45. package/dist/load.js +22 -5
  46. package/dist/load.js.map +1 -1
  47. package/dist/manifest-tool.d.ts +15 -1
  48. package/dist/manifest-tool.d.ts.map +1 -1
  49. package/dist/manifest-tool.js +23 -9
  50. package/dist/manifest-tool.js.map +1 -1
  51. package/dist/mcp-http.js +1 -1
  52. package/dist/mcp-http.js.map +1 -1
  53. package/dist/mcp.d.ts +16 -0
  54. package/dist/mcp.d.ts.map +1 -1
  55. package/dist/mcp.js +127 -355
  56. package/dist/mcp.js.map +1 -1
  57. package/dist/project-facts.d.ts +40 -0
  58. package/dist/project-facts.d.ts.map +1 -0
  59. package/dist/project-facts.js +36 -0
  60. package/dist/project-facts.js.map +1 -0
  61. package/dist/recipes/3.0.0.d.ts +10 -0
  62. package/dist/recipes/3.0.0.d.ts.map +1 -0
  63. package/dist/recipes/3.0.0.js +23 -0
  64. package/dist/recipes/3.0.0.js.map +1 -0
  65. package/dist/recipes/index.d.ts.map +1 -1
  66. package/dist/recipes/index.js +2 -0
  67. package/dist/recipes/index.js.map +1 -1
  68. package/dist/release-verification.d.ts.map +1 -1
  69. package/dist/release-verification.js +15 -0
  70. package/dist/release-verification.js.map +1 -1
  71. package/dist/rules/comment-markers.d.ts +8 -0
  72. package/dist/rules/comment-markers.d.ts.map +1 -1
  73. package/dist/rules/comment-markers.js +36 -0
  74. package/dist/rules/comment-markers.js.map +1 -1
  75. package/dist/rules/index.d.ts +2 -3
  76. package/dist/rules/index.d.ts.map +1 -1
  77. package/dist/rules/index.js.map +1 -1
  78. package/dist/rules/routes.d.ts.map +1 -1
  79. package/dist/rules/routes.js +29 -44
  80. package/dist/rules/routes.js.map +1 -1
  81. package/dist/rules/security.js +14 -14
  82. package/dist/rules/security.js.map +1 -1
  83. package/dist/workspace-link.d.ts +37 -0
  84. package/dist/workspace-link.d.ts.map +1 -0
  85. package/dist/workspace-link.js +72 -0
  86. package/dist/workspace-link.js.map +1 -0
  87. package/docs/examples.json +1 -1
  88. package/docs/llms-full.txt +362 -20
  89. package/docs/types.json +956 -56
  90. package/package.json +9 -9
  91. package/src/capabilities-tool.ts +229 -21
  92. package/src/check.ts +312 -65
  93. package/src/cli.ts +140 -405
  94. package/src/command-catalog.ts +1435 -0
  95. package/src/contracts.ts +28 -7
  96. package/src/doctor.ts +134 -12
  97. package/src/env-file.ts +121 -0
  98. package/src/fix-recipes.ts +101 -15
  99. package/src/internal/reserved-segment-codemod.ts +150 -0
  100. package/src/internal/typescript-import.ts +61 -11
  101. package/src/introspect.ts +82 -21
  102. package/src/load.ts +25 -6
  103. package/src/manifest-tool.ts +43 -12
  104. package/src/mcp-http.ts +1 -1
  105. package/src/mcp.ts +163 -420
  106. package/src/project-facts.ts +86 -0
  107. package/src/recipes/3.0.0.ts +24 -0
  108. package/src/recipes/index.ts +2 -0
  109. package/src/release-verification.ts +17 -0
  110. package/src/rules/comment-markers.ts +36 -0
  111. package/src/rules/index.ts +3 -4
  112. package/src/rules/routes.ts +30 -44
  113. package/src/rules/security.ts +14 -14
  114. 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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"}
@@ -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;
@@ -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;AAmD3D,wBAAsB,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAIhF;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;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,KAAK,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAuBxF"}
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(route, side) {
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
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"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"}
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
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
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
- const result = await collectIdentityParity(cwd, rootPackage, { useWorkspaceRoot: true });
207
- return result.findings.map((finding) => ({
208
- ...finding,
209
- copies: finding.copies.map((copy) => ({ ...copy })),
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 duplicateInstalls = await collectDuplicateInstalls(cwd, pkg);
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
- // `staleDists` is advisory (see DoctorResult): it never fails `ok`.
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
  }