From 52e0c114ef008a34f68e3973607b38ae46df39f6 Mon Sep 17 00:00:00 2001 From: Nan Yu Date: Tue, 10 Feb 2026 17:37:07 +0000 Subject: [PATCH] Fix the invalid standard_catalog.json https://github.com/google/A2UI/pull/605 accidentally broke the v0.9/standard_catalog.json. This commit fixes the invalid JSON schema and reformats it. --- specification/v0_9/json/standard_catalog.json | 1537 ++++++++--------- 1 file changed, 765 insertions(+), 772 deletions(-) diff --git a/specification/v0_9/json/standard_catalog.json b/specification/v0_9/json/standard_catalog.json index b3860b56..5bd89cc7 100644 --- a/specification/v0_9/json/standard_catalog.json +++ b/specification/v0_9/json/standard_catalog.json @@ -744,823 +744,816 @@ "chips" ] }, - "type": "string", - "description": "The display style of the component.", - "enum": [ - "checkbox", - "chips" - ] - }, - "filterable": { - "type": "boolean", - "description": "If true, displays a search input to filter the options." - } - }, - "required": [ - "component", - "options", - "value" - ] - } - ], - "unevaluatedProperties": false - }, - "Slider": { - "type": "object", - "allOf": [ - { - "$ref": "common_types.json#/$defs/ComponentCommon" - }, - { - "$ref": "#/$defs/CatalogComponentCommon" - }, - { - "$ref": "common_types.json#/$defs/Checkable" - }, - { - "type": "object", - "properties": { - "component": { - "const": "Slider" - }, - "label": { - "$ref": "common_types.json#/$defs/DynamicString", - "description": "The label for the slider." - }, - "min": { - "type": "number", - "description": "The minimum value of the slider." - }, - "max": { - "type": "number", - "description": "The maximum value of the slider." - }, - "value": { - "$ref": "common_types.json#/$defs/DynamicNumber", - "description": "The current value of the slider." - } - }, - "required": [ - "component", - "value", - "min", - "max" - ] - } - ], - "unevaluatedProperties": false - }, - "DateTimeInput": { - "type": "object", - "allOf": [ - { - "$ref": "common_types.json#/$defs/ComponentCommon" - }, - { - "$ref": "#/$defs/CatalogComponentCommon" - }, - { - "$ref": "common_types.json#/$defs/Checkable" - }, - { - "type": "object", - "properties": { - "component": { - "const": "DateTimeInput" - }, - "value": { - "$ref": "common_types.json#/$defs/DynamicString", - "description": "The selected date and/or time value in ISO 8601 format. If not yet set, initialize with an empty string." - }, - "enableDate": { - "type": "boolean", - "description": "If true, allows the user to select a date." + "filterable": { + "type": "boolean", + "description": "If true, displays a search input to filter the options." + } }, - "enableTime": { - "type": "boolean", - "description": "If true, allows the user to select a time." + "required": [ + "component", + "options", + "value" + ] + } + ], + "unevaluatedProperties": false + }, + "Slider": { + "type": "object", + "allOf": [ + { + "$ref": "common_types.json#/$defs/ComponentCommon" + }, + { + "$ref": "#/$defs/CatalogComponentCommon" + }, + { + "$ref": "common_types.json#/$defs/Checkable" + }, + { + "type": "object", + "properties": { + "component": { + "const": "Slider" + }, + "label": { + "$ref": "common_types.json#/$defs/DynamicString", + "description": "The label for the slider." + }, + "min": { + "type": "number", + "description": "The minimum value of the slider." + }, + "max": { + "type": "number", + "description": "The maximum value of the slider." + }, + "value": { + "$ref": "common_types.json#/$defs/DynamicNumber", + "description": "The current value of the slider." + } }, - "min": { - "allOf": [ - { - "$ref": "common_types.json#/$defs/DynamicString" - }, - { - "if": { - "type": "string" + "required": [ + "component", + "value", + "min", + "max" + ] + } + ], + "unevaluatedProperties": false + }, + "DateTimeInput": { + "type": "object", + "allOf": [ + { + "$ref": "common_types.json#/$defs/ComponentCommon" + }, + { + "$ref": "#/$defs/CatalogComponentCommon" + }, + { + "$ref": "common_types.json#/$defs/Checkable" + }, + { + "type": "object", + "properties": { + "component": { + "const": "DateTimeInput" + }, + "value": { + "$ref": "common_types.json#/$defs/DynamicString", + "description": "The selected date and/or time value in ISO 8601 format. If not yet set, initialize with an empty string." + }, + "enableDate": { + "type": "boolean", + "description": "If true, allows the user to select a date." + }, + "enableTime": { + "type": "boolean", + "description": "If true, allows the user to select a time." + }, + "min": { + "allOf": [ + { + "$ref": "common_types.json#/$defs/DynamicString" }, - "then": { - "oneOf": [ - { - "format": "date" - }, - { - "format": "time" - }, - { - "format": "date-time" - } - ] + { + "if": { + "type": "string" + }, + "then": { + "oneOf": [ + { + "format": "date" + }, + { + "format": "time" + }, + { + "format": "date-time" + } + ] + } } - } - ], - "description": "The minimum allowed date/time in ISO 8601 format." - }, - "max": { - "allOf": [ - { - "$ref": "common_types.json#/$defs/DynamicString" - }, - { - "if": { - "type": "string" + ], + "description": "The minimum allowed date/time in ISO 8601 format." + }, + "max": { + "allOf": [ + { + "$ref": "common_types.json#/$defs/DynamicString" }, - "then": { - "oneOf": [ - { - "format": "date" - }, - { - "format": "time" - }, - { - "format": "date-time" - } - ] + { + "if": { + "type": "string" + }, + "then": { + "oneOf": [ + { + "format": "date" + }, + { + "format": "time" + }, + { + "format": "date-time" + } + ] + } } - } - ], - "description": "The maximum allowed date/time in ISO 8601 format." + ], + "description": "The maximum allowed date/time in ISO 8601 format." + }, + "label": { + "$ref": "common_types.json#/$defs/DynamicString", + "description": "The text label for the input field." + } }, - "label": { - "$ref": "common_types.json#/$defs/DynamicString", - "description": "The text label for the input field." - } - }, - "required": [ - "component", - "value" - ] - } - ], - "unevaluatedProperties": false - } -}, -"functions": { - "required": { - "type": "object", - "description": "Checks that the value is not null, undefined, or empty.", - "properties": { - "call": { - "const": "required" - }, - "args": { - "type": "object", - "properties": { - "value": { - "description": "The value to check." - } - }, - "required": [ - "value" - ], - "additionalProperties": false - }, - "returnType": { - "const": "boolean" - } - }, - "required": [ - "call", - "args" - ], - "unevaluatedProperties": false + "required": [ + "component", + "value" + ] + } + ], + "unevaluatedProperties": false + } }, - "regex": { - "type": "object", - "description": "Checks that the value matches a regular expression string.", - "properties": { - "call": { - "const": "regex" - }, - "args": { - "type": "object", - "properties": { - "value": { - "$ref": "common_types.json#/$defs/DynamicString" + "functions": { + "required": { + "type": "object", + "description": "Checks that the value is not null, undefined, or empty.", + "properties": { + "call": { + "const": "required" + }, + "args": { + "type": "object", + "properties": { + "value": { + "description": "The value to check." + } }, - "pattern": { - "type": "string", - "description": "The regex pattern to match against." - } - }, - "required": [ - "value", - "pattern" - ], - "unevaluatedProperties": false + "required": [ + "value" + ], + "additionalProperties": false + }, + "returnType": { + "const": "boolean" + } }, - "returnType": { - "const": "boolean" - } + "required": [ + "call", + "args" + ], + "unevaluatedProperties": false }, - "required": [ - "call", - "args" - ], - "unevaluatedProperties": false - }, - "length": { - "type": "object", - "description": "Checks string length constraints.", - "properties": { - "call": { - "const": "length" - }, - "args": { - "type": "object", - "properties": { - "value": { - "$ref": "common_types.json#/$defs/DynamicString" - }, - "min": { - "type": "integer", - "minimum": 0, - "description": "The minimum allowed length." - }, - "max": { - "type": "integer", - "minimum": 0, - "description": "The maximum allowed length." - } - }, - "required": [ - "value" - ], - "anyOf": [ - { - "required": [ - "min" - ] + "regex": { + "type": "object", + "description": "Checks that the value matches a regular expression string.", + "properties": { + "call": { + "const": "regex" + }, + "args": { + "type": "object", + "properties": { + "value": { + "$ref": "common_types.json#/$defs/DynamicString" + }, + "pattern": { + "type": "string", + "description": "The regex pattern to match against." + } }, - { - "required": [ - "max" - ] - } - ], - "unevaluatedProperties": false + "required": [ + "value", + "pattern" + ], + "unevaluatedProperties": false + }, + "returnType": { + "const": "boolean" + } }, - "returnType": { - "const": "boolean" - } + "required": [ + "call", + "args" + ], + "unevaluatedProperties": false }, - "required": [ - "call", - "args" - ], - "unevaluatedProperties": false - }, - "numeric": { - "type": "object", - "description": "Checks numeric range constraints.", - "properties": { - "call": { - "const": "numeric" - }, - "args": { - "type": "object", - "properties": { - "value": { - "$ref": "common_types.json#/$defs/DynamicNumber" - }, - "min": { - "type": "number", - "description": "The minimum allowed value." - }, - "max": { - "type": "number", - "description": "The maximum allowed value." - } - }, - "required": [ - "value" - ], - "anyOf": [ - { - "required": [ - "min" - ] + "length": { + "type": "object", + "description": "Checks string length constraints.", + "properties": { + "call": { + "const": "length" + }, + "args": { + "type": "object", + "properties": { + "value": { + "$ref": "common_types.json#/$defs/DynamicString" + }, + "min": { + "type": "integer", + "minimum": 0, + "description": "The minimum allowed length." + }, + "max": { + "type": "integer", + "minimum": 0, + "description": "The maximum allowed length." + } }, - { - "required": [ - "max" - ] - } - ], - "unevaluatedProperties": false + "required": [ + "value" + ], + "anyOf": [ + { + "required": [ + "min" + ] + }, + { + "required": [ + "max" + ] + } + ], + "unevaluatedProperties": false + }, + "returnType": { + "const": "boolean" + } }, - "returnType": { - "const": "boolean" - } + "required": [ + "call", + "args" + ], + "unevaluatedProperties": false }, - "required": [ - "call", - "args" - ], - "unevaluatedProperties": false - }, - "email": { - "type": "object", - "description": "Checks that the value is a valid email address.", - "properties": { - "call": { - "const": "email" - }, - "args": { - "type": "object", - "properties": { - "value": { - "$ref": "common_types.json#/$defs/DynamicString" - } - }, - "required": [ - "value" - ], - "unevaluatedProperties": false + "numeric": { + "type": "object", + "description": "Checks numeric range constraints.", + "properties": { + "call": { + "const": "numeric" + }, + "args": { + "type": "object", + "properties": { + "value": { + "$ref": "common_types.json#/$defs/DynamicNumber" + }, + "min": { + "type": "number", + "description": "The minimum allowed value." + }, + "max": { + "type": "number", + "description": "The maximum allowed value." + } + }, + "required": [ + "value" + ], + "anyOf": [ + { + "required": [ + "min" + ] + }, + { + "required": [ + "max" + ] + } + ], + "unevaluatedProperties": false + }, + "returnType": { + "const": "boolean" + } }, - "returnType": { - "const": "boolean" - } + "required": [ + "call", + "args" + ], + "unevaluatedProperties": false }, - "required": [ - "call", - "args" - ], - "unevaluatedProperties": false - }, - "formatString": { - "type": "object", - "description": "Performs string interpolation of data model values and other functions in the catalog functions list and returns the resulting string. The value string can contain interpolated expressions in the `${expression}` format. Supported expression types include: JSON Pointer paths to the data model (e.g., `${/absolute/path}` or `${relative/path}`), and client-side function calls (e.g., `${now()}`). Function arguments must be named (e.g., `${formatDate(value:${/currentDate}, format:'MM-dd')}`). To include a literal `${` sequence, escape it as `\\${`.", - "properties": { - "call": { - "const": "formatString" - }, - "args": { - "type": "object", - "properties": { - "value": { - "$ref": "common_types.json#/$defs/DynamicString" - } - }, - "required": [ - "value" - ], - "unevaluatedProperties": false + "email": { + "type": "object", + "description": "Checks that the value is a valid email address.", + "properties": { + "call": { + "const": "email" + }, + "args": { + "type": "object", + "properties": { + "value": { + "$ref": "common_types.json#/$defs/DynamicString" + } + }, + "required": [ + "value" + ], + "unevaluatedProperties": false + }, + "returnType": { + "const": "boolean" + } }, - "returnType": { - "const": "string" - } + "required": [ + "call", + "args" + ], + "unevaluatedProperties": false }, - "required": [ - "call", - "args" - ], - "unevaluatedProperties": false - }, - "formatNumber": { - "type": "object", - "description": "Formats a number with the specified grouping and decimal precision.", - "properties": { - "call": { - "const": "formatNumber" - }, - "args": { - "type": "object", - "properties": { - "value": { - "$ref": "common_types.json#/$defs/DynamicNumber", - "description": "The number to format." - }, - "decimals": { - "$ref": "common_types.json#/$defs/DynamicNumber", - "description": "Optional. The number of decimal places to show. Defaults to 0 or 2 depending on locale." + "formatString": { + "type": "object", + "description": "Performs string interpolation of data model values and other functions in the catalog functions list and returns the resulting string. The value string can contain interpolated expressions in the `${expression}` format. Supported expression types include: JSON Pointer paths to the data model (e.g., `${/absolute/path}` or `${relative/path}`), and client-side function calls (e.g., `${now()}`). Function arguments must be named (e.g., `${formatDate(value:${/currentDate}, format:'MM-dd')}`). To include a literal `${` sequence, escape it as `\\${`.", + "properties": { + "call": { + "const": "formatString" + }, + "args": { + "type": "object", + "properties": { + "value": { + "$ref": "common_types.json#/$defs/DynamicString" + } }, - "grouping": { - "$ref": "common_types.json#/$defs/DynamicBoolean", - "description": "Optional. If true, uses locale-specific grouping separators (e.g. '1,000'). If false, returns raw digits (e.g. '1000'). Defaults to true." - } - }, - "required": [ - "value" - ], - "unevaluatedProperties": false + "required": [ + "value" + ], + "unevaluatedProperties": false + }, + "returnType": { + "const": "string" + } }, - "returnType": { - "const": "string" - } + "required": [ + "call", + "args" + ], + "unevaluatedProperties": false }, - "required": [ - "call", - "args" - ], - "unevaluatedProperties": false - }, - "formatCurrency": { - "type": "object", - "description": "Formats a number as a currency string.", - "properties": { - "call": { - "const": "formatCurrency" - }, - "args": { - "type": "object", - "properties": { - "value": { - "$ref": "common_types.json#/$defs/DynamicNumber", - "description": "The monetary amount." - }, - "currency": { - "$ref": "common_types.json#/$defs/DynamicString", - "description": "The ISO 4217 currency code (e.g., 'USD', 'EUR')." - }, - "decimals": { - "$ref": "common_types.json#/$defs/DynamicNumber", - "description": "Optional. The number of decimal places to show. Defaults to 0 or 2 depending on locale." + "formatNumber": { + "type": "object", + "description": "Formats a number with the specified grouping and decimal precision.", + "properties": { + "call": { + "const": "formatNumber" + }, + "args": { + "type": "object", + "properties": { + "value": { + "$ref": "common_types.json#/$defs/DynamicNumber", + "description": "The number to format." + }, + "decimals": { + "$ref": "common_types.json#/$defs/DynamicNumber", + "description": "Optional. The number of decimal places to show. Defaults to 0 or 2 depending on locale." + }, + "grouping": { + "$ref": "common_types.json#/$defs/DynamicBoolean", + "description": "Optional. If true, uses locale-specific grouping separators (e.g. '1,000'). If false, returns raw digits (e.g. '1000'). Defaults to true." + } }, - "grouping": { - "$ref": "common_types.json#/$defs/DynamicBoolean", - "description": "Optional. If true, uses locale-specific grouping separators (e.g. '1,000'). If false, returns raw digits (e.g. '1000'). Defaults to true." - } - }, - "required": [ - "currency", - "value" - ], - "unevaluatedProperties": false + "required": [ + "value" + ], + "unevaluatedProperties": false + }, + "returnType": { + "const": "string" + } }, - "returnType": { - "const": "string" - } + "required": [ + "call", + "args" + ], + "unevaluatedProperties": false }, - "required": [ - "call", - "args" - ], - "unevaluatedProperties": false - }, - "formatDate": { - "type": "object", - "description": "Formats a timestamp into a string using a pattern.", - "properties": { - "call": { - "const": "formatDate" - }, - "args": { - "type": "object", - "properties": { - "value": { - "$ref": "common_types.json#/$defs/DynamicValue", - "description": "The date to format." + "formatCurrency": { + "type": "object", + "description": "Formats a number as a currency string.", + "properties": { + "call": { + "const": "formatCurrency" + }, + "args": { + "type": "object", + "properties": { + "value": { + "$ref": "common_types.json#/$defs/DynamicNumber", + "description": "The monetary amount." + }, + "currency": { + "$ref": "common_types.json#/$defs/DynamicString", + "description": "The ISO 4217 currency code (e.g., 'USD', 'EUR')." + }, + "decimals": { + "$ref": "common_types.json#/$defs/DynamicNumber", + "description": "Optional. The number of decimal places to show. Defaults to 0 or 2 depending on locale." + }, + "grouping": { + "$ref": "common_types.json#/$defs/DynamicBoolean", + "description": "Optional. If true, uses locale-specific grouping separators (e.g. '1,000'). If false, returns raw digits (e.g. '1000'). Defaults to true." + } }, - "format": { - "$ref": "common_types.json#/$defs/DynamicString", - "description": "A Unicode TR35 date pattern string.\n\nToken Reference:\n- Year: 'yy' (26), 'yyyy' (2026)\n- Month: 'M' (1), 'MM' (01), 'MMM' (Jan), 'MMMM' (January)\n- Day: 'd' (1), 'dd' (01), 'E' (Tue), 'EEEE' (Tuesday)\n- Hour (12h): 'h' (1-12), 'hh' (01-12) - requires 'a' for AM/PM\n- Hour (24h): 'H' (0-23), 'HH' (00-23) - Military Time\n- Minute: 'mm' (00-59)\n- Second: 'ss' (00-59)\n- Period: 'a' (AM/PM)\n\nExamples:\n- 'MMM dd, yyyy' -> 'Jan 16, 2026'\n- 'HH:mm' -> '14:30' (Military)\n- 'h:mm a' -> '2:30 PM'\n- 'EEEE, d MMMM' -> 'Friday, 16 January'" - } - }, - "required": [ - "format", - "value" - ], - "unevaluatedProperties": false + "required": [ + "currency", + "value" + ], + "unevaluatedProperties": false + }, + "returnType": { + "const": "string" + } }, - "returnType": { - "const": "string" - } + "required": [ + "call", + "args" + ], + "unevaluatedProperties": false }, - "required": [ - "call", - "args" - ], - "unevaluatedProperties": false - }, - "pluralize": { - "type": "object", - "description": "Returns a localized string based on the Common Locale Data Repository (CLDR) plural category of the count (zero, one, two, few, many, other). Requires an 'other' fallback. For English, just use 'one' and 'other'.", - "properties": { - "call": { - "const": "pluralize" - }, - "args": { - "type": "object", - "properties": { - "value": { - "$ref": "common_types.json#/$defs/DynamicNumber", - "description": "The numeric value used to determine the plural category." - }, - "zero": { - "$ref": "common_types.json#/$defs/DynamicString", - "description": "String for the 'zero' category (e.g., 0 items)." - }, - "one": { - "$ref": "common_types.json#/$defs/DynamicString", - "description": "String for the 'one' category (e.g., 1 item)." - }, - "two": { - "$ref": "common_types.json#/$defs/DynamicString", - "description": "String for the 'two' category (used in Arabic, Welsh, etc.)." - }, - "few": { - "$ref": "common_types.json#/$defs/DynamicString", - "description": "String for the 'few' category (e.g., small groups in Slavic languages)." - }, - "many": { - "$ref": "common_types.json#/$defs/DynamicString", - "description": "String for the 'many' category (e.g., large groups in various languages)." + "formatDate": { + "type": "object", + "description": "Formats a timestamp into a string using a pattern.", + "properties": { + "call": { + "const": "formatDate" + }, + "args": { + "type": "object", + "properties": { + "value": { + "$ref": "common_types.json#/$defs/DynamicValue", + "description": "The date to format." + }, + "format": { + "$ref": "common_types.json#/$defs/DynamicString", + "description": "A Unicode TR35 date pattern string.\n\nToken Reference:\n- Year: 'yy' (26), 'yyyy' (2026)\n- Month: 'M' (1), 'MM' (01), 'MMM' (Jan), 'MMMM' (January)\n- Day: 'd' (1), 'dd' (01), 'E' (Tue), 'EEEE' (Tuesday)\n- Hour (12h): 'h' (1-12), 'hh' (01-12) - requires 'a' for AM/PM\n- Hour (24h): 'H' (0-23), 'HH' (00-23) - Military Time\n- Minute: 'mm' (00-59)\n- Second: 'ss' (00-59)\n- Period: 'a' (AM/PM)\n\nExamples:\n- 'MMM dd, yyyy' -> 'Jan 16, 2026'\n- 'HH:mm' -> '14:30' (Military)\n- 'h:mm a' -> '2:30 PM'\n- 'EEEE, d MMMM' -> 'Friday, 16 January'" + } }, - "other": { - "$ref": "common_types.json#/$defs/DynamicString", - "description": "The default/fallback string (used for general plural cases)." - } - }, - "required": [ - "value", - "other" - ], - "unevaluatedProperties": false + "required": [ + "format", + "value" + ], + "unevaluatedProperties": false + }, + "returnType": { + "const": "string" + } }, - "returnType": { - "const": "string" - } + "required": [ + "call", + "args" + ], + "unevaluatedProperties": false }, - "required": [ - "call", - "args" - ], - "unevaluatedProperties": false - }, - "openUrl": { - "type": "object", - "description": "Opens the specified URL in a browser or handler. This function has no return value.", - "properties": { - "call": { - "const": "openUrl" - }, - "args": { - "type": "object", - "properties": { - "url": { - "type": "string", - "format": "uri", - "description": "The URL to open." - } - }, - "required": [ - "url" - ], - "additionalProperties": false + "pluralize": { + "type": "object", + "description": "Returns a localized string based on the Common Locale Data Repository (CLDR) plural category of the count (zero, one, two, few, many, other). Requires an 'other' fallback. For English, just use 'one' and 'other'.", + "properties": { + "call": { + "const": "pluralize" + }, + "args": { + "type": "object", + "properties": { + "value": { + "$ref": "common_types.json#/$defs/DynamicNumber", + "description": "The numeric value used to determine the plural category." + }, + "zero": { + "$ref": "common_types.json#/$defs/DynamicString", + "description": "String for the 'zero' category (e.g., 0 items)." + }, + "one": { + "$ref": "common_types.json#/$defs/DynamicString", + "description": "String for the 'one' category (e.g., 1 item)." + }, + "two": { + "$ref": "common_types.json#/$defs/DynamicString", + "description": "String for the 'two' category (used in Arabic, Welsh, etc.)." + }, + "few": { + "$ref": "common_types.json#/$defs/DynamicString", + "description": "String for the 'few' category (e.g., small groups in Slavic languages)." + }, + "many": { + "$ref": "common_types.json#/$defs/DynamicString", + "description": "String for the 'many' category (e.g., large groups in various languages)." + }, + "other": { + "$ref": "common_types.json#/$defs/DynamicString", + "description": "The default/fallback string (used for general plural cases)." + } + }, + "required": [ + "value", + "other" + ], + "unevaluatedProperties": false + }, + "returnType": { + "const": "string" + } }, - "returnType": { - "const": "void" - } + "required": [ + "call", + "args" + ], + "unevaluatedProperties": false }, - "required": [ - "call", - "args" - ], - "unevaluatedProperties": false - }, - "and": { - "type": "object", - "description": "Performs a logical AND operation on a list of boolean values.", - "properties": { - "call": { - "const": "and" - }, - "args": { - "type": "object", - "properties": { - "values": { - "type": "array", - "description": "The list of boolean values to evaluate.", - "items": { - "$ref": "common_types.json#/$defs/DynamicBoolean" - }, - "minItems": 2 - } - }, - "required": [ - "values" - ], - "unevaluatedProperties": false + "openUrl": { + "type": "object", + "description": "Opens the specified URL in a browser or handler. This function has no return value.", + "properties": { + "call": { + "const": "openUrl" + }, + "args": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "The URL to open." + } + }, + "required": [ + "url" + ], + "additionalProperties": false + }, + "returnType": { + "const": "void" + } }, - "returnType": { - "const": "boolean" - } + "required": [ + "call", + "args" + ], + "unevaluatedProperties": false }, - "required": [ - "call", - "args" - ], - "unevaluatedProperties": false - }, - "or": { - "type": "object", - "description": "Performs a logical OR operation on a list of boolean values.", - "properties": { - "call": { - "const": "or" - }, - "args": { - "type": "object", - "properties": { - "values": { - "type": "array", - "description": "The list of boolean values to evaluate.", - "items": { - "$ref": "common_types.json#/$defs/DynamicBoolean" - }, - "minItems": 2 - } - }, - "required": [ - "values" - ], - "unevaluatedProperties": false + "and": { + "type": "object", + "description": "Performs a logical AND operation on a list of boolean values.", + "properties": { + "call": { + "const": "and" + }, + "args": { + "type": "object", + "properties": { + "values": { + "type": "array", + "description": "The list of boolean values to evaluate.", + "items": { + "$ref": "common_types.json#/$defs/DynamicBoolean" + }, + "minItems": 2 + } + }, + "required": [ + "values" + ], + "unevaluatedProperties": false + }, + "returnType": { + "const": "boolean" + } }, - "returnType": { - "const": "boolean" - } + "required": [ + "call", + "args" + ], + "unevaluatedProperties": false }, - "required": [ - "call", - "args" - ], - "unevaluatedProperties": false - }, - "not": { - "type": "object", - "description": "Performs a logical NOT operation on a boolean value.", - "properties": { - "call": { - "const": "not" - }, - "args": { - "type": "object", - "properties": { - "value": { - "$ref": "common_types.json#/$defs/DynamicBoolean", - "description": "The boolean value to negate." - } - }, - "required": [ - "value" - ], - "unevaluatedProperties": false + "or": { + "type": "object", + "description": "Performs a logical OR operation on a list of boolean values.", + "properties": { + "call": { + "const": "or" + }, + "args": { + "type": "object", + "properties": { + "values": { + "type": "array", + "description": "The list of boolean values to evaluate.", + "items": { + "$ref": "common_types.json#/$defs/DynamicBoolean" + }, + "minItems": 2 + } + }, + "required": [ + "values" + ], + "unevaluatedProperties": false + }, + "returnType": { + "const": "boolean" + } }, - "returnType": { - "const": "boolean" - } + "required": [ + "call", + "args" + ], + "unevaluatedProperties": false }, - "required": [ - "call", - "args" - ], - "unevaluatedProperties": false - } -}, -"theme": { - "primaryColor": { - "type": "string", - "description": "The primary brand color used for highlights (e.g., primary buttons, active borders). Renderers may generate variants of this color for different contexts. Format: Hexadecimal code (e.g., '#00BFFF').", - "pattern": "^#[0-9a-fA-F]{6}$" - }, - "iconUrl": { - "type": "string", - "format": "uri", - "description": "A URL for an image that identifies the agent or tool associated with the surface." - }, - "agentDisplayName": { - "type": "string", - "description": "Text to be displayed next to the surface to identify the agent or tool that created it." - } -}, -"$defs": { - "CatalogComponentCommon": { - "type": "object", - "properties": { - "weight": { - "type": "number", - "description": "The relative weight of this component within a Row or Column. This is similar to the CSS 'flex-grow' property. Note: this may ONLY be set when the component is a direct descendant of a Row or Column." - } + "not": { + "type": "object", + "description": "Performs a logical NOT operation on a boolean value.", + "properties": { + "call": { + "const": "not" + }, + "args": { + "type": "object", + "properties": { + "value": { + "$ref": "common_types.json#/$defs/DynamicBoolean", + "description": "The boolean value to negate." + } + }, + "required": [ + "value" + ], + "unevaluatedProperties": false + }, + "returnType": { + "const": "boolean" + } + }, + "required": [ + "call", + "args" + ], + "unevaluatedProperties": false } }, - "anyComponent": { - "oneOf": [ - { - "$ref": "#/components/Text" - }, - { - "$ref": "#/components/Image" - }, - { - "$ref": "#/components/Icon" - }, - { - "$ref": "#/components/Video" - }, - { - "$ref": "#/components/AudioPlayer" - }, - { - "$ref": "#/components/Row" - }, - { - "$ref": "#/components/Column" - }, - { - "$ref": "#/components/List" - }, - { - "$ref": "#/components/Card" - }, - { - "$ref": "#/components/Tabs" - }, - { - "$ref": "#/components/Modal" - }, - { - "$ref": "#/components/Divider" - }, - { - "$ref": "#/components/Button" - }, - { - "$ref": "#/components/TextField" - }, - { - "$ref": "#/components/CheckBox" - }, - { - "$ref": "#/components/ChoicePicker" - }, - { - "$ref": "#/components/Slider" - }, - { - "$ref": "#/components/DateTimeInput" - } - ], - "discriminator": { - "propertyName": "component" + "theme": { + "primaryColor": { + "type": "string", + "description": "The primary brand color used for highlights (e.g., primary buttons, active borders). Renderers may generate variants of this color for different contexts. Format: Hexadecimal code (e.g., '#00BFFF').", + "pattern": "^#[0-9a-fA-F]{6}$" + }, + "iconUrl": { + "type": "string", + "format": "uri", + "description": "A URL for an image that identifies the agent or tool associated with the surface." + }, + "agentDisplayName": { + "type": "string", + "description": "Text to be displayed next to the surface to identify the agent or tool that created it." } }, - "anyFunction": { - "oneOf": [ - { - "$ref": "#/functions/required" - }, - { - "$ref": "#/functions/regex" - }, - { - "$ref": "#/functions/length" - }, - { - "$ref": "#/functions/numeric" - }, - { - "$ref": "#/functions/email" - }, - { - "$ref": "#/functions/formatString" - }, - { - "$ref": "#/functions/formatNumber" - }, - { - "$ref": "#/functions/formatCurrency" - }, - { - "$ref": "#/functions/formatDate" - }, - { - "$ref": "#/functions/pluralize" - }, - { - "$ref": "#/functions/openUrl" - }, - { - "$ref": "#/functions/and" - }, - { - "$ref": "#/functions/or" - }, - { - "$ref": "#/functions/not" + "$defs": { + "CatalogComponentCommon": { + "type": "object", + "properties": { + "weight": { + "type": "number", + "description": "The relative weight of this component within a Row or Column. This is similar to the CSS 'flex-grow' property. Note: this may ONLY be set when the component is a direct descendant of a Row or Column." + } } - ] + }, + "anyComponent": { + "oneOf": [ + { + "$ref": "#/components/Text" + }, + { + "$ref": "#/components/Image" + }, + { + "$ref": "#/components/Icon" + }, + { + "$ref": "#/components/Video" + }, + { + "$ref": "#/components/AudioPlayer" + }, + { + "$ref": "#/components/Row" + }, + { + "$ref": "#/components/Column" + }, + { + "$ref": "#/components/List" + }, + { + "$ref": "#/components/Card" + }, + { + "$ref": "#/components/Tabs" + }, + { + "$ref": "#/components/Modal" + }, + { + "$ref": "#/components/Divider" + }, + { + "$ref": "#/components/Button" + }, + { + "$ref": "#/components/TextField" + }, + { + "$ref": "#/components/CheckBox" + }, + { + "$ref": "#/components/ChoicePicker" + }, + { + "$ref": "#/components/Slider" + }, + { + "$ref": "#/components/DateTimeInput" + } + ], + "discriminator": { + "propertyName": "component" + } + }, + "anyFunction": { + "oneOf": [ + { + "$ref": "#/functions/required" + }, + { + "$ref": "#/functions/regex" + }, + { + "$ref": "#/functions/length" + }, + { + "$ref": "#/functions/numeric" + }, + { + "$ref": "#/functions/email" + }, + { + "$ref": "#/functions/formatString" + }, + { + "$ref": "#/functions/formatNumber" + }, + { + "$ref": "#/functions/formatCurrency" + }, + { + "$ref": "#/functions/formatDate" + }, + { + "$ref": "#/functions/pluralize" + }, + { + "$ref": "#/functions/openUrl" + }, + { + "$ref": "#/functions/and" + }, + { + "$ref": "#/functions/or" + }, + { + "$ref": "#/functions/not" + } + ] + } } -} } \ No newline at end of file