bamaer opened a new issue, #8403:
URL: https://github.com/apache/hop/issues/8403

   ### What would you like to happen?
   
   ### Background
   
   There is currently no supported way to get a machine-readable inventory of 
what a
   given Hop installation actually contains. Tooling that needs this today 
resorts to
   parsing Hop's Java source, which has three problems: it goes stale against 
the
   running version, it cannot see third-party or Marketplace plugins installed 
at a
   site, and it yields unresolved `i18n::` keys instead of real labels.
   
   The information already exists in `PluginRegistry` at runtime. It just isn't
   reachable from a pipeline.
   
   ### Proposal
   
   A `PluginCatalog` source transform that reads the live `PluginRegistry` and 
emits
   one row per plugin, with options to include transforms, actions and metadata 
types.
   For each plugin it reflects over the metadata class to expose its
   `@HopMetadataProperty` fields, descending one level into complex property 
groups.
   
   Output fields: `plugin_id`, `plugin_type`, `name`, `description`, `category`,
   `keywords`, `class_name`.
   
   Two detail levels:
   
   - `PER_PLUGIN` — one row per plugin, properties as a JSON array column
   - `PER_PROPERTY` — one row per property (`property_field`, 
`property_xml_key`,
     `property_java_type`, `property_password`, `property_group`), plugin 
columns repeated
   
   Because it reads the registry rather than source, labels come back resolved 
and
   third-party plugins are included automatically.
   
   ### Use cases
   
   - **AI assistants.** The AI Advisor SPI added in #8330 anticipates exactly 
this:
     `IAiAdvisor.listInclusions()` notes that "a plugin-id catalog may default 
on so
     proposals can use real ids." Advisor proposal quality depends on the model 
knowing
     real plugin ids and real property keys; a registry-derived catalog 
supplies both,
     including for plugins the advisor's authors never saw.
   - **Documentation generation** — verify manual coverage against what 
actually ships.
   - **Auditing** — report which plugins are installed across environments.
   - **Migration and refactoring tooling** — resolve property names without 
guessing.
   
   ### Implementation notes
   
   - Property extraction is a pure static method, unit-tested against fixture 
classes
     with no registry bootstrap required.
   - Nesting is capped at one level, matching how tabular property groups are 
modelled
     elsewhere.
   - The `@HopMetadataProperty(password = true)` flag is carried through so 
consumers
     can redact.
   - Plugins whose metadata class fails to load are reported through a warnings 
sink
     rather than failing the pipeline.
   - Labels are locale-resolved by the registry; English search aliases are 
emitted
     alongside them so generated artifacts stay locale-independent.
   
   ### Issue Priority
   
   Priority: 2
   
   ### Issue Component
   
   Component: Transforms


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to