29 lines
1.4 KiB
Text
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,
|
|
}
|