feat(ui): first-class Plugin support in the registry UI - #573
Closed
ilackarms wants to merge 1 commit into
Closed
Conversation
Adds a Plugins tab to the catalog so Plugin resources (ar.dev/v1alpha1, PR #554) can be registered, browsed, and inspected entirely through the UI, matching the existing skill/agent/prompt/server patterns: - AddPluginDialog: name/title/description/harnesses + git source (repository URL, optional branch/commit/subfolder), applied through the shared declarative /v0/apply endpoint; surfaces the expectation that the controller resolves and pins the source. - PluginCard: catalog card with resolution status (Ready condition), short pinned commit, and harness badges. - PluginDetail: renders the server-derived status - resolved source pin, parsed manifest (displayName/version/author/license/keywords), and inventory. Hooks and executables (the governance risk surface) lead the Contents tab in a prominent callout. - lib/plugin-utils: Ready-condition/resolution helpers implementing the readiness contract from pkg/api/v1alpha1/plugin.go. - ui-shims: listPluginsV0/createPluginV0; plugin components speak the v1alpha1 envelope directly (no legacy flat shape). - Vitest coverage for the card, detail, dialog, and status helpers; Storybook stories for the card.
|
This pull request has been marked as stale due to no activity in the last 14 days. It will be closed in 3 days unless it is tagged "no stalebot" or other activity occurs. |
|
This pull request has been closed due to inactivity. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Motivation: The Plugin kind (
ar.dev/v1alpha1, #554) is fully usable fromarctl apply, but had zero surface in the Next.js UI — plugins could not be registered, browsed, or inspected without the CLI.What changed: Adds first-class Plugin support to the catalog UI, following the existing skill/agent/prompt/server component patterns:
add-plugin-dialog.tsx): name, title, description, harnesses, and a git source (repository URL + optional branch/commit/subfolder), applied through the shared declarative/v0/applyendpoint via the generated client. The dialog explains that the controller resolves the pointer to a pinned commit and scans the bundle out of band.plugin-card.tsx): Plugins tab alongside the other kinds, grouped by name with tag counts. The card surfaces resolution state from status — a Ready badge (green), a Resolving spinner whileReady=False/Progressing, or the failure reason (e.g.SourceUnresolvable) with the condition message in a tooltip — plus the short pinned commit and harness badges.plugin-detail.tsx): renders the server-derived content —status.resolvedSource(full pinned commit/digest), the parsedstatus.manifest(displayName, version, description, author, license, homepage, keywords), and thestatus.inventory. Hooks and executables are the governance risk surface, so they lead the Contents tab in a prominent "Runs code on install" callout ahead of skills, commands, agents, and MCP servers. Resolution failures show the controller's error message inline.lib/plugin-utils.ts): implement the readiness contract documented onPluginStatus(absence ofReady=True⇒ not yet resolved).lib/ui-shims.ts):listPluginsV0/createPluginV0. Plugins postdate the legacy flat response shape, so plugin components consume the v1alpha1 envelope (spec + status) directly; only the list-call ergonomics are shimmed.Verified live against a local server built from this branch with the real fixture
github.com/ilackarms/repo-analystregistered both viacurlto/v0/applyand through the new dialog: the controller pinned the commit and the UI rendered the full manifest and inventory (3 skills, 3 commands, 1 agent); a second commit-pinned tag registered through the dialog grouped correctly (+1 tag count, tag selector); a plugin with a nonexistent repo rendered theSourceUnresolvablefailure state.cd ui && npm test(75 passed),make lint-ui(0 errors),tsc --noEmitclean.Change Type
/kind feature
Changelog
Additional Notes
listPlugins+/v0/apply).showDeletefor future use, likeSkillCard).