@nifrajs/cli 2.2.0 → 2.3.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 (117) hide show
  1. package/README.md +25 -25
  2. package/dist/assure.d.ts +2 -2
  3. package/dist/assure.d.ts.map +1 -1
  4. package/dist/assure.js +17 -10
  5. package/dist/assure.js.map +1 -1
  6. package/dist/capabilities-tool.d.ts +7 -0
  7. package/dist/capabilities-tool.d.ts.map +1 -1
  8. package/dist/capabilities-tool.js +68 -16
  9. package/dist/capabilities-tool.js.map +1 -1
  10. package/dist/check.d.ts +61 -22
  11. package/dist/check.d.ts.map +1 -1
  12. package/dist/check.js +332 -86
  13. package/dist/check.js.map +1 -1
  14. package/dist/cli.d.ts +30 -2
  15. package/dist/cli.d.ts.map +1 -1
  16. package/dist/cli.js +132 -36
  17. package/dist/cli.js.map +1 -1
  18. package/dist/diff-tool.d.ts +3 -3
  19. package/dist/diff-tool.js +7 -7
  20. package/dist/docs-search.d.ts +3 -3
  21. package/dist/docs-search.js +6 -6
  22. package/dist/doctor.d.ts +3 -3
  23. package/dist/doctor.js +8 -8
  24. package/dist/examples.d.ts +5 -5
  25. package/dist/examples.js +5 -5
  26. package/dist/init-agents.d.ts +14 -14
  27. package/dist/init-agents.js +14 -14
  28. package/dist/internal/typescript-import.d.ts +24 -0
  29. package/dist/internal/typescript-import.d.ts.map +1 -0
  30. package/dist/internal/typescript-import.js +32 -0
  31. package/dist/internal/typescript-import.js.map +1 -0
  32. package/dist/introspect.d.ts +12 -12
  33. package/dist/introspect.js +24 -24
  34. package/dist/levels-tool.d.ts +8 -8
  35. package/dist/levels-tool.d.ts.map +1 -1
  36. package/dist/levels-tool.js +33 -30
  37. package/dist/levels-tool.js.map +1 -1
  38. package/dist/load.d.ts +6 -6
  39. package/dist/load.d.ts.map +1 -1
  40. package/dist/load.js +15 -7
  41. package/dist/load.js.map +1 -1
  42. package/dist/manifest-tool.d.ts +1 -1
  43. package/dist/manifest-tool.d.ts.map +1 -1
  44. package/dist/manifest-tool.js +4 -2
  45. package/dist/manifest-tool.js.map +1 -1
  46. package/dist/mcp-docs-tools.d.ts +1 -1
  47. package/dist/mcp-docs-tools.js +9 -9
  48. package/dist/mcp-http.d.ts +5 -5
  49. package/dist/mcp-http.js +7 -7
  50. package/dist/mcp-protocol.d.ts +2 -2
  51. package/dist/mcp-protocol.js +2 -2
  52. package/dist/mcp-render.d.ts +3 -3
  53. package/dist/mcp-render.js +6 -6
  54. package/dist/mcp-run.d.ts +2 -2
  55. package/dist/mcp-run.js +2 -2
  56. package/dist/mcp.d.ts +14 -14
  57. package/dist/mcp.d.ts.map +1 -1
  58. package/dist/mcp.js +75 -45
  59. package/dist/mcp.js.map +1 -1
  60. package/dist/openapi-tool.d.ts +1 -1
  61. package/dist/openapi-tool.js +2 -2
  62. package/dist/pipeline-guard.d.ts +1 -1
  63. package/dist/pipeline-guard.js +1 -1
  64. package/dist/port.d.ts +9 -9
  65. package/dist/port.js +27 -27
  66. package/dist/recipes/1.8.0.d.ts +2 -2
  67. package/dist/recipes/1.8.0.js +5 -5
  68. package/dist/recipes/index.d.ts +2 -2
  69. package/dist/recipes/index.js +1 -1
  70. package/dist/scaffold.d.ts +3 -3
  71. package/dist/scaffold.js +8 -8
  72. package/dist/sync-routes.d.ts +28 -0
  73. package/dist/sync-routes.d.ts.map +1 -0
  74. package/dist/sync-routes.js +55 -0
  75. package/dist/sync-routes.js.map +1 -0
  76. package/dist/types-search.d.ts +5 -5
  77. package/dist/types-search.js +7 -7
  78. package/dist/upgrade.d.ts +7 -7
  79. package/dist/upgrade.js +12 -12
  80. package/dist/verification.d.ts +51 -0
  81. package/dist/verification.d.ts.map +1 -0
  82. package/dist/verification.js +80 -0
  83. package/dist/verification.js.map +1 -0
  84. package/docs/examples.json +174 -90
  85. package/docs/llms-full.txt +1696 -747
  86. package/docs/types.json +1892 -3105
  87. package/package.json +22 -11
  88. package/src/assure.ts +17 -18
  89. package/src/capabilities-tool.ts +82 -16
  90. package/src/check.ts +405 -103
  91. package/src/cli.ts +141 -38
  92. package/src/diff-tool.ts +8 -8
  93. package/src/docs-search.ts +6 -6
  94. package/src/doctor.ts +10 -10
  95. package/src/examples.ts +7 -7
  96. package/src/init-agents.ts +17 -17
  97. package/src/internal/typescript-import.ts +33 -0
  98. package/src/introspect.ts +28 -28
  99. package/src/levels-tool.ts +37 -31
  100. package/src/load.ts +21 -12
  101. package/src/manifest-tool.ts +4 -2
  102. package/src/mcp-docs-tools.ts +9 -9
  103. package/src/mcp-http.ts +7 -7
  104. package/src/mcp-protocol.ts +2 -2
  105. package/src/mcp-render.ts +6 -6
  106. package/src/mcp-run.ts +2 -2
  107. package/src/mcp.ts +82 -45
  108. package/src/openapi-tool.ts +2 -2
  109. package/src/pipeline-guard.ts +1 -1
  110. package/src/port.ts +31 -31
  111. package/src/recipes/1.8.0.ts +5 -5
  112. package/src/recipes/index.ts +2 -2
  113. package/src/scaffold.ts +8 -8
  114. package/src/sync-routes.ts +69 -0
  115. package/src/types-search.ts +8 -8
  116. package/src/upgrade.ts +12 -12
  117. package/src/verification.ts +123 -0
package/dist/check.d.ts CHANGED
@@ -1,20 +1,23 @@
1
1
  /**
2
- * `nifra check` — the agent's (and CI's) definition of done. It makes the guarantees that keep a nifra
2
+ * `nifra check` - the agent's (and CI's) definition of done. It makes the guarantees that keep a nifra
3
3
  * app drift-proof actually *fire*, instead of relying on the agent to remember them:
4
4
  *
5
- * 1. **typecheck** (`tsc --noEmit`) — the frontend↔backend contract is compiler-enforced. The typed
5
+ * 1. **typecheck** (`tsc --noEmit`) - the frontend↔backend contract is compiler-enforced. The typed
6
6
  * client derives request + response types from the routes, so a shape mismatch is a type error.
7
- * 2. **typed-client lint** — flags hand-rolled `fetch()` to this app's *own* API (a relative URL),
7
+ * 2. **typed-client lint** - flags hand-rolled `fetch()` to this app's *own* API (a relative URL),
8
8
  * which bypasses `client<typeof app>` so the compiler can't see the drift.
9
- * 3. **server-only-import lint** — flags a top-level import of server-only code (a DB driver, `node:`/
9
+ * 3. **server-only-import lint** - flags a top-level import of server-only code (a DB driver, `node:`/
10
10
  * `bun:` builtins, the `./db` module) into a `routes/` page module. Those modules are bundled for
11
- * the browser too, so the import ships server code to the client and breaks the build — the #1
11
+ * the browser too, so the import ships server code to the client and breaks the build - the #1
12
12
  * full-stack footgun. Reach server resources via `c.db` / `ctx.api`, never a top-level import.
13
13
  *
14
14
  * `collectCheckResult` returns a structured, machine-readable result (consumed by `--json` and the
15
15
  * `nifra_check` MCP tool, so an agent acts on diagnostics instead of scraping prose). Exits non-zero if
16
16
  * anything fails. Pure scanners (`scanFetchText`, `scanServerOnlyImports`) are unit-tested.
17
17
  */
18
+ import type { AssuranceConfig, AssuranceReport } from "@nifrajs/core/assurance";
19
+ import type { CapabilityProjectReport } from "./capabilities-tool.js";
20
+ import { type TypeScriptApi } from "./internal/typescript-import.js";
18
21
  export interface SourceFinding {
19
22
  readonly file: string;
20
23
  readonly line: number;
@@ -31,13 +34,13 @@ export interface StaticRouteFinding extends SourceFinding {
31
34
  readonly path: string;
32
35
  }
33
36
  /**
34
- * Blank, with spaces (newlines preserved, so every byte offset — and line number — is unchanged):
37
+ * Blank, with spaces (newlines preserved, so every byte offset - and line number - is unchanged):
35
38
  * - `//` line comments and block comments;
36
- * - the CONTENTS of backtick template literals — code-as-text (doc `CodeBlock` examples, code
39
+ * - the CONTENTS of backtick template literals - code-as-text (doc `CodeBlock` examples, code
37
40
  * generators), never a real statement to lint.
38
41
  * Single/double-quoted strings are KEPT (a real import/Response specifier lives in one). A small
39
42
  * char-state machine, not a full lexer: it doesn't model regex literals, so a regex containing a quote
40
- * could mis-skip — in practice the constructs these scanners look for sit before any such regex.
43
+ * could mis-skip - in practice the constructs these scanners look for sit before any such regex.
41
44
  * Shared by the source scanners here and by `nifra doctor` ({@link ./doctor.ts}).
42
45
  */
43
46
  export declare function stripComments(src: string): string;
@@ -54,6 +57,17 @@ export declare function codePositionMask(src: string): string;
54
57
  export declare function scanFetchText(file: string, content: string, externalMounts?: readonly string[]): SourceFinding[];
55
58
  /** Statically collect simple Nifra route registrations from source, without importing app code. */
56
59
  export declare function scanStaticRouteText(file: string, content: string): StaticRouteFinding[];
60
+ /** Scan one file's text for SQL assembled by interpolation. Pure + line-accurate. */
61
+ export declare function scanInterpolatedSql(file: string, content: string, ts: TypeScriptApi): SourceFinding[];
62
+ /**
63
+ * Collect interpolated-SQL findings across the project.
64
+ *
65
+ * Returns `undefined` - not an empty array - when TypeScript is not installed. The rule parses source
66
+ * with the compiler, so without it there is nothing to report and, more to the point, no basis for
67
+ * reporting nothing. An empty result would read as "no interpolated SQL found", which is the one
68
+ * answer a security rule must never give when it did not run.
69
+ */
70
+ export declare function scanProjectSql(cwd: string): Promise<SourceFinding[] | undefined>;
57
71
  /** Scan one file's text for untyped `client("…")` calls. Pure + line-accurate. */
58
72
  export declare function scanUntypedClient(file: string, content: string): SourceFinding[];
59
73
  /** Flag an import of a specifier that no longer exists. Pure; matches the exact specifier or a subpath
@@ -67,13 +81,13 @@ export declare function scanServerOnlyImports(file: string, content: string): Se
67
81
  * Mirrors {@link STATIC_IMPORT}, so `import type` + dynamic `import()` are already excluded. Pure. */
68
82
  export declare function parseStaticImports(content: string): string[];
69
83
  /** The server-only SINK an import specifier names directly (a `node:`/`bun:` builtin or a known
70
- * server-only package), or `undefined` if it isn't a by-name sink. Pure — the label is the specifier
84
+ * server-only package), or `undefined` if it isn't a by-name sink. Pure - the label is the specifier
71
85
  * itself (it's already the actionable name). */
72
86
  export declare function directSinkSpecifier(spec: string): string | undefined;
73
87
  /** One transitive server-only finding: the route module, the route's offending top-level import (the
74
88
  * first hop / `specifier`), the line + snippet of that import, and the FULL chain to the sink. */
75
89
  export interface TransitiveServerImportFinding extends ServerImportFinding {
76
- /** `[routeFile, ...as-written specifiers…, sink]` — the shortest path the walk found. Length 2 means
90
+ /** `[routeFile, ...as-written specifiers…, sink]` - the shortest path the walk found. Length 2 means
77
91
  * the route imports the sink directly (same as the regex scan's direct edge). */
78
92
  readonly chain: readonly string[];
79
93
  /** True when a precise transitive resolve wasn't possible for the first hop (a bare pkg / path alias),
@@ -94,14 +108,14 @@ export type ModuleReader = (absPath: string) => string | undefined;
94
108
  * unresolvable alias). At each node, a by-name sink import (`node:fs`, `postgres`) OR a resolved
95
109
  * `*.server` / `server-only`-marked dependency terminates the chain. Bounded by depth + a visited set, so
96
110
  * it's linear and cycle-free. `routeFile`/`routeContent` seed the walk; `resolve`/`read` supply the graph
97
- * — pure given those, so it's unit-testable with a fake graph.
111
+ * - pure given those, so it's unit-testable with a fake graph.
98
112
  */
99
113
  export declare function walkServerOnlyChain(routeFile: string, routeContent: string, resolve: ModuleResolver, read: ModuleReader): readonly string[] | undefined;
100
114
  /**
101
115
  * Resolve the FULL transitive server-only chain(s) for a route module, given a real fs-backed resolver +
102
116
  * reader. For each of the route's top-level imports, if a precise transitive walk finds a sink, the
103
- * finding carries the full chain; otherwise — when the first hop is itself a direct by-name sink the
104
- * regex scan already flags, or when a relative import can't be resolved — it falls back to the DIRECT
117
+ * finding carries the full chain; otherwise - when the first hop is itself a direct by-name sink the
118
+ * regex scan already flags, or when a relative import can't be resolved - it falls back to the DIRECT
105
119
  * edge (`fallback: true`), never a fabricated chain. Returns one finding per offending top-level import,
106
120
  * de-duplicated to the shortest chain per first-hop specifier. Non-route files yield `[]`.
107
121
  */
@@ -115,7 +129,7 @@ export declare function scanProject(cwd: string): Promise<SourceFinding[]>;
115
129
  export interface ManifestDriftFinding {
116
130
  /** The committed server-manifest file (relative to cwd). */
117
131
  readonly file: string;
118
- /** Route files in `routes/` missing from the manifest (stale manifest — these routes won't serve). */
132
+ /** Route files in `routes/` missing from the manifest (stale manifest - these routes won't serve). */
119
133
  readonly missing: readonly string[];
120
134
  /** Route files the manifest imports that no longer exist in `routes/` (a dangling import). */
121
135
  readonly extra: readonly string[];
@@ -129,17 +143,17 @@ export interface ManifestDriftFinding {
129
143
  * a per-manifest miss (an unreadable routes dir is simply skipped).
130
144
  */
131
145
  export declare function scanServerManifestDrift(cwd: string): Promise<ManifestDriftFinding[]>;
132
- /** A single machine-readable check failure — the unit an agent (or CI) acts on. */
146
+ /** A single machine-readable check failure - the unit an agent (or CI) acts on. */
133
147
  export interface CheckDiagnostic {
134
- readonly rule: "typecheck" | "typed-client" | "untyped-client" | "server-only-import" | "removed-import" | "response-route" | "undeclared-dependency" | "duplicate-install" | "server-manifest-drift" | "manifest-drift" | "capability-assurance" | "capability-config" | "check-config";
135
- /** `error` fails the gate (a real contract break); `warning` is advisory — surfaced to the agent but
148
+ readonly rule: "typecheck" | "typed-client" | "untyped-client" | "server-only-import" | "removed-import" | "interpolated-sql" | "response-route" | "undeclared-dependency" | "duplicate-install" | "server-manifest-drift" | "manifest-drift" | "capability-assurance" | "capability-config" | "check-config";
149
+ /** `error` fails the gate (a real contract break); `warning` is advisory - surfaced to the agent but
136
150
  * does NOT fail `nifra check`, for patterns that are sometimes intentional (a route returning a raw
137
151
  * `Response`, which silently drops the typed client to `data: never` but is valid for files/redirects). */
138
152
  readonly severity: "error" | "warning";
139
153
  readonly file?: string;
140
154
  readonly line?: number;
141
155
  readonly message: string;
142
- /** The canonical, rule-level fix — clean of the per-occurrence snippet, so an agent can apply it
156
+ /** The canonical, rule-level fix - clean of the per-occurrence snippet, so an agent can apply it
143
157
  * directly. Set for the lint rules (they have one correct fix); omitted for `typecheck` (the fix is
144
158
  * specific to each type error). */
145
159
  readonly fix?: string;
@@ -150,12 +164,12 @@ export interface CheckDiagnostic {
150
164
  * The import chain that pulls server-only code into the browser bundle, as display labels
151
165
  * `[routeFile, …as-written specifiers…, sink]`. Set only on `server-only-import`.
152
166
  *
153
- * #4.4: this is now the FULL **transitive** chain — a bounded import-resolution walk (`Bun.resolveSync`
167
+ * #4.4: this is now the FULL **transitive** chain - a bounded import-resolution walk (`Bun.resolveSync`
154
168
  * from each file's dir, BFS the local module graph) follows `route → ../data → ../db → node:crypto`,
155
169
  * matching the build leak-guard's depth (`detectNodeBuiltinsInClient` in `@nifrajs/web/build`). A
156
170
  * length-2 chain (`[routeFile, specifier]`) means the route imports the sink directly. When a hop can't
157
171
  * be resolved precisely (a bare pkg, a tsconfig path alias), the walk degrades to the honest direct
158
- * edge rather than fabricating a deeper path — never a lie.
172
+ * edge rather than fabricating a deeper path - never a lie.
159
173
  */
160
174
  readonly chain?: readonly string[];
161
175
  }
@@ -167,7 +181,7 @@ export interface CheckSuggestion {
167
181
  readonly command?: readonly string[];
168
182
  readonly steps?: readonly string[];
169
183
  }
170
- /** The structured result of a full check — what `--json` prints and the `nifra_check` MCP tool returns. */
184
+ /** The structured result of a full check - what `--json` prints and the `nifra_check` MCP tool returns. */
171
185
  export interface CheckResult {
172
186
  readonly ok: boolean;
173
187
  readonly typecheck: "pass" | "fail" | "skipped";
@@ -176,7 +190,7 @@ export interface CheckResult {
176
190
  * better-auth). Echoed here so `--json` / the MCP tool / the report can show what the typed-client scan
177
191
  * deliberately skipped - a suppressed prefix stays auditable instead of silently hiding real drift. */
178
192
  readonly externalMounts?: readonly string[];
179
- /** Set only when the caller passed `maxDiagnostics` and there were more — `diagnostics` then holds the
193
+ /** Set only when the caller passed `maxDiagnostics` and there were more - `diagnostics` then holds the
180
194
  * first `shown` of `total`. It caps the serialized size so the `nifra_check` MCP tool can't emit a
181
195
  * message large enough to break the stdio transport; fix the shown diagnostics and re-run for the rest. */
182
196
  readonly truncated?: {
@@ -184,6 +198,24 @@ export interface CheckResult {
184
198
  readonly total: number;
185
199
  };
186
200
  }
201
+ /**
202
+ * Pre-resolved route-assurance inputs, so the same reflection that `nifra assure` / `nifra levels`
203
+ * already ran can feed `check`'s capability + trust-manifest diagnostics instead of a second pass.
204
+ * Supplied by {@link collectProjectVerification}. When omitted, `collectCheckResult` loads and computes
205
+ * these itself (the standalone `nifra_check` MCP path); the two routes produce byte-identical results.
206
+ */
207
+ export interface CheckAssuranceContext {
208
+ /** Whether `nifra.assurance.ts` exists: the gate for running the assurance-fed diagnostics at all. */
209
+ readonly present: boolean;
210
+ /** The loaded config, when it loaded. Absent when the file is missing or {@link error} is set. */
211
+ readonly config?: AssuranceConfig;
212
+ /** The failure from loading/evaluating the config, surfaced as a `capability-config` diagnostic. */
213
+ readonly error?: unknown;
214
+ /** `evaluateRouteAssurance` over the config's source + policy (drives the trust-manifest check). */
215
+ readonly routeAssurance?: AssuranceReport;
216
+ /** Static capability provenance, when the config declares a capabilities policy. */
217
+ readonly capability?: CapabilityProjectReport;
218
+ }
187
219
  /** Run the three checks and assemble a structured, machine-readable result. The single source the CLI
188
220
  * report, `--json`, and the MCP tool all render from. */
189
221
  export declare function collectCheckResult(cwd: string, opts?: {
@@ -192,6 +224,13 @@ export declare function collectCheckResult(cwd: string, opts?: {
192
224
  /** Cap the returned `diagnostics` to this many (adds {@link CheckResult.truncated}). The MCP tool sets
193
225
  * it so a huge project can't produce a transport-breaking result; the CLI leaves it unset (all shown). */
194
226
  readonly maxDiagnostics?: number;
227
+ /** How the interpolated-SQL rule gets its compiler. Injectable so the "not installed" path - the
228
+ * one where a security rule reports that it did not run - is testable on a machine that has it. */
229
+ readonly loadTypeScript?: () => Promise<TypeScriptApi | undefined>;
230
+ /** Route-assurance inputs already computed by {@link collectProjectVerification}. When present,
231
+ * the capability + trust-manifest diagnostics reuse them instead of loading/reflecting a second
232
+ * time; when absent, they are computed here (unchanged standalone behavior). */
233
+ readonly assurance?: CheckAssuranceContext;
195
234
  }): Promise<CheckResult>;
196
235
  /** Run the full check; print a report (`--json` for machine output) and return whether it passed. */
197
236
  export declare function runCheck(cwd: string, opts?: {
@@ -1 +1 @@
1
- {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"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"}