Files
awesome-copilot/eng/agent-plugin-schema.mjs
T
github-actions[bot] e321e4a9c7 chore: publish from main
2026-08-06 12:30:14 +00:00

26 lines
1.2 KiB
JavaScript

import Ajv2020 from "ajv/dist/2020.js";
export const AGENT_PLUGIN_SCHEMA_URL = "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json";
export const AGENT_PLUGIN_SCHEMA = {
$schema: "https://json-schema.org/draft/2020-12/schema",
$id: AGENT_PLUGIN_SCHEMA_URL,
type: "object",
properties: {
$schema: { const: AGENT_PLUGIN_SCHEMA_URL },
name: { type: "string", minLength: 1, maxLength: 64, pattern: "^(?!.*(?:--|\\.\\.))[a-z0-9](?:[a-z0-9.-]*[a-z0-9])?$" },
version: { type: "string" }, description: { type: "string" },
author: { type: "object", properties: { name: { type: "string" }, email: { type: "string" }, url: { type: "string" } }, additionalProperties: false },
homepage: { type: "string" }, repository: { type: "string" }, license: { type: "string" },
keywords: { type: "array", items: { type: "string" } },
extensions: { type: "object", additionalProperties: { type: "object" } },
},
required: ["$schema", "name"],
additionalProperties: false,
};
const validate = new Ajv2020({ allErrors: true }).compile(AGENT_PLUGIN_SCHEMA);
export function validateAgentPluginManifest(manifest) {
return validate(manifest) ? [] : (validate.errors ?? []).map((error) =>
`${error.instancePath || "manifest"} ${error.message}`);
}