Muonroi.UiEngine.Catalog 1.0.0-alpha.16

This is a prerelease version of Muonroi.UiEngine.Catalog.
dotnet add package Muonroi.UiEngine.Catalog --version 1.0.0-alpha.16
                    
NuGet\Install-Package Muonroi.UiEngine.Catalog -Version 1.0.0-alpha.16
                    
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="Muonroi.UiEngine.Catalog" Version="1.0.0-alpha.16" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Muonroi.UiEngine.Catalog" Version="1.0.0-alpha.16" />
                    
Directory.Packages.props
<PackageReference Include="Muonroi.UiEngine.Catalog" />
                    
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 Muonroi.UiEngine.Catalog --version 1.0.0-alpha.16
                    
#r "nuget: Muonroi.UiEngine.Catalog, 1.0.0-alpha.16"
                    
#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 Muonroi.UiEngine.Catalog@1.0.0-alpha.16
                    
#: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=Muonroi.UiEngine.Catalog&version=1.0.0-alpha.16&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Muonroi.UiEngine.Catalog&version=1.0.0-alpha.16&prerelease
                    
Install as a Cake Tool

Muonroi.UiEngine.Catalog

Runtime catalog service that scans ASP.NET Core APIs and rule engine rules, builds API-to-rule bindings and a dependency graph, and exposes them through REST endpoints consumed by the Muonroi Rule Studio UI.

NuGet License: Commercial

Muonroi.UiEngine.Catalog is a commercial ASP.NET Core library that auto-discovers API endpoints and IRule<TContext> implementations from the running application, links them into a typed catalog graph, and serves the result over dedicated REST routes (/api/v1/ui-engine/catalog/*). Snapshots of the graph can be persisted in PostgreSQL or SQL Server for historical diffing and UI-driven navigation. The package is consumed by the mu-rule-flow-designer frontend palette and by the Muonroi Rule Studio.

Installation

dotnet add package Muonroi.UiEngine.Catalog --prerelease

Quick Start

Call AddUiEngineCatalog inside Program.cs, then add the controllers to the MVC pipeline. Without a connection string the catalog uses an in-memory snapshot store (suitable for development).

// Program.cs
var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();
builder.Services.AddUiEngineCatalog(options =>
{
    // Optional: persist snapshots to PostgreSQL
    options.PostgresConnectionString =
        builder.Configuration.GetConnectionString("Catalog");
    options.Schema = "catalog";
    options.AutoMigrateDatabase = true;
});

var app = builder.Build();
app.MapControllers();
app.Run();

Once the app is running the following endpoints are available:

Verb Route Description
GET /api/v1/ui-engine/catalog/apis All discovered API descriptors
GET /api/v1/ui-engine/catalog/rules All discovered rule descriptors
GET /api/v1/ui-engine/catalog/bindings API-to-rule bindings
GET /api/v1/ui-engine/catalog/graph Full dependency graph
GET /api/v1/ui-engine/catalog/snapshots Stored snapshot history
GET /api/v1/ui-engine/catalog/snapshots/latest Most recent snapshot
POST /api/v1/ui-engine/catalog/snapshots/capture Persist the current graph
GET /api/v1/ui-engine/catalog/palette Rule palette for Rule Studio UI
GET /api/v1/ui-engine/connectors/catalog Connector type list

Features

  • API scanning — reflects over all registered ApiDescription groups to produce typed MUiEngineCatalogApiDescriptor records with route, HTTP method, auth schemes, request/response types, and tenant-requirement flag.
  • Rule scanning — walks all loaded assemblies for concrete IRule<TContext> and ICompensatableRule<TContext> implementations and captures code, order, hook point, rule type, and dependency list.
  • Binding resolution — links APIs to the rules they invoke via [BindRuleContext] attribute metadata.
  • Dependency graph — builds a MUiEngineCatalogGraph from scanned APIs and rules for visualisation in Rule Studio.
  • Snapshot persistence — saves and retrieves graph snapshots per tenant via ICatalogSnapshotStore; backed by PostgreSQL (Npgsql), SQL Server (EF Core), or an in-memory store when no connection string is configured.
  • Auto-migrationUiEngineCatalogDatabaseMigrator runs EnsureCreatedAsync on startup when AutoMigrateDatabase = true.
  • Rule Studio paletteMRuleCatalogCompatController returns rule groups in the shape expected by MRuleCatalogService on the frontend, with optional category and search query filters.
  • Connector catalogMConnectorCatalogController exposes IConnectorRegistry.ListAvailable() without authentication (the flow designer calls this endpoint directly).
  • Per-tenant caching — catalog responses are cached in IMemoryCache with a 5-minute absolute expiry, keyed by tenant ID.

Configuration

DI registration

services.AddUiEngineCatalog(options =>
{
    // Use PostgreSQL for persistent snapshots
    options.PostgresConnectionString = "Host=...;Database=catalog;...";

    // — or — SQL Server
    options.SqlServerConnectionString = "Server=...;Database=catalog;...";

    // Database schema (default: "dbo")
    options.Schema = "dbo";

    // Run EF Core migrations on startup (default: true)
    options.AutoMigrateDatabase = true;
});

When neither connection string is set, ICatalogSnapshotStore is bound to InMemoryCatalogSnapshotStore — no database is required.

UiEngineCatalogOptions properties

Property Type Default Description
PostgresConnectionString string? null Npgsql connection string for snapshot persistence
SqlServerConnectionString string? null SQL Server connection string for snapshot persistence
Schema string "dbo" Database schema used by the snapshot table
AutoMigrateDatabase bool true Run EnsureCreatedAsync on startup

API Reference

Type Purpose
UiEngineCatalogExtensions Extension class — AddUiEngineCatalog(Action<UiEngineCatalogOptions>?)
UiEngineCatalogOptions Configuration options for the catalog (connection strings, schema, auto-migrate)
ICatalogScanService Scans APIs (ScanApisAsync), rules (ScanRulesAsync), bindings (BuildBindingsAsync), and graph (BuildGraphAsync)
ICatalogSnapshotStore Persists and retrieves catalog graph snapshots per tenant
UiEngineCatalogController REST controller — GET /api/v1/ui-engine/catalog/* and POST .../snapshots/capture
MRuleCatalogCompatController REST controller — palette endpoint for mu-rule-flow-designer at GET /api/v1/ui-engine/catalog/palette
MConnectorCatalogController REST controller — anonymous connector catalog at GET /api/v1/ui-engine/connectors/catalog
BindRuleContextAttribute Method attribute that binds a rule context type (and optional workflow name) to an endpoint
MUiEngineCatalogApiDescriptor Descriptor record for a discovered API endpoint
MUiEngineCatalogRuleDescriptor Descriptor record for a discovered rule implementation
MUiEngineCatalogBinding Links an API descriptor to its associated rule descriptors
MUiEngineCatalogGraph Full catalog graph combining APIs, rules, and bindings
MUiEngineCatalogSnapshot Persisted point-in-time graph snapshot
CatalogSnapshotSummary Lightweight summary returned by the snapshot list endpoint

Samples

No dedicated sample exists for this package. The Quick Start above is grounded directly in the public API.

Compatibility

  • Target framework: net8.0
  • Requires: Microsoft.AspNetCore.App framework reference
  • License: Commercial — requires a valid Muonroi license. See LICENSE-COMMERCIAL.

License

This package requires a commercial Muonroi license. See LICENSE-COMMERCIAL for terms. Contact leanhphi1706@gmail.com for activation.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  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

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0-alpha.16 0 6/22/2026
1.0.0-alpha.15 52 5/31/2026
1.0.0-alpha.14 59 5/15/2026
1.0.0-alpha.13 60 5/2/2026
1.0.0-alpha.12 68 4/2/2026
1.0.0-alpha.11 68 4/2/2026
1.0.0-alpha.8 154 3/28/2026
1.0.0-alpha.1 67 3/8/2026