@nifrajs/cli 3.2.0 → 3.5.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 (119) hide show
  1. package/dist/check-diagnostics.d.ts +3 -15
  2. package/dist/check-diagnostics.d.ts.map +1 -1
  3. package/dist/check-diagnostics.js +149 -713
  4. package/dist/check-diagnostics.js.map +1 -1
  5. package/dist/check-scan.d.ts +9 -0
  6. package/dist/check-scan.d.ts.map +1 -1
  7. package/dist/check-scan.js +32 -0
  8. package/dist/check-scan.js.map +1 -1
  9. package/dist/check.d.ts +1 -0
  10. package/dist/check.d.ts.map +1 -1
  11. package/dist/check.js +63 -8
  12. package/dist/check.js.map +1 -1
  13. package/dist/cli.d.ts.map +1 -1
  14. package/dist/cli.js +46 -7
  15. package/dist/cli.js.map +1 -1
  16. package/dist/command-catalog.d.ts +4 -1
  17. package/dist/command-catalog.d.ts.map +1 -1
  18. package/dist/command-catalog.js +28 -7
  19. package/dist/command-catalog.js.map +1 -1
  20. package/dist/contracts.d.ts +3 -2
  21. package/dist/contracts.d.ts.map +1 -1
  22. package/dist/contracts.js +4 -3
  23. package/dist/contracts.js.map +1 -1
  24. package/dist/diagnostics.d.ts +86 -0
  25. package/dist/diagnostics.d.ts.map +1 -1
  26. package/dist/diagnostics.js +85 -0
  27. package/dist/diagnostics.js.map +1 -1
  28. package/dist/introspect.d.ts +1 -3
  29. package/dist/introspect.d.ts.map +1 -1
  30. package/dist/introspect.js +1 -47
  31. package/dist/introspect.js.map +1 -1
  32. package/dist/load.d.ts +5 -0
  33. package/dist/load.d.ts.map +1 -1
  34. package/dist/load.js.map +1 -1
  35. package/dist/mcp-context.d.ts.map +1 -1
  36. package/dist/mcp-context.js +4 -5
  37. package/dist/mcp-context.js.map +1 -1
  38. package/dist/mcp-exec.d.ts +1 -0
  39. package/dist/mcp-exec.d.ts.map +1 -1
  40. package/dist/mcp-exec.js +133 -25
  41. package/dist/mcp-exec.js.map +1 -1
  42. package/dist/mcp-http.d.ts.map +1 -1
  43. package/dist/mcp-http.js +4 -1
  44. package/dist/mcp-http.js.map +1 -1
  45. package/dist/mcp-io.d.ts +12 -0
  46. package/dist/mcp-io.d.ts.map +1 -1
  47. package/dist/mcp-io.js +68 -0
  48. package/dist/mcp-io.js.map +1 -1
  49. package/dist/mcp-path.d.ts +10 -0
  50. package/dist/mcp-path.d.ts.map +1 -0
  51. package/dist/mcp-path.js +51 -0
  52. package/dist/mcp-path.js.map +1 -0
  53. package/dist/mcp-reflect.d.ts.map +1 -1
  54. package/dist/mcp-reflect.js +2 -2
  55. package/dist/mcp-reflect.js.map +1 -1
  56. package/dist/mcp-render.d.ts.map +1 -1
  57. package/dist/mcp-render.js +62 -43
  58. package/dist/mcp-render.js.map +1 -1
  59. package/dist/mcp-root.d.ts.map +1 -1
  60. package/dist/mcp-root.js +14 -2
  61. package/dist/mcp-root.js.map +1 -1
  62. package/dist/mcp-run.d.ts.map +1 -1
  63. package/dist/mcp-run.js +82 -51
  64. package/dist/mcp-run.js.map +1 -1
  65. package/dist/mcp.d.ts +2 -2
  66. package/dist/mcp.d.ts.map +1 -1
  67. package/dist/mcp.js +84 -29
  68. package/dist/mcp.js.map +1 -1
  69. package/dist/project-facts.d.ts +23 -4
  70. package/dist/project-facts.d.ts.map +1 -1
  71. package/dist/project-facts.js +12 -2
  72. package/dist/project-facts.js.map +1 -1
  73. package/dist/review.d.ts +21 -0
  74. package/dist/review.d.ts.map +1 -0
  75. package/dist/review.js +819 -0
  76. package/dist/review.js.map +1 -0
  77. package/dist/rules/legacy.d.ts +3 -1
  78. package/dist/rules/legacy.d.ts.map +1 -1
  79. package/dist/rules/legacy.js +796 -34
  80. package/dist/rules/legacy.js.map +1 -1
  81. package/dist/scaffold.d.ts.map +1 -1
  82. package/dist/scaffold.js +23 -4
  83. package/dist/scaffold.js.map +1 -1
  84. package/dist/verification-plan.d.ts.map +1 -1
  85. package/dist/verification-plan.js +4 -0
  86. package/dist/verification-plan.js.map +1 -1
  87. package/dist/work-graph.d.ts +3 -0
  88. package/dist/work-graph.d.ts.map +1 -1
  89. package/dist/work-graph.js +4 -3
  90. package/dist/work-graph.js.map +1 -1
  91. package/docs/examples.json +10 -4
  92. package/docs/llms-full.txt +500 -46
  93. package/docs/types.json +1123 -82
  94. package/package.json +10 -9
  95. package/src/check-diagnostics.ts +181 -796
  96. package/src/check-scan.ts +36 -0
  97. package/src/check.ts +65 -12
  98. package/src/cli.ts +53 -7
  99. package/src/command-catalog.ts +33 -7
  100. package/src/contracts.ts +12 -3
  101. package/src/diagnostics.ts +179 -0
  102. package/src/introspect.ts +3 -55
  103. package/src/load.ts +5 -0
  104. package/src/mcp-context.ts +4 -6
  105. package/src/mcp-exec.ts +142 -30
  106. package/src/mcp-http.ts +4 -1
  107. package/src/mcp-io.ts +73 -0
  108. package/src/mcp-path.ts +50 -0
  109. package/src/mcp-reflect.ts +3 -2
  110. package/src/mcp-render.ts +70 -40
  111. package/src/mcp-root.ts +13 -2
  112. package/src/mcp-run.ts +90 -50
  113. package/src/mcp.ts +87 -27
  114. package/src/project-facts.ts +37 -8
  115. package/src/review.ts +983 -0
  116. package/src/rules/legacy.ts +915 -35
  117. package/src/scaffold.ts +29 -4
  118. package/src/verification-plan.ts +14 -0
  119. package/src/work-graph.ts +13 -3
@@ -21,12 +21,20 @@ _Extracted from the docs at nifra.dev/docs._
21
21
 
22
22
  ## Nifra - Getting started
23
23
 
24
- > Get started with Nifra: install, server, typed client, loaders, deploy.
24
+ > Get started with Nifra: typed backend, agentic UI, bounded agent runs, full-stack SSR, and portable deployment.
25
25
 
26
- Nifra is a contract-first TypeScript framework. Start with just a typed backend - like Hono or
27
- Elysia - and the client infers its types with zero codegen. Add a frontend only when you need
28
- one: the same route model then drives SSR across React, Solid, Vue, Preact, and Svelte, on
29
- Bun, Node, Deno, and the edge.
26
+ Nifra is a contract-first TypeScript framework for applications with agents in the loop. Start
27
+ with just a typed backend - like Hono or Elysia - and the client infers its types with zero
28
+ codegen. Add a full-stack UI, a bounded agent runtime, or page-local WebMCP when you need one:
29
+ the same contracts drive all of them across Bun, Node, Deno, and the edge.
30
+
31
+ ### One app, two agent loops
32
+
33
+ A coding agent can inspect the live project, change it, run real requests, and prove the result.
34
+ A user-facing agent can discover explicit page tools, stream progress into the UI, predict a
35
+ state change, and reconcile it with the server. Both use the same typed capabilities and
36
+ verification boundary. Start with the [agent layer](/docs/agents) or the
37
+ [WebMCP & predictive UI guide](/docs/webmcp) when you are ready to add them.
30
38
 
31
39
  ### Install
32
40
 
@@ -97,7 +105,7 @@ See the [benchmarks](/benchmarks) for how it performs.
97
105
 
98
106
  ## Nifra vs. other frameworks - the honest comparison
99
107
 
100
- > How Nifra compares to the full-stack frameworks (Next.js, Nuxt, SvelteKit, Remix, TanStack Start) - and, as a standalone backend, to Hono and Elysia. Five UI frameworks, five runtimes, end-to-end types, and an AI-agent toolchain no competitor ships.
108
+ > How Nifra compares to the full-stack frameworks (Next.js, Nuxt, SvelteKit, Remix, TanStack Start) - and, as a standalone backend, to Hono and Elysia. Five UI frameworks, five runtimes, end-to-end types, and an agentic application layer built around typed capabilities.
101
109
 
102
110
  Honest comparison. Nifra is a **full-stack framework first** - five UI libraries and five runtimes
103
111
  from one core, with loaders, actions, streaming, and a typed data layer - and a
@@ -192,13 +200,13 @@ to full-stack later without a rewrite.
192
200
  regex), but a router is **~1% of a real request** - the time goes to middleware, validation,
193
201
  context, and serialization. In the current matrix (median of 5 full runs) Nifra
194
202
  **tops the framework field on Bun** - level with Elysia on `GET /users/:id` at
195
- 101% of the raw-runtime ceiling, 105% of Elysia on the validated `POST` - and
203
+ 108% of the raw-runtime ceiling, 106% of Elysia on the validated `POST` - and
196
204
  **leads every framework on Deno** on both workloads. On **Node** it
197
- **leads the framework field too** - ahead of Fastify by ~12% on the validated
198
- `POST` (96% of the raw-Node ceiling) and level-to-ahead on GET, with Elysia, Hono,
205
+ **leads the framework field too** - ahead of Fastify by ~8% on the validated
206
+ `POST` (92% of the raw-Node ceiling) and ahead on GET, with Elysia, Hono,
199
207
  and Express behind. In the realistic shape (security headers + CORS +
200
208
  bearer auth + cookies + validated query/body + a ~2.4 KB JSON response, measured with
201
- `oha`) Nifra runs at **103% of Elysia on GET and 108% on POST**. Treat benchmark
209
+ `oha`) Nifra runs at **101% of Elysia on GET and 97% on POST**. Treat benchmark
202
210
  rows as same-run evidence, not a permanent law of nature.
203
211
 
204
212
  -
@@ -220,8 +228,8 @@ emitting a real 3.1 doc with field-level request/response schemas (+ Scalar UI).
220
228
 
221
229
  ### The AI-agent toolchain - Nifra-only
222
230
 
223
- No competitor - full-stack or backend - ships this. Every Nifra app is built to be edited by AI agents
224
- accurately:
231
+ Nifra covers both sides of the agent loop: agents that edit your codebase and agents that are
232
+ part of the product. Every surface is anchored to the same typed capability boundary:
225
233
 
226
234
  -
227
235
  `nifra mcp` - an MCP server exposing `nifra_context` (the project's typed
@@ -244,6 +252,18 @@ _document_ and Semgrep pattern-matches source text; neither sees the real route
244
252
  This is what makes agent-written routes safe to merge - an agent (or a human) cannot ship an
245
253
  unauthenticated write past it.
246
254
 
255
+ -
256
+ `@nifrajs/webmcp` - explicit page-local tools using the browser WebMCP standard,
257
+ deterministic predictive UI, bounded receipts, and versioned reconciliation.
258
+ `@nifrajs/ag-ui` streams the same run into a product UI, while
259
+ `@nifrajs/agent-app` provides negotiated browser views, approvals, handoffs, and
260
+ Run Studio projections.
261
+
262
+ -
263
+ `@nifrajs/agent` - bounded typed agent turns with budgets, approvals, cancellation,
264
+ resumable evidence, shared state, and provider-neutral model ports.
265
+ `@nifrajs/a2a` exposes the same runner to other agents without rewriting the core.
266
+
247
267
  ### Where Nifra fits
248
268
 
249
269
  Reach for Nifra when you want:
@@ -958,15 +978,48 @@ function Row({ id }: { id: string }) {
958
978
  const anyPending = useFetchers().some((f) => f.snapshot().pending)
959
979
  ```
960
980
 
961
- ## Nifra - Rendering: SSG & ISR
981
+ ## Nifra - Rendering: SSR, streaming, SSG & ISR
962
982
 
963
- > Prerender static routes, enumerate dynamic ones, and cache rendered pages with stale-while-revalidate - on every runtime including the edge.
983
+ > Render critical HTML first, stream deferred data progressively, prerender static routes, and cache rendered pages with stale-while-revalidate - on every runtime including the edge.
964
984
 
965
985
  Nifra renders on one framework-agnostic seam, so the same app can be server-rendered per
966
- request (the default), **prerendered** to static files at build (SSG), or cached and served
986
+ request (the default), streamed progressively, **prerendered** to static files at build (SSG), or cached and served
967
987
  **stale-while-revalidate** (ISR) - and every strategy works on Bun, Node, Deno, **and**
968
988
  the edge.
969
989
 
990
+ ### Progressive rendering with `defer()`
991
+
992
+ Keep critical loader data in the first HTML shell and mark slower, non-critical values with
993
+ `defer()`. Nifra flushes the document shell and the adapter's rendered stream first,
994
+ then sends each deferred resolution through `<Await>` without a second data
995
+ fetch. The same protocol works for actions and soft navigations, including NDJSON on the client
996
+ side.
997
+
998
+ ```ts
999
+ import { defer } from "@nifrajs/web"
1000
+
1001
+ export async function loader({ api }: LoaderArgs<typeof app>) {
1002
+ return {
1003
+ product: (await api.products.get()).data, // critical: rendered in the first shell
1004
+ reviews: defer(api.reviews.get()), // non-critical: streamed when ready
1005
+ }
1006
+ }
1007
+
1008
+ export default function Product(props: { data: LoaderData<typeof loader> }) {
1009
+ return (
1010
+ <>
1011
+ <ProductSummary product={props.data.product} />
1012
+ <Await resolve={props.data.reviews} fallback={<p>Loading reviews…</p>}>
1013
+ {(reviews) => <Reviews items={reviews} />}
1014
+ </Await>
1015
+ </>
1016
+ )
1017
+ }
1018
+ ```
1019
+
1020
+ This is request-time progressive SSR/partial rendering. It is distinct from build-time SSG:
1021
+ the shell is not a precomputed PPR artifact, and deferred values remain request-scoped.
1022
+
970
1023
  ### SSG - prerender at build
971
1024
 
972
1025
  Opt a static route into prerendering with `export const prerender = true`. Its
@@ -4240,11 +4293,13 @@ the command printed by the build.
4240
4293
 
4241
4294
  ## Nifra - Coding agents
4242
4295
 
4243
- > Nifra's agent layer: live MCP tools for coding agents, bounded typed turns, resumable evidence, a coding-agent host, browser views, A2A and AG-UI bridges, and token-only telemetry.
4296
+ > Nifra's agent layer: live MCP tools, bounded repairable turns, native approvals, resumable evidence, content-free browser views, capability registry, decision inbox, Run Studio, A2A, and AG-UI.
4244
4297
 
4245
4298
  Nifra ships an MCP server. It is not a documentation lookup bolted onto a framework: an agent
4246
4299
  can read the project, learn the real API, run actual requests against the backend it just
4247
- edited, and finish with a report of what the change proved.
4300
+ edited, and finish with a report of what the change proved. The same typed capabilities can
4301
+ power the agent inside your product through [WebMCP and predictive UI](/docs/webmcp)
4302
+ or stream into a product surface through AG-UI.
4248
4303
 
4249
4304
  ### One MCP, two ways to connect
4250
4305
 
@@ -4324,6 +4379,8 @@ nifra_check # typecheck + lints, each with a structured fix
4324
4379
  nifra_fix # applies the mechanical ones
4325
4380
  nifra_run {request} # a real request through the backend: status, headers, parsed body
4326
4381
  nifra_render {path} # SSR a page route, returns the HTML
4382
+ nifra_inspect {port} # recent dev-server request traces: status, duration, ISR hit/miss
4383
+ nifra_explain {error} # turn a failure into a structured diagnostic and fix
4327
4384
  nifra_test # bun test, bounded structured results
4328
4385
 
4329
4386
  # 4. What does it now prove?
@@ -4465,8 +4522,28 @@ bunx nifra-agent --backend pi --message "run the checks and explain failures"
4465
4522
  ```
4466
4523
 
4467
4524
  The public host keeps live queues and captured evidence bounded, filters verification process
4468
- environments, and treats extensions as an explicit opt-in. The local process adapter and
4469
- extension worker are crash-containment helpers, not hostile-code sandboxes.
4525
+ environments, and treats extensions as an explicit opt-in. Post-turn `check`,
4526
+ `assure`, or `test` gates emit `verification.completed` and
4527
+ `repair.required`; when enabled, the host sends a bounded repair prompt and reruns
4528
+ the gate until it passes or the attempt cap is reached. The local process adapter and extension
4529
+ worker are crash-containment helpers, not hostile-code sandboxes.
4530
+
4531
+ ```ts
4532
+ # Post-turn gates are opt-in. A failed gate becomes bounded repair work.
4533
+ bunx nifra-agent --backend pi --message "implement the change" \
4534
+ --verify-after-turn check,assure --max-repair-attempts 2
4535
+
4536
+ # Set --max-repair-attempts 0 for observe-only verification.
4537
+ ```
4538
+
4539
+ ### Native approval protocol
4540
+
4541
+ `@nifrajs/coding-agent` can pause a native tool call at the decision boundary and
4542
+ emit `approval.required` with an opaque approval id, action, capability, and bounded
4543
+ coordinates. Resolve it through the host or RPC with `approval.resolve`; the backend
4544
+ emits `approval.resolved` and only then executes the tool. Denial, cancellation,
4545
+ timeout, and closed sessions all fail closed, and `approvalTimeoutMs` bounds how long
4546
+ a pending decision can remain open.
4470
4547
 
4471
4548
  ### Expose the same agent to other clients
4472
4549
 
@@ -4509,11 +4586,15 @@ auth and authorization middleware, and scope every injected port to the request
4509
4586
  ### Browser views and the Workbench
4510
4587
 
4511
4588
  `@nifrajs/agent-app` is a backend-free browser SDK for negotiated commands, ordered
4512
- and resumable event streams, approvals, handoffs, and Run Studio projections. Its public views
4513
- contain structure - statuses, counters, coordinates, and error codes - rather than prompts,
4514
- tool payloads, model output, or filesystem paths. The optional Workbench uses that same surface:
4515
- run `bun run --filter '@nifrajs/workbench' dev -- --cwd /path/to/project` for the
4516
- local browser client.
4589
+ and resumable event streams, approvals, handoffs, and Run Studio projections. It negotiates
4590
+ optional features including `approvals`, `checkpoint`,
4591
+ `fork`, `handoff`, `inbox`, `reload`,
4592
+ `resume`, and `workflows`, so a browser can degrade deliberately when a
4593
+ host does not offer one. Its public views contain structure - statuses, counters, coordinates,
4594
+ and error codes - rather than prompts, tool payloads, model output, or filesystem paths. The
4595
+ optional Workbench uses that same surface: run
4596
+ `bun run --filter '@nifrajs/workbench' dev -- --cwd /path/to/project` for the local
4597
+ browser client.
4517
4598
 
4518
4599
  ```ts
4519
4600
  import { AgentAppClient, HttpAgentTransport } from "@nifrajs/agent-app"
@@ -4532,14 +4613,30 @@ for await (const view of client.send("summarize the diff")) {
4532
4613
  }
4533
4614
  ```
4534
4615
 
4616
+ ### Capability registry, decision inbox, and Run Studio
4617
+
4618
+ The Workbench's `registry.list` view shows content-free identity cards for admitted
4619
+ capabilities: kind, name, version, schema digest, required capability tokens, and approval,
4620
+ retry, idempotency, and isolation classes. It never renders a prompt, input schema, tool
4621
+ payload, model output, or filesystem path.
4622
+
4623
+ The `inbox` feature lists pending approval and handoff boundaries by exact structural
4624
+ coordinate - run, node, capability, child vector, request id, and expiry. Every approve, deny,
4625
+ assign, resolve, or cancel command carries that coordinate, so stale, mismatched, or expired
4626
+ decisions are refused by the host. `run.studio` projects the same bounded evidence
4627
+ into a run graph, retry/recovery timeline, eval comparison, and deterministic fault-injection
4628
+ view. These are presentation-safe views: content stays in the host.
4629
+
4535
4630
  ### Evidence, streaming, and telemetry
4536
4631
 
4537
4632
  `@nifrajs/agent` runs bounded typed turns with tool contracts, budgets, approvals,
4538
4633
  resumable token-only evidence, model deltas, and a transient shared-state channel. Add an
4539
4634
  `evidenceLog` to the HTTP seams for SSE replay after a dropped connection; replay
4540
- resumes evidence and never re-executes the turn. `@nifrajs/agent-telemetry` converts
4541
- the same constrained evidence into fail-open OpenTelemetry run and step spans. Providers,
4542
- credentials, durable storage, retention, and tenant policy remain application-owned ports.
4635
+ resumes evidence and never re-executes the turn. The additive run-lifecycle contract supplies
4636
+ content-free snapshots, ordered evidence refs, feature negotiation, handoff state, and cursor
4637
+ resume. `@nifrajs/agent-telemetry` converts the same constrained evidence into
4638
+ fail-open OpenTelemetry run and step spans. Providers, credentials, durable storage, retention,
4639
+ and tenant policy remain application-owned ports.
4543
4640
 
4544
4641
  ### Projects without a web config
4545
4642
 
@@ -4916,6 +5013,34 @@ export const app = createWebApp({
4916
5013
  This is the _global imports_ tier: one bundled stylesheet linked on every page (the
4917
5014
  common case - a global stylesheet or Tailwind output).
4918
5015
 
5016
+ #### Prefetch-safe aggregate CSS
5017
+
5018
+ Vite's default CSS splitting can attach a new stylesheet when a prefetched lazy route module
5019
+ evaluates. If those selectors affect content already on the page, each attachment can trigger
5020
+ style recalculation and layout work. For an app whose stylesheet is already bounded (for
5021
+ example, one using atomic StyleX plus a small legacy CSS-Modules layer), opt into one aggregate
5022
+ CSS asset and deferred activation in the CLI config. The aggregate file is still content-hashed;
5023
+ only its activation is deferred until the browser has fetched it.
5024
+
5025
+ ```ts
5026
+ // nifra.config.ts - opt into Vite's single-file CSS path for apps that prefetch many lazy routes.
5027
+ export const cssCodeSplit = false
5028
+ export const cssLoading = "deferred"
5029
+
5030
+ // cssCodeSplit: false emits one content-hashed stylesheet, so lazy module prefetch cannot attach a
5031
+ // new stylesheet for every route. cssLoading: "deferred" fetches that file with media="print"; the
5032
+ // generated client promotes it to media="all" after load/error/timeout and before hydration.
5033
+ // `nifra build` selects Vite automatically for this Vite-only output policy. The default stays
5034
+ // backward-compatible: split CSS + blocking links.
5035
+ // `cssLoading: "deferred"` must be paired with `cssCodeSplit: false` on Vite.
5036
+ ```
5037
+
5038
+ This is opt-in and Vite-specific. Nifra rejects `cssLoading: "deferred"` with split
5039
+ Vite CSS because that combination would leave the prefetch insertion problem in place. A failed
5040
+ or slow stylesheet request is bounded: the client promotes the link and hydrates rather than
5041
+ leaving the loader visible forever. Non-hydrated pages keep ordinary blocking links for
5042
+ JavaScript-off and terminal-page styling.
5043
+
4919
5044
  #### Scoped styles - CSS Modules & SFC <style>
4920
5045
 
4921
5046
  For component-local styles you have two collision-free options, both bundled into that same
@@ -7962,21 +8087,41 @@ isolated fixtures and a test database. Never point a contract laboratory at prod
7962
8087
 
7963
8088
  ## Nifra - Types-first architecture
7964
8089
 
7965
- > One schema is the single source of truth: it drives runtime validation, inferred TypeScript types, the no-codegen typed client, an OpenAPI document, and the MCP contract your agents read.
8090
+ > Nifra infers route types from path literals and handlers automatically, with optional Standard Schemas for validation, explicit contracts, OpenAPI, and agent-readable APIs.
7966
8091
 
7967
- In Nifra a single schema is the **source of truth**. The same definition drives runtime
7968
- validation, inferred TypeScript types, the no-codegen typed client, an OpenAPI document, and
7969
- the contract your coding agents read - so the five never drift apart.
8092
+ Nifra starts with automatic inference. A route's path literal, handler context, and return
8093
+ value produce its TypeScript surface; add a Standard Schema when you need runtime validation,
8094
+ coercion, or an explicit request/response contract. The same server type then drives the
8095
+ no-codegen client and the agent-readable API surface.
7970
8096
 
7971
- ### One schema
8097
+ ### Inline inference first
7972
8098
 
7973
- Define request inputs and the response shape once with `t`. Nothing here is
7974
- framework-specific; it's a plain object you attach to a route.
8099
+ The chainable builder is fully type-inferred. Path parameters are parsed from the route
8100
+ pattern, handler context is typed automatically, and plain return values become the success
8101
+ response seen by the client. This is the quick-start style, similar to Elysia's inline route
8102
+ inference.
8103
+
8104
+ ```ts
8105
+ import { server } from "@nifrajs/core/server"
8106
+
8107
+ export const app = server()
8108
+ .get("/users/:id", (c) => ({ id: c.params.id, name: "Ada" }))
8109
+ // c.params.id is inferred from the path; the return type becomes the client response.
8110
+ .post("/users", () => ({ created: true }))
8111
+
8112
+ // No schema, annotation, or codegen is required for the route types.
8113
+ ```
8114
+
8115
+ ### Schemas at the trust boundary
8116
+
8117
+ Attach a Standard Schema when inputs must be validated before the handler runs, or when you
8118
+ want an explicit response contract. Path params are already inferred from `:id`;
8119
+ the `params` schema below adds runtime constraints/coercion as well.
7975
8120
 
7976
8121
  ```ts
7977
8122
  import { t } from "@nifrajs/schema"
7978
8123
 
7979
- // One contract, defined once. Everything below is derived from it.
8124
+ // Add a schema when the boundary needs runtime validation or a declared contract.
7980
8125
  export const GetUser = {
7981
8126
  params: t.object({ id: t.string() }),
7982
8127
  response: t.object({
@@ -8006,9 +8151,10 @@ export const app = server().get("/users/:id", GetUser, (c) => {
8006
8151
 
8007
8152
  ### Inferred types
8008
8153
 
8009
- The same schema types the handler: `c.params.id` is `string`, and the
8010
- return value is checked against `response`. Change the schema and the handler
8011
- stops compiling until it matches - types and validation can't disagree.
8154
+ Without a schema, `c.params.id` is still `string` and the handler return
8155
+ is captured automatically. With a schema, its output types the handler and its declared
8156
+ `response` constrains what the handler may return. Change either the route or the
8157
+ contract and the typed client follows at compile time.
8012
8158
 
8013
8159
  ### The typed client
8014
8160
 
@@ -8030,6 +8176,16 @@ if (res.ok) {
8030
8176
  }
8031
8177
  ```
8032
8178
 
8179
+ ### Contract-first when the surface must be separate
8180
+
8181
+ Inline inference is the default. If the API needs to be shared, versioned, or implemented by
8182
+ more than one service, declare it with `defineContract` and connect handlers with
8183
+ `implement`. That keeps the contract type available without importing a server
8184
+ implementation into the client.
8185
+
8186
+ See [Framework contract](/docs/contract) for the decoupled form and its scaling
8187
+ guidance.
8188
+
8033
8189
  ### OpenAPI
8034
8190
 
8035
8191
  The `openapi()` middleware builds an OpenAPI 3.1 document from your registered
@@ -8175,6 +8331,98 @@ The `nifra_levels` MCP tool returns the same
8175
8331
  `{ achieved, levels[] }` report. An agent can read what its change proved, and a
8176
8332
  level that regressed comes back with the reason it broke.
8177
8333
 
8334
+ ## Nifra - WebMCP & predictive UI
8335
+
8336
+ > Expose explicit page-local WebMCP tools from typed Nifra capabilities while keeping remote MCP, authorization, receipts, and predictive UI reconciliation on one contract.
8337
+
8338
+ WebMCP is the right page-local transport for an agent to discover and call tools in the
8339
+ currently open site. Nifra adopts that standard directly and adds a complementary contract for
8340
+ the semantics WebMCP does not define: typed capabilities, deterministic prediction, versioned
8341
+ reconciliation, bounded receipts, and host-independent conformance tests.
8342
+
8343
+ ### One capability, one trust boundary
8344
+
8345
+ Define an explicit capability once. Its input and output schemas are the same Nifra core
8346
+ schemas used by every other adapter, and the handler still runs behind capability, approval,
8347
+ idempotency, budget, cancellation, and output checks.
8348
+
8349
+ ```ts
8350
+ // doc-check: skip - addItemOnServer is supplied by the application.
8351
+ import { t } from "@nifrajs/schema"
8352
+ import { defineAgentCapability } from "@nifrajs/webmcp"
8353
+
8354
+ export const addToCart = defineAgentCapability({
8355
+ name: "cart.add",
8356
+ description: "Add a product to the current cart.",
8357
+ input: t.object({ sku: t.string(), quantity: t.number() }),
8358
+ output: t.object({ cartVersion: t.string() }),
8359
+ annotations: { readOnlyHint: false, destructiveHint: false },
8360
+ writes: ["cart"],
8361
+ execute: (input) => addItemOnServer(input),
8362
+ })
8363
+ ```
8364
+
8365
+ ### Adopt WebMCP without a fork
8366
+
8367
+ Register only the tools your page intentionally offers. Nifra feature-detects
8368
+ `document.modelContext.registerTool`, isolates host registration failures, and
8369
+ makes unsupported browsers a no-op. Registration is discovery, not authorization: the server
8370
+ must enforce authorization again for writes.
8371
+
8372
+ ```ts
8373
+ // doc-check: skip - addToCart is declared in the preceding section.
8374
+ import { registerWebMcpTools } from "@nifrajs/webmcp"
8375
+
8376
+ // Explicit allowlist. On ordinary browsers this resolves to a safe unsupported report.
8377
+ const registration = await registerWebMcpTools([addToCart])
8378
+ console.log(registration.supported, registration.registered, registration.failed)
8379
+ // The host receives the standard document.modelContext.registerTool({
8380
+ // name, description, inputSchema, annotations, execute
8381
+ // }) shape.
8382
+ ```
8383
+
8384
+ ### Keep remote MCP as the durable surface
8385
+
8386
+ WebMCP needs an open page and is local to that page. Remote MCP remains the right surface for
8387
+ background work, integrations, and MCP Apps. Project the same `capability.tool` into
8388
+ the existing MCP adapter; do not maintain a second schema or handler.
8389
+
8390
+ ```ts
8391
+ // doc-check: skip - addToCart is declared in the preceding section.
8392
+ import { toMcpTool } from "@nifrajs/mcp/tool-contract"
8393
+
8394
+ // Same core schemas, authorization, approval, idempotency, and evidence - different transport.
8395
+ const remoteTool = toMcpTool(addToCart.tool, {
8396
+ capabilities: [addToCart.tool.capability],
8397
+ })
8398
+ ```
8399
+
8400
+ ### Predict, then reconcile
8401
+
8402
+ Predictive UI is application-owned deterministic state, not an LLM guess. A predictor returns a
8403
+ bounded `add`/`replace`/`remove` patch tied to an authoritative
8404
+ version. The store applies it atomically, and a successful server response either replaces the
8405
+ authoritative state or rolls the overlay back on failure, expiry, or conflict.
8406
+
8407
+ ```ts
8408
+ // doc-check: skip - addToCart is declared in the preceding section.
8409
+ import { createPredictionStore, executePredicted } from "@nifrajs/webmcp"
8410
+
8411
+ const store = createPredictionStore({ state: { items: [] }, version: "cart-1" })
8412
+ const result = await executePredicted(addToCart, { sku: "sku-1", quantity: 1 }, store)
8413
+ // committed | rolled-back | conflicted | expired | stale | invalid | executed
8414
+ console.log(result.outcome, result.snapshot)
8415
+ // predict is a pure RFC 6902 subset patch; reconcile accepts the authoritative server version.
8416
+ ```
8417
+
8418
+ ### What belongs in the complementary contract
8419
+
8420
+ Keep the browser standard small: discovery and execution. Keep Nifra’s public seam provider
8421
+ neutral: scope, bounded state paths, reconciliation policy, receipts, and deterministic
8422
+ conformance. Keep durable idempotency, tenancy, credentials, retention, pricing, and operated
8423
+ policy injected behind the same core contract. This makes the surface useful with any WebMCP
8424
+ host while preserving Nifra’s server-side trust boundary.
8425
+
8178
8426
  ---
8179
8427
 
8180
8428
  # Package reference (READMEs)
@@ -8415,6 +8663,24 @@ const result = await runAgent(definition, { value: input }, ports, {
8415
8663
  The public in-memory adapters are for local development and tests. Durable state, provider
8416
8664
  credentials, and operated policy remain adapter concerns.
8417
8665
 
8666
+ For transient prompt assembly, `@nifrajs/agent/context` provides a deterministic, token-budgeted
8667
+ selection seam:
8668
+
8669
+ ```ts
8670
+ import { assembleContext } from "@nifrajs/agent/context"
8671
+
8672
+ const context = assembleContext(
8673
+ [
8674
+ { id: "system", kind: "instruction", content: "You are concise.", required: true },
8675
+ { id: "memory", kind: "memory", content: "The user prefers short answers.", priority: 10 },
8676
+ ],
8677
+ { budget: { maxTokens: 2_000, reserveTokens: 256 } },
8678
+ )
8679
+ ```
8680
+
8681
+ The assembler owns selection, ordering, and accounting only. Persistence, embeddings, retrieval
8682
+ indexes, provider tokenizers, redaction, and product policy stay in caller-owned adapters.
8683
+
8418
8684
  Gateway and deployment contracts are deliberately provider-neutral. Retry, fallback, budget,
8419
8685
  deadline, workspace, and hostile-code isolation claims are admitted only from a host-approved
8420
8686
  capability report. The local and replay reference profiles are not hostile-code sandboxes, and no
@@ -8563,6 +8829,55 @@ belong in these public contracts.
8563
8829
  For AI agents, see [`LLM.md`](./LLM.md) and the full corpus
8564
8830
  [`../../llms-full.txt`](../../llms-full.txt).
8565
8831
 
8832
+ ## @nifrajs/agent-review
8833
+
8834
+ `@nifrajs/agent-review` is a small, provider-neutral contract for bounded review results. It is a
8835
+ leaf package: it does not run checks, read a repository, invoke fixes, provide a CLI, or persist
8836
+ review data.
8837
+
8838
+ ```ts
8839
+ import { composeReviewReport, parseReviewReport } from "@nifrajs/agent-review"
8840
+
8841
+ const report = await composeReviewReport({
8842
+ strict: false,
8843
+ scope: {
8844
+ kind: "project",
8845
+ state: "valid",
8846
+ changedPaths: [],
8847
+ pathDigest: "a".repeat(64),
8848
+ outOfScopeCount: 0,
8849
+ },
8850
+ checks: [],
8851
+ findings: [],
8852
+ })
8853
+
8854
+ const verified = await parseReviewReport(JSON.stringify(report))
8855
+ ```
8856
+
8857
+ The parser accepts a JSON string or an unknown value and fails closed. It rejects unknown keys and
8858
+ content-bearing keys such as `message`, `prompt`, `output`, `payload`, `body`, and `secret` at any
8859
+ depth. Findings carry only stable codes, structural categories, safe locations, and opaque
8860
+ evidence references; they do not carry diagnostic messages, source text, requests, responses, or
8861
+ model content.
8862
+
8863
+ Reports are limited to 256 KiB, depth 8, 32 keys per object, 1,024 array items, 512-byte paths,
8864
+ 256-byte Git references, and bounded identifiers. Paths are project-relative POSIX paths. Parsed
8865
+ reports are deeply frozen. Report status, blocking count, and success are derived and verified;
8866
+ callers cannot make an invalid report pass by changing those fields.
8867
+
8868
+ Canonical report digests use lowercase Web Crypto SHA-256. Check duration is display-only and is
8869
+ excluded from the digest, so equivalent structure has the same identity across runtimes and timing.
8870
+ The package uses no runtime dependencies, filesystem access, environment reads, provider SDKs, or
8871
+ Nifra package imports. It relies on `globalThis.crypto.subtle` and `TextEncoder`, which are available
8872
+ in Bun, modern Node, Deno, Workers, and browsers.
8873
+
8874
+ The composer accepts only the typed structural inputs already produced by a trusted collector. It
8875
+ sorts and copies them, derives the outcome, signs the canonical report, and runs the same parser
8876
+ boundary before returning it. Repository collectors, CLI/MCP projections, SARIF, and safe fix
8877
+ recipes belong in higher-level packages.
8878
+
8879
+ For coding agents, see [`LLM.md`](./LLM.md). The full machine-readable corpus is [`../../llms-full.txt`](../../llms-full.txt).
8880
+
8566
8881
  ## @nifrajs/agent-telemetry
8567
8882
 
8568
8883
  Child-span telemetry for AI tool calls made through Nifra tool and MCP endpoints.
@@ -10095,6 +10410,10 @@ Mount `mcp.fetch` at `POST /mcp`. The package also exposes the JSON-RPC protocol
10095
10410
  layers directly, plus `defineMcpWidget` and the React adapter for tool results that render UI in MCP
10096
10411
  hosts.
10097
10412
 
10413
+ MCP servers are same-origin for browser clients by default. Set an exact `allowedOrigins` list for
10414
+ known cross-origin clients, or set `allowAnyOrigin: true` only for a deliberately public,
10415
+ secret-free server. Authentication is still the host application's responsibility.
10416
+
10098
10417
  Clients that include `text/event-stream` in `Accept` receive progress notifications as they happen,
10099
10418
  followed by the final JSON-RPC response in the same stream. An SSE `GET /mcp` opens a cancellable
10100
10419
  server-message connection; a plain `GET /mcp` remains a health page.
@@ -11309,6 +11628,133 @@ one cheap read instead of the whole corpus. For the wider framework: the repo's
11309
11628
  [`llms-full.txt`](../../llms-full.txt) is the full machine-readable corpus. Run `nifra check` as the
11310
11629
  done-gate, or `nifra mcp` to give the agent live project tools.
11311
11630
 
11631
+ ## @nifrajs/webmcp
11632
+
11633
+ Typed WebMCP site tools plus a deterministic predictive-UI contract for Nifra applications.
11634
+
11635
+ WebMCP is the browser-local surface: compatible hosts discover tools from the page through
11636
+ `document.modelContext.registerTool`. This package does not replace WebMCP or MCP. It makes one Nifra
11637
+ core tool contract usable from a page-local agent while adding prediction, reconciliation, receipts, and
11638
+ host-independent conformance tests.
11639
+
11640
+ ```sh
11641
+ bun add @nifrajs/webmcp
11642
+ ```
11643
+
11644
+ ```ts
11645
+ import { t } from "@nifrajs/schema"
11646
+ import {
11647
+ defineAgentCapability,
11648
+ registerWebMcpTools,
11649
+ } from "@nifrajs/webmcp"
11650
+
11651
+ const addItem = defineAgentCapability({
11652
+ name: "cart.add",
11653
+ description: "Add a product to the current cart.",
11654
+ input: t.object({ sku: t.string(), quantity: t.number() }),
11655
+ output: t.object({ cartVersion: t.string() }),
11656
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true },
11657
+ writes: ["cart"],
11658
+ execute: async (input) => addItemOnTheServer(input),
11659
+ })
11660
+
11661
+ // Safe no-op on browsers/hosts without WebMCP.
11662
+ const registration = await registerWebMcpTools([addItem])
11663
+ ```
11664
+
11665
+ The returned WebMCP `execute` function runs Nifra's existing input validation, capability, approval,
11666
+ idempotency, budget, cancellation, output validation, and evidence path. By default it returns a bounded
11667
+ receipt envelope so an agent can verify whether the operation committed. The normal human UI remains the
11668
+ source of page rendering and works when WebMCP is absent.
11669
+
11670
+ Receipt output is retained only while its JSON encoding stays within the bounded `maxReceiptBytes`
11671
+ limit (16 KiB by default, 64 KiB maximum); oversized or non-JSON output is represented by
11672
+ `outputTruncated: true`. Use `resultMode: "output"` only when the embedding host provides its own
11673
+ response-size and serialization boundary.
11674
+
11675
+ ## Predictive UI
11676
+
11677
+ Predictions are application-owned and deterministic. They are not LLM guesses. Pair `predict` with
11678
+ `reconcile`; prediction patches use an atomic, defensive subset of RFC 6902 (`add`, `replace`, `remove`):
11679
+
11680
+ ```ts
11681
+ const addItem = defineAgentCapability({
11682
+ // ...typed core tool options...
11683
+ predict: ({ input, snapshot, version }) => ({
11684
+ baseVersion: version,
11685
+ patch: [
11686
+ { op: "add", path: "/items/-", value: { sku: input.sku, quantity: input.quantity } },
11687
+ ],
11688
+ }),
11689
+ reconcile: ({ previous, output }) => ({
11690
+ state: { items: previous.state.items },
11691
+ version: output.cartVersion,
11692
+ }),
11693
+ })
11694
+ ```
11695
+
11696
+ Use `createPredictionStore` and `executePredicted` for the full lifecycle:
11697
+
11698
+ ```ts
11699
+ const store = createPredictionStore({
11700
+ state: { items: [] },
11701
+ version: "cart-1",
11702
+ })
11703
+
11704
+ const result = await executePredicted(addItem, input, store)
11705
+ // committed | rolled-back | conflicted | expired | stale | invalid | executed
11706
+ console.log(result.outcome, result.snapshot)
11707
+ ```
11708
+
11709
+ The store is atomic, defensive, expiry-aware, version-aware, and rejects prototype-grafting paths.
11710
+ Successful server state replaces the authoritative base; failed calls roll the overlay back; stale
11711
+ commits become conflicts.
11712
+
11713
+ ## Remote MCP and MCP Apps
11714
+
11715
+ The capability contains the canonical `capability.tool`. Project it into the existing MCP adapter without
11716
+ creating a second contract:
11717
+
11718
+ ```ts
11719
+ import { toMcpTool } from "@nifrajs/mcp/tool-contract"
11720
+
11721
+ const remoteTool = toMcpTool(addItem.tool, {
11722
+ capabilities: [addItem.tool.capability],
11723
+ })
11724
+ ```
11725
+
11726
+ Use `@nifrajs/mcp`'s existing `defineMcpTool`, `structuredContent`, `ui://` widgets, and render intents
11727
+ when the result should render as an MCP App. WebMCP is page-local; remote MCP remains available without an
11728
+ open page.
11729
+
11730
+ ## Security
11731
+
11732
+ - Register an explicit allowlist; never expose every route, DOM event, or `fetch` call.
11733
+ - WebMCP registration is not authorization. Enforce authorization again at the server boundary.
11734
+ - Keep inputs narrow and annotations honest. A safety hint is not a permission.
11735
+ - Predictions are pure local transforms and cannot grant capability or bypass core policy.
11736
+ - Receipts contain status, bounded evidence, and error codes—not credentials, request bodies, secrets, or
11737
+ stack traces.
11738
+ - Normal browsers and non-WebMCP hosts receive a safe unsupported report.
11739
+
11740
+ ## AI conformance
11741
+
11742
+ `runAgentSurfaceConformance` accepts an injectable host and optional deterministic calls, so CI can verify
11743
+ the surface without ChatGPT or a live model:
11744
+
11745
+ ```ts
11746
+ const result = await runAgentSurfaceConformance([addItem], {
11747
+ target: fakeWebMcpHost,
11748
+ cases: [{ capability: addItem, input: { sku: "sku-1", quantity: 1 } }],
11749
+ })
11750
+ ```
11751
+
11752
+ For the complete contract, see [`LLM.md`](./LLM.md), the repository [`AGENTS.md`](../../AGENTS.md), and
11753
+ the root machine-readable [`llms-full.txt`](../../llms-full.txt) corpus.
11754
+
11755
+ See [`examples/webmcp`](../../examples/webmcp) for a complete capability projected to both WebMCP and
11756
+ the existing remote MCP adapter.
11757
+
11312
11758
  ## @nifrajs/workers
11313
11759
 
11314
11760
  Cloudflare Workers helpers for nifra - a Durable Object hub for cross-connection WebSocket broadcast.
@@ -11431,16 +11877,20 @@ done-gate, or `nifra mcp` to give the agent live project tools.
11431
11877
 
11432
11878
  ## @nifrajs/agent
11433
11879
 
11434
- `AgentApprovalPort`, `AgentApprovalResult`, `AgentDefinition`, `AgentDeltaSink`, `AgentDeployment`, `AgentDeploymentAdapter`, `AgentDeploymentPlan`, `AgentModelDelta`, `AgentModelPort`, `AgentModelRequest`, `AgentModelResponse`, `AgentPendingContinuation`, `AgentPendingKind`, `AgentPorts`, `AgentRunResult`, `AgentSharedState`, `AgentStatePatchOp`, `AgentStateStore`, `AgentStatus`, `AgentStepEvidence`, `AgentTelemetryPort`, `AgentToolContract`, `AgentToolDescriptor`, `AgentToolResult`, `AgentTranscript`, `AgentTurnBaseResult`, `AgentTurnError`, `AgentTurnInput`, `AgentTurnResult`, `AgentTurnState`, `ApprovalClass`, `assertDeploymentAuthorityMonotonic`, `CAPABILITY_DESCRIPTOR_VERSION`, `CapabilityDescriptor`, `CapabilityKind`, `combineAgentDeltaSinks`, `combineAgentTelemetry`, `composeDescriptor`, `composeRegistrySnapshot`, `createAgentSharedState`, `createAgentState`, `createDeploymentAuthority`, `createLocalProcessAdapter`, `createStructuredOutputParser`, `DeploymentActivationOptions`, `DeploymentAuthority`, `DeploymentCancellation`, `DeploymentCancelRequest`, `DeploymentCancelResult`, `DeploymentCapabilities`, `DeploymentCapabilityReport`, `DeploymentDisposeRequest`, `DeploymentDisposeResult`, `DeploymentError`, `DeploymentErrorCode`, `DeploymentEvidence`, `DeploymentFilesystem`, `DeploymentInspection`, `DeploymentInspectRequest`, `DeploymentNetwork`, `DeploymentPrepareRequest`, `DeploymentPrepareResult`, `DeploymentProcess`, `DeploymentRuntime`, `DeploymentSecrets`, `DeploymentStartRequest`, `DeploymentStartResult`, `DeploymentState`, `descriptorFromTool`, `DescriptorInput`, `ExecutionPolicy`, `ExecutionPolicyAdapter`, `FakeModelGateway`, `FakeModelGatewayOptions`, `HostileCodeIsolation`, `IdempotencyClass`, `isModelGatewayErrorCode`, `IsolationClass`, `LOCAL_PROCESS_LIMITATION`, `LocalProcessAdapter`, `LocalProcessAdapterOptions`, `LocalProcessPolicyError`, `LocalProcessRequest`, `LocalProcessResult`, `MemoryAgentStateStore`, `MODEL_GATEWAY_ERROR_CODES`, `ModelGateway`, `ModelGatewayAttemptRequest`, `ModelGatewayBudget`, `ModelGatewayEnvelope`, `ModelGatewayError`, `ModelGatewayErrorCode`, `ModelGatewayEvidence`, `ModelGatewayExecutionResult`, `ModelGatewayFailure`, `ModelGatewayFailureError`, `ModelGatewayRawResult`, `ModelGatewayRequest`, `ModelGatewayResult`, `ModelGatewaySuccess`, `ModelGatewayTerminalFailure`, `ModelGatewayUsage`, `ModelRoute`, `ModelRoutePolicy`, `ModelRouteRef`, `parseCapabilityDescriptor`, `parseDeploymentCapabilityReport`, `parseDeploymentPlan`, `parseModelGatewayError`, `parseModelGatewayResult`, `REGISTRY_SNAPSHOT_VERSION`, `RegistryError`, `RegistryErrorCode`, `RegistrySnapshot`, `replayAgent`, `ReplayModelGateway`, `ReplayModelGatewayOptions`, `resumeAgent`, `RetryClass`, `runAgent`, `RunAgentOptions`, `runModelGateway`, `structuredOutputParser`, `StructuredOutputParser`, `ToolDescriptorOptions`, `turn`
11880
+ `AgentApprovalPort`, `AgentApprovalResult`, `AgentDefinition`, `AgentDeltaSink`, `AgentDeployment`, `AgentDeploymentAdapter`, `AgentDeploymentPlan`, `AgentModelDelta`, `AgentModelPort`, `AgentModelRequest`, `AgentModelResponse`, `AgentPendingContinuation`, `AgentPendingKind`, `AgentPorts`, `AgentRunResult`, `AgentSharedState`, `AgentStatePatchOp`, `AgentStateStore`, `AgentStatus`, `AgentStepEvidence`, `AgentTelemetryPort`, `AgentToolContract`, `AgentToolDescriptor`, `AgentToolResult`, `AgentTranscript`, `AgentTurnBaseResult`, `AgentTurnError`, `AgentTurnInput`, `AgentTurnResult`, `AgentTurnState`, `ApprovalClass`, `approximateContextTokens`, `assembleContext`, `assertDeploymentAuthorityMonotonic`, `CAPABILITY_DESCRIPTOR_VERSION`, `CapabilityDescriptor`, `CapabilityKind`, `collectContext`, `combineAgentDeltaSinks`, `combineAgentTelemetry`, `composeDescriptor`, `composeRegistrySnapshot`, `ContextAssembly`, `ContextAssemblyOptions`, `ContextBudget`, `ContextBudgetError`, `ContextItem`, `ContextSource`, `ContextTokenCounter`, `createAgentSharedState`, `createAgentState`, `createDeploymentAuthority`, `createLocalProcessAdapter`, `createStructuredOutputParser`, `DeploymentActivationOptions`, `DeploymentAuthority`, `DeploymentCancellation`, `DeploymentCancelRequest`, `DeploymentCancelResult`, `DeploymentCapabilities`, `DeploymentCapabilityReport`, `DeploymentDisposeRequest`, `DeploymentDisposeResult`, `DeploymentError`, `DeploymentErrorCode`, `DeploymentEvidence`, `DeploymentFilesystem`, `DeploymentInspection`, `DeploymentInspectRequest`, `DeploymentNetwork`, `DeploymentPrepareRequest`, `DeploymentPrepareResult`, `DeploymentProcess`, `DeploymentRuntime`, `DeploymentSecrets`, `DeploymentStartRequest`, `DeploymentStartResult`, `DeploymentState`, `descriptorFromTool`, `DescriptorInput`, `ExecutionPolicy`, `ExecutionPolicyAdapter`, `FakeModelGateway`, `FakeModelGatewayOptions`, `HostileCodeIsolation`, `IdempotencyClass`, `isModelGatewayErrorCode`, `IsolationClass`, `LOCAL_PROCESS_LIMITATION`, `LocalProcessAdapter`, `LocalProcessAdapterOptions`, `LocalProcessPolicyError`, `LocalProcessRequest`, `LocalProcessResult`, `MemoryAgentStateStore`, `MODEL_GATEWAY_ERROR_CODES`, `ModelGateway`, `ModelGatewayAttemptRequest`, `ModelGatewayBudget`, `ModelGatewayEnvelope`, `ModelGatewayError`, `ModelGatewayErrorCode`, `ModelGatewayEvidence`, `ModelGatewayExecutionResult`, `ModelGatewayFailure`, `ModelGatewayFailureError`, `ModelGatewayRawResult`, `ModelGatewayRequest`, `ModelGatewayResult`, `ModelGatewaySuccess`, `ModelGatewayTerminalFailure`, `ModelGatewayUsage`, `ModelRoute`, `ModelRoutePolicy`, `ModelRouteRef`, `parseCapabilityDescriptor`, `parseDeploymentCapabilityReport`, `parseDeploymentPlan`, `parseModelGatewayError`, `parseModelGatewayResult`, `REGISTRY_SNAPSHOT_VERSION`, `RegistryError`, `RegistryErrorCode`, `RegistrySnapshot`, `replayAgent`, `ReplayModelGateway`, `ReplayModelGatewayOptions`, `resumeAgent`, `RetryClass`, `runAgent`, `RunAgentOptions`, `runModelGateway`, `structuredOutputParser`, `StructuredOutputParser`, `ToolDescriptorOptions`, `turn`
11435
11881
 
11436
11882
  ## @nifrajs/agent-app
11437
11883
 
11438
- `AGENT_APP_FEATURES`, `AgentAppClient`, `AgentAppClientOptions`, `AgentAppError`, `AgentEventView`, `AgentTransport`, `AgentTransportError`, `AgentTransportRequest`, `ApprovalRequiredView`, `ApprovalResolvedView`, `AssistantChunkView`, `AuthProvider`, `boundaryCommands`, `BoundaryDecisionResult`, `boundaryIsStale`, `BoundaryItemView`, `BoundaryStateView`, `CommandOutcome`, `CreateSessionInput`, `EvalComparisonView`, `EvidenceTimelineView`, `ExtensionReloadedView`, `FaultInjectionView`, `HandoffView`, `HttpAgentTransport`, `HttpAgentTransportOptions`, `MemoryCompactedView`, `OrderedEventBuffer`, `parseEventStream`, `PendingApprovalView`, `RegistryCapabilityView`, `RepairRequiredView`, `ReplayEntryView`, `ReplayResult`, `ResolveHandoffInput`, `ResumeInput`, `RunStudioNodeState`, `RunStudioNodeView`, `RunStudioView`, `RunView`, `SessionFailedView`, `SessionLifecycleView`, `SessionStoppedView`, `SessionView`, `toEvalComparisonView`, `toEventView`, `toEvidenceTimelineView`, `toFaultInjectionViews`, `toHandoffView`, `ToolCompletedView`, `ToolDeltaView`, `ToolStartedView`, `toRegistryCapabilityView`, `toRunStudioView`, `toRunView`, `toSessionView`, `TurnStartedView`, `VerificationCompletedView`, `virtualizeEvidenceRows`
11884
+ `AGENT_APP_FEATURES`, `AgentAppClient`, `AgentAppClientOptions`, `AgentAppError`, `AgentEventView`, `AgentTransport`, `AgentTransportError`, `AgentTransportRequest`, `ApprovalRequiredView`, `ApprovalResolvedView`, `AssistantChunkView`, `AuthProvider`, `boundaryCommands`, `BoundaryDecisionResult`, `boundaryIsStale`, `BoundaryItemView`, `BoundaryStateView`, `CommandOutcome`, `CreateSessionInput`, `EvalComparisonView`, `EvidenceTimelineView`, `ExtensionReloadedView`, `FaultInjectionView`, `HandoffView`, `HttpAgentTransport`, `HttpAgentTransportOptions`, `MemoryCompactedView`, `OrderedEventBuffer`, `parseEventStream`, `PendingApprovalView`, `RegistryCapabilityView`, `RepairRequiredView`, `ReplayEntryView`, `ReplayResult`, `ResolveHandoffInput`, `ResumeInput`, `ReviewView`, `ReviewViewCheck`, `ReviewViewEvidence`, `ReviewViewFinding`, `ReviewViewStatus`, `RunStudioNodeState`, `RunStudioNodeView`, `RunStudioView`, `RunView`, `SessionFailedView`, `SessionLifecycleView`, `SessionStoppedView`, `SessionView`, `toEvalComparisonView`, `toEventView`, `toEvidenceTimelineView`, `toFaultInjectionViews`, `toHandoffView`, `ToolCompletedView`, `ToolDeltaView`, `ToolStartedView`, `toRegistryCapabilityView`, `toReviewView`, `toRunStudioView`, `toRunView`, `toSessionView`, `TurnStartedView`, `VerificationCompletedView`, `virtualizeEvidenceRows`
11439
11885
 
11440
11886
  ## @nifrajs/agent-protocol
11441
11887
 
11442
11888
  `AGENT_PROTOCOL_VERSION`, `AgentApprovalRequiredEvent`, `AgentApprovalResolvedEvent`, `AgentAssistantDeltaEvent`, `AgentAssistantMessageEvent`, `AgentBackend`, `AgentBackendInfo`, `agentError`, `AgentError`, `AgentEvent`, `AgentEventPayload`, `AgentEventSink`, `AgentEventStream`, `AgentEventType`, `AgentExtensionReloadedEvent`, `AgentMemoryCompactedEvent`, `AgentRepairRequiredEvent`, `AgentRepairTask`, `AgentSessionCheckpoint`, `AgentSessionCompletedEvent`, `AgentSessionEventBase`, `AgentSessionFailedEvent`, `AgentSessionSnapshot`, `AgentSessionStartedEvent`, `AgentSessionStatus`, `AgentSessionStoppedEvent`, `AgentSessionUpdatedEvent`, `AgentToolCompletedEvent`, `AgentToolDeltaEvent`, `AgentToolStartedEvent`, `AgentTurnStartedEvent`, `AgentVerificationCompletedEvent`, `createAgentEventStream`, `CreateSessionInput`, `ForkSessionInput`, `ForkSessionResult`, `isAgentEvent`, `ReloadResult`, `SendMessageInput`
11443
11889
 
11890
+ ## @nifrajs/agent-review
11891
+
11892
+ `canonicalizeReviewReport`, `composeReviewReport`, `digestReviewReport`, `parseReviewReport`, `REVIEW_MAX_ARRAY_ITEMS`, `REVIEW_MAX_BYTES`, `REVIEW_MAX_CODE_BYTES`, `REVIEW_MAX_DEPTH`, `REVIEW_MAX_ID_BYTES`, `REVIEW_MAX_OBJECT_KEYS`, `REVIEW_MAX_PATH_BYTES`, `REVIEW_MAX_REF_BYTES`, `ReviewParserError`
11893
+
11444
11894
  ## @nifrajs/agent-telemetry
11445
11895
 
11446
11896
  `AgentRunEvidence`, `AgentRunOutcome`, `AgentRunTrace`, `agentTelemetry`, `AgentTelemetryOptions`, `consoleAgentExporter`, `orchestrationTelemetry`, `OrchestrationTelemetry`, `OrchestrationTelemetryEvent`, `OrchestrationTelemetryKind`, `OrchestrationTelemetryOptions`, `traceAgentRun`, `TraceAgentRunOptions`
@@ -11467,7 +11917,7 @@ done-gate, or `nifra mcp` to give the agent live project tools.
11467
11917
 
11468
11918
  ## @nifrajs/coding-agent
11469
11919
 
11470
- `AGENT_CAPABILITY_MANIFEST_VERSION`, `AGENT_PRESETS`, `AgentCapability`, `AgentCapabilityManifest`, `AgentPlan`, `AgentPreset`, `AgentPresetName`, `ApprovalDecision`, `ApprovalManager`, `ApprovalManagerOptions`, `ApprovalMatchRejection`, `ApprovalMatchResult`, `ApprovalRequest`, `approvalRequestFromEvent`, `approvalResolvedEvent`, `BoundedSubagentRunner`, `BoundedText`, `CapabilityDescriptor`, `CiDeploymentAdapter`, `CodingAgentExtension`, `CodingAgentHost`, `CodingAgentHostOptions`, `CodingAgentRpcServer`, `CodingAgentRpcServerHandle`, `CodingAgentRpcServerOptions`, `CompactionReport`, `ContextRecord`, `ContextWindow`, `ContextWindowOptions`, `createCapabilityManifest`, `createCiDeploymentAdapter`, `createLocalProcessDeploymentAdapter`, `createNativeGatewayModelPort`, `createNifraTools`, `createPresetSpec`, `createReplayDeploymentAdapter`, `createVerificationRepairTask`, `deniedCapabilities`, `DEPLOYMENT_REFERENCE_PROFILES`, `discoverExtensions`, `ExtensionCommand`, `ExtensionContext`, `extensionDescriptor`, `ExtensionDescriptorOptions`, `extensionDescriptors`, `ExtensionDescriptorSource`, `ExtensionEventHandler`, `ExtensionHost`, `ExtensionHostOptions`, `ExtensionProvider`, `ExtensionReloadResult`, `ExtensionSubagent`, `ExtensionTool`, `FileSessionStore`, `FileSessionStoreOptions`, `getAgentPreset`, `HandoffCoordinator`, `HandoffCoordinatorOptions`, `HandoffDecision`, `HandoffError`, `HandoffRejection`, `HandoffView`, `HealingEvent`, `HealingOptions`, `HealingResult`, `IsolatedExtensionSnapshot`, `IsolatedExtensionTool`, `IsolatedExtensionWorker`, `IsolatedExtensionWorkerOptions`, `LocalProcessDeploymentAdapter`, `migrateLegacySession`, `MigrateLegacySessionOptions`, `NativeApprovalPort`, `NativeGatewayModelPortOptions`, `NativeMessage`, `NativeModelChunk`, `NativeModelPort`, `NativeModelRequest`, `NativeModelResponse`, `NativeTool`, `NIFRA_AGENT_INSTRUCTIONS`, `NifraAgentTool`, `NifraBackend`, `NifraBackendOptions`, `NifraContextOptions`, `NifraContextResult`, `OpenHandoffInput`, `parseCapabilityManifest`, `parseSessionEvidenceRecord`, `PiBackend`, `PiBackendOptions`, `PlanEvent`, `PlanPhase`, `PlanResult`, `PlanRunner`, `PlanRunnerOptions`, `ProjectDiffOptions`, `ProjectDiffResult`, `readBoundedText`, `readProjectDiff`, `readReplayEvents`, `RepairProposal`, `ReplayBackend`, `ReplayBackendOptions`, `ReplayDeploymentAdapter`, `runNifraContext`, `runNifraVerification`, `SelfHealingController`, `SESSION_EVIDENCE_VERSION`, `SessionEvidenceRecord`, `SessionLogEntry`, `SessionMigrationError`, `SessionMigrationReport`, `SessionStore`, `stableSessionEventCode`, `SubagentExecutor`, `SubagentResult`, `SubagentRunnerOptions`, `SubagentSpec`, `UiExtensionHost`, `UiExtensionHostOptions`, `UiExtensionManifest`, `UiExtensionSlot`, `UiReloadResult`, `UiStatusWidget`, `UiThemeDescriptor`, `validateExtensionModule`, `VerificationOptions`, `VerificationRepairTask`, `VerificationResult`, `WorkflowContext`, `WorkflowEvent`, `WorkflowResult`, `WorkflowRunner`, `WorkflowRunnerOptions`, `WorkflowStep`
11920
+ `AGENT_CAPABILITY_MANIFEST_VERSION`, `AGENT_PRESETS`, `AgentCapability`, `AgentCapabilityManifest`, `AgentPlan`, `AgentPreset`, `AgentPresetName`, `ApprovalDecision`, `ApprovalManager`, `ApprovalManagerOptions`, `ApprovalMatchRejection`, `ApprovalMatchResult`, `ApprovalRequest`, `approvalRequestFromEvent`, `approvalResolvedEvent`, `BoundedSubagentRunner`, `BoundedText`, `CapabilityDescriptor`, `CiDeploymentAdapter`, `CodingAgentExtension`, `CodingAgentHost`, `CodingAgentHostOptions`, `CodingAgentRpcServer`, `CodingAgentRpcServerHandle`, `CodingAgentRpcServerOptions`, `CompactionReport`, `ContextRecord`, `ContextWindow`, `ContextWindowOptions`, `createCapabilityManifest`, `createCiDeploymentAdapter`, `createLocalProcessDeploymentAdapter`, `createNativeGatewayModelPort`, `createNifraTools`, `createPresetSpec`, `createReplayDeploymentAdapter`, `createVerificationRepairTask`, `deniedCapabilities`, `DEPLOYMENT_REFERENCE_PROFILES`, `discoverExtensions`, `ExtensionCommand`, `ExtensionContext`, `extensionDescriptor`, `ExtensionDescriptorOptions`, `extensionDescriptors`, `ExtensionDescriptorSource`, `ExtensionEventHandler`, `ExtensionHost`, `ExtensionHostOptions`, `ExtensionProvider`, `ExtensionReloadResult`, `ExtensionSubagent`, `ExtensionTool`, `FileSessionStore`, `FileSessionStoreOptions`, `getAgentPreset`, `HandoffCoordinator`, `HandoffCoordinatorOptions`, `HandoffDecision`, `HandoffError`, `HandoffRejection`, `HandoffView`, `HealingEvent`, `HealingOptions`, `HealingResult`, `IsolatedExtensionSnapshot`, `IsolatedExtensionTool`, `IsolatedExtensionWorker`, `IsolatedExtensionWorkerOptions`, `isSafeReviewDiff`, `LocalProcessDeploymentAdapter`, `migrateLegacySession`, `MigrateLegacySessionOptions`, `NativeApprovalPort`, `NativeGatewayModelPortOptions`, `NativeMessage`, `NativeModelChunk`, `NativeModelPort`, `NativeModelRequest`, `NativeModelResponse`, `NativeTool`, `NIFRA_AGENT_INSTRUCTIONS`, `NifraAgentTool`, `NifraBackend`, `NifraBackendOptions`, `NifraContextOptions`, `NifraContextResult`, `OpenHandoffInput`, `parseCapabilityManifest`, `parseSessionEvidenceRecord`, `PiBackend`, `PiBackendOptions`, `PlanEvent`, `PlanPhase`, `PlanResult`, `PlanRunner`, `PlanRunnerOptions`, `ProjectDiffOptions`, `ProjectDiffResult`, `readBoundedText`, `readProjectDiff`, `readReplayEvents`, `RepairProposal`, `ReplayBackend`, `ReplayBackendOptions`, `ReplayDeploymentAdapter`, `ReviewExecutionErrorCode`, `ReviewExecutionResult`, `ReviewOptions`, `runNifraContext`, `runNifraReview`, `runNifraVerification`, `SelfHealingController`, `SESSION_EVIDENCE_VERSION`, `SessionEvidenceRecord`, `SessionLogEntry`, `SessionMigrationError`, `SessionMigrationReport`, `SessionStore`, `stableSessionEventCode`, `SubagentExecutor`, `SubagentResult`, `SubagentRunnerOptions`, `SubagentSpec`, `UiExtensionHost`, `UiExtensionHostOptions`, `UiExtensionManifest`, `UiExtensionSlot`, `UiReloadResult`, `UiStatusWidget`, `UiThemeDescriptor`, `validateExtensionModule`, `VerificationOptions`, `VerificationRepairTask`, `VerificationResult`, `WorkflowContext`, `WorkflowEvent`, `WorkflowResult`, `WorkflowRunner`, `WorkflowRunnerOptions`, `WorkflowStep`
11471
11921
 
11472
11922
  ## @nifrajs/content
11473
11923
 
@@ -11475,7 +11925,7 @@ done-gate, or `nifra mcp` to give the agent live project tools.
11475
11925
 
11476
11926
  ## @nifrajs/core
11477
11927
 
11478
- `AdmissionController`, `AdmissionDecision`, `AnyServer`, `commonSecretPatterns`, `Context`, `ContextPlugin`, `cookieNamePrefix`, `CookieOptions`, `CookieSecret`, `defineContextPlugin`, `defineIdentityPlugin`, `definePlugin`, `DefinePluginResult`, `defineRouterPlugin`, `DurableObjectNamespaceLike`, `ExecutionContext`, `FetchApp`, `FRAMEWORK_NAME`, `FrameworkError`, `FrameworkName`, `Handler`, `IdentityPlugin`, `InferInput`, `InferOutput`, `isSameOriginPath`, `isSameOriginRequest`, `jsonLogger`, `LambdaEvent`, `LambdaHandler`, `LambdaResponse`, `LambdaV1Event`, `LambdaV2Event`, `LogFields`, `Logger`, `McpPromptDescriptor`, `McpResourceDescriptor`, `Method`, `METHODS`, `Middleware`, `NetlifyEvent`, `NetlifyHandler`, `NifraFeatureVersion`, `NifraPlugin`, `NifraWebSocket`, `NodeRequestContext`, `NodeRequestHook`, `NodeResponseContext`, `NodeResponseHook`, `NodeServeOutcome`, `OnRequestResult`, `Params`, `parseCookies`, `pathnameOf`, `PlainRender`, `Platform`, `PlatformResponse`, `PluginTypeCollapsed`, `Prettify`, `PromptArgument`, `PromptMessage`, `redactLogFields`, `RedactOptions`, `Registry`, `ResponseBodyHook`, `ResponseBodyReplacement`, `ResponseControls`, `ResponseFinalization`, `ResponseHeadersHook`, `ResponseHeadersView`, `ResponseMapFor`, `ResponseResult`, `RouteConfigError`, `RouteConfigErrorCode`, `RouteDescriptor`, `RouteInfo`, `RouteInfoFor`, `Router`, `RouterMatch`, `RouteSchema`, `RunningServer`, `ScheduledController`, `ScheduledHandler`, `serializeCookie`, `server`, `Server`, `ServerOptions`, `signValue`, `silentLogger`, `SSEContext`, `SSEInit`, `SSEMessage`, `SSEStream`, `StandardIssue`, `StandardResult`, `StandardSchemaV1`, `StandardTypes`, `StandardWebSocket`, `status`, `StatusResponse`, `toFetchHandler`, `toLambdaHandler`, `toNetlifyHandler`, `ToolAnnotations`, `toVercelHandler`, `TypedSSEStream`, `unsignValue`, `UrlParts`, `urlPartsOf`, `ValidationOutcome`, `VercelHandler`, `Version`, `VERSION`, `WebSocketContext`, `WebSocketData`, `WebSocketHandler`, `WebSocketUpgradeOutcome`
11928
+ `AdmissionController`, `AdmissionDecision`, `AnyServer`, `commonSecretPatterns`, `Context`, `ContextPlugin`, `cookieNamePrefix`, `CookieOptions`, `CookieSecret`, `defineContextPlugin`, `defineIdentityPlugin`, `definePlugin`, `DefinePluginResult`, `defineRouterPlugin`, `DurableObjectNamespaceLike`, `ExecutionContext`, `FetchApp`, `FRAMEWORK_NAME`, `FrameworkError`, `FrameworkName`, `Handler`, `hasDuplicateCookie`, `IdentityPlugin`, `InferInput`, `InferOutput`, `isSameOriginPath`, `isSameOriginRequest`, `jsonLogger`, `LambdaEvent`, `LambdaHandler`, `LambdaResponse`, `LambdaV1Event`, `LambdaV2Event`, `LogFields`, `Logger`, `McpPromptDescriptor`, `McpResourceDescriptor`, `Method`, `METHODS`, `Middleware`, `NetlifyEvent`, `NetlifyHandler`, `NifraFeatureVersion`, `NifraPlugin`, `NifraWebSocket`, `NodeRequestContext`, `NodeRequestHook`, `NodeResponseContext`, `NodeResponseHook`, `NodeServeOutcome`, `OnRequestResult`, `Params`, `parseCookies`, `pathnameOf`, `PlainRender`, `Platform`, `PlatformResponse`, `PluginTypeCollapsed`, `Prettify`, `PromptArgument`, `PromptMessage`, `redactLogFields`, `RedactOptions`, `Registry`, `ResponseBodyHook`, `ResponseBodyReplacement`, `ResponseControls`, `ResponseFinalization`, `ResponseHeadersHook`, `ResponseHeadersView`, `ResponseMapFor`, `ResponseResult`, `RouteConfigError`, `RouteConfigErrorCode`, `RouteDescriptor`, `RouteInfo`, `RouteInfoFor`, `Router`, `RouterMatch`, `RouteSchema`, `RunningServer`, `ScheduledController`, `ScheduledHandler`, `serializeCookie`, `server`, `Server`, `ServerOptions`, `signValue`, `silentLogger`, `SSEContext`, `SSEInit`, `SSEMessage`, `SSEStream`, `StandardIssue`, `StandardResult`, `StandardSchemaV1`, `StandardTypes`, `StandardWebSocket`, `status`, `StatusResponse`, `toFetchHandler`, `toLambdaHandler`, `toNetlifyHandler`, `ToolAnnotations`, `toVercelHandler`, `TypedSSEStream`, `unsignValue`, `UrlParts`, `urlPartsOf`, `ValidationOutcome`, `VercelHandler`, `Version`, `VERSION`, `WebSocketContext`, `WebSocketData`, `WebSocketHandler`, `WebSocketUpgradeOutcome`
11479
11929
 
11480
11930
  ## @nifrajs/cron
11481
11931
 
@@ -11523,7 +11973,7 @@ done-gate, or `nifra mcp` to give the agent live project tools.
11523
11973
 
11524
11974
  ## @nifrajs/jobs
11525
11975
 
11526
- `Backoff`, `CapabilityBeacon`, `createQueue`, `EnqueueOptions`, `exponentialBackoff`, `ExponentialOptions`, `fixedBackoff`, `JobContext`, `JobCounts`, `JobDefinition`, `JobError`, `JobHandle`, `JobHandler`, `JobStore`, `JobValidationError`, `MemoryJobStore`, `noBackoff`, `Queue`, `QueueOptions`, `RetryPolicy`, `StandardResult`, `StandardSchemaV1`, `StoredJob`, `Worker`, `WorkerOptions`
11976
+ `Backoff`, `CapabilityBeacon`, `createQueue`, `DeadLetterRecord`, `DeadLetterView`, `EnqueueOptions`, `exponentialBackoff`, `ExponentialOptions`, `fixedBackoff`, `JobContext`, `JobCounts`, `JobDefinition`, `JobError`, `JobHandle`, `JobHandler`, `JobStore`, `JobValidationError`, `MemoryJobStore`, `noBackoff`, `Queue`, `QueueHealth`, `QueueOptions`, `RetryPolicy`, `StandardResult`, `StandardSchemaV1`, `StoredJob`, `toDeadLetterView`, `toQueueHealth`, `Worker`, `WorkerOptions`
11527
11977
 
11528
11978
  ## @nifrajs/mcp
11529
11979
 
@@ -11567,7 +12017,7 @@ done-gate, or `nifra mcp` to give the agent live project tools.
11567
12017
 
11568
12018
  ## @nifrajs/schema
11569
12019
 
11570
- `decodeCursor`, `encodeCursor`, `fromTypeBox`, `NifraSchema`, `OpenAPIDocument`, `OpenAPIInfo`, `Page`, `paginate`, `registerFormat`, `t`, `toOpenAPI`
12020
+ `decodeCursor`, `diffOpenApiInventory`, `encodeCursor`, `fromTypeBox`, `ImportedApiInventory`, `ImportedRoute`, `ImportedRouteQuery`, `importOpenAPI`, `ImportOpenAPIOptions`, `NifraSchema`, `OpenAPIDocument`, `OpenAPIImportError`, `OpenAPIInfo`, `OpenApiInventoryDrift`, `Page`, `paginate`, `registerFormat`, `t`, `toOpenAPI`, `toOpenAPIFromEvidence`
11571
12021
 
11572
12022
  ## @nifrajs/storage
11573
12023
 
@@ -11575,7 +12025,7 @@ done-gate, or `nifra mcp` to give the agent live project tools.
11575
12025
 
11576
12026
  ## @nifrajs/testing
11577
12027
 
11578
- `AdapterCertificationError`, `AdapterCertificationProfile`, `AdapterCertificationReport`, `AdversarialContractError`, `AdversarialContractOptions`, `AdversarialContractReport`, `AdversarialContractResult`, `AgentEvalCase`, `AgentEvalComponentEvidence`, `AgentEvalCompositionOptions`, `AgentEvalCompositionReport`, `AgentEvalRegressionError`, `AgentEvalReport`, `AgentEvalSuite`, `AgentEvalSuiteSpec`, `AgentFailureMatrixCase`, `AgentFailureMatrixError`, `AgentFailureMatrixKind`, `AgentFailureMatrixReport`, `AppLike`, `assertAdapterCertification`, `assertAdversarialContract`, `assertAgentEval`, `assertAgentEvalBaseline`, `assertAgentFailureMatrix`, `assertIncidentReplays`, `assertTrajectoryInvariants`, `BaselineComparison`, `BaselineOptions`, `cacheStoreCertificationProfile`, `CapturedRequest`, `CapturedRequestInput`, `captureIncident`, `CaptureIncidentOptions`, `CaseComparison`, `CaseResult`, `CertifiableCacheEntry`, `CertifiableCacheStore`, `CertifiableDeploymentAdapter`, `CertifiableDescriptorAdapter`, `CertifiableDomainEvent`, `CertifiableEventDeliveryAdapter`, `CertifiableEventRecord`, `CertifiableJobStore`, `CertifiableModelGateway`, `CertifiableRuntimeAdapter`, `CertifiableRuntimeServer`, `CertifiableStorageAdapter`, `CertificationCapabilityEvidence`, `CertificationCheck`, `CertificationCheckEvidence`, `certifyAdapter`, `checkTrajectoryInvariants`, `compareAgentEvalBaseline`, `ComparisonCode`, `ContractCaseContext`, `ContractCaseKind`, `ContractCoverageGap`, `ContractCoverageGapCode`, `ContractLabHandler`, `ContractLabRuntimeAdapter`, `ContractLabServer`, `ContractLabWitness`, `contractLabWitnesses`, `ContractReplay`, `ContractRuntime`, `ContractTarget`, `ContractTestApp`, `ContractWitness`, `cookieJar`, `CookieJar`, `createFailureLab`, `createReferenceContractLabHandler`, `createTrajectoryTranscript`, `CreateTrajectoryTranscriptOptions`, `defineAgentEvalSuite`, `defineCertificationProfile`, `defineFaultProfile`, `deploymentAdapterCertificationProfile`, `deploymentCertificationProfile`, `EffectLedger`, `eventDeliveryCertificationProfile`, `FailureDirective`, `FailureEvidence`, `FailureInjectedError`, `FailureKind`, `FailureLab`, `FailureLabOptions`, `FailureReplay`, `FailureScenario`, `FailureScenarioReport`, `FaultProfile`, `FaultProfileFault`, `FaultProfileFaultKind`, `FaultProfileReport`, `FaultProfileScenario`, `FaultProfileScenarioReport`, `gatewayCertificationProfile`, `generateRegressionTest`, `GenerateRegressionTestOptions`, `httpToolAdapter`, `IdempotencyDivergence`, `IdempotencyProof`, `IncidentCapsule`, `IncidentReplayError`, `IncidentReplayResult`, `inProcessToolAdapter`, `jobStoreCertificationProfile`, `mcpToolAdapter`, `modelGatewayCertificationProfile`, `parseRubricVerdict`, `proveIdempotency`, `recordTrajectory`, `redactForEmission`, `referenceFaultProfile`, `registryCertificationProfile`, `replayIncident`, `ReplayIncidentOptions`, `replayTrajectory`, `ReplayTrajectoryOptions`, `RubricShape`, `RubricSpec`, `RubricVerdict`, `runAdversarialContract`, `runAgentEvalComposition`, `runAgentFailureMatrix`, `runContractLab`, `runContractLabOverHttp`, `runContractLabThroughAdapter`, `runFailureScenario`, `runFaultProfile`, `RunFaultProfileOptions`, `runtimeAdapterCertificationProfile`, `runTrajectory`, `ScoreTolerance`, `shapeOf`, `storageAdapterCertificationProfile`, `testSession`, `TestSession`, `TestSessionOptions`, `testToolAdapter`, `TrajectoryInvariantId`, `TrajectoryInvariantOptions`, `TrajectoryInvariantResult`, `trajectoryRegressionId`, `TrajectoryReplayResult`, `TrajectoryRun`, `TrajectoryTranscript`, `verifyAdapterCertification`
12028
+ `AdapterCertificationError`, `AdapterCertificationProfile`, `AdapterCertificationReport`, `AdversarialContractError`, `AdversarialContractOptions`, `AdversarialContractReport`, `AdversarialContractResult`, `AgentEvalCase`, `AgentEvalComponentEvidence`, `AgentEvalCompositionOptions`, `AgentEvalCompositionReport`, `AgentEvalRegressionError`, `AgentEvalReport`, `AgentEvalSuite`, `AgentEvalSuiteSpec`, `AgentFailureMatrixCase`, `AgentFailureMatrixError`, `AgentFailureMatrixKind`, `AgentFailureMatrixReport`, `AppLike`, `assertAdapterCertification`, `assertAdversarialContract`, `assertAgentEval`, `assertAgentEvalBaseline`, `assertAgentFailureMatrix`, `assertIncidentReplays`, `assertPredictionLab`, `assertTrajectoryInvariants`, `BaselineComparison`, `BaselineOptions`, `cacheStoreCertificationProfile`, `CapturedRequest`, `CapturedRequestInput`, `captureIncident`, `CaptureIncidentOptions`, `CaseComparison`, `CaseResult`, `CertifiableCacheEntry`, `CertifiableCacheStore`, `CertifiableDeploymentAdapter`, `CertifiableDescriptorAdapter`, `CertifiableDomainEvent`, `CertifiableEventDeliveryAdapter`, `CertifiableEventRecord`, `CertifiableJobStore`, `CertifiableModelGateway`, `CertifiableRuntimeAdapter`, `CertifiableRuntimeServer`, `CertifiableStorageAdapter`, `CertificationCapabilityEvidence`, `CertificationCheck`, `CertificationCheckEvidence`, `CertificationTarget`, `certifyAdapter`, `checkTrajectoryInvariants`, `compareAgentEvalBaseline`, `ComparisonCode`, `ContractCaseContext`, `ContractCaseKind`, `ContractCoverageGap`, `ContractCoverageGapCode`, `ContractLabHandler`, `ContractLabRuntimeAdapter`, `ContractLabServer`, `ContractLabWitness`, `contractLabWitnesses`, `ContractReplay`, `ContractRuntime`, `ContractTarget`, `ContractTestApp`, `ContractWitness`, `cookieJar`, `CookieJar`, `createFailureLab`, `createReferenceContractLabHandler`, `createTrajectoryTranscript`, `CreateTrajectoryTranscriptOptions`, `defineAgentEvalSuite`, `defineCertificationProfile`, `defineFaultProfile`, `deploymentAdapterCertificationProfile`, `deploymentCertificationProfile`, `EffectLedger`, `eventDeliveryCertificationProfile`, `FailureDirective`, `FailureEvidence`, `FailureInjectedError`, `FailureKind`, `FailureLab`, `FailureLabOptions`, `FailureReplay`, `FailureScenario`, `FailureScenarioReport`, `FaultProfile`, `FaultProfileFault`, `FaultProfileFaultKind`, `FaultProfileReport`, `FaultProfileScenario`, `FaultProfileScenarioReport`, `gatewayCertificationProfile`, `generateRegressionTest`, `GenerateRegressionTestOptions`, `httpToolAdapter`, `IdempotencyDivergence`, `IdempotencyProof`, `IncidentCapsule`, `IncidentReplayError`, `IncidentReplayResult`, `inProcessToolAdapter`, `jobStoreCertificationProfile`, `mcpToolAdapter`, `modelGatewayCertificationProfile`, `parseRubricVerdict`, `PREDICTION_LAB_SEED`, `predictionLabCaseIds`, `PredictionLabContext`, `PredictionLabOptions`, `PredictionLabReplay`, `PredictionLabReport`, `PredictionLabResult`, `PredictionLabTarget`, `proveIdempotency`, `recordTrajectory`, `redactForEmission`, `referenceFaultProfile`, `registryCertificationProfile`, `replayIncident`, `ReplayIncidentOptions`, `replayTrajectory`, `ReplayTrajectoryOptions`, `RubricShape`, `RubricSpec`, `RubricVerdict`, `runAdversarialContract`, `runAgentEvalComposition`, `runAgentFailureMatrix`, `runContractLab`, `runContractLabOverHttp`, `runContractLabThroughAdapter`, `runFailureScenario`, `runFaultProfile`, `RunFaultProfileOptions`, `runPredictionLab`, `runtimeAdapterCertificationProfile`, `runTrajectory`, `ScoreTolerance`, `shapeOf`, `storageAdapterCertificationProfile`, `testSession`, `TestSession`, `TestSessionOptions`, `testToolAdapter`, `toPredictionLabContext`, `TrajectoryInvariantId`, `TrajectoryInvariantOptions`, `TrajectoryInvariantResult`, `trajectoryRegressionId`, `TrajectoryReplayResult`, `TrajectoryRun`, `TrajectoryTranscript`, `verifyAdapterCertification`
11579
12029
 
11580
12030
  ## @nifrajs/ts-plugin
11581
12031
 
@@ -11587,7 +12037,7 @@ done-gate, or `nifra mcp` to give the agent live project tools.
11587
12037
 
11588
12038
  ## @nifrajs/web
11589
12039
 
11590
- `Action`, `ACTION_GLOBAL`, `assertRenderAdapterConformance`, `assertStaticBoundaryImports`, `Blocker`, `BlockerController`, `BlockerFunction`, `BlockerLocation`, `BlockerState`, `Boundary`, `BOUNDARY_GLOBAL`, `BoundaryDescriptor`, `boundaryDescriptors`, `BoundaryError`, `BoundaryMode`, `boundaryModeKey`, `BoundaryRegistration`, `BoundaryRequestCtx`, `BoundaryState`, `BoundaryStates`, `BoundaryStatus`, `BrowserNavigate`, `buildManifest`, `CachedResponse`, `CacheStore`, `canonical`, `ClientAction`, `ClientActionArgs`, `ClientActionResult`, `ClientLoader`, `ClientLoaderArgs`, `ClientRequestBody`, `ClientRouteHooks`, `ClientRouter`, `ClientRouterOptions`, `createClientRouter`, `createMatcher`, `createMutation`, `createQueryClient`, `createWebApp`, `CreateWebAppOptions`, `DATA_GLOBAL`, `DATA_HEADER`, `DEFAULT_DEV_PORT`, `defer`, `Deferred`, `DehydratedState`, `disableDraft`, `DRAFT_COOKIE`, `DraftCookieControls`, `DynamicBoundary`, `DynamicBoundaryBatch`, `enableDraft`, `EnableDraftOptions`, `enumerateStaticRoutes`, `Fetcher`, `FetcherState`, `FetchRouteData`, `filePathToPattern`, `filePathToPatterns`, `FontDisplay`, `fontFace`, `FontFace`, `fontPreload`, `FontPreloadInput`, `FontSource`, `generateClientEntry`, `GenerateClientEntryOptions`, `generateRouteSearchTypes`, `GenerateRouteSearchTypesOptions`, `generateServerManifest`, `GenerateServerManifestOptions`, `getBrowserNavigate`, `GetStaticPaths`, `gone`, `hashQueryKey`, `IDLE_BLOCKER`, `InertScriptType`, `InfiniteData`, `InfiniteQueryHandle`, `InfiniteQueryOptions`, `InterceptBoundary`, `isDraftEnabled`, `ISR_REVALIDATE_HEADER`, `ISR_REVALIDATE_TAGS_HEADER`, `ISR_STATUS_HEADER`, `ISRApp`, `ISROptions`, `ISRPlatform`, `jsonLd`, `KVCacheStore`, `KVCacheStoreOptions`, `KVNamespaceLike`, `LAYOUT_DATA_GLOBAL`, `LayoutEntry`, `LinkDescriptor`, `Loader`, `LoaderContext`, `Manifest`, `MemoryCacheStore`, `MemoryCacheStoreOptions`, `MemoryStaticBoundaryCache`, `mergeHeads`, `Meta`, `MetaArgs`, `MetaDescriptor`, `MetaInput`, `MountRouterOptions`, `MutationCallbacks`, `MutationHandle`, `MutationState`, `MutationStatus`, `NAV_FROM_HEADER`, `NavigateFunction`, `NavigateOptions`, `NavigateSearchOf`, `NavigateTargetInput`, `notFound`, `openGraph`, `OpenGraphInput`, `PendingBoundary`, `PRE_HYDRATION_GUARD`, `previewEndpoint`, `PreviewEndpointOptions`, `PublicDirCache`, `QueryClient`, `QueryClientOptions`, `QueryHandle`, `QueryOptions`, `QueryState`, `QueryStatus`, `redirect`, `REDIRECT_HEADER`, `RedirectOptions`, `registerBlocker`, `RenderAdapter`, `RenderAdapterConformanceError`, `RenderAdapterConformanceFixture`, `RenderAssemblyCache`, `RenderedPage`, `renderPage`, `RenderPageInput`, `RenderPageOptions`, `renderPageResult`, `RenderProps`, `resolveDynamicBoundaries`, `resolveMeta`, `resolveNavigate`, `resolvePublicPath`, `resolveStaticBoundaries`, `RETAIN_HEADER`, `revalidate`, `REVALIDATE_HEADER`, `revalidateEndpoint`, `RevalidateEndpointOptions`, `RevalidateResult`, `ROOT_ATTRIBUTE`, `ROUTE_GLOBAL`, `RouteEntry`, `RouteMatch`, `RouteModule`, `RoutePattern`, `RouterState`, `RouteSearch`, `ScriptDescriptor`, `searchOf`, `SearchOf`, `searchOfChain`, `serializeData`, `serializeSearch`, `servePublicDir`, `ServePublicDirOptions`, `SERVER_FN_MODULE`, `SERVER_ONLY_MODULE`, `ServerOnly`, `setBlockerController`, `setBrowserNavigate`, `setSsrModuleLoader`, `ssrModuleLoader`, `SsrModuleLoader`, `startDynamicBoundaries`, `StaticBoundary`, `StaticBoundaryCache`, `StaticBoundaryImportEdge`, `StaticBoundaryRoot`, `StaticCtx`, `StaticPath`, `StaticPaths`, `StaticRoutes`, `STATUS_HEADER`, `statusPage`, `StatusPageOptions`, `Submission`, `SubmitOptions`, `unsafeInlineScript`, `UnsafeScriptDescriptor`, `withISR`
12040
+ `Action`, `ACTION_GLOBAL`, `assertCssLoadingCompatible`, `assertRenderAdapterConformance`, `assertStaticBoundaryImports`, `Blocker`, `BlockerController`, `BlockerFunction`, `BlockerLocation`, `BlockerState`, `Boundary`, `BOUNDARY_GLOBAL`, `BoundaryDescriptor`, `boundaryDescriptors`, `BoundaryError`, `BoundaryMode`, `boundaryModeKey`, `BoundaryRegistration`, `BoundaryRequestCtx`, `BoundaryState`, `BoundaryStates`, `BoundaryStatus`, `BrowserNavigate`, `buildManifest`, `CachedResponse`, `CacheStore`, `canonical`, `ClientAction`, `ClientActionArgs`, `ClientActionResult`, `ClientLoader`, `ClientLoaderArgs`, `ClientRequestBody`, `ClientRouteHooks`, `ClientRouter`, `ClientRouterOptions`, `createClientRouter`, `createMatcher`, `createMutation`, `createQueryClient`, `createWebApp`, `CreateWebAppOptions`, `CssLoadingMode`, `DATA_GLOBAL`, `DATA_HEADER`, `DEFAULT_CSS_LOADING`, `DEFAULT_DEV_PORT`, `defer`, `Deferred`, `DehydratedState`, `disableDraft`, `DRAFT_COOKIE`, `DraftCookieControls`, `DynamicBoundary`, `DynamicBoundaryBatch`, `enableDraft`, `EnableDraftOptions`, `enumerateStaticRoutes`, `Fetcher`, `FetcherState`, `FetchRouteData`, `filePathToPattern`, `filePathToPatterns`, `FontDisplay`, `fontFace`, `FontFace`, `fontPreload`, `FontPreloadInput`, `FontSource`, `generateClientEntry`, `GenerateClientEntryOptions`, `generateRouteSearchTypes`, `GenerateRouteSearchTypesOptions`, `generateServerManifest`, `GenerateServerManifestOptions`, `getBrowserNavigate`, `GetStaticPaths`, `gone`, `hashQueryKey`, `HtmlSanitizer`, `IDLE_BLOCKER`, `InertScriptType`, `InfiniteData`, `InfiniteQueryHandle`, `InfiniteQueryOptions`, `InterceptBoundary`, `isDraftEnabled`, `ISR_REVALIDATE_HEADER`, `ISR_REVALIDATE_TAGS_HEADER`, `ISR_STATUS_HEADER`, `ISRApp`, `ISROptions`, `ISRPlatform`, `jsonLd`, `KVCacheStore`, `KVCacheStoreOptions`, `KVNamespaceLike`, `LAYOUT_DATA_GLOBAL`, `LayoutEntry`, `LinkDescriptor`, `Loader`, `LoaderContext`, `Manifest`, `MemoryCacheStore`, `MemoryCacheStoreOptions`, `MemoryStaticBoundaryCache`, `mergeHeads`, `Meta`, `MetaArgs`, `MetaDescriptor`, `MetaInput`, `MountRouterOptions`, `MutationCallbacks`, `MutationHandle`, `MutationState`, `MutationStatus`, `NAV_FROM_HEADER`, `NavigateFunction`, `NavigateOptions`, `NavigateSearchOf`, `NavigateTargetInput`, `NonceResolver`, `normalizeCssLoading`, `notFound`, `openGraph`, `OpenGraphInput`, `PendingBoundary`, `PRE_HYDRATION_GUARD`, `previewEndpoint`, `PreviewEndpointOptions`, `PublicDirCache`, `QueryClient`, `QueryClientOptions`, `QueryHandle`, `QueryOptions`, `QueryState`, `QueryStatus`, `redirect`, `REDIRECT_HEADER`, `RedirectOptions`, `registerBlocker`, `RenderAdapter`, `RenderAdapterConformanceError`, `RenderAdapterConformanceFixture`, `RenderAssemblyCache`, `RenderedPage`, `renderPage`, `RenderPageInput`, `RenderPageOptions`, `renderPageResult`, `RenderProps`, `resolveDynamicBoundaries`, `resolveMeta`, `resolveNavigate`, `resolvePublicPath`, `resolveStaticBoundaries`, `RETAIN_HEADER`, `revalidate`, `REVALIDATE_HEADER`, `revalidateEndpoint`, `RevalidateEndpointOptions`, `RevalidateResult`, `ROOT_ATTRIBUTE`, `ROUTE_GLOBAL`, `RouteEntry`, `RouteMatch`, `RouteModule`, `RoutePattern`, `RouterState`, `RouteSearch`, `sanitizedHtml`, `SanitizedHtml`, `sanitizeHtml`, `ScriptDescriptor`, `searchOf`, `SearchOf`, `searchOfChain`, `serializeData`, `serializeSearch`, `servePublicDir`, `ServePublicDirOptions`, `SERVER_FN_MODULE`, `SERVER_ONLY_MODULE`, `ServerOnly`, `setBlockerController`, `setBrowserNavigate`, `setSsrModuleLoader`, `ssrModuleLoader`, `SsrModuleLoader`, `startDynamicBoundaries`, `StaticBoundary`, `StaticBoundaryCache`, `StaticBoundaryImportEdge`, `StaticBoundaryRoot`, `StaticCtx`, `StaticPath`, `StaticPaths`, `StaticRoutes`, `STATUS_HEADER`, `statusPage`, `StatusPageOptions`, `Submission`, `SubmitOptions`, `TrustedHtml`, `trustHtml`, `unsafeInlineScript`, `UnsafeScriptDescriptor`, `withISR`
11591
12041
 
11592
12042
  ## @nifrajs/web-preact
11593
12043
 
@@ -11613,6 +12063,10 @@ done-gate, or `nifra mcp` to give the agent live project tools.
11613
12063
 
11614
12064
  `vueAdapter`
11615
12065
 
12066
+ ## @nifrajs/webmcp
12067
+
12068
+ `AgentCapability`, `AgentCapabilityReference`, `AgentSurfaceAuthoritativeState`, `AgentSurfaceConformanceCase`, `AgentSurfaceConformanceOptions`, `AgentSurfaceConformanceResult`, `AgentSurfaceDescriptor`, `AgentSurfacePrediction`, `AgentSurfacePredictionContext`, `AgentSurfacePredictor`, `AgentSurfaceReconcileContext`, `AgentSurfaceReconciler`, `AgentSurfaceScope`, `AgentSurfaceSnapshot`, `createPredictionStore`, `defineAgentCapability`, `DefineAgentCapabilityOptions`, `executeAgentCapability`, `executePredicted`, `ExecutePredictedOptions`, `PredictedExecutionResult`, `PredictionPatchOperation`, `PredictionStore`, `PredictionStoreEvent`, `PredictionStoreResult`, `PredictionStoreSnapshot`, `ReconciliationMode`, `registerWebMcpTools`, `runAgentSurfaceConformance`, `ToolApproval`, `ToolCallOptions`, `ToolCallResult`, `ToolContract`, `ToolContractOptions`, `ToolError`, `ToolEvidence`, `toWebMcpTool`, `WebMcpExecutionOptions`, `WebMcpModelContext`, `WebMcpReceipt`, `WebMcpRegistrationFailure`, `WebMcpRegistrationReport`, `WebMcpTarget`, `WebMcpToolDefinition`
12069
+
11616
12070
  ## @nifrajs/workers
11617
12071
 
11618
12072
  `createWebSocketHub`, `NifraWebSocketHub`, `WebSocketHubApp`, `WebSocketHubClass`