Fuaran.UI.Ops 0.3.0

Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet add package Fuaran.UI.Ops --version 0.3.0
                    
NuGet\Install-Package Fuaran.UI.Ops -Version 0.3.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" Version="0.3.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Fuaran.UI.Ops" Version="0.3.0" />
                    
Directory.Packages.props
<PackageReference Include="Fuaran.UI.Ops" />
                    
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 --version 0.3.0
                    
#r "nuget: Fuaran.UI.Ops, 0.3.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@0.3.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&version=0.3.0
                    
Install as a Cake Addin
#tool nuget:?package=Fuaran.UI.Ops&version=0.3.0
                    
Install as a Cake Tool

Fuaran.UI.Ops

Fuaran tree-op apply engine — the conversation-as-source-of-truth substrate. Implements §4g of the Fuaran design specification: a slim 10-op vocabulary the AI emits in lieu of full-tree regenerations, plus an apply : TreeOp<'Msg> -> Node<'Msg> -> Result<Node<'Msg>, ApplyError> engine that walks the tree by NodeId and returns either an updated tree or a §4d AI-recovery-shaped error payload.

Surface

  • Fuaran.UI.Ops.TypesTreeOp<'Msg> DU (EditNode / UpdateProp / ReplaceBinding / UpdateStyle / UpdateState / InsertChild / RemoveNode / MoveNode / ReorderChildren / Batch), ApplyError, ApplyHint, ApplyErrorCode.
  • Fuaran.UI.Ops.Applyapply : TreeOp<'Msg> -> Node<'Msg> -> Result<Node<'Msg>, ApplyError>. Batch is all-or-nothing — the first failing op aborts the batch and the tree is returned to its pre-batch state, with the error carrying the inner-op index.
  • Fuaran.UI.Ops.Introspect — reflection-free shape helpers consumed by error rendering (kind name lookup, available-field enumeration per NodeKind, nodes_with_<field>_field tree search). Fable-compatible.
  • Fuaran.UI.Ops.ErrorRender — turns an (op, error) pair into the §4d JSON shape (flat code / message / hint.available_fields / hint.nodes_with_<field>_field / hint.suggestion). Consumers (downstream AI consumers) parse this to drive AI retries.

What's out of scope (v1)

  • Wire-format storage layer. §4g's Node<obj> + moduleMsgDecoder: JVal -> 'Msg storage shape is a follow-up. v1 ships the typed in-memory apply (TreeOp<'Msg> over Node<'Msg>) the downstream AI consumer hooks into directly; JSONL persistence + decoder come with the per-turn op-log substrate.
  • Nested UpdateProp paths. Top-level field paths ("Label", "Tone", "Format", "Rows", ...) ship working; nested paths like "Columns.2.Label" return a structured PathNotSupportedYet error with the supported field list, so an AI consumer gets a useful hint rather than a silent acceptance.
  • UpdateProp against Action-carrying or function-carrying fields. OnClick / OnRowClick / OnChange / etc. are not editable via property paths; the AI re-emits the parent spec via EditNode to swap behaviour. Surfaced as PathNotSupportedYet with the supported field list.

Both gaps surface to the AI through the same §4d hint shape, so the closed loop can recover by picking a structural op instead.

Apache-2.0 licensed — see the repo LICENSE.

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 (18)

Showing the top 5 NuGet packages that depend on Fuaran.UI.Ops:

Package Downloads
Fuaran.UI.OpStream.Abstractions

Fuaran op-stream — type contract, canonical-JSON encoder, hash-chain primitive, and sink interface. The durable / replayable counterpart to the Fuaran.UI.Ops apply engine: every applied TreeOp surfaces as a hash-chained OpRecord against the configured IOpStreamSink. CanonicalJson.encodeNode doubles as the AI pre-emit self-check encoder (Fable-compatible). Apache-2.0 licensed.

Fuaran.UI.OpStream.Replay

Op-stream replay engine — folds OpRecord sequences through the Fuaran.UI.Ops apply engine to reconstruct any tree state. Companion to Fuaran.UI.OpStream.Abstractions. Apache-2.0 licensed.

Fuaran.UI.OpStream.Dag.Abstractions

Fuaran op-stream branching-DAG abstractions (opt-in, rung-4). Generalises the linear hash-chained op-stream into a content-addressed Merkle-DAG: DagOpRecord with multi-parent links + lexicographically-sorted-parent canonical hash, the IDagOpStreamSink superset interface (atomic tryAdvanceHead CAS + parents/reachable/lca topology), and DAG integrity verification with tombstone-aware pruning. The linear OpRecord / IOpStreamSink are untouched — a linear chain is a valid degenerate DAG. Apache-2.0 licensed.

Fuaran.UI.ServerDriven

Fuaran server-driven interactivity — the transport-agnostic core for the third client tier (HTMX / LiveView / Blazor-Server-shaped): the closure-free DomPatch + ClientEffect wire vocabularies the generic JS shim applies, the TreeOp→DomPatch lowering, the per-connection driver, and the IFuaranLiveChannel transport seam. Keep the Elmish update loop on the server; ship ~nothing to the browser. No platform-SDK dependency. Apache-2.0 licensed.

Fuaran.UI.Content

Host-neutral validated-exemplar seam for Fuaran content pipelines. `decodeExemplar` admits a canonical wire-format JSON string into a Node tree through three gates — decode (Fuaran.UI.Ops.JsonDecode), pre-emit-validate (Fuaran.UI.PreEmitValidate), and a canonical decode/encode round-trip fixed point — returning the decoded Node plus its canonical bytes, or the decoder's typed AI-recovery hints. The integrity core a docs site, an eval seed corpus, or a fuaran-wire fence pipeline reuse to make a bad example a build failure rather than a published invalid tree. No Giraffe / ASP.NET / routing / markdown dependency — rendering and page assembly stay with the host. Apache-2.0 licensed.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.46.0 0 8/28/2026
0.39.0 41 8/27/2026
0.35.0 287 8/24/2026
0.32.0 279 8/23/2026
0.31.0 309 8/21/2026
0.30.0 314 8/21/2026
0.29.0 329 8/19/2026
0.28.0 314 8/18/2026
0.27.0 293 8/18/2026
0.26.0 340 8/18/2026
0.18.0 294 8/10/2026
0.15.0 257 8/9/2026
0.12.0 338 7/31/2026
0.11.0 315 7/30/2026
0.10.0 368 7/29/2026
0.6.0 336 7/27/2026
0.4.0 319 7/26/2026
0.3.0 338 7/24/2026