Commit d14c9b3
authored
feat(cli): add plugin catalog core (#618)
* feat(cli): add plugin catalog services
Add typed catalog and tap models, persistent tap storage, cached
catalog loading, compatibility evaluation, install plan generation,
and runtime plugin discovery helpers.
Refs #617
* feat(cli): add plugins command group
Wire list, search, info, install, installed, and tap management
commands through the existing command-controller CLI pattern.
Refs #617
* test(cli): cover plugin catalog workflows
Add regression coverage for tap caching, catalog compatibility,
installer command generation, local path resolution, and Typer command
delegation.
Refs #617
* fix(cli): align plugin taps with schema v2
Validate tap catalogs against the schema v2 contract used by
NVIDIA-NeMo/DataDesignerPlugins#36, including source union fields,
docs URLs, package paths, compatibility metadata, and unique runtime
plugin names.
Derive Git install targets as package-qualified PEP 508 direct
references so git tap entries install the package described by the
catalog source metadata.
Refs #617
* fix(cli): address plugin review feedback
- Invalidate import caches before post-install entry point verification
- Make tap aliases case-insensitive and cache catalogs by alias plus URL
- Prefer compatible catalog entries before falling back to forced installs
- Clarify unused --tap behavior and list installed entry points without imports
- Add direct controller coverage and update CLI plugin documentation
Refs #617
* fix(cli): gate incompatible plugin installs
Fetch install targets before compatibility filtering so the controller
owns the final --force decision and the incompatible install guard stays
reachable.
Refs #617
* style(cli): format plugin catalog files
Apply ruff formatting to the plugin command and tap repository tests so
CI format checks pass on the PR merge commit.
Refs #617
* fix(cli): reject duplicate plugin entry names
Key catalog duplicate detection by entry_point.name so distinct catalog
entries cannot register the same runtime plugin name.
Refs #617
* fix(cli): preserve GitHub tree tap paths
* fix(cli): verify plugin entry point names
* align plugin CLI with catalog schema
- adopt catalog terminology for plugin source aliases
- parse package-first plugin catalog metadata from the plugin repo
- install package requirements with optional catalog indexes
* tidy plugin catalog workflow docs
* align plugin catalog CLI with package contract
* add plugin package uninstall workflow
* test plugin package command targets
* document plugin package aliases
* address plugin catalog review feedback
* prefer runtime plugin lookup matches
* rename plugins command to plugin
* show plugin package descriptions
* rename plugin catalogs command
* add protected plugin package installs
* document plugin package install modes
* avoid building project during plugin installs
* harden plugin package installs
* tighten plugin catalog contracts
* fix no-args help exit code
* make plugin docs links robust
* document plugin CLI catalog workflows
* clarify plugin entry point verification
* simplify plugin CLI docs
* narrow plugin search fields
* hide plugin catalog cache ttl
* remove plugin catalog trust flag
* improve plugin CLI recovery UX
* polish plugin catalog table display
* stabilize plugin catalog table test
* tighten plugin catalog edge cases
* harden plugin catalog verification
- Escape catalog-provided Rich markup before rendering CLI output
- Reject runtime plugin names that collide after enum-key normalization
- Load installed runtime entry points in a subprocess before reporting success
* simplify plugin entry point verification
Load matching entry points directly after install instead of spawning a
separate Python process. This keeps the check package-scoped while still
catching broken entry-point targets and non-Plugin objects.
* require newer uv for plugin plans
Use uv >= 0.10.0 as the single supported uv requirement for
plugin package commands. Auto mode now falls back to a pip plan with
an upgrade warning when uv is unavailable or too old, while explicit
uv selection remains strict.
* verify pip fallback availability
* polish plugin CLI status markers
* clarify plugin compatibility labels
* simplify plugin info install details
* address plugin CLI review nits
* support versioned plugin package installs
* share plugin install metadata rendering
* show installed plugin packages
* harden versioned plugin installs
- Preserve catalog requirement constraints for versioned installs
- Remove stale install-plan metadata fields
- Expand parser, uv, controller, and local-catalog dry-run coverage
* harden plugin help tests
* show plugin package versions
Add package version metadata support for plugin catalogs and resolve current versions from exact requirements or simple indexes when catalog entries omit them.
Update plugin list/info/install metadata to show the plugin package version and Data Designer compatibility requirement while removing the separate Data Designer version line.
* format plugin catalog tests
* harden plugin package metadata checks
* harden plugin CLI test coverage
* add plugin discovery docs (#642)
Signed-off-by: Johnny Greco <jogreco@nvidia.com>
---------
Signed-off-by: Johnny Greco <jogreco@nvidia.com>1 parent 1d203b1 commit d14c9b3
33 files changed
Lines changed: 8478 additions & 68 deletions
File tree
- architecture
- docs/plugins
- fern
- versions
- v0.5.8/pages/plugins
- packages/data-designer
- src/data_designer/cli
- commands
- controllers
- repositories
- services
- tests/cli
- commands
- controllers
- fixtures/upstream-catalogs
- repositories
- services
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
9 | | - | |
| 9 | + | |
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
| |||
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
23 | | - | |
| 23 | + | |
24 | 24 | | |
25 | | - | |
| 25 | + | |
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
| |||
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
34 | | - | |
| 34 | + | |
| 35 | + | |
35 | 36 | | |
36 | 37 | | |
37 | 38 | | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
38 | 50 | | |
39 | 51 | | |
40 | 52 | | |
| |||
62 | 74 | | |
63 | 75 | | |
64 | 76 | | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
65 | 108 | | |
66 | 109 | | |
67 | 110 | | |
| |||
73 | 116 | | |
74 | 117 | | |
75 | 118 | | |
76 | | - | |
77 | | - | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
78 | 122 | | |
79 | 123 | | |
80 | 124 | | |
| |||
This file was deleted.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | | - | |
| 15 | + | |
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
25 | | - | |
| 25 | + | |
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
340 | 340 | | |
341 | 341 | | |
342 | 342 | | |
343 | | - | |
344 | | - | |
345 | | - | |
346 | 343 | | |
347 | 344 | | |
348 | 345 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
137 | 137 | | |
138 | 138 | | |
139 | 139 | | |
140 | | - | |
141 | | - | |
| 140 | + | |
| 141 | + | |
142 | 142 | | |
143 | 143 | | |
144 | 144 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
115 | 115 | | |
116 | 116 | | |
117 | 117 | | |
118 | | - | |
119 | | - | |
| 118 | + | |
| 119 | + | |
120 | 120 | | |
121 | 121 | | |
122 | 122 | | |
| |||
This file was deleted.
0 commit comments