Fuaran.UI.Ops.Abstractions
0.39.0
Prefix Reserved
dotnet add package Fuaran.UI.Ops.Abstractions --version 0.39.0
NuGet\Install-Package Fuaran.UI.Ops.Abstractions -Version 0.39.0
<PackageReference Include="Fuaran.UI.Ops.Abstractions" Version="0.39.0" />
<PackageVersion Include="Fuaran.UI.Ops.Abstractions" Version="0.39.0" />
<PackageReference Include="Fuaran.UI.Ops.Abstractions" />
paket add Fuaran.UI.Ops.Abstractions --version 0.39.0
#r "nuget: Fuaran.UI.Ops.Abstractions, 0.39.0"
#:package Fuaran.UI.Ops.Abstractions@0.39.0
#addin nuget:?package=Fuaran.UI.Ops.Abstractions&version=0.39.0
#tool nuget:?package=Fuaran.UI.Ops.Abstractions&version=0.39.0
Fuaran.UI.Ops.Abstractions
The pure type contract of the Fuaran tree-op apply engine — the TreeOp<'Msg>
DU, the ErrorPayload shape, and the ApplyHint helpers (§4g). FSharp.Core-only
and Fable-portable.
This package exists so consumers that only need the types (Fuaran.UI.Ops.Types
module — op vocabulary, error envelope) don't have to reference the full
Fuaran.UI.Ops package, whose apply engine (Apply.fs) and JSON decoder
(JsonDecode.fs) are a substantial dependency a type-only consumer has no use
for. The split is a layering boundary, not a portability one: Fuaran.UI.Ops
is itself Fable-portable, so a browser (Fable) consumer may reference the whole
package when it genuinely needs decode + apply — it simply need not, and the
decode/apply seam belongs at the host rather than in every consumer's graph.
In particular, Fuaran.UI.Telemetry.Abstractions (which the Fable client
renderer references for IFuaranTelemetrySink) references this package instead
of Fuaran.UI.Ops, so the renderer's Fable graph carries the type contract only.
The module name is preserved (Fuaran.UI.Ops.Types), so open Fuaran.UI.Ops.Types
is unchanged for every consumer — only the assembly the type lives in moved.
Fuaran.UI.Ops takes a package reference on this assembly and re-exports the
types to its apply engine + decoder.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Fable.Core (>= 5.0.0)
- FSharp.Core (>= 10.1.300)
- Fuaran.Core.Column (>= 0.11.0)
- Fuaran.Core.DataFrame (>= 0.11.0)
- Fuaran.Core.Tree (>= 0.11.0)
- Fuaran.Core.Validator (>= 0.11.0)
- Fuaran.Core.Wire (>= 0.11.0)
- Fuaran.UI (>= 0.39.0)
NuGet packages (6)
Showing the top 5 NuGet packages that depend on Fuaran.UI.Ops.Abstractions:
| Package | Downloads |
|---|---|
|
Fuaran.UI.Ops
Fuaran tree-op apply engine — §4g op vocabulary + Result-returning apply against typed Node<'Msg> trees, with §4d AI-recovery-shaped error payloads. The JSON decoder is default-deny by shape: an undeclared or malformed emission is refused with a typed DecodeError carrying a stable code and a path, and a payload breaching the wire format's §21 resource limits is refused as LIMIT_EXCEEDED before the recursion that would breach them. Apache-2.0 licensed. |
|
|
Fuaran.UI.Telemetry.Abstractions
Fuaran op-apply + authorizing-runtime-deny telemetry — type contract and sync fire-and-forget sink interface. The observability counterpart to the Fuaran.UI.Ops apply engine and the downstream orchestration tier's authorizing runtime: every applied op surfaces as an OpApplyTelemetry record; every denied tool call surfaces as a DenyTelemetry record. Hosts implement IFuaranTelemetrySink against their own observability backend; the default sinks live in Fuaran.UI.Telemetry.Default. Apache-2.0 licensed. |
|
|
Fuaran.UI.Renderer
Fuaran renderer – Fable + React + Feliz. Every string-to-DOM seam carries a declared sanitisation posture (SANITIZATION.md states it seam by seam): an allowlisted URL-scheme floor on href/src that also rejects the protocol-relative spellings, a positive character gate on extra-attribute names, and a raw-HTML floor over rendered markdown. Interactive dispatch fails closed – a shipped runtime denies until the host grants, and the permissive posture is reached by name. Apache-2.0 licensed. |
|
|
Fuaran.Program.Bounded
Fuaran.Program.Bounded — the bounded program interpreter: a total fold of the wire-representable action set over a program's state store, with the no-closure-invocation invariant that makes an emitted tree safe to run untrusted. Placement-neutral by construction (the same interpreter drives a server session and a browser client), plus the server placement's loop with its per-interaction resource budget. Apache-2.0 licensed. |
|
|
Fuaran.Program.Runtime
Fuaran.Program.Runtime — the client placement of the bounded program loop: run a wire-decoded program tree interactively in the browser with no hand-authored update function, no message type and no server. Shares the interpreter with the server placement rather than reimplementing it, so the same tree behaves identically at both. Renderer, effect performer, op sink and live channel are injected seams. Apache-2.0 licensed. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.39.0 | 41 | 8/27/2026 |
| 0.35.0 | 313 | 8/24/2026 |
| 0.32.0 | 318 | 8/23/2026 |
| 0.31.0 | 355 | 8/21/2026 |
| 0.30.0 | 364 | 8/21/2026 |
| 0.29.0 | 379 | 8/19/2026 |
| 0.28.0 | 354 | 8/18/2026 |
| 0.27.0 | 336 | 8/18/2026 |
| 0.26.0 | 379 | 8/18/2026 |
| 0.18.0 | 326 | 8/10/2026 |
| 0.15.0 | 291 | 8/9/2026 |
| 0.12.0 | 371 | 7/31/2026 |
| 0.11.0 | 357 | 7/30/2026 |
| 0.10.0 | 404 | 7/29/2026 |
| 0.6.0 | 377 | 7/27/2026 |
| 0.4.0 | 354 | 7/26/2026 |
| 0.3.0 | 369 | 7/24/2026 |