mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-22 16:25:58 +00:00
- scripts/validate_plugin_catalog.py: standalone stdlib+pyyaml structural validator for plugin-catalog entries and removed.yaml (no hermes install needed; runtime twin of hermes_cli/plugin_catalog.py). --json support, unknown top-level keys warn instead of failing for forward compat. - .github/actions/plugin-validate: composite action plugin authors drop into their own repo's CI — installs hermes-agent from a chosen ref and runs 'hermes plugins validate <path>'. - .github/workflows/plugin-catalog-ci.yml: admission gate on PRs touching plugin-catalog/** — structural job plus pinned-source job that clones each changed entry's repo, hard-fails on unreachable pinned sha (supply-chain gate), and validates the plugin at that exact commit.
56 lines
1.9 KiB
YAML
56 lines
1.9 KiB
YAML
name: Hermes Plugin Validate
|
|
description: >-
|
|
Validate a Hermes Agent plugin (plugin.yaml manifest schema AND
|
|
declared-vs-actually-registered capabilities) using
|
|
`hermes plugins validate`. Drop this into your plugin repo's CI:
|
|
|
|
- uses: actions/checkout@<sha>
|
|
- uses: NousResearch/hermes-agent/.github/actions/plugin-validate@main
|
|
with:
|
|
path: .
|
|
|
|
The caller's job owns checkout; this action installs Python + hermes-agent
|
|
(git install — a supported CI-context install route) and runs the
|
|
validator against your plugin directory.
|
|
|
|
inputs:
|
|
path:
|
|
description: Path to the plugin directory (containing plugin.yaml).
|
|
default: "."
|
|
hermes-ref:
|
|
description: hermes-agent git ref (branch/tag/sha) to install and validate with.
|
|
default: "main"
|
|
|
|
runs:
|
|
using: composite
|
|
steps:
|
|
- name: Set up Python
|
|
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
|
with:
|
|
python-version: "3.11"
|
|
|
|
- name: Install hermes-agent
|
|
shell: bash
|
|
env:
|
|
_HERMES_REF: ${{ inputs.hermes-ref }}
|
|
run: |
|
|
set -euo pipefail
|
|
# CI-context install from git; the ref lets plugin authors validate
|
|
# against a pinned hermes release instead of main.
|
|
pip install "git+https://github.com/NousResearch/hermes-agent@${_HERMES_REF}"
|
|
|
|
- name: Validate plugin
|
|
shell: bash
|
|
env:
|
|
_PLUGIN_PATH: ${{ inputs.path }}
|
|
run: |
|
|
set -uo pipefail
|
|
# `hermes plugins validate` checks the plugin.yaml manifest schema
|
|
# and loads the plugin in a scratch subprocess to verify that the
|
|
# capabilities it DECLARES match what it actually registers.
|
|
if hermes plugins validate "$_PLUGIN_PATH"; then
|
|
echo "✅ PASS: plugin at '$_PLUGIN_PATH' validated cleanly"
|
|
else
|
|
echo "❌ FAIL: plugin at '$_PLUGIN_PATH' failed validation (see output above)"
|
|
exit 1
|
|
fi
|