let asset_kind_type = [| 'Logo, 'Icon, 'Diagram, 'Screenshot, 'Video, 'Document, |] in let template_kind_type = [| 'ModeStep, 'AgentPrompt, 'PublicationCard, 'ContentSection, |] in # A publishable asset: image, video, or document attached to a project. # variants: alternative formats (e.g. "svg", "png@2x", "dark"). # publish_to: service ids from manifest.publication_services where this asset is deployed. let content_asset_type = { id | String, kind | asset_kind_type, source_path | String, variants | Array String | default = [], publish_to | Array String | default = [], description | String | default = "", } in # A reusable Nickel template parameterised by named inputs. # source_path: .ncl file that evaluates to the template function. # parameters: declared input names the template accepts. let content_template_type = { id | String, kind | template_kind_type, source_path | String, parameters | Array String | default = [], description | String | default = "", } in { AssetKind = asset_kind_type, TemplateKind = template_kind_type, ContentAsset = content_asset_type, ContentTemplate = content_template_type, }