import { RULE_CHANNELS, RULE_NODE_KINDS } from './vocabulary'; /** * Machine-readable authoring surface for chart visualization primitives. * * The SDK build serializes this registry to `capabilities.json`. Keep the * registry aligned with the public builders and the serialized-node schema; * contract tests enforce both relationships. */ export const visualizationGrammarCapabilities = { contractVersion: 1, moduleSpecifier: 'npm:@rippling/rippling-sdk/lib/charts', builders: { value: { kind: 'input', returns: 'number', }, literal: { kind: 'literal', parameters: ['scalar'], returns: 'value', }, equals: { kind: 'comparison', parameters: ['value', 'value'], returns: 'condition', }, isNot: { kind: 'comparison', parameters: ['value', 'value'], returns: 'condition', }, lessThan: { kind: 'comparison', parameters: ['value', 'value'], returns: 'condition', }, greaterThan: { kind: 'comparison', parameters: ['value', 'value'], returns: 'condition', }, lessOrEqual: { kind: 'comparison', parameters: ['value', 'value'], returns: 'condition', }, greaterOrEqual: { kind: 'comparison', parameters: ['value', 'value'], returns: 'condition', }, when: { kind: 'conditional', parameters: ['condition', 'color', 'color?'], returns: 'conditional-color', }, color: { kind: 'channel', parameters: ['conditional-color'], returns: 'color-rule', placeholderChannel: 'color', }, }, supportedChannels: RULE_CHANNELS, supportedNodeKinds: RULE_NODE_KINDS, } as const;