# 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, }