External Registry and Validation - cprima-forks/uipath-ai-skills GitHub Wiki

External Registry and Validation Pipeline

A structured activity catalog extracted from NuGet packages, combined with uipath pack for CI/CD validation, addresses the two main gaps in the current design: no version-aware attribute registry, and no Studio-acceptance testing.

The uips-fixtures Activity Catalog

The uips-fixtures project extracts activity metadata directly from .nupkg files and produces structured catalogs. The schema (catalog/schemas/v0.1/activity-catalog.schema.json) defines:

Source provenance:

{
  "kind": "nuget-package",
  "id": "UiPath.UIAutomation.Activities",
  "version": "23.10.20"
}

Activity definition:

{
  "id": "UiPath.UIAutomation.Activities.NTypeInto@UiPath.UIAutomation.Activities/23.10.20",
  "fullName": "UiPath.UIAutomation.Activities.NTypeInto",
  "displayName": "Type Into",
  "members": [
    {
      "name": "EmptyFieldMode",
      "memberKind": "property",
      "dataType": "UiPath.UIAutomation.Activities.EmptyFieldMode",
      "isRequiredArgument": false
    }
  ]
}

The compound ID {fullName}@{packageId}/{packageVersion} is the stable key for lookups. Two curated sets are currently available: reframework-stable (23.10.x) and watchful-anvil (23.10.x with additional packages).

How This Relates to the Generator Refactoring

The catalog provides the "thin registry" layer: per (packageId, version), what members does each activity have. A version-aware generator would:

  1. Load the target project's project.json dependencies
  2. Look up each activity in the catalog for the matching package version
  3. Emit only members present in that version's catalog entry

The catalog does not encode structural knowledge (child element placement, wrapping rules, conditional attribute names) — see Friction: Structural Knowledge in F-Strings. Those concerns remain in generator-specific assembly code.

The uipath pack Validation Loop

uipath pack (UiPath CLI / uipc) compiles a UiPath project without Studio:

  • Resolves NuGet dependencies
  • Validates activity references against the resolved packages
  • Fails with specific errors if an activity attribute does not exist in the resolved package version

This is the CI/CD-friendly substitute for "open in Studio and check for errors".

Proposed Pipeline

.nupkg files
  → activity catalog (uips-fixtures extraction)
    → version-aware registry
      → dynamic generator (consulting registry for attribute set)
        → generated .xaml + project.json
          → uipath pack
            → pass: attribute set is valid for this package version
            → fail: specific error identifying the invalid attribute

What This Closes

Gap Closed by
Attributes hardwired to 24.10 Registry keyed by (packageId, version)
No Studio-acceptance testing uipath pack in CI/CD
{x:Null} load-bearing vs defensive Pack failure on removal identifies required nulls
Manual update when new Studio ships Re-extract catalog from new .nupkg, re-run pipeline

Current Status

The catalog extraction code and the uips-fixtures catalog are maintained separately from this repository. Contribution of the catalog data to uipath-ai-skills would require agreement on the registry format and the generator refactoring described in Friction: Generators as Registry.