Skip to content

feat: app template list shows the newest version of each template, and describe says much more - #1313

Open
vscheuber wants to merge 1 commit into
mainfrom
feat/app-template-browse
Open

vscheuber wants to merge 1 commit into
mainfrom
feat/app-template-browse

Conversation

@vscheuber

Copy link
Copy Markdown
Contributor

Closes #1312

What changed

frodo app template list and describe are easier to read, and describe says much more about a template. The change is in the CLI only; the library is unchanged.

list

  • One row per template, with its newest version (51 rows on today's catalog, 125 versions). The plain list prints the template ids, one per line.
  • --long: a table with the id, display name, category, what the template provides (provisioning, SSO protocols, AI target), its connector, the newest version, the number of versions and the date of the newest version. An Override column appears only when the tenant defines a template.
  • --all-versions: every version, as id and version (with --long, one long row per version).

describe

  • -i, --template-id <id> takes the id of the template (azure.ad, the id an application record keeps as templateName). Dots and hyphens are the same and the case does not matter.
  • -n, --template-name <display name> takes the display name ("Microsoft Entra"), -v, --template-version <version> takes another version than the newest. One of -i and -n is required; they cannot be combined. The pickers of the framework offer one row per template.
  • The description shows the header (display name, group, category, what it provides, version and whether it is the newest, date, description, support URL), the other versions (date, the connector bundle each needs, object type and property counts), the connector and its configuration fields (required ones marked), the capabilities, the object types and the sections of the application form. --long adds the connector configuration as a table, the properties of each object type and the labels of the form fields. --json is unchanged.
  • The key the catalog keeps a version under (3_4-azure-ad) is no longer printed or accepted. It carries a version, changes with every release of a template and appears in no application record. The library, the MCP tools and --json still use it. Giving it to -i fails with a message that says an id carries no version and -v names one.

The entries come from the CDN or from the tenant and the library checks only a few of their fields, so every field is read defensively: an entry with fields of the wrong type prints what it can. Text from an entry is printed without control characters. Dates are shown as YYYY-MM-DD (the catalog writes month first, with and without leading zero); a text that is not a date is printed as it is. Dates never decide which version is newest: they do not follow the version order in the catalog (the library's number comparison decides).

How it was checked

  • New unit tests for the derivations and the template lookup (ApplicationTemplateView.test.js), the ops with the library replaced (ApplicationTemplateOps.test.js), the picker rows (EntityPickFamilies.appTemplate.test.ts and ApplicationTemplateEntityPicks.test.js), and the built CLI on a fixture catalog (ApplicationTemplateCommands.test.js: list, --long, --all-versions, -i, -n, -v, --json, the failures and their exit codes, air-gapped mode). The fixture catalog covers a template with several versions and a connector, an SSO template, a template with neither connector nor capabilities, versions whose dates do not follow their order, an AI target, a connector display name that is a class name, a template defined by the tenant, an entry whose fields have the wrong types and an entry with control characters.
  • Snapshots updated: the -h output of app template list, describe and the group (expected: new options, new descriptions, the one-of rule).
  • npm run check, npx tsc --noEmit, the guidance tests and the whole suite were run with a scratch home folder.
  • The outputs were also read against the live catalog (51 templates), without a tenant.

Left out

  • Filters for list (by category or by what a template provides).
  • A change in the library: the derivations are presentation and stay in the CLI.
  • list --long is 155 characters wide on today's catalog, like the table it replaces; it wraps in a narrower terminal.
  • No entry in MIGRATION.md: the commands are new in 5.x and only the prerelease 5.0.0-26 had the old output.

🤖 Generated with Claude Code

…d describe says much more (#1312)

list prints one row per template (the newest version) and --all-versions every
version; --long adds the display name, category, what the template provides,
its connector, the number of versions and the date. describe takes the template
by id (-i) or display name (-n) and the version by -v (default: the newest), and
shows the other versions, the connector and its configuration, the capabilities,
the object types and the application form; --long adds the properties and the
form fields. The key the catalog keeps a version under is no longer printed or
accepted. The entries are read defensively and printed without control
characters.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

app template: one row per template in list, a richer describe, and -v/--version

1 participant