@nifrajs/cli 2.1.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.
- package/README.md +25 -25
- package/dist/assure.d.ts +2 -2
- package/dist/assure.d.ts.map +1 -1
- package/dist/assure.js +17 -10
- package/dist/assure.js.map +1 -1
- package/dist/capabilities-tool.d.ts +7 -0
- package/dist/capabilities-tool.d.ts.map +1 -1
- package/dist/capabilities-tool.js +68 -16
- package/dist/capabilities-tool.js.map +1 -1
- package/dist/check.d.ts +64 -22
- package/dist/check.d.ts.map +1 -1
- package/dist/check.js +400 -83
- package/dist/check.js.map +1 -1
- package/dist/cli.d.ts +37 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +291 -53
- package/dist/cli.js.map +1 -1
- package/dist/diff-tool.d.ts +3 -3
- package/dist/diff-tool.js +7 -7
- package/dist/docs-search.d.ts +3 -3
- package/dist/docs-search.js +6 -6
- package/dist/doctor.d.ts +8 -4
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +74 -14
- package/dist/doctor.js.map +1 -1
- package/dist/examples.d.ts +5 -5
- package/dist/examples.js +5 -5
- package/dist/init-agents.d.ts +14 -14
- package/dist/init-agents.js +14 -14
- package/dist/internal/typescript-import.d.ts +24 -0
- package/dist/internal/typescript-import.d.ts.map +1 -0
- package/dist/internal/typescript-import.js +32 -0
- package/dist/internal/typescript-import.js.map +1 -0
- package/dist/introspect.d.ts +12 -12
- package/dist/introspect.js +24 -24
- package/dist/levels-tool.d.ts +8 -8
- package/dist/levels-tool.d.ts.map +1 -1
- package/dist/levels-tool.js +33 -30
- package/dist/levels-tool.js.map +1 -1
- package/dist/load.d.ts +17 -6
- package/dist/load.d.ts.map +1 -1
- package/dist/load.js +45 -7
- package/dist/load.js.map +1 -1
- package/dist/manifest-tool.d.ts +1 -1
- package/dist/manifest-tool.d.ts.map +1 -1
- package/dist/manifest-tool.js +4 -2
- package/dist/manifest-tool.js.map +1 -1
- package/dist/mcp-docs-tools.d.ts +1 -1
- package/dist/mcp-docs-tools.d.ts.map +1 -1
- package/dist/mcp-docs-tools.js +14 -10
- package/dist/mcp-docs-tools.js.map +1 -1
- package/dist/mcp-http.d.ts +5 -5
- package/dist/mcp-http.js +7 -7
- package/dist/mcp-protocol.d.ts +2 -2
- package/dist/mcp-protocol.js +2 -2
- package/dist/mcp-render.d.ts +3 -3
- package/dist/mcp-render.js +15 -7
- package/dist/mcp-render.js.map +1 -1
- package/dist/mcp-run.d.ts +2 -2
- package/dist/mcp-run.js +2 -2
- package/dist/mcp.d.ts +14 -14
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +119 -47
- package/dist/mcp.js.map +1 -1
- package/dist/openapi-tool.d.ts +1 -1
- package/dist/openapi-tool.js +2 -2
- package/dist/pipeline-guard.d.ts +83 -0
- package/dist/pipeline-guard.d.ts.map +1 -0
- package/dist/pipeline-guard.js +136 -0
- package/dist/pipeline-guard.js.map +1 -0
- package/dist/port.d.ts +9 -9
- package/dist/port.js +27 -27
- package/dist/recipes/1.8.0.d.ts +2 -2
- package/dist/recipes/1.8.0.js +5 -5
- package/dist/recipes/index.d.ts +2 -2
- package/dist/recipes/index.js +1 -1
- package/dist/scaffold.d.ts +3 -3
- package/dist/scaffold.js +8 -8
- package/dist/sync-routes.d.ts +28 -0
- package/dist/sync-routes.d.ts.map +1 -0
- package/dist/sync-routes.js +55 -0
- package/dist/sync-routes.js.map +1 -0
- package/dist/types-search.d.ts +6 -6
- package/dist/types-search.d.ts.map +1 -1
- package/dist/types-search.js +53 -8
- package/dist/types-search.js.map +1 -1
- package/dist/upgrade.d.ts +7 -7
- package/dist/upgrade.js +12 -12
- package/dist/verification.d.ts +51 -0
- package/dist/verification.d.ts.map +1 -0
- package/dist/verification.js +80 -0
- package/dist/verification.js.map +1 -0
- package/docs/examples.json +178 -88
- package/docs/llms-full.txt +1766 -766
- package/docs/types.json +2171 -2807
- package/package.json +22 -11
- package/src/assure.ts +17 -18
- package/src/capabilities-tool.ts +82 -16
- package/src/check.ts +493 -100
- package/src/cli.ts +306 -54
- package/src/diff-tool.ts +8 -8
- package/src/docs-search.ts +6 -6
- package/src/doctor.ts +81 -16
- package/src/examples.ts +7 -7
- package/src/init-agents.ts +17 -17
- package/src/internal/typescript-import.ts +33 -0
- package/src/introspect.ts +28 -28
- package/src/levels-tool.ts +37 -31
- package/src/load.ts +65 -12
- package/src/manifest-tool.ts +4 -2
- package/src/mcp-docs-tools.ts +20 -10
- package/src/mcp-http.ts +7 -7
- package/src/mcp-protocol.ts +2 -2
- package/src/mcp-render.ts +15 -7
- package/src/mcp-run.ts +2 -2
- package/src/mcp.ts +127 -47
- package/src/openapi-tool.ts +2 -2
- package/src/pipeline-guard.ts +186 -0
- package/src/port.ts +31 -31
- package/src/recipes/1.8.0.ts +5 -5
- package/src/recipes/index.ts +2 -2
- package/src/scaffold.ts +8 -8
- package/src/sync-routes.ts +69 -0
- package/src/types-search.ts +57 -8
- package/src/upgrade.ts +12 -12
- package/src/verification.ts +123 -0
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @nifrajs/cli
|
|
2
2
|
|
|
3
|
-
The `nifra` CLI
|
|
3
|
+
The `nifra` CLI - zero-config dev/build/start for a nifra app, plus the agent surfaces (`nifra context`,
|
|
4
4
|
`nifra mcp`). Run from your project root (it reads `nifra.config.ts`/`framework.ts`, `backend.ts`, and
|
|
5
5
|
`routes/`).
|
|
6
6
|
|
|
@@ -25,7 +25,7 @@ dependencies from every workspace package. More than one physical `@nifrajs/*`,
|
|
|
25
25
|
`react-dom` copy fails even when versions match; module identity is path-based. Doctor reports
|
|
26
26
|
paths/importers and never deletes installations.
|
|
27
27
|
|
|
28
|
-
## `nifra assure`
|
|
28
|
+
## `nifra assure` - the route-enforcement gate
|
|
29
29
|
|
|
30
30
|
Create `nifra.assurance.ts` with a default `defineAssuranceConfig({ source, policy })` export, then run
|
|
31
31
|
`nifra assure` in CI. Official middleware publishes evidence at the same seam where it installs its
|
|
@@ -33,7 +33,7 @@ hooks; the gate classifies every reflected route with the first matching rule an
|
|
|
33
33
|
unclassified route, missing evidence, or forbidden evidence. Evaluation is startup/CI-only and adds no
|
|
34
34
|
request-path overhead. Use `--json` for the complete per-route report or `--config` for another file.
|
|
35
35
|
|
|
36
|
-
## `nifra manifest`
|
|
36
|
+
## `nifra manifest` - the deploy trust artifact
|
|
37
37
|
|
|
38
38
|
Add optional `manifest: { path, signer }` settings to `nifra.assurance.ts`, then run
|
|
39
39
|
`nifra manifest emit`. Emission refuses failing route or capability assurance and joins the route
|
|
@@ -45,27 +45,27 @@ At promotion time, `nifra manifest diff previous.json candidate.json` hash-verif
|
|
|
45
45
|
non-zero on a breaking API change, removed assurance, expanded effect, lost provenance coverage, or
|
|
46
46
|
increased data sensitivity. This is separate from the frontend asset `dist/manifest.json`.
|
|
47
47
|
|
|
48
|
-
## `nifra check`
|
|
48
|
+
## `nifra check` - the drift gate (run as "done")
|
|
49
49
|
|
|
50
50
|
`nifra check` makes nifra's anti-drift guarantees actually fire instead of relying on the agent to
|
|
51
51
|
remember them. It does three things and exits non-zero if any fails:
|
|
52
52
|
|
|
53
|
-
1. **Typecheck** (`tsc --noEmit`, using the project's own TypeScript)
|
|
53
|
+
1. **Typecheck** (`tsc --noEmit`, using the project's own TypeScript) - the frontend↔backend contract is
|
|
54
54
|
compiler-enforced. `client<typeof app>` derives request inputs **and** `res.data` from your routes, so
|
|
55
55
|
a screen that expects the wrong shape is a type error. Running the typecheck is what turns that latent
|
|
56
56
|
guarantee into an enforced one.
|
|
57
|
-
2. **Typed-client lint**
|
|
57
|
+
2. **Typed-client lint** - flags any hand-rolled `fetch()` to your own API (a relative URL like
|
|
58
58
|
`fetch("/users")`), which bypasses the typed client so the compiler can't see the drift. External
|
|
59
59
|
absolute-URL fetches are not flagged.
|
|
60
|
-
3. **Server-only-import lint**
|
|
60
|
+
3. **Server-only-import lint** - flags a top-level import of server-only code (a DB driver, `node:`/`bun:`
|
|
61
61
|
builtins, the `./db` module) into a `routes/` page module. Those modules are bundled for the browser,
|
|
62
62
|
so the import ships server code to the client. Reach it via `c.db` / `ctx.api` inside a loader instead.
|
|
63
63
|
|
|
64
|
-
Pass **`--json`** for a machine-readable result (`{ ok, typecheck, diagnostics[] }`)
|
|
64
|
+
Pass **`--json`** for a machine-readable result (`{ ok, typecheck, diagnostics[] }`) - what the
|
|
65
65
|
`nifra_check` MCP tool returns, so an agent acts on diagnostics instead of scraping output. Each diagnostic
|
|
66
66
|
has a short `fix` string and, when safe, a structured `suggestion`: an exact one-line diff, an argv command
|
|
67
67
|
array (for example `["bun","add","react"]`), or concrete manual steps. Tell a coding agent to run
|
|
68
|
-
`nifra check` as its definition of done (the scaffolded `AGENTS.md` already does), and wire it into CI
|
|
68
|
+
`nifra check` as its definition of done (the scaffolded `AGENTS.md` already does), and wire it into CI - a
|
|
69
69
|
green check means the frontend and backend can't have silently diverged.
|
|
70
70
|
|
|
71
71
|
For hand-rolled own-API `fetch()` calls, `nifra check` stays conservative: simple string-literal calls
|
|
@@ -85,8 +85,8 @@ This suppresses only the typed-client diagnostic; it does not mount or authorize
|
|
|
85
85
|
|
|
86
86
|
## For AI coding agents
|
|
87
87
|
|
|
88
|
-
**`nifra context`** prints this project's actual surface
|
|
89
|
-
routes (from `routes/`), and the framework conventions
|
|
88
|
+
**`nifra context`** prints this project's actual surface - API routes (from `backend.routes()`), page
|
|
89
|
+
routes (from `routes/`), and the framework conventions - as Markdown. Pipe it into a prompt:
|
|
90
90
|
|
|
91
91
|
```sh
|
|
92
92
|
nifra context | pbcopy # or: nifra context > .agent-context.md
|
|
@@ -95,25 +95,25 @@ nifra context | pbcopy # or: nifra context > .agent-context.md
|
|
|
95
95
|
**`nifra mcp`** runs a [Model Context Protocol](https://modelcontextprotocol.io) server over stdio, so
|
|
96
96
|
an agent can act on the project, not just read about it. Core tools:
|
|
97
97
|
|
|
98
|
-
- **`nifra_context`**
|
|
99
|
-
- **`nifra_routes`** / **`nifra_openapi`**
|
|
100
|
-
- **`nifra_docs`** / **`nifra_example`**
|
|
101
|
-
- **`nifra_scaffold`**
|
|
102
|
-
- **`nifra_run`**
|
|
98
|
+
- **`nifra_context`** - the same project surface as above.
|
|
99
|
+
- **`nifra_routes`** / **`nifra_openapi`** - structured API route contracts and an OpenAPI 3.1 document.
|
|
100
|
+
- **`nifra_docs`** / **`nifra_example`** - token-efficient docs slices and verified code snippets.
|
|
101
|
+
- **`nifra_scaffold`** - map a URL to the correct `routes/` file; optionally write safe JSX stubs.
|
|
102
|
+
- **`nifra_run`** - run HTTP requests through this project's backend and get structured results
|
|
103
103
|
(status, headers, parsed body, and any thrown error). The backend is re-loaded in a fresh process
|
|
104
|
-
each call by default, so it reflects the agent's latest edits
|
|
104
|
+
each call by default, so it reflects the agent's latest edits - the write → run → see-the-failure
|
|
105
105
|
→ fix loop. Pass `warm:true` to reuse a hot worker while source files are unchanged.
|
|
106
|
-
- **`nifra_render`**
|
|
107
|
-
- **`nifra_ws`**
|
|
108
|
-
- **`nifra_test`**
|
|
109
|
-
- **`nifra_check`**
|
|
106
|
+
- **`nifra_render`** - SSR a page route and return rendered HTML for quick page verification.
|
|
107
|
+
- **`nifra_ws`** - verify a WebSocket route with a real Bun WebSocket round-trip and structured output.
|
|
108
|
+
- **`nifra_test`** - run bounded `bun test` with structured output.
|
|
109
|
+
- **`nifra_check`** - run the drift gate and get the structured `{ ok, typecheck, diagnostics[] }`
|
|
110
110
|
result with suggestions, so the agent verifies its own work and fixes each diagnostic before finishing.
|
|
111
|
-
- **`nifra_assure`**
|
|
111
|
+
- **`nifra_assure`** - evaluate `nifra.assurance.ts` and return the complete per-route evidence report.
|
|
112
112
|
- **`nifra_levels`** - compute the cumulative verification ladder (L0 typed contract, L1 route
|
|
113
113
|
assurance, L2 capability lockfile, L3 trust manifest, L4 contract invariants) and return
|
|
114
114
|
`{ achieved, levels[] }`, so an agent can see what its change proves and read why a level it lost
|
|
115
115
|
no longer holds.
|
|
116
|
-
- **`nifra_doctor`**
|
|
116
|
+
- **`nifra_doctor`** - catch imported packages missing from `package.json`; with `autoFix:true`, write
|
|
117
117
|
safe dependency entries when a version can be inferred locally and return exact `bun add` commands
|
|
118
118
|
for anything that needs a package-manager decision.
|
|
119
119
|
|
|
@@ -143,11 +143,11 @@ claude mcp add nifra -- nifra mcp
|
|
|
143
143
|
```
|
|
144
144
|
|
|
145
145
|
Run the client from (or point it at) your project root. The protocol is hand-rolled
|
|
146
|
-
(newline-delimited JSON-RPC 2.0)
|
|
146
|
+
(newline-delimited JSON-RPC 2.0) - no SDK dependency.
|
|
147
147
|
|
|
148
148
|
## For AI agents
|
|
149
149
|
|
|
150
|
-
Start with [`LLM.md`](./LLM.md)
|
|
150
|
+
Start with [`LLM.md`](./LLM.md) - this package's contract card (the exports you call + its footguns),
|
|
151
151
|
one cheap read instead of the whole corpus. For the wider framework: the repo's
|
|
152
152
|
[`AGENTS.md`](../../AGENTS.md) is the copy-paste quick reference, and
|
|
153
153
|
[`llms-full.txt`](../../llms-full.txt) is the full machine-readable corpus. Run `nifra check` as the
|
package/dist/assure.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/** `nifra assure`
|
|
2
|
-
import {
|
|
1
|
+
/** `nifra assure` - evaluate a project's reflected routes against `nifra.assurance.ts`. */
|
|
2
|
+
import type { AssuranceConfig, AssuranceReport } from "@nifrajs/core/assurance";
|
|
3
3
|
export declare const DEFAULT_ASSURANCE_CONFIG = "nifra.assurance.ts";
|
|
4
4
|
export declare function loadAssuranceConfig(cwd: string, configPath?: string): Promise<AssuranceConfig>;
|
|
5
5
|
export declare function formatAssuranceReport(report: AssuranceReport): string;
|
package/dist/assure.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assure.d.ts","sourceRoot":"","sources":["../src/assure.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAK3F,OAAO,
|
|
1
|
+
{"version":3,"file":"assure.d.ts","sourceRoot":"","sources":["../src/assure.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAK3F,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAE/E,eAAO,MAAM,wBAAwB,uBAAuB,CAAA;AAY5D,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,UAAU,SAA2B,GACpC,OAAO,CAAC,eAAe,CAAC,CAgB1B;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAYrE;AAED,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,eAAe,CAAC,CAkB1B;AAED,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAClE,OAAO,CAAC,OAAO,CAAC,CAMlB"}
|
package/dist/assure.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** `nifra assure`
|
|
1
|
+
/** `nifra assure` - evaluate a project's reflected routes against `nifra.assurance.ts`. */
|
|
2
2
|
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
3
3
|
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
4
4
|
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
@@ -10,7 +10,6 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
|
|
|
10
10
|
import { existsSync } from "node:fs";
|
|
11
11
|
import { resolve } from "node:path";
|
|
12
12
|
import { pathToFileURL } from "node:url";
|
|
13
|
-
import { evaluateRouteAssurance, } from "@nifrajs/core/assurance";
|
|
14
13
|
export const DEFAULT_ASSURANCE_CONFIG = "nifra.assurance.ts";
|
|
15
14
|
function isConfig(value) {
|
|
16
15
|
if (typeof value !== "object" || value === null)
|
|
@@ -23,7 +22,7 @@ function isConfig(value) {
|
|
|
23
22
|
export async function loadAssuranceConfig(cwd, configPath = DEFAULT_ASSURANCE_CONFIG) {
|
|
24
23
|
const path = resolve(cwd, configPath);
|
|
25
24
|
if (!existsSync(path)) {
|
|
26
|
-
throw new Error(`[nifra] route assurance config not found: ${path}
|
|
25
|
+
throw new Error(`[nifra] route assurance config not found: ${path} - create ${DEFAULT_ASSURANCE_CONFIG} with a default defineAssuranceConfig({ source, policy }) export.`);
|
|
27
26
|
}
|
|
28
27
|
const specifier = pathToFileURL(path);
|
|
29
28
|
specifier.searchParams.set("nifra-assurance", String(Date.now()));
|
|
@@ -47,16 +46,24 @@ export function formatAssuranceReport(report) {
|
|
|
47
46
|
return `${messages.map((message) => `✖ ${message}`).join("\n")}\n\n${messages.length} assurance failure${messages.length === 1 ? "" : "s"} across ${report.routes.length} route${report.routes.length === 1 ? "" : "s"}.`;
|
|
48
47
|
}
|
|
49
48
|
export async function collectAssuranceReport(cwd, configPath) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
// The route-assurance view over the one project verification. The config load, route reflection, and
|
|
50
|
+
// capability walk it needs are exactly what `collectProjectVerification` already ran.
|
|
51
|
+
const { collectProjectVerification } = await import("./verification.js");
|
|
52
|
+
const verification = await collectProjectVerification(cwd, {
|
|
53
|
+
...(configPath !== undefined ? { config: configPath } : {}),
|
|
54
|
+
});
|
|
55
|
+
// A missing/broken config threw here before; re-throw the same error to keep that contract.
|
|
56
|
+
if (verification.configError !== undefined)
|
|
57
|
+
throw verification.configError;
|
|
58
|
+
// A present config means routeAssurance is computed; capability is set exactly when the config
|
|
59
|
+
// declares a capabilities policy.
|
|
60
|
+
const routeReport = verification.routeAssurance;
|
|
61
|
+
if (verification.capability === undefined)
|
|
53
62
|
return routeReport;
|
|
54
|
-
const { collectCapabilityProjectReport } = await import("./capabilities-tool.js");
|
|
55
|
-
const capabilityProject = await collectCapabilityProjectReport(cwd, config.source, config.capabilities);
|
|
56
63
|
return Object.freeze({
|
|
57
64
|
...routeReport,
|
|
58
|
-
ok: routeReport.ok &&
|
|
59
|
-
capabilities:
|
|
65
|
+
ok: routeReport.ok && verification.capability.report.ok,
|
|
66
|
+
capabilities: verification.capability.report,
|
|
60
67
|
});
|
|
61
68
|
}
|
|
62
69
|
export async function runAssurance(cwd, options = {}) {
|
package/dist/assure.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assure.js","sourceRoot":"","sources":["../src/assure.ts"],"names":[],"mappings":"AAAA,2FAA2F;;;;;;;;;AAE3F,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"assure.js","sourceRoot":"","sources":["../src/assure.ts"],"names":[],"mappings":"AAAA,2FAA2F;;;;;;;;;AAE3F,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAGxC,MAAM,CAAC,MAAM,wBAAwB,GAAG,oBAAoB,CAAA;AAE5D,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IAC7D,MAAM,SAAS,GAAG,KAAiC,CAAA;IACnD,OAAO,CACL,SAAS,CAAC,MAAM,KAAK,SAAS;QAC9B,OAAO,SAAS,CAAC,MAAM,KAAK,QAAQ;QACpC,SAAS,CAAC,MAAM,KAAK,IAAI,CAC1B,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,GAAW,EACX,UAAU,GAAG,wBAAwB;IAErC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;IACrC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,6CAA6C,IAAI,aAAa,wBAAwB,mEAAmE,CAC1J,CAAA;IACH,CAAC;IACD,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;IACrC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IACjE,MAAM,MAAM,GAAG,CAAC,MAAM,MAAM,kCAAC,SAAS,CAAC,IAAI,EAAC,CAA0B,CAAA;IACtE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,WAAW,IAAI,iEAAiE,CACjF,CAAA;IACH,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAA;AACvB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAuB;IAC3D,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY;YACpC,CAAC,CAAC,iCAAiC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,SAAS,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG;YAClI,CAAC,CAAC,EAAE,CAAA;QACN,OAAO,sBAAsB,MAAM,CAAC,MAAM,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,iDAAiD,UAAU,EAAE,CAAA;IAC9J,CAAC;IACD,MAAM,QAAQ,GAAG;QACf,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;QACpD,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;KAC3E,CAAA;IACD,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,MAAM,qBAAqB,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,WAAW,MAAM,CAAC,MAAM,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;AAC3N,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,GAAW,EACX,UAAmB;IAEnB,qGAAqG;IACrG,sFAAsF;IACtF,MAAM,EAAE,0BAA0B,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAA;IACxE,MAAM,YAAY,GAAG,MAAM,0BAA0B,CAAC,GAAG,EAAE;QACzD,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5D,CAAC,CAAA;IACF,4FAA4F;IAC5F,IAAI,YAAY,CAAC,WAAW,KAAK,SAAS;QAAE,MAAM,YAAY,CAAC,WAAW,CAAA;IAC1E,+FAA+F;IAC/F,kCAAkC;IAClC,MAAM,WAAW,GAAG,YAAY,CAAC,cAAiC,CAAA;IAClE,IAAI,YAAY,CAAC,UAAU,KAAK,SAAS;QAAE,OAAO,WAAW,CAAA;IAC7D,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,GAAG,WAAW;QACd,EAAE,EAAE,WAAW,CAAC,EAAE,IAAI,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;QACvD,YAAY,EAAE,YAAY,CAAC,UAAU,CAAC,MAAM;KAC7C,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,GAAW,EACX,UAAiE,EAAE;IAEnE,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;IAChE,OAAO,CAAC,GAAG,CACT,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC,CACxF,CAAA;IACD,OAAO,MAAM,CAAC,EAAE,CAAA;AAClB,CAAC"}
|
|
@@ -13,6 +13,13 @@ export interface CapabilityImportViolation {
|
|
|
13
13
|
export interface CapabilityProjectReport {
|
|
14
14
|
readonly report: CapabilityAssuranceReport;
|
|
15
15
|
readonly violations: readonly CapabilityImportViolation[];
|
|
16
|
+
readonly truncations: readonly CapabilityProvenanceTruncation[];
|
|
17
|
+
}
|
|
18
|
+
export interface CapabilityProvenanceTruncation {
|
|
19
|
+
readonly method: string;
|
|
20
|
+
readonly path: string;
|
|
21
|
+
readonly reason: "depth-limit" | "module-limit";
|
|
22
|
+
readonly chain: readonly string[];
|
|
16
23
|
}
|
|
17
24
|
/** Build coverage-qualified static evidence for every reflected route. */
|
|
18
25
|
export declare function collectCapabilityProjectReport(cwd: string, source: unknown, policyInput: CapabilityPolicy): Promise<CapabilityProjectReport>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities-tool.d.ts","sourceRoot":"","sources":["../src/capabilities-tool.ts"],"names":[],"mappings":"AAAA,uEAAuE;AAKvE,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EAMxB,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"capabilities-tool.d.ts","sourceRoot":"","sources":["../src/capabilities-tool.ts"],"names":[],"mappings":"AAAA,uEAAuE;AAKvE,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EAMxB,MAAM,4BAA4B,CAAA;AAQnC,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAmB3D;AAQD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAClC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,EAAE,yBAAyB,CAAA;IAC1C,QAAQ,CAAC,UAAU,EAAE,SAAS,yBAAyB,EAAE,CAAA;IACzD,QAAQ,CAAC,WAAW,EAAE,SAAS,8BAA8B,EAAE,CAAA;CAChE;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,cAAc,CAAA;IAC/C,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAClC;AA+ID,0EAA0E;AAC1E,wBAAsB,8BAA8B,CAClD,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,gBAAgB,GAC5B,OAAO,CAAC,uBAAuB,CAAC,CA0ElC;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,kBAAkB,CA6C/F;AAeD,oGAAoG;AACpG,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,kBAAkB,GACxB,SAAS,MAAM,EAAE,CAsBnB;AAiCD,wEAAwE;AACxE,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAChE,OAAO,CAAC,OAAO,CAAC,CAWlB;AAED,yFAAyF;AACzF,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAC9F,OAAO,CAAC,OAAO,CAAC,CAqClB"}
|
|
@@ -4,7 +4,6 @@ import { dirname, extname, isAbsolute, join, relative, resolve } from "node:path
|
|
|
4
4
|
import { matchesAssuranceSelector } from "@nifrajs/core/assurance";
|
|
5
5
|
import { defineCapabilityPolicy, evaluateCapabilityAssurance, snapshotCapabilities, validCapabilityId, } from "@nifrajs/core/capabilities";
|
|
6
6
|
import { reflectRoutes } from "@nifrajs/core/reflection";
|
|
7
|
-
import { loadAssuranceConfig } from "./assure.js";
|
|
8
7
|
import { scanStaticRouteText, stripComments, walkSource } from "./check.js";
|
|
9
8
|
const EFFECT_IMPORT = /\bimport\s+(?!type\b)(?:[^'"();]*?\bfrom\s+)?["']([^"']+)["']|\bimport\s*\(\s*["']([^"']+)["']\s*\)|\brequire\s*\(\s*["']([^"']+)["']\s*\)|\bexport\s+(?!type\b)[^'";]*?\bfrom\s*["']([^"']+)["']/g;
|
|
10
9
|
const TEMPLATE_EFFECT_IMPORT = /\b(?:import|require)\s*\(\s*`([^`$]*(?:\\.[^`$]*)*)`\s*\)/g;
|
|
@@ -78,16 +77,41 @@ async function readSources(cwd) {
|
|
|
78
77
|
await walkSource(cwd, (rel, content) => sources.set(rel.replaceAll("\\", "/"), content));
|
|
79
78
|
return sources;
|
|
80
79
|
}
|
|
80
|
+
const MAX_PROVENANCE_MODULES = 500;
|
|
81
|
+
const MAX_PROVENANCE_CHAIN = 16;
|
|
81
82
|
async function walkRouteModules(cwd, modules, method, path, policy, sources) {
|
|
82
83
|
const queue = modules.map((module) => ({ module, chain: [module] }));
|
|
83
84
|
const visited = new Set();
|
|
84
85
|
const evidence = [];
|
|
85
86
|
const violations = [];
|
|
87
|
+
const truncations = [];
|
|
86
88
|
let covered = false;
|
|
87
|
-
while (queue.length > 0
|
|
89
|
+
while (queue.length > 0) {
|
|
90
|
+
if (visited.size >= MAX_PROVENANCE_MODULES) {
|
|
91
|
+
const pending = queue[0];
|
|
92
|
+
truncations.push({
|
|
93
|
+
method,
|
|
94
|
+
path,
|
|
95
|
+
reason: "module-limit",
|
|
96
|
+
chain: Object.freeze([
|
|
97
|
+
...(pending?.chain ?? []),
|
|
98
|
+
`<${MAX_PROVENANCE_MODULES}-module limit>`,
|
|
99
|
+
]),
|
|
100
|
+
});
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
88
103
|
const current = queue.shift();
|
|
89
|
-
if (current === undefined || visited.has(current.module)
|
|
104
|
+
if (current === undefined || visited.has(current.module))
|
|
105
|
+
continue;
|
|
106
|
+
if (current.chain.length > MAX_PROVENANCE_CHAIN) {
|
|
107
|
+
truncations.push({
|
|
108
|
+
method,
|
|
109
|
+
path,
|
|
110
|
+
reason: "depth-limit",
|
|
111
|
+
chain: Object.freeze([...current.chain, `<${MAX_PROVENANCE_CHAIN}-hop limit>`]),
|
|
112
|
+
});
|
|
90
113
|
continue;
|
|
114
|
+
}
|
|
91
115
|
visited.add(current.module);
|
|
92
116
|
let content = sources.get(current.module);
|
|
93
117
|
if (content === undefined) {
|
|
@@ -134,7 +158,7 @@ async function walkRouteModules(cwd, modules, method, path, policy, sources) {
|
|
|
134
158
|
}
|
|
135
159
|
}
|
|
136
160
|
}
|
|
137
|
-
return { covered, evidence, violations };
|
|
161
|
+
return { covered, evidence, violations, truncations };
|
|
138
162
|
}
|
|
139
163
|
/** Build coverage-qualified static evidence for every reflected route. */
|
|
140
164
|
export async function collectCapabilityProjectReport(cwd, source, policyInput) {
|
|
@@ -150,6 +174,7 @@ export async function collectCapabilityProjectReport(cwd, source, policyInput) {
|
|
|
150
174
|
}
|
|
151
175
|
const evidenceRoutes = [];
|
|
152
176
|
const violations = [];
|
|
177
|
+
const truncations = [];
|
|
153
178
|
for (const route of reflectRoutes(source)) {
|
|
154
179
|
const modules = new Set(automatic.get(routeKey(route.method, route.path)) ?? []);
|
|
155
180
|
for (const association of policy.provenance.routeModules ?? []) {
|
|
@@ -171,9 +196,10 @@ export async function collectCapabilityProjectReport(cwd, source, policyInput) {
|
|
|
171
196
|
evidence: walked.evidence,
|
|
172
197
|
});
|
|
173
198
|
violations.push(...walked.violations);
|
|
199
|
+
truncations.push(...walked.truncations);
|
|
174
200
|
}
|
|
175
201
|
const evaluated = evaluateCapabilityAssurance(source, policy, { routes: evidenceRoutes });
|
|
176
|
-
const report = violations.length === 0
|
|
202
|
+
const report = violations.length === 0 && truncations.length === 0
|
|
177
203
|
? evaluated
|
|
178
204
|
: Object.freeze({
|
|
179
205
|
...evaluated,
|
|
@@ -186,9 +212,19 @@ export async function collectCapabilityProjectReport(cwd, source, policyInput) {
|
|
|
186
212
|
path: violation.path,
|
|
187
213
|
message: `${violation.method} ${violation.path} reaches forbidden ${violation.specifier} via ${violation.chain.join(" → ")}: ${violation.reason}`,
|
|
188
214
|
})),
|
|
215
|
+
...truncations.map((truncation) => ({
|
|
216
|
+
code: "provenance-truncated",
|
|
217
|
+
method: truncation.method,
|
|
218
|
+
path: truncation.path,
|
|
219
|
+
message: `${truncation.method} ${truncation.path} capability provenance hit the ${truncation.reason === "depth-limit" ? "import-depth" : "module-count"} safety limit via ${truncation.chain.join(" → ")}; assurance cannot prove the remaining graph`,
|
|
220
|
+
})),
|
|
189
221
|
]),
|
|
190
222
|
});
|
|
191
|
-
return Object.freeze({
|
|
223
|
+
return Object.freeze({
|
|
224
|
+
report,
|
|
225
|
+
violations: Object.freeze(violations),
|
|
226
|
+
truncations: Object.freeze(truncations),
|
|
227
|
+
});
|
|
192
228
|
}
|
|
193
229
|
export function parseCapabilityLockfile(content, sourcePath) {
|
|
194
230
|
let parsed;
|
|
@@ -203,7 +239,7 @@ export function parseCapabilityLockfile(content, sourcePath) {
|
|
|
203
239
|
typeof candidate !== "object" ||
|
|
204
240
|
candidate.nifraCapabilities !== 1 ||
|
|
205
241
|
!Array.isArray(candidate.routes)) {
|
|
206
|
-
throw new Error(`[nifra] ${sourcePath} is not a nifra capability lockfile
|
|
242
|
+
throw new Error(`[nifra] ${sourcePath} is not a nifra capability lockfile - expected { "nifraCapabilities": 1, "routes": [...] }`);
|
|
207
243
|
}
|
|
208
244
|
for (const route of candidate.routes) {
|
|
209
245
|
if (typeof route !== "object" ||
|
|
@@ -266,17 +302,25 @@ export function diffCapabilitySnapshots(before, after) {
|
|
|
266
302
|
return Object.freeze(changes);
|
|
267
303
|
}
|
|
268
304
|
async function currentProject(cwd, configPath) {
|
|
269
|
-
|
|
270
|
-
|
|
305
|
+
// Source the capability report from the one project verification that `check`/`assure`/`levels` also
|
|
306
|
+
// read, rather than loading the config and walking the module graph a second time here. `snapshot` and
|
|
307
|
+
// `check` are then thin faces over the shared core; the lockfile write/diff is the only work that stays
|
|
308
|
+
// capability-specific.
|
|
309
|
+
const { collectProjectVerification } = await import("./verification.js");
|
|
310
|
+
const verification = await collectProjectVerification(cwd, configPath !== undefined ? { config: configPath } : {});
|
|
311
|
+
// A missing/broken config threw here before; re-throw the same error to keep that contract.
|
|
312
|
+
if (verification.configError !== undefined)
|
|
313
|
+
throw verification.configError;
|
|
314
|
+
const policy = verification.config?.capabilities;
|
|
315
|
+
if (policy === undefined) {
|
|
271
316
|
throw new Error("[nifra] assurance config does not define capabilities");
|
|
272
317
|
}
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
};
|
|
318
|
+
// The core computes `capability` exactly when the config declares a capabilities policy, so it is
|
|
319
|
+
// present whenever `policy` is.
|
|
320
|
+
return { policy, project: verification.capability };
|
|
277
321
|
}
|
|
278
322
|
function unsafeProject(project) {
|
|
279
|
-
return !project.report.ok || project.violations.length > 0;
|
|
323
|
+
return !project.report.ok || project.violations.length > 0 || project.truncations.length > 0;
|
|
280
324
|
}
|
|
281
325
|
/** Write a lockfile only from a clean, fully-covered project report. */
|
|
282
326
|
export async function runCapabilitySnapshot(cwd, options = {}) {
|
|
@@ -302,7 +346,13 @@ export async function runCapabilityCheck(cwd, options = {}) {
|
|
|
302
346
|
const changes = diffCapabilitySnapshots(baseline, current);
|
|
303
347
|
const ok = !unsafeProject(project) && changes.length === 0;
|
|
304
348
|
if (options.json === true) {
|
|
305
|
-
console.log(JSON.stringify({
|
|
349
|
+
console.log(JSON.stringify({
|
|
350
|
+
ok,
|
|
351
|
+
report: project.report,
|
|
352
|
+
violations: project.violations,
|
|
353
|
+
truncations: project.truncations,
|
|
354
|
+
changes,
|
|
355
|
+
}, null, 2));
|
|
306
356
|
}
|
|
307
357
|
else if (ok) {
|
|
308
358
|
console.log("✓ capability assurance and lockfile are current");
|
|
@@ -311,7 +361,9 @@ export async function runCapabilityCheck(cwd, options = {}) {
|
|
|
311
361
|
for (const finding of project.report.findings)
|
|
312
362
|
console.log(`✖ ${finding.message}`);
|
|
313
363
|
for (const violation of project.violations)
|
|
314
|
-
console.log(`✖ ${violation.method} ${violation.path}: ${violation.chain.join(" → ")}
|
|
364
|
+
console.log(`✖ ${violation.method} ${violation.path}: ${violation.chain.join(" → ")} - ${violation.reason}`);
|
|
365
|
+
for (const truncation of project.truncations)
|
|
366
|
+
console.log(`✖ ${truncation.method} ${truncation.path}: ${truncation.chain.join(" → ")} - ${truncation.reason}`);
|
|
315
367
|
for (const change of changes)
|
|
316
368
|
console.log(`✖ capability lock drift: ${change}`);
|
|
317
369
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities-tool.js","sourceRoot":"","sources":["../src/capabilities-tool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"capabilities-tool.js","sourceRoot":"","sources":["../src/capabilities-tool.ts"],"names":[],"mappings":"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"}
|