# Workspace Configuration Schema # Defines the structure and validation rules for workspace metadata and settings let defaults_val = import "./workspace-defaults.ncl" in { # Contract definitions for workspace components WorkspaceKind = std.contract.from_predicate (fun x => x == 'tenant || x == 'fleet_host ), WorkspaceMetadata = { owner | String, created | String, environment | String, }, WorkspaceConfig = { name | String, path | String, description | String, metadata | WorkspaceMetadata, kind | WorkspaceKind | default = 'tenant, }, # Hybrid interface: Defaults, makers, and instances defaults = defaults_val, make_metadata | not_exported = fun o => defaults_val.metadata & o, make_workspace | not_exported = fun o => defaults_val.workspace & o, # Default instances DefaultMetadata = defaults_val.metadata, DefaultWorkspaceConfig = defaults_val.workspace, }