Muonroi.UiEngine.Catalog
1.0.0-alpha.16
dotnet add package Muonroi.UiEngine.Catalog --version 1.0.0-alpha.16
NuGet\Install-Package Muonroi.UiEngine.Catalog -Version 1.0.0-alpha.16
<PackageReference Include="Muonroi.UiEngine.Catalog" Version="1.0.0-alpha.16" />
<PackageVersion Include="Muonroi.UiEngine.Catalog" Version="1.0.0-alpha.16" />
<PackageReference Include="Muonroi.UiEngine.Catalog" />
paket add Muonroi.UiEngine.Catalog --version 1.0.0-alpha.16
#r "nuget: Muonroi.UiEngine.Catalog, 1.0.0-alpha.16"
#:package Muonroi.UiEngine.Catalog@1.0.0-alpha.16
#addin nuget:?package=Muonroi.UiEngine.Catalog&version=1.0.0-alpha.16&prerelease
#tool nuget:?package=Muonroi.UiEngine.Catalog&version=1.0.0-alpha.16&prerelease
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.
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
ApiDescriptiongroups to produce typedMUiEngineCatalogApiDescriptorrecords with route, HTTP method, auth schemes, request/response types, and tenant-requirement flag. - Rule scanning — walks all loaded assemblies for concrete
IRule<TContext>andICompensatableRule<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
MUiEngineCatalogGraphfrom 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-migration —
UiEngineCatalogDatabaseMigratorrunsEnsureCreatedAsyncon startup whenAutoMigrateDatabase = true. - Rule Studio palette —
MRuleCatalogCompatControllerreturns rule groups in the shape expected byMRuleCatalogServiceon the frontend, with optionalcategoryandsearchquery filters. - Connector catalog —
MConnectorCatalogControllerexposesIConnectorRegistry.ListAvailable()without authentication (the flow designer calls this endpoint directly). - Per-tenant caching — catalog responses are cached in
IMemoryCachewith 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.Appframework reference - License: Commercial — requires a valid Muonroi license. See LICENSE-COMMERCIAL.
Related Packages
Muonroi.Core.Abstractions— definesICatalogScanService,ICatalogSnapshotStore, and all catalog model typesMuonroi.RuleEngine.Abstractions— definesIRule<TContext>andICompensatableRule<TContext>that the scanner discoversMuonroi.RuleEngine.Runtime— rule runtime whoseRuleOptionsthe scanner reads for runtime-registered rulesMuonroi.Integration.Abstractions— definesIConnectorRegistryconsumed by the connector catalog endpointMuonroi.AspNetCore— host package that wires the catalog into the broader UI engine manifest pipeline
License
This package requires a commercial Muonroi license. See LICENSE-COMMERCIAL for terms. Contact leanhphi1706@gmail.com for activation.
| Product | Versions 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. |
-
net8.0
- MailKit (>= 4.17.0)
- Muonroi.Core (>= 1.0.0-alpha.16)
- Muonroi.Core.Abstractions (>= 1.0.0-alpha.16)
- Muonroi.Data.EntityFrameworkCore (>= 1.0.0-alpha.16)
- Muonroi.Integration.Abstractions (>= 1.0.0-alpha.16)
- Muonroi.RuleEngine.Abstractions (>= 1.0.0-alpha.16)
- Muonroi.RuleEngine.Runtime (>= 1.0.0-alpha.16)
- Muonroi.Tenancy.Core (>= 1.0.0-alpha.16)
- Scriban (>= 7.2.1)
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 |