@nifrajs/cli 1.11.0 → 1.12.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.
@@ -1 +1 @@
1
- {"version":3,"file":"levels-tool.d.ts","sourceRoot":"","sources":["../src/levels-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAiBH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAA;IACpB,6FAA6F;IAC7F,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CACpC;AAED,MAAM,WAAW,wBAAwB;IACvC,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,uBAAuB,EAAE,CAAA;CACpD;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,iGAAiG;AACjG,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,wBAAwB,CAAC,CA8HnC;AAqBD,2FAA2F;AAC3F,wBAAsB,SAAS,CAC7B,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,oBAAoB,GAAG;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GACtF,OAAO,CAAC,OAAO,CAAC,CAkBlB"}
1
+ {"version":3,"file":"levels-tool.d.ts","sourceRoot":"","sources":["../src/levels-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAiBH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAA;IACpB,6FAA6F;IAC7F,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CACpC;AAED,MAAM,WAAW,wBAAwB;IACvC,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,uBAAuB,EAAE,CAAA;CACpD;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,iGAAiG;AACjG,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,wBAAwB,CAAC,CAwInC;AAqBD,2FAA2F;AAC3F,wBAAsB,SAAS,CAC7B,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,oBAAoB,GAAG;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GACtF,OAAO,CAAC,OAAO,CAAC,CAkBlB"}
@@ -14,8 +14,8 @@ import { existsSync } from "node:fs";
14
14
  import { resolve } from "node:path";
15
15
  import { evaluateRouteAssurance } from "@nifrajs/core/assurance";
16
16
  import { snapshotCapabilities } from "@nifrajs/core/capabilities";
17
- import { runContractInvariants } from "@nifrajs/core/invariants";
18
17
  import { buildNifraManifest, parseNifraManifest } from "@nifrajs/core/manifest";
18
+ import { runAdversarialContract } from "@nifrajs/testing";
19
19
  import { loadAssuranceConfig } from "./assure.js";
20
20
  import { collectCapabilityProjectReport, diffCapabilitySnapshots, parseCapabilityLockfile, } from "./capabilities-tool.js";
21
21
  import { collectCheckResult } from "./check.js";
@@ -124,16 +124,19 @@ export async function collectVerificationLevels(cwd, options = {}) {
124
124
  l4Reasons.push("no isolated invariant executor configured — add `invariants.executor` in nifra.assurance.ts");
125
125
  }
126
126
  else {
127
- const invariants = await runContractInvariants(config.source, {
127
+ const invariants = await runAdversarialContract(config.source, {
128
128
  seed: options.seed ?? 1,
129
- executor: config.invariants.executor,
129
+ runtimes: [{ name: "isolated", fetch: config.invariants.executor }],
130
+ expectedValidationStatuses: [400, 422],
131
+ requireCoverage: true,
130
132
  });
131
- if (!invariants.ok)
132
- l4Reasons.push(...invariants.findings.map((f) => f.message).slice(0, 5));
133
- if (invariants.skipped.length > 0) {
134
- l4Reasons.push(...invariants.skipped
133
+ if (!invariants.ok) {
134
+ l4Reasons.push(...invariants.failures
135
135
  .slice(0, 5)
136
- .map((route) => `${route.method} ${route.path} was not invariant-tested: ${route.reason}`));
136
+ .map((failure) => `${failure.runtime}: ${failure.id} - ${failure.message} (replay seed ${failure.replay.seed})`));
137
+ l4Reasons.push(...invariants.gaps
138
+ .slice(0, Math.max(0, 5 - l4Reasons.length))
139
+ .map((gap) => `${gap.route ?? "contract"}${gap.target ? ` ${gap.target}` : ""}: ${gap.message}`));
137
140
  }
138
141
  }
139
142
  statuses.push({
@@ -1 +1 @@
1
- {"version":3,"file":"levels-tool.js","sourceRoot":"","sources":["../src/levels-tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"levels-tool.js","sourceRoot":"","sources":["../src/levels-tool.ts"],"names":[],"mappings":"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"}
package/dist/mcp-http.js CHANGED
@@ -19,7 +19,7 @@ import { loadTypesCorpus } from "./types-search.js";
19
19
  // tool factory + the transport core from one entry: `import { respondMcpHttp, docsTools } from "@nifrajs/cli/mcp"`.
20
20
  export { docsTools } from "./mcp-docs-tools.js";
21
21
  // Kept in lockstep with packages/cli/package.json by check:publish's version-consistency gate.
22
- const VERSION = "1.11.0";
22
+ const VERSION = "1.12.0";
23
23
  const SERVER_INFO = { name: "nifra-docs", version: VERSION };
24
24
  const DOCS_HEALTH = "nifra docs MCP — POST JSON-RPC 2.0 here (methods: initialize, tools/list, tools/call). Tools: nifra_docs, nifra_example.";
25
25
  /** The two project-independent tools, reading the package's bundled corpus from disk (CLI use). */
@@ -4759,9 +4759,16 @@ nifra assure [--config <file>] [--json] Gate reflected routes against enforcem
4759
4759
  nifra capabilities check [--json] Gate effect provenance + the reviewed capability lockfile.
4760
4760
  nifra manifest emit [--sign <key-ref>] Emit the hash-verified route trust artifact after assurance.
4761
4761
  nifra manifest diff <before> <after> Block promotion on contract/governance regressions.
4762
- nifra doctor [--json] [--auto-fix] Catch undeclared imported packages; auto-fix safe local versions.
4762
+ nifra doctor [--json] [--auto-fix] Catch undeclared imports and duplicate Nifra/React installs.
4763
4763
  ```
4764
4764
 
4765
+ ## `nifra doctor` - dependency health
4766
+
4767
+ Doctor diffs source imports against declared dependencies, then resolves identity-sensitive
4768
+ dependencies from every workspace package. More than one physical `@nifrajs/*`, `react`, or
4769
+ `react-dom` copy fails even when versions match; module identity is path-based. Doctor reports
4770
+ paths/importers and never deletes installations.
4771
+
4765
4772
  ## `nifra assure` — the route-enforcement gate
4766
4773
 
4767
4774
  Create `nifra.assurance.ts` with a default `defineAssuranceConfig({ source, policy })` export, then run
@@ -5202,6 +5209,10 @@ done-gate, or `nifra mcp` to give the agent live project tools.
5202
5209
 
5203
5210
  Portable, versioned event contracts — a typed, transport-agnostic event envelope validated by any Standard Schema.
5204
5211
 
5212
+ An envelope may carry the bounded `@nifrajs/core/causality` context for its exact event id. Creation
5213
+ and parsing reject mismatched nodes and unknown fields, so arbitrary payloads cannot hitchhike in the
5214
+ lineage metadata.
5215
+
5205
5216
  See the [nifra docs](https://github.com/nifrajs/nifra#readme).
5206
5217
 
5207
5218
  ## @nifrajs/i18n
@@ -5599,10 +5610,38 @@ const app = server()
5599
5610
  (`error` for 5xx, `ok` otherwise).
5600
5611
  - **Exposes `c.trace`** (`{ traceId, spanId, parentSpanId?, sampled, traceparent }`) — spread
5601
5612
  `traceHeaders(c.trace)` into any downstream `fetch`/`ctx.api` call to continue the trace.
5613
+ - **Exposes `c.causality`** - a bounded, payload-free request node that survives durable command,
5614
+ event, workflow, projection, and repair seams. `traceHeaders(c.trace, c.causality)` forwards both
5615
+ conventions to a trusted downstream service.
5602
5616
  - **Exposes `c.observation`** — integrations can start correctly-parented child observations or
5603
5617
  attach an adapter without rebuilding request lifecycle state.
5604
5618
  - `responseHeader: true` also sets `traceparent` on the response (browser/client correlation).
5605
5619
 
5620
+ ## Durable causality and trust
5621
+
5622
+ Pass a durable recorder to append the request root before the handler runs. An explicitly configured
5623
+ recorder is correctness evidence, so its failure fails the request closed:
5624
+
5625
+ ```ts
5626
+ app.use(tracing({
5627
+ exporter,
5628
+ causality: {
5629
+ recorder: durableGraphStore,
5630
+ acceptInbound: (request) => verifyInternalServiceCredential(request),
5631
+ },
5632
+ }))
5633
+ ```
5634
+
5635
+ Inbound causality headers are **not trusted by default**. This prevents an internet client from
5636
+ injecting fake parents into another execution timeline. Supply `acceptInbound` only at an authenticated
5637
+ service-to-service boundary; a false, thrown, or rejected decision starts a fresh graph. W3C
5638
+ `traceparent` remains normal observability context, but a fresh durable execution id includes the
5639
+ server-generated span id and is not copied from the untrusted header.
5640
+
5641
+ Use `causalitySpanLink(context)` when durable work opens a later observation. It creates a real OTel
5642
+ link to the nearest observed causal ancestor and drops invalid/unanchored contexts rather than
5643
+ inventing trace identity.
5644
+
5606
5645
  ## Adapters
5607
5646
 
5608
5647
  Implement `ObservationAdapter` to send spans wherever you collect them. `SpanExporter` remains as a
@@ -5866,6 +5905,66 @@ const report = await assertAdversarialContract(app, {
5866
5905
  request for each declared response schema, so use an isolated test app/database—never point the
5867
5906
  laboratory at production.
5868
5907
 
5908
+ `nifra levels` L4 uses this same deep engine through the explicitly configured isolated executor;
5909
+ the older core invariant runner remains only as a compatibility export.
5910
+
5911
+ ## Durable failure laboratory
5912
+
5913
+ `createFailureLab` injects replayable failures at named seams in a disposable test adapter. It
5914
+ supports crash-after-commit, duplicate delivery, event reordering, virtual delay, budget expiry,
5915
+ lost provider replies, and checkpoint contention. It never sleeps and its evidence records only
5916
+ the schedule tokens - not requests, events, provider results, error messages, or stacks.
5917
+
5918
+ ```ts
5919
+ import { FailureInjectedError, runFailureScenario } from "@nifrajs/testing"
5920
+
5921
+ let committed = false
5922
+ const report = await runFailureScenario({
5923
+ name: "outbox-crash-after-commit",
5924
+ execute(lab) {
5925
+ committed = true // the real disposable transaction committed
5926
+ lab.checkpoint("outbox.after_commit")
5927
+ },
5928
+ verify: ({ error }) => committed && error instanceof FailureInjectedError,
5929
+ }, {
5930
+ seed: 73,
5931
+ schedule: [{ kind: "crash", point: "outbox.after_commit" }],
5932
+ })
5933
+
5934
+ expect(report.ok).toBe(true)
5935
+ // Re-run with report.replay.seed + report.replay.schedule.
5936
+ ```
5937
+
5938
+ Use `lab.deliveries()` around a relay batch, `lab.provider()` around a provider call,
5939
+ `lab.remaining()` before a deadline-bound hop, and `lab.checkpointContended()` at a projection CAS.
5940
+ The laboratory is a test port: production code does not import it and pays no hot-path cost.
5941
+
5942
+ ## Adapter certification
5943
+
5944
+ `@nifrajs/testing/certification` turns an adapter interface into portable, hash-verifiable evidence.
5945
+ Built-in profiles cover storage (including optional paging/signing/copy-move), cache, jobs, Node/Deno-
5946
+ style runtimes, and durable event delivery. Every check receives a fresh adapter, capability status is
5947
+ explicit, and failures retain only the error class - never provider messages or credentials.
5948
+
5949
+ ```ts
5950
+ import {
5951
+ certifyAdapter,
5952
+ storageAdapterCertificationProfile,
5953
+ verifyAdapterCertification,
5954
+ } from "@nifrajs/testing/certification"
5955
+
5956
+ const report = await certifyAdapter({
5957
+ profile: storageAdapterCertificationProfile({ paging: true, presign: true, move: true }),
5958
+ adapterId: "s3-production-shape",
5959
+ createAdapter: () => createDisposableS3Adapter(),
5960
+ })
5961
+
5962
+ if (!report.ok || !(await verifyAdapterCertification(report))) throw new Error("adapter uncertified")
5963
+ ```
5964
+
5965
+ Run profiles only against disposable namespaces. The certification module is structural and
5966
+ dependency-free, so adapter packages keep it in test/CI and acquire no production runtime dependency.
5967
+
5869
5968
  ## Stateful sessions
5870
5969
 
5871
5970
  [`@nifrajs/client`](../client)'s **`testClient`** is already the typed, no-network in-process request
@@ -5895,6 +5994,10 @@ that every call carries and captures cookies via a shared jar.
5895
5994
 
5896
5995
  - `assertAdversarialContract(app, options?)` → green report or throws `AdversarialContractError`.
5897
5996
  - `runAdversarialContract(app, options?)` → structured `{ ok, results, failures, gaps, seed }` report.
5997
+ - `createFailureLab(options)` → deterministic controller for isolated durable adapters.
5998
+ - `runFailureScenario(scenario, options)` → token-only `{ ok, replay, evidence, error? }` report.
5999
+ - `certifyAdapter({ profile, adapterId, createAdapter })` → capability matrix + SHA-256 evidence.
6000
+ - `verifyAdapterCertification(report)` → recompute and verify portable certification evidence.
5898
6001
  - `testSession<App>(app, { origin?, cookies? })` → `{ client: Treaty<App>, cookies: CookieJar }`.
5899
6002
  - `cookieJar()` → `CookieJar` — `header()` · `applyTo(headers)` · `store(response)` · `set` · `get` · `clear` · `size`.
5900
6003
  Honours removal (`Max-Age=0` / past `Expires`); other cookie attributes are ignored (in-process, same-origin).
@@ -6311,7 +6414,7 @@ done-gate, or `nifra mcp` to give the agent live project tools.
6311
6414
 
6312
6415
  ## @nifrajs/otel
6313
6416
 
6314
- `ActiveObservation`, `AttributeValue`, `combineObservationAdapters`, `consoleSpanExporter`, `createObservationLifecycle`, `EndObservation`, `formatTraceparent`, `generateSpanId`, `generateTraceId`, `NifraSpan`, `ObservationAdapter`, `ObservationClock`, `ObservationContext`, `ObservationLifecycle`, `ObservationLifecycleOptions`, `ObservationParent`, `ParsedTraceparent`, `parseTraceparent`, `SpanExporter`, `SpanStatus`, `StartObservation`, `TraceContext`, `traceHeaders`, `tracing`, `TracingOptions`
6417
+ `ActiveObservation`, `AttributeValue`, `causalitySpanLink`, `combineObservationAdapters`, `consoleSpanExporter`, `createObservationLifecycle`, `EndObservation`, `formatTraceparent`, `generateSpanId`, `generateTraceId`, `NifraSpan`, `ObservationAdapter`, `ObservationClock`, `ObservationContext`, `ObservationLifecycle`, `ObservationLifecycleOptions`, `ObservationLink`, `ObservationParent`, `ParsedTraceparent`, `parseTraceparent`, `SpanExporter`, `SpanStatus`, `StartObservation`, `TraceContext`, `traceHeaders`, `tracing`, `TracingOptions`
6315
6418
 
6316
6419
  ## @nifrajs/prompt
6317
6420
 
@@ -6331,7 +6434,7 @@ done-gate, or `nifra mcp` to give the agent live project tools.
6331
6434
 
6332
6435
  ## @nifrajs/testing
6333
6436
 
6334
- `AdversarialContractError`, `AdversarialContractOptions`, `AdversarialContractReport`, `AdversarialContractResult`, `AppLike`, `assertAdversarialContract`, `assertIncidentReplays`, `CapturedRequest`, `CapturedRequestInput`, `captureIncident`, `CaptureIncidentOptions`, `ContractCaseContext`, `ContractCaseKind`, `ContractCoverageGap`, `ContractCoverageGapCode`, `ContractReplay`, `ContractRuntime`, `ContractTarget`, `ContractTestApp`, `ContractWitness`, `cookieJar`, `CookieJar`, `generateRegressionTest`, `GenerateRegressionTestOptions`, `IncidentCapsule`, `IncidentReplayError`, `IncidentReplayResult`, `redactForEmission`, `replayIncident`, `ReplayIncidentOptions`, `runAdversarialContract`, `shapeOf`, `testSession`, `TestSession`, `TestSessionOptions`
6437
+ `AdapterCertificationError`, `AdapterCertificationProfile`, `AdapterCertificationReport`, `AdversarialContractError`, `AdversarialContractOptions`, `AdversarialContractReport`, `AdversarialContractResult`, `AppLike`, `assertAdapterCertification`, `assertAdversarialContract`, `assertIncidentReplays`, `cacheStoreCertificationProfile`, `CapturedRequest`, `CapturedRequestInput`, `captureIncident`, `CaptureIncidentOptions`, `CertifiableCacheEntry`, `CertifiableCacheStore`, `CertifiableDomainEvent`, `CertifiableEventDeliveryAdapter`, `CertifiableEventRecord`, `CertifiableJobStore`, `CertifiableRuntimeAdapter`, `CertifiableRuntimeServer`, `CertifiableStorageAdapter`, `CertificationCapabilityEvidence`, `CertificationCheck`, `CertificationCheckEvidence`, `certifyAdapter`, `ContractCaseContext`, `ContractCaseKind`, `ContractCoverageGap`, `ContractCoverageGapCode`, `ContractReplay`, `ContractRuntime`, `ContractTarget`, `ContractTestApp`, `ContractWitness`, `cookieJar`, `CookieJar`, `createFailureLab`, `defineCertificationProfile`, `eventDeliveryCertificationProfile`, `FailureDirective`, `FailureEvidence`, `FailureInjectedError`, `FailureKind`, `FailureLab`, `FailureLabOptions`, `FailureReplay`, `FailureScenario`, `FailureScenarioReport`, `generateRegressionTest`, `GenerateRegressionTestOptions`, `IncidentCapsule`, `IncidentReplayError`, `IncidentReplayResult`, `jobStoreCertificationProfile`, `redactForEmission`, `replayIncident`, `ReplayIncidentOptions`, `runAdversarialContract`, `runFailureScenario`, `runtimeAdapterCertificationProfile`, `shapeOf`, `storageAdapterCertificationProfile`, `testSession`, `TestSession`, `TestSessionOptions`, `verifyAdapterCertification`
6335
6438
 
6336
6439
  ## @nifrajs/uploads
6337
6440