provisioning/schemas/lib/extension-metadata.ncl

29 lines
1.4 KiB
Text

# Extension Metadata Schema - Type-safe extension definition
# Defines metadata for each extension including dependencies and best practices
# Used for DAG construction and extension initialization ordering
#
# Capability fields (provides/requires/conflicts_with) added additively with defaults.
# All existing metadata.ncl files continue to export without modification.
# The detect_conflicts reflection step reads .conflicts_with // [] — the // [] null-coalesce
# was already in place; once files are migrated these fields become active.
let dag = import "./dag/contracts.ncl" in
let ExtensionMetadataSchema = {
name | String,
version | String,
category | String | default = "", # optional in flat components/ structure
description | String,
dependencies | Array String | default = [], # legacy flat dependency list — kept
provides | Array dag.ExtensionCapability | default = [], # capability ids this extension satisfies
requires | Array dag.ExtensionDependency | default = [], # typed capability requirements
conflicts_with | Array String | default = [], # extension names this conflicts with
tags | Array String,
modes | Array String | default = ["taskserv"], # available deployment modes
best_practices | Array String | default = [],
}
in
{
schema = ExtensionMetadataSchema,
}