feat(appkit): plugin manifest definition#82
Merged
MarioCadenas merged 10 commits intomainfrom Feb 16, 2026
Merged
Conversation
780c458 to
14b339e
Compare
pkosiec
reviewed
Feb 4, 2026
Member
pkosiec
left a comment
There was a problem hiding this comment.
Overall LGTM, just small comments
chore: make plugin manifest required All plugins must now declare a static manifest property with their metadata and resource requirements. This simplifies the manifest loader and provides better error messages.
Implement manifest loader with validation and error handling. All plugins must have a static manifest property. Features: - getPluginManifest() - loads and validates plugin manifests - getResourceRequirements() - extracts resource requirements - Comprehensive validation with clear error messages - Unit tests and integration tests with core plugins
1bdcb17 to
465f50a
Compare
pkosiec
approved these changes
Feb 16, 2026
Member
pkosiec
left a comment
There was a problem hiding this comment.
Approving as I already checked the PRs which were merged into this one
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.
Summary
This PR introduces a plugin manifest definition and resource registry so plugins can declare their Databricks resource requirements in a machine-readable way. Tooling can then derive app configuration (e.g.
app.yaml/ bundle resources) from those manifests.Plugin manifest
manifestwithname,displayName,description, andresources(required/optional).plugin-manifest.schema.json; built-in plugins (analytics, server) ship amanifest.jsonnext to their code and a typedmanifest.tsused at runtime.getResourceRequirements(config)so optional resources can become required based on config (e.g. warehouse only when analytics is enabled).Resource registry
ResourceRegistry: Collects resource requirements from all plugins at app creation, deduplicates bytype+resourceKey, and merges permissions (e.g. takes the most permissive when several plugins need the same resource).ResourceType) and per-type permissions (e.g.sql_warehouse→CAN_USE/CAN_MANAGE) inpackages/appkit/src/registry/types.ts.createApp()callsregistry.collectResources(rawPlugins)thenregistry.enforceValidation()so missing or invalid manifests fail fast.Manifest loader
getPluginManifest(plugin): Loads and validates the manifest from a plugin constructor; normalizes string type/permission intoResourceType/ResourcePermission.getResourceRequirements(plugin, config?): Returns the flattened list of requirements (manifest + optional runtime fromgetResourceRequirements(config)).CLI:
appkit plugins sync@databricks/sharedthat discovers plugins from the app's server entrypoint (AST parsing of imports and plugin usage), reads their manifests from installed packages or local paths, and builds/updatesappkit.plugins.json.template-plugins.schema.json) so the template's plugin list and resource metadata stay in sync with the app.--writeto write the file,--output <path>for custom path.Template and docs
appkit.plugins.jsonadded; analytics bundle config simplified (fewer redundant YAML files);databricks.yml.tmpland server wiring updated to use the new plugin manifest story.PluginManifest,ResourceRegistry,ResourceType, new functions), plus new schema docs and copy script for static schemas.Other
env-validatorand its exports removed from appkit.getResourceRequirementsand permission merging), integration withcreateApp, andplugins-syncCLI.