CSTM-191: Adding manifest validation for ui-plugin workspaces. Additionally, adding command with alias to just run validation for plugin manifest.#235
Conversation
…onally, adding command with alias to just run validation for plugin manifest.
…n just slotId as a list of strings
…to match what UMS expects
…or structural validation only
| @@ -0,0 +1,35 @@ | |||
| // Copyright (c) 2026, SailPoint Technologies, Inc. All rights reserved. | |||
There was a problem hiding this comment.
This code has the MIT license. I notice there are some existing files that add the copyright comment at the top, but it doesn't make sense to keep it here in an open-source repo. Same goes for all files in this PR.
There was a problem hiding this comment.
Thanks, and good catch @jamie-perkins-sp. To be clear most of the repository (~70% according to claude) includes the same copyright comment. The files that don't include the header are scattered about and look more like outliers than anything intentional.
So, I'm curious if anyone on @developer-relations-sp has any insight into this or a preference for whether to include the copyright for consistency or drop it for this new feature set. Mentioned in PR review ticket: https://sailpoint.atlassian.net/browse/DEVREL-3001
There was a problem hiding this comment.
As discussed this morning the copyright header has been dropped from the ui-plugins source files.
Description
This PR adds ui-plugin model/manifest parsing and validation capabilities. It also adds a new sub-command for users to validate the structure of a plugin's manifest.
How Has This Been Tested?
Created and ran extensive unit tests. Also manually validated against an example sp-ui-plugin.json manifest file by testing missing required fields, invalid formats, and adding unspecified fields.
For quick reference, here's an example of a passing manifest file:
{ "version": 1, "manifest": { "alias": "plugin-poc-playground", "name": { "en-US": "Plugin POC Playground" }, "description": { "en-US": "Proof-of-concept UI plugin workspace for local development and manifest validation." }, "apiScopes": [ "sp:scopes:all" ], "permissionPolicy": { "geolocation": ["'self'"] }, "iframeAllow": { "camera": ["'self'"] }, "slots": [{ "slotId": "full-page" }] }, "build": { "outDir": "./", "port": 8080 } }