# Threadplane — Full Reference See /llms.txt for a compact summary. --- ## API Reference (TypeDoc) ### a2ui [ { "name": "A2uiActionMessage", "kind": "interface", "description": "", "properties": [ { "name": "action", "type": "object", "description": "", "optional": false }, { "name": "metadata", "type": "object", "description": "", "optional": true }, { "name": "version", "type": "string", "description": "", "optional": false } ], "examples": [] }, { "name": "A2uiAudioPlayer", "kind": "interface", "description": "", "properties": [ { "name": "accessibility", "type": "Record", "description": "Accessibility attributes (spec `AccessibilityAttributes`).", "optional": true }, { "name": "catalogId", "type": "string", "description": "Overrides the surface's default catalog for this component.", "optional": true }, { "name": "component", "type": "\"AudioPlayer\"", "description": "", "optional": false }, { "name": "description", "type": "DynamicString", "description": "", "optional": true }, { "name": "id", "type": "string", "description": "", "optional": false }, { "name": "url", "type": "DynamicString", "description": "", "optional": false }, { "name": "weight", "type": "number", "description": "Flex-grow-like weight; only valid as a direct child of Row/Column.", "optional": true } ], "examples": [] }, { "name": "A2uiButton", "kind": "interface", "description": "", "properties": [ { "name": "accessibility", "type": "Record", "description": "Accessibility attributes (spec `AccessibilityAttributes`).", "optional": true }, { "name": "action", "type": "A2uiAction", "description": "", "optional": false }, { "name": "catalogId", "type": "string", "description": "Overrides the surface's default catalog for this component.", "optional": true }, { "name": "child", "type": "string", "description": "", "optional": false }, { "name": "component", "type": "\"Button\"", "description": "", "optional": false }, { "name": "id", "type": "string", "description": "", "optional": false }, { "name": "variant", "type": "\"default\" | \"primary\" | \"borderless\"", "description": "", "optional": true }, { "name": "weight", "type": "number", "description": "Flex-grow-like weight; only valid as a direct child of Row/Column.", "optional": true } ], "examples": [] }, { "name": "A2uiCard", "kind": "interface", "description": "", "properties": [ { "name": "accessibility", "type": "Record", "description": "Accessibility attributes (spec `AccessibilityAttributes`).", "optional": true }, { "name": "catalogId", "type": "string", "description": "Overrides the surface's default catalog for this component.", "optional": true }, { "name": "child", "type": "string", "description": "", "optional": false }, { "name": "component", "type": "\"Card\"", "description": "", "optional": false }, { "name": "id", "type": "string", "description": "", "optional": false }, { "name": "weight", "type": "number", "description": "Flex-grow-like weight; only valid as a direct child of Row/Column.", "optional": true } ], "examples": [] }, { "name": "A2uiCheck", "kind": "interface", "description": "", "properties": [ { "name": "condition", "type": "unknown", "description": "A DynamicBoolean — typically a validator function call (`required`,\n`regex`, `length`, `numeric`, `email`) or a logic combinator. The rule\npasses when the condition resolves to `true`.", "optional": false }, { "name": "message", "type": "string", "description": "Error message displayed when the check fails.", "optional": false } ], "examples": [] }, { "name": "A2uiCheckable", "kind": "interface", "description": "Mixin for input components that support client-side validation checks.", "properties": [ { "name": "checks", "type": "A2uiCheck[]", "description": "", "optional": true } ], "examples": [] }, { "name": "A2uiCheckBox", "kind": "interface", "description": "Mixin for input components that support client-side validation checks.", "properties": [ { "name": "accessibility", "type": "Record", "description": "Accessibility attributes (spec `AccessibilityAttributes`).", "optional": true }, { "name": "catalogId", "type": "string", "description": "Overrides the surface's default catalog for this component.", "optional": true }, { "name": "checks", "type": "A2uiCheck[]", "description": "", "optional": true }, { "name": "component", "type": "\"CheckBox\"", "description": "", "optional": false }, { "name": "id", "type": "string", "description": "", "optional": false }, { "name": "label", "type": "DynamicString", "description": "", "optional": false }, { "name": "value", "type": "DynamicBoolean", "description": "", "optional": false }, { "name": "weight", "type": "number", "description": "Flex-grow-like weight; only valid as a direct child of Row/Column.", "optional": true } ], "examples": [] }, { "name": "A2uiChoicePicker", "kind": "interface", "description": "Mixin for input components that support client-side validation checks.", "properties": [ { "name": "accessibility", "type": "Record", "description": "Accessibility attributes (spec `AccessibilityAttributes`).", "optional": true }, { "name": "catalogId", "type": "string", "description": "Overrides the surface's default catalog for this component.", "optional": true }, { "name": "checks", "type": "A2uiCheck[]", "description": "", "optional": true }, { "name": "component", "type": "\"ChoicePicker\"", "description": "", "optional": false }, { "name": "displayStyle", "type": "\"checkbox\" | \"chips\"", "description": "", "optional": true }, { "name": "filterable", "type": "boolean", "description": "", "optional": true }, { "name": "id", "type": "string", "description": "", "optional": false }, { "name": "label", "type": "DynamicString", "description": "", "optional": true }, { "name": "options", "type": "object[]", "description": "", "optional": false }, { "name": "value", "type": "DynamicStringList", "description": "", "optional": false }, { "name": "variant", "type": "\"mutuallyExclusive\" | \"multipleSelection\"", "description": "", "optional": true }, { "name": "weight", "type": "number", "description": "Flex-grow-like weight; only valid as a direct child of Row/Column.", "optional": true } ], "examples": [] }, { "name": "A2uiClientCapabilities", "kind": "interface", "description": "", "properties": [ { "name": "inlineCatalogs", "type": "unknown[]", "description": "", "optional": true }, { "name": "supportedCatalogIds", "type": "string[]", "description": "", "optional": false } ], "examples": [] }, { "name": "A2uiClientDataModel", "kind": "interface", "description": "", "properties": [ { "name": "surfaces", "type": "Record>", "description": "", "optional": false } ], "examples": [] }, { "name": "A2uiColumn", "kind": "interface", "description": "", "properties": [ { "name": "accessibility", "type": "Record", "description": "Accessibility attributes (spec `AccessibilityAttributes`).", "optional": true }, { "name": "align", "type": "A2uiAlign", "description": "", "optional": true }, { "name": "catalogId", "type": "string", "description": "Overrides the surface's default catalog for this component.", "optional": true }, { "name": "children", "type": "A2uiChildren", "description": "", "optional": false }, { "name": "component", "type": "\"Column\"", "description": "", "optional": false }, { "name": "id", "type": "string", "description": "", "optional": false }, { "name": "justify", "type": "A2uiJustify", "description": "", "optional": true }, { "name": "weight", "type": "number", "description": "Flex-grow-like weight; only valid as a direct child of Row/Column.", "optional": true } ], "examples": [] }, { "name": "A2uiComponentBase", "kind": "interface", "description": "", "properties": [ { "name": "accessibility", "type": "Record", "description": "Accessibility attributes (spec `AccessibilityAttributes`).", "optional": true }, { "name": "catalogId", "type": "string", "description": "Overrides the surface's default catalog for this component.", "optional": true }, { "name": "component", "type": "string", "description": "", "optional": false }, { "name": "id", "type": "string", "description": "", "optional": false }, { "name": "weight", "type": "number", "description": "Flex-grow-like weight; only valid as a direct child of Row/Column.", "optional": true } ], "examples": [] }, { "name": "A2uiCreateSurface", "kind": "interface", "description": "", "properties": [ { "name": "catalogId", "type": "string", "description": "", "optional": false }, { "name": "sendDataModel", "type": "boolean", "description": "When true, the client attaches the surface's full data model to every outbound message.", "optional": true }, { "name": "surfaceId", "type": "string", "description": "", "optional": false }, { "name": "theme", "type": "A2uiTheme", "description": "", "optional": true } ], "examples": [] }, { "name": "A2uiDateTimeInput", "kind": "interface", "description": "Mixin for input components that support client-side validation checks.", "properties": [ { "name": "accessibility", "type": "Record", "description": "Accessibility attributes (spec `AccessibilityAttributes`).", "optional": true }, { "name": "catalogId", "type": "string", "description": "Overrides the surface's default catalog for this component.", "optional": true }, { "name": "checks", "type": "A2uiCheck[]", "description": "", "optional": true }, { "name": "component", "type": "\"DateTimeInput\"", "description": "", "optional": false }, { "name": "enableDate", "type": "boolean", "description": "", "optional": true }, { "name": "enableTime", "type": "boolean", "description": "", "optional": true }, { "name": "id", "type": "string", "description": "", "optional": false }, { "name": "label", "type": "DynamicString", "description": "", "optional": true }, { "name": "max", "type": "DynamicString", "description": "", "optional": true }, { "name": "min", "type": "DynamicString", "description": "", "optional": true }, { "name": "value", "type": "DynamicString", "description": "ISO 8601 value.", "optional": false }, { "name": "weight", "type": "number", "description": "Flex-grow-like weight; only valid as a direct child of Row/Column.", "optional": true } ], "examples": [] }, { "name": "A2uiDeleteSurface", "kind": "interface", "description": "", "properties": [ { "name": "surfaceId", "type": "string", "description": "", "optional": false } ], "examples": [] }, { "name": "A2uiDivider", "kind": "interface", "description": "", "properties": [ { "name": "accessibility", "type": "Record", "description": "Accessibility attributes (spec `AccessibilityAttributes`).", "optional": true }, { "name": "axis", "type": "\"vertical\" | \"horizontal\"", "description": "", "optional": true }, { "name": "catalogId", "type": "string", "description": "Overrides the surface's default catalog for this component.", "optional": true }, { "name": "component", "type": "\"Divider\"", "description": "", "optional": false }, { "name": "id", "type": "string", "description": "", "optional": false }, { "name": "weight", "type": "number", "description": "Flex-grow-like weight; only valid as a direct child of Row/Column.", "optional": true } ], "examples": [] }, { "name": "A2uiErrorMessage", "kind": "interface", "description": "", "properties": [ { "name": "error", "type": "object", "description": "", "optional": false }, { "name": "version", "type": "string", "description": "", "optional": false } ], "examples": [] }, { "name": "A2uiEventAction", "kind": "interface", "description": "Dispatches a named event (with optional context) to the agent.", "properties": [ { "name": "event", "type": "object", "description": "", "optional": false } ], "examples": [] }, { "name": "A2uiFunctionAction", "kind": "interface", "description": "Executes a client-side function locally (e.g. `openUrl`).", "properties": [ { "name": "functionCall", "type": "A2uiFunctionCall", "description": "", "optional": false } ], "examples": [] }, { "name": "A2uiFunctionCall", "kind": "interface", "description": "Client-side function invocation (e.g. `formatString`, `required`).", "properties": [ { "name": "args", "type": "Record", "description": "", "optional": true }, { "name": "call", "type": "string", "description": "", "optional": false }, { "name": "returnType", "type": "\"string\" | \"number\" | \"boolean\" | \"object\" | \"array\" | \"any\" | \"void\"", "description": "", "optional": true } ], "examples": [] }, { "name": "A2uiFunctionContext", "kind": "interface", "description": "Execution context handed to every function implementation.", "properties": [ { "name": "locale", "type": "string", "description": "BCP 47 locale for Intl-based formatting; host default when undefined.", "optional": true } ], "methods": [ { "name": "resolveArg", "signature": "resolveArg(value: unknown): unknown", "description": "Resolve a (possibly dynamic) argument value — bare literal, `{ path }`\nbinding, or nested `{ call }` — against the current data model/scope.", "params": [ { "name": "value", "type": "unknown", "description": "", "optional": false } ] } ], "examples": [] }, { "name": "A2uiIcon", "kind": "interface", "description": "", "properties": [ { "name": "accessibility", "type": "Record", "description": "Accessibility attributes (spec `AccessibilityAttributes`).", "optional": true }, { "name": "catalogId", "type": "string", "description": "Overrides the surface's default catalog for this component.", "optional": true }, { "name": "component", "type": "\"Icon\"", "description": "", "optional": false }, { "name": "id", "type": "string", "description": "", "optional": false }, { "name": "name", "type": "DynamicString | object", "description": "", "optional": false }, { "name": "weight", "type": "number", "description": "Flex-grow-like weight; only valid as a direct child of Row/Column.", "optional": true } ], "examples": [] }, { "name": "A2uiImage", "kind": "interface", "description": "", "properties": [ { "name": "accessibility", "type": "Record", "description": "Accessibility attributes (spec `AccessibilityAttributes`).", "optional": true }, { "name": "catalogId", "type": "string", "description": "Overrides the surface's default catalog for this component.", "optional": true }, { "name": "component", "type": "\"Image\"", "description": "", "optional": false }, { "name": "description", "type": "DynamicString", "description": "", "optional": true }, { "name": "fit", "type": "\"contain\" | \"cover\" | \"fill\" | \"none\" | \"scaleDown\"", "description": "", "optional": true }, { "name": "id", "type": "string", "description": "", "optional": false }, { "name": "url", "type": "DynamicString", "description": "", "optional": false }, { "name": "variant", "type": "\"icon\" | \"avatar\" | \"smallFeature\" | \"mediumFeature\" | \"largeFeature\" | \"header\"", "description": "", "optional": true }, { "name": "weight", "type": "number", "description": "Flex-grow-like weight; only valid as a direct child of Row/Column.", "optional": true } ], "examples": [] }, { "name": "A2uiList", "kind": "interface", "description": "", "properties": [ { "name": "accessibility", "type": "Record", "description": "Accessibility attributes (spec `AccessibilityAttributes`).", "optional": true }, { "name": "align", "type": "A2uiAlign", "description": "", "optional": true }, { "name": "catalogId", "type": "string", "description": "Overrides the surface's default catalog for this component.", "optional": true }, { "name": "children", "type": "A2uiChildren", "description": "", "optional": false }, { "name": "component", "type": "\"List\"", "description": "", "optional": false }, { "name": "direction", "type": "\"vertical\" | \"horizontal\"", "description": "", "optional": true }, { "name": "id", "type": "string", "description": "", "optional": false }, { "name": "weight", "type": "number", "description": "Flex-grow-like weight; only valid as a direct child of Row/Column.", "optional": true } ], "examples": [] }, { "name": "A2uiMessageParser", "kind": "interface", "description": "", "properties": [], "methods": [ { "name": "push", "signature": "push(chunk: string): A2uiMessage[]", "description": "Push a JSONL stream chunk and return every complete A2UI envelope parsed from it.", "params": [ { "name": "chunk", "type": "string", "description": "", "optional": false } ] } ], "examples": [] }, { "name": "A2uiModal", "kind": "interface", "description": "", "properties": [ { "name": "accessibility", "type": "Record", "description": "Accessibility attributes (spec `AccessibilityAttributes`).", "optional": true }, { "name": "catalogId", "type": "string", "description": "Overrides the surface's default catalog for this component.", "optional": true }, { "name": "component", "type": "\"Modal\"", "description": "", "optional": false }, { "name": "content", "type": "string", "description": "", "optional": false }, { "name": "id", "type": "string", "description": "", "optional": false }, { "name": "trigger", "type": "string", "description": "", "optional": false }, { "name": "weight", "type": "number", "description": "Flex-grow-like weight; only valid as a direct child of Row/Column.", "optional": true } ], "examples": [] }, { "name": "A2uiPathRef", "kind": "interface", "description": "JSON-pointer data-model binding. Absolute (`/a/b`) or relative inside templates.", "properties": [ { "name": "path", "type": "string", "description": "", "optional": false } ], "examples": [] }, { "name": "A2uiRow", "kind": "interface", "description": "", "properties": [ { "name": "accessibility", "type": "Record", "description": "Accessibility attributes (spec `AccessibilityAttributes`).", "optional": true }, { "name": "align", "type": "A2uiAlign", "description": "", "optional": true }, { "name": "catalogId", "type": "string", "description": "Overrides the surface's default catalog for this component.", "optional": true }, { "name": "children", "type": "A2uiChildren", "description": "", "optional": false }, { "name": "component", "type": "\"Row\"", "description": "", "optional": false }, { "name": "id", "type": "string", "description": "", "optional": false }, { "name": "justify", "type": "A2uiJustify", "description": "", "optional": true }, { "name": "weight", "type": "number", "description": "Flex-grow-like weight; only valid as a direct child of Row/Column.", "optional": true } ], "examples": [] }, { "name": "A2uiScope", "kind": "interface", "description": "", "properties": [ { "name": "basePath", "type": "string", "description": "", "optional": false }, { "name": "item", "type": "unknown", "description": "", "optional": false } ], "examples": [] }, { "name": "A2uiSlider", "kind": "interface", "description": "Mixin for input components that support client-side validation checks.", "properties": [ { "name": "accessibility", "type": "Record", "description": "Accessibility attributes (spec `AccessibilityAttributes`).", "optional": true }, { "name": "catalogId", "type": "string", "description": "Overrides the surface's default catalog for this component.", "optional": true }, { "name": "checks", "type": "A2uiCheck[]", "description": "", "optional": true }, { "name": "component", "type": "\"Slider\"", "description": "", "optional": false }, { "name": "id", "type": "string", "description": "", "optional": false }, { "name": "label", "type": "DynamicString", "description": "", "optional": true }, { "name": "max", "type": "number", "description": "", "optional": false }, { "name": "min", "type": "number", "description": "", "optional": true }, { "name": "value", "type": "DynamicNumber", "description": "", "optional": false }, { "name": "weight", "type": "number", "description": "Flex-grow-like weight; only valid as a direct child of Row/Column.", "optional": true } ], "examples": [] }, { "name": "A2uiSurface", "kind": "interface", "description": "", "properties": [ { "name": "catalogId", "type": "string", "description": "", "optional": false }, { "name": "components", "type": "Map", "description": "", "optional": false }, { "name": "dataModel", "type": "Record", "description": "", "optional": false }, { "name": "sendDataModel", "type": "boolean", "description": "", "optional": true }, { "name": "surfaceId", "type": "string", "description": "", "optional": false }, { "name": "theme", "type": "A2uiTheme", "description": "", "optional": true } ], "examples": [] }, { "name": "A2uiTabs", "kind": "interface", "description": "", "properties": [ { "name": "accessibility", "type": "Record", "description": "Accessibility attributes (spec `AccessibilityAttributes`).", "optional": true }, { "name": "catalogId", "type": "string", "description": "Overrides the surface's default catalog for this component.", "optional": true }, { "name": "component", "type": "\"Tabs\"", "description": "", "optional": false }, { "name": "id", "type": "string", "description": "", "optional": false }, { "name": "tabs", "type": "object[]", "description": "", "optional": false }, { "name": "weight", "type": "number", "description": "Flex-grow-like weight; only valid as a direct child of Row/Column.", "optional": true } ], "examples": [] }, { "name": "A2uiText", "kind": "interface", "description": "", "properties": [ { "name": "accessibility", "type": "Record", "description": "Accessibility attributes (spec `AccessibilityAttributes`).", "optional": true }, { "name": "catalogId", "type": "string", "description": "Overrides the surface's default catalog for this component.", "optional": true }, { "name": "component", "type": "\"Text\"", "description": "", "optional": false }, { "name": "id", "type": "string", "description": "", "optional": false }, { "name": "text", "type": "DynamicString", "description": "", "optional": false }, { "name": "variant", "type": "\"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"caption\" | \"body\"", "description": "", "optional": true }, { "name": "weight", "type": "number", "description": "Flex-grow-like weight; only valid as a direct child of Row/Column.", "optional": true } ], "examples": [] }, { "name": "A2uiTextField", "kind": "interface", "description": "Mixin for input components that support client-side validation checks.", "properties": [ { "name": "accessibility", "type": "Record", "description": "Accessibility attributes (spec `AccessibilityAttributes`).", "optional": true }, { "name": "catalogId", "type": "string", "description": "Overrides the surface's default catalog for this component.", "optional": true }, { "name": "checks", "type": "A2uiCheck[]", "description": "", "optional": true }, { "name": "component", "type": "\"TextField\"", "description": "", "optional": false }, { "name": "id", "type": "string", "description": "", "optional": false }, { "name": "label", "type": "DynamicString", "description": "", "optional": false }, { "name": "validationRegexp", "type": "string", "description": "", "optional": true }, { "name": "value", "type": "DynamicString", "description": "", "optional": true }, { "name": "variant", "type": "\"number\" | \"shortText\" | \"longText\" | \"obscured\"", "description": "", "optional": true }, { "name": "weight", "type": "number", "description": "Flex-grow-like weight; only valid as a direct child of Row/Column.", "optional": true } ], "examples": [] }, { "name": "A2uiTheme", "kind": "interface", "description": "", "properties": [ { "name": "agentDisplayName", "type": "string", "description": "", "optional": true }, { "name": "iconUrl", "type": "string", "description": "", "optional": true }, { "name": "primaryColor", "type": "string", "description": "", "optional": true } ], "examples": [] }, { "name": "A2uiUpdateComponents", "kind": "interface", "description": "", "properties": [ { "name": "components", "type": "A2uiComponent[]", "description": "", "optional": false }, { "name": "surfaceId", "type": "string", "description": "", "optional": false } ], "examples": [] }, { "name": "A2uiUpdateDataModel", "kind": "interface", "description": "", "properties": [ { "name": "path", "type": "string", "description": "JSON pointer into the data model. Omitted or `/` targets the whole model.", "optional": true }, { "name": "surfaceId", "type": "string", "description": "", "optional": false }, { "name": "value", "type": "unknown", "description": "Replacement value at `path`. Omitted value deletes the key at `path`.", "optional": true } ], "examples": [] }, { "name": "A2uiVideo", "kind": "interface", "description": "", "properties": [ { "name": "accessibility", "type": "Record", "description": "Accessibility attributes (spec `AccessibilityAttributes`).", "optional": true }, { "name": "catalogId", "type": "string", "description": "Overrides the surface's default catalog for this component.", "optional": true }, { "name": "component", "type": "\"Video\"", "description": "", "optional": false }, { "name": "id", "type": "string", "description": "", "optional": false }, { "name": "url", "type": "DynamicString", "description": "", "optional": false }, { "name": "weight", "type": "number", "description": "Flex-grow-like weight; only valid as a direct child of Row/Column.", "optional": true } ], "examples": [] }, { "name": "A2uiAction", "kind": "type", "description": "", "signature": "A2uiEventAction | A2uiFunctionAction", "examples": [] }, { "name": "A2uiCatalogComponent", "kind": "type", "description": "Union of the basic-catalog component shapes.", "signature": "A2uiText | A2uiImage | A2uiIcon | A2uiVideo | A2uiAudioPlayer | A2uiRow | A2uiColumn | A2uiList | A2uiCard | A2uiTabs | A2uiModal | A2uiDivider | A2uiButton | A2uiCheckBox | A2uiTextField | A2uiDateTimeInput | A2uiChoicePicker | A2uiSlider", "examples": [] }, { "name": "A2uiChildren", "kind": "type", "description": "Static child-id list, or a template stamped per element of a data-model list.", "signature": "string[] | object", "examples": [] }, { "name": "A2uiComponent", "kind": "type", "description": "Any component, including non-basic-catalog types. Renderers treat unknown\n`component` strings as unrenderable and fall back gracefully.", "signature": "A2uiCatalogComponent | A2uiComponentBase & Record", "examples": [] }, { "name": "A2uiFunctionImpl", "kind": "type", "description": "", "signature": "(args: Record, ctx: A2uiFunctionContext) => unknown", "examples": [] }, { "name": "A2uiFunctionRegistry", "kind": "type", "description": "", "signature": "ReadonlyMap", "examples": [] }, { "name": "A2uiMessage", "kind": "type", "description": "", "signature": "A2uiEnvelopeBase & ({ createSurface: A2uiCreateSurface } | { updateComponents: A2uiUpdateComponents } | { updateDataModel: A2uiUpdateDataModel } | { deleteSurface: A2uiDeleteSurface })", "examples": [] }, { "name": "DynamicBoolean", "kind": "type", "description": "", "signature": "boolean | A2uiPathRef | A2uiFunctionCall", "examples": [] }, { "name": "DynamicNumber", "kind": "type", "description": "", "signature": "number | A2uiPathRef | A2uiFunctionCall", "examples": [] }, { "name": "DynamicString", "kind": "type", "description": "", "signature": "string | A2uiPathRef | A2uiFunctionCall", "examples": [] }, { "name": "DynamicStringList", "kind": "type", "description": "", "signature": "string[] | A2uiPathRef | A2uiFunctionCall", "examples": [] }, { "name": "DynamicValue", "kind": "type", "description": "Any dynamic value position where the concrete type is component-defined.", "signature": "unknown", "examples": [] }, { "name": "A2UI_BASIC_CATALOG_ID", "kind": "const", "description": "Catalog id of the standard A2UI basic component catalog.", "signature": "\"https://a2ui.org/specification/v0_9/catalogs/basic/catalog.json\"", "examples": [] }, { "name": "A2UI_MIME_TYPE", "kind": "const", "description": "MIME type for A2UI payloads, standardized in the v0.9.1 release.", "signature": "\"application/a2ui+json\"", "examples": [] }, { "name": "A2UI_WIRE_VERSION", "kind": "const", "description": "Wire version stamped on every A2UI v0.9-family envelope.", "signature": "\"v0.9\"", "examples": [] }, { "name": "createA2uiFunctionRegistry", "kind": "function", "description": "Creates an A2UI client-side function registry containing the standard\nbasic-catalog functions (`formatString`, `formatNumber`, `formatCurrency`,\n`formatDate`, `pluralize`, `and`, `or`, `not`), optionally extended or\noverridden with custom implementations.", "signature": "createA2uiFunctionRegistry(overrides: Record): A2uiFunctionRegistry", "params": [ { "name": "overrides", "type": "Record", "description": "", "optional": true } ], "returns": { "type": "A2uiFunctionRegistry", "description": "" }, "examples": [ "```ts\nconst registry = createA2uiFunctionRegistry();\nresolveDynamic({ call: 'formatCurrency', args: { value: 42, currency: 'USD' } }, {}, undefined, registry);\n```" ] }, { "name": "createA2uiMessageParser", "kind": "function", "description": "Creates a stateful parser for newline-delimited A2UI v0.9 message streams.\n\nThe parser buffers incomplete lines, skips malformed JSON, and returns only\nrecognized A2UI envelopes: `createSurface`, `updateComponents`,\n`updateDataModel`, and `deleteSurface`. Unknown envelope keys (e.g. future\nv1.0 messages) are skipped rather than treated as errors. A missing\n`version` field defaults to `v0.9`.", "signature": "createA2uiMessageParser(): A2uiMessageParser", "params": [], "returns": { "type": "A2uiMessageParser", "description": "" }, "examples": [ "```ts\nconst parser = createA2uiMessageParser();\nconst messages = parser.push(\n '{\"version\":\"v0.9\",\"createSurface\":{\"surfaceId\":\"s1\",\"catalogId\":\"basic\"}}\\n',\n);\n```" ] }, { "name": "deleteByPointer", "kind": "function", "description": "Returns a new model with the key at `pointer` removed.\n\nEmpty string and `/` clear the whole model. Missing parent paths leave the\ninput model unchanged.", "signature": "deleteByPointer(model: Record, pointer: string): Record", "params": [ { "name": "model", "type": "Record", "description": "", "optional": false }, { "name": "pointer", "type": "string", "description": "", "optional": false } ], "returns": { "type": "Record", "description": "" }, "examples": [ "```ts\nconst next = deleteByPointer({ user: { name: 'Ada' } }, '/user/name');\n```" ] }, { "name": "getByPointer", "kind": "function", "description": "Reads a value from a model using the package's simple slash-separated pointer syntax.\n\nEmpty string and `/` target the root. Segments are not RFC 6901-unescaped;\nnormalize keys before using pointers that would require `~0` or `~1`.", "signature": "getByPointer(model: Record, pointer: string): unknown", "params": [ { "name": "model", "type": "Record", "description": "", "optional": false }, { "name": "pointer", "type": "string", "description": "", "optional": false } ], "returns": { "type": "unknown", "description": "" }, "examples": [ "```ts\ngetByPointer({ user: { name: 'Ada' } }, '/user/name'); // 'Ada'\n```" ] }, { "name": "isFunctionCall", "kind": "function", "description": "Returns true when `value` is an A2UI client-side function call.", "signature": "isFunctionCall(value: unknown): value is { args?: Record; call: string }", "params": [ { "name": "value", "type": "unknown", "description": "", "optional": false } ], "returns": { "type": "value is { args?: Record; call: string }", "description": "" }, "examples": [] }, { "name": "isPathRef", "kind": "function", "description": "Returns true when `value` is an A2UI dynamic path reference.", "signature": "isPathRef(value: unknown): value is { path: string }", "params": [ { "name": "value", "type": "unknown", "description": "", "optional": false } ], "returns": { "type": "value is { path: string }", "description": "" }, "examples": [] }, { "name": "resolveDynamic", "kind": "function", "description": "Resolves an A2UI v0.9 dynamic value against a client data model.\n\nBare literals (strings, numbers, booleans) pass through unchanged, `{ path }`\nreferences read from the model by JSON-pointer path, arrays resolve\nelement-wise, and client-side function calls (`{ call }`) execute through the\nprovided function registry — argument values resolve recursively, so args may\nthemselves be bindings or nested calls. Without a registry (or for unknown\nfunction names) calls resolve to `undefined`. Unrecognized plain objects pass\nthrough unchanged.", "signature": "resolveDynamic(value: unknown, model: Record, scope: A2uiScope, registry: A2uiFunctionRegistry): unknown", "params": [ { "name": "value", "type": "unknown", "description": "", "optional": false }, { "name": "model", "type": "Record", "description": "", "optional": false }, { "name": "scope", "type": "A2uiScope", "description": "", "optional": true }, { "name": "registry", "type": "A2uiFunctionRegistry", "description": "", "optional": true } ], "returns": { "type": "unknown", "description": "" }, "examples": [ "```ts\nconst model = { customer: { name: 'Ada' } };\nresolveDynamic({ path: '/customer/name' }, model); // 'Ada'\nresolveDynamic('Checkout', model); // 'Checkout'\nresolveDynamic(\n { call: 'formatString', args: { value: 'Hi ${/customer/name}' } },\n model, undefined, createA2uiFunctionRegistry(),\n); // 'Hi Ada'\n```" ] }, { "name": "setByPointer", "kind": "function", "description": "Returns a new model with `value` written at `pointer`.\n\nThe input model is not mutated. Missing intermediate objects are created.", "signature": "setByPointer(model: Record, pointer: string, value: unknown): Record", "params": [ { "name": "model", "type": "Record", "description": "", "optional": false }, { "name": "pointer", "type": "string", "description": "", "optional": false }, { "name": "value", "type": "unknown", "description": "", "optional": false } ], "returns": { "type": "Record", "description": "" }, "examples": [ "```ts\nconst next = setByPointer({}, '/user/name', 'Ada');\n```" ] } ] ### ag-ui [ { "name": "FakeAgent", "kind": "class", "description": "In-process AG-UI agent that emits a canned streaming response.\n\nUse for offline demos and tests where a real backend isn't available.\nEchoes a fixed assistant reply token-by-token with realistic timing.\n\nNOT for production use.", "params": [ { "name": "opts", "type": "object", "description": "", "optional": true } ], "examples": [], "properties": [ { "name": "agentId", "type": "string", "description": "", "optional": true }, { "name": "description", "type": "string", "description": "", "optional": false }, { "name": "isRunning", "type": "boolean", "description": "", "optional": false }, { "name": "messages", "type": "object | object | object | object | object | object | object[]", "description": "", "optional": false }, { "name": "pendingInterrupts", "type": "object[]", "description": "Interrupts emitted by the most recent run that have not yet been resolved.\n Populated when RUN_FINISHED arrives with outcome.type === \"interrupt\".\n Cleared when a subsequent run completes successfully.", "optional": false }, { "name": "state", "type": "any", "description": "", "optional": false }, { "name": "subscribers", "type": "AgentSubscriber[]", "description": "", "optional": false }, { "name": "threadId", "type": "string", "description": "", "optional": false } ], "methods": [ { "name": "abortRun", "signature": "abortRun(): void", "description": "", "params": [] }, { "name": "addMessage", "signature": "addMessage(message: object | object | object | object | object | object | object): void", "description": "", "params": [ { "name": "message", "type": "object | object | object | object | object | object | object", "description": "", "optional": false } ] }, { "name": "addMessages", "signature": "addMessages(messages: object | object | object | object | object | object | object[]): void", "description": "", "params": [ { "name": "messages", "type": "object | object | object | object | object | object | object[]", "description": "", "optional": false } ] }, { "name": "apply", "signature": "apply(input: object, events$: Observable>, subscribers: AgentSubscriber[]): Observable", "description": "", "params": [ { "name": "input", "type": "object", "description": "", "optional": false }, { "name": "events$", "type": "Observable>", "description": "", "optional": false }, { "name": "subscribers", "type": "AgentSubscriber[]", "description": "", "optional": false } ] }, { "name": "clone", "signature": "clone(): any", "description": "", "params": [] }, { "name": "connect", "signature": "connect(input: object): Observable>", "description": "", "params": [ { "name": "input", "type": "object", "description": "", "optional": false } ] }, { "name": "connectAgent", "signature": "connectAgent(parameters: RunAgentParameters<>, subscriber: AgentSubscriber): Promise", "description": "", "params": [ { "name": "parameters", "type": "RunAgentParameters<>", "description": "", "optional": true }, { "name": "subscriber", "type": "AgentSubscriber", "description": "", "optional": true } ] }, { "name": "detachActiveRun", "signature": "detachActiveRun(): Promise", "description": "", "params": [] }, { "name": "getCapabilities", "signature": "getCapabilities(): Promise", "description": "Returns the agent's current capabilities.\nOptional — subclasses implement this to advertise what they support.", "params": [] }, { "name": "legacy_to_be_removed_runAgentBridged", "signature": "legacy_to_be_removed_runAgentBridged(config: RunAgentParameters<>): Observable", "description": "", "params": [ { "name": "config", "type": "RunAgentParameters<>", "description": "", "optional": true } ] }, { "name": "onError", "signature": "onError(input: object, error: Error, subscribers: AgentSubscriber[]): Observable", "description": "", "params": [ { "name": "input", "type": "object", "description": "", "optional": false }, { "name": "error", "type": "Error", "description": "", "optional": false }, { "name": "subscribers", "type": "AgentSubscriber[]", "description": "", "optional": false } ] }, { "name": "onFinalize", "signature": "onFinalize(input: object, subscribers: AgentSubscriber[]): Promise", "description": "", "params": [ { "name": "input", "type": "object", "description": "", "optional": false }, { "name": "subscribers", "type": "AgentSubscriber[]", "description": "", "optional": false } ] }, { "name": "onInitialize", "signature": "onInitialize(input: object, subscribers: AgentSubscriber[]): Promise", "description": "", "params": [ { "name": "input", "type": "object", "description": "", "optional": false }, { "name": "subscribers", "type": "AgentSubscriber[]", "description": "", "optional": false } ] }, { "name": "prepareRunAgentInput", "signature": "prepareRunAgentInput(parameters: RunAgentParameters<>): object", "description": "", "params": [ { "name": "parameters", "type": "RunAgentParameters<>", "description": "", "optional": true } ] }, { "name": "processApplyEvents", "signature": "processApplyEvents(input: object, events$: Observable, subscribers: AgentSubscriber[]): Observable", "description": "", "params": [ { "name": "input", "type": "object", "description": "", "optional": false }, { "name": "events$", "type": "Observable", "description": "", "optional": false }, { "name": "subscribers", "type": "AgentSubscriber[]", "description": "", "optional": false } ] }, { "name": "run", "signature": "run(input: object): Observable>", "description": "", "params": [ { "name": "input", "type": "object", "description": "", "optional": false } ] }, { "name": "runAgent", "signature": "runAgent(parameters: RunAgentParameters<>, subscriber: AgentSubscriber): Promise", "description": "", "params": [ { "name": "parameters", "type": "RunAgentParameters<>", "description": "", "optional": true }, { "name": "subscriber", "type": "AgentSubscriber", "description": "", "optional": true } ] }, { "name": "setMessages", "signature": "setMessages(messages: object | object | object | object | object | object | object[]): void", "description": "", "params": [ { "name": "messages", "type": "object | object | object | object | object | object | object[]", "description": "", "optional": false } ] }, { "name": "setState", "signature": "setState(state: any): void", "description": "", "params": [ { "name": "state", "type": "any", "description": "", "optional": false } ] }, { "name": "subscribe", "signature": "subscribe(subscriber: AgentSubscriber): object", "description": "", "params": [ { "name": "subscriber", "type": "AgentSubscriber", "description": "", "optional": false } ] }, { "name": "use", "signature": "use(...middlewares: Middleware<> | MiddlewareFunction[]): this", "description": "", "params": [ { "name": "...middlewares", "type": "Middleware<> | MiddlewareFunction[]", "description": "", "optional": false } ] } ] }, { "name": "AgentConfig", "kind": "interface", "description": "Connection options for the AG-UI agent provider, passed to provideAgent.\nMirrors the underlying `HttpAgent` config (`@ag-ui/client`) plus an optional\ntelemetry sink.", "properties": [ { "name": "agentId", "type": "string", "description": "Agent identifier, when the endpoint serves more than one agent.", "optional": true }, { "name": "headers", "type": "Record", "description": "Extra HTTP headers sent with every request (e.g. auth tokens).", "optional": true }, { "name": "telemetry", "type": "false | AgentRuntimeTelemetrySink", "description": "Omit to enable automatic development-only collection. Set `false` to disable.\nAn app-owned sink replaces the automatic destination and receives the\nexisting runtime lifecycle callbacks.", "optional": true }, { "name": "threadId", "type": "string", "description": "Thread to connect to on start; omit to begin a fresh conversation.", "optional": true }, { "name": "url", "type": "string", "description": "Endpoint URL of the AG-UI HTTP agent (e.g. `'http://localhost:8000/agent'`). Required.", "optional": false } ], "examples": [] }, { "name": "AgUiAgent", "kind": "interface", "description": "The neutral Agent contract, widened with the AG-UI adapter's\n`customEvents` signal (the chat composition feature-detects it to enable\nlive a2ui streaming), the browser client-tools capability, and concrete\nACTIVITY-backed `subagents`.\nMirrors langgraph's LangGraphAgent extension where the protocol surfaces\noverlap.", "properties": [ { "name": "clientTools", "type": "ClientToolsCapability", "description": "Optional: client-declared, client-executed tools (see ClientToolsCapability).", "optional": false }, { "name": "customEvents", "type": "Signal", "description": "", "optional": false }, { "name": "error", "type": "Signal | undefined>", "description": "", "optional": false }, { "name": "events$", "type": "Observable", "description": "", "optional": false }, { "name": "interrupt", "type": "Signal", "description": "", "optional": true }, { "name": "isLoading", "type": "Signal", "description": "", "optional": false }, { "name": "messages", "type": "Signal", "description": "", "optional": false }, { "name": "regenerate", "type": "(assistantMessageIndex: number) => Promise", "description": "Discards the assistant message at the given index AND all messages after\nit, then re-runs the agent against the trimmed conversation tail. The\npreceding user message (at index - 1) is preserved and re-submitted as\nthe agent's input. No new user message is added to the history.\n\nThrows if the message at `index` is not 'assistant' role, or if the\nagent is currently loading another response.", "optional": false }, { "name": "retry", "type": "() => Promise", "description": "Re-run the last submitted input after a failure. No-op if a run is already\n in flight or there is nothing to retry. Clears `error` and sets loading.", "optional": false }, { "name": "state", "type": "Signal", "description": "", "optional": false }, { "name": "status", "type": "Signal", "description": "", "optional": false }, { "name": "stop", "type": "() => Promise", "description": "", "optional": false }, { "name": "subagents", "type": "Signal>", "description": "Subagent activities (activityType==='subagent') projected to the neutral\n Subagent contract, keyed by messageId. Narrows the base Agent's optional\n `subagents?` to a concrete signal for AG-UI consumers.", "optional": false }, { "name": "submit", "type": "(input: AgentSubmitInput, opts: AgentSubmitOptions) => Promise", "description": "", "optional": false }, { "name": "toolCalls", "type": "Signal", "description": "", "optional": false } ], "examples": [] }, { "name": "CustomStreamEvent", "kind": "interface", "description": "A custom event surfaced to consumers via the agent's `customEvents` signal.\nMirrors the LangGraph adapter's CustomStreamEvent shape so the chat\na2ui partial-args bridge consumes both transports identically.", "properties": [ { "name": "data", "type": "unknown", "description": "Arbitrary payload from the backend (JSON-string values are parsed).", "optional": false }, { "name": "name", "type": "string", "description": "Event name set by the backend (e.g. 'a2ui-partial', 'state_update').", "optional": false } ], "examples": [] }, { "name": "ToAgentOptions", "kind": "interface", "description": "", "properties": [ { "name": "a2uiClientCapabilities", "type": "object", "description": "A2UI client capabilities (catalog negotiation) to advertise to the agent.\nWhen set, they are seeded once into the AG-UI shared state under the\n`a2ui_client_capabilities` key, so every RunAgentInput.state carries them.\nUse `@threadplane/chat`'s `a2uiClientCapabilities()` for the renderer's\nstandard value.", "optional": true }, { "name": "telemetry", "type": "false | AgentRuntimeTelemetrySink", "description": "Omit to enable automatic development-only collection. Set `false` to disable.\nAn app-owned sink replaces the automatic destination and receives the\nexisting runtime lifecycle callbacks.", "optional": true } ], "examples": [] }, { "name": "bridgeCitationsState", "kind": "function", "description": "Attach per-message Citations carried in an AG-UI thread's `state`\n(`state.citations`, keyed by message id) onto the corresponding assistant\nMessages — for advanced consumers wiring citations from STATE events\ninto the neutral chat contract.", "signature": "bridgeCitationsState(thread: ThreadStateLike, messages: Message[]): Message[]", "params": [ { "name": "thread", "type": "ThreadStateLike", "description": "The thread-state container holding `state.citations`.", "optional": false }, { "name": "messages", "type": "Message[]", "description": "The messages to enrich.", "optional": false } ], "returns": { "type": "Message[]", "description": "" }, "examples": [ "```ts\nconst enriched = bridgeCitationsState(threadState, agent.messages());\n```" ] }, { "name": "injectAgent", "kind": "function", "description": "Injects the AG-UI agent from Angular's dependency injection container.\nUse this in components or services provided via `provideAgent()` (or\n`provideFakeAgent()`).\n\nReturns an `AgUiAgent` — the runtime-neutral `Agent` contract plus the\nAG-UI-specific `customEvents` signal — so `customEvents` is reachable\ndirectly, without casting.\n\n**Typed state via AgentRef.** Pass the same ref that was supplied to\n`provideAgent(ref, …)` to carry the state type through DI without repeating\nthe generic at every call site. The no-arg form defaults to\n`AgUiAgent>`.", "signature": "injectAgent(): AgUiAgent<>", "params": [], "returns": { "type": "AgUiAgent<>", "description": "" }, "examples": [ "```ts\nconst agent = injectAgent(TRIP); // AgUiAgent\n```" ] }, { "name": "provideAgent", "kind": "function", "description": "Provides an Agent instance wired through HttpAgent and toAgent.\nConstructs an HttpAgent from config and wraps it in the runtime-neutral\nAgent contract via toAgent(). Returns a provider array suitable for\nbootstrapApplication or TestBed.configureTestingModule().\n\n**Static vs factory config.** Pass a plain `AgentConfig` object when the\nconfig is known up front. Pass a `() => AgentConfig` factory when the config\ndepends on runtime/DI state — the factory runs inside an Angular injection\ncontext, so it may call `inject()` to read services or route params.\n\n**Typed state via AgentRef.** Pass a typed ref as the first argument to flow\nthe state shape from `provideAgent` to `injectAgent` without repeating the\ngeneric at every call site.\n\n**Several agents at one injector level.** Each `provideAgent(ref, …)` call\nbuilds its own agent, so two (or more) refs may be provided side by side in a\nsingle `providers` array and `injectAgent(refA)` / `injectAgent(refB)` return\ndistinct agents. The ref-less `injectAgent()` resolves a single shared token,\nwhich can only point at one of them: when more than one ref is provided at\nthe same level the **last** call wins. Always inject by ref when an injector\nprovides more than one agent.", "signature": "provideAgent(ref: AgentRef, configOrFactory: AgentConfig | () => AgentConfig): Provider[]", "params": [ { "name": "ref", "type": "AgentRef", "description": "", "optional": false }, { "name": "configOrFactory", "type": "AgentConfig | () => AgentConfig", "description": "", "optional": false } ], "returns": { "type": "Provider[]", "description": "" }, "examples": [ "```ts\ninterface TripState { day: number; places: string[]; }\nexport const TRIP = createAgentRef('trip');\n// app.config.ts:\nproviders: [provideAgent(TRIP, { url: 'http://localhost:8000/agent' })]\n// component:\nconst agent = injectAgent(TRIP); // AgUiAgent\n```" ] }, { "name": "provideFakeAgent", "kind": "function", "description": "Registers an in-process FakeAgent under AGENT.\n\nUse for offline demos and development. Drop-in replacement for\nprovideAgent({ url }) when no real backend is available.", "signature": "provideFakeAgent(config: FakeAgentConfig): Provider[]", "params": [ { "name": "config", "type": "FakeAgentConfig", "description": "", "optional": true } ], "returns": { "type": "Provider[]", "description": "" }, "examples": [ "```ts\nTestBed.configureTestingModule({\n providers: [provideFakeAgent({ tokens: ['Hello from the fake agent'] })],\n});\n```" ] }, { "name": "toAgent", "kind": "function", "description": "Wraps an AG-UI AbstractAgent into the runtime-neutral Agent contract.\n\nThe adapter subscribes to source.subscribe({ onEvent }) and reduces every\nevent into the produced Agent's signals. submit() optimistically appends the\nuser message to both our signals and the source agent's internal message\nlist, then calls source.runAgent(). stop() calls source.abortRun().\n\nSubscription cleanup: the returned Agent does NOT manage its own lifetime.\nCallers using DI should rely on the provider's destroy hook; direct callers\nof toAgent() should treat the returned object's lifecycle as tied to the\nagent instance they constructed. The subscriber registered via\nsource.subscribe() will fire for the lifetime of source.", "signature": "toAgent(source: AbstractAgent<>, options: ToAgentOptions): AgUiAgent<>", "params": [ { "name": "source", "type": "AbstractAgent<>", "description": "", "optional": false }, { "name": "options", "type": "ToAgentOptions", "description": "", "optional": true } ], "returns": { "type": "AgUiAgent<>", "description": "" }, "examples": [ "```ts\nimport { HttpAgent } from '@ag-ui/client';\nimport { toAgent } from '@threadplane/ag-ui';\n\nconst agent = toAgent(new HttpAgent({ url: '/api/agent' }));\n```" ] } ] ### chat [ { "name": "A2uiAudioPlayerComponent", "kind": "class", "description": "", "params": [], "examples": [], "properties": [ { "name": "bindings", "type": "InputSignal>", "description": "", "optional": false }, { "name": "childKeys", "type": "InputSignal", "description": "", "optional": false }, { "name": "description", "type": "InputSignal", "description": "v0.9 prop: short description / title rendered above the player.", "optional": false }, { "name": "emit", "type": "InputSignal<(event: string) => void>", "description": "", "optional": false }, { "name": "loading", "type": "InputSignal", "description": "", "optional": false }, { "name": "spec", "type": "InputSignal", "description": "", "optional": false }, { "name": "url", "type": "InputSignal", "description": "", "optional": false } ], "methods": [] }, { "name": "A2uiButtonComponent", "kind": "class", "description": "", "params": [], "examples": [], "properties": [ { "name": "bindings", "type": "InputSignal>", "description": "", "optional": false }, { "name": "childKeys", "type": "InputSignal", "description": "v0.9: child Text component is rendered inside the button via childKeys.", "optional": false }, { "name": "disabled", "type": "InputSignal", "description": "", "optional": false }, { "name": "emit", "type": "InputSignal<(event: string) => void>", "description": "", "optional": false }, { "name": "loading", "type": "InputSignal", "description": "", "optional": false }, { "name": "spec", "type": "InputSignal", "description": "", "optional": false }, { "name": "variant", "type": "InputSignal", "description": "v0.9 prop: visual style (default 'default').", "optional": false } ], "methods": [ { "name": "cssClass", "signature": "cssClass(): string", "description": "", "params": [] }, { "name": "handleClick", "signature": "handleClick(): void", "description": "", "params": [] } ] }, { "name": "A2uiCardComponent", "kind": "class", "description": "", "params": [], "examples": [], "properties": [ { "name": "bindings", "type": "InputSignal>", "description": "", "optional": false }, { "name": "childKeys", "type": "InputSignal", "description": "v1: a single child key, delivered via childKeys[0] from the render framework.", "optional": false }, { "name": "emit", "type": "InputSignal<(event: string) => void>", "description": "", "optional": false }, { "name": "loading", "type": "InputSignal", "description": "", "optional": false }, { "name": "spec", "type": "InputSignal", "description": "", "optional": false } ], "methods": [] }, { "name": "A2uiCheckBoxComponent", "kind": "class", "description": "", "params": [], "examples": [], "properties": [ { "name": "_bindings", "type": "InputSignal>", "description": "", "optional": false }, { "name": "bindings", "type": "InputSignal>", "description": "", "optional": false }, { "name": "childKeys", "type": "InputSignal", "description": "", "optional": false }, { "name": "errorText", "type": "InputSignal", "description": "Live validation message written by the surface's check gate\n(bound to /_a2uiChecks/); empty when valid.", "optional": false }, { "name": "label", "type": "InputSignal", "description": "", "optional": false }, { "name": "loading", "type": "InputSignal", "description": "", "optional": false }, { "name": "spec", "type": "InputSignal", "description": "", "optional": false }, { "name": "value", "type": "InputSignal", "description": "v0.9 prop: boolean checked state.", "optional": false } ], "methods": [ { "name": "onChange", "signature": "onChange(event: Event): void", "description": "", "params": [ { "name": "event", "type": "Event", "description": "", "optional": false } ] } ] }, { "name": "A2uiChoicePickerComponent", "kind": "class", "description": "", "params": [], "examples": [], "properties": [ { "name": "_bindings", "type": "InputSignal>", "description": "", "optional": false }, { "name": "_groupName", "type": "string", "description": "Groups the radio inputs of this instance (mutuallyExclusive mode).", "optional": false }, { "name": "bindings", "type": "InputSignal>", "description": "", "optional": false }, { "name": "childKeys", "type": "InputSignal", "description": "", "optional": false }, { "name": "displayStyle", "type": "InputSignal<\"checkbox\" | \"chips\">", "description": "v0.9 prop: render as 'checkbox' rows (default) or 'chips'.", "optional": false }, { "name": "errorText", "type": "InputSignal", "description": "Live validation message written by the surface's check gate\n(bound to /_a2uiChecks/); empty when valid.", "optional": false }, { "name": "filterable", "type": "InputSignal", "description": "v0.9 prop: when true, show a client-side option filter input.", "optional": false }, { "name": "filterText", "type": "WritableSignal", "description": "Local, client-side option filter (only rendered when filterable).", "optional": false }, { "name": "isSingleSelect", "type": "Signal", "description": "", "optional": false }, { "name": "label", "type": "InputSignal", "description": "", "optional": false }, { "name": "loading", "type": "InputSignal", "description": "", "optional": false }, { "name": "options", "type": "InputSignal", "description": "Resolved options with plain string labels (surface-to-spec resolves DynamicString).", "optional": false }, { "name": "spec", "type": "InputSignal", "description": "", "optional": false }, { "name": "value", "type": "InputSignal", "description": "v0.9 prop: current selection (string[]). Normalized in `valueArray`\nbecause LLMs sometimes seed the data model with a scalar (e.g. `\"5\"`)\ninstead of an array (`[\"5\"]`); we coerce so .includes() works either way.", "optional": false }, { "name": "valueArray", "type": "Signal", "description": "", "optional": false }, { "name": "variant", "type": "InputSignal<\"mutuallyExclusive\" | \"multipleSelection\">", "description": "v0.9 prop: 'mutuallyExclusive' (single-select, default) or 'multipleSelection'.", "optional": false }, { "name": "visibleOptions", "type": "Signal", "description": "", "optional": false } ], "methods": [ { "name": "isSelected", "signature": "isSelected(value: string): boolean", "description": "", "params": [ { "name": "value", "type": "string", "description": "", "optional": false } ] }, { "name": "onCheckChange", "signature": "onCheckChange(value: string, event: Event): void", "description": "", "params": [ { "name": "value", "type": "string", "description": "", "optional": false }, { "name": "event", "type": "Event", "description": "", "optional": false } ] }, { "name": "onChipToggle", "signature": "onChipToggle(value: string): void", "description": "", "params": [ { "name": "value", "type": "string", "description": "", "optional": false } ] }, { "name": "onFilterInput", "signature": "onFilterInput(event: Event): void", "description": "", "params": [ { "name": "event", "type": "Event", "description": "", "optional": false } ] } ] }, { "name": "A2uiColumnComponent", "kind": "class", "description": "", "params": [], "examples": [], "properties": [ { "name": "align", "type": "InputSignal", "description": "v0.9 prop: cross-axis alignment (default 'stretch').", "optional": false }, { "name": "alignItems", "type": "Signal", "description": "", "optional": false }, { "name": "bindings", "type": "InputSignal>", "description": "", "optional": false }, { "name": "childKeys", "type": "InputSignal", "description": "", "optional": false }, { "name": "cssClass", "type": "Signal<\"a2ui-col a2ui-col--justify-stretch\" | \"a2ui-col\">", "description": "", "optional": false }, { "name": "emit", "type": "InputSignal<(event: string) => void>", "description": "", "optional": false }, { "name": "gap", "type": "InputSignal", "description": "Not part of the v0.9 catalog — kept for json-render generative-ui\nspecs, which may set a numeric spacing unit (multiples of 4px) or a\nnamed size. Unset falls back to the CSS default gap.", "optional": false }, { "name": "gapPx", "type": "Signal", "description": "", "optional": false }, { "name": "justify", "type": "InputSignal", "description": "v0.9 prop: main-axis distribution (default 'start').", "optional": false }, { "name": "justifyContent", "type": "Signal", "description": "", "optional": false }, { "name": "loading", "type": "InputSignal", "description": "", "optional": false }, { "name": "spec", "type": "InputSignal", "description": "", "optional": false } ], "methods": [] }, { "name": "A2uiDateTimeInputComponent", "kind": "class", "description": "", "params": [], "examples": [], "properties": [ { "name": "_bindings", "type": "InputSignal>", "description": "", "optional": false }, { "name": "_inputId", "type": "string", "description": "", "optional": false }, { "name": "bindings", "type": "InputSignal>", "description": "", "optional": false }, { "name": "childKeys", "type": "InputSignal", "description": "", "optional": false }, { "name": "enableDate", "type": "InputSignal", "description": "v0.9 prop: enableDate — include date portion.", "optional": false }, { "name": "enableTime", "type": "InputSignal", "description": "v0.9 prop: enableTime — include time portion.", "optional": false }, { "name": "errorText", "type": "InputSignal", "description": "Live validation message written by the surface's check gate\n(bound to /_a2uiChecks/); empty when valid.", "optional": false }, { "name": "htmlInputType", "type": "Signal", "description": "Derives HTML input type from enableDate + enableTime.", "optional": false }, { "name": "label", "type": "InputSignal", "description": "", "optional": false }, { "name": "loading", "type": "InputSignal", "description": "", "optional": false }, { "name": "max", "type": "InputSignal", "description": "v0.9 prop: ISO upper bound mapped to the native input's max.", "optional": false }, { "name": "min", "type": "InputSignal", "description": "v0.9 prop: ISO lower bound mapped to the native input's min.", "optional": false }, { "name": "spec", "type": "InputSignal", "description": "", "optional": false }, { "name": "value", "type": "InputSignal", "description": "v0.9 prop: ISO 8601 value (resolved DynamicString). Still renders when absent.", "optional": false } ], "methods": [ { "name": "onChange", "signature": "onChange(event: Event): void", "description": "", "params": [ { "name": "event", "type": "Event", "description": "", "optional": false } ] } ] }, { "name": "A2uiDividerComponent", "kind": "class", "description": "", "params": [], "examples": [], "properties": [ { "name": "axis", "type": "InputSignal<\"horizontal\" | \"vertical\">", "description": "v0.9 prop: divider axis (default 'horizontal').", "optional": false }, { "name": "bindings", "type": "InputSignal>", "description": "", "optional": false }, { "name": "childKeys", "type": "InputSignal", "description": "", "optional": false }, { "name": "emit", "type": "InputSignal<(event: string) => void>", "description": "", "optional": false }, { "name": "loading", "type": "InputSignal", "description": "", "optional": false }, { "name": "orientation", "type": "Signal<\"horizontal\" | \"vertical\">", "description": "", "optional": false }, { "name": "spec", "type": "InputSignal", "description": "", "optional": false } ], "methods": [] }, { "name": "A2uiIconComponent", "kind": "class", "description": "", "params": [], "examples": [], "properties": [ { "name": "bindings", "type": "InputSignal>", "description": "", "optional": false }, { "name": "childKeys", "type": "InputSignal", "description": "", "optional": false }, { "name": "emit", "type": "InputSignal<(event: string) => void>", "description": "", "optional": false }, { "name": "glyphName", "type": "Signal", "description": "The effective name as a Material Symbols ligature (camelCase → snake_case).", "optional": false }, { "name": "ligatureName", "type": "Signal", "description": "The string ligature name when `name` is a string.", "optional": false }, { "name": "loading", "type": "InputSignal", "description": "", "optional": false }, { "name": "name", "type": "InputSignal", "description": "v0.9 prop: a Material Symbols name (string) or an inline `{ svgPath }`.", "optional": false }, { "name": "spec", "type": "InputSignal", "description": "", "optional": false }, { "name": "svgPath", "type": "Signal", "description": "Inline SVG path when `name` is the `{ svgPath }` object form.", "optional": false } ], "methods": [] }, { "name": "A2uiImageComponent", "kind": "class", "description": "", "params": [], "examples": [], "properties": [ { "name": "bindings", "type": "InputSignal>", "description": "", "optional": false }, { "name": "childKeys", "type": "InputSignal", "description": "", "optional": false }, { "name": "cssClass", "type": "Signal", "description": "", "optional": false }, { "name": "description", "type": "InputSignal", "description": "v0.9 prop: alt text / accessible description.", "optional": false }, { "name": "emit", "type": "InputSignal<(event: string) => void>", "description": "", "optional": false }, { "name": "fit", "type": "InputSignal", "description": "v0.9 prop: CSS object-fit equivalent ('scaleDown' → 'scale-down').", "optional": false }, { "name": "loading", "type": "InputSignal", "description": "", "optional": false }, { "name": "objectFit", "type": "Signal", "description": "", "optional": false }, { "name": "spec", "type": "InputSignal", "description": "", "optional": false }, { "name": "url", "type": "InputSignal", "description": "", "optional": false }, { "name": "variant", "type": "InputSignal", "description": "v0.9 prop: sizing preset.", "optional": false } ], "methods": [] }, { "name": "A2uiListComponent", "kind": "class", "description": "", "params": [], "examples": [], "properties": [ { "name": "align", "type": "InputSignal<\"start\" | \"center\" | \"end\" | \"stretch\">", "description": "v0.9 prop: cross-axis alignment (default 'stretch').", "optional": false }, { "name": "alignmentCss", "type": "Signal", "description": "", "optional": false }, { "name": "bindings", "type": "InputSignal>", "description": "", "optional": false }, { "name": "childKeys", "type": "InputSignal", "description": "", "optional": false }, { "name": "direction", "type": "InputSignal<\"horizontal\" | \"vertical\">", "description": "", "optional": false }, { "name": "emit", "type": "InputSignal<(event: string) => void>", "description": "", "optional": false }, { "name": "listClass", "type": "Signal<\"a2ui-list--horizontal\" | \"a2ui-list--vertical\">", "description": "", "optional": false }, { "name": "loading", "type": "InputSignal", "description": "", "optional": false }, { "name": "spec", "type": "InputSignal", "description": "", "optional": false } ], "methods": [] }, { "name": "A2uiModalComponent", "kind": "class", "description": "", "params": [], "examples": [], "properties": [ { "name": "bindings", "type": "InputSignal>", "description": "", "optional": false }, { "name": "childKeys", "type": "InputSignal", "description": "v0.9: childKeys[0] = trigger (inline entry point),\n childKeys[1] = content (modal body).", "optional": false }, { "name": "contentKey", "type": "Signal", "description": "", "optional": false }, { "name": "emit", "type": "InputSignal<(event: string) => void>", "description": "", "optional": false }, { "name": "entryPointKey", "type": "Signal", "description": "", "optional": false }, { "name": "loading", "type": "InputSignal", "description": "", "optional": false }, { "name": "open", "type": "WritableSignal", "description": "", "optional": false }, { "name": "spec", "type": "InputSignal", "description": "", "optional": false } ], "methods": [] }, { "name": "A2uiRowComponent", "kind": "class", "description": "", "params": [], "examples": [], "properties": [ { "name": "align", "type": "InputSignal", "description": "v0.9 prop: cross-axis alignment (default 'stretch').", "optional": false }, { "name": "alignItems", "type": "Signal", "description": "", "optional": false }, { "name": "bindings", "type": "InputSignal>", "description": "", "optional": false }, { "name": "childKeys", "type": "InputSignal", "description": "", "optional": false }, { "name": "cssClass", "type": "Signal<\"a2ui-row a2ui-row--justify-stretch\" | \"a2ui-row\">", "description": "", "optional": false }, { "name": "emit", "type": "InputSignal<(event: string) => void>", "description": "", "optional": false }, { "name": "gap", "type": "InputSignal", "description": "Not part of the v0.9 catalog — kept for json-render generative-ui\nspecs, which may set a numeric spacing unit (multiples of 4px) or a\nnamed size. Unset falls back to the CSS default gap.", "optional": false }, { "name": "gapPx", "type": "Signal", "description": "", "optional": false }, { "name": "justify", "type": "InputSignal", "description": "v0.9 prop: main-axis distribution (default 'start').", "optional": false }, { "name": "justifyContent", "type": "Signal", "description": "", "optional": false }, { "name": "loading", "type": "InputSignal", "description": "", "optional": false }, { "name": "spec", "type": "InputSignal", "description": "", "optional": false } ], "methods": [] }, { "name": "A2uiSliderComponent", "kind": "class", "description": "", "params": [], "examples": [], "properties": [ { "name": "_bindings", "type": "InputSignal>", "description": "", "optional": false }, { "name": "_inputId", "type": "string", "description": "", "optional": false }, { "name": "bindings", "type": "InputSignal>", "description": "", "optional": false }, { "name": "childKeys", "type": "InputSignal", "description": "", "optional": false }, { "name": "errorText", "type": "InputSignal", "description": "Live validation message written by the surface's check gate\n(bound to /_a2uiChecks/); empty when valid.", "optional": false }, { "name": "label", "type": "InputSignal", "description": "", "optional": false }, { "name": "loading", "type": "InputSignal", "description": "", "optional": false }, { "name": "max", "type": "InputSignal", "description": "v0.9 prop: upper bound.", "optional": false }, { "name": "min", "type": "InputSignal", "description": "v0.9 prop: lower bound (default 0).", "optional": false }, { "name": "spec", "type": "InputSignal", "description": "", "optional": false }, { "name": "value", "type": "InputSignal", "description": "v0.9 prop: value (resolved DynamicNumber).", "optional": false } ], "methods": [ { "name": "onInput", "signature": "onInput(event: Event): void", "description": "", "params": [ { "name": "event", "type": "Event", "description": "", "optional": false } ] } ] }, { "name": "A2uiSurfaceComponent", "kind": "class", "description": "", "params": [], "examples": [], "properties": [ { "name": "action", "type": "OutputEmitterRef", "description": "", "optional": false }, { "name": "agentDisplayName", "type": "Signal", "description": "Agent identity chrome from `createSurface.theme`. When neither\n`agentDisplayName` nor `iconUrl` is set, no header renders at all\n(zero layout impact for themeless surfaces — the common case).", "optional": false }, { "name": "catalog", "type": "InputSignal | RenderViewEntry>> | Readonly | RenderViewEntry>>>", "description": "", "optional": false }, { "name": "events", "type": "OutputEmitterRef", "description": "", "optional": false }, { "name": "handlers", "type": "InputSignal) => unknown>>", "description": "", "optional": false }, { "name": "iconUrl", "type": "Signal", "description": "", "optional": false }, { "name": "internalHandlers", "type": "Signal", "description": "Merge built-in A2UI handlers with consumer-provided handlers.", "optional": false }, { "name": "liveStore", "type": "StateStore", "description": "Surface-owned live state store: `$bindState` props read it and input\ncomponents write user edits into it, so event-time logic (checks,\naction context) sees CURRENT values instead of the agent-seeded\nsnapshot. Seeded from spec.state with user edits preserved. Public so\nhosts (and tests) can read the live values of a rendered surface.", "optional": false }, { "name": "primaryColor", "type": "Signal", "description": "Agent-set primary color from `createSurface.theme.primaryColor`.\nReturns null when unset so the host binding doesn't override the\nconsumer's `:root`-level `--a2ui-primary` default.", "optional": false }, { "name": "registry", "type": "Signal", "description": "Convert ViewRegistry to AngularRegistry for RenderSpecComponent.", "optional": false }, { "name": "rootIds", "type": "Signal", "description": "Roots from the surface state. The v0.9 wire contract reserves the\ncomponent id `root` as the single tree root; we keep the renderer\npermissive in case future surfaces emit multiple top-level\ncomponents.\n\nConservative: returns only the first key from componentViews\ninsertion order.", "optional": false }, { "name": "spec", "type": "Signal", "description": "Convert the A2UI surface to a json-render Spec for rendering.\n Prefers `state().surface` (the progressively-built wire surface)\n over the legacy `surface` input. surfaceToSpec handles\n children-id-list → spec.children translation + reserved-key\n filtering + path-ref → $bindState rewriting; the rendered tree\n then uses render-element's standard input-mapping\n (`childKeys: el.children`) so catalog components receive the\n inputs they actually declare.\n\n This supersedes the earlier slot-based progressive renderer,\n which mounted root components but never populated their\n childKeys input — leaving Columns/Rows/etc. with no children.", "optional": false }, { "name": "state", "type": "InputSignal", "description": "Chat-side surface state with per-component readiness. When set,\nthis takes priority and the progressive renderer is used.", "optional": false }, { "name": "surface", "type": "InputSignal", "description": "Wire-format surface (legacy path — kept for backwards compat).", "optional": false }, { "name": "surfaceFallback", "type": "InputSignal | undefined>", "description": "Optional top-level placeholder when the surface has no components\nyet. Defaults to A2uiDefaultFallbackComponent.", "optional": false }, { "name": "validationError", "type": "OutputEmitterRef", "description": "Emitted when a submit is blocked by failing validation checks —\nthe spec client → agent error message (code VALIDATION_FAILED).", "optional": false } ], "methods": [ { "name": "onRenderEvent", "signature": "onRenderEvent(event: RenderEvent): void", "description": "", "params": [ { "name": "event", "type": "RenderEvent", "description": "", "optional": false } ] } ] }, { "name": "A2uiTabsComponent", "kind": "class", "description": "", "params": [], "examples": [], "properties": [ { "name": "activeChildKey", "type": "Signal", "description": "", "optional": false }, { "name": "activeIndex", "type": "WritableSignal", "description": "", "optional": false }, { "name": "bindings", "type": "InputSignal>", "description": "", "optional": false }, { "name": "childKeys", "type": "InputSignal", "description": "v0.9: each child key corresponds to a tab's child (childKeys[i] ↔ tabTitles[i]).", "optional": false }, { "name": "emit", "type": "InputSignal<(event: string) => void>", "description": "", "optional": false }, { "name": "loading", "type": "InputSignal", "description": "", "optional": false }, { "name": "spec", "type": "InputSignal", "description": "", "optional": false }, { "name": "tabTitles", "type": "InputSignal", "description": "Resolved tab titles from tabs[*].title — produced by surface-to-spec.", "optional": false } ], "methods": [ { "name": "selectTab", "signature": "selectTab(index: number): void", "description": "", "params": [ { "name": "index", "type": "number", "description": "", "optional": false } ] } ] }, { "name": "A2uiTextComponent", "kind": "class", "description": "", "params": [], "examples": [], "properties": [ { "name": "bindings", "type": "InputSignal>", "description": "", "optional": false }, { "name": "childKeys", "type": "InputSignal", "description": "", "optional": false }, { "name": "emit", "type": "InputSignal<(event: string) => void>", "description": "", "optional": false }, { "name": "loading", "type": "InputSignal", "description": "", "optional": false }, { "name": "spec", "type": "InputSignal", "description": "", "optional": false }, { "name": "text", "type": "InputSignal", "description": "", "optional": false }, { "name": "variant", "type": "InputSignal", "description": "v0.9 prop: typography variant.", "optional": false } ], "methods": [ { "name": "cssClass", "signature": "cssClass(): string", "description": "", "params": [] } ] }, { "name": "A2uiTextFieldComponent", "kind": "class", "description": "", "params": [], "examples": [], "properties": [ { "name": "_bindings", "type": "InputSignal>", "description": "", "optional": false }, { "name": "_inputId", "type": "string", "description": "", "optional": false }, { "name": "bindings", "type": "InputSignal>", "description": "", "optional": false }, { "name": "childKeys", "type": "InputSignal", "description": "", "optional": false }, { "name": "errorText", "type": "InputSignal", "description": "Live validation message written by the surface's check gate\n(bound to /_a2uiChecks/); empty when valid.", "optional": false }, { "name": "htmlInputType", "type": "Signal", "description": "", "optional": false }, { "name": "label", "type": "InputSignal", "description": "", "optional": false }, { "name": "loading", "type": "InputSignal", "description": "", "optional": false }, { "name": "placeholder", "type": "InputSignal", "description": "", "optional": false }, { "name": "spec", "type": "InputSignal", "description": "", "optional": false }, { "name": "validationRegexp", "type": "InputSignal", "description": "Enforced by the surface's check gate as an implicit regex rule (plus the native pattern attribute).", "optional": false }, { "name": "value", "type": "InputSignal", "description": "v0.9 prop: resolved string value.", "optional": false }, { "name": "variant", "type": "InputSignal", "description": "v0.9 prop: input variant (default 'shortText').", "optional": false } ], "methods": [ { "name": "onInput", "signature": "onInput(event: Event): void", "description": "", "params": [ { "name": "event", "type": "Event", "description": "", "optional": false } ] } ] }, { "name": "A2uiVideoComponent", "kind": "class", "description": "", "params": [], "examples": [], "properties": [ { "name": "bindings", "type": "InputSignal>", "description": "", "optional": false }, { "name": "childKeys", "type": "InputSignal", "description": "", "optional": false }, { "name": "emit", "type": "InputSignal<(event: string) => void>", "description": "", "optional": false }, { "name": "loading", "type": "InputSignal", "description": "", "optional": false }, { "name": "spec", "type": "InputSignal", "description": "", "optional": false }, { "name": "url", "type": "InputSignal", "description": "", "optional": false } ], "methods": [] }, { "name": "AgentError", "kind": "class", "description": "Structured, classified failure surfaced on `Agent.error`. Extends `Error`, so\nexisting `.message` / `instanceof Error` reads keep working — but adds a\nmachine-readable AgentErrorKind, a `retryable` flag, an optional HTTP\n`status`, and the original `cause`.\n\nYou rarely construct one yourself; adapters normalize raw failures via\ntoAgentError. Read it off the agent to render legible, cause-specific UI:", "params": [ { "name": "init", "type": "object", "description": "", "optional": false } ], "examples": [ "```ts\nconst err = agent.error(); // AgentError | undefined\nif (err) {\n console.warn(err.message); // legible, per-kind copy\n if (err.kind === 'auth') showApiKeyHelp();\n if (err.retryable) showRetryButton(); // → agent.retry()\n}\n```" ], "properties": [ { "name": "cause", "type": "unknown", "description": "The original raw error this was classified from, preserved for debugging/telemetry.", "optional": false }, { "name": "kind", "type": "AgentErrorKind", "description": "The classified failure type. See AgentErrorKind.", "optional": false }, { "name": "message", "type": "string", "description": "", "optional": false }, { "name": "name", "type": "string", "description": "", "optional": false }, { "name": "retryable", "type": "boolean", "description": "Whether retrying the same request could plausibly succeed:\n `connection` | `server` (5xx) | `interrupted` → true; `auth` | `aborted` | non-auth `4xx` → false.", "optional": false }, { "name": "stack", "type": "string", "description": "", "optional": true }, { "name": "status", "type": "number", "description": "The HTTP status code when the failure came from an HTTP response.", "optional": true } ], "methods": [] }, { "name": "ChatApprovalCardComponent", "kind": "class", "description": "", "params": [], "examples": [], "properties": [ { "name": "action", "type": "OutputEmitterRef", "description": "", "optional": false }, { "name": "agent", "type": "InputSignal>", "description": "", "optional": false }, { "name": "bodyTemplate", "type": "Signal | undefined>", "description": "", "optional": false }, { "name": "matchKind", "type": "InputSignal", "description": "", "optional": false }, { "name": "payload", "type": "Signal", "description": "", "optional": false }, { "name": "showEdit", "type": "InputSignal", "description": "", "optional": false }, { "name": "title", "type": "InputSignal", "description": "", "optional": false } ], "methods": [ { "name": "emit", "signature": "emit(action: ChatApprovalAction): void", "description": "", "params": [ { "name": "action", "type": "ChatApprovalAction", "description": "", "optional": false } ] }, { "name": "onCancelEvent", "signature": "onCancelEvent(ev: Event): void", "description": "", "params": [ { "name": "ev", "type": "Event", "description": "", "optional": false } ] }, { "name": "onDialogClose", "signature": "onDialogClose(): void", "description": "", "params": [] } ] }, { "name": "ChatCitationCardTemplateDirective", "kind": "class", "description": "ContentChild template directive for custom citation card rendering.\nUsage: ...", "params": [], "examples": [], "properties": [ { "name": "tpl", "type": "TemplateRef", "description": "", "optional": false } ], "methods": [] }, { "name": "ChatCitationPreviewComponent", "kind": "class", "description": "Presentational provenance card for a single Citation. Rendered inside the\ninline marker's connected-overlay pane (hover/tap preview) — self-contained\nso its encapsulated styles apply even when portaled to the body-level pane.", "params": [], "examples": [], "properties": [ { "name": "citation", "type": "InputSignal", "description": "", "optional": false }, { "name": "domain", "type": "Signal", "description": "", "optional": false }, { "name": "published", "type": "Signal", "description": "", "optional": false }, { "name": "sourceIcon", "type": "Signal", "description": "", "optional": false }, { "name": "sourceIconUrl", "type": "Signal", "description": "", "optional": false }, { "name": "sourceMonoColor", "type": "Signal", "description": "", "optional": false }, { "name": "sourceMonogram", "type": "Signal", "description": "", "optional": false }, { "name": "typeLabel", "type": "Signal", "description": "", "optional": false }, { "name": "typeTone", "type": "Signal", "description": "", "optional": false } ], "methods": [ { "name": "isTypeTone", "signature": "isTypeTone(tone: CitationTypeIcon): boolean", "description": "", "params": [ { "name": "tone", "type": "CitationTypeIcon", "description": "", "optional": false } ] } ] }, { "name": "ChatCitationsCardComponent", "kind": "class", "description": "Sources-panel detail card: index badge, favicon/monogram + domain + type,\ntitle, one-line snippet. Renders as an (opens the source) when a url is\npresent, otherwise a non-interactive
. Shares the panel style module.", "params": [], "examples": [], "properties": [ { "name": "citation", "type": "InputSignal", "description": "", "optional": false }, { "name": "domain", "type": "Signal", "description": "", "optional": false }, { "name": "sourceIcon", "type": "Signal", "description": "", "optional": false }, { "name": "sourceIconUrl", "type": "Signal", "description": "", "optional": false }, { "name": "sourceMonoColor", "type": "Signal", "description": "", "optional": false }, { "name": "sourceMonogram", "type": "Signal", "description": "", "optional": false }, { "name": "title", "type": "Signal", "description": "", "optional": false }, { "name": "typeLabel", "type": "Signal", "description": "", "optional": false }, { "name": "typeTone", "type": "Signal", "description": "", "optional": false } ], "methods": [ { "name": "isTypeTone", "signature": "isTypeTone(tone: CitationTypeIcon): boolean", "description": "", "params": [ { "name": "tone", "type": "CitationTypeIcon", "description": "", "optional": false } ] } ] }, { "name": "ChatCitationsComponent", "kind": "class", "description": "", "params": [], "examples": [], "properties": [ { "name": "cardTpl", "type": "ChatCitationCardTemplateDirective<> | null", "description": "", "optional": false }, { "name": "citations", "type": "Signal", "description": "Combined citation list:\n 1. Message.citations (provider-populated, takes precedence by id)\n 2. Markdown sidecar defs (Pandoc [^id]: lines), merged for unseen ids.\nSorted by index ascending.", "optional": false }, { "name": "expanded", "type": "WritableSignal", "description": "", "optional": false }, { "name": "favstack", "type": "Signal", "description": "First 3 sources, mapped to favicon/monogram chips for the header preview.", "optional": false }, { "name": "heading", "type": "InputSignal", "description": "", "optional": false }, { "name": "listId", "type": "string", "description": "", "optional": false }, { "name": "message", "type": "InputSignal", "description": "", "optional": false } ], "methods": [] }, { "name": "ChatComponent", "kind": "class", "description": "", "params": [], "examples": [], "properties": [ { "name": "activeThreadId", "type": "InputSignal", "description": "", "optional": false }, { "name": "agent", "type": "InputSignal>", "description": "", "optional": false }, { "name": "clientToolContinuationLimit", "type": "OutputEmitterRef", "description": "", "optional": false }, { "name": "clientToolContinuationPolicy", "type": "InputSignal", "description": "", "optional": false }, { "name": "clientToolExecutionGuard", "type": "InputSignal", "description": "", "optional": false }, { "name": "clientTools", "type": "InputSignal> | undefined>", "description": "Client-declared tools (`view`/`ask`/`function`) the model may call. When\nprovided, a coordinator ships their catalog to the agent, runs `function`\ntools in the browser, and renders/resolves `view`/`ask` tools through the\nsame tool-views pipeline as `views`. Additive — leave undefined for the\nclassic server-tools-only experience.", "optional": false }, { "name": "currentAssistantStreaming", "type": "Signal", "description": "True iff the current (last-index) assistant message owns an active\ndelivery generation. The bubble's own caret already signals loading;\nwe suppress the floor typing-indicator in that case so the user\ndoesn't see two loading affordances at once.\n\nMatches the same `streaming + current` condition the bubble uses\nto enable `.chat-message__caret`.\n\nRestricted to assistant role because the caret only renders on\nassistant bubbles (`:host([data-role=\"assistant\"][data-current=...\n ][data-streaming=...])`).", "optional": false }, { "name": "effectiveViews", "type": "Signal | RenderViewEntry>> | undefined>", "description": "The view registry actually used for rendering tool-views and for\nexcluding view-backed tool names from default tool-call cards. Merges\nthe coordinator's `view`/`ask` components (keyed by tool name) into the\nuser-supplied `views()` so client-declared component tools render through\nthe same pipeline. Falls back to `views()` when no client tools exist.", "optional": false }, { "name": "excludedToolNames", "type": "Signal", "description": "Union of GenUI dispatcher tool names and registered view tool names.", "optional": false }, { "name": "genuiToolNames", "type": "InputSignal", "description": "Tool names whose calls produce a rendered GenUI surface rather than\nvisible text. Used to (a) filter so internal\ndispatchers don't render args JSON as cards, and (b) detect\n\"this is a GenUI turn\" for the building-UI skeleton.\nDefault covers the canonical A2UI + json-render schema tools.", "optional": false }, { "name": "handlers", "type": "InputSignal) => unknown>>", "description": "", "optional": false }, { "name": "liveSurfaceStore", "type": "A2uiSurfaceStore", "description": "Shared A2UI surface store fed by the live partial-args bridge. The\ncontent-classifier path will share this store via tool_call_id\nshort-circuit (skipping re-dispatch for live tool_call_ids).", "optional": false }, { "name": "messageContent", "type": "(message: BaseMessage<>) => string", "description": "", "optional": false }, { "name": "messageCopy", "type": "OutputEmitterRef", "description": "Emitted when the user copies an assistant message.", "optional": false }, { "name": "modelOptions", "type": "InputSignal", "description": "High-level model-picker API. When `modelOptions` is non-empty, the chat\ncomposition renders a `` inside the input pill (in BOTH\nwelcome and conversation modes), wired to the two-way `selectedModel`\nmodel. Consumers who want full control should leave `modelOptions`\nempty and project a `` themselves.", "optional": false }, { "name": "modelPickerPlaceholder", "type": "InputSignal", "description": "", "optional": false }, { "name": "pinned", "type": "WritableSignal", "description": "", "optional": false }, { "name": "rate", "type": "OutputEmitterRef", "description": "Emitted when the user rates an assistant message.", "optional": false }, { "name": "regenerate", "type": "OutputEmitterRef", "description": "Emitted when the user clicks the regenerate button on an assistant message.", "optional": false }, { "name": "renderEvent", "type": "OutputEmitterRef", "description": "", "optional": false }, { "name": "renderRegistry", "type": "Signal", "description": "", "optional": false }, { "name": "resolvedStore", "type": "Signal", "description": "", "optional": false }, { "name": "selectedModel", "type": "ModelSignal", "description": "", "optional": false }, { "name": "showModelPicker", "type": "InputSignal", "description": "When `false`, hide the auto-rendered model picker even when\n`modelOptions` is non-empty. Useful in cramped surfaces (popup,\nsidebar) where the picker crowds the input. Defaults to `true`.\nHas no effect when consumers project their own\n`` via content projection.", "optional": false }, { "name": "showWelcome", "type": "Signal", "description": "", "optional": false }, { "name": "store", "type": "InputSignal", "description": "", "optional": false }, { "name": "threads", "type": "InputSignal", "description": "", "optional": false }, { "name": "threadSelected", "type": "OutputEmitterRef", "description": "", "optional": false }, { "name": "views", "type": "InputSignal | RenderViewEntry>> | undefined>", "description": "", "optional": false }, { "name": "viewToolNames", "type": "Signal", "description": "Tool names that have a registered view (keys of the effective view\n registry, including client-declared view/ask tools). These render as\n inline tool-views and are excluded from the default tool-call card so\n they don't render twice.", "optional": false }, { "name": "welcomeDisabled", "type": "InputSignal", "description": "", "optional": false } ], "methods": [ { "name": "classifyMessage", "signature": "classifyMessage(content: string, message: Pick): ContentClassifier", "description": "", "params": [ { "name": "content", "type": "string", "description": "", "optional": false }, { "name": "message", "type": "Pick", "description": "", "optional": false } ] }, { "name": "clearClassifiers", "signature": "clearClassifiers(): void", "description": "", "params": [] }, { "name": "clearThread", "signature": "clearThread(): void", "description": "Clears local view state (classifiers, surface store, lifecycle counters)\nfor a new thread.\n\nResets messageCount to 0 and inputSubmittedAt to null. componentReady and\nfirstMessageSent are NOT reset (sticky for the chat instance lifetime).", "params": [] }, { "name": "humanContent", "signature": "humanContent(message: unknown): string", "description": "Renderable content for a human-role message bubble. Most human\nmessages are typed prompts and pass through `messageContent`\nunchanged. A2UI action messages (e.g. form submits, button clicks\non a rendered surface) flow through the same submit channel and\nland in the message stream as a HumanMessage whose content is a\nJSON-serialized `A2uiActionMessage`. Showing the raw JSON as if\nthe user typed it leaks the protocol; per the A2UI spec\nthose events resemble tool calls more than user utterances.\n\n`a2uiActionLabel` returns a short human-readable label for\nrecognized action shapes (\"Search flights\", \"Selected flight UA123\",\netc.) — or null for any non-action content, in which case we fall\nback to the original text.", "params": [ { "name": "message", "type": "unknown", "description": "", "optional": false } ] }, { "name": "isGenuiTurn", "signature": "isGenuiTurn(message: unknown, _prevMsg: unknown, index: number): boolean", "description": "True when this assistant message is part of a GenUI render turn.\nWalks backward through messages from `index` until it finds either\nan assistant message with `tool_calls` referencing a GenUI tool\n(→ this turn produces a surface) or a human message (→ the\npreceding turn ended; this assistant message stands on its own).\n\nAlso checks the message itself for:\n - `extra.tool_calls[].name` matching a GenUI tool (post-streaming\n state of the tool-call AI message), OR\n - `extra.content[].type === 'function_call' && .name` matching\n (live during the OpenAI Responses-API streaming chunks before\n `tool_calls` populates).\n\nThe walk-back approach is robust to LangGraph's in-place\nreplacement of the ToolMessage (which strips the `name` field),\nunlike a single prev-message check.", "params": [ { "name": "message", "type": "unknown", "description": "", "optional": false }, { "name": "_prevMsg", "type": "unknown", "description": "", "optional": false }, { "name": "index", "type": "number", "description": "", "optional": true } ] }, { "name": "markdownDocumentFor", "signature": "markdownDocumentFor(content: string, message: Pick): StreamingMarkdownDocument", "description": "", "params": [ { "name": "content", "type": "string", "description": "", "optional": false }, { "name": "message", "type": "Pick", "description": "", "optional": false } ] }, { "name": "onA2uiAction", "signature": "onA2uiAction(message: A2uiActionMessage): void", "description": "", "params": [ { "name": "message", "type": "A2uiActionMessage", "description": "", "optional": false } ] }, { "name": "onA2uiEvent", "signature": "onA2uiEvent(event: RenderEvent, messageIndex: number, surfaceId: string): void", "description": "", "params": [ { "name": "event", "type": "RenderEvent", "description": "", "optional": false }, { "name": "messageIndex", "type": "number", "description": "", "optional": false }, { "name": "surfaceId", "type": "string", "description": "", "optional": false } ] }, { "name": "onClientToolEvent", "signature": "onClientToolEvent(event: RenderEvent): void", "description": "Forwards a render event bubbled up from a `` component\n(a client-declared `view`/`ask` tool's rendered UI) to the client-tools\ncoordinator. The coordinator resolves the matching pending `ask` tool call\nwhen the event is a `result`. No-op when no client tools are wired.", "params": [ { "name": "event", "type": "RenderEvent", "description": "", "optional": false } ] }, { "name": "onCopy", "signature": "onCopy(message: unknown, content: string): void", "description": "", "params": [ { "name": "message", "type": "unknown", "description": "", "optional": false }, { "name": "content", "type": "string", "description": "", "optional": false } ] }, { "name": "onRate", "signature": "onRate(message: unknown, value: \"up\" | \"down\"): void", "description": "", "params": [ { "name": "message", "type": "unknown", "description": "", "optional": false }, { "name": "value", "type": "\"up\" | \"down\"", "description": "", "optional": false } ] }, { "name": "onRegenerate", "signature": "onRegenerate(messageIndex: number): void", "description": "Regenerate the assistant response at the given message index.", "params": [ { "name": "messageIndex", "type": "number", "description": "", "optional": false } ] }, { "name": "onScroll", "signature": "onScroll(): void", "description": "", "params": [] }, { "name": "onScrollBubbleClick", "signature": "onScrollBubbleClick(): void", "description": "", "params": [] }, { "name": "onSpecEvent", "signature": "onSpecEvent(event: RenderEvent, messageIndex: number): void", "description": "", "params": [ { "name": "event", "type": "RenderEvent", "description": "", "optional": false }, { "name": "messageIndex", "type": "number", "description": "", "optional": false } ] }, { "name": "onUserSubmitted", "signature": "onUserSubmitted(): void", "description": "", "params": [] }, { "name": "prevMessage", "signature": "prevMessage(index: number): unknown", "description": "Look up the previous message in the agent's messages list.\nReturns undefined for the first message.", "params": [ { "name": "index", "type": "number", "description": "", "optional": false } ] }, { "name": "prevRole", "signature": "prevRole(index: number): ChatMessageRole | undefined", "description": "", "params": [ { "name": "index", "type": "number", "description": "", "optional": false } ] }, { "name": "reasoningRun", "signature": "reasoningRun(index: number): object", "description": "Aggregate the reasoning RUN starting at `index`: joins each step's\nreasoning, sums durations, counts steps, and returns the last step's\ndelivery because that step owns the current aggregate snapshot. Also\ncomputes the merged label when N > 1 (\"Thought for {total} · {N} steps\",\nor just \"{N} steps\" when no step reported timing).", "params": [ { "name": "index", "type": "number", "description": "", "optional": false } ] }, { "name": "reasoningRunStart", "signature": "reasoningRunStart(index: number): boolean", "description": "True when message[index] starts a reasoning RUN — a maximal sequence of\nconsecutive assistant reasoning steps separated only by (hidden) tool\nmessages. The merged reasoning pill renders once, here.", "params": [ { "name": "index", "type": "number", "description": "", "optional": false } ] }, { "name": "submitMessage", "signature": "submitMessage(text: string): void", "description": "Programmatic submit. Calls `agent.submit({ message: text })` and updates\nthe CHAT_LIFECYCLE signals. Trimmed-empty text is a no-op.", "params": [ { "name": "text", "type": "string", "description": "", "optional": false } ] } ] }, { "name": "ChatConfirmDialogComponent", "kind": "class", "description": "", "params": [], "examples": [], "properties": [ { "name": "body", "type": "InputSignal", "description": "", "optional": false }, { "name": "bodyId", "type": "string", "description": "", "optional": false }, { "name": "cancelLabel", "type": "InputSignal", "description": "", "optional": false }, { "name": "cancelled", "type": "OutputEmitterRef", "description": "", "optional": false }, { "name": "confirmed", "type": "OutputEmitterRef", "description": "", "optional": false }, { "name": "confirmLabel", "type": "InputSignal", "description": "", "optional": false }, { "name": "open", "type": "InputSignal", "description": "", "optional": false }, { "name": "title", "type": "InputSignal", "description": "", "optional": false }, { "name": "titleId", "type": "string", "description": "", "optional": false }, { "name": "tone", "type": "InputSignal<\"normal\" | \"destructive\">", "description": "", "optional": false } ], "methods": [ { "name": "onDialogKeydown", "signature": "onDialogKeydown(e: KeyboardEvent): void", "description": "", "params": [ { "name": "e", "type": "KeyboardEvent", "description": "", "optional": false } ] } ] }, { "name": "ChatConnectedOverlayDirective", "kind": "class", "description": "Applied to an ``. When `chatOverlayOpen` is true, the template\ncontent is portaled into the shared body-level overlay container and\npositioned connected to `chatOverlayOrigin`, repositioning live on\nscroll/resize. Closes on outside mousedown (via the `chatOverlayOutsideClick`\noutput) and Tab; returns focus to the origin when focus was inside the pane.\n\nNOTE: the directive does not own the open state — it only emits. To fully\nclose the overlay, consumers MUST handle BOTH `(chatOverlayOutsideClick)` and\n`(chatOverlayDetach)`. Tab-close (and Escape, when the consumer routes it)\nsurface through `chatOverlayDetach`, so wiring only `chatOverlayOutsideClick`\nleaves the overlay stuck open on Tab.", "params": [], "examples": [], "properties": [ { "name": "attached", "type": "OutputEmitterRef", "description": "Emits the pane element once attached (consumers focus content from it).", "optional": false }, { "name": "detached", "type": "OutputEmitterRef", "description": "", "optional": false }, { "name": "open", "type": "InputSignal", "description": "", "optional": false }, { "name": "origin", "type": "InputSignal>", "description": "", "optional": false }, { "name": "outsideClick", "type": "OutputEmitterRef", "description": "", "optional": false }, { "name": "panelClass", "type": "InputSignal", "description": "", "optional": false }, { "name": "positions", "type": "InputSignal", "description": "", "optional": false } ], "methods": [] }, { "name": "ChatErrorComponent", "kind": "class", "description": "", "params": [], "examples": [], "properties": [ { "name": "agent", "type": "InputSignal>", "description": "", "optional": false } ], "methods": [] }, { "name": "ChatGenerativeUiComponent", "kind": "class", "description": "", "params": [], "examples": [], "properties": [ { "name": "events", "type": "OutputEmitterRef", "description": "", "optional": false }, { "name": "handlers", "type": "InputSignal) => unknown> | undefined>", "description": "", "optional": false }, { "name": "loading", "type": "InputSignal", "description": "", "optional": false }, { "name": "normalizedSpec", "type": "Signal", "description": "The bound spec with schema-documented `{ statePath }` prop refs\nrewritten to engine-native `{ $bindState }` + `_bindings` so values\nresolve against the state store instead of interpolating as\n\"[object Object]\" (F4).", "optional": false }, { "name": "registry", "type": "InputSignal", "description": "", "optional": false }, { "name": "spec", "type": "InputSignal", "description": "", "optional": false }, { "name": "store", "type": "InputSignal", "description": "", "optional": false } ], "methods": [] }, { "name": "ChatGenuiSkeletonComponent", "kind": "class", "description": "", "params": [], "examples": [], "properties": [], "methods": [] }, { "name": "ChatHistorySearchPaletteComponent", "kind": "class", "description": "", "params": [], "examples": [], "properties": [ { "name": "activeIndex", "type": "WritableSignal", "description": "", "optional": false }, { "name": "closed", "type": "OutputEmitterRef", "description": "", "optional": false }, { "name": "listId", "type": "string", "description": "", "optional": false }, { "name": "loading", "type": "InputSignal", "description": "", "optional": false }, { "name": "open", "type": "ModelSignal", "description": "", "optional": false }, { "name": "placeholder", "type": "InputSignal", "description": "", "optional": false }, { "name": "query", "type": "ModelSignal", "description": "", "optional": false }, { "name": "results", "type": "InputSignal", "description": "", "optional": false }, { "name": "threadSelected", "type": "OutputEmitterRef", "description": "", "optional": false } ], "methods": [ { "name": "activeRowId", "signature": "activeRowId(): string | null", "description": "", "params": [] }, { "name": "onInput", "signature": "onInput(e: Event): void", "description": "", "params": [ { "name": "e", "type": "Event", "description": "", "optional": false } ] }, { "name": "onInputKeydown", "signature": "onInputKeydown(e: KeyboardEvent): void", "description": "", "params": [ { "name": "e", "type": "KeyboardEvent", "description": "", "optional": false } ] }, { "name": "onRowClick", "signature": "onRowClick(id: string): void", "description": "", "params": [ { "name": "id", "type": "string", "description": "", "optional": false } ] }, { "name": "rowId", "signature": "rowId(index: number): string", "description": "", "params": [ { "name": "index", "type": "number", "description": "", "optional": false } ] } ] }, { "name": "ChatInputComponent", "kind": "class", "description": "", "params": [], "examples": [], "properties": [ { "name": "agent", "type": "InputSignal>", "description": "", "optional": false }, { "name": "canStop", "type": "Signal", "description": "The stop button only appears when the consumer opted in AND we're loading.", "optional": false }, { "name": "canSubmit", "type": "Signal", "description": "Submit is allowed only when not loading and there's non-whitespace text.", "optional": false }, { "name": "composing", "type": "WritableSignal", "description": "True while an IME composition (CJK input, accent, autocorrect) is active.", "optional": false }, { "name": "focused", "type": "WritableSignal", "description": "", "optional": false }, { "name": "isLoading", "type": "Signal", "description": "", "optional": false }, { "name": "messageText", "type": "WritableSignal", "description": "", "optional": false }, { "name": "placeholder", "type": "InputSignal", "description": "", "optional": false }, { "name": "showStopButton", "type": "InputSignal", "description": "When true (default), shows a stop button while the agent is streaming.", "optional": false }, { "name": "stopped", "type": "OutputEmitterRef", "description": "", "optional": false }, { "name": "submitOnEnter", "type": "InputSignal", "description": "", "optional": false }, { "name": "submitted", "type": "OutputEmitterRef", "description": "", "optional": false } ], "methods": [ { "name": "focusTextarea", "signature": "focusTextarea(): void", "description": "", "params": [] }, { "name": "onInput", "signature": "onInput(event: Event): void", "description": "Sync the textarea's value into the signal on user input. A direct\n [value]/(input) pair is used instead of ngModel: NgModel does not\n reliably write a programmatic clear back to the view under zoneless\n + OnPush, leaving sent text visible in the composer (audit F1).", "params": [ { "name": "event", "type": "Event", "description": "", "optional": false } ] }, { "name": "onKeydown", "signature": "onKeydown(event: KeyboardEvent): void", "description": "", "params": [ { "name": "event", "type": "KeyboardEvent", "description": "", "optional": false } ] }, { "name": "onStop", "signature": "onStop(): void", "description": "Abort the current streaming response (if the adapter supports it).", "params": [] }, { "name": "onSubmit", "signature": "onSubmit(): void", "description": "", "params": [] } ] }, { "name": "ChatInterruptComponent", "kind": "class", "description": "", "params": [], "examples": [], "properties": [ { "name": "agent", "type": "InputSignal>", "description": "", "optional": false }, { "name": "interrupt", "type": "Signal", "description": "", "optional": false }, { "name": "templateRef", "type": "Signal | undefined>", "description": "", "optional": false } ], "methods": [ { "name": "defaultText", "signature": "defaultText(i: AgentInterrupt): string", "description": "", "params": [ { "name": "i", "type": "AgentInterrupt", "description": "", "optional": false } ] } ] }, { "name": "ChatInterruptPanelComponent", "kind": "class", "description": "", "params": [], "examples": [], "properties": [ { "name": "action", "type": "OutputEmitterRef", "description": "", "optional": false }, { "name": "agent", "type": "InputSignal>", "description": "", "optional": false }, { "name": "interrupt", "type": "Signal", "description": "", "optional": false }, { "name": "interruptReason", "type": "Signal", "description": "", "optional": false } ], "methods": [] }, { "name": "ChatLauncherButtonComponent", "kind": "class", "description": "", "params": [], "examples": [], "properties": [ { "name": "clicked", "type": "OutputEmitterRef", "description": "Fires when the inner