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
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Fuaran.UI.Ops.Abstractions" Version="0.39.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Fuaran.UI.Ops.Abstractions" Version="0.39.0" />
                    
Directory.Packages.props
<PackageReference Include="Fuaran.UI.Ops.Abstractions" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Fuaran.UI.Ops.Abstractions --version 0.39.0
                    
#r "nuget: Fuaran.UI.Ops.Abstractions, 0.39.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Fuaran.UI.Ops.Abstractions@0.39.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Fuaran.UI.Ops.Abstractions&version=0.39.0
                    
Install as a Cake Addin
#tool nuget:?package=Fuaran.UI.Ops.Abstractions&version=0.39.0
                    
Install as a Cake Tool

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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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 0 8/27/2026
0.35.0 228 8/24/2026
0.32.0 280 8/23/2026
0.31.0 331 8/21/2026
0.30.0 340 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 378 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 356 7/30/2026
0.10.0 404 7/29/2026
0.6.0 377 7/27/2026
0.4.0 353 7/26/2026
0.3.0 369 7/24/2026