All documents

ComponentLibraryApp

spicegrinder-icon

© 2026 Obsvra. This document describes SpiceGrinder and is provided to help you evaluate and use it. It is not a license to reproduce, adapt, or use this material to build a competing product or service. Full terms: the SpiceGrinder EULA.

NAME

ComponentLibraryApp — list registered generators/filters and their parameters, live from the running artifact’s registry

SYNOPSIS

java -cp spicegrinder.jar com.obsvra.spicegrinder.tools.ComponentLibraryApp [options]

On a jpackage install:

library [options]

DESCRIPTION

ComponentLibraryApp answers “what components exist, and what are their parameters” directly from the live ComponentRegistry — a real-time alternative to Component-Library-Reference.md (a hand-generated snapshot) or writing a one-off Java harness against the registry.

Unlike every other tool in this package, ComponentLibraryApp takes no model file — it’s pure registry introspection, not a per-model tool.

Only components visible under the running artifact’s edition are listed — a Free build simply has fewer entries; this tool applies no filtering of its own beyond what the registry already does. Hidden components (ComponentDescriptor.hidden) are never shown, whether by listing or by --component name.

The same discovery is also available from a running Service API process via GET /v1/components (see Service-API-Reference.md) — both share the same underlying JSON-building code (ComponentDescriptorJson), so a given component’s entry is byte-for-byte identical either way.

OPTIONS

OptionMeaning
--category generator|filterRestrict the listing to one category.
--component NAMEShow full detail (class, description, every parameter) for exactly one component, by short name. Cannot be combined with --category.
--jsonEmit structured JSON instead of human-readable text. See OUTPUT (JSON) below.
-h, --helpPrint usage and exit.
--versionPrint the version (e.g. 1.0.0 Alpha 1 (Build 1)) and exit.

With no options, every visible component is listed, one line each: Name (Tier, category): description. --component NAME switches to full detail for that one component instead — a class name, description, and a parameter table in the same shape as Component-Library-Reference.md’s own tables (Parameter | Type | Required | Default | Aliases | Notes).

OUTPUT (JSON)

With --json, output is always full detail for every listed component — no reason to make JSON as terse as the default text listing, since a caller wanting one component can filter the array itself:

{
  "edition": "PRO",
  "totalCount": 72,
  "components": [
    {
      "name": "Convert",
      "tier": "Pro",
      "category": "filter",
      "className": "com.obsvra.spicegrinder.pro.filters.Convert",
      "description": "Deserialize an upstream string into a typed ISerializable business object, wrapped in an ObjectDataPoint",
      "parameters": [
        {
          "name": "class", "type": "String", "required": true, "default": "",
          "aliases": [], "group": "Type", "multiple": false,
          "minOccurrences": 0, "maxOccurrences": 0, "attributes": [],
          "description": "Fully-qualified class name of an ISerializable business object, reflectively constructed (via a no-arg constructor) and populated from the single upstream input's serialized string."
        }
      ]
    }
  ]
}

edition is the running artifact’s actual license edition (FREE or PRO). totalCount is components.length. Each parameter’s group is that @Parameter’s own category (e.g. Source, Connection) — distinct from the component’s own top-level category (generator/filter). multiple/minOccurrences/maxOccurrences/attributes describe multi-occurrence XML parameters (e.g. Mix’s <input name="..." weight="..."/> children) — attributes lists the XML attribute names a multi-occurrence parameter’s own child element accepts.

--category/--component still apply in --json mode, filtering before serializing. -h/--help/--version output and bad-argument errors (exit code 2) always stay plain text, unaffected by --json.

EXIT STATUS

CodeMeaning
0Success.
1--component named a component that doesn’t exist, or is hidden.
2Bad arguments — both --category and --component given, unrecognized option, or an unrecognized --category value.

EXAMPLES

List every visible component:

java -cp spicegrinder.jar com.obsvra.spicegrinder.tools.ComponentLibraryApp

List only filters:

library --category filter

Full detail on one component:

library --component Convert

Get a machine-readable listing for a script or agent to parse:

library --json

SEE ALSO

Component-Library-Reference.md, ModelValidatorApp(1), ModelAnalyzerApp(1), Grind(1), McpServerApp(1)