Plugin Packaging
Gestalt uses one package format for:
- provider plugins
- web UI bundles
Each package is described by a manifest file named one of:
plugin.yamlplugin.ymlplugin.json
How Plugins Enter A Config
There are three ways to point at a packaged plugin from config.yaml.
command
Use a local executable directly.
integrations:
example:
plugin:
command: ./bin/example-provider
config:
greeting: helloThis is best for local development.
package
Load a local directory, local archive, or HTTPS archive.
integrations:
example:
plugin:
package: ./dist/example-provider.tar.gzsource
Resolve a versioned plugin source during init.
In config, that looks like source: github.com/acme/plugins/example plus
version: 1.2.3.
This is the cleanest path for reusable, versioned packages.
What init Does For Packaged Plugins
gestaltd init resolves and prepares:
plugin.packageplugin.sourceui.plugin.packageui.plugin.source
It writes lock state and extracts the prepared artifacts under .gestalt/.
Packaging Commands
Package A Plugin Directory
gestaltd plugin package --input ./my-plugin --output ./dist/my-plugin.tar.gzBuild A Cross-Platform Release
gestaltd plugin release --version 0.1.0Run plugin release from the plugin source directory. It compiles the plugin,
produces release archives, and writes a checksums file.
Declarative-Only Packages
A provider manifest can be declarative-only. In that case the package contains a manifest and optional schemas or assets, but no executable artifact is required.
That is useful when you want to ship:
- a reusable declarative REST provider
- a reusable OpenAPI-backed integration
- a reusable web UI bundle
Executable Packages
Executable provider packages add artifacts plus
entrypoints.provider.artifact_path to the manifest. gestaltd plugin release
builds that structure for you.
Package Layout
Typical contents:
plugin.yamlartifacts/...for compiled binariesschemas/config.schema.jsonorschemas/config.schema.yamlfor provider config validationassets/...for icons or web assets
The exact layout is controlled by the manifest.