{
  "schemaVersion": "1.0.0",
  "generatedAt": "2026-09-07T00:54:55.301Z",
  "packageName": "@praxisui/table",
  "packageVersion": "9.0.67",
  "sourceRegistry": "praxis-component-registry-ingestion",
  "sourceRegistryVersion": "1.0.0",
  "componentCount": 3,
  "components": {
    "praxis-filter": {
      "id": "praxis-filter",
      "description": "Filtro metadata-driven hospedável em páginas dinâmicas, adequado para superfícies analíticas, operacionais e workflows orientados a busca.",
      "inputs": [
        {
          "name": "resourcePath",
          "type": "string",
          "required": false,
          "description": "Endpoint base usado para resolver o schema de filtros e os metadados remotos."
        },
        {
          "name": "apiUrlEntry",
          "type": "ApiUrlEntry | null",
          "required": false,
          "description": "Origem explícita da API para hosts destacados que renderizam o filtro fora do injector de rota."
        },
        {
          "name": "fieldMetadata",
          "type": "FieldMetadata[] | null",
          "required": false,
          "description": "Metadata estático opcional para uso offline, showcases ou hosts sem schema remoto."
        },
        {
          "name": "filterId",
          "type": "string",
          "required": false,
          "description": "Identificador opcional do filtro para persistência e observabilidade."
        },
        {
          "name": "formId",
          "type": "string",
          "required": false,
          "description": "Identificador do formulário avançado usado pelo runtime do filtro."
        },
        {
          "name": "componentInstanceId",
          "type": "string",
          "required": false,
          "description": "Identificador estável quando há múltiplas instâncias do filtro na mesma página."
        },
        {
          "name": "enableCustomization",
          "type": "boolean",
          "required": false,
          "description": "Habilita affordances de customização e governança de schema no runtime do filtro.",
          "default": false
        },
        {
          "name": "showFilterSettings",
          "type": "boolean",
          "required": false,
          "description": "Exibe o botão de configurações do filtro para hosts que desejam authoring visual embutido.",
          "default": false
        },
        {
          "name": "showAdvancedButton",
          "type": "boolean",
          "required": false,
          "description": "Controla se a barra mostra o botão de filtros avançados.",
          "default": true
        },
        {
          "name": "showAddButton",
          "type": "boolean",
          "required": false,
          "description": "Controla se a barra mostra o seletor para adicionar campos de filtro ao runtime.",
          "default": true
        },
        {
          "name": "showClearButton",
          "type": "boolean",
          "required": false,
          "description": "Controla se a barra mostra a ação para limpar o DTO de filtros atual.",
          "default": true
        },
        {
          "name": "showSearchButton",
          "type": "boolean",
          "required": false,
          "description": "Controla se a barra mostra uma ação explícita de busca além das emissões de change/submit.",
          "default": false
        },
        {
          "name": "value",
          "type": "Record<string, any>",
          "required": false,
          "description": "DTO atual do filtro aplicado pelo host."
        },
        {
          "name": "alwaysVisibleFields",
          "type": "string[]",
          "required": false,
          "description": "Campos priorizados na barra inline do filtro para cenários de busca recorrente."
        },
        {
          "name": "alwaysVisibleFieldMetadataOverrides",
          "type": "Record<string, Record<string, any>>",
          "required": false,
          "description": "Overrides de metadata para refinar UX inline por página sem redefinir o contrato canônico."
        },
        {
          "name": "selectedFieldIds",
          "type": "string[]",
          "required": false,
          "description": "Lista adicional de campos expostos ao usuário além dos always-visible."
        },
        {
          "name": "persistenceKey",
          "type": "string",
          "required": false,
          "description": "Chave de persistência do estado do filtro quando o host desejar continuidade entre sessões."
        },
        {
          "name": "disablePersistence",
          "type": "boolean",
          "required": false,
          "description": "Desliga a persistência local do filtro em hosts efêmeros ou publicados.",
          "default": false
        },
        {
          "name": "changeDebounceMs",
          "type": "number",
          "required": false,
          "description": "Janela de debounce para emissões de change/submit.",
          "default": 300
        },
        {
          "name": "tags",
          "type": "FilterTag[]",
          "required": false,
          "description": "Atalhos de filtros fornecidos pelo host."
        },
        {
          "name": "allowSaveTags",
          "type": "boolean",
          "required": false,
          "description": "Permite salvar novos atalhos diretamente no runtime do filtro.",
          "default": false
        },
        {
          "name": "i18n",
          "type": "Partial<I18n>",
          "required": false,
          "description": "Overrides de copy do filtro para encaixe editorial em diferentes tipos de página."
        },
        {
          "name": "placeBooleansInActions",
          "type": "boolean",
          "required": false,
          "description": "Move toggles simples para a área de ações quando a densidade da página exigir barra mais enxuta.",
          "default": false
        },
        {
          "name": "advancedOpenMode",
          "type": "'modal' | 'drawer'",
          "required": false,
          "description": "Modo de abertura do formulário avançado.",
          "default": "modal"
        }
      ],
      "outputs": [
        {
          "name": "submit",
          "type": "Record<string, any>",
          "required": false,
          "description": "DTO submetido pelo usuário."
        },
        {
          "name": "requestSearch",
          "type": "Record<string, any>",
          "required": false,
          "description": "Evento canônico de busca emitido pelo filtro para hosts metadata-driven."
        },
        {
          "name": "change",
          "type": "Record<string, any>",
          "required": false,
          "description": "DTO parcial emitido durante alterações locais."
        },
        {
          "name": "contextChange",
          "type": "PraxisFilterViewContext",
          "required": false,
          "description": "Projeção de apresentação com o DTO canônico e os rótulos resolvidos para composição de página; não deve ser enviada ao backend."
        },
        {
          "name": "clear",
          "type": "void",
          "required": false,
          "description": "Emitido quando o usuário limpa o filtro atual."
        },
        {
          "name": "tagsChange",
          "type": "FilterTag[]",
          "required": false,
          "description": "Emitido quando atalhos salvos/predefinidos são alterados."
        },
        {
          "name": "selectedFieldIdsChange",
          "type": "string[]",
          "required": false,
          "description": "Emitido quando o usuário confirma em Aplicar uma nova curadoria de campos visíveis; alterações provisórias e canceladas não emitem o evento."
        },
        {
          "name": "metaChanged",
          "type": "{ schemaId: string; serverHash?: string; context: SchemaIdParams }",
          "required": false,
          "description": "Propaga metadados do schema efetivamente usado pelo filtro."
        },
        {
          "name": "schemaStatusChange",
          "type": "{ outdated: boolean; serverHash?: string; lastVerifiedAt?: string; formId?: string }",
          "required": false,
          "description": "Sinaliza drift de schema para hosts que precisam reagir operacionalmente."
        }
      ],
      "configSchemaId": "FieldMetadata",
      "selector": "praxis-filter",
      "friendlyName": "Praxis Filter",
      "icon": "tune",
      "tags": [
        "widget",
        "filter",
        "search",
        "metadata-driven",
        "hostable"
      ],
      "lib": "@praxisui/table",
      "layoutHints": {
        "recommendedCols": 12,
        "recommendedRows": 3,
        "minCols": 6,
        "minRows": 2
      },
      "actions": [
        {
          "id": "request-search",
          "label": "Pesquisar",
          "icon": "search",
          "description": "Solicita a execução da busca com o DTO atual do filtro.",
          "emit": "requestSearch",
          "scope": "toolbar"
        },
        {
          "id": "clear-filter",
          "label": "Limpar",
          "icon": "filter_alt_off",
          "description": "Solicita a limpeza do estado atual do filtro.",
          "emit": "clear",
          "scope": "toolbar"
        }
      ],
      "ports": [
        {
          "id": "value",
          "label": "Filter Value",
          "direction": "input",
          "semanticKind": "value",
          "schema": {
            "id": "Record<string, any>",
            "kind": "ts-type",
            "ref": "Record<string, any>"
          },
          "description": "Controlled filter DTO applied by the host.",
          "exposure": {
            "public": true,
            "group": "data"
          }
        },
        {
          "id": "change",
          "label": "Filter Change",
          "direction": "output",
          "semanticKind": "event",
          "schema": {
            "id": "Record<string, any>",
            "kind": "ts-type",
            "ref": "Record<string, any>"
          },
          "cardinality": "stream",
          "description": "Filter DTO emitted after a local value change.",
          "exposure": {
            "public": true,
            "group": "events"
          },
          "resourceQueryFieldSource": {
            "resourcePath": "resourcePath",
            "apiUrlEntry": "apiUrlEntry",
            "fieldPaths": [
              "alwaysVisibleFields",
              "selectedFieldIds"
            ],
            "schemaOperation": {
              "operationId": "filter",
              "method": "POST",
              "pathSuffix": "filter",
              "requestFieldPath": "$"
            }
          }
        },
        {
          "id": "requestSearch",
          "label": "Request Search",
          "direction": "output",
          "semanticKind": "event",
          "schema": {
            "id": "Record<string, any>",
            "kind": "ts-type",
            "ref": "Record<string, any>"
          },
          "cardinality": "stream",
          "description": "Canonical search request carrying the current filter DTO.",
          "exposure": {
            "public": true,
            "group": "events"
          },
          "resourceQueryFieldSource": {
            "resourcePath": "resourcePath",
            "apiUrlEntry": "apiUrlEntry",
            "fieldPaths": [
              "alwaysVisibleFields",
              "selectedFieldIds"
            ],
            "schemaOperation": {
              "operationId": "filter",
              "method": "POST",
              "pathSuffix": "filter",
              "requestFieldPath": "$"
            }
          }
        },
        {
          "id": "contextChange",
          "label": "Filter View Context",
          "direction": "output",
          "semanticKind": "view-context",
          "schema": {
            "id": "PraxisFilterViewContext",
            "kind": "ts-type",
            "ref": "PraxisFilterViewContext"
          },
          "cardinality": "stream",
          "description": "Presentation projection with the canonical filter DTO and display labels resolved from field metadata and option sources.",
          "exposure": {
            "public": true,
            "group": "events"
          }
        },
        {
          "id": "clear",
          "label": "Clear Filter",
          "direction": "output",
          "semanticKind": "event",
          "schema": {
            "id": "void",
            "kind": "ts-type",
            "ref": "void"
          },
          "cardinality": "stream",
          "description": "Event emitted after the current filter DTO is cleared.",
          "exposure": {
            "public": true,
            "group": "events"
          }
        }
      ],
      "configEditor": {
        "component": "[ref:PraxisFilterWidgetConfigEditor]",
        "title": "Configurar filtro"
      },
      "authoringManifestRef": {
        "componentId": "praxis-filter",
        "version": "1.0.0",
        "source": "PRAXIS_FILTER_AUTHORING_MANIFEST"
      },
      "source": "projects/praxis-table/src/lib/components/praxis-filter/praxis-filter.metadata.ts",
      "exportName": "PRAXIS_FILTER_COMPONENT_METADATA",
      "capabilities": [
        {
          "path": "id",
          "category": "identity",
          "valueKind": "string",
          "description": "Identificador unico da instancia do componente.",
          "intentExamples": [
            "id do componente",
            "definir id fixo"
          ]
        },
        {
          "path": "version",
          "category": "identity",
          "valueKind": "string",
          "description": "Versao do schema de metadata (migracao).",
          "intentExamples": [
            "versao do metadata",
            "ajustar versao"
          ]
        },
        {
          "path": "context",
          "category": "identity",
          "valueKind": "enum",
          "allowedValues": [
            "form",
            "filter",
            "table",
            "dialog",
            "standalone"
          ],
          "description": "Contexto de uso do componente (form/filter/table/dialog/standalone).",
          "intentExamples": [
            "contexto form",
            "usar em tabela"
          ]
        },
        {
          "path": "createdAt",
          "category": "misc",
          "valueKind": "string",
          "description": "Timestamp de criacao (ISO).",
          "safetyNotes": "Valor de auditoria; preferir preenchimento pelo host."
        },
        {
          "path": "updatedAt",
          "category": "misc",
          "valueKind": "string",
          "description": "Timestamp de atualizacao (ISO).",
          "safetyNotes": "Valor de auditoria; preferir preenchimento pelo host."
        },
        {
          "path": "tags",
          "category": "identity",
          "valueKind": "array",
          "description": "Tags para categorizacao e busca.",
          "intentExamples": [
            "tag para busca",
            "categorizar campo"
          ]
        },
        {
          "path": "cssClass",
          "category": "appearance",
          "valueKind": "string",
          "description": "Classe CSS aplicada ao host do componente.",
          "intentExamples": [
            "classe custom",
            "aplicar classe"
          ]
        },
        {
          "path": "style",
          "category": "appearance",
          "valueKind": "object",
          "description": "Estilos inline (objeto CSS).",
          "safetyNotes": "Validar chaves e valores CSS permitidos."
        },
        {
          "path": "dataAttributes",
          "category": "data",
          "valueKind": "object",
          "description": "Data attributes para teste/analytics.",
          "intentExamples": [
            "data-testid",
            "atributos de tracking"
          ]
        },
        {
          "path": "name",
          "category": "identity",
          "valueKind": "string",
          "description": "Identificador único do campo. Essencial para binding.",
          "critical": true,
          "intentExamples": [
            "nomear campo como email",
            "id do campo"
          ]
        },
        {
          "path": "label",
          "category": "identity",
          "valueKind": "string",
          "description": "Rótulo principal exibido para o usuário.",
          "intentExamples": [
            "alterar label",
            "mudar texto do rótulo"
          ]
        },
        {
          "path": "placeholder",
          "category": "identity",
          "valueKind": "string",
          "description": "Texto temporário exibido quando vazio.",
          "intentExamples": [
            "adicionar placeholder",
            "texto de ajuda no input"
          ]
        },
        {
          "path": "hint",
          "category": "identity",
          "valueKind": "string",
          "description": "Texto de ajuda exibido abaixo do campo.",
          "intentExamples": [
            "colocar dica",
            "ajuda no rodapé do campo"
          ]
        },
        {
          "path": "helpText",
          "category": "identity",
          "valueKind": "string",
          "description": "Texto semântico de ajuda publicado pelo schema/DTO.",
          "intentExamples": [
            "explicar regra de negócio do campo",
            "ajuda vinda do backend"
          ]
        },
        {
          "path": "tooltip",
          "category": "identity",
          "valueKind": "string",
          "description": "Texto exibido ao passar o mouse.",
          "intentExamples": [
            "adicionar tooltip"
          ]
        },
        {
          "path": "tooltipOnHover",
          "category": "identity",
          "valueKind": "boolean",
          "description": "Habilita apresentação do tooltip no hover quando suportado pelo renderer.",
          "intentExamples": [
            "mostrar tooltip ao passar o mouse",
            "ativar dica no hover"
          ]
        },
        {
          "path": "description",
          "category": "identity",
          "valueKind": "string",
          "description": "Descrição detalhada (usada em documentação ou helps extensos).",
          "intentExamples": [
            "descrição completa do campo",
            "texto explicativo longo",
            "documentação do input"
          ]
        },
        {
          "path": "selectionMode",
          "category": "behavior",
          "valueKind": "enum",
          "allowedValues": [
            "boolean",
            "single",
            "multiple"
          ],
          "description": "Semântica de seleção explícita para controles de escolha.",
          "intentExamples": [
            "checkbox booleano",
            "radio de escolha única",
            "grupo múltiplo"
          ]
        },
        {
          "path": "variant",
          "category": "appearance",
          "valueKind": "string",
          "description": "Variante visual/semântica do controle.",
          "intentExamples": [
            "variante consent",
            "modo compact",
            "apresentação em tiles"
          ]
        },
        {
          "path": "density",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "compact",
            "comfortable",
            "spacious"
          ],
          "description": "Densidade visual do shell do controle.",
          "intentExamples": [
            "deixar mais compacto",
            "usar densidade confortável",
            "mais espaçado"
          ]
        },
        {
          "path": "links",
          "category": "identity",
          "valueKind": "array",
          "description": "Links ricos associados ao campo, úteis em consentimentos e conteúdo legal.",
          "intentExamples": [
            "adicionar link da política",
            "incluir termos de uso",
            "anexar link institucional"
          ]
        },
        {
          "path": "group",
          "category": "identity",
          "valueKind": "string",
          "description": "Agrupador lógico do campo.",
          "intentExamples": [
            "agrupar em Dados Pessoais",
            "colocar no grupo de endereço",
            "categoria do campo"
          ]
        },
        {
          "path": "order",
          "category": "layout",
          "valueKind": "number",
          "description": "Ordem de exibição do campo.",
          "intentExamples": [
            "mover para o final",
            "reordenar campo",
            "exibir primeiro",
            "posição 3"
          ]
        },
        {
          "path": "width",
          "category": "layout",
          "valueKind": "string",
          "description": "Largura do campo (ex: 50%, 100px).",
          "intentExamples": [
            "campo meia largura",
            "largura fixa 200px",
            "ocupar 50%",
            "width total"
          ]
        },
        {
          "path": "isFlex",
          "category": "layout",
          "valueKind": "boolean",
          "description": "Se true, usa flex-grow para preencher espaço.",
          "intentExamples": [
            "preencher espaço sobrando",
            "campo flexível",
            "expandir para caber"
          ]
        },
        {
          "path": "controlType",
          "category": "behavior",
          "valueKind": "enum",
          "description": "Tipo do componente de UI (input, select, datepicker, etc).",
          "critical": true,
          "safetyNotes": "Mudar controlType pode invalidar propriedades específicas do componente anterior. Aplique o overlay de microcomponente correspondente.",
          "intentExamples": [
            "mudar para select",
            "usar datepicker",
            "transformar em checkbox",
            "tipo do controle"
          ]
        },
        {
          "path": "dataType",
          "category": "data",
          "valueKind": "enum",
          "description": "Tipo de dado do campo (text, number, date, etc).",
          "intentExamples": [
            "tipo de dado numero",
            "campo de data"
          ]
        },
        {
          "path": "source",
          "category": "data",
          "valueKind": "enum",
          "allowedValues": [
            "schema",
            "local"
          ],
          "description": "Origem semântica do campo. Use local para campos do host que não vêm do schema backend.",
          "intentExamples": [
            "campo local",
            "campo auxiliar do host",
            "campo que não vem do schema"
          ],
          "safetyNotes": "Não marque como local um campo que exista no schema backend; remova a semântica local quando houver colisão com campo server-backed."
        },
        {
          "path": "transient",
          "category": "data",
          "valueKind": "boolean",
          "description": "Marca o campo como temporário/local para preenchimento. O dynamic-form omite do submit por padrão.",
          "intentExamples": [
            "campo temporário",
            "campo transient",
            "não enviar no payload",
            "usar apenas na UI"
          ],
          "safetyNotes": "Campos transient continuam participando de UI, validação, regras, visibilidade e valueChange; eles apenas saem do payload persistido por padrão."
        },
        {
          "path": "submitPolicy",
          "category": "behavior",
          "valueKind": "enum",
          "allowedValues": [
            "include",
            "omit",
            "includeWhenDirty"
          ],
          "description": "Política de submit para sobrescrever o padrão de campos locais/transient.",
          "intentExamples": [
            "omitir do submit",
            "enviar mesmo sendo local",
            "enviar apenas se alterado"
          ],
          "safetyNotes": "Use omit para nunca persistir, include para enviar sempre e includeWhenDirty apenas quando o controle estiver dirty."
        },
        {
          "path": "materialDesign.appearance",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "fill",
            "outline"
          ],
          "description": "Aparência do campo Material (fill/outline).",
          "intentExamples": [
            "estilo outline",
            "aparência preenchida",
            "campo com borda"
          ]
        },
        {
          "path": "materialDesign.color",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "primary",
            "accent",
            "warn"
          ],
          "description": "Tema de cor Material (primary/accent/warn).",
          "intentExamples": [
            "cor primária",
            "destacar com accent"
          ]
        },
        {
          "path": "materialDesign.floatLabel",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "auto",
            "always",
            "never"
          ],
          "description": "Comportamento do rótulo flutuante.",
          "intentExamples": [
            "label sempre flutuando",
            "nunca flutuar label"
          ]
        },
        {
          "path": "materialDesign.subscriptSizing",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "fixed",
            "dynamic"
          ],
          "description": "Estratégia de sizing do subscript (erros/hints)."
        },
        {
          "path": "materialDesign.hideRequiredMarker",
          "category": "appearance",
          "valueKind": "boolean",
          "description": "Oculta o asterisco de campo obrigatório."
        },
        {
          "path": "materialDesign.density",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "comfortable",
            "compact",
            "dense"
          ],
          "description": "Densidade do campo Material."
        },
        {
          "path": "materialDesign.disableRipple",
          "category": "appearance",
          "valueKind": "boolean",
          "description": "Desativa ripple/ondulação em componentes Material."
        },
        {
          "path": "materialDesign.customPalette",
          "category": "appearance",
          "valueKind": "object",
          "description": "Override de paleta (primary/accent/warn).",
          "safetyNotes": "Use cores válidas; validar contra o tema."
        },
        {
          "path": "materialDesign.animations",
          "category": "appearance",
          "valueKind": "object",
          "description": "Configuração de animações (disable, duration, easing)."
        },
        {
          "path": "prefixIcon",
          "category": "appearance",
          "valueKind": "string",
          "description": "Ícone exibido antes do valor.",
          "intentExamples": [
            "ícone de usuário no início",
            "prefixar ícone",
            "imagem antes do texto"
          ]
        },
        {
          "path": "suffixIcon",
          "category": "appearance",
          "valueKind": "string",
          "description": "Ícone exibido depois do valor.",
          "intentExamples": [
            "ícone de busca no final",
            "sufixar ícone",
            "botão de ação no fim"
          ]
        },
        {
          "path": "iconPosition",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "start",
            "end"
          ],
          "description": "Posição preferencial do ícone principal.",
          "intentExamples": [
            "ícone à esquerda",
            "posicionar ícone no fim"
          ]
        },
        {
          "path": "iconSize",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "small",
            "medium",
            "large"
          ],
          "description": "Tamanho do ícone.",
          "intentExamples": [
            "ícone pequeno",
            "aumentar tamanho do ícone",
            "ícone grande"
          ]
        },
        {
          "path": "iconColor",
          "category": "appearance",
          "valueKind": "string",
          "description": "Cor semântica ou token de cor aplicado ao ícone principal.",
          "intentExamples": [
            "ícone em cor primária",
            "usar token do tema no ícone"
          ]
        },
        {
          "path": "iconClass",
          "category": "appearance",
          "valueKind": "string",
          "description": "Classe CSS controlada pelo host para o ícone principal.",
          "intentExamples": [
            "usar classe de ícone outlined",
            "aplicar classe corporativa"
          ]
        },
        {
          "path": "iconStyle",
          "category": "appearance",
          "valueKind": "string",
          "description": "Estilo visual semântico do ícone quando o renderer suportar variações.",
          "intentExamples": [
            "usar ícone arredondado",
            "aplicar estilo filled"
          ]
        },
        {
          "path": "iconFontSize",
          "category": "appearance",
          "valueKind": "string",
          "description": "Tamanho tipográfico do ícone principal.",
          "intentExamples": [
            "ícone com 18px",
            "ajustar tamanho do ícone"
          ]
        },
        {
          "path": "valuePresentation",
          "category": "appearance",
          "valueKind": "object",
          "description": "Formato canonico de exibicao em superficies readonly/display, como moeda, numero, percentual, data, datetime, time e boolean.",
          "safetyNotes": "Preferir este contrato a formatadores legados quando a intencao for apresentacao de valor.",
          "intentExamples": [
            "mostrar como moeda",
            "formatar como data longa",
            "exibir percentual"
          ]
        },
        {
          "path": "presentation",
          "category": "appearance",
          "valueKind": "object",
          "description": "Estado visual semantico base para presentationMode, incluindo presenter, tone, icon, label, badge, tooltip, appearance e formatter opcional.",
          "safetyNotes": "Use apenas semantica declarativa; nao incluir CSS arbitrario, HTML, comandos ou efeitos mutaveis.",
          "intentExamples": [
            "status com icone",
            "badge de pendente",
            "campo em tom warning"
          ]
        },
        {
          "path": "presentation.presenter",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "text",
            "badge",
            "chip",
            "status",
            "iconValue",
            "progress",
            "rating",
            "microVisualization"
          ],
          "description": "Tipo semantico de renderizacao em modo apresentacao.",
          "intentExamples": [
            "renderizar como status",
            "usar chip",
            "mostrar icone com valor"
          ]
        },
        {
          "path": "presentation.tone",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "neutral",
            "info",
            "success",
            "warning",
            "danger"
          ],
          "description": "Tom semantico mapeado pelo consumidor para tokens de tema.",
          "intentExamples": [
            "tom de sucesso",
            "tom de alerta",
            "tom de erro"
          ]
        },
        {
          "path": "presentation.appearance",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "plain",
            "soft",
            "outlined",
            "filled"
          ],
          "description": "Nivel de enfase visual do apresentador.",
          "intentExamples": [
            "status preenchido",
            "badge contornado",
            "chip suave"
          ]
        },
        {
          "path": "presentation.icon",
          "category": "appearance",
          "valueKind": "string",
          "description": "Nome de icone Material Symbols usado pelo apresentador semantico.",
          "intentExamples": [
            "icone lock",
            "icone payments",
            "icone schedule"
          ]
        },
        {
          "path": "presentation.label",
          "category": "identity",
          "valueKind": "string",
          "description": "Rotulo semantico exibido por apresentadores como status, badge ou chip.",
          "intentExamples": [
            "rotulo Bloqueado",
            "texto Aprovado",
            "status Aguardando aprovacao"
          ]
        },
        {
          "path": "presentation.badge",
          "category": "appearance",
          "valueKind": "string",
          "description": "Marcador secundario opcional exibido junto ao valor em superficies de apresentacao.",
          "intentExamples": [
            "badge alto valor",
            "marcador D+35",
            "sinalizar revisao executiva"
          ]
        },
        {
          "path": "presentation.prefix",
          "category": "appearance",
          "valueKind": "string",
          "description": "Prefixo visual readonly aplicado ao valor apresentado, sem alterar payload, filtros, ordenacao ou exportacao.",
          "safetyNotes": "Usar apenas para convencoes visuais como codigo operacional com #; nao persistir o prefixo no valor bruto.",
          "intentExamples": [
            "mostrar codigo com #",
            "prefixar protocolo com PR-"
          ]
        },
        {
          "path": "presentation.suffix",
          "category": "appearance",
          "valueKind": "string",
          "description": "Sufixo visual readonly aplicado ao valor apresentado, sem alterar payload, filtros, ordenacao ou exportacao.",
          "safetyNotes": "Usar apenas para convencoes visuais; unidades semanticas numericas devem preferir valuePresentation quando aplicavel.",
          "intentExamples": [
            "sufixo visual de referencia",
            "mostrar unidade textual curta"
          ]
        },
        {
          "path": "presentation.valuePresentation",
          "category": "appearance",
          "valueKind": "object",
          "description": "Override de formatacao aplicado apenas pela superficie de apresentacao.",
          "safetyNotes": "Nao altera o valor real do FormControl nem o payload de submit."
        },
        {
          "path": "presentation.visualization",
          "category": "appearance",
          "valueKind": "object",
          "description": "Micro visualizacao renderer-neutral para superficies compactas como tabela, lista, header, card e form read-only.",
          "safetyNotes": "Exige fallback textual e nao pode conter opcoes de ECharts, HTML, SVG bruto, CSS ou comandos.",
          "intentExamples": [
            "micro chart de SLA",
            "barra empilhada em celula",
            "bullet chart de orcamento",
            "fluxo compacto de aprovacao"
          ]
        },
        {
          "path": "presentation.visualization.kind",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "line",
            "area",
            "column",
            "comparison",
            "stackedBar",
            "radial",
            "harveyBall",
            "bullet",
            "delta",
            "processFlow"
          ],
          "description": "Tipo semantico da micro visualizacao de apresentacao.",
          "intentExamples": [
            "comparison",
            "stackedBar",
            "bullet",
            "processFlow"
          ]
        },
        {
          "path": "presentation.visualization.surface",
          "category": "layout",
          "valueKind": "enum",
          "allowedValues": [
            "table-cell",
            "list-item",
            "object-header",
            "card-summary",
            "form-presentation"
          ],
          "description": "Superficie alvo usada para aplicar regras de densidade e fallback.",
          "intentExamples": [
            "table-cell",
            "list-item",
            "form-presentation"
          ]
        },
        {
          "path": "presentation.visualization.size",
          "category": "layout",
          "valueKind": "enum",
          "allowedValues": [
            "xs",
            "sm",
            "md",
            "lg",
            "responsive"
          ],
          "description": "Tamanho semantico da micro visualizacao.",
          "intentExamples": [
            "xs em tabela",
            "md em header",
            "responsive em card"
          ]
        },
        {
          "path": "presentation.visualization.fallbackText",
          "category": "accessibility",
          "valueKind": "string",
          "description": "Texto equivalente obrigatorio para fallback, exportacao e leitores de tela.",
          "safetyNotes": "Deve explicar valor, unidade, meta, tendencia ou estado quando aplicavel."
        },
        {
          "path": "presentationRules",
          "category": "appearance",
          "valueKind": "array",
          "description": "Regras Json Logic ordenadas que sobrescrevem presentation em modo readonly/display; regras posteriores que casam vencem.",
          "safetyNotes": "As regras devem produzir apenas set/effect semantico. Nao use para alterar valor, executar acao, navegar ou injetar HTML/CSS.",
          "intentExamples": [
            "se status for BLOQUEADO, usar tone danger",
            "se valor maior que limite, mostrar badge de revisao"
          ]
        },
        {
          "path": "presentationRules[].when",
          "category": "behavior",
          "valueKind": "object",
          "description": "Guarda Json Logic avaliada contra o contexto de apresentacao do campo.",
          "safetyNotes": "Use Json Logic serializavel; funcoes nao sao aceitas."
        },
        {
          "path": "presentationRules[].set",
          "category": "appearance",
          "valueKind": "object",
          "description": "Patch semantico aplicado sobre presentation quando a guarda for verdadeira.",
          "safetyNotes": "Somente presenter, tone, icon, label, badge, tooltip, appearance, valuePresentation e interactions seguras."
        },
        {
          "path": "mask",
          "category": "appearance",
          "valueKind": "string",
          "description": "Máscara de input (padrão do componente).",
          "intentExamples": [
            "máscara de CPF",
            "formatar telefone",
            "aplicar máscara de data",
            "pattern visual"
          ]
        },
        {
          "path": "format",
          "category": "appearance",
          "valueKind": "string",
          "description": "Formato de exibição (ex: pipes).",
          "intentExamples": [
            "formato de data dd/mm/yyyy",
            "formato de moeda",
            "exibir como porcentagem"
          ]
        },
        {
          "path": "validators",
          "category": "validation",
          "valueKind": "object",
          "description": "Objeto contendo todas as regras de validação.",
          "safetyNotes": "Não sobrescreva este objeto inteiramente; faça merge das propriedades.",
          "intentExamples": [
            "adicionar validações",
            "regras de validação",
            "objeto validators"
          ]
        },
        {
          "path": "validators.required",
          "category": "validation",
          "valueKind": "boolean",
          "description": "Campo obrigatório.",
          "intentExamples": [
            "tornar obrigatório",
            "campo mandatório",
            "exigir preenchimento",
            "remover required"
          ]
        },
        {
          "path": "required",
          "category": "validation",
          "valueKind": "boolean",
          "description": "Campo obrigatório (alias rápido do validators.required).",
          "intentExamples": [
            "campo obrigatório",
            "exigir preenchimento"
          ]
        },
        {
          "path": "validators.requiredMessage",
          "category": "validation",
          "valueKind": "string",
          "description": "Mensagem customizada para required."
        },
        {
          "path": "validators.email",
          "category": "validation",
          "valueKind": "boolean",
          "description": "Validação de formato de e-mail.",
          "intentExamples": [
            "validar como email",
            "aceitar apenas emails",
            "formato de correio eletrônico"
          ]
        },
        {
          "path": "validators.emailMessage",
          "category": "validation",
          "valueKind": "string",
          "description": "Mensagem customizada para validação de email."
        },
        {
          "path": "validators.minLength",
          "category": "validation",
          "valueKind": "number",
          "description": "Comprimento mínimo do texto.",
          "intentExamples": [
            "mínimo de 5 caracteres",
            "pelo menos 3 letras",
            "tamanho mínimo"
          ]
        },
        {
          "path": "validators.minLengthMessage",
          "category": "validation",
          "valueKind": "string",
          "description": "Mensagem customizada para minLength."
        },
        {
          "path": "validators.maxLength",
          "category": "validation",
          "valueKind": "number",
          "description": "Comprimento máximo do texto.",
          "intentExamples": [
            "máximo de 100 caracteres",
            "limitar tamanho",
            "não exceder 50 letras"
          ]
        },
        {
          "path": "validators.maxLengthMessage",
          "category": "validation",
          "valueKind": "string",
          "description": "Mensagem customizada para maxLength."
        },
        {
          "path": "validators.min",
          "category": "validation",
          "valueKind": "number",
          "description": "Valor numérico mínimo.",
          "intentExamples": [
            "valor mínimo 10",
            "não aceitar menor que 0",
            "piso de valor"
          ]
        },
        {
          "path": "validators.minMessage",
          "category": "validation",
          "valueKind": "string",
          "description": "Mensagem customizada para min."
        },
        {
          "path": "validators.max",
          "category": "validation",
          "valueKind": "number",
          "description": "Valor numérico máximo.",
          "intentExamples": [
            "valor máximo 100",
            "teto de valor",
            "não aceitar maior que 50"
          ]
        },
        {
          "path": "validators.maxMessage",
          "category": "validation",
          "valueKind": "string",
          "description": "Mensagem customizada para max."
        },
        {
          "path": "validators.pattern",
          "category": "validation",
          "valueKind": "string",
          "description": "Regex para validação.",
          "safetyNotes": "Cuidado com ReDoS em regex complexos.",
          "intentExamples": [
            "validar com regex",
            "padrão customizado",
            "expressão regular"
          ]
        },
        {
          "path": "validators.patternMessage",
          "category": "validation",
          "valueKind": "string",
          "description": "Mensagem customizada para pattern."
        },
        {
          "path": "validators.cpf",
          "category": "validation",
          "valueKind": "boolean",
          "description": "Validador de CPF (legado)."
        },
        {
          "path": "validators.cnpj",
          "category": "validation",
          "valueKind": "boolean",
          "description": "Validador de CNPJ (legado)."
        },
        {
          "path": "validators.cpfCnpj",
          "category": "validation",
          "valueKind": "boolean",
          "description": "Validador automatico CPF/CNPJ (legado)."
        },
        {
          "path": "validators.cnpjAlpha",
          "category": "validation",
          "valueKind": "boolean",
          "description": "Validador de CNPJ alfanumerico (legado)."
        },
        {
          "path": "validators.cpfMessage",
          "category": "validation",
          "valueKind": "string",
          "description": "Mensagem customizada para CPF."
        },
        {
          "path": "validators.cnpjMessage",
          "category": "validation",
          "valueKind": "string",
          "description": "Mensagem customizada para CNPJ."
        },
        {
          "path": "validators.cnpjAlphaMessage",
          "category": "validation",
          "valueKind": "string",
          "description": "Mensagem customizada para CNPJ alfanumerico."
        },
        {
          "path": "validators.url",
          "category": "validation",
          "valueKind": "boolean",
          "description": "Validador de URL."
        },
        {
          "path": "validators.urlMessage",
          "category": "validation",
          "valueKind": "string",
          "description": "Mensagem customizada para URL."
        },
        {
          "path": "validators.minWords",
          "category": "validation",
          "valueKind": "number",
          "description": "Mínimo de palavras.",
          "intentExamples": [
            "mínimo de 2 palavras",
            "exigir nome completo (2 palavras)"
          ]
        },
        {
          "path": "validators.requiredChecked",
          "category": "validation",
          "valueKind": "boolean",
          "description": "Exige checkbox marcado (ex: termos de uso).",
          "intentExamples": [
            "obrigar marcar checkbox",
            "aceitar termos é obrigatório"
          ]
        },
        {
          "path": "validators.customValidator",
          "category": "validation",
          "valueKind": "expression",
          "description": "Validador customizado (função).",
          "safetyNotes": "Funções não são serializáveis; exige wiring manual."
        },
        {
          "path": "validators.asyncValidator",
          "category": "validation",
          "valueKind": "expression",
          "description": "Validador async customizado (função).",
          "safetyNotes": "Funções não são serializáveis; exige wiring manual."
        },
        {
          "path": "validators.matchField",
          "category": "validation",
          "valueKind": "string",
          "description": "Campo que deve coincidir (cross-field)."
        },
        {
          "path": "validators.matchFieldMessage",
          "category": "validation",
          "valueKind": "string",
          "description": "Mensagem customizada para matchField."
        },
        {
          "path": "validators.uniqueValidator",
          "category": "validation",
          "valueKind": "expression",
          "description": "Validador de unicidade via API (função).",
          "safetyNotes": "Funções não são serializáveis; exige wiring manual."
        },
        {
          "path": "validators.uniqueMessage",
          "category": "validation",
          "valueKind": "string",
          "description": "Mensagem customizada para unicidade."
        },
        {
          "path": "validators.conditionalValidation",
          "category": "validation",
          "valueKind": "array",
          "description": "Regras de validação condicional.",
          "safetyNotes": "Use regras declarativas com Json Logic serializável; não gere funções aqui."
        },
        {
          "path": "validators.conditionalValidation[].condition",
          "category": "validation",
          "valueKind": "expression",
          "description": "Condicao para aplicar validadores.",
          "safetyNotes": "Use Json Logic canônico avaliado sobre o root `form`."
        },
        {
          "path": "validators.conditionalValidation[].validators",
          "category": "validation",
          "valueKind": "object",
          "description": "Conjunto de validadores aplicados quando a condicao for verdadeira."
        },
        {
          "path": "validators.validationTrigger",
          "category": "validation",
          "valueKind": "enum",
          "allowedValues": [
            "change",
            "blur",
            "submit",
            "immediate"
          ],
          "description": "Gatilho de validação no validator."
        },
        {
          "path": "validators.validationDebounce",
          "category": "validation",
          "valueKind": "number",
          "description": "Debounce de validação no validator (ms)."
        },
        {
          "path": "validators.showInlineErrors",
          "category": "validation",
          "valueKind": "boolean",
          "description": "Exibe erros inline (validator)."
        },
        {
          "path": "validators.errorPosition",
          "category": "validation",
          "valueKind": "enum",
          "allowedValues": [
            "bottom",
            "top",
            "tooltip"
          ],
          "description": "Posicao do erro (validator)."
        },
        {
          "path": "validationMode",
          "category": "validation",
          "valueKind": "enum",
          "allowedValues": [
            "immediate",
            "blur",
            "submit"
          ],
          "description": "Gatilho da validação (change/blur/submit).",
          "intentExamples": [
            "validar ao sair do campo (blur)",
            "validar apenas no submit",
            "validação em tempo real"
          ]
        },
        {
          "path": "debounceTime",
          "category": "validation",
          "valueKind": "number",
          "description": "Debounce para validação em ms.",
          "intentExamples": [
            "aguardar para validar",
            "debounce de 500ms",
            "delay na validação"
          ]
        },
        {
          "path": "options",
          "category": "data",
          "valueKind": "array",
          "description": "Array de opções conforme controlType (ex.: { key, value } ou { value, text/display }).",
          "intentExamples": [
            "adicionar opções estáticas",
            "lista fixa de itens",
            "opções do select"
          ],
          "safetyNotes": "Respeite o formato esperado pelo controlType; prefira merge/append em vez de substituir o array inteiro."
        },
        {
          "path": "endpoint",
          "category": "data",
          "valueKind": "string",
          "description": "URL para carregar opções remotas.",
          "intentExamples": [
            "carregar do servidor",
            "buscar API",
            "endpoint de dados",
            "url das opções"
          ]
        },
        {
          "path": "valueField",
          "category": "data",
          "valueKind": "string",
          "description": "Nome da propriedade de valor nas opções.",
          "intentExamples": [
            "usar \"id\" como valor",
            "campo de valor das opções"
          ]
        },
        {
          "path": "displayField",
          "category": "data",
          "valueKind": "string",
          "description": "Nome da propriedade de texto nas opções.",
          "intentExamples": [
            "usar \"nome\" como texto",
            "exibir campo \"label\"",
            "campo de exibição"
          ]
        },
        {
          "path": "filterField",
          "category": "data",
          "valueKind": "string",
          "description": "Campo para filtragem no backend.",
          "intentExamples": [
            "filtrar por \"categoria\"",
            "campo de filtro na api"
          ]
        },
        {
          "path": "queryParams",
          "category": "data",
          "valueKind": "object",
          "description": "Parâmetros fixos para a query do endpoint.",
          "intentExamples": [
            "parâmetros extras na busca",
            "enviar tipo=ativo na query"
          ]
        },
        {
          "path": "cacheDuration",
          "category": "data",
          "valueKind": "number",
          "description": "Duração do cache de dados em ms.",
          "intentExamples": [
            "cachear por 5 minutos",
            "tempo de cache",
            "validade dos dados"
          ]
        },
        {
          "path": "hidden",
          "category": "behavior",
          "valueKind": "boolean",
          "description": "Oculta o campo globalmente.",
          "critical": true,
          "intentExamples": [
            "ocultar campo",
            "esconder input",
            "campo invisível"
          ]
        },
        {
          "path": "visibleIn",
          "category": "behavior",
          "valueKind": "array",
          "allowedValues": [
            "form",
            "filter",
            "table",
            "dialog"
          ],
          "description": "Contextos onde o campo é visível.",
          "intentExamples": [
            "mostrar apenas no filtro",
            "esconder na tabela",
            "visível só no form"
          ]
        },
        {
          "path": "formHidden",
          "category": "behavior",
          "valueKind": "boolean",
          "description": "Oculta apenas no formulário.",
          "intentExamples": [
            "esconder no form",
            "invisível na edição"
          ]
        },
        {
          "path": "tableHidden",
          "category": "behavior",
          "valueKind": "boolean",
          "description": "Oculta apenas na tabela.",
          "intentExamples": [
            "esconder na listagem",
            "não mostrar na tabela"
          ]
        },
        {
          "path": "filterHidden",
          "category": "behavior",
          "valueKind": "boolean",
          "description": "Oculta apenas no filtro.",
          "intentExamples": [
            "esconder na busca",
            "remover do filtro"
          ]
        },
        {
          "path": "fieldAccess",
          "category": "behavior",
          "valueKind": "object",
          "description": "Politica canonica de UX para visibilidade/edicao por authorities publicadas pelo backend.",
          "safetyNotes": "Nao e barreira de seguranca. O backend continua responsavel por filtrar dados sensiveis e validar payloads.",
          "intentExamples": [
            "campo visivel somente para RH",
            "bloquear edicao por perfil corporativo"
          ]
        },
        {
          "path": "fieldAccess.visibleForAuthorities",
          "category": "behavior",
          "valueKind": "array",
          "description": "Authorities que podem ver o campo no runtime quando a UX tiver claims explicitas.",
          "safetyNotes": "Nao inferir a partir de capabilities sem mapeamento canonico publicado."
        },
        {
          "path": "fieldAccess.editableForAuthorities",
          "category": "behavior",
          "valueKind": "array",
          "description": "Authorities que podem editar o campo no runtime quando a UX tiver claims explicitas.",
          "safetyNotes": "Edicao concedida implica materializacao visivel no runtime; a validacao final permanece no backend."
        },
        {
          "path": "fieldAccess.reason",
          "category": "misc",
          "valueKind": "string",
          "description": "Justificativa explicativa/auditavel da politica de acesso do campo.",
          "safetyNotes": "Reason sozinho nao deve decidir acesso nem revelar detalhes sensiveis para usuarios sem permissao."
        },
        {
          "path": "dependencyFields",
          "category": "dependency",
          "valueKind": "array",
          "description": "Campos dos quais este campo depende.",
          "intentExamples": [
            "depende de estado",
            "campo dependente",
            "cascata com outro campo"
          ]
        },
        {
          "path": "conditionalRequired",
          "category": "dependency",
          "valueKind": "expression",
          "description": "Condição Json Logic para obrigatoriedade declarativa.",
          "safetyNotes": "Use Json Logic serializável; não gere função nem DSL textual.",
          "intentExamples": [
            "obrigatório se outro campo for X",
            "condicionalmente requerido"
          ]
        },
        {
          "path": "conditionalDisplay",
          "category": "dependency",
          "valueKind": "expression",
          "description": "Condição Json Logic para visibilidade declarativa.",
          "safetyNotes": "Use Json Logic serializável; não gere função nem DSL textual.",
          "intentExamples": [
            "mostrar se checkbox marcado",
            "visibilidade condicional"
          ]
        },
        {
          "path": "dependencyFilterMap",
          "category": "dependency",
          "valueKind": "object",
          "description": "Mapeamento de filtro baseado na dependência.",
          "intentExamples": [
            "filtrar cidade por estado",
            "mapear valor da dependência"
          ]
        },
        {
          "path": "dependencyValuePath",
          "category": "dependency",
          "valueKind": "string",
          "description": "Caminho no valor da dependência.",
          "intentExamples": [
            "usar propriedade aninhada da dependência",
            "caminho do valor dependente"
          ]
        },
        {
          "path": "dependencyMergeStrategy",
          "category": "dependency",
          "valueKind": "enum",
          "allowedValues": [
            "replace",
            "merge"
          ],
          "description": "Estratégia de merge dos dados carregados.",
          "intentExamples": [
            "substituir opções ao carregar",
            "mesclar resultados"
          ]
        },
        {
          "path": "dependencyLoadOnChange",
          "category": "dependency",
          "valueKind": "enum",
          "allowedValues": [
            "respectLoadOn",
            "immediate",
            "manual"
          ],
          "description": "Quando recarregar dependência.",
          "intentExamples": [
            "recarregar assim que mudar",
            "recarregar manualmente",
            "carregar imediatamente"
          ]
        },
        {
          "path": "resetOnDependentChange",
          "category": "dependency",
          "valueKind": "boolean",
          "description": "Zera valor se dependência mudar.",
          "intentExamples": [
            "limpar se o pai mudar",
            "resetar valor na troca da dependência"
          ]
        },
        {
          "path": "enableDependencyCascade",
          "category": "dependency",
          "valueKind": "boolean",
          "description": "Habilita/desabilita cascata nativa de dependências entre campos.",
          "intentExamples": [
            "desativar cascata nativa",
            "habilitar cascata",
            "usar connections sem cascata"
          ]
        },
        {
          "path": "dependencyDebounceMs",
          "category": "dependency",
          "valueKind": "number",
          "description": "Delay para reagir à mudança de dependência.",
          "intentExamples": [
            "esperar para recarregar dependência",
            "debounce da cascata"
          ]
        },
        {
          "path": "suppressInlineErrorsOnCascade",
          "category": "dependency",
          "valueKind": "boolean",
          "description": "Suprime erros inline durante cascata."
        },
        {
          "path": "transformDisplayValue",
          "category": "transform",
          "valueKind": "expression",
          "description": "Transforma valor para exibição.",
          "safetyNotes": "Função não serializável.",
          "intentExamples": [
            "formatar valor visualmente",
            "transformar display"
          ]
        },
        {
          "path": "transformSaveValue",
          "category": "transform",
          "valueKind": "expression",
          "description": "Transforma valor para salvar.",
          "safetyNotes": "Função não serializável.",
          "intentExamples": [
            "formatar valor para envio",
            "transformar payload"
          ]
        },
        {
          "path": "textTransformApply",
          "category": "transform",
          "valueKind": "enum",
          "allowedValues": [
            "displayOnly",
            "saveOnly",
            "both"
          ],
          "description": "Quando aplicar transformação de texto.",
          "intentExamples": [
            "aplicar transformação apenas no display",
            "transformar ao salvar e exibir"
          ]
        },
        {
          "path": "inlineEditing",
          "category": "behavior",
          "valueKind": "boolean",
          "description": "Permite edição inline (tabelas).",
          "intentExamples": [
            "permitir edição na tabela",
            "editar na linha"
          ]
        },
        {
          "path": "unique",
          "category": "validation",
          "valueKind": "boolean",
          "description": "Valida unicidade no backend.",
          "intentExamples": [
            "validar se é único",
            "não permitir duplicados"
          ]
        },
        {
          "path": "readOnly",
          "category": "behavior",
          "valueKind": "boolean",
          "description": "Campo somente leitura.",
          "intentExamples": [
            "somente leitura",
            "bloquear edição",
            "campo readonly"
          ]
        },
        {
          "path": "disabled",
          "category": "behavior",
          "valueKind": "boolean",
          "description": "Campo desabilitado.",
          "intentExamples": [
            "desabilitar campo",
            "campo disabled",
            "cinza e bloqueado"
          ]
        },
        {
          "path": "defaultValue",
          "category": "data",
          "valueKind": "object",
          "description": "Valor inicial do campo.",
          "safetyNotes": "Aceita tipos primitivos/objetos; respeite o controlType.",
          "intentExamples": [
            "valor padrão",
            "iniciar com valor X",
            "default value"
          ]
        },
        {
          "path": "ariaLabel",
          "category": "accessibility",
          "valueKind": "string",
          "description": "Label para leitores de tela.",
          "intentExamples": [
            "label de acessibilidade",
            "texto para leitor de tela"
          ]
        },
        {
          "path": "ariaDescribedBy",
          "category": "accessibility",
          "valueKind": "string",
          "description": "IDs de descrição acessível.",
          "intentExamples": [
            "descrito pelo elemento X",
            "associar descrição aria"
          ]
        },
        {
          "path": "tabIndex",
          "category": "accessibility",
          "valueKind": "number",
          "description": "Ordem de tabulacao para teclado.",
          "intentExamples": [
            "tabindex 0",
            "ordem de foco"
          ]
        },
        {
          "path": "accessKey",
          "category": "accessibility",
          "valueKind": "string",
          "description": "Atalho de teclado (accessKey).",
          "intentExamples": [
            "atalho de teclado",
            "tecla de acesso rapido"
          ]
        }
      ],
      "authoringManifest": {
        "schemaVersion": "1.0.0",
        "componentId": "praxis-filter",
        "ownerPackage": "@praxisui/table",
        "configSchemaId": "FilterConfig",
        "manifestVersion": "1.0.0",
        "runtimeInputs": [
          {
            "name": "resourcePath",
            "type": "string",
            "description": "Canonical resource used to resolve filter metadata."
          },
          {
            "name": "apiUrlEntry",
            "type": "ApiUrlEntry | null",
            "description": "Resolved API entry supplied by detached hosts."
          },
          {
            "name": "fieldMetadata",
            "type": "FieldMetadata[] | null",
            "description": "Optional host-provided filter metadata."
          },
          {
            "name": "filterId",
            "type": "string",
            "description": "Stable filter persistence identity."
          },
          {
            "name": "formId",
            "type": "string",
            "description": "Stable advanced-filter form identity."
          },
          {
            "name": "componentInstanceId",
            "type": "string",
            "description": "Stable hosted widget identity."
          },
          {
            "name": "mode",
            "type": "'filter'",
            "allowedValues": [
              "filter"
            ],
            "description": "Standalone runtime mode."
          },
          {
            "name": "notifyIfOutdated",
            "type": "'inline' | 'snackbar' | 'both' | 'none'",
            "description": "Schema drift notification channel."
          },
          {
            "name": "snoozeMs",
            "type": "number",
            "description": "Schema drift notification snooze duration."
          },
          {
            "name": "autoOpenSettingsOnOutdated",
            "type": "boolean",
            "description": "Opens settings when schema drift is detected."
          },
          {
            "name": "enableCustomization",
            "type": "boolean",
            "description": "Enables runtime customization affordances."
          },
          {
            "name": "value",
            "type": "Record<string, any>",
            "description": "Controlled runtime filter DTO; never persisted by standalone authoring."
          },
          {
            "name": "alwaysVisibleFields",
            "type": "string[]",
            "description": "Ordered fields pinned in the inline filter."
          },
          {
            "name": "alwaysVisibleFieldMetadataOverrides",
            "type": "Record<string, Record<string, any>>",
            "description": "Host-owned metadata overrides preserved by editor round trips but not authored by this manifest."
          },
          {
            "name": "selectedFieldIds",
            "type": "string[]",
            "description": "Ordered additional fields selected for the filter."
          },
          {
            "name": "tags",
            "type": "FilterTag[]",
            "description": "Host-provided filter shortcuts; not authored by this manifest."
          },
          {
            "name": "allowSaveTags",
            "type": "boolean",
            "description": "Allows users to persist filter shortcuts."
          },
          {
            "name": "persistenceKey",
            "type": "string",
            "description": "Host-owned persistence key."
          },
          {
            "name": "disablePersistence",
            "type": "boolean",
            "description": "Disables runtime preference persistence."
          },
          {
            "name": "i18n",
            "type": "Partial<I18n>",
            "description": "Host-provided copy overrides."
          },
          {
            "name": "changeDebounceMs",
            "type": "number",
            "description": "Debounce applied to filter changes."
          },
          {
            "name": "showFilterSettings",
            "type": "boolean",
            "description": "Shows runtime filter settings affordance."
          },
          {
            "name": "showAdvancedButton",
            "type": "boolean",
            "description": "Shows the advanced-filter action."
          },
          {
            "name": "showAddButton",
            "type": "boolean",
            "description": "Shows the field-selection action."
          },
          {
            "name": "showClearButton",
            "type": "boolean",
            "description": "Shows the clear action."
          },
          {
            "name": "showSearchButton",
            "type": "boolean",
            "description": "Shows the explicit request-search action."
          },
          {
            "name": "confirmTagDelete",
            "type": "boolean",
            "description": "Requires confirmation before deleting a shortcut."
          },
          {
            "name": "placeBooleansInActions",
            "type": "boolean",
            "description": "Places boolean controls in the action lane."
          },
          {
            "name": "showToggleLabels",
            "type": "boolean",
            "description": "Shows labels for action-lane toggles."
          },
          {
            "name": "useInlineSelectVariant",
            "type": "boolean",
            "description": "Uses the compact inline select renderer."
          },
          {
            "name": "useInlineSearchableSelectVariant",
            "type": "boolean",
            "description": "Uses the compact searchable-select renderer."
          },
          {
            "name": "useInlineMultiSelectVariant",
            "type": "boolean",
            "description": "Uses the compact multi-select renderer."
          },
          {
            "name": "useInlineInputVariant",
            "type": "boolean",
            "description": "Uses the compact input renderer."
          },
          {
            "name": "useInlineToggleVariant",
            "type": "boolean",
            "description": "Uses the compact toggle renderer."
          },
          {
            "name": "useInlineRangeVariant",
            "type": "boolean",
            "description": "Uses the compact range renderer."
          },
          {
            "name": "useInlineDateVariant",
            "type": "boolean",
            "description": "Uses the compact date renderer."
          },
          {
            "name": "useInlineDateRangeVariant",
            "type": "boolean",
            "description": "Uses the compact date-range renderer."
          },
          {
            "name": "useInlineTimeVariant",
            "type": "boolean",
            "description": "Uses the compact time renderer."
          },
          {
            "name": "useInlineTimeRangeVariant",
            "type": "boolean",
            "description": "Uses the compact time-range renderer."
          },
          {
            "name": "useInlineTreeSelectVariant",
            "type": "boolean",
            "description": "Uses the compact tree-select renderer."
          },
          {
            "name": "alwaysMinWidth",
            "type": "number",
            "description": "Minimum width for pinned fields."
          },
          {
            "name": "alwaysColsMd",
            "type": "number",
            "description": "Pinned-field columns on medium viewports."
          },
          {
            "name": "alwaysColsLg",
            "type": "number",
            "description": "Pinned-field columns on large viewports."
          },
          {
            "name": "tagColor",
            "type": "'primary' | 'accent' | 'warn' | 'basic'",
            "description": "Shortcut color token."
          },
          {
            "name": "tagVariant",
            "type": "'filled' | 'outlined'",
            "description": "Shortcut surface variant."
          },
          {
            "name": "tagButtonColor",
            "type": "'primary' | 'accent' | 'warn' | 'basic'",
            "description": "Shortcut action color token."
          },
          {
            "name": "actionsButtonColor",
            "type": "'primary' | 'accent' | 'warn' | 'basic'",
            "description": "Filter action color token."
          },
          {
            "name": "actionsVariant",
            "type": "'standard' | 'outlined'",
            "description": "Filter action surface variant."
          },
          {
            "name": "overlayVariant",
            "type": "'card' | 'frosted'",
            "description": "Advanced-filter overlay surface."
          },
          {
            "name": "overlayBackdrop",
            "type": "boolean",
            "description": "Controls the advanced-filter backdrop."
          },
          {
            "name": "advancedOpenMode",
            "type": "'modal' | 'drawer'",
            "allowedValues": [
              "modal",
              "drawer"
            ],
            "description": "Canonical advanced-filter container."
          },
          {
            "name": "advancedClearButtonsEnabled",
            "type": "boolean",
            "description": "Enables clear buttons in advanced fields."
          }
        ],
        "editableTargets": [
          {
            "kind": "filterSettings",
            "resolver": "filter-config",
            "description": "The standalone FilterConfig root materialized by PraxisFilterWidgetConfigEditor."
          }
        ],
        "operations": [
          {
            "operationId": "filter.settings.configure",
            "title": "Configure standalone filter settings",
            "description": "Merges a partial, runtime-backed FilterConfig patch while preserving host-owned inputs and excluding the controlled value DTO.",
            "scope": "global",
            "targetKind": "filterSettings",
            "target": {
              "kind": "filterSettings",
              "resolver": "filter-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "additionalProperties": false,
              "properties": {
                "alwaysVisibleFields": {
                  "type": "array",
                  "uniqueItems": true,
                  "items": {
                    "type": "string",
                    "minLength": 1
                  }
                },
                "selectedFieldIds": {
                  "type": "array",
                  "uniqueItems": true,
                  "items": {
                    "type": "string",
                    "minLength": 1
                  }
                },
                "allowSaveTags": {
                  "type": "boolean"
                },
                "changeDebounceMs": {
                  "type": "number",
                  "minimum": 100,
                  "maximum": 1000
                },
                "placeBooleansInActions": {
                  "type": "boolean"
                },
                "showToggleLabels": {
                  "type": "boolean"
                },
                "alwaysMinWidth": {
                  "type": "number",
                  "minimum": 180,
                  "maximum": 480
                },
                "alwaysColsMd": {
                  "type": "number",
                  "minimum": 1,
                  "maximum": 3
                },
                "alwaysColsLg": {
                  "type": "number",
                  "minimum": 1,
                  "maximum": 4
                },
                "confirmTagDelete": {
                  "type": "boolean"
                },
                "tagColor": {
                  "enum": [
                    "primary",
                    "accent",
                    "warn",
                    "basic"
                  ]
                },
                "tagVariant": {
                  "enum": [
                    "filled",
                    "outlined"
                  ]
                },
                "tagButtonColor": {
                  "enum": [
                    "primary",
                    "accent",
                    "warn",
                    "basic"
                  ]
                },
                "actionsButtonColor": {
                  "enum": [
                    "primary",
                    "accent",
                    "warn",
                    "basic"
                  ]
                },
                "actionsVariant": {
                  "enum": [
                    "standard",
                    "outlined"
                  ]
                },
                "useInlineSearchableSelectVariant": {
                  "type": "boolean"
                },
                "useInlineRangeVariant": {
                  "type": "boolean"
                },
                "useInlineDateVariant": {
                  "type": "boolean"
                },
                "useInlineDateRangeVariant": {
                  "type": "boolean"
                },
                "useInlineTimeVariant": {
                  "type": "boolean"
                },
                "useInlineTimeRangeVariant": {
                  "type": "boolean"
                },
                "useInlineTreeSelectVariant": {
                  "type": "boolean"
                },
                "overlayVariant": {
                  "enum": [
                    "card",
                    "frosted"
                  ]
                },
                "overlayBackdrop": {
                  "type": "boolean"
                },
                "advancedOpenMode": {
                  "enum": [
                    "modal",
                    "drawer"
                  ]
                },
                "advancedClearButtonsEnabled": {
                  "type": "boolean"
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": ""
              }
            ],
            "destructive": false,
            "requiresConfirmation": false,
            "validators": [
              "filter-fields-exist",
              "editor-round-trip-preserve"
            ],
            "affectedPaths": [
              "alwaysVisibleFields",
              "selectedFieldIds",
              "allowSaveTags",
              "changeDebounceMs",
              "placeBooleansInActions",
              "showToggleLabels",
              "alwaysMinWidth",
              "alwaysColsMd",
              "alwaysColsLg",
              "confirmTagDelete",
              "tagColor",
              "tagVariant",
              "tagButtonColor",
              "actionsButtonColor",
              "actionsVariant",
              "useInlineSearchableSelectVariant",
              "useInlineRangeVariant",
              "useInlineDateVariant",
              "useInlineDateRangeVariant",
              "useInlineTimeVariant",
              "useInlineTimeRangeVariant",
              "useInlineTreeSelectVariant",
              "overlayVariant",
              "overlayBackdrop",
              "advancedOpenMode",
              "advancedClearButtonsEnabled"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          }
        ],
        "validators": [
          {
            "validatorId": "filter-fields-exist",
            "level": "error",
            "code": "FILTER_FIELDS_EXIST",
            "description": "Every alwaysVisibleFields and selectedFieldIds entry must exist in the governed filter request metadata or schema."
          },
          {
            "validatorId": "editor-round-trip-preserve",
            "level": "error",
            "code": "FILTER_EDITOR_ROUND_TRIP_PRESERVE",
            "description": "Apply, save, reset and reopen must preserve unrelated host inputs while projecting only FilterConfig-backed settings."
          }
        ],
        "roundTripRequirements": [
          "Apply and save must preserve resource, metadata, identity and unknown host inputs.",
          "The controlled value input must never be copied into the persisted authoring result.",
          "Reset must restore the settings captured when the editor opened without changing the saved widget definition.",
          "Reopen must materialize the last saved FilterConfig-backed inputs without TableConfig paths.",
          "advancedOpenMode must persist only the canonical values 'modal' or 'drawer'."
        ],
        "examples": [
          {
            "id": "configure-standalone-filter-fields",
            "request": "Keep employeeName and employeeStatus visible and add department to this standalone filter.",
            "operationId": "filter.settings.configure",
            "params": {
              "alwaysVisibleFields": [
                "employeeName",
                "employeeStatus"
              ],
              "selectedFieldIds": [
                "department"
              ]
            },
            "isPositive": true
          },
          {
            "id": "configure-standalone-filter-presentation",
            "request": "Open this standalone filter in a drawer and use compact date controls.",
            "operationId": "filter.settings.configure",
            "params": {
              "advancedOpenMode": "drawer",
              "useInlineDateVariant": true,
              "changeDebounceMs": 450
            },
            "isPositive": true
          },
          {
            "id": "reject-runtime-value-authoring",
            "request": "Persist the current filter value as authoring configuration.",
            "operationId": "filter.settings.configure",
            "params": {
              "value": {
                "employeeStatus": "active"
              }
            },
            "isPositive": false
          },
          {
            "id": "reject-host-metadata-override-authoring",
            "request": "Persist a host metadata override for employeeStatus.",
            "operationId": "filter.settings.configure",
            "params": {
              "alwaysVisibleFieldMetadataOverrides": {
                "employeeStatus": {
                  "label": "Status"
                }
              }
            },
            "isPositive": false
          },
          {
            "id": "reject-table-filter-dsl",
            "request": "Enable the table query builder on this standalone filter.",
            "operationId": "filter.settings.configure",
            "params": {
              "queryBuilder": true
            },
            "isPositive": false
          }
        ]
      },
      "chunks": [
        {
          "chunkIndex": 0,
          "chunkKind": "summary",
          "content": "Component ID: praxis-filter\nSelector: praxis-filter\nFriendly Name: Praxis Filter\nDescription: Filtro metadata-driven hospedável em páginas dinâmicas, adequado para superfícies analíticas, operacionais e workflows orientados a busca.\nLib/Package: @praxisui/table\nTags: widget, filter, search, metadata-driven, hostable\nInputs:\n  - resourcePath (string)\n  - apiUrlEntry (ApiUrlEntry | null)\n  - fieldMetadata (FieldMetadata[] | null)\n  - filterId (string)\n  - formId (string)\n  - componentInstanceId (string)\n  - enableCustomization (boolean)\n  - showFilterSettings (boolean)\n  - showAdvancedButton (boolean)\n  - showAddButton (boolean)\n  - showClearButton (boolean)\n  - showSearchButton (boolean)\n  - value (Record<string, any>)\n  - alwaysVisibleFields (string[])\n  - alwaysVisibleFieldMetadataOverrides (Record<string, Record<string, any>>)\n  - selectedFieldIds (string[])\n  - persistenceKey (string)\n  - disablePersistence (boolean)\n  - changeDebounceMs (number)\n  - tags (FilterTag[])\n  - allowSaveTags (boolean)\n  - i18n (Partial<I18n>)\n  - placeBooleansInActions (boolean)\n  - advancedOpenMode ('modal' | 'drawer')\nOutputs:\n  - submit (Record<string, any>)\n  - requestSearch (Record<string, any>)\n  - change (Record<string, any>)\n  - contextChange (PraxisFilterViewContext)\n  - clear (void)\n  - tagsChange (FilterTag[])\n  - selectedFieldIdsChange (string[])\n  - metaChanged ({ schemaId: string; serverHash?: string; context: SchemaIdParams })\n  - schemaStatusChange ({ outdated: boolean; serverHash?: string; lastVerifiedAt?: string; formId?: string })\n",
          "sourcePointer": "projects/praxis-table/src/lib/components/praxis-filter/praxis-filter.metadata.ts",
          "contentHash": "726b51b531daabb84b0fe5a98bcae0e6663085648b2401d82f3a99bdb59415ec",
          "sourceKind": "component_definition",
          "sourceId": "praxis-filter",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 1,
          "chunkKind": "capabilities",
          "content": "Schema Capability:\n  - Path: id\n    Category: identity\n    Kind: string\n    Description: Identificador unico da instancia do componente.\n\nSchema Capability:\n  - Path: version\n    Category: identity\n    Kind: string\n    Description: Versao do schema de metadata (migracao).\n\nSchema Capability:\n  - Path: context\n    Category: identity\n    Kind: enum\n    Description: Contexto de uso do componente (form/filter/table/dialog/standalone).\n\nSchema Capability:\n  - Path: createdAt\n    Category: misc\n    Kind: string\n    Description: Timestamp de criacao (ISO).\n\nSchema Capability:\n  - Path: updatedAt\n    Category: misc\n    Kind: string\n    Description: Timestamp de atualizacao (ISO).\n\nSchema Capability:\n  - Path: tags\n    Category: identity\n    Kind: array\n    Description: Tags para categorizacao e busca.\n\nSchema Capability:\n  - Path: cssClass\n    Category: appearance\n    Kind: string\n    Description: Classe CSS aplicada ao host do componente.\n\nSchema Capability:\n  - Path: style\n    Category: appearance\n    Kind: object\n    Description: Estilos inline (objeto CSS).\n\nSchema Capability:\n  - Path: dataAttributes\n    Category: data\n    Kind: object\n    Description: Data attributes para teste/analytics.\n\nSchema Capability:\n  - Path: name\n    Category: identity\n    Kind: string\n    Description: Identificador único do campo. Essencial para binding.\n\nSchema Capability:\n  - Path: label\n    Category: identity\n    Kind: string\n    Description: Rótulo principal exibido para o usuário.\n\nSchema Capability:\n  - Path: placeholder\n    Category: identity\n    Kind: string\n    Description: Texto temporário exibido quando vazio.\n\nSchema Capability:\n  - Path: hint\n    Category: identity\n    Kind: string\n    Description: Texto de ajuda exibido abaixo do campo.\n\nSchema Capability:\n  - Path: helpText\n    Category: identity\n    Kind: string\n    Description: Texto semântico de ajuda publicado pelo schema/DTO.\n\nSchema Capability:\n  - Path: tooltip\n    Category: identity\n    Kind: string\n    Description: Texto exibido ao passar o mouse.\n\nSchema Capability:\n  - Path: tooltipOnHover\n    Category: identity\n    Kind: boolean\n    Description: Habilita apresentação do tooltip no hover quando suportado pelo renderer.\n\nSchema Capability:\n  - Path: description\n    Category: identity\n    Kind: string\n    Description: Descrição detalhada (usada em documentação ou helps extensos).\n\nSchema Capability:\n  - Path: selectionMode\n    Category: behavior\n    Kind: enum\n    Description: Semântica de seleção explícita para controles de escolha.\n\nSchema Capability:\n  - Path: variant\n    Category: appearance\n    Kind: string\n    Description: Variante visual/semântica do controle.\n\nSchema Capability:\n  - Path: density\n    Category: appearance\n    Kind: enum\n    Description: Densidade visual do shell do controle.\n\nSchema Capability:\n  - Path: links\n    Category: identity\n    Kind: array\n    Description: Links ricos associados ao campo, úteis em consentimentos e conteúdo legal.\n\nSchema Capability:\n  - Path: group\n    Category: identity\n    Kind: string\n    Description: Agrupador lógico do campo.\n\nSchema Capability:\n  - Path: order\n    Category: layout\n    Kind: number\n    Description: Ordem de exibição do campo.\n\nSchema Capability:\n  - Path: width\n    Category: layout\n    Kind: string\n    Description: Largura do campo (ex: 50%, 100px).\n\nSchema Capability:\n  - Path: isFlex\n    Category: layout\n    Kind: boolean\n    Description: Se true, usa flex-grow para preencher espaço.\n\nSchema Capability:\n  - Path: controlType\n    Category: behavior\n    Kind: enum\n    Description: Tipo do componente de UI (input, select, datepicker, etc).\n\nSchema Capability:\n  - Path: dataType\n    Category: data\n    Kind: enum\n    Description: Tipo de dado do campo (text, number, date, etc).\n\nSchema Capability:\n  - Path: source\n    Category: data\n    Kind: enum\n    Description: Origem semântica do campo. Use local para campos do host que não vêm do schema backend.\n\nSchema Capability:\n  - Path: transient\n    Category: data\n    Kind: boolean\n    Description: Marca o campo como temporário/local para preenchimento. O dynamic-form omite do submit por padrão.\n\nSchema Capability:\n  - Path: submitPolicy\n    Category: behavior\n    Kind: enum\n    Description: Política de submit para sobrescrever o padrão de campos locais/transient.\n\nSchema Capability:\n  - Path: materialDesign.appearance\n    Category: appearance\n    Kind: enum\n    Description: Aparência do campo Material (fill/outline).\n\nSchema Capability:\n  - Path: materialDesign.color\n    Category: appearance\n    Kind: enum\n    Description: Tema de cor Material (primary/accent/warn).\n\nSchema Capability:\n  - Path: materialDesign.floatLabel\n    Category: appearance\n    Kind: enum\n    Description: Comportamento do rótulo flutuante.\n\nSchema Capability:\n  - Path: materialDesign.subscriptSizing\n    Category: appearance\n    Kind: enum\n    Description: Estratégia de sizing do subscript (erros/hints).\n\nSchema Capability:\n  - Path: materialDesign.hideRequiredMarker\n    Category: appearance\n    Kind: boolean\n    Description: Oculta o asterisco de campo obrigatório.\n\nSchema Capability:\n  - Path: materialDesign.density\n    Category: appearance\n    Kind: enum\n    Description: Densidade do campo Material.\n\nSchema Capability:\n  - Path: materialDesign.disableRipple\n    Category: appearance\n    Kind: boolean\n    Description: Desativa ripple/ondulação em componentes Material.\n\nSchema Capability:\n  - Path: materialDesign.customPalette\n    Category: appearance\n    Kind: object\n    Description: Override de paleta (primary/accent/warn).\n\nSchema Capability:\n  - Path: materialDesign.animations\n    Category: appearance\n    Kind: object\n    Description: Configuração de animações (disable, duration, easing).\n\nSchema Capability:\n  - Path: prefixIcon\n    Category: appearance\n    Kind: string\n    Description: Ícone exibido antes do valor.\n\nSchema Capability:\n  - Path: suffixIcon\n    Category: appearance\n    Kind: string\n    Description: Ícone exibido depois do valor.\n\nSchema Capability:\n  - Path: iconPosition\n    Category: appearance\n    Kind: enum\n    Description: Posição preferencial do ícone principal.\n\nSchema Capability:\n  - Path: iconSize\n    Category: appearance\n    Kind: enum\n    Description: Tamanho do ícone.\n\nSchema Capability:\n  - Path: iconColor\n    Category: appearance\n    Kind: string\n    Description: Cor semântica ou token de cor aplicado ao ícone principal.\n\nSchema Capability:\n  - Path: iconClass\n    Category: appearance\n    Kind: string\n    Description: Classe CSS controlada pelo host para o ícone principal.\n\nSchema Capability:\n  - Path: iconStyle\n    Category: appearance\n    Kind: string\n    Description: Estilo visual semântico do ícone quando o renderer suportar variações.\n\nSchema Capability:\n  - Path: iconFontSize\n    Category: appearance\n    Kind: string\n    Description: Tamanho tipográfico do ícone principal.\n\nSchema Capability:\n  - Path: valuePresentation\n    Category: appearance\n    Kind: object\n    Description: Formato canonico de exibicao em superficies readonly/display, como moeda, numero, percentual, data, datetime, time e boolean.\n\nSchema Capability:\n  - Path: presentation\n    Category: appearance\n    Kind: object\n    Description: Estado visual semantico base para presentationMode, incluindo presenter, tone, icon, label, badge, tooltip, appearance e formatter opcional.\n\nSchema Capability:\n  - Path: presentation.presenter\n    Category: appearance\n    Kind: enum\n    Description: Tipo semantico de renderizacao em modo apresentacao.\n\nSchema Capability:\n  - Path: presentation.tone\n    Category: appearance\n    Kind: enum\n    Description: Tom semantico mapeado pelo consumidor para tokens de tema.\n\nSchema Capability:\n  - Path: presentation.appearance\n    Category: appearance\n    Kind: enum\n    Description: Nivel de enfase visual do apresentador.",
          "sourcePointer": "projects/praxis-core/src/lib/ai/field-metadata-ai-capabilities.ts",
          "contentHash": "eb6fad6a7ea6cbb1e1ddf8b449ee1453400d1a713967f9075d3f62c2234dda02",
          "sourceKind": "component_definition",
          "sourceId": "praxis-filter",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 2,
          "chunkKind": "capabilities",
          "content": "Schema Capability:\n  - Path: presentation.icon\n    Category: appearance\n    Kind: string\n    Description: Nome de icone Material Symbols usado pelo apresentador semantico.\n\nSchema Capability:\n  - Path: presentation.label\n    Category: identity\n    Kind: string\n    Description: Rotulo semantico exibido por apresentadores como status, badge ou chip.\n\nSchema Capability:\n  - Path: presentation.badge\n    Category: appearance\n    Kind: string\n    Description: Marcador secundario opcional exibido junto ao valor em superficies de apresentacao.\n\nSchema Capability:\n  - Path: presentation.prefix\n    Category: appearance\n    Kind: string\n    Description: Prefixo visual readonly aplicado ao valor apresentado, sem alterar payload, filtros, ordenacao ou exportacao.\n\nSchema Capability:\n  - Path: presentation.suffix\n    Category: appearance\n    Kind: string\n    Description: Sufixo visual readonly aplicado ao valor apresentado, sem alterar payload, filtros, ordenacao ou exportacao.\n\nSchema Capability:\n  - Path: presentation.valuePresentation\n    Category: appearance\n    Kind: object\n    Description: Override de formatacao aplicado apenas pela superficie de apresentacao.\n\nSchema Capability:\n  - Path: presentation.visualization\n    Category: appearance\n    Kind: object\n    Description: Micro visualizacao renderer-neutral para superficies compactas como tabela, lista, header, card e form read-only.\n\nSchema Capability:\n  - Path: presentation.visualization.kind\n    Category: appearance\n    Kind: enum\n    Description: Tipo semantico da micro visualizacao de apresentacao.\n\nSchema Capability:\n  - Path: presentation.visualization.surface\n    Category: layout\n    Kind: enum\n    Description: Superficie alvo usada para aplicar regras de densidade e fallback.\n\nSchema Capability:\n  - Path: presentation.visualization.size\n    Category: layout\n    Kind: enum\n    Description: Tamanho semantico da micro visualizacao.\n\nSchema Capability:\n  - Path: presentation.visualization.fallbackText\n    Category: accessibility\n    Kind: string\n    Description: Texto equivalente obrigatorio para fallback, exportacao e leitores de tela.\n\nSchema Capability:\n  - Path: presentationRules\n    Category: appearance\n    Kind: array\n    Description: Regras Json Logic ordenadas que sobrescrevem presentation em modo readonly/display; regras posteriores que casam vencem.\n\nSchema Capability:\n  - Path: presentationRules[].when\n    Category: behavior\n    Kind: object\n    Description: Guarda Json Logic avaliada contra o contexto de apresentacao do campo.\n\nSchema Capability:\n  - Path: presentationRules[].set\n    Category: appearance\n    Kind: object\n    Description: Patch semantico aplicado sobre presentation quando a guarda for verdadeira.\n\nSchema Capability:\n  - Path: mask\n    Category: appearance\n    Kind: string\n    Description: Máscara de input (padrão do componente).\n\nSchema Capability:\n  - Path: format\n    Category: appearance\n    Kind: string\n    Description: Formato de exibição (ex: pipes).\n\nSchema Capability:\n  - Path: validators\n    Category: validation\n    Kind: object\n    Description: Objeto contendo todas as regras de validação.\n\nSchema Capability:\n  - Path: validators.required\n    Category: validation\n    Kind: boolean\n    Description: Campo obrigatório.\n\nSchema Capability:\n  - Path: required\n    Category: validation\n    Kind: boolean\n    Description: Campo obrigatório (alias rápido do validators.required).\n\nSchema Capability:\n  - Path: validators.requiredMessage\n    Category: validation\n    Kind: string\n    Description: Mensagem customizada para required.\n\nSchema Capability:\n  - Path: validators.email\n    Category: validation\n    Kind: boolean\n    Description: Validação de formato de e-mail.\n\nSchema Capability:\n  - Path: validators.emailMessage\n    Category: validation\n    Kind: string\n    Description: Mensagem customizada para validação de email.\n\nSchema Capability:\n  - Path: validators.minLength\n    Category: validation\n    Kind: number\n    Description: Comprimento mínimo do texto.\n\nSchema Capability:\n  - Path: validators.minLengthMessage\n    Category: validation\n    Kind: string\n    Description: Mensagem customizada para minLength.\n\nSchema Capability:\n  - Path: validators.maxLength\n    Category: validation\n    Kind: number\n    Description: Comprimento máximo do texto.\n\nSchema Capability:\n  - Path: validators.maxLengthMessage\n    Category: validation\n    Kind: string\n    Description: Mensagem customizada para maxLength.\n\nSchema Capability:\n  - Path: validators.min\n    Category: validation\n    Kind: number\n    Description: Valor numérico mínimo.\n\nSchema Capability:\n  - Path: validators.minMessage\n    Category: validation\n    Kind: string\n    Description: Mensagem customizada para min.\n\nSchema Capability:\n  - Path: validators.max\n    Category: validation\n    Kind: number\n    Description: Valor numérico máximo.\n\nSchema Capability:\n  - Path: validators.maxMessage\n    Category: validation\n    Kind: string\n    Description: Mensagem customizada para max.\n\nSchema Capability:\n  - Path: validators.pattern\n    Category: validation\n    Kind: string\n    Description: Regex para validação.\n\nSchema Capability:\n  - Path: validators.patternMessage\n    Category: validation\n    Kind: string\n    Description: Mensagem customizada para pattern.\n\nSchema Capability:\n  - Path: validators.cpf\n    Category: validation\n    Kind: boolean\n    Description: Validador de CPF (legado).\n\nSchema Capability:\n  - Path: validators.cnpj\n    Category: validation\n    Kind: boolean\n    Description: Validador de CNPJ (legado).\n\nSchema Capability:\n  - Path: validators.cpfCnpj\n    Category: validation\n    Kind: boolean\n    Description: Validador automatico CPF/CNPJ (legado).\n\nSchema Capability:\n  - Path: validators.cnpjAlpha\n    Category: validation\n    Kind: boolean\n    Description: Validador de CNPJ alfanumerico (legado).\n\nSchema Capability:\n  - Path: validators.cpfMessage\n    Category: validation\n    Kind: string\n    Description: Mensagem customizada para CPF.\n\nSchema Capability:\n  - Path: validators.cnpjMessage\n    Category: validation\n    Kind: string\n    Description: Mensagem customizada para CNPJ.\n\nSchema Capability:\n  - Path: validators.cnpjAlphaMessage\n    Category: validation\n    Kind: string\n    Description: Mensagem customizada para CNPJ alfanumerico.\n\nSchema Capability:\n  - Path: validators.url\n    Category: validation\n    Kind: boolean\n    Description: Validador de URL.\n\nSchema Capability:\n  - Path: validators.urlMessage\n    Category: validation\n    Kind: string\n    Description: Mensagem customizada para URL.\n\nSchema Capability:\n  - Path: validators.minWords\n    Category: validation\n    Kind: number\n    Description: Mínimo de palavras.\n\nSchema Capability:\n  - Path: validators.requiredChecked\n    Category: validation\n    Kind: boolean\n    Description: Exige checkbox marcado (ex: termos de uso).\n\nSchema Capability:\n  - Path: validators.customValidator\n    Category: validation\n    Kind: expression\n    Description: Validador customizado (função).\n\nSchema Capability:\n  - Path: validators.asyncValidator\n    Category: validation\n    Kind: expression\n    Description: Validador async customizado (função).\n\nSchema Capability:\n  - Path: validators.matchField\n    Category: validation\n    Kind: string\n    Description: Campo que deve coincidir (cross-field).\n\nSchema Capability:\n  - Path: validators.matchFieldMessage\n    Category: validation\n    Kind: string\n    Description: Mensagem customizada para matchField.\n\nSchema Capability:\n  - Path: validators.uniqueValidator\n    Category: validation\n    Kind: expression\n    Description: Validador de unicidade via API (função).\n\nSchema Capability:\n  - Path: validators.uniqueMessage\n    Category: validation\n    Kind: string\n    Description: Mensagem customizada para unicidade.\n\nSchema Capability:\n  - Path: validators.conditionalValidation\n    Category: validation\n    Kind: array\n    Description: Regras de validação condicional.",
          "sourcePointer": "projects/praxis-core/src/lib/ai/field-metadata-ai-capabilities.ts",
          "contentHash": "66c1d098bbb3c0fa8a3d60b222aa677c6dfeb1a1084b1d2a86309baf1ea81cd9",
          "sourceKind": "component_definition",
          "sourceId": "praxis-filter",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 3,
          "chunkKind": "capabilities",
          "content": "Schema Capability:\n  - Path: validators.conditionalValidation[].condition\n    Category: validation\n    Kind: expression\n    Description: Condicao para aplicar validadores.\n\nSchema Capability:\n  - Path: validators.conditionalValidation[].validators\n    Category: validation\n    Kind: object\n    Description: Conjunto de validadores aplicados quando a condicao for verdadeira.\n\nSchema Capability:\n  - Path: validators.validationTrigger\n    Category: validation\n    Kind: enum\n    Description: Gatilho de validação no validator.\n\nSchema Capability:\n  - Path: validators.validationDebounce\n    Category: validation\n    Kind: number\n    Description: Debounce de validação no validator (ms).\n\nSchema Capability:\n  - Path: validators.showInlineErrors\n    Category: validation\n    Kind: boolean\n    Description: Exibe erros inline (validator).\n\nSchema Capability:\n  - Path: validators.errorPosition\n    Category: validation\n    Kind: enum\n    Description: Posicao do erro (validator).\n\nSchema Capability:\n  - Path: validationMode\n    Category: validation\n    Kind: enum\n    Description: Gatilho da validação (change/blur/submit).\n\nSchema Capability:\n  - Path: debounceTime\n    Category: validation\n    Kind: number\n    Description: Debounce para validação em ms.\n\nSchema Capability:\n  - Path: options\n    Category: data\n    Kind: array\n    Description: Array de opções conforme controlType (ex.: { key, value } ou { value, text/display }).\n\nSchema Capability:\n  - Path: endpoint\n    Category: data\n    Kind: string\n    Description: URL para carregar opções remotas.\n\nSchema Capability:\n  - Path: valueField\n    Category: data\n    Kind: string\n    Description: Nome da propriedade de valor nas opções.\n\nSchema Capability:\n  - Path: displayField\n    Category: data\n    Kind: string\n    Description: Nome da propriedade de texto nas opções.\n\nSchema Capability:\n  - Path: filterField\n    Category: data\n    Kind: string\n    Description: Campo para filtragem no backend.\n\nSchema Capability:\n  - Path: queryParams\n    Category: data\n    Kind: object\n    Description: Parâmetros fixos para a query do endpoint.\n\nSchema Capability:\n  - Path: cacheDuration\n    Category: data\n    Kind: number\n    Description: Duração do cache de dados em ms.\n\nSchema Capability:\n  - Path: hidden\n    Category: behavior\n    Kind: boolean\n    Description: Oculta o campo globalmente.\n\nSchema Capability:\n  - Path: visibleIn\n    Category: behavior\n    Kind: array\n    Description: Contextos onde o campo é visível.\n\nSchema Capability:\n  - Path: formHidden\n    Category: behavior\n    Kind: boolean\n    Description: Oculta apenas no formulário.\n\nSchema Capability:\n  - Path: tableHidden\n    Category: behavior\n    Kind: boolean\n    Description: Oculta apenas na tabela.\n\nSchema Capability:\n  - Path: filterHidden\n    Category: behavior\n    Kind: boolean\n    Description: Oculta apenas no filtro.\n\nSchema Capability:\n  - Path: fieldAccess\n    Category: behavior\n    Kind: object\n    Description: Politica canonica de UX para visibilidade/edicao por authorities publicadas pelo backend.\n\nSchema Capability:\n  - Path: fieldAccess.visibleForAuthorities\n    Category: behavior\n    Kind: array\n    Description: Authorities que podem ver o campo no runtime quando a UX tiver claims explicitas.\n\nSchema Capability:\n  - Path: fieldAccess.editableForAuthorities\n    Category: behavior\n    Kind: array\n    Description: Authorities que podem editar o campo no runtime quando a UX tiver claims explicitas.\n\nSchema Capability:\n  - Path: fieldAccess.reason\n    Category: misc\n    Kind: string\n    Description: Justificativa explicativa/auditavel da politica de acesso do campo.\n\nSchema Capability:\n  - Path: dependencyFields\n    Category: dependency\n    Kind: array\n    Description: Campos dos quais este campo depende.\n\nSchema Capability:\n  - Path: conditionalRequired\n    Category: dependency\n    Kind: expression\n    Description: Condição Json Logic para obrigatoriedade declarativa.\n\nSchema Capability:\n  - Path: conditionalDisplay\n    Category: dependency\n    Kind: expression\n    Description: Condição Json Logic para visibilidade declarativa.\n\nSchema Capability:\n  - Path: dependencyFilterMap\n    Category: dependency\n    Kind: object\n    Description: Mapeamento de filtro baseado na dependência.\n\nSchema Capability:\n  - Path: dependencyValuePath\n    Category: dependency\n    Kind: string\n    Description: Caminho no valor da dependência.\n\nSchema Capability:\n  - Path: dependencyMergeStrategy\n    Category: dependency\n    Kind: enum\n    Description: Estratégia de merge dos dados carregados.\n\nSchema Capability:\n  - Path: dependencyLoadOnChange\n    Category: dependency\n    Kind: enum\n    Description: Quando recarregar dependência.\n\nSchema Capability:\n  - Path: resetOnDependentChange\n    Category: dependency\n    Kind: boolean\n    Description: Zera valor se dependência mudar.\n\nSchema Capability:\n  - Path: enableDependencyCascade\n    Category: dependency\n    Kind: boolean\n    Description: Habilita/desabilita cascata nativa de dependências entre campos.\n\nSchema Capability:\n  - Path: dependencyDebounceMs\n    Category: dependency\n    Kind: number\n    Description: Delay para reagir à mudança de dependência.\n\nSchema Capability:\n  - Path: suppressInlineErrorsOnCascade\n    Category: dependency\n    Kind: boolean\n    Description: Suprime erros inline durante cascata.\n\nSchema Capability:\n  - Path: transformDisplayValue\n    Category: transform\n    Kind: expression\n    Description: Transforma valor para exibição.\n\nSchema Capability:\n  - Path: transformSaveValue\n    Category: transform\n    Kind: expression\n    Description: Transforma valor para salvar.\n\nSchema Capability:\n  - Path: textTransformApply\n    Category: transform\n    Kind: enum\n    Description: Quando aplicar transformação de texto.\n\nSchema Capability:\n  - Path: inlineEditing\n    Category: behavior\n    Kind: boolean\n    Description: Permite edição inline (tabelas).\n\nSchema Capability:\n  - Path: unique\n    Category: validation\n    Kind: boolean\n    Description: Valida unicidade no backend.\n\nSchema Capability:\n  - Path: readOnly\n    Category: behavior\n    Kind: boolean\n    Description: Campo somente leitura.\n\nSchema Capability:\n  - Path: disabled\n    Category: behavior\n    Kind: boolean\n    Description: Campo desabilitado.\n\nSchema Capability:\n  - Path: defaultValue\n    Category: data\n    Kind: object\n    Description: Valor inicial do campo.\n\nSchema Capability:\n  - Path: ariaLabel\n    Category: accessibility\n    Kind: string\n    Description: Label para leitores de tela.\n\nSchema Capability:\n  - Path: ariaDescribedBy\n    Category: accessibility\n    Kind: string\n    Description: IDs de descrição acessível.\n\nSchema Capability:\n  - Path: tabIndex\n    Category: accessibility\n    Kind: number\n    Description: Ordem de tabulacao para teclado.\n\nSchema Capability:\n  - Path: accessKey\n    Category: accessibility\n    Kind: string\n    Description: Atalho de teclado (accessKey).",
          "sourcePointer": "projects/praxis-core/src/lib/ai/field-metadata-ai-capabilities.ts",
          "contentHash": "baac1d41291e96afcde4361d7068ba09187a854400de7cc21fd89664043fa96c",
          "sourceKind": "component_definition",
          "sourceId": "praxis-filter",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 4,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"filter.settings.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-filter\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"FilterConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configure standalone filter settings Merges a partial, runtime-backed FilterConfig patch while preserving host-owned inputs and excluding the controlled value DTO. Effects: merge-object. Keep employeeName and employeeStatus visible and add department to this standalone filter. Open this standalone filter in a drawer and use compact date controls. Persist the current filter value as authoring configuration. Persist a host metadata override for employeeStatus. Enable the table query builder on this standalone filter.\",\"scope\":\"global\",\"target\":{\"kind\":\"filterSettings\",\"resolver\":\"filter-config\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"alwaysVisibleFields\",\"selectedFieldIds\",\"allowSaveTags\",\"changeDebounceMs\",\"placeBooleansInActions\",\"showToggleLabels\",\"alwaysMinWidth\",\"alwaysColsMd\",\"alwaysColsLg\",\"confirmTagDelete\",\"tagColor\",\"tagVariant\",\"tagButtonColor\",\"actionsButtonColor\",\"actionsVariant\",\"useInlineSearchableSelectVariant\",\"useInlineRangeVariant\",\"useInlineDateVariant\",\"useInlineDateRangeVariant\",\"useInlineTimeVariant\",\"useInlineTimeRangeVariant\",\"useInlineTreeSelectVariant\",\"overlayVariant\",\"overlayBackdrop\",\"advancedOpenMode\",\"advancedClearButtonsEnabled\"],\"semanticTerms\":[\"alwaysVisibleFields\",\"selectedFieldIds\",\"allowSaveTags\",\"changeDebounceMs\",\"placeBooleansInActions\",\"showToggleLabels\",\"alwaysMinWidth\",\"alwaysColsMd\",\"alwaysColsLg\",\"confirmTagDelete\",\"tagColor\",\"tagVariant\",\"tagButtonColor\",\"actionsButtonColor\",\"actionsVariant\",\"useInlineSearchableSelectVariant\",\"useInlineRangeVariant\",\"useInlineDateVariant\",\"useInlineDateRangeVariant\",\"useInlineTimeVariant\",\"useInlineTimeRangeVariant\",\"useInlineTreeSelectVariant\",\"overlayVariant\",\"overlayBackdrop\",\"advancedOpenMode\",\"advancedClearButtonsEnabled\",\"primary\",\"accent\",\"warn\",\"basic\",\"filled\",\"outlined\",\"standard\",\"card\",\"frosted\",\"modal\",\"drawer\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"alwaysVisibleFields\",\"selectedFieldIds\",\"allowSaveTags\",\"changeDebounceMs\",\"placeBooleansInActions\",\"showToggleLabels\",\"alwaysMinWidth\",\"alwaysColsMd\",\"alwaysColsLg\",\"confirmTagDelete\",\"tagColor\",\"tagVariant\",\"tagButtonColor\",\"actionsButtonColor\",\"actionsVariant\",\"useInlineSearchableSelectVariant\",\"useInlineRangeVariant\",\"useInlineDateVariant\",\"useInlineDateRangeVariant\",\"useInlineTimeVariant\",\"useInlineTimeRangeVariant\",\"useInlineTreeSelectVariant\",\"overlayVariant\",\"overlayBackdrop\",\"advancedOpenMode\",\"advancedClearButtonsEnabled\"],\"validators\":[{\"validatorId\":\"filter-fields-exist\",\"level\":\"error\",\"code\":\"FILTER_FIELDS_EXIST\",\"description\":\"Every alwaysVisibleFields and selectedFieldIds entry must exist in the governed filter request metadata or schema.\"},{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"FILTER_EDITOR_ROUND_TRIP_PRESERVE\",\"description\":\"Apply, save, reset and reopen must preserve unrelated host inputs while projecting only FilterConfig-backed settings.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"configure-standalone-filter-fields\",\"request\":\"Keep employeeName and employeeStatus visible and add department to this standalone filter.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"alwaysVisibleFields\":[\"employeeName\",\"employeeStatus\"],\"selectedFieldIds\":[\"department\"]},\"isPositive\":true},{\"id\":\"configure-standalone-filter-presentation\",\"request\":\"Open this standalone filter in a drawer and use compact date controls.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"advancedOpenMode\":\"drawer\",\"useInlineDateVariant\":true,\"changeDebounceMs\":450},\"isPositive\":true}],\"negativeExamples\":[{\"id\":\"reject-runtime-value-authoring\",\"request\":\"Persist the current filter value as authoring configuration.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"value\":{\"employeeStatus\":\"active\"}},\"isPositive\":false},{\"id\":\"reject-host-metadata-override-authoring\",\"request\":\"Persist a host metadata override for employeeStatus.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"alwaysVisibleFieldMetadataOverrides\":{\"employeeStatus\":{\"label\":\"Status\"}}},\"isPositive\":false},{\"id\":\"reject-table-filter-dsl\",\"request\":\"Enable the table query builder on this standalone filter.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"queryBuilder\":true},\"isPositive\":false}]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-filter-authoring-manifest.ts",
          "contentHash": "c672a5a281dde591a56133649446d2a835b1d686c3995892f3e15d890475b0bf",
          "sourceKind": "component_definition",
          "sourceId": "praxis-filter",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 5,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-filter\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"FilterConfig\",\"chunkSection\":\"identity\"}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-filter-authoring-manifest.ts",
          "contentHash": "d97c161d4521cc7178c0edde363e296c418d40b465b92f63170c14bbb223a28b",
          "sourceKind": "component_definition",
          "sourceId": "praxis-filter",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 6,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-filter\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"FilterConfig\",\"chunkSection\":\"runtimeInputs\",\"runtimeInputs\":[{\"name\":\"resourcePath\",\"type\":\"string\",\"description\":\"Canonical resource used to resolve filter metadata.\"},{\"name\":\"apiUrlEntry\",\"type\":\"ApiUrlEntry | null\",\"description\":\"Resolved API entry supplied by detached hosts.\"},{\"name\":\"fieldMetadata\",\"type\":\"FieldMetadata[] | null\",\"description\":\"Optional host-provided filter metadata.\"},{\"name\":\"filterId\",\"type\":\"string\",\"description\":\"Stable filter persistence identity.\"},{\"name\":\"formId\",\"type\":\"string\",\"description\":\"Stable advanced-filter form identity.\"},{\"name\":\"componentInstanceId\",\"type\":\"string\",\"description\":\"Stable hosted widget identity.\"},{\"name\":\"mode\",\"type\":\"'filter'\",\"allowedValues\":[\"filter\"],\"description\":\"Standalone runtime mode.\"},{\"name\":\"notifyIfOutdated\",\"type\":\"'inline' | 'snackbar' | 'both' | 'none'\",\"description\":\"Schema drift notification channel.\"},{\"name\":\"snoozeMs\",\"type\":\"number\",\"description\":\"Schema drift notification snooze duration.\"},{\"name\":\"autoOpenSettingsOnOutdated\",\"type\":\"boolean\",\"description\":\"Opens settings when schema drift is detected.\"},{\"name\":\"enableCustomization\",\"type\":\"boolean\",\"description\":\"Enables runtime customization affordances.\"},{\"name\":\"value\",\"type\":\"Record<string, any>\",\"description\":\"Controlled runtime filter DTO; never persisted by standalone authoring.\"},{\"name\":\"alwaysVisibleFields\",\"type\":\"string[]\",\"description\":\"Ordered fields pinned in the inline filter.\"},{\"name\":\"alwaysVisibleFieldMetadataOverrides\",\"type\":\"Record<string, Record<string, any>>\",\"description\":\"Host-owned metadata overrides preserved by editor round trips but not authored by this manifest.\"},{\"name\":\"selectedFieldIds\",\"type\":\"string[]\",\"description\":\"Ordered additional fields selected for the filter.\"},{\"name\":\"tags\",\"type\":\"FilterTag[]\",\"description\":\"Host-provided filter shortcuts; not authored by this manifest.\"},{\"name\":\"allowSaveTags\",\"type\":\"boolean\",\"description\":\"Allows users to persist filter shortcuts.\"},{\"name\":\"persistenceKey\",\"type\":\"string\",\"description\":\"Host-owned persistence key.\"},{\"name\":\"disablePersistence\",\"type\":\"boolean\",\"description\":\"Disables runtime preference persistence.\"},{\"name\":\"i18n\",\"type\":\"Partial<I18n>\",\"description\":\"Host-provided copy overrides.\"},{\"name\":\"changeDebounceMs\",\"type\":\"number\",\"description\":\"Debounce applied to filter changes.\"},{\"name\":\"showFilterSettings\",\"type\":\"boolean\",\"description\":\"Shows runtime filter settings affordance.\"},{\"name\":\"showAdvancedButton\",\"type\":\"boolean\",\"description\":\"Shows the advanced-filter action.\"},{\"name\":\"showAddButton\",\"type\":\"boolean\",\"description\":\"Shows the field-selection action.\"},{\"name\":\"showClearButton\",\"type\":\"boolean\",\"description\":\"Shows the clear action.\"},{\"name\":\"showSearchButton\",\"type\":\"boolean\",\"description\":\"Shows the explicit request-search action.\"},{\"name\":\"confirmTagDelete\",\"type\":\"boolean\",\"description\":\"Requires confirmation before deleting a shortcut.\"},{\"name\":\"placeBooleansInActions\",\"type\":\"boolean\",\"description\":\"Places boolean controls in the action lane.\"},{\"name\":\"showToggleLabels\",\"type\":\"boolean\",\"description\":\"Shows labels for action-lane toggles.\"},{\"name\":\"useInlineSelectVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact inline select renderer.\"},{\"name\":\"useInlineSearchableSelectVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact searchable-select renderer.\"},{\"name\":\"useInlineMultiSelectVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact multi-select renderer.\"},{\"name\":\"useInlineInputVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact input renderer.\"},{\"name\":\"useInlineToggleVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact toggle renderer.\"},{\"name\":\"useInlineRangeVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact range renderer.\"},{\"name\":\"useInlineDateVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact date renderer.\"},{\"name\":\"useInlineDateRangeVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact date-range renderer.\"},{\"name\":\"useInlineTimeVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact time renderer.\"},{\"name\":\"useInlineTimeRangeVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact time-range renderer.\"},{\"name\":\"useInlineTreeSelectVariant\",\"type\":\"boolean\",\"description\":\"Uses the compact tree-select renderer.\"},{\"name\":\"alwaysMinWidth\",\"type\":\"number\",\"description\":\"Minimum width for pinned fields.\"},{\"name\":\"alwaysColsMd\",\"type\":\"number\",\"description\":\"Pinned-field columns on medium viewports.\"},{\"name\":\"alwaysColsLg\",\"type\":\"number\",\"description\":\"Pinned-field columns on large viewports.\"},{\"name\":\"tagColor\",\"type\":\"'primary' | 'accent' | 'warn' | 'basic'\",\"description\":\"Shortcut color token.\"},{\"name\":\"tagVariant\",\"type\":\"'filled' | 'outlined'\",\"description\":\"Shortcut surface variant.\"},{\"name\":\"tagButtonColor\",\"type\":\"'primary' | 'accent' | 'warn' | 'basic'\",\"description\":\"Shortcut action color token.\"},{\"name\":\"actionsButtonColor\",\"type\":\"'primary' | 'accent' | 'warn' | 'basic'\",\"description\":\"Filter action color token.\"},{\"name\":\"actionsVariant\",\"type\":\"'standard' | 'outlined'\",\"description\":\"Filter action surface variant.\"},{\"name\":\"overlayVariant\",\"type\":\"'card' | 'frosted'\",\"description\":\"Advanced-filter overlay surface.\"},{\"name\":\"overlayBackdrop\",\"type\":\"boolean\",\"description\":\"Controls the advanced-filter backdrop.\"},{\"name\":\"advancedOpenMode\",\"type\":\"'modal' | 'drawer'\",\"allowedValues\":[\"modal\",\"drawer\"],\"description\":\"Canonical advanced-filter container.\"},{\"name\":\"advancedClearButtonsEnabled\",\"type\":\"boolean\",\"description\":\"Enables clear buttons in advanced fields.\"}]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-filter-authoring-manifest.ts",
          "contentHash": "32697c43666b65b78c3de5e97cb865e4502a3b4001db3347c9944e1dac1fb801",
          "sourceKind": "component_definition",
          "sourceId": "praxis-filter",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 7,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-filter\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"FilterConfig\",\"chunkSection\":\"editableTargets\",\"editableTargets\":[{\"kind\":\"filterSettings\",\"resolver\":\"filter-config\",\"description\":\"The standalone FilterConfig root materialized by PraxisFilterWidgetConfigEditor.\"}]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-filter-authoring-manifest.ts",
          "contentHash": "3ea60be73bdd182627fcd18035085969d61bb1f6277e0409a9684edfec116548",
          "sourceKind": "component_definition",
          "sourceId": "praxis-filter",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 8,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-filter\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"FilterConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"filter.settings.configure\",\"title\":\"Configure standalone filter settings\",\"description\":\"Merges a partial, runtime-backed FilterConfig patch while preserving host-owned inputs and excluding the controlled value DTO.\",\"scope\":\"global\",\"targetKind\":\"filterSettings\",\"target\":{\"kind\":\"filterSettings\",\"resolver\":\"filter-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"additionalProperties\":false,\"properties\":{\"alwaysVisibleFields\":{\"type\":\"array\",\"uniqueItems\":true,\"items\":{\"type\":\"string\",\"minLength\":1}},\"selectedFieldIds\":{\"type\":\"array\",\"uniqueItems\":true,\"items\":{\"type\":\"string\",\"minLength\":1}},\"allowSaveTags\":{\"type\":\"boolean\"},\"changeDebounceMs\":{\"type\":\"number\",\"minimum\":100,\"maximum\":1000},\"placeBooleansInActions\":{\"type\":\"boolean\"},\"showToggleLabels\":{\"type\":\"boolean\"},\"alwaysMinWidth\":{\"type\":\"number\",\"minimum\":180,\"maximum\":480},\"alwaysColsMd\":{\"type\":\"number\",\"minimum\":1,\"maximum\":3},\"alwaysColsLg\":{\"type\":\"number\",\"minimum\":1,\"maximum\":4},\"confirmTagDelete\":{\"type\":\"boolean\"},\"tagColor\":{\"enum\":[\"primary\",\"accent\",\"warn\",\"basic\"]},\"tagVariant\":{\"enum\":[\"filled\",\"outlined\"]},\"tagButtonColor\":{\"enum\":[\"primary\",\"accent\",\"warn\",\"basic\"]},\"actionsButtonColor\":{\"enum\":[\"primary\",\"accent\",\"warn\",\"basic\"]},\"actionsVariant\":{\"enum\":[\"standard\",\"outlined\"]},\"useInlineSearchableSelectVariant\":{\"type\":\"boolean\"},\"useInlineRangeVariant\":{\"type\":\"boolean\"},\"useInlineDateVariant\":{\"type\":\"boolean\"},\"useInlineDateRangeVariant\":{\"type\":\"boolean\"},\"useInlineTimeVariant\":{\"type\":\"boolean\"},\"useInlineTimeRangeVariant\":{\"type\":\"boolean\"},\"useInlineTreeSelectVariant\":{\"type\":\"boolean\"},\"overlayVariant\":{\"enum\":[\"card\",\"frosted\"]},\"overlayBackdrop\":{\"type\":\"boolean\"},\"advancedOpenMode\":{\"enum\":[\"modal\",\"drawer\"]},\"advancedClearButtonsEnabled\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"filter-fields-exist\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"alwaysVisibleFields\",\"selectedFieldIds\",\"allowSaveTags\",\"changeDebounceMs\",\"placeBooleansInActions\",\"showToggleLabels\",\"alwaysMinWidth\",\"alwaysColsMd\",\"alwaysColsLg\",\"confirmTagDelete\",\"tagColor\",\"tagVariant\",\"tagButtonColor\",\"actionsButtonColor\",\"actionsVariant\",\"useInlineSearchableSelectVariant\",\"useInlineRangeVariant\",\"useInlineDateVariant\",\"useInlineDateRangeVariant\",\"useInlineTimeVariant\",\"useInlineTimeRangeVariant\",\"useInlineTreeSelectVariant\",\"overlayVariant\",\"overlayBackdrop\",\"advancedOpenMode\",\"advancedClearButtonsEnabled\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]}]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-filter-authoring-manifest.ts",
          "contentHash": "fb0979d1e1b6f0c09e347b1255ebba55abd51431c95718dd450da187c2c8a7e7",
          "sourceKind": "component_definition",
          "sourceId": "praxis-filter",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 9,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-filter\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"FilterConfig\",\"chunkSection\":\"validators\",\"validators\":[{\"validatorId\":\"filter-fields-exist\",\"level\":\"error\",\"code\":\"FILTER_FIELDS_EXIST\",\"description\":\"Every alwaysVisibleFields and selectedFieldIds entry must exist in the governed filter request metadata or schema.\"},{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"FILTER_EDITOR_ROUND_TRIP_PRESERVE\",\"description\":\"Apply, save, reset and reopen must preserve unrelated host inputs while projecting only FilterConfig-backed settings.\"}]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-filter-authoring-manifest.ts",
          "contentHash": "458cc1e93d7fd5e1ec33ae13422d4c86d4d4327761d88afae77fd6d111ada22c",
          "sourceKind": "component_definition",
          "sourceId": "praxis-filter",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 10,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-filter\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"FilterConfig\",\"chunkSection\":\"roundTripRequirements\",\"roundTripRequirements\":[\"Apply and save must preserve resource, metadata, identity and unknown host inputs.\",\"The controlled value input must never be copied into the persisted authoring result.\",\"Reset must restore the settings captured when the editor opened without changing the saved widget definition.\",\"Reopen must materialize the last saved FilterConfig-backed inputs without TableConfig paths.\",\"advancedOpenMode must persist only the canonical values 'modal' or 'drawer'.\"]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-filter-authoring-manifest.ts",
          "contentHash": "f97e6fa90c7a0cd9760d5a3743ecebf684e63d1ee2198ed4ac973b2ad34fc294",
          "sourceKind": "component_definition",
          "sourceId": "praxis-filter",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 11,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-filter\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"FilterConfig\",\"chunkSection\":\"examples\",\"examples\":[{\"id\":\"configure-standalone-filter-fields\",\"request\":\"Keep employeeName and employeeStatus visible and add department to this standalone filter.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"alwaysVisibleFields\":[\"employeeName\",\"employeeStatus\"],\"selectedFieldIds\":[\"department\"]},\"isPositive\":true},{\"id\":\"configure-standalone-filter-presentation\",\"request\":\"Open this standalone filter in a drawer and use compact date controls.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"advancedOpenMode\":\"drawer\",\"useInlineDateVariant\":true,\"changeDebounceMs\":450},\"isPositive\":true},{\"id\":\"reject-runtime-value-authoring\",\"request\":\"Persist the current filter value as authoring configuration.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"value\":{\"employeeStatus\":\"active\"}},\"isPositive\":false},{\"id\":\"reject-host-metadata-override-authoring\",\"request\":\"Persist a host metadata override for employeeStatus.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"alwaysVisibleFieldMetadataOverrides\":{\"employeeStatus\":{\"label\":\"Status\"}}},\"isPositive\":false},{\"id\":\"reject-table-filter-dsl\",\"request\":\"Enable the table query builder on this standalone filter.\",\"operationId\":\"filter.settings.configure\",\"params\":{\"queryBuilder\":true},\"isPositive\":false}]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-filter-authoring-manifest.ts",
          "contentHash": "d86f2a06ed5544160bd1eb05fa81810d4d33f23e385c90b09001cdbf43e87d9a",
          "sourceKind": "component_definition",
          "sourceId": "praxis-filter",
          "corpusVersion": "1.0.0"
        }
      ]
    },
    "praxis-filter-form-dialog-host": {
      "id": "praxis-filter-form-dialog-host",
      "description": "Dialog host that renders PraxisFilterForm with dialog data.",
      "category": "form",
      "inputs": [
        {
          "name": "data",
          "type": "FilterFormDialogData",
          "required": false,
          "description": "Dialog payload used to configure the filter form.",
          "label": "Dialog Data"
        },
        {
          "name": "data.formId",
          "type": "string",
          "required": false,
          "description": "Form ID used for persistence."
        },
        {
          "name": "data.resourcePath",
          "type": "string",
          "required": false,
          "description": "Resource path used by the filter form."
        },
        {
          "name": "data.config",
          "type": "FormConfig",
          "required": false,
          "description": "Form configuration for the filter UI."
        },
        {
          "name": "data.title",
          "type": "string",
          "required": false,
          "description": "Dialog title override."
        },
        {
          "name": "data.schemaLoading",
          "type": "boolean",
          "required": false,
          "description": "Shows loading state while schema is fetched."
        },
        {
          "name": "data.initialDto",
          "type": "Record<string, unknown>",
          "required": false,
          "description": "Initial values used to populate the filter form."
        },
        {
          "name": "data.allowSaveTags",
          "type": "boolean",
          "required": false,
          "description": "Enables saving filter as shortcut."
        },
        {
          "name": "data.i18n",
          "type": "{ saveAsShortcut?: string }",
          "required": false,
          "description": "Optional i18n strings for dialog actions."
        },
        {
          "name": "data.onSaveShortcut",
          "type": "(dto: Record<string, unknown>) => void",
          "required": false,
          "description": "Callback invoked when saving a filter shortcut."
        }
      ],
      "outputs": [],
      "configSchemaId": "FormConfig",
      "selector": "praxis-filter-form-dialog-host",
      "friendlyName": "Praxis Filter Form Dialog Host",
      "icon": "tune",
      "tags": [
        "dialog",
        "filter",
        "form",
        "host"
      ],
      "lib": "@praxisui/table",
      "source": "projects/praxis-table/src/lib/components/praxis-filter/praxis-filter-form-dialog-host.metadata.ts",
      "exportName": "PRAXIS_FILTER_FORM_DIALOG_HOST_COMPONENT_METADATA",
      "capabilities": [
        {
          "path": "metadata.version",
          "category": "metadata",
          "valueKind": "string",
          "description": "VersÃ£o da configuraÃ§Ã£o do formulÃ¡rio para controle de migraÃ§Ã£o.",
          "intentExamples": [
            "atualizar versÃ£o do form"
          ]
        },
        {
          "path": "metadata.source",
          "category": "metadata",
          "valueKind": "enum",
          "allowedValues": [
            "local",
            "server",
            "default"
          ],
          "description": "Origem da configuraÃ§Ã£o do formulÃ¡rio."
        },
        {
          "path": "metadata.lastUpdated",
          "category": "metadata",
          "valueKind": "string",
          "description": "Timestamp da Ãºltima atualizaÃ§Ã£o da configuraÃ§Ã£o (ISO-8601).",
          "example": "2024-01-31T10:15:00Z",
          "safetyNotes": "Valor gerado pelo host/servidor. Evite alterar manualmente."
        },
        {
          "path": "metadata.schemaId",
          "category": "metadata",
          "valueKind": "string",
          "description": "ID do schema de origem para reconciliaÃ§Ã£o no servidor.",
          "safetyNotes": "NÃ£o deve ser manipulado diretamente pela IA sem contexto do backend."
        },
        {
          "path": "metadata.schemaContext",
          "category": "metadata",
          "valueKind": "object",
          "description": "Contexto do schema usado para compor o formulÃ¡rio.",
          "safetyNotes": "Preenchido pelo backend. NÃ£o alterar sem coordenaÃ§Ã£o com o servidor."
        },
        {
          "path": "metadata.schemaContext.path",
          "category": "metadata",
          "valueKind": "string",
          "description": "Path do schema de origem."
        },
        {
          "path": "metadata.schemaContext.operation",
          "category": "metadata",
          "valueKind": "string",
          "description": "OperaÃ§Ã£o do schema (ex.: \"get\", \"post\")."
        },
        {
          "path": "metadata.schemaContext.schemaType",
          "category": "metadata",
          "valueKind": "enum",
          "allowedValues": [
            "response",
            "request"
          ],
          "description": "Tipo do schema (response/request)."
        },
        {
          "path": "metadata.schemaContext.internal",
          "category": "metadata",
          "valueKind": "boolean",
          "description": "Indica se o schema Ã© interno."
        },
        {
          "path": "metadata.schemaContext.tenant",
          "category": "metadata",
          "valueKind": "string",
          "description": "Tenant do schema (se aplicÃ¡vel)."
        },
        {
          "path": "metadata.schemaContext.locale",
          "category": "metadata",
          "valueKind": "string",
          "description": "Locale do schema (se aplicÃ¡vel)."
        },
        {
          "path": "metadata.serverHash",
          "category": "metadata",
          "valueKind": "string",
          "description": "Hash dos dados do servidor para detecÃ§Ã£o de mudanÃ§as.",
          "safetyNotes": "Valor gerado internamente, nÃ£o deve ser alterado manualmente."
        },
        {
          "path": "metadata.customizations",
          "category": "metadata",
          "valueKind": "array",
          "description": "Log de customizaÃ§Ãµes manuais aplicadas ao formulÃ¡rio.",
          "safetyNotes": "Usado para auditoria, nÃ£o deve ser gerado pela IA."
        },
        {
          "path": "fieldMetadata",
          "category": "fields",
          "valueKind": "array",
          "description": "Array de metadados dos campos. Usado para referenciar a configuraÃ§Ã£o de campos.",
          "critical": true,
          "safetyNotes": "Consuma FieldMetadata via catÃ¡logo base (field-metadata-ai-capabilities); use controlType para escolher overlay de microcomponente. NÃ£o altere props internas aqui sem consultar o catÃ¡logo base.",
          "intentExamples": [
            "adicionar novo campo ao formulÃ¡rio",
            "remover campo de endereÃ§o"
          ]
        },
        {
          "path": "fieldMetadata[]",
          "category": "fields",
          "valueKind": "object",
          "description": "Item de metadados do campo (FieldMetadata).",
          "critical": true,
          "safetyNotes": "Consuma FieldMetadata via catÃ¡logo base (field-metadata-ai-capabilities); use controlType para escolher overlay de microcomponente. NÃ£o altere props internas aqui sem consultar o catÃ¡logo base."
        },
        {
          "path": "helpPresentation",
          "category": "appearance",
          "valueKind": "object",
          "description": "Politica visual do formulario para exibir hint/helpText dos campos sem alterar a semantica publicada pelos DTOs.",
          "safetyNotes": "Use para densidade visual de formularios; nao remova helpText/hint dos DTOs para limpar a UI."
        },
        {
          "path": "helpPresentation.display",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "inline",
            "popover",
            "auto",
            "hidden"
          ],
          "description": "Define se a ajuda semantica dos campos fica inline, em icone de ajuda, automatica por densidade, ou oculta visualmente."
        },
        {
          "path": "helpPresentation.inlineMaxLength",
          "category": "appearance",
          "valueKind": "number",
          "description": "Tamanho maximo para manter ajuda inline quando display=\"auto\"."
        },
        {
          "path": "helpPresentation.preferPopoverForControls",
          "category": "appearance",
          "valueKind": "array",
          "description": "Tipos de controle que devem preferir icone de ajuda quando display=\"auto\", como toggle, checkbox ou select."
        },
        {
          "path": "editorialContext",
          "category": "editorial",
          "valueKind": "object",
          "description": "Contexto editorial compartilhado entre os blocos hospedados antes/depois do formulario.",
          "safetyNotes": "Trate como objeto imutavel; hosts devem trocar a referencia ao atualizar valores."
        },
        {
          "path": "editorialContext.[token]",
          "category": "editorial",
          "valueKind": "string",
          "description": "Valor simples exposto no contexto editorial.",
          "safetyNotes": "Use strings/valores serializaveis. Evite objetos profundos sem contrato claro no host."
        },
        {
          "path": "formBlocksBefore",
          "category": "editorial",
          "valueKind": "object",
          "description": "RichContentDocument renderizado antes do formulario.",
          "safetyNotes": "Blocos editoriais nao entram em formData."
        },
        {
          "path": "formBlocksBefore.kind",
          "category": "editorial",
          "valueKind": "string",
          "description": "Kind canonico do documento rich content."
        },
        {
          "path": "formBlocksBefore.version",
          "category": "editorial",
          "valueKind": "string",
          "description": "Versao do documento rich content editorial."
        },
        {
          "path": "formBlocksBefore.nodes",
          "category": "editorial",
          "valueKind": "array",
          "description": "Lista de RichBlockNode renderizados antes do formulario."
        },
        {
          "path": "formBlocksBefore.nodes[]",
          "category": "editorial",
          "valueKind": "object",
          "description": "RichBlockNode editorial hospedado antes do formulario.",
          "safetyNotes": "Consuma o shape do node pelo catalogo de rich content; nao misture semantics de formData."
        },
        {
          "path": "formBlocksBefore.context",
          "category": "editorial",
          "valueKind": "object",
          "description": "Contexto base opcional do documento rich content hospedado antes do formulario."
        },
        {
          "path": "formBlocksBeforeActions",
          "category": "editorial",
          "valueKind": "object",
          "description": "RichContentDocument renderizado depois das seÃ§Ãµes e antes da Ã¡rea principal de aÃ§Ãµes.",
          "safetyNotes": "Ideal para blocos contextuais prÃ³ximos ao preenchimento, sem contaminar formData."
        },
        {
          "path": "formBlocksBeforeActions.kind",
          "category": "editorial",
          "valueKind": "string",
          "description": "Kind canonico do documento rich content antes das aÃ§Ãµes."
        },
        {
          "path": "formBlocksBeforeActions.version",
          "category": "editorial",
          "valueKind": "string",
          "description": "Versao do documento rich content antes das aÃ§Ãµes."
        },
        {
          "path": "formBlocksBeforeActions.nodes",
          "category": "editorial",
          "valueKind": "array",
          "description": "Lista de RichBlockNode renderizados antes da Ã¡rea principal de aÃ§Ãµes."
        },
        {
          "path": "formBlocksBeforeActions.nodes[]",
          "category": "editorial",
          "valueKind": "object",
          "description": "RichBlockNode editorial hospedado antes da Ã¡rea principal de aÃ§Ãµes."
        },
        {
          "path": "formBlocksBeforeActions.context",
          "category": "editorial",
          "valueKind": "object",
          "description": "Contexto base opcional do documento rich content antes das aÃ§Ãµes."
        },
        {
          "path": "formBlocksAfter",
          "category": "editorial",
          "valueKind": "object",
          "description": "RichContentDocument renderizado depois do formulario inteiro, incluindo a Ã¡rea principal de aÃ§Ãµes.",
          "safetyNotes": "Blocos editoriais nao entram em formData e este slot Ã© mais adequado para conteÃºdo de fechamento."
        },
        {
          "path": "formBlocksAfter.kind",
          "category": "editorial",
          "valueKind": "string",
          "description": "Kind canonico do documento rich content de fechamento."
        },
        {
          "path": "formBlocksAfter.version",
          "category": "editorial",
          "valueKind": "string",
          "description": "Versao do documento rich content de fechamento."
        },
        {
          "path": "formBlocksAfter.nodes",
          "category": "editorial",
          "valueKind": "array",
          "description": "Lista de RichBlockNode renderizados depois do formulario."
        },
        {
          "path": "formBlocksAfter.nodes[]",
          "category": "editorial",
          "valueKind": "object",
          "description": "RichBlockNode editorial hospedado depois do formulario."
        },
        {
          "path": "formBlocksAfter.context",
          "category": "editorial",
          "valueKind": "object",
          "description": "Contexto base opcional do documento rich content de fechamento."
        },
        {
          "path": "sections[].id",
          "category": "layout",
          "valueKind": "string",
          "description": "ID Ãºnico da seÃ§Ã£o.",
          "critical": true,
          "safetyNotes": "Alterar o ID pode quebrar referÃªncias de regras ou layout."
        },
        {
          "path": "sections[].title",
          "category": "layout",
          "valueKind": "string",
          "description": "TÃ­tulo exibido para cada seÃ§Ã£o do formulÃ¡rio.",
          "intentExamples": [
            "renomear seÃ§Ã£o de endereÃ§os",
            "colocar tÃ­tulo em maiÃºsculas"
          ]
        },
        {
          "path": "sections[].description",
          "category": "layout",
          "valueKind": "string",
          "description": "DescriÃ§Ã£o auxiliar exibida abaixo do tÃ­tulo da seÃ§Ã£o.",
          "intentExamples": [
            "adicionar descriÃ§Ã£o da seÃ§Ã£o",
            "explicar uso da seÃ§Ã£o"
          ]
        },
        {
          "path": "sections[].icon",
          "category": "layout",
          "valueKind": "string",
          "description": "Nome do Ã­cone (Material Icons) para o cabeÃ§alho da seÃ§Ã£o.",
          "intentExamples": [
            "colocar Ã­cone de casa na seÃ§Ã£o de endereÃ§o"
          ]
        },
        {
          "path": "sections[].sectionHeader",
          "category": "layout",
          "valueKind": "object",
          "description": "ConfiguraÃ§Ã£o rica do header visual da seÃ§Ã£o, com suporte a avatar por imagem, iniciais ou modo automÃ¡tico.",
          "safetyNotes": "Prefira definir `sourceField` para imagem, `initialsSourceField` para iniciais e `emptyState` neutro em fluxos create."
        },
        {
          "path": "sections[].sectionHeader.mode",
          "category": "layout",
          "valueKind": "enum",
          "allowedValues": [
            "icon",
            "avatar-image",
            "avatar-initials",
            "auto"
          ],
          "description": "EstratÃ©gia visual do header da seÃ§Ã£o."
        },
        {
          "path": "sections[].sectionHeader.sourceField",
          "category": "layout",
          "valueKind": "string",
          "description": "Campo do formulÃ¡rio usado como origem da imagem do avatar."
        },
        {
          "path": "sections[].sectionHeader.initialsSourceField",
          "category": "layout",
          "valueKind": "string",
          "description": "Campo textual usado para derivar iniciais do avatar."
        },
        {
          "path": "sections[].sectionHeader.altField",
          "category": "layout",
          "valueKind": "string",
          "description": "Campo textual usado como texto acessivel do avatar e como fallback textual para iniciais quando initialsSourceField nao estiver definido."
        },
        {
          "path": "sections[].sectionHeader.fallbackIcon",
          "category": "layout",
          "valueKind": "string",
          "description": "Ãcone opcional usado quando o avatar dinÃ¢mico estiver vazio ou invÃ¡lido."
        },
        {
          "path": "sections[].sectionHeader.emptyState",
          "category": "layout",
          "valueKind": "enum",
          "allowedValues": [
            "fallback-icon",
            "placeholder-avatar",
            "none"
          ],
          "description": "Comportamento do header quando os campos de origem ainda nÃ£o possuem valor."
        },
        {
          "path": "sections[].sectionHeader.size",
          "category": "layout",
          "valueKind": "enum",
          "allowedValues": [
            "sm",
            "md",
            "lg"
          ],
          "description": "Tamanho semÃ¢ntico do avatar da seÃ§Ã£o, materializado pelo runtime via tokens."
        },
        {
          "path": "sections[].sectionHeader.initialsMaxLength",
          "category": "layout",
          "valueKind": "number",
          "description": "MÃ¡ximo de letras exibidas no avatar textual."
        },
        {
          "path": "sections[].collapsible",
          "category": "layout",
          "valueKind": "boolean",
          "description": "Define se a seÃ§Ã£o pode ser colapsada/expandida pelo usuÃ¡rio.",
          "intentExamples": [
            "permitir fechar a seÃ§Ã£o de anexos",
            "tornar seÃ§Ã£o fixa"
          ]
        },
        {
          "path": "sections[].collapsed",
          "category": "layout",
          "valueKind": "boolean",
          "description": "Estado inicial da seÃ§Ã£o (colapsada/expandida) quando `collapsible` Ã© true.",
          "dependsOn": "sections[].collapsible",
          "intentExamples": [
            "recolher seÃ§Ã£o de endereÃ§os por padrÃ£o",
            "expandir dados bÃ¡sicos ao carregar"
          ]
        },
        {
          "path": "sections[].gapBottom",
          "category": "layout",
          "valueKind": "number",
          "description": "EspaÃ§amento vertical (em px) apÃ³s a seÃ§Ã£o.",
          "intentExamples": [
            "aumentar espaÃ§o depois da seÃ§Ã£o"
          ]
        },
        {
          "path": "sections[].titleGapBottom",
          "category": "layout",
          "valueKind": "number",
          "description": "EspaÃ§amento vertical (em px) abaixo do tÃ­tulo da seÃ§Ã£o."
        },
        {
          "path": "sections[].descriptionGapBottom",
          "category": "layout",
          "valueKind": "number",
          "description": "EspaÃ§amento vertical (em px) abaixo da descriÃ§Ã£o da seÃ§Ã£o."
        },
        {
          "path": "sections[].appearance",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "card",
            "plain",
            "step"
          ],
          "description": "Preset visual do container/cabeÃ§alho da seÃ§Ã£o.",
          "intentExamples": [
            "deixar a seÃ§Ã£o como step",
            "remover card da seÃ§Ã£o"
          ]
        },
        {
          "path": "sections[].stepLabel",
          "category": "content",
          "valueKind": "string",
          "description": "RÃ³tulo curto do passo exibido antes do tÃ­tulo da seÃ§Ã£o.",
          "intentExamples": [
            "mostrar etapa 2",
            "exibir badge numÃ©rico na seÃ§Ã£o"
          ]
        },
        {
          "path": "sections[].titleStyle",
          "category": "appearance",
          "valueKind": "enum",
          "description": "Preset de tipografia para o tÃ­tulo da seÃ§Ã£o.",
          "intentExamples": [
            "tÃ­tulo da seÃ§Ã£o maior"
          ]
        },
        {
          "path": "sections[].descriptionStyle",
          "category": "appearance",
          "valueKind": "enum",
          "description": "Preset de tipografia para a descriÃ§Ã£o da seÃ§Ã£o.",
          "intentExamples": [
            "descriÃ§Ã£o da seÃ§Ã£o em texto menor"
          ]
        },
        {
          "path": "sections[].titleColor",
          "category": "appearance",
          "valueKind": "string",
          "description": "Cor do tÃ­tulo da seÃ§Ã£o (CSS color ou token)."
        },
        {
          "path": "sections[].descriptionColor",
          "category": "appearance",
          "valueKind": "string",
          "description": "Cor da descriÃ§Ã£o da seÃ§Ã£o (CSS color ou token)."
        },
        {
          "path": "sections[].headerAlign",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "start",
            "center"
          ],
          "description": "Alinhamento horizontal do conteÃºdo do cabeÃ§alho da seÃ§Ã£o."
        },
        {
          "path": "sections[].headerTooltip",
          "category": "layout",
          "valueKind": "string",
          "description": "Texto de tooltip para o cabeÃ§alho da seÃ§Ã£o."
        },
        {
          "path": "sections[].headerActions",
          "category": "layout",
          "valueKind": "array",
          "description": "Lista de aÃ§Ãµes iconogrÃ¡ficas renderizadas no canto direito do cabeÃ§alho da seÃ§Ã£o.",
          "safetyNotes": "Prefira IDs estÃ¡veis porque essas aÃ§Ãµes podem ser alvo de regras e integraÃ§Ãµes do host."
        },
        {
          "path": "sections[].headerActions[].id",
          "category": "layout",
          "valueKind": "string",
          "description": "ID estÃ¡vel da aÃ§Ã£o de cabeÃ§alho da seÃ§Ã£o."
        },
        {
          "path": "sections[].headerActions[].label",
          "category": "layout",
          "valueKind": "string",
          "description": "Label acessÃ­vel usada em tooltip e aria-label da aÃ§Ã£o."
        },
        {
          "path": "sections[].headerActions[].icon",
          "category": "layout",
          "valueKind": "string",
          "description": "Ãcone renderizado na aÃ§Ã£o do cabeÃ§alho da seÃ§Ã£o."
        },
        {
          "path": "sections[].headerActions[].action",
          "category": "layout",
          "valueKind": "string",
          "description": "Nome opcional da aÃ§Ã£o emitida no customAction; se ausente, o runtime usa o ID."
        },
        {
          "path": "sections[].headerActions[].tooltip",
          "category": "layout",
          "valueKind": "string",
          "description": "Tooltip opcional da aÃ§Ã£o; se ausente, o runtime usa a label."
        },
        {
          "path": "sections[].headerActions[].color",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "primary",
            "accent",
            "warn",
            "basic"
          ],
          "description": "Tom visual da aÃ§Ã£o do cabeÃ§alho da seÃ§Ã£o."
        },
        {
          "path": "sections[].headerActions[].visible",
          "category": "layout",
          "valueKind": "boolean",
          "description": "Controla a visibilidade da aÃ§Ã£o do cabeÃ§alho da seÃ§Ã£o."
        },
        {
          "path": "sections[].headerActions[].disabled",
          "category": "layout",
          "valueKind": "boolean",
          "description": "Controla o estado desabilitado da aÃ§Ã£o do cabeÃ§alho da seÃ§Ã£o."
        },
        {
          "path": "sections[].className",
          "category": "appearance",
          "valueKind": "string",
          "description": "Classe CSS aplicada ao container da seÃ§Ã£o."
        },
        {
          "path": "sections[].styles",
          "category": "appearance",
          "valueKind": "object",
          "description": "Estilos inline aplicados ao container da seÃ§Ã£o."
        },
        {
          "path": "sections[].rows[].id",
          "category": "layout",
          "valueKind": "string",
          "description": "ID Ãºnico da linha dentro de uma seÃ§Ã£o.",
          "critical": true,
          "safetyNotes": "Alterar o ID pode quebrar referÃªncias de regras ou layout."
        },
        {
          "path": "sections[].rows[].title",
          "category": "layout",
          "valueKind": "string",
          "description": "TÃ­tulo interno da linha (usado em editores e labels)."
        },
        {
          "path": "sections[].rows[].gap",
          "category": "layout",
          "valueKind": "number",
          "description": "EspaÃ§amento horizontal (em px) entre colunas nesta linha.",
          "intentExamples": [
            "aumentar espaÃ§o entre campos da linha"
          ]
        },
        {
          "path": "sections[].rows[].rowGap",
          "category": "layout",
          "valueKind": "number",
          "description": "EspaÃ§amento vertical (em px) apÃ³s esta linha.",
          "intentExamples": [
            "adicionar mais espaÃ§o depois desta linha de campos"
          ]
        },
        {
          "path": "sections[].rows[].columns[].id",
          "category": "layout",
          "valueKind": "string",
          "description": "ID Ãºnico da coluna dentro de uma linha.",
          "critical": true,
          "safetyNotes": "Alterar o ID pode quebrar referÃªncias de regras ou layout."
        },
        {
          "path": "sections[].rows[].columns[].title",
          "category": "layout",
          "valueKind": "string",
          "description": "TÃ­tulo interno da coluna (usado em editores e labels)."
        },
        {
          "path": "sections[].rows[].columns[].testId",
          "category": "layout",
          "valueKind": "string",
          "description": "Atributo data-testid aplicado ao container da coluna."
        },
        {
          "path": "sections[].rows[].columns[].fields",
          "category": "layout",
          "valueKind": "array",
          "description": "ProjeÃ§Ã£o legada/derivada dos itens kind:\"field\" dentro da coluna.",
          "critical": true,
          "intentExamples": [
            "mover campo para a primeira coluna",
            "reordenar campos na coluna"
          ],
          "safetyNotes": "Use sections[].rows[].columns[].items para patches novos. fields nÃ£o suporta blocos visuais."
        },
        {
          "path": "sections[].rows[].columns[].fields[]",
          "category": "layout",
          "valueKind": "string",
          "description": "Nome do campo dentro da projeÃ§Ã£o legada/derivada da coluna.",
          "critical": true,
          "safetyNotes": "Apenas nomes de campos. Para ordem mista entre campos e blocos visuais, use items[]."
        },
        {
          "path": "sections[].rows[].columns[].items",
          "category": "layout",
          "valueKind": "array",
          "description": "Lista canÃ´nica ordenada de itens da coluna: campos e blocos visuais.",
          "critical": true,
          "intentExamples": [
            "adicionar bloco visual na coluna",
            "mover texto entre campos",
            "reordenar campo e aviso visual"
          ],
          "safetyNotes": "Itens kind:\"field\" devem apontar para fieldMetadata[].name. Itens kind:\"richContent\" nÃ£o entram no payload de submit."
        },
        {
          "path": "sections[].rows[].columns[].items[].kind",
          "category": "layout",
          "valueKind": "enum",
          "allowedValues": [
            "field",
            "richContent"
          ],
          "description": "Tipo do item de layout da coluna.",
          "critical": true
        },
        {
          "path": "sections[].rows[].columns[].items[].id",
          "category": "layout",
          "valueKind": "string",
          "description": "ID estÃ¡vel do item de layout dentro do formulÃ¡rio.",
          "critical": true,
          "safetyNotes": "Use IDs estÃ¡veis para mover/atualizar/remover itens; nÃ£o use Ã­ndice como identidade."
        },
        {
          "path": "sections[].rows[].columns[].items[].fieldName",
          "category": "layout",
          "valueKind": "string",
          "description": "Nome do campo quando kind Ã© \"field\".",
          "critical": true,
          "safetyNotes": "Deve existir em fieldMetadata[].name."
        },
        {
          "path": "sections[].rows[].columns[].items[].document",
          "category": "editorial",
          "valueKind": "object",
          "description": "RichContentDocument do bloco visual quando kind Ã© \"richContent\".",
          "safetyNotes": "NÃ£o participa do formData nem do payload HTTP de submissÃ£o."
        },
        {
          "path": "sections[].rows[].columns[].items[].layout",
          "category": "editorial",
          "valueKind": "enum",
          "allowedValues": [
            "block",
            "inline"
          ],
          "description": "Modo de renderizaÃ§Ã£o do bloco visual richContent dentro da coluna."
        },
        {
          "path": "sections[].rows[].columns[].items[].rootClassName",
          "category": "appearance",
          "valueKind": "string",
          "description": "Classe CSS opcional aplicada ao bloco visual richContent."
        },
        {
          "path": "sections[].rows[].columns[].span.xs",
          "category": "layout",
          "valueKind": "number",
          "description": "Largura da coluna para telas extra pequenas (xs) no grid system (1-12).",
          "intentExamples": [
            "coluna com 100% de largura no celular"
          ]
        },
        {
          "path": "sections[].rows[].columns[].span.sm",
          "category": "layout",
          "valueKind": "number",
          "description": "Largura da coluna para telas pequenas (sm) no grid system (1-12)."
        },
        {
          "path": "sections[].rows[].columns[].span.md",
          "category": "layout",
          "valueKind": "number",
          "description": "Largura da coluna para telas mÃ©dias (md) no grid system (1-12)."
        },
        {
          "path": "sections[].rows[].columns[].span.lg",
          "category": "layout",
          "valueKind": "number",
          "description": "Largura da coluna para telas grandes (lg) no grid system (1-12)."
        },
        {
          "path": "sections[].rows[].columns[].span.xl",
          "category": "layout",
          "valueKind": "number",
          "description": "Largura da coluna para telas extra grandes (xl) no grid system (1-12)."
        },
        {
          "path": "sections[].rows[].columns[].offset.xs",
          "category": "layout",
          "valueKind": "number",
          "description": "Offset da coluna para telas extra pequenas (xs) no grid system (1-12)."
        },
        {
          "path": "sections[].rows[].columns[].offset.sm",
          "category": "layout",
          "valueKind": "number",
          "description": "Offset da coluna para telas pequenas (sm) no grid system (1-12)."
        },
        {
          "path": "sections[].rows[].columns[].offset.md",
          "category": "layout",
          "valueKind": "number",
          "description": "Offset da coluna para telas mÃ©dias (md) no grid system (1-12)."
        },
        {
          "path": "sections[].rows[].columns[].offset.lg",
          "category": "layout",
          "valueKind": "number",
          "description": "Offset da coluna para telas grandes (lg) no grid system (1-12)."
        },
        {
          "path": "sections[].rows[].columns[].offset.xl",
          "category": "layout",
          "valueKind": "number",
          "description": "Offset da coluna para telas extra grandes (xl) no grid system (1-12)."
        },
        {
          "path": "sections[].rows[].columns[].order.xs",
          "category": "layout",
          "valueKind": "number",
          "description": "Ordem visual da coluna para telas extra pequenas (xs)."
        },
        {
          "path": "sections[].rows[].columns[].order.sm",
          "category": "layout",
          "valueKind": "number",
          "description": "Ordem visual da coluna para telas pequenas (sm)."
        },
        {
          "path": "sections[].rows[].columns[].order.md",
          "category": "layout",
          "valueKind": "number",
          "description": "Ordem visual da coluna para telas mÃ©dias (md)."
        },
        {
          "path": "sections[].rows[].columns[].order.lg",
          "category": "layout",
          "valueKind": "number",
          "description": "Ordem visual da coluna para telas grandes (lg)."
        },
        {
          "path": "sections[].rows[].columns[].order.xl",
          "category": "layout",
          "valueKind": "number",
          "description": "Ordem visual da coluna para telas extra grandes (xl)."
        },
        {
          "path": "sections[].rows[].columns[].hidden.xs",
          "category": "layout",
          "valueKind": "boolean",
          "description": "Oculta a coluna para telas extra pequenas (xs)."
        },
        {
          "path": "sections[].rows[].columns[].hidden.sm",
          "category": "layout",
          "valueKind": "boolean",
          "description": "Oculta a coluna para telas pequenas (sm)."
        },
        {
          "path": "sections[].rows[].columns[].hidden.md",
          "category": "layout",
          "valueKind": "boolean",
          "description": "Oculta a coluna para telas mÃ©dias (md)."
        },
        {
          "path": "sections[].rows[].columns[].hidden.lg",
          "category": "layout",
          "valueKind": "boolean",
          "description": "Oculta a coluna para telas grandes (lg)."
        },
        {
          "path": "sections[].rows[].columns[].hidden.xl",
          "category": "layout",
          "valueKind": "boolean",
          "description": "Oculta a coluna para telas extra grandes (xl)."
        },
        {
          "path": "sections[].rows[].columns[].align",
          "category": "layout",
          "valueKind": "enum",
          "description": "Alinhamento vertical do conteÃºdo da coluna."
        },
        {
          "path": "sections[].rows[].columns[].padding",
          "category": "layout",
          "valueKind": "number",
          "description": "Padding (em px) interno da coluna."
        },
        {
          "path": "sections[].rows[].columns[].className",
          "category": "appearance",
          "valueKind": "string",
          "description": "Classe CSS aplicada Ã  coluna."
        },
        {
          "path": "actions.submit.id",
          "category": "actions",
          "valueKind": "string",
          "description": "ID do botÃ£o de submissÃ£o.",
          "safetyNotes": "Alterar o ID impacta regras e overrides por aÃ§Ã£o."
        },
        {
          "path": "actions.submit.visible",
          "category": "actions",
          "valueKind": "boolean",
          "description": "Visibilidade do botÃ£o de submissÃ£o.",
          "intentExamples": [
            "esconder botÃ£o de salvar",
            "mostrar botÃ£o de enviar"
          ]
        },
        {
          "path": "actions.submit.label",
          "category": "actions",
          "valueKind": "string",
          "description": "RÃ³tulo do botÃ£o de submissÃ£o.",
          "intentExamples": [
            "mudar texto do botÃ£o de salvar para \"Finalizar\""
          ]
        },
        {
          "path": "actions.submit.icon",
          "category": "actions",
          "valueKind": "string",
          "description": "Ãcone (Material Icons) para o botÃ£o de submissÃ£o."
        },
        {
          "path": "actions.submit.color",
          "category": "actions",
          "valueKind": "enum",
          "description": "Cor do botÃ£o de submissÃ£o."
        },
        {
          "path": "actions.submit.variant",
          "category": "actions",
          "valueKind": "enum",
          "description": "Variante visual do botÃ£o de submissÃ£o."
        },
        {
          "path": "actions.submit.size",
          "category": "actions",
          "valueKind": "enum",
          "description": "Tamanho do botÃ£o de submissÃ£o."
        },
        {
          "path": "actions.submit.className",
          "category": "actions",
          "valueKind": "string",
          "description": "Classe CSS aplicada ao botÃ£o de submissÃ£o."
        },
        {
          "path": "actions.submit.style",
          "category": "actions",
          "valueKind": "object",
          "description": "Estilos inline aplicados ao botÃ£o de submissÃ£o."
        },
        {
          "path": "actions.submit.disabled",
          "category": "actions",
          "valueKind": "boolean",
          "description": "Desabilita o botÃ£o de submissÃ£o."
        },
        {
          "path": "actions.submit.type",
          "category": "actions",
          "valueKind": "enum",
          "description": "Tipo do botÃ£o de submissÃ£o."
        },
        {
          "path": "actions.submit.action",
          "category": "actions",
          "valueKind": "string",
          "description": "Evento customizado disparado ao clicar.",
          "safetyNotes": "Use apenas quando houver handler registrado no host."
        },
        {
          "path": "actions.submit.tooltip",
          "category": "actions",
          "valueKind": "string",
          "description": "Tooltip exibido no botÃ£o de submissÃ£o."
        },
        {
          "path": "actions.submit.loading",
          "category": "actions",
          "valueKind": "boolean",
          "description": "Exibe estado de carregamento no botÃ£o de submissÃ£o."
        },
        {
          "path": "actions.submit.shortcut",
          "category": "actions",
          "valueKind": "string",
          "description": "Atalho de teclado (ex.: \"ctrl+s\") para o botÃ£o de submissÃ£o."
        },
        {
          "path": "actions.cancel.id",
          "category": "actions",
          "valueKind": "string",
          "description": "ID do botÃ£o de cancelar.",
          "safetyNotes": "Alterar o ID impacta regras e overrides por aÃ§Ã£o."
        },
        {
          "path": "actions.cancel.visible",
          "category": "actions",
          "valueKind": "boolean",
          "description": "Visibilidade do botÃ£o de cancelar.",
          "intentExamples": [
            "esconder botÃ£o de cancelar"
          ]
        },
        {
          "path": "actions.cancel.label",
          "category": "actions",
          "valueKind": "string",
          "description": "RÃ³tulo do botÃ£o de cancelar."
        },
        {
          "path": "actions.cancel.icon",
          "category": "actions",
          "valueKind": "string",
          "description": "Ãcone (Material Icons) para o botÃ£o de cancelar."
        },
        {
          "path": "actions.cancel.color",
          "category": "actions",
          "valueKind": "enum",
          "description": "Cor do botÃ£o de cancelar."
        },
        {
          "path": "actions.cancel.variant",
          "category": "actions",
          "valueKind": "enum",
          "description": "Variante visual do botÃ£o de cancelar."
        },
        {
          "path": "actions.cancel.size",
          "category": "actions",
          "valueKind": "enum",
          "description": "Tamanho do botÃ£o de cancelar."
        },
        {
          "path": "actions.cancel.className",
          "category": "actions",
          "valueKind": "string",
          "description": "Classe CSS aplicada ao botÃ£o de cancelar."
        },
        {
          "path": "actions.cancel.style",
          "category": "actions",
          "valueKind": "object",
          "description": "Estilos inline aplicados ao botÃ£o de cancelar."
        },
        {
          "path": "actions.cancel.disabled",
          "category": "actions",
          "valueKind": "boolean",
          "description": "Desabilita o botÃ£o de cancelar."
        },
        {
          "path": "actions.cancel.type",
          "category": "actions",
          "valueKind": "enum",
          "description": "Tipo do botÃ£o de cancelar."
        },
        {
          "path": "actions.cancel.action",
          "category": "actions",
          "valueKind": "string",
          "description": "Evento customizado disparado ao clicar.",
          "safetyNotes": "Use apenas quando houver handler registrado no host."
        },
        {
          "path": "actions.cancel.tooltip",
          "category": "actions",
          "valueKind": "string",
          "description": "Tooltip exibido no botÃ£o de cancelar."
        },
        {
          "path": "actions.cancel.loading",
          "category": "actions",
          "valueKind": "boolean",
          "description": "Exibe estado de carregamento no botÃ£o de cancelar."
        },
        {
          "path": "actions.cancel.shortcut",
          "category": "actions",
          "valueKind": "string",
          "description": "Atalho de teclado (ex.: \"esc\") para o botÃ£o de cancelar."
        },
        {
          "path": "actions.reset.id",
          "category": "actions",
          "valueKind": "string",
          "description": "ID do botÃ£o de reset.",
          "safetyNotes": "Alterar o ID impacta regras e overrides por aÃ§Ã£o."
        },
        {
          "path": "actions.reset.visible",
          "category": "actions",
          "valueKind": "boolean",
          "description": "Visibilidade do botÃ£o de reset."
        },
        {
          "path": "actions.reset.label",
          "category": "actions",
          "valueKind": "string",
          "description": "RÃ³tulo do botÃ£o de reset."
        },
        {
          "path": "actions.reset.icon",
          "category": "actions",
          "valueKind": "string",
          "description": "Ãcone (Material Icons) para o botÃ£o de reset."
        },
        {
          "path": "actions.reset.color",
          "category": "actions",
          "valueKind": "enum",
          "description": "Cor do botÃ£o de reset."
        },
        {
          "path": "actions.reset.variant",
          "category": "actions",
          "valueKind": "enum",
          "description": "Variante visual do botÃ£o de reset."
        },
        {
          "path": "actions.reset.size",
          "category": "actions",
          "valueKind": "enum",
          "description": "Tamanho do botÃ£o de reset."
        },
        {
          "path": "actions.reset.className",
          "category": "actions",
          "valueKind": "string",
          "description": "Classe CSS aplicada ao botÃ£o de reset."
        },
        {
          "path": "actions.reset.style",
          "category": "actions",
          "valueKind": "object",
          "description": "Estilos inline aplicados ao botÃ£o de reset."
        },
        {
          "path": "actions.reset.disabled",
          "category": "actions",
          "valueKind": "boolean",
          "description": "Desabilita o botÃ£o de reset."
        },
        {
          "path": "actions.reset.type",
          "category": "actions",
          "valueKind": "enum",
          "description": "Tipo do botÃ£o de reset."
        },
        {
          "path": "actions.reset.action",
          "category": "actions",
          "valueKind": "string",
          "description": "Evento customizado disparado ao clicar.",
          "safetyNotes": "Use apenas quando houver handler registrado no host."
        },
        {
          "path": "actions.reset.tooltip",
          "category": "actions",
          "valueKind": "string",
          "description": "Tooltip exibido no botÃ£o de reset."
        },
        {
          "path": "actions.reset.loading",
          "category": "actions",
          "valueKind": "boolean",
          "description": "Exibe estado de carregamento no botÃ£o de reset."
        },
        {
          "path": "actions.reset.shortcut",
          "category": "actions",
          "valueKind": "string",
          "description": "Atalho de teclado (ex.: \"ctrl+shift+r\") para o botÃ£o de reset."
        },
        {
          "path": "actions.custom",
          "category": "actions",
          "valueKind": "array",
          "description": "Lista de botÃµes de aÃ§Ã£o customizados.",
          "safetyNotes": "Cada aÃ§Ã£o customizada deve ter `id` ou `action` vÃ¡lidos."
        },
        {
          "path": "actions.custom[]",
          "category": "actions",
          "valueKind": "object",
          "description": "ConfiguraÃ§Ã£o de um botÃ£o de aÃ§Ã£o customizado.",
          "safetyNotes": "AÃ§Ãµes customizadas requerem `id` ou `action` e um handler registrado para funcionar.",
          "example": "{ id: \"myAction\", label: \"AÃ§Ã£o Customizada\", icon: \"star\", action: \"myCustomEvent\" }"
        },
        {
          "path": "actions.custom[].id",
          "category": "actions",
          "valueKind": "string",
          "description": "ID da aÃ§Ã£o customizada.",
          "safetyNotes": "Usado para overrides e mensagens por aÃ§Ã£o."
        },
        {
          "path": "actions.custom[].visible",
          "category": "actions",
          "valueKind": "boolean",
          "description": "Visibilidade da aÃ§Ã£o customizada."
        },
        {
          "path": "actions.custom[].label",
          "category": "actions",
          "valueKind": "string",
          "description": "RÃ³tulo da aÃ§Ã£o customizada."
        },
        {
          "path": "actions.custom[].icon",
          "category": "actions",
          "valueKind": "string",
          "description": "Ãcone (Material Icons) para a aÃ§Ã£o customizada."
        },
        {
          "path": "actions.custom[].color",
          "category": "actions",
          "valueKind": "enum",
          "description": "Cor da aÃ§Ã£o customizada."
        },
        {
          "path": "actions.custom[].variant",
          "category": "actions",
          "valueKind": "enum",
          "description": "Variante visual da aÃ§Ã£o customizada."
        },
        {
          "path": "actions.custom[].size",
          "category": "actions",
          "valueKind": "enum",
          "description": "Tamanho da aÃ§Ã£o customizada."
        },
        {
          "path": "actions.custom[].className",
          "category": "actions",
          "valueKind": "string",
          "description": "Classe CSS aplicada Ã  aÃ§Ã£o customizada."
        },
        {
          "path": "actions.custom[].style",
          "category": "actions",
          "valueKind": "object",
          "description": "Estilos inline aplicados Ã  aÃ§Ã£o customizada."
        },
        {
          "path": "actions.custom[].disabled",
          "category": "actions",
          "valueKind": "boolean",
          "description": "Desabilita a aÃ§Ã£o customizada."
        },
        {
          "path": "actions.custom[].type",
          "category": "actions",
          "valueKind": "enum",
          "description": "Tipo do botÃ£o da aÃ§Ã£o customizada."
        },
        {
          "path": "actions.custom[].action",
          "category": "actions",
          "valueKind": "string",
          "description": "Evento customizado disparado ao clicar.",
          "safetyNotes": "Deve existir um handler registrado no host."
        },
        {
          "path": "actions.custom[].tooltip",
          "category": "actions",
          "valueKind": "string",
          "description": "Tooltip exibido na aÃ§Ã£o customizada."
        },
        {
          "path": "actions.custom[].loading",
          "category": "actions",
          "valueKind": "boolean",
          "description": "Exibe estado de carregamento na aÃ§Ã£o customizada."
        },
        {
          "path": "actions.custom[].shortcut",
          "category": "actions",
          "valueKind": "string",
          "description": "Atalho de teclado para a aÃ§Ã£o customizada."
        },
        {
          "path": "actions.position",
          "category": "layout",
          "valueKind": "enum",
          "description": "Posicionamento horizontal da barra de aÃ§Ãµes."
        },
        {
          "path": "actions.orientation",
          "category": "layout",
          "valueKind": "enum",
          "description": "OrientaÃ§Ã£o dos botÃµes dentro da barra de aÃ§Ãµes (horizontal/vertical)."
        },
        {
          "path": "actions.spacing",
          "category": "layout",
          "valueKind": "enum",
          "description": "EspaÃ§amento entre os botÃµes na barra de aÃ§Ãµes."
        },
        {
          "path": "actions.sticky",
          "category": "layout",
          "valueKind": "boolean",
          "description": "Define se a barra de aÃ§Ãµes deve permanecer visÃ­vel ao rolar a pÃ¡gina."
        },
        {
          "path": "actions.divider",
          "category": "layout",
          "valueKind": "boolean",
          "description": "Exibe um divisor superior acima da barra de aÃ§Ãµes."
        },
        {
          "path": "actions.placement",
          "category": "layout",
          "valueKind": "enum",
          "description": "LocalizaÃ§Ã£o estrutural da barra de aÃ§Ãµes no layout."
        },
        {
          "path": "actions.mobile.position",
          "category": "layout",
          "valueKind": "enum",
          "description": "Posicionamento da barra de aÃ§Ãµes em dispositivos mÃ³veis."
        },
        {
          "path": "actions.mobile.orientation",
          "category": "layout",
          "valueKind": "enum",
          "description": "OrientaÃ§Ã£o dos botÃµes em dispositivos mÃ³veis."
        },
        {
          "path": "actions.mobile.collapseToMenu",
          "category": "behavior",
          "valueKind": "boolean",
          "description": "Em mobile, agrupa aÃ§Ãµes em um menu (se houver muitas)."
        },
        {
          "path": "actions.containerClassName",
          "category": "appearance",
          "valueKind": "string",
          "description": "Classe CSS aplicada ao container da barra de aÃ§Ãµes."
        },
        {
          "path": "actions.containerStyles",
          "category": "appearance",
          "valueKind": "object",
          "description": "Estilos inline aplicados ao container da barra de aÃ§Ãµes."
        },
        {
          "path": "actions.showSaveButton",
          "category": "actions",
          "valueKind": "boolean",
          "description": "Legacy: controla visibilidade do botÃ£o de submit.",
          "safetyNotes": "Preferir actions.submit.visible."
        },
        {
          "path": "actions.submitButtonLabel",
          "category": "actions",
          "valueKind": "string",
          "description": "Legacy: rÃ³tulo do botÃ£o de submit.",
          "safetyNotes": "Preferir actions.submit.label."
        },
        {
          "path": "actions.showCancelButton",
          "category": "actions",
          "valueKind": "boolean",
          "description": "Legacy: controla visibilidade do botÃ£o de cancel.",
          "safetyNotes": "Preferir actions.cancel.visible."
        },
        {
          "path": "actions.cancelButtonLabel",
          "category": "actions",
          "valueKind": "string",
          "description": "Legacy: rÃ³tulo do botÃ£o de cancel.",
          "safetyNotes": "Preferir actions.cancel.label."
        },
        {
          "path": "actions.showResetButton",
          "category": "actions",
          "valueKind": "boolean",
          "description": "Legacy: controla visibilidade do botÃ£o de reset.",
          "safetyNotes": "Preferir actions.reset.visible."
        },
        {
          "path": "actions.resetButtonLabel",
          "category": "actions",
          "valueKind": "string",
          "description": "Legacy: rÃ³tulo do botÃ£o de reset.",
          "safetyNotes": "Preferir actions.reset.label."
        },
        {
          "path": "behavior.confirmOnUnsavedChanges",
          "category": "behavior",
          "valueKind": "boolean",
          "description": "Exibe um alerta se o usuÃ¡rio tentar sair com mudanÃ§as nÃ£o salvas.",
          "intentExamples": [
            "ativar aviso de saÃ­da sem salvar"
          ]
        },
        {
          "path": "behavior.trackHistory",
          "category": "behavior",
          "valueKind": "boolean",
          "description": "Habilita rastreamento de histÃ³rico para desfazer/refazer (se suportado)."
        },
        {
          "path": "behavior.focusFirstError",
          "category": "behavior",
          "valueKind": "boolean",
          "description": "Ao submeter, foca automaticamente no primeiro campo com erro."
        },
        {
          "path": "behavior.scrollToErrors",
          "category": "behavior",
          "valueKind": "boolean",
          "description": "Ao submeter, rola a pÃ¡gina para exibir o primeiro erro."
        },
        {
          "path": "behavior.clearAfterSave",
          "category": "behavior",
          "valueKind": "boolean",
          "description": "Limpa o formulÃ¡rio apÃ³s uma submissÃ£o bem-sucedida.",
          "intentExamples": [
            "limpar form depois de salvar"
          ]
        },
        {
          "path": "behavior.redirectAfterSave",
          "category": "behavior",
          "valueKind": "string",
          "description": "URL para redirecionar apÃ³s uma submissÃ£o bem-sucedida.",
          "intentExamples": [
            "redirecionar para lista apÃ³s salvar"
          ]
        },
        {
          "path": "behavior.reactiveValidation",
          "category": "validation",
          "valueKind": "boolean",
          "description": "Ativa validaÃ§Ã£o reativa (em tempo real) em `valueChanges`."
        },
        {
          "path": "behavior.reactiveValidationDebounceMs",
          "category": "validation",
          "valueKind": "number",
          "description": "Debounce (em ms) para a validaÃ§Ã£o reativa.",
          "dependsOn": "behavior.reactiveValidation",
          "example": "300"
        },
        {
          "path": "api.saveEndpoint",
          "category": "api",
          "valueKind": "string",
          "description": "URL para onde os dados do formulÃ¡rio serÃ£o enviados (POST/PUT/PATCH).",
          "intentExamples": [
            "configurar endpoint de salvar"
          ]
        },
        {
          "path": "api.loadEndpoint",
          "category": "api",
          "valueKind": "string",
          "description": "URL para buscar dados para popular o formulÃ¡rio (GET).",
          "intentExamples": [
            "configurar endpoint de carregar"
          ]
        },
        {
          "path": "api.saveMethod",
          "category": "api",
          "valueKind": "enum",
          "allowedValues": [
            "POST",
            "PUT",
            "PATCH"
          ],
          "description": "MÃ©todo HTTP para a requisiÃ§Ã£o de salvar."
        },
        {
          "path": "api.timeout",
          "category": "api",
          "valueKind": "number",
          "description": "Tempo limite (em ms) para as requisiÃ§Ãµes API.",
          "example": "5000"
        },
        {
          "path": "api.headers",
          "category": "api",
          "valueKind": "object",
          "description": "CabeÃ§alhos HTTP personalizados para as requisiÃ§Ãµes API.",
          "example": "{ \"Authorization\": \"Bearer token\" }"
        },
        {
          "path": "api.idField",
          "category": "api",
          "valueKind": "string",
          "description": "Nome do campo que representa o ID do registro no payload (para PUT/PATCH)."
        },
        {
          "path": "api.beforeSave",
          "category": "hooks",
          "valueKind": "expression",
          "description": "Hook para prÃ©-processamento de dados antes de enviar para a API.",
          "safetyNotes": "NÃ£o serializÃ¡vel. Deve ser uma funÃ§Ã£o JS fornecida pelo host."
        },
        {
          "path": "api.afterLoad",
          "category": "hooks",
          "valueKind": "expression",
          "description": "Hook para pÃ³s-processamento de dados apÃ³s carregar da API.",
          "safetyNotes": "NÃ£o serializÃ¡vel. Deve ser uma funÃ§Ã£o JS fornecida pelo host."
        },
        {
          "path": "messages.updateRegistrySuccess",
          "category": "messages",
          "valueKind": "string",
          "description": "Mensagem de sucesso apÃ³s atualizaÃ§Ã£o de registro."
        },
        {
          "path": "messages.createRegistrySuccess",
          "category": "messages",
          "valueKind": "string",
          "description": "Mensagem de sucesso apÃ³s criaÃ§Ã£o de registro."
        },
        {
          "path": "messages.updateRegistryError",
          "category": "messages",
          "valueKind": "string",
          "description": "Mensagem de erro apÃ³s atualizaÃ§Ã£o de registro."
        },
        {
          "path": "messages.createRegistryError",
          "category": "messages",
          "valueKind": "string",
          "description": "Mensagem de erro apÃ³s criaÃ§Ã£o de registro."
        },
        {
          "path": "messages.confirmations.submit",
          "category": "messages",
          "valueKind": "string",
          "description": "Mensagem de confirmaÃ§Ã£o antes de submeter o formulÃ¡rio."
        },
        {
          "path": "messages.confirmations.cancel",
          "category": "messages",
          "valueKind": "string",
          "description": "Mensagem de confirmaÃ§Ã£o antes de cancelar."
        },
        {
          "path": "messages.confirmations.reset",
          "category": "messages",
          "valueKind": "string",
          "description": "Mensagem de confirmaÃ§Ã£o antes de resetar o formulÃ¡rio."
        },
        {
          "path": "messages.confirmations.[actionId]",
          "category": "messages",
          "valueKind": "string",
          "description": "Mensagem de confirmaÃ§Ã£o para aÃ§Ãµes customizadas. Substitua `[actionId]` pelo ID da aÃ§Ã£o.",
          "safetyNotes": "Use IDs de aÃ§Ãµes existentes em `actions.custom[]`."
        },
        {
          "path": "messages.customActions.[actionId]",
          "category": "messages",
          "valueKind": "object",
          "description": "Mensagens da aÃ§Ã£o customizada (success/error/confirmation). Substitua `[actionId]` pelo ID da aÃ§Ã£o.",
          "safetyNotes": "Use IDs de aÃ§Ãµes existentes em `actions.custom[]`."
        },
        {
          "path": "messages.customActions.[actionId].success",
          "category": "messages",
          "valueKind": "string",
          "description": "Mensagem de sucesso para a aÃ§Ã£o customizada."
        },
        {
          "path": "messages.customActions.[actionId].error",
          "category": "messages",
          "valueKind": "string",
          "description": "Mensagem de erro para a aÃ§Ã£o customizada."
        },
        {
          "path": "messages.customActions.[actionId].confirmation",
          "category": "messages",
          "valueKind": "string",
          "description": "Mensagem de confirmaÃ§Ã£o para a aÃ§Ã£o customizada."
        },
        {
          "path": "messages.loading.submit",
          "category": "messages",
          "valueKind": "string",
          "description": "Mensagem exibida durante o envio do formulÃ¡rio."
        },
        {
          "path": "messages.loading.cancel",
          "category": "messages",
          "valueKind": "string",
          "description": "Mensagem exibida durante o cancelamento."
        },
        {
          "path": "messages.loading.reset",
          "category": "messages",
          "valueKind": "string",
          "description": "Mensagem exibida durante o reset do formulÃ¡rio."
        },
        {
          "path": "messages.loading.[actionId]",
          "category": "messages",
          "valueKind": "string",
          "description": "Mensagem exibida durante a execuÃ§Ã£o de uma aÃ§Ã£o customizada. Substitua `[actionId]` pelo ID da aÃ§Ã£o."
        },
        {
          "path": "formRules[].id",
          "category": "rules",
          "valueKind": "string",
          "description": "ID Ãºnico da regra de layout.",
          "critical": true,
          "safetyNotes": "Alterar o ID pode quebrar a regra.",
          "intentExamples": [
            "id da regra",
            "identificador Ãºnico da regra"
          ]
        },
        {
          "path": "formRules[].name",
          "category": "rules",
          "valueKind": "string",
          "description": "Nome amigÃ¡vel da regra de layout.",
          "intentExamples": [
            "nomear regra",
            "dar nome Ã  condiÃ§Ã£o",
            "tÃ­tulo da regra"
          ]
        },
        {
          "path": "formRules[].description",
          "category": "rules",
          "valueKind": "string",
          "description": "DescriÃ§Ã£o da regra de layout para documentaÃ§Ã£o.",
          "intentExamples": [
            "descrever o que a regra faz",
            "documentar lÃ³gica da regra"
          ]
        },
        {
          "path": "formRules[].metadata.origin",
          "category": "rules",
          "valueKind": "enum",
          "allowedValues": [
            "llm"
          ],
          "description": "Origem da regra sugerida pela IA.",
          "safetyNotes": "Regras criadas por IA devem marcar origin como \"llm\" e entrar em revisÃ£o pendente."
        },
        {
          "path": "formRules[].metadata.reviewStatus",
          "category": "rules",
          "valueKind": "enum",
          "allowedValues": [
            "pending",
            "accepted"
          ],
          "description": "Status de revisÃ£o humana da regra sugerida pela IA.",
          "critical": true,
          "safetyNotes": "A IA deve criar regras com reviewStatus \"pending\"; o editor muda para \"accepted\" apÃ³s aceite humano."
        },
        {
          "path": "formRules[].targetType",
          "category": "rules",
          "valueKind": "enum",
          "description": "Tipo do elemento alvo da regra (campo, seÃ§Ã£o, aÃ§Ã£o, linha, coluna ou bloco visual).",
          "critical": true,
          "intentExamples": [
            "aplicar regra a um campo",
            "regra para uma seÃ§Ã£o",
            "condiÃ§Ã£o em uma linha",
            "ocultar bloco visual por regra"
          ]
        },
        {
          "path": "formRules[].context",
          "category": "rules",
          "valueKind": "enum",
          "description": "Contexto legado da regra (quando properties nÃ£o forem informadas).",
          "safetyNotes": "Preferir effect.properties/propertiesWhenFalse quando possÃ­vel."
        },
        {
          "path": "formRules[].targets",
          "category": "rules",
          "valueKind": "array",
          "description": "Lista de IDs dos elementos alvo da regra. O tipo do ID depende de `targetType`.",
          "critical": true,
          "safetyNotes": "Verifique se os IDs dos alvos existem no formulÃ¡rio.",
          "intentExamples": [
            "tornar campo \"email\" visÃ­vel",
            "esconder seÃ§Ã£o \"dados-pessoais\"",
            "aplicar no campo X"
          ]
        },
        {
          "path": "formRules[].targets[]",
          "category": "rules",
          "valueKind": "string",
          "description": "ID do alvo da regra.",
          "critical": true,
          "safetyNotes": "Verifique se o ID existe no formulÃ¡rio."
        },
        {
          "path": "formRules[].targetFields",
          "category": "rules",
          "valueKind": "array",
          "description": "Alias legado para alvos de campo.",
          "safetyNotes": "Use targets + targetType=\"field\" em regras novas."
        },
        {
          "path": "formRules[].targetFields[]",
          "category": "rules",
          "valueKind": "string",
          "description": "ID do campo alvo (alias legado)."
        },
        {
          "path": "formRules[].effect.condition",
          "category": "rules",
          "valueKind": "expression",
          "description": "Condicao canonica da regra, expressa em Json Logic.",
          "critical": true,
          "safetyNotes": "NÃƒO utilize cÃ³digo JS puro nem strings arbitrÃ¡rias. Utilize JSON Logic validado.",
          "example": "{ \"and\": [{ \"==\": [{ \"var\": \"status\" }, \"active\"] }, { \">\": [{ \"var\": \"amount\" }, 100] }] }",
          "intentExamples": [
            "se valor for maior que 10",
            "quando status for ativo",
            "condiÃ§Ã£o da regra"
          ]
        },
        {
          "path": "formCommandRules",
          "category": "rules",
          "valueKind": "array",
          "description": "Regras condicionais de comando avaliadas depois que formRules estabilizam valores calculados.",
          "critical": true,
          "safetyNotes": "Use somente para comandos estruturados com globalAction. Nao misture side effects em formRules[].effect.properties."
        },
        {
          "path": "formCommandRules[].condition",
          "category": "rules",
          "valueKind": "expression",
          "description": "Condicao Json Logic avaliada sobre formData estabilizado, incluindo field values calculados.",
          "critical": true,
          "safetyNotes": "Nao use strings de codigo. Comandos com side effect nao executam no preview e nao rodam na avaliacao inicial por padrao."
        },
        {
          "path": "formCommandRules[].effects[].kind",
          "category": "rules",
          "valueKind": "enum",
          "description": "Tipo do efeito de comando. O primeiro corte suporta apenas global-action.",
          "allowedValues": [
            "global-action"
          ]
        },
        {
          "path": "formCommandRules[].effects[].globalAction",
          "category": "rules",
          "valueKind": "object",
          "description": "GlobalActionRef estruturado executado por GlobalActionService.executeRef quando a regra entra na condicao.",
          "critical": true,
          "safetyNotes": "Use actionId registrado e payload estruturado no efeito primario do editor visual. payloadExpr e efeitos secundarios sao permitidos por GlobalActionRef/effects[], mas neste corte devem ficar restritos ao JSON avancado; o editor preserva efeitos secundarios ao editar o primario."
        },
        {
          "path": "formCommandRules[].policy",
          "category": "rules",
          "valueKind": "object",
          "description": "Politica operacional do comando: trigger, distinct, distinctBy, debounceMs, errorPolicy e runOnInitialEvaluation.",
          "safetyNotes": "trigger=while-true nao executa globalAction neste corte. Para valueChange use distinct/reset quando houver risco de alertas repetidos."
        },
        {
          "path": "formRulesState",
          "category": "metadata",
          "valueKind": "object",
          "description": "Estado interno do builder visual de regras, gerado apenas para round-trip do editor.",
          "safetyNotes": "Read-only/internal. NÃ£o use como alvo de autoria, patch, exemplo ou operaÃ§Ã£o de IA; gere somente formRules e deixe o editor materializar formRulesState."
        },
        {
          "path": "hooks",
          "category": "hooks",
          "valueKind": "object",
          "description": "DeclaraÃ§Ãµes de hooks por estÃ¡gio do ciclo de vida do formulÃ¡rio.",
          "safetyNotes": "Hooks sÃ£o resolvidos por ID no host. NÃ£o sÃ£o funÃ§Ãµes serializÃ¡veis.",
          "example": "{ beforeInit: [{ id: \"load-options\", priority: 100 }] }",
          "intentExamples": [
            "adicionar hook de inicializaÃ§Ã£o",
            "executar aÃ§Ã£o antes do submit"
          ]
        },
        {
          "path": "hooks.beforeInit[]",
          "category": "hooks",
          "valueKind": "array",
          "description": "DeclaraÃ§Ãµes de hooks para beforeInit."
        },
        {
          "path": "hooks.beforeInit[].id",
          "category": "hooks",
          "valueKind": "string",
          "description": "ID do hook (registrado no host)."
        },
        {
          "path": "hooks.beforeInit[].priority",
          "category": "hooks",
          "valueKind": "number",
          "description": "Prioridade do hook (maior executa primeiro)."
        },
        {
          "path": "hooks.beforeInit[].timeoutMs",
          "category": "hooks",
          "valueKind": "number",
          "description": "Timeout em ms para a execucao do hook."
        },
        {
          "path": "hooks.beforeInit[].args",
          "category": "hooks",
          "valueKind": "object",
          "description": "Argumentos adicionais passados ao hook."
        },
        {
          "path": "hooks.afterInit[]",
          "category": "hooks",
          "valueKind": "array",
          "description": "DeclaraÃ§Ãµes de hooks para afterInit."
        },
        {
          "path": "hooks.afterInit[].id",
          "category": "hooks",
          "valueKind": "string",
          "description": "ID do hook (registrado no host)."
        },
        {
          "path": "hooks.afterInit[].priority",
          "category": "hooks",
          "valueKind": "number",
          "description": "Prioridade do hook (maior executa primeiro)."
        },
        {
          "path": "hooks.afterInit[].timeoutMs",
          "category": "hooks",
          "valueKind": "number",
          "description": "Timeout em ms para a execucao do hook."
        },
        {
          "path": "hooks.afterInit[].args",
          "category": "hooks",
          "valueKind": "object",
          "description": "Argumentos adicionais passados ao hook."
        },
        {
          "path": "hooks.beforeValidate[]",
          "category": "hooks",
          "valueKind": "array",
          "description": "DeclaraÃ§Ãµes de hooks para beforeValidate."
        },
        {
          "path": "hooks.beforeValidate[].id",
          "category": "hooks",
          "valueKind": "string",
          "description": "ID do hook (registrado no host)."
        },
        {
          "path": "hooks.beforeValidate[].priority",
          "category": "hooks",
          "valueKind": "number",
          "description": "Prioridade do hook (maior executa primeiro)."
        },
        {
          "path": "hooks.beforeValidate[].timeoutMs",
          "category": "hooks",
          "valueKind": "number",
          "description": "Timeout em ms para a execucao do hook."
        },
        {
          "path": "hooks.beforeValidate[].args",
          "category": "hooks",
          "valueKind": "object",
          "description": "Argumentos adicionais passados ao hook."
        },
        {
          "path": "hooks.afterValidate[]",
          "category": "hooks",
          "valueKind": "array",
          "description": "DeclaraÃ§Ãµes de hooks para afterValidate."
        },
        {
          "path": "hooks.afterValidate[].id",
          "category": "hooks",
          "valueKind": "string",
          "description": "ID do hook (registrado no host)."
        },
        {
          "path": "hooks.afterValidate[].priority",
          "category": "hooks",
          "valueKind": "number",
          "description": "Prioridade do hook (maior executa primeiro)."
        },
        {
          "path": "hooks.afterValidate[].timeoutMs",
          "category": "hooks",
          "valueKind": "number",
          "description": "Timeout em ms para a execucao do hook."
        },
        {
          "path": "hooks.afterValidate[].args",
          "category": "hooks",
          "valueKind": "object",
          "description": "Argumentos adicionais passados ao hook."
        },
        {
          "path": "hooks.beforeSubmit[]",
          "category": "hooks",
          "valueKind": "array",
          "description": "DeclaraÃ§Ãµes de hooks para beforeSubmit."
        },
        {
          "path": "hooks.beforeSubmit[].id",
          "category": "hooks",
          "valueKind": "string",
          "description": "ID do hook (registrado no host)."
        },
        {
          "path": "hooks.beforeSubmit[].priority",
          "category": "hooks",
          "valueKind": "number",
          "description": "Prioridade do hook (maior executa primeiro)."
        },
        {
          "path": "hooks.beforeSubmit[].timeoutMs",
          "category": "hooks",
          "valueKind": "number",
          "description": "Timeout em ms para a execucao do hook."
        },
        {
          "path": "hooks.beforeSubmit[].args",
          "category": "hooks",
          "valueKind": "object",
          "description": "Argumentos adicionais passados ao hook."
        },
        {
          "path": "hooks.afterSubmit[]",
          "category": "hooks",
          "valueKind": "array",
          "description": "DeclaraÃ§Ãµes de hooks para afterSubmit."
        },
        {
          "path": "hooks.afterSubmit[].id",
          "category": "hooks",
          "valueKind": "string",
          "description": "ID do hook (registrado no host)."
        },
        {
          "path": "hooks.afterSubmit[].priority",
          "category": "hooks",
          "valueKind": "number",
          "description": "Prioridade do hook (maior executa primeiro)."
        },
        {
          "path": "hooks.afterSubmit[].timeoutMs",
          "category": "hooks",
          "valueKind": "number",
          "description": "Timeout em ms para a execucao do hook."
        },
        {
          "path": "hooks.afterSubmit[].args",
          "category": "hooks",
          "valueKind": "object",
          "description": "Argumentos adicionais passados ao hook."
        },
        {
          "path": "hooks.onError[]",
          "category": "hooks",
          "valueKind": "array",
          "description": "DeclaraÃ§Ãµes de hooks para onError."
        },
        {
          "path": "hooks.onError[].id",
          "category": "hooks",
          "valueKind": "string",
          "description": "ID do hook (registrado no host)."
        },
        {
          "path": "hooks.onError[].priority",
          "category": "hooks",
          "valueKind": "number",
          "description": "Prioridade do hook (maior executa primeiro)."
        },
        {
          "path": "hooks.onError[].timeoutMs",
          "category": "hooks",
          "valueKind": "number",
          "description": "Timeout em ms para a execucao do hook."
        },
        {
          "path": "hooks.onError[].args",
          "category": "hooks",
          "valueKind": "object",
          "description": "Argumentos adicionais passados ao hook."
        },
        {
          "path": "hints.dataModes.create",
          "category": "form_config",
          "valueKind": "string",
          "description": "Dica para o modo de criaÃ§Ã£o de dados."
        },
        {
          "path": "hints.dataModes.edit",
          "category": "form_config",
          "valueKind": "string",
          "description": "Dica para o modo de ediÃ§Ã£o de dados."
        },
        {
          "path": "hints.dataModes.view",
          "category": "form_config",
          "valueKind": "string",
          "description": "Dica para o modo de visualizaÃ§Ã£o de dados."
        },
        {
          "path": "hints.uiModes.presentation",
          "category": "form_config",
          "valueKind": "string",
          "description": "Dica para o modo de apresentaÃ§Ã£o da UI."
        },
        {
          "path": "hints.uiModes.readonly",
          "category": "form_config",
          "valueKind": "string",
          "description": "Dica para o modo de somente leitura da UI."
        },
        {
          "path": "hints.uiModes.disabled",
          "category": "form_config",
          "valueKind": "string",
          "description": "Dica para o modo desabilitado da UI."
        },
        {
          "path": "hints.uiModes.visible",
          "category": "form_config",
          "valueKind": "string",
          "description": "Dica para o modo de visibilidade da UI."
        },
        {
          "path": "fieldMetadata[].id",
          "category": "identity",
          "valueKind": "string",
          "description": "Identificador unico da instancia do componente.",
          "intentExamples": [
            "id do componente",
            "definir id fixo"
          ]
        },
        {
          "path": "fieldMetadata[].version",
          "category": "identity",
          "valueKind": "string",
          "description": "Versao do schema de metadata (migracao).",
          "intentExamples": [
            "versao do metadata",
            "ajustar versao"
          ]
        },
        {
          "path": "fieldMetadata[].context",
          "category": "identity",
          "valueKind": "enum",
          "allowedValues": [
            "form",
            "filter",
            "table",
            "dialog",
            "standalone"
          ],
          "description": "Contexto de uso do componente (form/filter/table/dialog/standalone).",
          "intentExamples": [
            "contexto form",
            "usar em tabela"
          ]
        },
        {
          "path": "fieldMetadata[].createdAt",
          "category": "misc",
          "valueKind": "string",
          "description": "Timestamp de criacao (ISO).",
          "safetyNotes": "Valor de auditoria; preferir preenchimento pelo host."
        },
        {
          "path": "fieldMetadata[].updatedAt",
          "category": "misc",
          "valueKind": "string",
          "description": "Timestamp de atualizacao (ISO).",
          "safetyNotes": "Valor de auditoria; preferir preenchimento pelo host."
        },
        {
          "path": "fieldMetadata[].tags",
          "category": "identity",
          "valueKind": "array",
          "description": "Tags para categorizacao e busca.",
          "intentExamples": [
            "tag para busca",
            "categorizar campo"
          ]
        },
        {
          "path": "fieldMetadata[].cssClass",
          "category": "appearance",
          "valueKind": "string",
          "description": "Classe CSS aplicada ao host do componente.",
          "intentExamples": [
            "classe custom",
            "aplicar classe"
          ]
        },
        {
          "path": "fieldMetadata[].style",
          "category": "appearance",
          "valueKind": "object",
          "description": "Estilos inline (objeto CSS).",
          "safetyNotes": "Validar chaves e valores CSS permitidos."
        },
        {
          "path": "fieldMetadata[].dataAttributes",
          "category": "data",
          "valueKind": "object",
          "description": "Data attributes para teste/analytics.",
          "intentExamples": [
            "data-testid",
            "atributos de tracking"
          ]
        },
        {
          "path": "fieldMetadata[].name",
          "category": "identity",
          "valueKind": "string",
          "description": "Identificador único do campo. Essencial para binding.",
          "critical": true,
          "intentExamples": [
            "nomear campo como email",
            "id do campo"
          ]
        },
        {
          "path": "fieldMetadata[].label",
          "category": "identity",
          "valueKind": "string",
          "description": "Rótulo principal exibido para o usuário.",
          "intentExamples": [
            "alterar label",
            "mudar texto do rótulo"
          ]
        },
        {
          "path": "fieldMetadata[].placeholder",
          "category": "identity",
          "valueKind": "string",
          "description": "Texto temporário exibido quando vazio.",
          "intentExamples": [
            "adicionar placeholder",
            "texto de ajuda no input"
          ]
        },
        {
          "path": "fieldMetadata[].hint",
          "category": "identity",
          "valueKind": "string",
          "description": "Texto de ajuda exibido abaixo do campo.",
          "intentExamples": [
            "colocar dica",
            "ajuda no rodapé do campo"
          ]
        },
        {
          "path": "fieldMetadata[].helpText",
          "category": "identity",
          "valueKind": "string",
          "description": "Texto semântico de ajuda publicado pelo schema/DTO.",
          "intentExamples": [
            "explicar regra de negócio do campo",
            "ajuda vinda do backend"
          ]
        },
        {
          "path": "fieldMetadata[].tooltip",
          "category": "identity",
          "valueKind": "string",
          "description": "Texto exibido ao passar o mouse.",
          "intentExamples": [
            "adicionar tooltip"
          ]
        },
        {
          "path": "fieldMetadata[].tooltipOnHover",
          "category": "identity",
          "valueKind": "boolean",
          "description": "Habilita apresentação do tooltip no hover quando suportado pelo renderer.",
          "intentExamples": [
            "mostrar tooltip ao passar o mouse",
            "ativar dica no hover"
          ]
        },
        {
          "path": "fieldMetadata[].description",
          "category": "identity",
          "valueKind": "string",
          "description": "Descrição detalhada (usada em documentação ou helps extensos).",
          "intentExamples": [
            "descrição completa do campo",
            "texto explicativo longo",
            "documentação do input"
          ]
        },
        {
          "path": "fieldMetadata[].selectionMode",
          "category": "behavior",
          "valueKind": "enum",
          "allowedValues": [
            "boolean",
            "single",
            "multiple"
          ],
          "description": "Semântica de seleção explícita para controles de escolha.",
          "intentExamples": [
            "checkbox booleano",
            "radio de escolha única",
            "grupo múltiplo"
          ]
        },
        {
          "path": "fieldMetadata[].variant",
          "category": "appearance",
          "valueKind": "string",
          "description": "Variante visual/semântica do controle.",
          "intentExamples": [
            "variante consent",
            "modo compact",
            "apresentação em tiles"
          ]
        },
        {
          "path": "fieldMetadata[].density",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "compact",
            "comfortable",
            "spacious"
          ],
          "description": "Densidade visual do shell do controle.",
          "intentExamples": [
            "deixar mais compacto",
            "usar densidade confortável",
            "mais espaçado"
          ]
        },
        {
          "path": "fieldMetadata[].links",
          "category": "identity",
          "valueKind": "array",
          "description": "Links ricos associados ao campo, úteis em consentimentos e conteúdo legal.",
          "intentExamples": [
            "adicionar link da política",
            "incluir termos de uso",
            "anexar link institucional"
          ]
        },
        {
          "path": "fieldMetadata[].group",
          "category": "identity",
          "valueKind": "string",
          "description": "Agrupador lógico do campo.",
          "intentExamples": [
            "agrupar em Dados Pessoais",
            "colocar no grupo de endereço",
            "categoria do campo"
          ]
        },
        {
          "path": "fieldMetadata[].order",
          "category": "layout",
          "valueKind": "number",
          "description": "Ordem de exibição do campo.",
          "intentExamples": [
            "mover para o final",
            "reordenar campo",
            "exibir primeiro",
            "posição 3"
          ]
        },
        {
          "path": "fieldMetadata[].width",
          "category": "layout",
          "valueKind": "string",
          "description": "Largura do campo (ex: 50%, 100px).",
          "intentExamples": [
            "campo meia largura",
            "largura fixa 200px",
            "ocupar 50%",
            "width total"
          ]
        },
        {
          "path": "fieldMetadata[].isFlex",
          "category": "layout",
          "valueKind": "boolean",
          "description": "Se true, usa flex-grow para preencher espaço.",
          "intentExamples": [
            "preencher espaço sobrando",
            "campo flexível",
            "expandir para caber"
          ]
        },
        {
          "path": "fieldMetadata[].controlType",
          "category": "behavior",
          "valueKind": "enum",
          "description": "Tipo do componente de UI (input, select, datepicker, etc).",
          "critical": true,
          "safetyNotes": "Mudar controlType pode invalidar propriedades específicas do componente anterior. Aplique o overlay de microcomponente correspondente.",
          "intentExamples": [
            "mudar para select",
            "usar datepicker",
            "transformar em checkbox",
            "tipo do controle"
          ]
        },
        {
          "path": "fieldMetadata[].dataType",
          "category": "data",
          "valueKind": "enum",
          "description": "Tipo de dado do campo (text, number, date, etc).",
          "intentExamples": [
            "tipo de dado numero",
            "campo de data"
          ]
        },
        {
          "path": "fieldMetadata[].source",
          "category": "data",
          "valueKind": "enum",
          "allowedValues": [
            "schema",
            "local"
          ],
          "description": "Origem semântica do campo. Use local para campos do host que não vêm do schema backend.",
          "intentExamples": [
            "campo local",
            "campo auxiliar do host",
            "campo que não vem do schema"
          ],
          "safetyNotes": "Não marque como local um campo que exista no schema backend; remova a semântica local quando houver colisão com campo server-backed."
        },
        {
          "path": "fieldMetadata[].transient",
          "category": "data",
          "valueKind": "boolean",
          "description": "Marca o campo como temporário/local para preenchimento. O dynamic-form omite do submit por padrão.",
          "intentExamples": [
            "campo temporário",
            "campo transient",
            "não enviar no payload",
            "usar apenas na UI"
          ],
          "safetyNotes": "Campos transient continuam participando de UI, validação, regras, visibilidade e valueChange; eles apenas saem do payload persistido por padrão."
        },
        {
          "path": "fieldMetadata[].submitPolicy",
          "category": "behavior",
          "valueKind": "enum",
          "allowedValues": [
            "include",
            "omit",
            "includeWhenDirty"
          ],
          "description": "Política de submit para sobrescrever o padrão de campos locais/transient.",
          "intentExamples": [
            "omitir do submit",
            "enviar mesmo sendo local",
            "enviar apenas se alterado"
          ],
          "safetyNotes": "Use omit para nunca persistir, include para enviar sempre e includeWhenDirty apenas quando o controle estiver dirty."
        },
        {
          "path": "fieldMetadata[].materialDesign.appearance",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "fill",
            "outline"
          ],
          "description": "Aparência do campo Material (fill/outline).",
          "intentExamples": [
            "estilo outline",
            "aparência preenchida",
            "campo com borda"
          ]
        },
        {
          "path": "fieldMetadata[].materialDesign.color",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "primary",
            "accent",
            "warn"
          ],
          "description": "Tema de cor Material (primary/accent/warn).",
          "intentExamples": [
            "cor primária",
            "destacar com accent"
          ]
        },
        {
          "path": "fieldMetadata[].materialDesign.floatLabel",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "auto",
            "always",
            "never"
          ],
          "description": "Comportamento do rótulo flutuante.",
          "intentExamples": [
            "label sempre flutuando",
            "nunca flutuar label"
          ]
        },
        {
          "path": "fieldMetadata[].materialDesign.subscriptSizing",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "fixed",
            "dynamic"
          ],
          "description": "Estratégia de sizing do subscript (erros/hints)."
        },
        {
          "path": "fieldMetadata[].materialDesign.hideRequiredMarker",
          "category": "appearance",
          "valueKind": "boolean",
          "description": "Oculta o asterisco de campo obrigatório."
        },
        {
          "path": "fieldMetadata[].materialDesign.density",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "comfortable",
            "compact",
            "dense"
          ],
          "description": "Densidade do campo Material."
        },
        {
          "path": "fieldMetadata[].materialDesign.disableRipple",
          "category": "appearance",
          "valueKind": "boolean",
          "description": "Desativa ripple/ondulação em componentes Material."
        },
        {
          "path": "fieldMetadata[].materialDesign.customPalette",
          "category": "appearance",
          "valueKind": "object",
          "description": "Override de paleta (primary/accent/warn).",
          "safetyNotes": "Use cores válidas; validar contra o tema."
        },
        {
          "path": "fieldMetadata[].materialDesign.animations",
          "category": "appearance",
          "valueKind": "object",
          "description": "Configuração de animações (disable, duration, easing)."
        },
        {
          "path": "fieldMetadata[].prefixIcon",
          "category": "appearance",
          "valueKind": "string",
          "description": "Ícone exibido antes do valor.",
          "intentExamples": [
            "ícone de usuário no início",
            "prefixar ícone",
            "imagem antes do texto"
          ]
        },
        {
          "path": "fieldMetadata[].suffixIcon",
          "category": "appearance",
          "valueKind": "string",
          "description": "Ícone exibido depois do valor.",
          "intentExamples": [
            "ícone de busca no final",
            "sufixar ícone",
            "botão de ação no fim"
          ]
        },
        {
          "path": "fieldMetadata[].iconPosition",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "start",
            "end"
          ],
          "description": "Posição preferencial do ícone principal.",
          "intentExamples": [
            "ícone à esquerda",
            "posicionar ícone no fim"
          ]
        },
        {
          "path": "fieldMetadata[].iconSize",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "small",
            "medium",
            "large"
          ],
          "description": "Tamanho do ícone.",
          "intentExamples": [
            "ícone pequeno",
            "aumentar tamanho do ícone",
            "ícone grande"
          ]
        },
        {
          "path": "fieldMetadata[].iconColor",
          "category": "appearance",
          "valueKind": "string",
          "description": "Cor semântica ou token de cor aplicado ao ícone principal.",
          "intentExamples": [
            "ícone em cor primária",
            "usar token do tema no ícone"
          ]
        },
        {
          "path": "fieldMetadata[].iconClass",
          "category": "appearance",
          "valueKind": "string",
          "description": "Classe CSS controlada pelo host para o ícone principal.",
          "intentExamples": [
            "usar classe de ícone outlined",
            "aplicar classe corporativa"
          ]
        },
        {
          "path": "fieldMetadata[].iconStyle",
          "category": "appearance",
          "valueKind": "string",
          "description": "Estilo visual semântico do ícone quando o renderer suportar variações.",
          "intentExamples": [
            "usar ícone arredondado",
            "aplicar estilo filled"
          ]
        },
        {
          "path": "fieldMetadata[].iconFontSize",
          "category": "appearance",
          "valueKind": "string",
          "description": "Tamanho tipográfico do ícone principal.",
          "intentExamples": [
            "ícone com 18px",
            "ajustar tamanho do ícone"
          ]
        },
        {
          "path": "fieldMetadata[].valuePresentation",
          "category": "appearance",
          "valueKind": "object",
          "description": "Formato canonico de exibicao em superficies readonly/display, como moeda, numero, percentual, data, datetime, time e boolean.",
          "safetyNotes": "Preferir este contrato a formatadores legados quando a intencao for apresentacao de valor.",
          "intentExamples": [
            "mostrar como moeda",
            "formatar como data longa",
            "exibir percentual"
          ]
        },
        {
          "path": "fieldMetadata[].presentation",
          "category": "appearance",
          "valueKind": "object",
          "description": "Estado visual semantico base para presentationMode, incluindo presenter, tone, icon, label, badge, tooltip, appearance e formatter opcional.",
          "safetyNotes": "Use apenas semantica declarativa; nao incluir CSS arbitrario, HTML, comandos ou efeitos mutaveis.",
          "intentExamples": [
            "status com icone",
            "badge de pendente",
            "campo em tom warning"
          ]
        },
        {
          "path": "fieldMetadata[].presentation.presenter",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "text",
            "badge",
            "chip",
            "status",
            "iconValue",
            "progress",
            "rating",
            "microVisualization"
          ],
          "description": "Tipo semantico de renderizacao em modo apresentacao.",
          "intentExamples": [
            "renderizar como status",
            "usar chip",
            "mostrar icone com valor"
          ]
        },
        {
          "path": "fieldMetadata[].presentation.tone",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "neutral",
            "info",
            "success",
            "warning",
            "danger"
          ],
          "description": "Tom semantico mapeado pelo consumidor para tokens de tema.",
          "intentExamples": [
            "tom de sucesso",
            "tom de alerta",
            "tom de erro"
          ]
        },
        {
          "path": "fieldMetadata[].presentation.appearance",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "plain",
            "soft",
            "outlined",
            "filled"
          ],
          "description": "Nivel de enfase visual do apresentador.",
          "intentExamples": [
            "status preenchido",
            "badge contornado",
            "chip suave"
          ]
        },
        {
          "path": "fieldMetadata[].presentation.icon",
          "category": "appearance",
          "valueKind": "string",
          "description": "Nome de icone Material Symbols usado pelo apresentador semantico.",
          "intentExamples": [
            "icone lock",
            "icone payments",
            "icone schedule"
          ]
        },
        {
          "path": "fieldMetadata[].presentation.label",
          "category": "identity",
          "valueKind": "string",
          "description": "Rotulo semantico exibido por apresentadores como status, badge ou chip.",
          "intentExamples": [
            "rotulo Bloqueado",
            "texto Aprovado",
            "status Aguardando aprovacao"
          ]
        },
        {
          "path": "fieldMetadata[].presentation.badge",
          "category": "appearance",
          "valueKind": "string",
          "description": "Marcador secundario opcional exibido junto ao valor em superficies de apresentacao.",
          "intentExamples": [
            "badge alto valor",
            "marcador D+35",
            "sinalizar revisao executiva"
          ]
        },
        {
          "path": "fieldMetadata[].presentation.prefix",
          "category": "appearance",
          "valueKind": "string",
          "description": "Prefixo visual readonly aplicado ao valor apresentado, sem alterar payload, filtros, ordenacao ou exportacao.",
          "safetyNotes": "Usar apenas para convencoes visuais como codigo operacional com #; nao persistir o prefixo no valor bruto.",
          "intentExamples": [
            "mostrar codigo com #",
            "prefixar protocolo com PR-"
          ]
        },
        {
          "path": "fieldMetadata[].presentation.suffix",
          "category": "appearance",
          "valueKind": "string",
          "description": "Sufixo visual readonly aplicado ao valor apresentado, sem alterar payload, filtros, ordenacao ou exportacao.",
          "safetyNotes": "Usar apenas para convencoes visuais; unidades semanticas numericas devem preferir valuePresentation quando aplicavel.",
          "intentExamples": [
            "sufixo visual de referencia",
            "mostrar unidade textual curta"
          ]
        },
        {
          "path": "fieldMetadata[].presentation.valuePresentation",
          "category": "appearance",
          "valueKind": "object",
          "description": "Override de formatacao aplicado apenas pela superficie de apresentacao.",
          "safetyNotes": "Nao altera o valor real do FormControl nem o payload de submit."
        },
        {
          "path": "fieldMetadata[].presentation.visualization",
          "category": "appearance",
          "valueKind": "object",
          "description": "Micro visualizacao renderer-neutral para superficies compactas como tabela, lista, header, card e form read-only.",
          "safetyNotes": "Exige fallback textual e nao pode conter opcoes de ECharts, HTML, SVG bruto, CSS ou comandos.",
          "intentExamples": [
            "micro chart de SLA",
            "barra empilhada em celula",
            "bullet chart de orcamento",
            "fluxo compacto de aprovacao"
          ]
        },
        {
          "path": "fieldMetadata[].presentation.visualization.kind",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "line",
            "area",
            "column",
            "comparison",
            "stackedBar",
            "radial",
            "harveyBall",
            "bullet",
            "delta",
            "processFlow"
          ],
          "description": "Tipo semantico da micro visualizacao de apresentacao.",
          "intentExamples": [
            "comparison",
            "stackedBar",
            "bullet",
            "processFlow"
          ]
        },
        {
          "path": "fieldMetadata[].presentation.visualization.surface",
          "category": "layout",
          "valueKind": "enum",
          "allowedValues": [
            "table-cell",
            "list-item",
            "object-header",
            "card-summary",
            "form-presentation"
          ],
          "description": "Superficie alvo usada para aplicar regras de densidade e fallback.",
          "intentExamples": [
            "table-cell",
            "list-item",
            "form-presentation"
          ]
        },
        {
          "path": "fieldMetadata[].presentation.visualization.size",
          "category": "layout",
          "valueKind": "enum",
          "allowedValues": [
            "xs",
            "sm",
            "md",
            "lg",
            "responsive"
          ],
          "description": "Tamanho semantico da micro visualizacao.",
          "intentExamples": [
            "xs em tabela",
            "md em header",
            "responsive em card"
          ]
        },
        {
          "path": "fieldMetadata[].presentation.visualization.fallbackText",
          "category": "accessibility",
          "valueKind": "string",
          "description": "Texto equivalente obrigatorio para fallback, exportacao e leitores de tela.",
          "safetyNotes": "Deve explicar valor, unidade, meta, tendencia ou estado quando aplicavel."
        },
        {
          "path": "fieldMetadata[].presentationRules",
          "category": "appearance",
          "valueKind": "array",
          "description": "Regras Json Logic ordenadas que sobrescrevem presentation em modo readonly/display; regras posteriores que casam vencem.",
          "safetyNotes": "As regras devem produzir apenas set/effect semantico. Nao use para alterar valor, executar acao, navegar ou injetar HTML/CSS.",
          "intentExamples": [
            "se status for BLOQUEADO, usar tone danger",
            "se valor maior que limite, mostrar badge de revisao"
          ]
        },
        {
          "path": "fieldMetadata[].presentationRules[].when",
          "category": "behavior",
          "valueKind": "object",
          "description": "Guarda Json Logic avaliada contra o contexto de apresentacao do campo.",
          "safetyNotes": "Use Json Logic serializavel; funcoes nao sao aceitas."
        },
        {
          "path": "fieldMetadata[].presentationRules[].set",
          "category": "appearance",
          "valueKind": "object",
          "description": "Patch semantico aplicado sobre presentation quando a guarda for verdadeira.",
          "safetyNotes": "Somente presenter, tone, icon, label, badge, tooltip, appearance, valuePresentation e interactions seguras."
        },
        {
          "path": "fieldMetadata[].mask",
          "category": "appearance",
          "valueKind": "string",
          "description": "Máscara de input (padrão do componente).",
          "intentExamples": [
            "máscara de CPF",
            "formatar telefone",
            "aplicar máscara de data",
            "pattern visual"
          ]
        },
        {
          "path": "fieldMetadata[].format",
          "category": "appearance",
          "valueKind": "string",
          "description": "Formato de exibição (ex: pipes).",
          "intentExamples": [
            "formato de data dd/mm/yyyy",
            "formato de moeda",
            "exibir como porcentagem"
          ]
        },
        {
          "path": "fieldMetadata[].validators",
          "category": "validation",
          "valueKind": "object",
          "description": "Objeto contendo todas as regras de validação.",
          "safetyNotes": "Não sobrescreva este objeto inteiramente; faça merge das propriedades.",
          "intentExamples": [
            "adicionar validações",
            "regras de validação",
            "objeto validators"
          ]
        },
        {
          "path": "fieldMetadata[].validators.required",
          "category": "validation",
          "valueKind": "boolean",
          "description": "Campo obrigatório.",
          "intentExamples": [
            "tornar obrigatório",
            "campo mandatório",
            "exigir preenchimento",
            "remover required"
          ]
        },
        {
          "path": "fieldMetadata[].required",
          "category": "validation",
          "valueKind": "boolean",
          "description": "Campo obrigatório (alias rápido do validators.required).",
          "intentExamples": [
            "campo obrigatório",
            "exigir preenchimento"
          ]
        },
        {
          "path": "fieldMetadata[].validators.requiredMessage",
          "category": "validation",
          "valueKind": "string",
          "description": "Mensagem customizada para required."
        },
        {
          "path": "fieldMetadata[].validators.email",
          "category": "validation",
          "valueKind": "boolean",
          "description": "Validação de formato de e-mail.",
          "intentExamples": [
            "validar como email",
            "aceitar apenas emails",
            "formato de correio eletrônico"
          ]
        },
        {
          "path": "fieldMetadata[].validators.emailMessage",
          "category": "validation",
          "valueKind": "string",
          "description": "Mensagem customizada para validação de email."
        },
        {
          "path": "fieldMetadata[].validators.minLength",
          "category": "validation",
          "valueKind": "number",
          "description": "Comprimento mínimo do texto.",
          "intentExamples": [
            "mínimo de 5 caracteres",
            "pelo menos 3 letras",
            "tamanho mínimo"
          ]
        },
        {
          "path": "fieldMetadata[].validators.minLengthMessage",
          "category": "validation",
          "valueKind": "string",
          "description": "Mensagem customizada para minLength."
        },
        {
          "path": "fieldMetadata[].validators.maxLength",
          "category": "validation",
          "valueKind": "number",
          "description": "Comprimento máximo do texto.",
          "intentExamples": [
            "máximo de 100 caracteres",
            "limitar tamanho",
            "não exceder 50 letras"
          ]
        },
        {
          "path": "fieldMetadata[].validators.maxLengthMessage",
          "category": "validation",
          "valueKind": "string",
          "description": "Mensagem customizada para maxLength."
        },
        {
          "path": "fieldMetadata[].validators.min",
          "category": "validation",
          "valueKind": "number",
          "description": "Valor numérico mínimo.",
          "intentExamples": [
            "valor mínimo 10",
            "não aceitar menor que 0",
            "piso de valor"
          ]
        },
        {
          "path": "fieldMetadata[].validators.minMessage",
          "category": "validation",
          "valueKind": "string",
          "description": "Mensagem customizada para min."
        },
        {
          "path": "fieldMetadata[].validators.max",
          "category": "validation",
          "valueKind": "number",
          "description": "Valor numérico máximo.",
          "intentExamples": [
            "valor máximo 100",
            "teto de valor",
            "não aceitar maior que 50"
          ]
        },
        {
          "path": "fieldMetadata[].validators.maxMessage",
          "category": "validation",
          "valueKind": "string",
          "description": "Mensagem customizada para max."
        },
        {
          "path": "fieldMetadata[].validators.pattern",
          "category": "validation",
          "valueKind": "string",
          "description": "Regex para validação.",
          "safetyNotes": "Cuidado com ReDoS em regex complexos.",
          "intentExamples": [
            "validar com regex",
            "padrão customizado",
            "expressão regular"
          ]
        },
        {
          "path": "fieldMetadata[].validators.patternMessage",
          "category": "validation",
          "valueKind": "string",
          "description": "Mensagem customizada para pattern."
        },
        {
          "path": "fieldMetadata[].validators.cpf",
          "category": "validation",
          "valueKind": "boolean",
          "description": "Validador de CPF (legado)."
        },
        {
          "path": "fieldMetadata[].validators.cnpj",
          "category": "validation",
          "valueKind": "boolean",
          "description": "Validador de CNPJ (legado)."
        },
        {
          "path": "fieldMetadata[].validators.cpfCnpj",
          "category": "validation",
          "valueKind": "boolean",
          "description": "Validador automatico CPF/CNPJ (legado)."
        },
        {
          "path": "fieldMetadata[].validators.cnpjAlpha",
          "category": "validation",
          "valueKind": "boolean",
          "description": "Validador de CNPJ alfanumerico (legado)."
        },
        {
          "path": "fieldMetadata[].validators.cpfMessage",
          "category": "validation",
          "valueKind": "string",
          "description": "Mensagem customizada para CPF."
        },
        {
          "path": "fieldMetadata[].validators.cnpjMessage",
          "category": "validation",
          "valueKind": "string",
          "description": "Mensagem customizada para CNPJ."
        },
        {
          "path": "fieldMetadata[].validators.cnpjAlphaMessage",
          "category": "validation",
          "valueKind": "string",
          "description": "Mensagem customizada para CNPJ alfanumerico."
        },
        {
          "path": "fieldMetadata[].validators.url",
          "category": "validation",
          "valueKind": "boolean",
          "description": "Validador de URL."
        },
        {
          "path": "fieldMetadata[].validators.urlMessage",
          "category": "validation",
          "valueKind": "string",
          "description": "Mensagem customizada para URL."
        },
        {
          "path": "fieldMetadata[].validators.minWords",
          "category": "validation",
          "valueKind": "number",
          "description": "Mínimo de palavras.",
          "intentExamples": [
            "mínimo de 2 palavras",
            "exigir nome completo (2 palavras)"
          ]
        },
        {
          "path": "fieldMetadata[].validators.requiredChecked",
          "category": "validation",
          "valueKind": "boolean",
          "description": "Exige checkbox marcado (ex: termos de uso).",
          "intentExamples": [
            "obrigar marcar checkbox",
            "aceitar termos é obrigatório"
          ]
        },
        {
          "path": "fieldMetadata[].validators.customValidator",
          "category": "validation",
          "valueKind": "expression",
          "description": "Validador customizado (função).",
          "safetyNotes": "Funções não são serializáveis; exige wiring manual."
        },
        {
          "path": "fieldMetadata[].validators.asyncValidator",
          "category": "validation",
          "valueKind": "expression",
          "description": "Validador async customizado (função).",
          "safetyNotes": "Funções não são serializáveis; exige wiring manual."
        },
        {
          "path": "fieldMetadata[].validators.matchField",
          "category": "validation",
          "valueKind": "string",
          "description": "Campo que deve coincidir (cross-field)."
        },
        {
          "path": "fieldMetadata[].validators.matchFieldMessage",
          "category": "validation",
          "valueKind": "string",
          "description": "Mensagem customizada para matchField."
        },
        {
          "path": "fieldMetadata[].validators.uniqueValidator",
          "category": "validation",
          "valueKind": "expression",
          "description": "Validador de unicidade via API (função).",
          "safetyNotes": "Funções não são serializáveis; exige wiring manual."
        },
        {
          "path": "fieldMetadata[].validators.uniqueMessage",
          "category": "validation",
          "valueKind": "string",
          "description": "Mensagem customizada para unicidade."
        },
        {
          "path": "fieldMetadata[].validators.conditionalValidation",
          "category": "validation",
          "valueKind": "array",
          "description": "Regras de validação condicional.",
          "safetyNotes": "Use regras declarativas com Json Logic serializável; não gere funções aqui."
        },
        {
          "path": "fieldMetadata[].validators.conditionalValidation[].condition",
          "category": "validation",
          "valueKind": "expression",
          "description": "Condicao para aplicar validadores.",
          "safetyNotes": "Use Json Logic canônico avaliado sobre o root `form`."
        },
        {
          "path": "fieldMetadata[].validators.conditionalValidation[].validators",
          "category": "validation",
          "valueKind": "object",
          "description": "Conjunto de validadores aplicados quando a condicao for verdadeira."
        },
        {
          "path": "fieldMetadata[].validators.validationTrigger",
          "category": "validation",
          "valueKind": "enum",
          "allowedValues": [
            "change",
            "blur",
            "submit",
            "immediate"
          ],
          "description": "Gatilho de validação no validator."
        },
        {
          "path": "fieldMetadata[].validators.validationDebounce",
          "category": "validation",
          "valueKind": "number",
          "description": "Debounce de validação no validator (ms)."
        },
        {
          "path": "fieldMetadata[].validators.showInlineErrors",
          "category": "validation",
          "valueKind": "boolean",
          "description": "Exibe erros inline (validator)."
        },
        {
          "path": "fieldMetadata[].validators.errorPosition",
          "category": "validation",
          "valueKind": "enum",
          "allowedValues": [
            "bottom",
            "top",
            "tooltip"
          ],
          "description": "Posicao do erro (validator)."
        },
        {
          "path": "fieldMetadata[].validationMode",
          "category": "validation",
          "valueKind": "enum",
          "allowedValues": [
            "immediate",
            "blur",
            "submit"
          ],
          "description": "Gatilho da validação (change/blur/submit).",
          "intentExamples": [
            "validar ao sair do campo (blur)",
            "validar apenas no submit",
            "validação em tempo real"
          ]
        },
        {
          "path": "fieldMetadata[].debounceTime",
          "category": "validation",
          "valueKind": "number",
          "description": "Debounce para validação em ms.",
          "intentExamples": [
            "aguardar para validar",
            "debounce de 500ms",
            "delay na validação"
          ]
        },
        {
          "path": "fieldMetadata[].options",
          "category": "data",
          "valueKind": "array",
          "description": "Array de opções conforme controlType (ex.: { key, value } ou { value, text/display }).",
          "intentExamples": [
            "adicionar opções estáticas",
            "lista fixa de itens",
            "opções do select"
          ],
          "safetyNotes": "Respeite o formato esperado pelo controlType; prefira merge/append em vez de substituir o array inteiro."
        },
        {
          "path": "fieldMetadata[].endpoint",
          "category": "data",
          "valueKind": "string",
          "description": "URL para carregar opções remotas.",
          "intentExamples": [
            "carregar do servidor",
            "buscar API",
            "endpoint de dados",
            "url das opções"
          ]
        },
        {
          "path": "fieldMetadata[].valueField",
          "category": "data",
          "valueKind": "string",
          "description": "Nome da propriedade de valor nas opções.",
          "intentExamples": [
            "usar \"id\" como valor",
            "campo de valor das opções"
          ]
        },
        {
          "path": "fieldMetadata[].displayField",
          "category": "data",
          "valueKind": "string",
          "description": "Nome da propriedade de texto nas opções.",
          "intentExamples": [
            "usar \"nome\" como texto",
            "exibir campo \"label\"",
            "campo de exibição"
          ]
        },
        {
          "path": "fieldMetadata[].filterField",
          "category": "data",
          "valueKind": "string",
          "description": "Campo para filtragem no backend.",
          "intentExamples": [
            "filtrar por \"categoria\"",
            "campo de filtro na api"
          ]
        },
        {
          "path": "fieldMetadata[].queryParams",
          "category": "data",
          "valueKind": "object",
          "description": "Parâmetros fixos para a query do endpoint.",
          "intentExamples": [
            "parâmetros extras na busca",
            "enviar tipo=ativo na query"
          ]
        },
        {
          "path": "fieldMetadata[].cacheDuration",
          "category": "data",
          "valueKind": "number",
          "description": "Duração do cache de dados em ms.",
          "intentExamples": [
            "cachear por 5 minutos",
            "tempo de cache",
            "validade dos dados"
          ]
        },
        {
          "path": "fieldMetadata[].hidden",
          "category": "behavior",
          "valueKind": "boolean",
          "description": "Oculta o campo globalmente.",
          "critical": true,
          "intentExamples": [
            "ocultar campo",
            "esconder input",
            "campo invisível"
          ]
        },
        {
          "path": "fieldMetadata[].visibleIn",
          "category": "behavior",
          "valueKind": "array",
          "allowedValues": [
            "form",
            "filter",
            "table",
            "dialog"
          ],
          "description": "Contextos onde o campo é visível.",
          "intentExamples": [
            "mostrar apenas no filtro",
            "esconder na tabela",
            "visível só no form"
          ]
        },
        {
          "path": "fieldMetadata[].formHidden",
          "category": "behavior",
          "valueKind": "boolean",
          "description": "Oculta apenas no formulário.",
          "intentExamples": [
            "esconder no form",
            "invisível na edição"
          ]
        },
        {
          "path": "fieldMetadata[].tableHidden",
          "category": "behavior",
          "valueKind": "boolean",
          "description": "Oculta apenas na tabela.",
          "intentExamples": [
            "esconder na listagem",
            "não mostrar na tabela"
          ]
        },
        {
          "path": "fieldMetadata[].filterHidden",
          "category": "behavior",
          "valueKind": "boolean",
          "description": "Oculta apenas no filtro.",
          "intentExamples": [
            "esconder na busca",
            "remover do filtro"
          ]
        },
        {
          "path": "fieldMetadata[].fieldAccess",
          "category": "behavior",
          "valueKind": "object",
          "description": "Politica canonica de UX para visibilidade/edicao por authorities publicadas pelo backend.",
          "safetyNotes": "Nao e barreira de seguranca. O backend continua responsavel por filtrar dados sensiveis e validar payloads.",
          "intentExamples": [
            "campo visivel somente para RH",
            "bloquear edicao por perfil corporativo"
          ]
        },
        {
          "path": "fieldMetadata[].fieldAccess.visibleForAuthorities",
          "category": "behavior",
          "valueKind": "array",
          "description": "Authorities que podem ver o campo no runtime quando a UX tiver claims explicitas.",
          "safetyNotes": "Nao inferir a partir de capabilities sem mapeamento canonico publicado."
        },
        {
          "path": "fieldMetadata[].fieldAccess.editableForAuthorities",
          "category": "behavior",
          "valueKind": "array",
          "description": "Authorities que podem editar o campo no runtime quando a UX tiver claims explicitas.",
          "safetyNotes": "Edicao concedida implica materializacao visivel no runtime; a validacao final permanece no backend."
        },
        {
          "path": "fieldMetadata[].fieldAccess.reason",
          "category": "misc",
          "valueKind": "string",
          "description": "Justificativa explicativa/auditavel da politica de acesso do campo.",
          "safetyNotes": "Reason sozinho nao deve decidir acesso nem revelar detalhes sensiveis para usuarios sem permissao."
        },
        {
          "path": "fieldMetadata[].dependencyFields",
          "category": "dependency",
          "valueKind": "array",
          "description": "Campos dos quais este campo depende.",
          "intentExamples": [
            "depende de estado",
            "campo dependente",
            "cascata com outro campo"
          ]
        },
        {
          "path": "fieldMetadata[].conditionalRequired",
          "category": "dependency",
          "valueKind": "expression",
          "description": "Condição Json Logic para obrigatoriedade declarativa.",
          "safetyNotes": "Use Json Logic serializável; não gere função nem DSL textual.",
          "intentExamples": [
            "obrigatório se outro campo for X",
            "condicionalmente requerido"
          ]
        },
        {
          "path": "fieldMetadata[].conditionalDisplay",
          "category": "dependency",
          "valueKind": "expression",
          "description": "Condição Json Logic para visibilidade declarativa.",
          "safetyNotes": "Use Json Logic serializável; não gere função nem DSL textual.",
          "intentExamples": [
            "mostrar se checkbox marcado",
            "visibilidade condicional"
          ]
        },
        {
          "path": "fieldMetadata[].dependencyFilterMap",
          "category": "dependency",
          "valueKind": "object",
          "description": "Mapeamento de filtro baseado na dependência.",
          "intentExamples": [
            "filtrar cidade por estado",
            "mapear valor da dependência"
          ]
        },
        {
          "path": "fieldMetadata[].dependencyValuePath",
          "category": "dependency",
          "valueKind": "string",
          "description": "Caminho no valor da dependência.",
          "intentExamples": [
            "usar propriedade aninhada da dependência",
            "caminho do valor dependente"
          ]
        },
        {
          "path": "fieldMetadata[].dependencyMergeStrategy",
          "category": "dependency",
          "valueKind": "enum",
          "allowedValues": [
            "replace",
            "merge"
          ],
          "description": "Estratégia de merge dos dados carregados.",
          "intentExamples": [
            "substituir opções ao carregar",
            "mesclar resultados"
          ]
        },
        {
          "path": "fieldMetadata[].dependencyLoadOnChange",
          "category": "dependency",
          "valueKind": "enum",
          "allowedValues": [
            "respectLoadOn",
            "immediate",
            "manual"
          ],
          "description": "Quando recarregar dependência.",
          "intentExamples": [
            "recarregar assim que mudar",
            "recarregar manualmente",
            "carregar imediatamente"
          ]
        },
        {
          "path": "fieldMetadata[].resetOnDependentChange",
          "category": "dependency",
          "valueKind": "boolean",
          "description": "Zera valor se dependência mudar.",
          "intentExamples": [
            "limpar se o pai mudar",
            "resetar valor na troca da dependência"
          ]
        },
        {
          "path": "fieldMetadata[].enableDependencyCascade",
          "category": "dependency",
          "valueKind": "boolean",
          "description": "Habilita/desabilita cascata nativa de dependências entre campos.",
          "intentExamples": [
            "desativar cascata nativa",
            "habilitar cascata",
            "usar connections sem cascata"
          ]
        },
        {
          "path": "fieldMetadata[].dependencyDebounceMs",
          "category": "dependency",
          "valueKind": "number",
          "description": "Delay para reagir à mudança de dependência.",
          "intentExamples": [
            "esperar para recarregar dependência",
            "debounce da cascata"
          ]
        },
        {
          "path": "fieldMetadata[].suppressInlineErrorsOnCascade",
          "category": "dependency",
          "valueKind": "boolean",
          "description": "Suprime erros inline durante cascata."
        },
        {
          "path": "fieldMetadata[].transformDisplayValue",
          "category": "transform",
          "valueKind": "expression",
          "description": "Transforma valor para exibição.",
          "safetyNotes": "Função não serializável.",
          "intentExamples": [
            "formatar valor visualmente",
            "transformar display"
          ]
        },
        {
          "path": "fieldMetadata[].transformSaveValue",
          "category": "transform",
          "valueKind": "expression",
          "description": "Transforma valor para salvar.",
          "safetyNotes": "Função não serializável.",
          "intentExamples": [
            "formatar valor para envio",
            "transformar payload"
          ]
        },
        {
          "path": "fieldMetadata[].textTransformApply",
          "category": "transform",
          "valueKind": "enum",
          "allowedValues": [
            "displayOnly",
            "saveOnly",
            "both"
          ],
          "description": "Quando aplicar transformação de texto.",
          "intentExamples": [
            "aplicar transformação apenas no display",
            "transformar ao salvar e exibir"
          ]
        },
        {
          "path": "fieldMetadata[].inlineEditing",
          "category": "behavior",
          "valueKind": "boolean",
          "description": "Permite edição inline (tabelas).",
          "intentExamples": [
            "permitir edição na tabela",
            "editar na linha"
          ]
        },
        {
          "path": "fieldMetadata[].unique",
          "category": "validation",
          "valueKind": "boolean",
          "description": "Valida unicidade no backend.",
          "intentExamples": [
            "validar se é único",
            "não permitir duplicados"
          ]
        },
        {
          "path": "fieldMetadata[].readOnly",
          "category": "behavior",
          "valueKind": "boolean",
          "description": "Campo somente leitura.",
          "intentExamples": [
            "somente leitura",
            "bloquear edição",
            "campo readonly"
          ]
        },
        {
          "path": "fieldMetadata[].disabled",
          "category": "behavior",
          "valueKind": "boolean",
          "description": "Campo desabilitado.",
          "intentExamples": [
            "desabilitar campo",
            "campo disabled",
            "cinza e bloqueado"
          ]
        },
        {
          "path": "fieldMetadata[].defaultValue",
          "category": "data",
          "valueKind": "object",
          "description": "Valor inicial do campo.",
          "safetyNotes": "Aceita tipos primitivos/objetos; respeite o controlType.",
          "intentExamples": [
            "valor padrão",
            "iniciar com valor X",
            "default value"
          ]
        },
        {
          "path": "fieldMetadata[].ariaLabel",
          "category": "accessibility",
          "valueKind": "string",
          "description": "Label para leitores de tela.",
          "intentExamples": [
            "label de acessibilidade",
            "texto para leitor de tela"
          ]
        },
        {
          "path": "fieldMetadata[].ariaDescribedBy",
          "category": "accessibility",
          "valueKind": "string",
          "description": "IDs de descrição acessível.",
          "intentExamples": [
            "descrito pelo elemento X",
            "associar descrição aria"
          ]
        },
        {
          "path": "fieldMetadata[].tabIndex",
          "category": "accessibility",
          "valueKind": "number",
          "description": "Ordem de tabulacao para teclado.",
          "intentExamples": [
            "tabindex 0",
            "ordem de foco"
          ]
        },
        {
          "path": "fieldMetadata[].accessKey",
          "category": "accessibility",
          "valueKind": "string",
          "description": "Atalho de teclado (accessKey).",
          "intentExamples": [
            "atalho de teclado",
            "tecla de acesso rapido"
          ]
        }
      ],
      "componentCapabilities": [
        {
          "path": "inputs.resourcePath",
          "category": "inputs",
          "valueKind": "string",
          "description": "Caminho do recurso para carregar/salvar dados via CRUD.",
          "intentExamples": [
            "definir recurso como /api/employees"
          ]
        },
        {
          "path": "inputs.resourceId",
          "category": "inputs",
          "valueKind": "string",
          "description": "ID do registro atual (string ou number)."
        },
        {
          "path": "inputs.initialValue",
          "category": "inputs",
          "valueKind": "object",
          "description": "Valores iniciais locais para campos host-authored ou complementares."
        },
        {
          "path": "inputs.mode",
          "category": "inputs",
          "valueKind": "enum",
          "allowedValues": [
            "create",
            "edit",
            "view"
          ],
          "description": "Modo do formulario (create/edit/view).",
          "intentExamples": [
            "abrir em modo view",
            "editar registro"
          ]
        },
        {
          "path": "inputs.config",
          "category": "inputs",
          "valueKind": "object",
          "description": "Configuracao completa do formulario (FormConfig).",
          "critical": true
        },
        {
          "path": "inputs.schemaSource",
          "category": "inputs",
          "valueKind": "enum",
          "allowedValues": [
            "resource",
            "filter"
          ],
          "description": "Fonte de schema para construcao automatica (resource/filter)."
        },
        {
          "path": "inputs.schemaUrl",
          "category": "inputs",
          "valueKind": "string",
          "description": "Schema canonico explicito publicado pelo backend para hosts que seguem surfaces/actions/capabilities."
        },
        {
          "path": "inputs.readUrl",
          "category": "inputs",
          "valueKind": "string",
          "description": "Endpoint canonico de leitura publicado por surface VIEW/READ_PROJECTION para hidratar a entidade exibida."
        },
        {
          "path": "inputs.apiEndpointKey",
          "category": "inputs",
          "valueKind": "string",
          "description": "Endpoint canonico usado para resolver schemaUrl, readUrl e submitUrl relativos em hosts destacados."
        },
        {
          "path": "inputs.submitUrl",
          "category": "inputs",
          "valueKind": "string",
          "description": "Endpoint canonico de submit publicado por surface/action."
        },
        {
          "path": "inputs.submitMethod",
          "category": "inputs",
          "valueKind": "enum",
          "allowedValues": [
            "post",
            "put",
            "patch"
          ],
          "description": "Metodo HTTP canonico para o submit quando o backend publica operacao explicita."
        },
        {
          "path": "inputs.submitIdempotencyKey",
          "category": "inputs",
          "valueKind": "string",
          "description": "Identidade estavel da tentativa de comando, materializada a partir da politica execution da action."
        },
        {
          "path": "inputs.submitCorrelationId",
          "category": "inputs",
          "valueKind": "string",
          "description": "Identificador de correlacao governado para rastreabilidade ponta a ponta do comando."
        },
        {
          "path": "inputs.submitResourceVersion",
          "category": "inputs",
          "valueKind": "string",
          "description": "Versao persistida esperada, transportada como If-Match quando exigida pela action."
        },
        {
          "path": "inputs.submitResourceVersionTargetResourceKey",
          "category": "inputs",
          "valueKind": "string",
          "description": "Resource key canônico materializado pela action para resolver o ETag de outro agregado no momento do submit."
        },
        {
          "path": "inputs.submitResourceVersionTargetIdField",
          "category": "inputs",
          "valueKind": "string",
          "description": "Campo exato do request que identifica o agregado cujo ETag governa a action."
        },
        {
          "path": "inputs.responseSchemaUrl",
          "category": "inputs",
          "valueKind": "string",
          "description": "Schema de resposta publicado pelo backend para inspeção diagnostica/read-only do host."
        },
        {
          "path": "inputs.enableCustomization",
          "category": "inputs",
          "valueKind": "boolean",
          "description": "Habilita a edicao de layout/configuracao no editor."
        },
        {
          "path": "inputs.showAiAssistant",
          "category": "inputs",
          "valueKind": "boolean",
          "description": "Mostra os gatilhos do copiloto semantico Praxis para a instancia do formulario."
        },
        {
          "path": "inputs.formId",
          "category": "inputs",
          "valueKind": "string",
          "description": "ID persistente para salvar configuracoes e preferencias."
        },
        {
          "path": "inputs.editorialContext",
          "category": "inputs",
          "valueKind": "object",
          "description": "Override de contexto editorial fornecido pelo host para os blocos hospedados antes/depois do formulario.",
          "safetyNotes": "Trate como objeto imutavel; trocar a referencia ao atualizar valores."
        },
        {
          "path": "inputs.layout",
          "category": "inputs",
          "valueKind": "object",
          "description": "Layout legado (FormLayout). Preferir inputs.config + sections.",
          "safetyNotes": "Use apenas para formularios antigos baseados em fieldsets."
        },
        {
          "path": "inputs.generatedLayoutPreset",
          "category": "inputs",
          "valueKind": "enum",
          "allowedValues": [
            "default",
            "compactPresentation"
          ],
          "description": "Preset usado somente na criacao inicial de FormConfig a partir de schema/metadata.",
          "safetyNotes": "Nao reprocessa layouts ja persistidos ou authorados."
        },
        {
          "path": "inputs.configPersistenceStrategy",
          "category": "inputs",
          "valueKind": "enum",
          "allowedValues": [
            "local-first",
            "input-first"
          ],
          "description": "Define se preferências locais persistidas ou o contrato explícito do host governam a materialização corrente.",
          "safetyNotes": "Use input-first em commands e surfaces transitórias; isso impede que mode e estados operacionais antigos sobrescrevam o schema atual."
        },
        {
          "path": "inputs.layoutPolicy",
          "category": "inputs",
          "valueKind": "object",
          "description": "Politica opt-in para materializar layout diretamente do schema atual sem depender de FormConfig.sections authoradas.",
          "safetyNotes": "Use source=schema com persistence=transient para surfaces schema-driven; nao use para sobrescrever layouts authorados sem detach explicito."
        },
        {
          "path": "inputs.layoutPolicy.source",
          "category": "inputs",
          "valueKind": "enum",
          "allowedValues": [
            "authored",
            "schema"
          ],
          "description": "Define se o layout vem de configuracao authorada ou do schema."
        },
        {
          "path": "inputs.layoutPolicy.preset",
          "category": "inputs",
          "valueKind": "enum",
          "allowedValues": [
            "default",
            "compactPresentation",
            "groupedCommand"
          ],
          "description": "Preset de layout schema-driven. compactPresentation cobre detalhe read-only; groupedCommand cobre create/edit."
        },
        {
          "path": "inputs.layoutPolicy.intent",
          "category": "inputs",
          "valueKind": "enum",
          "allowedValues": [
            "detail",
            "command"
          ],
          "description": "Intencao da surface: detalhe/apresentacao ou comando/editavel."
        },
        {
          "path": "inputs.layoutPolicy.lifecycle",
          "category": "inputs",
          "valueKind": "enum",
          "allowedValues": [
            "initial",
            "live"
          ],
          "description": "Ciclo de materializacao do layout schema-driven."
        },
        {
          "path": "inputs.layoutPolicy.persistence",
          "category": "inputs",
          "valueKind": "enum",
          "allowedValues": [
            "transient",
            "authorable"
          ],
          "description": "Define se sections geradas sao transient ou podem virar layout authorado apos detach explicito."
        },
        {
          "path": "inputs.layoutPolicy.groupedCommand.orphanFieldExpansion",
          "category": "inputs",
          "valueKind": "enum",
          "allowedValues": [
            "preserve",
            "medium-and-wide",
            "all"
          ],
          "description": "Define como uma linha groupedCommand com um unico campo usa o espaco restante. O default medium-and-wide expande spans 6 ou 8 e preserva campos compactos.",
          "safetyNotes": "Use preserve quando o espaco vazio for intencional; use all apenas quando ate campos xs/sm devam ocupar a linha completa."
        },
        {
          "path": "inputs.layoutPolicy.groupedCommand.contextFields",
          "category": "inputs",
          "valueKind": "array",
          "description": "Campos canônicos do request cujo valor vem do contexto da surface. Eles permanecem no FormGroup e no payload, sem renderizar controles redundantes.",
          "safetyNotes": "Use somente para campos realmente hidratados por initialValue ou leitura da entidade; nunca use para esconder dados que a pessoa ainda precisa informar."
        },
        {
          "path": "inputs.layoutPolicy.groupedCommand.partialRowStrategy",
          "category": "inputs",
          "valueKind": "enum",
          "allowedValues": [
            "preserve",
            "fill-compatible"
          ],
          "description": "Define se cada linha visual parcial, depois de resolver visibilidade responsiva, CSS order e wrap, preserva os spans canônicos ou redistribui apenas campos compatíveis para completar 12 colunas no breakpoint atual.",
          "safetyNotes": "fill-compatible é uma projeção transitória do runtime: não altera x-ui.width nem persiste sections. Controles compactos, uploads e tipos desconhecidos preservam a largura canônica."
        },
        {
          "path": "inputs.layoutPolicy.detailSummary",
          "category": "inputs",
          "valueKind": "object",
          "description": "Politica declarativa para resumo read-only compacto em compactPresentation, sem FormConfig.sections locais.",
          "safetyNotes": "Use para selecionar/baixar prioridade de campos e grupos publicados pelo schema; nao copie layout local para sections."
        },
        {
          "path": "inputs.layoutPolicy.detailSummary.includeFields",
          "category": "inputs",
          "valueKind": "array",
          "description": "Lista de campos canônicos do schema que devem entrar no resumo read-only compacto.",
          "safetyNotes": "Use nomes publicados pelo schema; nao invente campos locais nem materialize sections manuais para isso."
        },
        {
          "path": "inputs.layoutPolicy.detailSummary.excludeFields",
          "category": "inputs",
          "valueKind": "array",
          "description": "Lista de campos canônicos do schema que devem ficar fora do resumo read-only compacto."
        },
        {
          "path": "inputs.layoutPolicy.detailSummary.includeGroups",
          "category": "inputs",
          "valueKind": "array",
          "description": "Lista de grupos do schema que devem entrar no resumo read-only compacto."
        },
        {
          "path": "inputs.layoutPolicy.detailSummary.excludeGroups",
          "category": "inputs",
          "valueKind": "array",
          "description": "Lista de grupos do schema que devem ficar fora do resumo read-only compacto."
        },
        {
          "path": "inputs.layoutPolicy.detailSummary.includeRoles",
          "category": "inputs",
          "valueKind": "array",
          "description": "Lista de papeis semanticos de campo que devem entrar no resumo read-only compacto."
        },
        {
          "path": "inputs.layoutPolicy.detailSummary.excludeRoles",
          "category": "inputs",
          "valueKind": "array",
          "description": "Lista de papeis semanticos de campo que devem ficar fora do resumo read-only compacto."
        },
        {
          "path": "inputs.layoutPolicy.detailSummary.maxFields",
          "category": "inputs",
          "valueKind": "number",
          "description": "Limite maximo de campos materializados no primeiro painel compacto."
        },
        {
          "path": "inputs.layoutPolicy.detailSummary.fieldPriority",
          "category": "inputs",
          "valueKind": "object",
          "description": "Mapa campo -> prioridade para ordenar campos do resumo quando o schema publica candidatos suficientes."
        },
        {
          "path": "inputs.layoutPolicy.detailSummary.groupPriority",
          "category": "inputs",
          "valueKind": "object",
          "description": "Mapa grupo -> prioridade para ordenar grupos do resumo quando o schema publica agrupamento semantico."
        },
        {
          "path": "inputs.layoutPolicy.detailSummary.columns",
          "category": "inputs",
          "valueKind": "number",
          "description": "Quantidade base de colunas para distribuir campos de resumo schema-driven sem criar FormConfig.sections locais.",
          "safetyNotes": "Use apenas para densidade visual do resumo; labels, grupos, icones e formatos continuam vindo do schema."
        },
        {
          "path": "inputs.layoutPolicy.detailSummary.responsiveColumns",
          "category": "inputs",
          "valueKind": "object",
          "description": "Mapa de colunas por breakpoint xs/sm/md/lg/xl para detalhes read-only compactos em drawers, side sheets e desktop largo.",
          "safetyNotes": "Prefira valores simples como { lg: 3, md: 2, sm: 1 }; nao copie layout manual para sections."
        },
        {
          "path": "inputs.layoutPolicy.detailSummary.widthPrecedence",
          "category": "inputs",
          "valueKind": "enum",
          "allowedValues": [
            "schema",
            "summary"
          ],
          "description": "Define se larguras explicitas do schema ou a densidade do resumo controlam os spans no compactPresentation read-only.",
          "safetyNotes": "Default schema preserva x-ui.width; use summary apenas quando columns/responsiveColumns devem vencer larguras genericas do schema nessa surface."
        },
        {
          "path": "inputs.fieldIconPolicy",
          "category": "inputs",
          "valueKind": "enum",
          "allowedValues": [
            "all",
            "presentation-only",
            "none"
          ],
          "description": "Controla se icones prefix/suffix dos metadados aparecem em todos os modos, apenas apresentacao, ou nunca.",
          "safetyNotes": "Use presentation-only para telas corporativas densas quando os icones ajudam no detalhe read-only mas poluem controles editaveis."
        },
        {
          "path": "inputs.backConfig",
          "category": "inputs",
          "valueKind": "object",
          "description": "Configuracao de navegacao/retorno (BackConfig)."
        },
        {
          "path": "inputs.backConfig.strategy",
          "category": "inputs",
          "valueKind": "enum",
          "allowedValues": [
            "auto",
            "close",
            "navigate"
          ],
          "description": "Estrategia de retorno (auto/close/navigate)."
        },
        {
          "path": "inputs.backConfig.returnTo",
          "category": "inputs",
          "valueKind": "string",
          "description": "Rota para retornar quando strategy=navigate."
        },
        {
          "path": "inputs.backConfig.confirmOnDirty",
          "category": "inputs",
          "valueKind": "boolean",
          "description": "Solicita confirmacao ao sair com mudancas nao salvas."
        },
        {
          "path": "inputs.hooks",
          "category": "inputs",
          "valueKind": "object",
          "description": "Declaracoes de hooks fornecidas diretamente ao componente."
        },
        {
          "path": "inputs.hooks.beforeInit[]",
          "category": "hooks",
          "valueKind": "array",
          "description": "Hooks executados antes da inicializacao."
        },
        {
          "path": "inputs.hooks.afterInit[]",
          "category": "hooks",
          "valueKind": "array",
          "description": "Hooks executados apos a inicializacao."
        },
        {
          "path": "inputs.hooks.beforeValidate[]",
          "category": "hooks",
          "valueKind": "array",
          "description": "Hooks executados antes da validacao."
        },
        {
          "path": "inputs.hooks.afterValidate[]",
          "category": "hooks",
          "valueKind": "array",
          "description": "Hooks executados apos a validacao."
        },
        {
          "path": "inputs.hooks.beforeSubmit[]",
          "category": "hooks",
          "valueKind": "array",
          "description": "Hooks executados antes do submit."
        },
        {
          "path": "inputs.hooks.afterSubmit[]",
          "category": "hooks",
          "valueKind": "array",
          "description": "Hooks executados apos o submit."
        },
        {
          "path": "inputs.hooks.onError[]",
          "category": "hooks",
          "valueKind": "array",
          "description": "Hooks executados em erros de submit/validacao."
        },
        {
          "path": "inputs.removeEmptyContainersOnSave",
          "category": "inputs",
          "valueKind": "boolean",
          "description": "Remove containers vazios ao salvar configuracao."
        },
        {
          "path": "inputs.reactiveValidation",
          "category": "inputs",
          "valueKind": "boolean",
          "description": "Ativa validacao reativa (afterValidate em valueChanges)."
        },
        {
          "path": "inputs.reactiveValidationDebounceMs",
          "category": "inputs",
          "valueKind": "number",
          "description": "Debounce em ms para validacao reativa."
        },
        {
          "path": "inputs.notifyIfOutdated",
          "category": "inputs",
          "valueKind": "enum",
          "allowedValues": [
            "inline",
            "snackbar",
            "both",
            "none"
          ],
          "description": "Canal de notificacao para schema desatualizado."
        },
        {
          "path": "inputs.snoozeMs",
          "category": "inputs",
          "valueKind": "number",
          "description": "Duracao do snooze para alertas de schema."
        },
        {
          "path": "inputs.autoOpenSettingsOnOutdated",
          "category": "inputs",
          "valueKind": "boolean",
          "description": "Abre automaticamente o editor ao detectar schema desatualizado."
        },
        {
          "path": "inputs.readonlyModeGlobal",
          "category": "inputs",
          "valueKind": "boolean",
          "description": "Forca modo somente leitura global."
        },
        {
          "path": "inputs.disabledModeGlobal",
          "category": "inputs",
          "valueKind": "boolean",
          "description": "Forca modo desabilitado global."
        },
        {
          "path": "inputs.presentationModeGlobal",
          "category": "inputs",
          "valueKind": "boolean",
          "description": "Ativa modo de apresentacao global (somente view)."
        },
        {
          "path": "inputs.visibleGlobal",
          "category": "inputs",
          "valueKind": "boolean",
          "description": "Forca visibilidade global dos campos."
        },
        {
          "path": "inputs.customEndpoints",
          "category": "inputs",
          "valueKind": "object",
          "description": "Override de endpoints CRUD (EndpointConfig)."
        },
        {
          "path": "inputs.customEndpoints.getAll",
          "category": "inputs",
          "valueKind": "string",
          "description": "Endpoint customizado para listar registros."
        },
        {
          "path": "inputs.customEndpoints.getById",
          "category": "inputs",
          "valueKind": "string",
          "description": "Endpoint customizado para obter registro por ID."
        },
        {
          "path": "inputs.customEndpoints.create",
          "category": "inputs",
          "valueKind": "string",
          "description": "Endpoint customizado para criar registro."
        },
        {
          "path": "inputs.customEndpoints.update",
          "category": "inputs",
          "valueKind": "string",
          "description": "Endpoint customizado para atualizar registro."
        },
        {
          "path": "inputs.customEndpoints.delete",
          "category": "inputs",
          "valueKind": "string",
          "description": "Endpoint customizado para deletar registro."
        },
        {
          "path": "inputs.customEndpoints.filter",
          "category": "inputs",
          "valueKind": "string",
          "description": "Endpoint customizado para filtro."
        },
        {
          "path": "inputs.customEndpoints.schema",
          "category": "inputs",
          "valueKind": "string",
          "description": "Endpoint customizado para schemas."
        },
        {
          "path": "inputs.config.presentation",
          "category": "appearance",
          "valueKind": "object",
          "description": "Preferencias visuais persistidas no config."
        },
        {
          "path": "inputs.config.presentation.labelFontSize",
          "category": "appearance",
          "valueKind": "number",
          "description": "Tamanho da fonte do label (px)."
        },
        {
          "path": "inputs.config.presentation.valueFontSize",
          "category": "appearance",
          "valueKind": "number",
          "description": "Tamanho da fonte do valor (px)."
        },
        {
          "path": "inputs.config.presentation.labelPosition",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "above",
            "left"
          ],
          "description": "Posicionamento do label (above/left)."
        },
        {
          "path": "inputs.config.presentation.compact",
          "category": "appearance",
          "valueKind": "boolean",
          "description": "Modo compacto de apresentacao."
        },
        {
          "path": "inputs.config.presentation.density",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "comfortable",
            "cozy",
            "compact"
          ],
          "description": "Densidade visual global."
        },
        {
          "path": "inputs.config.presentation.labelWidth",
          "category": "appearance",
          "valueKind": "number",
          "description": "Largura do label (px)."
        },
        {
          "path": "inputs.config.presentation.labelAlign",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "start",
            "center",
            "end"
          ],
          "description": "Alinhamento do label."
        },
        {
          "path": "inputs.config.presentation.valueAlign",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "start",
            "center",
            "end"
          ],
          "description": "Alinhamento do valor."
        },
        {
          "path": "outputs.formSubmit",
          "category": "outputs",
          "valueKind": "object",
          "description": "Evento emitido no submit do formulario."
        },
        {
          "path": "outputs.formCancel",
          "category": "outputs",
          "valueKind": "object",
          "description": "Evento emitido ao cancelar."
        },
        {
          "path": "outputs.formReset",
          "category": "outputs",
          "valueKind": "object",
          "description": "Evento emitido ao resetar o formulario."
        },
        {
          "path": "outputs.configChange",
          "category": "outputs",
          "valueKind": "object",
          "description": "Evento emitido quando a configuracao muda."
        },
        {
          "path": "outputs.formReady",
          "category": "outputs",
          "valueKind": "object",
          "description": "Evento emitido quando o formulario esta pronto."
        },
        {
          "path": "outputs.valueChange",
          "category": "outputs",
          "valueKind": "object",
          "description": "Evento emitido quando o valor do formulario muda."
        },
        {
          "path": "outputs.syncCompleted",
          "category": "outputs",
          "valueKind": "object",
          "description": "Evento emitido ao completar sincronizacao com schema."
        },
        {
          "path": "outputs.initializationError",
          "category": "outputs",
          "valueKind": "object",
          "description": "Evento emitido quando ocorre erro na inicializacao."
        },
        {
          "path": "outputs.enableCustomizationChange",
          "category": "outputs",
          "valueKind": "object",
          "description": "Evento emitido quando o modo de customizacao muda."
        },
        {
          "path": "outputs.customAction",
          "category": "outputs",
          "valueKind": "object",
          "description": "Evento emitido ao disparar acao customizada."
        },
        {
          "path": "outputs.actionConfirmation",
          "category": "outputs",
          "valueKind": "object",
          "description": "Evento emitido quando acao requer confirmacao."
        },
        {
          "path": "outputs.schemaStatusChange",
          "category": "outputs",
          "valueKind": "object",
          "description": "Evento emitido quando o status do schema muda."
        }
      ],
      "componentCapabilityNotes": [
        "Este catalogo descreve inputs e outputs do componente.",
        "O objeto inputs.config segue o schema de FormConfig (veja form-ai-capabilities).",
        "inputs.config.presentation e uma extensao de runtime aplicada pelo componente.",
        "Preferir FormConfig (sections/fieldMetadata) em vez do layout legado (fieldsets).",
        "Use inputs.editorialContext apenas para override de contexto editorial do host; a precedencia final e runtime < config.editorialContext < host.",
        "rich content editorial hospedado pelo form pode ser renderizado em tres slots semanticos: before, beforeActions e after."
      ],
      "componentContext": {
        "version": "v1",
        "optionsByPath": {},
        "actionCatalog": [
          {
            "id": "inputs.formId.set",
            "intentExamples": [
              "form id",
              "formulario",
              "identificador"
            ],
            "patchTemplate": {
              "inputs": {
                "formId": "{{value}}"
              }
            }
          },
          {
            "id": "inputs.resourcePath.set",
            "intentExamples": [
              "resource path",
              "endpoint",
              "api"
            ],
            "patchTemplate": {
              "inputs": {
                "resourcePath": "{{value}}"
              }
            }
          },
          {
            "id": "inputs.schemaSource.set",
            "intentExamples": [
              "schema source",
              "schema",
              "resource",
              "filter"
            ],
            "patchTemplate": {
              "inputs": {
                "schemaSource": "{{value}}"
              }
            }
          },
          {
            "id": "inputs.enableCustomization.enable",
            "intentExamples": [
              "enable edit",
              "modo edicao",
              "edit layout"
            ],
            "patchTemplate": {
              "inputs": {
                "enableCustomization": true
              }
            }
          },
          {
            "id": "inputs.enableCustomization.disable",
            "intentExamples": [
              "disable edit",
              "somente leitura",
              "no edit"
            ],
            "patchTemplate": {
              "inputs": {
                "enableCustomization": false
              }
            }
          }
        ],
        "fieldResolvers": {},
        "hints": [
          "Dialog host: patches operate over inputs.*.",
          "schemaSource expects resource|filter."
        ]
      },
      "chunks": [
        {
          "chunkIndex": 0,
          "chunkKind": "summary",
          "content": "Component ID: praxis-filter-form-dialog-host\nSelector: praxis-filter-form-dialog-host\nFriendly Name: Praxis Filter Form Dialog Host\nDescription: Dialog host that renders PraxisFilterForm with dialog data.\nCategory: form\nLib/Package: @praxisui/table\nTags: dialog, filter, form, host\nInputs:\n  - data (FilterFormDialogData)\n  - data.formId (string)\n  - data.resourcePath (string)\n  - data.config (FormConfig)\n  - data.title (string)\n  - data.schemaLoading (boolean)\n  - data.initialDto (Record<string, unknown>)\n  - data.allowSaveTags (boolean)\n  - data.i18n ({ saveAsShortcut?: string })\n  - data.onSaveShortcut ((dto: Record<string, unknown>) => void)\n",
          "sourcePointer": "projects/praxis-table/src/lib/components/praxis-filter/praxis-filter-form-dialog-host.metadata.ts",
          "contentHash": "f226985a8b8ebef45de841a48de6cfbdd0f1686f6e3465d053f6ecae77956358",
          "sourceKind": "component_definition",
          "sourceId": "praxis-filter-form-dialog-host",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 1,
          "chunkKind": "capabilities",
          "content": "Schema Capability:\n  - Path: metadata.version\n    Category: metadata\n    Kind: string\n    Description: VersÃ£o da configuraÃ§Ã£o do formulÃ¡rio para controle de migraÃ§Ã£o.\n\nSchema Capability:\n  - Path: metadata.source\n    Category: metadata\n    Kind: enum\n    Description: Origem da configuraÃ§Ã£o do formulÃ¡rio.\n\nSchema Capability:\n  - Path: metadata.lastUpdated\n    Category: metadata\n    Kind: string\n    Description: Timestamp da Ãºltima atualizaÃ§Ã£o da configuraÃ§Ã£o (ISO-8601).\n\nSchema Capability:\n  - Path: metadata.schemaId\n    Category: metadata\n    Kind: string\n    Description: ID do schema de origem para reconciliaÃ§Ã£o no servidor.\n\nSchema Capability:\n  - Path: metadata.schemaContext\n    Category: metadata\n    Kind: object\n    Description: Contexto do schema usado para compor o formulÃ¡rio.\n\nSchema Capability:\n  - Path: metadata.schemaContext.path\n    Category: metadata\n    Kind: string\n    Description: Path do schema de origem.\n\nSchema Capability:\n  - Path: metadata.schemaContext.operation\n    Category: metadata\n    Kind: string\n    Description: OperaÃ§Ã£o do schema (ex.: \"get\", \"post\").\n\nSchema Capability:\n  - Path: metadata.schemaContext.schemaType\n    Category: metadata\n    Kind: enum\n    Description: Tipo do schema (response/request).\n\nSchema Capability:\n  - Path: metadata.schemaContext.internal\n    Category: metadata\n    Kind: boolean\n    Description: Indica se o schema Ã© interno.\n\nSchema Capability:\n  - Path: metadata.schemaContext.tenant\n    Category: metadata\n    Kind: string\n    Description: Tenant do schema (se aplicÃ¡vel).\n\nSchema Capability:\n  - Path: metadata.schemaContext.locale\n    Category: metadata\n    Kind: string\n    Description: Locale do schema (se aplicÃ¡vel).\n\nSchema Capability:\n  - Path: metadata.serverHash\n    Category: metadata\n    Kind: string\n    Description: Hash dos dados do servidor para detecÃ§Ã£o de mudanÃ§as.\n\nSchema Capability:\n  - Path: metadata.customizations\n    Category: metadata\n    Kind: array\n    Description: Log de customizaÃ§Ãµes manuais aplicadas ao formulÃ¡rio.\n\nSchema Capability:\n  - Path: fieldMetadata\n    Category: fields\n    Kind: array\n    Description: Array de metadados dos campos. Usado para referenciar a configuraÃ§Ã£o de campos.\n\nSchema Capability:\n  - Path: fieldMetadata[]\n    Category: fields\n    Kind: object\n    Description: Item de metadados do campo (FieldMetadata).\n\nSchema Capability:\n  - Path: helpPresentation\n    Category: appearance\n    Kind: object\n    Description: Politica visual do formulario para exibir hint/helpText dos campos sem alterar a semantica publicada pelos DTOs.\n\nSchema Capability:\n  - Path: helpPresentation.display\n    Category: appearance\n    Kind: enum\n    Description: Define se a ajuda semantica dos campos fica inline, em icone de ajuda, automatica por densidade, ou oculta visualmente.\n\nSchema Capability:\n  - Path: helpPresentation.inlineMaxLength\n    Category: appearance\n    Kind: number\n    Description: Tamanho maximo para manter ajuda inline quando display=\"auto\".\n\nSchema Capability:\n  - Path: helpPresentation.preferPopoverForControls\n    Category: appearance\n    Kind: array\n    Description: Tipos de controle que devem preferir icone de ajuda quando display=\"auto\", como toggle, checkbox ou select.\n\nSchema Capability:\n  - Path: editorialContext\n    Category: editorial\n    Kind: object\n    Description: Contexto editorial compartilhado entre os blocos hospedados antes/depois do formulario.\n\nSchema Capability:\n  - Path: editorialContext.[token]\n    Category: editorial\n    Kind: string\n    Description: Valor simples exposto no contexto editorial.\n\nSchema Capability:\n  - Path: formBlocksBefore\n    Category: editorial\n    Kind: object\n    Description: RichContentDocument renderizado antes do formulario.\n\nSchema Capability:\n  - Path: formBlocksBefore.kind\n    Category: editorial\n    Kind: string\n    Description: Kind canonico do documento rich content.\n\nSchema Capability:\n  - Path: formBlocksBefore.version\n    Category: editorial\n    Kind: string\n    Description: Versao do documento rich content editorial.\n\nSchema Capability:\n  - Path: formBlocksBefore.nodes\n    Category: editorial\n    Kind: array\n    Description: Lista de RichBlockNode renderizados antes do formulario.\n\nSchema Capability:\n  - Path: formBlocksBefore.nodes[]\n    Category: editorial\n    Kind: object\n    Description: RichBlockNode editorial hospedado antes do formulario.\n\nSchema Capability:\n  - Path: formBlocksBefore.context\n    Category: editorial\n    Kind: object\n    Description: Contexto base opcional do documento rich content hospedado antes do formulario.\n\nSchema Capability:\n  - Path: formBlocksBeforeActions\n    Category: editorial\n    Kind: object\n    Description: RichContentDocument renderizado depois das seÃ§Ãµes e antes da Ã¡rea principal de aÃ§Ãµes.\n\nSchema Capability:\n  - Path: formBlocksBeforeActions.kind\n    Category: editorial\n    Kind: string\n    Description: Kind canonico do documento rich content antes das aÃ§Ãµes.\n\nSchema Capability:\n  - Path: formBlocksBeforeActions.version\n    Category: editorial\n    Kind: string\n    Description: Versao do documento rich content antes das aÃ§Ãµes.\n\nSchema Capability:\n  - Path: formBlocksBeforeActions.nodes\n    Category: editorial\n    Kind: array\n    Description: Lista de RichBlockNode renderizados antes da Ã¡rea principal de aÃ§Ãµes.\n\nSchema Capability:\n  - Path: formBlocksBeforeActions.nodes[]\n    Category: editorial\n    Kind: object\n    Description: RichBlockNode editorial hospedado antes da Ã¡rea principal de aÃ§Ãµes.\n\nSchema Capability:\n  - Path: formBlocksBeforeActions.context\n    Category: editorial\n    Kind: object\n    Description: Contexto base opcional do documento rich content antes das aÃ§Ãµes.\n\nSchema Capability:\n  - Path: formBlocksAfter\n    Category: editorial\n    Kind: object\n    Description: RichContentDocument renderizado depois do formulario inteiro, incluindo a Ã¡rea principal de aÃ§Ãµes.\n\nSchema Capability:\n  - Path: formBlocksAfter.kind\n    Category: editorial\n    Kind: string\n    Description: Kind canonico do documento rich content de fechamento.\n\nSchema Capability:\n  - Path: formBlocksAfter.version\n    Category: editorial\n    Kind: string\n    Description: Versao do documento rich content de fechamento.\n\nSchema Capability:\n  - Path: formBlocksAfter.nodes\n    Category: editorial\n    Kind: array\n    Description: Lista de RichBlockNode renderizados depois do formulario.\n\nSchema Capability:\n  - Path: formBlocksAfter.nodes[]\n    Category: editorial\n    Kind: object\n    Description: RichBlockNode editorial hospedado depois do formulario.\n\nSchema Capability:\n  - Path: formBlocksAfter.context\n    Category: editorial\n    Kind: object\n    Description: Contexto base opcional do documento rich content de fechamento.\n\nSchema Capability:\n  - Path: sections[].id\n    Category: layout\n    Kind: string\n    Description: ID Ãºnico da seÃ§Ã£o.\n\nSchema Capability:\n  - Path: sections[].title\n    Category: layout\n    Kind: string\n    Description: TÃ­tulo exibido para cada seÃ§Ã£o do formulÃ¡rio.\n\nSchema Capability:\n  - Path: sections[].description\n    Category: layout\n    Kind: string\n    Description: DescriÃ§Ã£o auxiliar exibida abaixo do tÃ­tulo da seÃ§Ã£o.\n\nSchema Capability:\n  - Path: sections[].icon\n    Category: layout\n    Kind: string\n    Description: Nome do Ã­cone (Material Icons) para o cabeÃ§alho da seÃ§Ã£o.\n\nSchema Capability:\n  - Path: sections[].sectionHeader\n    Category: layout\n    Kind: object\n    Description: ConfiguraÃ§Ã£o rica do header visual da seÃ§Ã£o, com suporte a avatar por imagem, iniciais ou modo automÃ¡tico.\n\nSchema Capability:\n  - Path: sections[].sectionHeader.mode\n    Category: layout\n    Kind: enum\n    Description: EstratÃ©gia visual do header da seÃ§Ã£o.",
          "sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
          "contentHash": "057e50c9848029496159e1fb7db4433e6d9f441e64f6f711fdd3e10eacef19fa",
          "sourceKind": "component_definition",
          "sourceId": "praxis-filter-form-dialog-host",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 2,
          "chunkKind": "capabilities",
          "content": "Schema Capability:\n  - Path: sections[].sectionHeader.sourceField\n    Category: layout\n    Kind: string\n    Description: Campo do formulÃ¡rio usado como origem da imagem do avatar.\n\nSchema Capability:\n  - Path: sections[].sectionHeader.initialsSourceField\n    Category: layout\n    Kind: string\n    Description: Campo textual usado para derivar iniciais do avatar.\n\nSchema Capability:\n  - Path: sections[].sectionHeader.altField\n    Category: layout\n    Kind: string\n    Description: Campo textual usado como texto acessivel do avatar e como fallback textual para iniciais quando initialsSourceField nao estiver definido.\n\nSchema Capability:\n  - Path: sections[].sectionHeader.fallbackIcon\n    Category: layout\n    Kind: string\n    Description: Ãcone opcional usado quando o avatar dinÃ¢mico estiver vazio ou invÃ¡lido.\n\nSchema Capability:\n  - Path: sections[].sectionHeader.emptyState\n    Category: layout\n    Kind: enum\n    Description: Comportamento do header quando os campos de origem ainda nÃ£o possuem valor.\n\nSchema Capability:\n  - Path: sections[].sectionHeader.size\n    Category: layout\n    Kind: enum\n    Description: Tamanho semÃ¢ntico do avatar da seÃ§Ã£o, materializado pelo runtime via tokens.\n\nSchema Capability:\n  - Path: sections[].sectionHeader.initialsMaxLength\n    Category: layout\n    Kind: number\n    Description: MÃ¡ximo de letras exibidas no avatar textual.\n\nSchema Capability:\n  - Path: sections[].collapsible\n    Category: layout\n    Kind: boolean\n    Description: Define se a seÃ§Ã£o pode ser colapsada/expandida pelo usuÃ¡rio.\n\nSchema Capability:\n  - Path: sections[].collapsed\n    Category: layout\n    Kind: boolean\n    Description: Estado inicial da seÃ§Ã£o (colapsada/expandida) quando `collapsible` Ã© true.\n\nSchema Capability:\n  - Path: sections[].gapBottom\n    Category: layout\n    Kind: number\n    Description: EspaÃ§amento vertical (em px) apÃ³s a seÃ§Ã£o.\n\nSchema Capability:\n  - Path: sections[].titleGapBottom\n    Category: layout\n    Kind: number\n    Description: EspaÃ§amento vertical (em px) abaixo do tÃ­tulo da seÃ§Ã£o.\n\nSchema Capability:\n  - Path: sections[].descriptionGapBottom\n    Category: layout\n    Kind: number\n    Description: EspaÃ§amento vertical (em px) abaixo da descriÃ§Ã£o da seÃ§Ã£o.\n\nSchema Capability:\n  - Path: sections[].appearance\n    Category: appearance\n    Kind: enum\n    Description: Preset visual do container/cabeÃ§alho da seÃ§Ã£o.\n\nSchema Capability:\n  - Path: sections[].stepLabel\n    Category: content\n    Kind: string\n    Description: RÃ³tulo curto do passo exibido antes do tÃ­tulo da seÃ§Ã£o.\n\nSchema Capability:\n  - Path: sections[].titleStyle\n    Category: appearance\n    Kind: enum\n    Description: Preset de tipografia para o tÃ­tulo da seÃ§Ã£o.\n\nSchema Capability:\n  - Path: sections[].descriptionStyle\n    Category: appearance\n    Kind: enum\n    Description: Preset de tipografia para a descriÃ§Ã£o da seÃ§Ã£o.\n\nSchema Capability:\n  - Path: sections[].titleColor\n    Category: appearance\n    Kind: string\n    Description: Cor do tÃ­tulo da seÃ§Ã£o (CSS color ou token).\n\nSchema Capability:\n  - Path: sections[].descriptionColor\n    Category: appearance\n    Kind: string\n    Description: Cor da descriÃ§Ã£o da seÃ§Ã£o (CSS color ou token).\n\nSchema Capability:\n  - Path: sections[].headerAlign\n    Category: appearance\n    Kind: enum\n    Description: Alinhamento horizontal do conteÃºdo do cabeÃ§alho da seÃ§Ã£o.\n\nSchema Capability:\n  - Path: sections[].headerTooltip\n    Category: layout\n    Kind: string\n    Description: Texto de tooltip para o cabeÃ§alho da seÃ§Ã£o.\n\nSchema Capability:\n  - Path: sections[].headerActions\n    Category: layout\n    Kind: array\n    Description: Lista de aÃ§Ãµes iconogrÃ¡ficas renderizadas no canto direito do cabeÃ§alho da seÃ§Ã£o.\n\nSchema Capability:\n  - Path: sections[].headerActions[].id\n    Category: layout\n    Kind: string\n    Description: ID estÃ¡vel da aÃ§Ã£o de cabeÃ§alho da seÃ§Ã£o.\n\nSchema Capability:\n  - Path: sections[].headerActions[].label\n    Category: layout\n    Kind: string\n    Description: Label acessÃ­vel usada em tooltip e aria-label da aÃ§Ã£o.\n\nSchema Capability:\n  - Path: sections[].headerActions[].icon\n    Category: layout\n    Kind: string\n    Description: Ãcone renderizado na aÃ§Ã£o do cabeÃ§alho da seÃ§Ã£o.\n\nSchema Capability:\n  - Path: sections[].headerActions[].action\n    Category: layout\n    Kind: string\n    Description: Nome opcional da aÃ§Ã£o emitida no customAction; se ausente, o runtime usa o ID.\n\nSchema Capability:\n  - Path: sections[].headerActions[].tooltip\n    Category: layout\n    Kind: string\n    Description: Tooltip opcional da aÃ§Ã£o; se ausente, o runtime usa a label.\n\nSchema Capability:\n  - Path: sections[].headerActions[].color\n    Category: appearance\n    Kind: enum\n    Description: Tom visual da aÃ§Ã£o do cabeÃ§alho da seÃ§Ã£o.\n\nSchema Capability:\n  - Path: sections[].headerActions[].visible\n    Category: layout\n    Kind: boolean\n    Description: Controla a visibilidade da aÃ§Ã£o do cabeÃ§alho da seÃ§Ã£o.\n\nSchema Capability:\n  - Path: sections[].headerActions[].disabled\n    Category: layout\n    Kind: boolean\n    Description: Controla o estado desabilitado da aÃ§Ã£o do cabeÃ§alho da seÃ§Ã£o.\n\nSchema Capability:\n  - Path: sections[].className\n    Category: appearance\n    Kind: string\n    Description: Classe CSS aplicada ao container da seÃ§Ã£o.\n\nSchema Capability:\n  - Path: sections[].styles\n    Category: appearance\n    Kind: object\n    Description: Estilos inline aplicados ao container da seÃ§Ã£o.\n\nSchema Capability:\n  - Path: sections[].rows[].id\n    Category: layout\n    Kind: string\n    Description: ID Ãºnico da linha dentro de uma seÃ§Ã£o.\n\nSchema Capability:\n  - Path: sections[].rows[].title\n    Category: layout\n    Kind: string\n    Description: TÃ­tulo interno da linha (usado em editores e labels).\n\nSchema Capability:\n  - Path: sections[].rows[].gap\n    Category: layout\n    Kind: number\n    Description: EspaÃ§amento horizontal (em px) entre colunas nesta linha.\n\nSchema Capability:\n  - Path: sections[].rows[].rowGap\n    Category: layout\n    Kind: number\n    Description: EspaÃ§amento vertical (em px) apÃ³s esta linha.\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].id\n    Category: layout\n    Kind: string\n    Description: ID Ãºnico da coluna dentro de uma linha.\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].title\n    Category: layout\n    Kind: string\n    Description: TÃ­tulo interno da coluna (usado em editores e labels).\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].testId\n    Category: layout\n    Kind: string\n    Description: Atributo data-testid aplicado ao container da coluna.\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].fields\n    Category: layout\n    Kind: array\n    Description: ProjeÃ§Ã£o legada/derivada dos itens kind:\"field\" dentro da coluna.\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].fields[]\n    Category: layout\n    Kind: string\n    Description: Nome do campo dentro da projeÃ§Ã£o legada/derivada da coluna.\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].items\n    Category: layout\n    Kind: array\n    Description: Lista canÃ´nica ordenada de itens da coluna: campos e blocos visuais.\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].items[].kind\n    Category: layout\n    Kind: enum\n    Description: Tipo do item de layout da coluna.\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].items[].id\n    Category: layout\n    Kind: string\n    Description: ID estÃ¡vel do item de layout dentro do formulÃ¡rio.\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].items[].fieldName\n    Category: layout\n    Kind: string\n    Description: Nome do campo quando kind Ã© \"field\".",
          "sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
          "contentHash": "7bd1ce34bf36df588bb3fae515d854a24b59a8fd48a9d58b2f8ecaae51ea105b",
          "sourceKind": "component_definition",
          "sourceId": "praxis-filter-form-dialog-host",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 3,
          "chunkKind": "capabilities",
          "content": "Schema Capability:\n  - Path: sections[].rows[].columns[].items[].document\n    Category: editorial\n    Kind: object\n    Description: RichContentDocument do bloco visual quando kind Ã© \"richContent\".\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].items[].layout\n    Category: editorial\n    Kind: enum\n    Description: Modo de renderizaÃ§Ã£o do bloco visual richContent dentro da coluna.\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].items[].rootClassName\n    Category: appearance\n    Kind: string\n    Description: Classe CSS opcional aplicada ao bloco visual richContent.\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].span.xs\n    Category: layout\n    Kind: number\n    Description: Largura da coluna para telas extra pequenas (xs) no grid system (1-12).\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].span.sm\n    Category: layout\n    Kind: number\n    Description: Largura da coluna para telas pequenas (sm) no grid system (1-12).\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].span.md\n    Category: layout\n    Kind: number\n    Description: Largura da coluna para telas mÃ©dias (md) no grid system (1-12).\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].span.lg\n    Category: layout\n    Kind: number\n    Description: Largura da coluna para telas grandes (lg) no grid system (1-12).\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].span.xl\n    Category: layout\n    Kind: number\n    Description: Largura da coluna para telas extra grandes (xl) no grid system (1-12).\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].offset.xs\n    Category: layout\n    Kind: number\n    Description: Offset da coluna para telas extra pequenas (xs) no grid system (1-12).\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].offset.sm\n    Category: layout\n    Kind: number\n    Description: Offset da coluna para telas pequenas (sm) no grid system (1-12).\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].offset.md\n    Category: layout\n    Kind: number\n    Description: Offset da coluna para telas mÃ©dias (md) no grid system (1-12).\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].offset.lg\n    Category: layout\n    Kind: number\n    Description: Offset da coluna para telas grandes (lg) no grid system (1-12).\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].offset.xl\n    Category: layout\n    Kind: number\n    Description: Offset da coluna para telas extra grandes (xl) no grid system (1-12).\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].order.xs\n    Category: layout\n    Kind: number\n    Description: Ordem visual da coluna para telas extra pequenas (xs).\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].order.sm\n    Category: layout\n    Kind: number\n    Description: Ordem visual da coluna para telas pequenas (sm).\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].order.md\n    Category: layout\n    Kind: number\n    Description: Ordem visual da coluna para telas mÃ©dias (md).\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].order.lg\n    Category: layout\n    Kind: number\n    Description: Ordem visual da coluna para telas grandes (lg).\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].order.xl\n    Category: layout\n    Kind: number\n    Description: Ordem visual da coluna para telas extra grandes (xl).\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].hidden.xs\n    Category: layout\n    Kind: boolean\n    Description: Oculta a coluna para telas extra pequenas (xs).\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].hidden.sm\n    Category: layout\n    Kind: boolean\n    Description: Oculta a coluna para telas pequenas (sm).\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].hidden.md\n    Category: layout\n    Kind: boolean\n    Description: Oculta a coluna para telas mÃ©dias (md).\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].hidden.lg\n    Category: layout\n    Kind: boolean\n    Description: Oculta a coluna para telas grandes (lg).\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].hidden.xl\n    Category: layout\n    Kind: boolean\n    Description: Oculta a coluna para telas extra grandes (xl).\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].align\n    Category: layout\n    Kind: enum\n    Description: Alinhamento vertical do conteÃºdo da coluna.\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].padding\n    Category: layout\n    Kind: number\n    Description: Padding (em px) interno da coluna.\n\nSchema Capability:\n  - Path: sections[].rows[].columns[].className\n    Category: appearance\n    Kind: string\n    Description: Classe CSS aplicada Ã  coluna.\n\nSchema Capability:\n  - Path: actions.submit.id\n    Category: actions\n    Kind: string\n    Description: ID do botÃ£o de submissÃ£o.\n\nSchema Capability:\n  - Path: actions.submit.visible\n    Category: actions\n    Kind: boolean\n    Description: Visibilidade do botÃ£o de submissÃ£o.\n\nSchema Capability:\n  - Path: actions.submit.label\n    Category: actions\n    Kind: string\n    Description: RÃ³tulo do botÃ£o de submissÃ£o.\n\nSchema Capability:\n  - Path: actions.submit.icon\n    Category: actions\n    Kind: string\n    Description: Ãcone (Material Icons) para o botÃ£o de submissÃ£o.\n\nSchema Capability:\n  - Path: actions.submit.color\n    Category: actions\n    Kind: enum\n    Description: Cor do botÃ£o de submissÃ£o.\n\nSchema Capability:\n  - Path: actions.submit.variant\n    Category: actions\n    Kind: enum\n    Description: Variante visual do botÃ£o de submissÃ£o.\n\nSchema Capability:\n  - Path: actions.submit.size\n    Category: actions\n    Kind: enum\n    Description: Tamanho do botÃ£o de submissÃ£o.\n\nSchema Capability:\n  - Path: actions.submit.className\n    Category: actions\n    Kind: string\n    Description: Classe CSS aplicada ao botÃ£o de submissÃ£o.\n\nSchema Capability:\n  - Path: actions.submit.style\n    Category: actions\n    Kind: object\n    Description: Estilos inline aplicados ao botÃ£o de submissÃ£o.\n\nSchema Capability:\n  - Path: actions.submit.disabled\n    Category: actions\n    Kind: boolean\n    Description: Desabilita o botÃ£o de submissÃ£o.\n\nSchema Capability:\n  - Path: actions.submit.type\n    Category: actions\n    Kind: enum\n    Description: Tipo do botÃ£o de submissÃ£o.\n\nSchema Capability:\n  - Path: actions.submit.action\n    Category: actions\n    Kind: string\n    Description: Evento customizado disparado ao clicar.\n\nSchema Capability:\n  - Path: actions.submit.tooltip\n    Category: actions\n    Kind: string\n    Description: Tooltip exibido no botÃ£o de submissÃ£o.\n\nSchema Capability:\n  - Path: actions.submit.loading\n    Category: actions\n    Kind: boolean\n    Description: Exibe estado de carregamento no botÃ£o de submissÃ£o.\n\nSchema Capability:\n  - Path: actions.submit.shortcut\n    Category: actions\n    Kind: string\n    Description: Atalho de teclado (ex.: \"ctrl+s\") para o botÃ£o de submissÃ£o.\n\nSchema Capability:\n  - Path: actions.cancel.id\n    Category: actions\n    Kind: string\n    Description: ID do botÃ£o de cancelar.\n\nSchema Capability:\n  - Path: actions.cancel.visible\n    Category: actions\n    Kind: boolean\n    Description: Visibilidade do botÃ£o de cancelar.\n\nSchema Capability:\n  - Path: actions.cancel.label\n    Category: actions\n    Kind: string\n    Description: RÃ³tulo do botÃ£o de cancelar.\n\nSchema Capability:\n  - Path: actions.cancel.icon\n    Category: actions\n    Kind: string\n    Description: Ãcone (Material Icons) para o botÃ£o de cancelar.\n\nSchema Capability:\n  - Path: actions.cancel.color\n    Category: actions\n    Kind: enum\n    Description: Cor do botÃ£o de cancelar.\n\nSchema Capability:\n  - Path: actions.cancel.variant\n    Category: actions\n    Kind: enum\n    Description: Variante visual do botÃ£o de cancelar.\n\nSchema Capability:\n  - Path: actions.cancel.size\n    Category: actions\n    Kind: enum\n    Description: Tamanho do botÃ£o de cancelar.",
          "sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
          "contentHash": "f34d296ee57e962539a19f213748c29fb83ce6cfa25db7beb9506f80822ca00e",
          "sourceKind": "component_definition",
          "sourceId": "praxis-filter-form-dialog-host",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 4,
          "chunkKind": "capabilities",
          "content": "Schema Capability:\n  - Path: actions.cancel.className\n    Category: actions\n    Kind: string\n    Description: Classe CSS aplicada ao botÃ£o de cancelar.\n\nSchema Capability:\n  - Path: actions.cancel.style\n    Category: actions\n    Kind: object\n    Description: Estilos inline aplicados ao botÃ£o de cancelar.\n\nSchema Capability:\n  - Path: actions.cancel.disabled\n    Category: actions\n    Kind: boolean\n    Description: Desabilita o botÃ£o de cancelar.\n\nSchema Capability:\n  - Path: actions.cancel.type\n    Category: actions\n    Kind: enum\n    Description: Tipo do botÃ£o de cancelar.\n\nSchema Capability:\n  - Path: actions.cancel.action\n    Category: actions\n    Kind: string\n    Description: Evento customizado disparado ao clicar.\n\nSchema Capability:\n  - Path: actions.cancel.tooltip\n    Category: actions\n    Kind: string\n    Description: Tooltip exibido no botÃ£o de cancelar.\n\nSchema Capability:\n  - Path: actions.cancel.loading\n    Category: actions\n    Kind: boolean\n    Description: Exibe estado de carregamento no botÃ£o de cancelar.\n\nSchema Capability:\n  - Path: actions.cancel.shortcut\n    Category: actions\n    Kind: string\n    Description: Atalho de teclado (ex.: \"esc\") para o botÃ£o de cancelar.\n\nSchema Capability:\n  - Path: actions.reset.id\n    Category: actions\n    Kind: string\n    Description: ID do botÃ£o de reset.\n\nSchema Capability:\n  - Path: actions.reset.visible\n    Category: actions\n    Kind: boolean\n    Description: Visibilidade do botÃ£o de reset.\n\nSchema Capability:\n  - Path: actions.reset.label\n    Category: actions\n    Kind: string\n    Description: RÃ³tulo do botÃ£o de reset.\n\nSchema Capability:\n  - Path: actions.reset.icon\n    Category: actions\n    Kind: string\n    Description: Ãcone (Material Icons) para o botÃ£o de reset.\n\nSchema Capability:\n  - Path: actions.reset.color\n    Category: actions\n    Kind: enum\n    Description: Cor do botÃ£o de reset.\n\nSchema Capability:\n  - Path: actions.reset.variant\n    Category: actions\n    Kind: enum\n    Description: Variante visual do botÃ£o de reset.\n\nSchema Capability:\n  - Path: actions.reset.size\n    Category: actions\n    Kind: enum\n    Description: Tamanho do botÃ£o de reset.\n\nSchema Capability:\n  - Path: actions.reset.className\n    Category: actions\n    Kind: string\n    Description: Classe CSS aplicada ao botÃ£o de reset.\n\nSchema Capability:\n  - Path: actions.reset.style\n    Category: actions\n    Kind: object\n    Description: Estilos inline aplicados ao botÃ£o de reset.\n\nSchema Capability:\n  - Path: actions.reset.disabled\n    Category: actions\n    Kind: boolean\n    Description: Desabilita o botÃ£o de reset.\n\nSchema Capability:\n  - Path: actions.reset.type\n    Category: actions\n    Kind: enum\n    Description: Tipo do botÃ£o de reset.\n\nSchema Capability:\n  - Path: actions.reset.action\n    Category: actions\n    Kind: string\n    Description: Evento customizado disparado ao clicar.\n\nSchema Capability:\n  - Path: actions.reset.tooltip\n    Category: actions\n    Kind: string\n    Description: Tooltip exibido no botÃ£o de reset.\n\nSchema Capability:\n  - Path: actions.reset.loading\n    Category: actions\n    Kind: boolean\n    Description: Exibe estado de carregamento no botÃ£o de reset.\n\nSchema Capability:\n  - Path: actions.reset.shortcut\n    Category: actions\n    Kind: string\n    Description: Atalho de teclado (ex.: \"ctrl+shift+r\") para o botÃ£o de reset.\n\nSchema Capability:\n  - Path: actions.custom\n    Category: actions\n    Kind: array\n    Description: Lista de botÃµes de aÃ§Ã£o customizados.\n\nSchema Capability:\n  - Path: actions.custom[]\n    Category: actions\n    Kind: object\n    Description: ConfiguraÃ§Ã£o de um botÃ£o de aÃ§Ã£o customizado.\n\nSchema Capability:\n  - Path: actions.custom[].id\n    Category: actions\n    Kind: string\n    Description: ID da aÃ§Ã£o customizada.\n\nSchema Capability:\n  - Path: actions.custom[].visible\n    Category: actions\n    Kind: boolean\n    Description: Visibilidade da aÃ§Ã£o customizada.\n\nSchema Capability:\n  - Path: actions.custom[].label\n    Category: actions\n    Kind: string\n    Description: RÃ³tulo da aÃ§Ã£o customizada.\n\nSchema Capability:\n  - Path: actions.custom[].icon\n    Category: actions\n    Kind: string\n    Description: Ãcone (Material Icons) para a aÃ§Ã£o customizada.\n\nSchema Capability:\n  - Path: actions.custom[].color\n    Category: actions\n    Kind: enum\n    Description: Cor da aÃ§Ã£o customizada.\n\nSchema Capability:\n  - Path: actions.custom[].variant\n    Category: actions\n    Kind: enum\n    Description: Variante visual da aÃ§Ã£o customizada.\n\nSchema Capability:\n  - Path: actions.custom[].size\n    Category: actions\n    Kind: enum\n    Description: Tamanho da aÃ§Ã£o customizada.\n\nSchema Capability:\n  - Path: actions.custom[].className\n    Category: actions\n    Kind: string\n    Description: Classe CSS aplicada Ã  aÃ§Ã£o customizada.\n\nSchema Capability:\n  - Path: actions.custom[].style\n    Category: actions\n    Kind: object\n    Description: Estilos inline aplicados Ã  aÃ§Ã£o customizada.\n\nSchema Capability:\n  - Path: actions.custom[].disabled\n    Category: actions\n    Kind: boolean\n    Description: Desabilita a aÃ§Ã£o customizada.\n\nSchema Capability:\n  - Path: actions.custom[].type\n    Category: actions\n    Kind: enum\n    Description: Tipo do botÃ£o da aÃ§Ã£o customizada.\n\nSchema Capability:\n  - Path: actions.custom[].action\n    Category: actions\n    Kind: string\n    Description: Evento customizado disparado ao clicar.\n\nSchema Capability:\n  - Path: actions.custom[].tooltip\n    Category: actions\n    Kind: string\n    Description: Tooltip exibido na aÃ§Ã£o customizada.\n\nSchema Capability:\n  - Path: actions.custom[].loading\n    Category: actions\n    Kind: boolean\n    Description: Exibe estado de carregamento na aÃ§Ã£o customizada.\n\nSchema Capability:\n  - Path: actions.custom[].shortcut\n    Category: actions\n    Kind: string\n    Description: Atalho de teclado para a aÃ§Ã£o customizada.\n\nSchema Capability:\n  - Path: actions.position\n    Category: layout\n    Kind: enum\n    Description: Posicionamento horizontal da barra de aÃ§Ãµes.\n\nSchema Capability:\n  - Path: actions.orientation\n    Category: layout\n    Kind: enum\n    Description: OrientaÃ§Ã£o dos botÃµes dentro da barra de aÃ§Ãµes (horizontal/vertical).\n\nSchema Capability:\n  - Path: actions.spacing\n    Category: layout\n    Kind: enum\n    Description: EspaÃ§amento entre os botÃµes na barra de aÃ§Ãµes.\n\nSchema Capability:\n  - Path: actions.sticky\n    Category: layout\n    Kind: boolean\n    Description: Define se a barra de aÃ§Ãµes deve permanecer visÃ­vel ao rolar a pÃ¡gina.\n\nSchema Capability:\n  - Path: actions.divider\n    Category: layout\n    Kind: boolean\n    Description: Exibe um divisor superior acima da barra de aÃ§Ãµes.\n\nSchema Capability:\n  - Path: actions.placement\n    Category: layout\n    Kind: enum\n    Description: LocalizaÃ§Ã£o estrutural da barra de aÃ§Ãµes no layout.\n\nSchema Capability:\n  - Path: actions.mobile.position\n    Category: layout\n    Kind: enum\n    Description: Posicionamento da barra de aÃ§Ãµes em dispositivos mÃ³veis.\n\nSchema Capability:\n  - Path: actions.mobile.orientation\n    Category: layout\n    Kind: enum\n    Description: OrientaÃ§Ã£o dos botÃµes em dispositivos mÃ³veis.\n\nSchema Capability:\n  - Path: actions.mobile.collapseToMenu\n    Category: behavior\n    Kind: boolean\n    Description: Em mobile, agrupa aÃ§Ãµes em um menu (se houver muitas).\n\nSchema Capability:\n  - Path: actions.containerClassName\n    Category: appearance\n    Kind: string\n    Description: Classe CSS aplicada ao container da barra de aÃ§Ãµes.\n\nSchema Capability:\n  - Path: actions.containerStyles\n    Category: appearance\n    Kind: object\n    Description: Estilos inline aplicados ao container da barra de aÃ§Ãµes.",
          "sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
          "contentHash": "9cfad48adaa90e88eb8231e6c56ea92199382bde6a062c94b11cc802f209516a",
          "sourceKind": "component_definition",
          "sourceId": "praxis-filter-form-dialog-host",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 5,
          "chunkKind": "capabilities",
          "content": "Schema Capability:\n  - Path: actions.showSaveButton\n    Category: actions\n    Kind: boolean\n    Description: Legacy: controla visibilidade do botÃ£o de submit.\n\nSchema Capability:\n  - Path: actions.submitButtonLabel\n    Category: actions\n    Kind: string\n    Description: Legacy: rÃ³tulo do botÃ£o de submit.\n\nSchema Capability:\n  - Path: actions.showCancelButton\n    Category: actions\n    Kind: boolean\n    Description: Legacy: controla visibilidade do botÃ£o de cancel.\n\nSchema Capability:\n  - Path: actions.cancelButtonLabel\n    Category: actions\n    Kind: string\n    Description: Legacy: rÃ³tulo do botÃ£o de cancel.\n\nSchema Capability:\n  - Path: actions.showResetButton\n    Category: actions\n    Kind: boolean\n    Description: Legacy: controla visibilidade do botÃ£o de reset.\n\nSchema Capability:\n  - Path: actions.resetButtonLabel\n    Category: actions\n    Kind: string\n    Description: Legacy: rÃ³tulo do botÃ£o de reset.\n\nSchema Capability:\n  - Path: behavior.confirmOnUnsavedChanges\n    Category: behavior\n    Kind: boolean\n    Description: Exibe um alerta se o usuÃ¡rio tentar sair com mudanÃ§as nÃ£o salvas.\n\nSchema Capability:\n  - Path: behavior.trackHistory\n    Category: behavior\n    Kind: boolean\n    Description: Habilita rastreamento de histÃ³rico para desfazer/refazer (se suportado).\n\nSchema Capability:\n  - Path: behavior.focusFirstError\n    Category: behavior\n    Kind: boolean\n    Description: Ao submeter, foca automaticamente no primeiro campo com erro.\n\nSchema Capability:\n  - Path: behavior.scrollToErrors\n    Category: behavior\n    Kind: boolean\n    Description: Ao submeter, rola a pÃ¡gina para exibir o primeiro erro.\n\nSchema Capability:\n  - Path: behavior.clearAfterSave\n    Category: behavior\n    Kind: boolean\n    Description: Limpa o formulÃ¡rio apÃ³s uma submissÃ£o bem-sucedida.\n\nSchema Capability:\n  - Path: behavior.redirectAfterSave\n    Category: behavior\n    Kind: string\n    Description: URL para redirecionar apÃ³s uma submissÃ£o bem-sucedida.\n\nSchema Capability:\n  - Path: behavior.reactiveValidation\n    Category: validation\n    Kind: boolean\n    Description: Ativa validaÃ§Ã£o reativa (em tempo real) em `valueChanges`.\n\nSchema Capability:\n  - Path: behavior.reactiveValidationDebounceMs\n    Category: validation\n    Kind: number\n    Description: Debounce (em ms) para a validaÃ§Ã£o reativa.\n\nSchema Capability:\n  - Path: api.saveEndpoint\n    Category: api\n    Kind: string\n    Description: URL para onde os dados do formulÃ¡rio serÃ£o enviados (POST/PUT/PATCH).\n\nSchema Capability:\n  - Path: api.loadEndpoint\n    Category: api\n    Kind: string\n    Description: URL para buscar dados para popular o formulÃ¡rio (GET).\n\nSchema Capability:\n  - Path: api.saveMethod\n    Category: api\n    Kind: enum\n    Description: MÃ©todo HTTP para a requisiÃ§Ã£o de salvar.\n\nSchema Capability:\n  - Path: api.timeout\n    Category: api\n    Kind: number\n    Description: Tempo limite (em ms) para as requisiÃ§Ãµes API.\n\nSchema Capability:\n  - Path: api.headers\n    Category: api\n    Kind: object\n    Description: CabeÃ§alhos HTTP personalizados para as requisiÃ§Ãµes API.\n\nSchema Capability:\n  - Path: api.idField\n    Category: api\n    Kind: string\n    Description: Nome do campo que representa o ID do registro no payload (para PUT/PATCH).\n\nSchema Capability:\n  - Path: api.beforeSave\n    Category: hooks\n    Kind: expression\n    Description: Hook para prÃ©-processamento de dados antes de enviar para a API.\n\nSchema Capability:\n  - Path: api.afterLoad\n    Category: hooks\n    Kind: expression\n    Description: Hook para pÃ³s-processamento de dados apÃ³s carregar da API.\n\nSchema Capability:\n  - Path: messages.updateRegistrySuccess\n    Category: messages\n    Kind: string\n    Description: Mensagem de sucesso apÃ³s atualizaÃ§Ã£o de registro.\n\nSchema Capability:\n  - Path: messages.createRegistrySuccess\n    Category: messages\n    Kind: string\n    Description: Mensagem de sucesso apÃ³s criaÃ§Ã£o de registro.\n\nSchema Capability:\n  - Path: messages.updateRegistryError\n    Category: messages\n    Kind: string\n    Description: Mensagem de erro apÃ³s atualizaÃ§Ã£o de registro.\n\nSchema Capability:\n  - Path: messages.createRegistryError\n    Category: messages\n    Kind: string\n    Description: Mensagem de erro apÃ³s criaÃ§Ã£o de registro.\n\nSchema Capability:\n  - Path: messages.confirmations.submit\n    Category: messages\n    Kind: string\n    Description: Mensagem de confirmaÃ§Ã£o antes de submeter o formulÃ¡rio.\n\nSchema Capability:\n  - Path: messages.confirmations.cancel\n    Category: messages\n    Kind: string\n    Description: Mensagem de confirmaÃ§Ã£o antes de cancelar.\n\nSchema Capability:\n  - Path: messages.confirmations.reset\n    Category: messages\n    Kind: string\n    Description: Mensagem de confirmaÃ§Ã£o antes de resetar o formulÃ¡rio.\n\nSchema Capability:\n  - Path: messages.confirmations.[actionId]\n    Category: messages\n    Kind: string\n    Description: Mensagem de confirmaÃ§Ã£o para aÃ§Ãµes customizadas. Substitua `[actionId]` pelo ID da aÃ§Ã£o.\n\nSchema Capability:\n  - Path: messages.customActions.[actionId]\n    Category: messages\n    Kind: object\n    Description: Mensagens da aÃ§Ã£o customizada (success/error/confirmation). Substitua `[actionId]` pelo ID da aÃ§Ã£o.\n\nSchema Capability:\n  - Path: messages.customActions.[actionId].success\n    Category: messages\n    Kind: string\n    Description: Mensagem de sucesso para a aÃ§Ã£o customizada.\n\nSchema Capability:\n  - Path: messages.customActions.[actionId].error\n    Category: messages\n    Kind: string\n    Description: Mensagem de erro para a aÃ§Ã£o customizada.\n\nSchema Capability:\n  - Path: messages.customActions.[actionId].confirmation\n    Category: messages\n    Kind: string\n    Description: Mensagem de confirmaÃ§Ã£o para a aÃ§Ã£o customizada.\n\nSchema Capability:\n  - Path: messages.loading.submit\n    Category: messages\n    Kind: string\n    Description: Mensagem exibida durante o envio do formulÃ¡rio.\n\nSchema Capability:\n  - Path: messages.loading.cancel\n    Category: messages\n    Kind: string\n    Description: Mensagem exibida durante o cancelamento.\n\nSchema Capability:\n  - Path: messages.loading.reset\n    Category: messages\n    Kind: string\n    Description: Mensagem exibida durante o reset do formulÃ¡rio.\n\nSchema Capability:\n  - Path: messages.loading.[actionId]\n    Category: messages\n    Kind: string\n    Description: Mensagem exibida durante a execuÃ§Ã£o de uma aÃ§Ã£o customizada. Substitua `[actionId]` pelo ID da aÃ§Ã£o.\n\nSchema Capability:\n  - Path: formRules[].id\n    Category: rules\n    Kind: string\n    Description: ID Ãºnico da regra de layout.\n\nSchema Capability:\n  - Path: formRules[].name\n    Category: rules\n    Kind: string\n    Description: Nome amigÃ¡vel da regra de layout.\n\nSchema Capability:\n  - Path: formRules[].description\n    Category: rules\n    Kind: string\n    Description: DescriÃ§Ã£o da regra de layout para documentaÃ§Ã£o.\n\nSchema Capability:\n  - Path: formRules[].metadata.origin\n    Category: rules\n    Kind: enum\n    Description: Origem da regra sugerida pela IA.\n\nSchema Capability:\n  - Path: formRules[].metadata.reviewStatus\n    Category: rules\n    Kind: enum\n    Description: Status de revisÃ£o humana da regra sugerida pela IA.\n\nSchema Capability:\n  - Path: formRules[].targetType\n    Category: rules\n    Kind: enum\n    Description: Tipo do elemento alvo da regra (campo, seÃ§Ã£o, aÃ§Ã£o, linha, coluna ou bloco visual).\n\nSchema Capability:\n  - Path: formRules[].context\n    Category: rules\n    Kind: enum\n    Description: Contexto legado da regra (quando properties nÃ£o forem informadas).\n\nSchema Capability:\n  - Path: formRules[].targets\n    Category: rules\n    Kind: array\n    Description: Lista de IDs dos elementos alvo da regra. O tipo do ID depende de `targetType`.",
          "sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
          "contentHash": "b9d96b46a7eec674ad9cd481a6765bab68a58d01ecaf6114efa20d70502d0104",
          "sourceKind": "component_definition",
          "sourceId": "praxis-filter-form-dialog-host",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 6,
          "chunkKind": "capabilities",
          "content": "Schema Capability:\n  - Path: formRules[].targets[]\n    Category: rules\n    Kind: string\n    Description: ID do alvo da regra.\n\nSchema Capability:\n  - Path: formRules[].targetFields\n    Category: rules\n    Kind: array\n    Description: Alias legado para alvos de campo.\n\nSchema Capability:\n  - Path: formRules[].targetFields[]\n    Category: rules\n    Kind: string\n    Description: ID do campo alvo (alias legado).\n\nSchema Capability:\n  - Path: formRules[].effect.condition\n    Category: rules\n    Kind: expression\n    Description: Condicao canonica da regra, expressa em Json Logic.\n\nSchema Capability:\n  - Path: formCommandRules\n    Category: rules\n    Kind: array\n    Description: Regras condicionais de comando avaliadas depois que formRules estabilizam valores calculados.\n\nSchema Capability:\n  - Path: formCommandRules[].condition\n    Category: rules\n    Kind: expression\n    Description: Condicao Json Logic avaliada sobre formData estabilizado, incluindo field values calculados.\n\nSchema Capability:\n  - Path: formCommandRules[].effects[].kind\n    Category: rules\n    Kind: enum\n    Description: Tipo do efeito de comando. O primeiro corte suporta apenas global-action.\n\nSchema Capability:\n  - Path: formCommandRules[].effects[].globalAction\n    Category: rules\n    Kind: object\n    Description: GlobalActionRef estruturado executado por GlobalActionService.executeRef quando a regra entra na condicao.\n\nSchema Capability:\n  - Path: formCommandRules[].policy\n    Category: rules\n    Kind: object\n    Description: Politica operacional do comando: trigger, distinct, distinctBy, debounceMs, errorPolicy e runOnInitialEvaluation.\n\nSchema Capability:\n  - Path: formRulesState\n    Category: metadata\n    Kind: object\n    Description: Estado interno do builder visual de regras, gerado apenas para round-trip do editor.\n\nSchema Capability:\n  - Path: hooks\n    Category: hooks\n    Kind: object\n    Description: DeclaraÃ§Ãµes de hooks por estÃ¡gio do ciclo de vida do formulÃ¡rio.\n\nSchema Capability:\n  - Path: hooks.beforeInit[]\n    Category: hooks\n    Kind: array\n    Description: DeclaraÃ§Ãµes de hooks para beforeInit.\n\nSchema Capability:\n  - Path: hooks.beforeInit[].id\n    Category: hooks\n    Kind: string\n    Description: ID do hook (registrado no host).\n\nSchema Capability:\n  - Path: hooks.beforeInit[].priority\n    Category: hooks\n    Kind: number\n    Description: Prioridade do hook (maior executa primeiro).\n\nSchema Capability:\n  - Path: hooks.beforeInit[].timeoutMs\n    Category: hooks\n    Kind: number\n    Description: Timeout em ms para a execucao do hook.\n\nSchema Capability:\n  - Path: hooks.beforeInit[].args\n    Category: hooks\n    Kind: object\n    Description: Argumentos adicionais passados ao hook.\n\nSchema Capability:\n  - Path: hooks.afterInit[]\n    Category: hooks\n    Kind: array\n    Description: DeclaraÃ§Ãµes de hooks para afterInit.\n\nSchema Capability:\n  - Path: hooks.afterInit[].id\n    Category: hooks\n    Kind: string\n    Description: ID do hook (registrado no host).\n\nSchema Capability:\n  - Path: hooks.afterInit[].priority\n    Category: hooks\n    Kind: number\n    Description: Prioridade do hook (maior executa primeiro).\n\nSchema Capability:\n  - Path: hooks.afterInit[].timeoutMs\n    Category: hooks\n    Kind: number\n    Description: Timeout em ms para a execucao do hook.\n\nSchema Capability:\n  - Path: hooks.afterInit[].args\n    Category: hooks\n    Kind: object\n    Description: Argumentos adicionais passados ao hook.\n\nSchema Capability:\n  - Path: hooks.beforeValidate[]\n    Category: hooks\n    Kind: array\n    Description: DeclaraÃ§Ãµes de hooks para beforeValidate.\n\nSchema Capability:\n  - Path: hooks.beforeValidate[].id\n    Category: hooks\n    Kind: string\n    Description: ID do hook (registrado no host).\n\nSchema Capability:\n  - Path: hooks.beforeValidate[].priority\n    Category: hooks\n    Kind: number\n    Description: Prioridade do hook (maior executa primeiro).\n\nSchema Capability:\n  - Path: hooks.beforeValidate[].timeoutMs\n    Category: hooks\n    Kind: number\n    Description: Timeout em ms para a execucao do hook.\n\nSchema Capability:\n  - Path: hooks.beforeValidate[].args\n    Category: hooks\n    Kind: object\n    Description: Argumentos adicionais passados ao hook.\n\nSchema Capability:\n  - Path: hooks.afterValidate[]\n    Category: hooks\n    Kind: array\n    Description: DeclaraÃ§Ãµes de hooks para afterValidate.\n\nSchema Capability:\n  - Path: hooks.afterValidate[].id\n    Category: hooks\n    Kind: string\n    Description: ID do hook (registrado no host).\n\nSchema Capability:\n  - Path: hooks.afterValidate[].priority\n    Category: hooks\n    Kind: number\n    Description: Prioridade do hook (maior executa primeiro).\n\nSchema Capability:\n  - Path: hooks.afterValidate[].timeoutMs\n    Category: hooks\n    Kind: number\n    Description: Timeout em ms para a execucao do hook.\n\nSchema Capability:\n  - Path: hooks.afterValidate[].args\n    Category: hooks\n    Kind: object\n    Description: Argumentos adicionais passados ao hook.\n\nSchema Capability:\n  - Path: hooks.beforeSubmit[]\n    Category: hooks\n    Kind: array\n    Description: DeclaraÃ§Ãµes de hooks para beforeSubmit.\n\nSchema Capability:\n  - Path: hooks.beforeSubmit[].id\n    Category: hooks\n    Kind: string\n    Description: ID do hook (registrado no host).\n\nSchema Capability:\n  - Path: hooks.beforeSubmit[].priority\n    Category: hooks\n    Kind: number\n    Description: Prioridade do hook (maior executa primeiro).\n\nSchema Capability:\n  - Path: hooks.beforeSubmit[].timeoutMs\n    Category: hooks\n    Kind: number\n    Description: Timeout em ms para a execucao do hook.\n\nSchema Capability:\n  - Path: hooks.beforeSubmit[].args\n    Category: hooks\n    Kind: object\n    Description: Argumentos adicionais passados ao hook.\n\nSchema Capability:\n  - Path: hooks.afterSubmit[]\n    Category: hooks\n    Kind: array\n    Description: DeclaraÃ§Ãµes de hooks para afterSubmit.\n\nSchema Capability:\n  - Path: hooks.afterSubmit[].id\n    Category: hooks\n    Kind: string\n    Description: ID do hook (registrado no host).\n\nSchema Capability:\n  - Path: hooks.afterSubmit[].priority\n    Category: hooks\n    Kind: number\n    Description: Prioridade do hook (maior executa primeiro).\n\nSchema Capability:\n  - Path: hooks.afterSubmit[].timeoutMs\n    Category: hooks\n    Kind: number\n    Description: Timeout em ms para a execucao do hook.\n\nSchema Capability:\n  - Path: hooks.afterSubmit[].args\n    Category: hooks\n    Kind: object\n    Description: Argumentos adicionais passados ao hook.\n\nSchema Capability:\n  - Path: hooks.onError[]\n    Category: hooks\n    Kind: array\n    Description: DeclaraÃ§Ãµes de hooks para onError.\n\nSchema Capability:\n  - Path: hooks.onError[].id\n    Category: hooks\n    Kind: string\n    Description: ID do hook (registrado no host).\n\nSchema Capability:\n  - Path: hooks.onError[].priority\n    Category: hooks\n    Kind: number\n    Description: Prioridade do hook (maior executa primeiro).\n\nSchema Capability:\n  - Path: hooks.onError[].timeoutMs\n    Category: hooks\n    Kind: number\n    Description: Timeout em ms para a execucao do hook.\n\nSchema Capability:\n  - Path: hooks.onError[].args\n    Category: hooks\n    Kind: object\n    Description: Argumentos adicionais passados ao hook.\n\nSchema Capability:\n  - Path: hints.dataModes.create\n    Category: form_config\n    Kind: string\n    Description: Dica para o modo de criaÃ§Ã£o de dados.\n\nSchema Capability:\n  - Path: hints.dataModes.edit\n    Category: form_config\n    Kind: string\n    Description: Dica para o modo de ediÃ§Ã£o de dados.\n\nSchema Capability:\n  - Path: hints.dataModes.view\n    Category: form_config\n    Kind: string\n    Description: Dica para o modo de visualizaÃ§Ã£o de dados.\n\nSchema Capability:\n  - Path: hints.uiModes.presentation\n    Category: form_config\n    Kind: string\n    Description: Dica para o modo de apresentaÃ§Ã£o da UI.",
          "sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
          "contentHash": "0d30c9ed381b5a69050e4922828ae287af246f0a927e7925cf1b0aa68e33fbb5",
          "sourceKind": "component_definition",
          "sourceId": "praxis-filter-form-dialog-host",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 7,
          "chunkKind": "capabilities",
          "content": "Schema Capability:\n  - Path: hints.uiModes.readonly\n    Category: form_config\n    Kind: string\n    Description: Dica para o modo de somente leitura da UI.\n\nSchema Capability:\n  - Path: hints.uiModes.disabled\n    Category: form_config\n    Kind: string\n    Description: Dica para o modo desabilitado da UI.\n\nSchema Capability:\n  - Path: hints.uiModes.visible\n    Category: form_config\n    Kind: string\n    Description: Dica para o modo de visibilidade da UI.\n\nSchema Capability:\n  - Path: fieldMetadata[].id\n    Category: identity\n    Kind: string\n    Description: Identificador unico da instancia do componente.\n\nSchema Capability:\n  - Path: fieldMetadata[].version\n    Category: identity\n    Kind: string\n    Description: Versao do schema de metadata (migracao).\n\nSchema Capability:\n  - Path: fieldMetadata[].context\n    Category: identity\n    Kind: enum\n    Description: Contexto de uso do componente (form/filter/table/dialog/standalone).\n\nSchema Capability:\n  - Path: fieldMetadata[].createdAt\n    Category: misc\n    Kind: string\n    Description: Timestamp de criacao (ISO).\n\nSchema Capability:\n  - Path: fieldMetadata[].updatedAt\n    Category: misc\n    Kind: string\n    Description: Timestamp de atualizacao (ISO).\n\nSchema Capability:\n  - Path: fieldMetadata[].tags\n    Category: identity\n    Kind: array\n    Description: Tags para categorizacao e busca.\n\nSchema Capability:\n  - Path: fieldMetadata[].cssClass\n    Category: appearance\n    Kind: string\n    Description: Classe CSS aplicada ao host do componente.\n\nSchema Capability:\n  - Path: fieldMetadata[].style\n    Category: appearance\n    Kind: object\n    Description: Estilos inline (objeto CSS).\n\nSchema Capability:\n  - Path: fieldMetadata[].dataAttributes\n    Category: data\n    Kind: object\n    Description: Data attributes para teste/analytics.\n\nSchema Capability:\n  - Path: fieldMetadata[].name\n    Category: identity\n    Kind: string\n    Description: Identificador único do campo. Essencial para binding.\n\nSchema Capability:\n  - Path: fieldMetadata[].label\n    Category: identity\n    Kind: string\n    Description: Rótulo principal exibido para o usuário.\n\nSchema Capability:\n  - Path: fieldMetadata[].placeholder\n    Category: identity\n    Kind: string\n    Description: Texto temporário exibido quando vazio.\n\nSchema Capability:\n  - Path: fieldMetadata[].hint\n    Category: identity\n    Kind: string\n    Description: Texto de ajuda exibido abaixo do campo.\n\nSchema Capability:\n  - Path: fieldMetadata[].helpText\n    Category: identity\n    Kind: string\n    Description: Texto semântico de ajuda publicado pelo schema/DTO.\n\nSchema Capability:\n  - Path: fieldMetadata[].tooltip\n    Category: identity\n    Kind: string\n    Description: Texto exibido ao passar o mouse.\n\nSchema Capability:\n  - Path: fieldMetadata[].tooltipOnHover\n    Category: identity\n    Kind: boolean\n    Description: Habilita apresentação do tooltip no hover quando suportado pelo renderer.\n\nSchema Capability:\n  - Path: fieldMetadata[].description\n    Category: identity\n    Kind: string\n    Description: Descrição detalhada (usada em documentação ou helps extensos).\n\nSchema Capability:\n  - Path: fieldMetadata[].selectionMode\n    Category: behavior\n    Kind: enum\n    Description: Semântica de seleção explícita para controles de escolha.\n\nSchema Capability:\n  - Path: fieldMetadata[].variant\n    Category: appearance\n    Kind: string\n    Description: Variante visual/semântica do controle.\n\nSchema Capability:\n  - Path: fieldMetadata[].density\n    Category: appearance\n    Kind: enum\n    Description: Densidade visual do shell do controle.\n\nSchema Capability:\n  - Path: fieldMetadata[].links\n    Category: identity\n    Kind: array\n    Description: Links ricos associados ao campo, úteis em consentimentos e conteúdo legal.\n\nSchema Capability:\n  - Path: fieldMetadata[].group\n    Category: identity\n    Kind: string\n    Description: Agrupador lógico do campo.\n\nSchema Capability:\n  - Path: fieldMetadata[].order\n    Category: layout\n    Kind: number\n    Description: Ordem de exibição do campo.\n\nSchema Capability:\n  - Path: fieldMetadata[].width\n    Category: layout\n    Kind: string\n    Description: Largura do campo (ex: 50%, 100px).\n\nSchema Capability:\n  - Path: fieldMetadata[].isFlex\n    Category: layout\n    Kind: boolean\n    Description: Se true, usa flex-grow para preencher espaço.\n\nSchema Capability:\n  - Path: fieldMetadata[].controlType\n    Category: behavior\n    Kind: enum\n    Description: Tipo do componente de UI (input, select, datepicker, etc).\n\nSchema Capability:\n  - Path: fieldMetadata[].dataType\n    Category: data\n    Kind: enum\n    Description: Tipo de dado do campo (text, number, date, etc).\n\nSchema Capability:\n  - Path: fieldMetadata[].source\n    Category: data\n    Kind: enum\n    Description: Origem semântica do campo. Use local para campos do host que não vêm do schema backend.\n\nSchema Capability:\n  - Path: fieldMetadata[].transient\n    Category: data\n    Kind: boolean\n    Description: Marca o campo como temporário/local para preenchimento. O dynamic-form omite do submit por padrão.\n\nSchema Capability:\n  - Path: fieldMetadata[].submitPolicy\n    Category: behavior\n    Kind: enum\n    Description: Política de submit para sobrescrever o padrão de campos locais/transient.\n\nSchema Capability:\n  - Path: fieldMetadata[].materialDesign.appearance\n    Category: appearance\n    Kind: enum\n    Description: Aparência do campo Material (fill/outline).\n\nSchema Capability:\n  - Path: fieldMetadata[].materialDesign.color\n    Category: appearance\n    Kind: enum\n    Description: Tema de cor Material (primary/accent/warn).\n\nSchema Capability:\n  - Path: fieldMetadata[].materialDesign.floatLabel\n    Category: appearance\n    Kind: enum\n    Description: Comportamento do rótulo flutuante.\n\nSchema Capability:\n  - Path: fieldMetadata[].materialDesign.subscriptSizing\n    Category: appearance\n    Kind: enum\n    Description: Estratégia de sizing do subscript (erros/hints).\n\nSchema Capability:\n  - Path: fieldMetadata[].materialDesign.hideRequiredMarker\n    Category: appearance\n    Kind: boolean\n    Description: Oculta o asterisco de campo obrigatório.\n\nSchema Capability:\n  - Path: fieldMetadata[].materialDesign.density\n    Category: appearance\n    Kind: enum\n    Description: Densidade do campo Material.\n\nSchema Capability:\n  - Path: fieldMetadata[].materialDesign.disableRipple\n    Category: appearance\n    Kind: boolean\n    Description: Desativa ripple/ondulação em componentes Material.\n\nSchema Capability:\n  - Path: fieldMetadata[].materialDesign.customPalette\n    Category: appearance\n    Kind: object\n    Description: Override de paleta (primary/accent/warn).\n\nSchema Capability:\n  - Path: fieldMetadata[].materialDesign.animations\n    Category: appearance\n    Kind: object\n    Description: Configuração de animações (disable, duration, easing).\n\nSchema Capability:\n  - Path: fieldMetadata[].prefixIcon\n    Category: appearance\n    Kind: string\n    Description: Ícone exibido antes do valor.\n\nSchema Capability:\n  - Path: fieldMetadata[].suffixIcon\n    Category: appearance\n    Kind: string\n    Description: Ícone exibido depois do valor.\n\nSchema Capability:\n  - Path: fieldMetadata[].iconPosition\n    Category: appearance\n    Kind: enum\n    Description: Posição preferencial do ícone principal.\n\nSchema Capability:\n  - Path: fieldMetadata[].iconSize\n    Category: appearance\n    Kind: enum\n    Description: Tamanho do ícone.\n\nSchema Capability:\n  - Path: fieldMetadata[].iconColor\n    Category: appearance\n    Kind: string\n    Description: Cor semântica ou token de cor aplicado ao ícone principal.\n\nSchema Capability:\n  - Path: fieldMetadata[].iconClass\n    Category: appearance\n    Kind: string\n    Description: Classe CSS controlada pelo host para o ícone principal.\n\nSchema Capability:\n  - Path: fieldMetadata[].iconStyle\n    Category: appearance\n    Kind: string\n    Description: Estilo visual semântico do ícone quando o renderer suportar variações.",
          "sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
          "contentHash": "fd4b705c0e4b7d01233e4fe51a75532848dd9e3fd9ca5812f8faada5ee9f1fe0",
          "sourceKind": "component_definition",
          "sourceId": "praxis-filter-form-dialog-host",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 8,
          "chunkKind": "capabilities",
          "content": "Schema Capability:\n  - Path: fieldMetadata[].iconFontSize\n    Category: appearance\n    Kind: string\n    Description: Tamanho tipográfico do ícone principal.\n\nSchema Capability:\n  - Path: fieldMetadata[].valuePresentation\n    Category: appearance\n    Kind: object\n    Description: Formato canonico de exibicao em superficies readonly/display, como moeda, numero, percentual, data, datetime, time e boolean.\n\nSchema Capability:\n  - Path: fieldMetadata[].presentation\n    Category: appearance\n    Kind: object\n    Description: Estado visual semantico base para presentationMode, incluindo presenter, tone, icon, label, badge, tooltip, appearance e formatter opcional.\n\nSchema Capability:\n  - Path: fieldMetadata[].presentation.presenter\n    Category: appearance\n    Kind: enum\n    Description: Tipo semantico de renderizacao em modo apresentacao.\n\nSchema Capability:\n  - Path: fieldMetadata[].presentation.tone\n    Category: appearance\n    Kind: enum\n    Description: Tom semantico mapeado pelo consumidor para tokens de tema.\n\nSchema Capability:\n  - Path: fieldMetadata[].presentation.appearance\n    Category: appearance\n    Kind: enum\n    Description: Nivel de enfase visual do apresentador.\n\nSchema Capability:\n  - Path: fieldMetadata[].presentation.icon\n    Category: appearance\n    Kind: string\n    Description: Nome de icone Material Symbols usado pelo apresentador semantico.\n\nSchema Capability:\n  - Path: fieldMetadata[].presentation.label\n    Category: identity\n    Kind: string\n    Description: Rotulo semantico exibido por apresentadores como status, badge ou chip.\n\nSchema Capability:\n  - Path: fieldMetadata[].presentation.badge\n    Category: appearance\n    Kind: string\n    Description: Marcador secundario opcional exibido junto ao valor em superficies de apresentacao.\n\nSchema Capability:\n  - Path: fieldMetadata[].presentation.prefix\n    Category: appearance\n    Kind: string\n    Description: Prefixo visual readonly aplicado ao valor apresentado, sem alterar payload, filtros, ordenacao ou exportacao.\n\nSchema Capability:\n  - Path: fieldMetadata[].presentation.suffix\n    Category: appearance\n    Kind: string\n    Description: Sufixo visual readonly aplicado ao valor apresentado, sem alterar payload, filtros, ordenacao ou exportacao.\n\nSchema Capability:\n  - Path: fieldMetadata[].presentation.valuePresentation\n    Category: appearance\n    Kind: object\n    Description: Override de formatacao aplicado apenas pela superficie de apresentacao.\n\nSchema Capability:\n  - Path: fieldMetadata[].presentation.visualization\n    Category: appearance\n    Kind: object\n    Description: Micro visualizacao renderer-neutral para superficies compactas como tabela, lista, header, card e form read-only.\n\nSchema Capability:\n  - Path: fieldMetadata[].presentation.visualization.kind\n    Category: appearance\n    Kind: enum\n    Description: Tipo semantico da micro visualizacao de apresentacao.\n\nSchema Capability:\n  - Path: fieldMetadata[].presentation.visualization.surface\n    Category: layout\n    Kind: enum\n    Description: Superficie alvo usada para aplicar regras de densidade e fallback.\n\nSchema Capability:\n  - Path: fieldMetadata[].presentation.visualization.size\n    Category: layout\n    Kind: enum\n    Description: Tamanho semantico da micro visualizacao.\n\nSchema Capability:\n  - Path: fieldMetadata[].presentation.visualization.fallbackText\n    Category: accessibility\n    Kind: string\n    Description: Texto equivalente obrigatorio para fallback, exportacao e leitores de tela.\n\nSchema Capability:\n  - Path: fieldMetadata[].presentationRules\n    Category: appearance\n    Kind: array\n    Description: Regras Json Logic ordenadas que sobrescrevem presentation em modo readonly/display; regras posteriores que casam vencem.\n\nSchema Capability:\n  - Path: fieldMetadata[].presentationRules[].when\n    Category: behavior\n    Kind: object\n    Description: Guarda Json Logic avaliada contra o contexto de apresentacao do campo.\n\nSchema Capability:\n  - Path: fieldMetadata[].presentationRules[].set\n    Category: appearance\n    Kind: object\n    Description: Patch semantico aplicado sobre presentation quando a guarda for verdadeira.\n\nSchema Capability:\n  - Path: fieldMetadata[].mask\n    Category: appearance\n    Kind: string\n    Description: Máscara de input (padrão do componente).\n\nSchema Capability:\n  - Path: fieldMetadata[].format\n    Category: appearance\n    Kind: string\n    Description: Formato de exibição (ex: pipes).\n\nSchema Capability:\n  - Path: fieldMetadata[].validators\n    Category: validation\n    Kind: object\n    Description: Objeto contendo todas as regras de validação.\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.required\n    Category: validation\n    Kind: boolean\n    Description: Campo obrigatório.\n\nSchema Capability:\n  - Path: fieldMetadata[].required\n    Category: validation\n    Kind: boolean\n    Description: Campo obrigatório (alias rápido do validators.required).\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.requiredMessage\n    Category: validation\n    Kind: string\n    Description: Mensagem customizada para required.\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.email\n    Category: validation\n    Kind: boolean\n    Description: Validação de formato de e-mail.\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.emailMessage\n    Category: validation\n    Kind: string\n    Description: Mensagem customizada para validação de email.\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.minLength\n    Category: validation\n    Kind: number\n    Description: Comprimento mínimo do texto.\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.minLengthMessage\n    Category: validation\n    Kind: string\n    Description: Mensagem customizada para minLength.\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.maxLength\n    Category: validation\n    Kind: number\n    Description: Comprimento máximo do texto.\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.maxLengthMessage\n    Category: validation\n    Kind: string\n    Description: Mensagem customizada para maxLength.\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.min\n    Category: validation\n    Kind: number\n    Description: Valor numérico mínimo.\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.minMessage\n    Category: validation\n    Kind: string\n    Description: Mensagem customizada para min.\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.max\n    Category: validation\n    Kind: number\n    Description: Valor numérico máximo.\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.maxMessage\n    Category: validation\n    Kind: string\n    Description: Mensagem customizada para max.\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.pattern\n    Category: validation\n    Kind: string\n    Description: Regex para validação.\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.patternMessage\n    Category: validation\n    Kind: string\n    Description: Mensagem customizada para pattern.\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.cpf\n    Category: validation\n    Kind: boolean\n    Description: Validador de CPF (legado).\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.cnpj\n    Category: validation\n    Kind: boolean\n    Description: Validador de CNPJ (legado).\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.cpfCnpj\n    Category: validation\n    Kind: boolean\n    Description: Validador automatico CPF/CNPJ (legado).\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.cnpjAlpha\n    Category: validation\n    Kind: boolean\n    Description: Validador de CNPJ alfanumerico (legado).\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.cpfMessage\n    Category: validation\n    Kind: string\n    Description: Mensagem customizada para CPF.\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.cnpjMessage\n    Category: validation\n    Kind: string\n    Description: Mensagem customizada para CNPJ.",
          "sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
          "contentHash": "680baee6a38106f22c4710309b6d65ef7e59d1ee08bb65cca97f004070a99d0c",
          "sourceKind": "component_definition",
          "sourceId": "praxis-filter-form-dialog-host",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 9,
          "chunkKind": "capabilities",
          "content": "Schema Capability:\n  - Path: fieldMetadata[].validators.cnpjAlphaMessage\n    Category: validation\n    Kind: string\n    Description: Mensagem customizada para CNPJ alfanumerico.\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.url\n    Category: validation\n    Kind: boolean\n    Description: Validador de URL.\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.urlMessage\n    Category: validation\n    Kind: string\n    Description: Mensagem customizada para URL.\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.minWords\n    Category: validation\n    Kind: number\n    Description: Mínimo de palavras.\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.requiredChecked\n    Category: validation\n    Kind: boolean\n    Description: Exige checkbox marcado (ex: termos de uso).\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.customValidator\n    Category: validation\n    Kind: expression\n    Description: Validador customizado (função).\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.asyncValidator\n    Category: validation\n    Kind: expression\n    Description: Validador async customizado (função).\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.matchField\n    Category: validation\n    Kind: string\n    Description: Campo que deve coincidir (cross-field).\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.matchFieldMessage\n    Category: validation\n    Kind: string\n    Description: Mensagem customizada para matchField.\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.uniqueValidator\n    Category: validation\n    Kind: expression\n    Description: Validador de unicidade via API (função).\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.uniqueMessage\n    Category: validation\n    Kind: string\n    Description: Mensagem customizada para unicidade.\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.conditionalValidation\n    Category: validation\n    Kind: array\n    Description: Regras de validação condicional.\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.conditionalValidation[].condition\n    Category: validation\n    Kind: expression\n    Description: Condicao para aplicar validadores.\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.conditionalValidation[].validators\n    Category: validation\n    Kind: object\n    Description: Conjunto de validadores aplicados quando a condicao for verdadeira.\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.validationTrigger\n    Category: validation\n    Kind: enum\n    Description: Gatilho de validação no validator.\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.validationDebounce\n    Category: validation\n    Kind: number\n    Description: Debounce de validação no validator (ms).\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.showInlineErrors\n    Category: validation\n    Kind: boolean\n    Description: Exibe erros inline (validator).\n\nSchema Capability:\n  - Path: fieldMetadata[].validators.errorPosition\n    Category: validation\n    Kind: enum\n    Description: Posicao do erro (validator).\n\nSchema Capability:\n  - Path: fieldMetadata[].validationMode\n    Category: validation\n    Kind: enum\n    Description: Gatilho da validação (change/blur/submit).\n\nSchema Capability:\n  - Path: fieldMetadata[].debounceTime\n    Category: validation\n    Kind: number\n    Description: Debounce para validação em ms.\n\nSchema Capability:\n  - Path: fieldMetadata[].options\n    Category: data\n    Kind: array\n    Description: Array de opções conforme controlType (ex.: { key, value } ou { value, text/display }).\n\nSchema Capability:\n  - Path: fieldMetadata[].endpoint\n    Category: data\n    Kind: string\n    Description: URL para carregar opções remotas.\n\nSchema Capability:\n  - Path: fieldMetadata[].valueField\n    Category: data\n    Kind: string\n    Description: Nome da propriedade de valor nas opções.\n\nSchema Capability:\n  - Path: fieldMetadata[].displayField\n    Category: data\n    Kind: string\n    Description: Nome da propriedade de texto nas opções.\n\nSchema Capability:\n  - Path: fieldMetadata[].filterField\n    Category: data\n    Kind: string\n    Description: Campo para filtragem no backend.\n\nSchema Capability:\n  - Path: fieldMetadata[].queryParams\n    Category: data\n    Kind: object\n    Description: Parâmetros fixos para a query do endpoint.\n\nSchema Capability:\n  - Path: fieldMetadata[].cacheDuration\n    Category: data\n    Kind: number\n    Description: Duração do cache de dados em ms.\n\nSchema Capability:\n  - Path: fieldMetadata[].hidden\n    Category: behavior\n    Kind: boolean\n    Description: Oculta o campo globalmente.\n\nSchema Capability:\n  - Path: fieldMetadata[].visibleIn\n    Category: behavior\n    Kind: array\n    Description: Contextos onde o campo é visível.\n\nSchema Capability:\n  - Path: fieldMetadata[].formHidden\n    Category: behavior\n    Kind: boolean\n    Description: Oculta apenas no formulário.\n\nSchema Capability:\n  - Path: fieldMetadata[].tableHidden\n    Category: behavior\n    Kind: boolean\n    Description: Oculta apenas na tabela.\n\nSchema Capability:\n  - Path: fieldMetadata[].filterHidden\n    Category: behavior\n    Kind: boolean\n    Description: Oculta apenas no filtro.\n\nSchema Capability:\n  - Path: fieldMetadata[].fieldAccess\n    Category: behavior\n    Kind: object\n    Description: Politica canonica de UX para visibilidade/edicao por authorities publicadas pelo backend.\n\nSchema Capability:\n  - Path: fieldMetadata[].fieldAccess.visibleForAuthorities\n    Category: behavior\n    Kind: array\n    Description: Authorities que podem ver o campo no runtime quando a UX tiver claims explicitas.\n\nSchema Capability:\n  - Path: fieldMetadata[].fieldAccess.editableForAuthorities\n    Category: behavior\n    Kind: array\n    Description: Authorities que podem editar o campo no runtime quando a UX tiver claims explicitas.\n\nSchema Capability:\n  - Path: fieldMetadata[].fieldAccess.reason\n    Category: misc\n    Kind: string\n    Description: Justificativa explicativa/auditavel da politica de acesso do campo.\n\nSchema Capability:\n  - Path: fieldMetadata[].dependencyFields\n    Category: dependency\n    Kind: array\n    Description: Campos dos quais este campo depende.\n\nSchema Capability:\n  - Path: fieldMetadata[].conditionalRequired\n    Category: dependency\n    Kind: expression\n    Description: Condição Json Logic para obrigatoriedade declarativa.\n\nSchema Capability:\n  - Path: fieldMetadata[].conditionalDisplay\n    Category: dependency\n    Kind: expression\n    Description: Condição Json Logic para visibilidade declarativa.\n\nSchema Capability:\n  - Path: fieldMetadata[].dependencyFilterMap\n    Category: dependency\n    Kind: object\n    Description: Mapeamento de filtro baseado na dependência.\n\nSchema Capability:\n  - Path: fieldMetadata[].dependencyValuePath\n    Category: dependency\n    Kind: string\n    Description: Caminho no valor da dependência.\n\nSchema Capability:\n  - Path: fieldMetadata[].dependencyMergeStrategy\n    Category: dependency\n    Kind: enum\n    Description: Estratégia de merge dos dados carregados.\n\nSchema Capability:\n  - Path: fieldMetadata[].dependencyLoadOnChange\n    Category: dependency\n    Kind: enum\n    Description: Quando recarregar dependência.\n\nSchema Capability:\n  - Path: fieldMetadata[].resetOnDependentChange\n    Category: dependency\n    Kind: boolean\n    Description: Zera valor se dependência mudar.\n\nSchema Capability:\n  - Path: fieldMetadata[].enableDependencyCascade\n    Category: dependency\n    Kind: boolean\n    Description: Habilita/desabilita cascata nativa de dependências entre campos.\n\nSchema Capability:\n  - Path: fieldMetadata[].dependencyDebounceMs\n    Category: dependency\n    Kind: number\n    Description: Delay para reagir à mudança de dependência.\n\nSchema Capability:\n  - Path: fieldMetadata[].suppressInlineErrorsOnCascade\n    Category: dependency\n    Kind: boolean\n    Description: Suprime erros inline durante cascata.",
          "sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
          "contentHash": "02f3921c10fb0dd88775888b7143c2cad0a14ccd228d35ea95cdb587a28b3c3f",
          "sourceKind": "component_definition",
          "sourceId": "praxis-filter-form-dialog-host",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 10,
          "chunkKind": "capabilities",
          "content": "Schema Capability:\n  - Path: fieldMetadata[].transformDisplayValue\n    Category: transform\n    Kind: expression\n    Description: Transforma valor para exibição.\n\nSchema Capability:\n  - Path: fieldMetadata[].transformSaveValue\n    Category: transform\n    Kind: expression\n    Description: Transforma valor para salvar.\n\nSchema Capability:\n  - Path: fieldMetadata[].textTransformApply\n    Category: transform\n    Kind: enum\n    Description: Quando aplicar transformação de texto.\n\nSchema Capability:\n  - Path: fieldMetadata[].inlineEditing\n    Category: behavior\n    Kind: boolean\n    Description: Permite edição inline (tabelas).\n\nSchema Capability:\n  - Path: fieldMetadata[].unique\n    Category: validation\n    Kind: boolean\n    Description: Valida unicidade no backend.\n\nSchema Capability:\n  - Path: fieldMetadata[].readOnly\n    Category: behavior\n    Kind: boolean\n    Description: Campo somente leitura.\n\nSchema Capability:\n  - Path: fieldMetadata[].disabled\n    Category: behavior\n    Kind: boolean\n    Description: Campo desabilitado.\n\nSchema Capability:\n  - Path: fieldMetadata[].defaultValue\n    Category: data\n    Kind: object\n    Description: Valor inicial do campo.\n\nSchema Capability:\n  - Path: fieldMetadata[].ariaLabel\n    Category: accessibility\n    Kind: string\n    Description: Label para leitores de tela.\n\nSchema Capability:\n  - Path: fieldMetadata[].ariaDescribedBy\n    Category: accessibility\n    Kind: string\n    Description: IDs de descrição acessível.\n\nSchema Capability:\n  - Path: fieldMetadata[].tabIndex\n    Category: accessibility\n    Kind: number\n    Description: Ordem de tabulacao para teclado.\n\nSchema Capability:\n  - Path: fieldMetadata[].accessKey\n    Category: accessibility\n    Kind: string\n    Description: Atalho de teclado (accessKey).\n\nComponent Capability:\n  - Path: inputs.resourcePath\n    Category: inputs\n    Kind: string\n    Description: Caminho do recurso para carregar/salvar dados via CRUD.\n\nComponent Capability:\n  - Path: inputs.resourceId\n    Category: inputs\n    Kind: string\n    Description: ID do registro atual (string ou number).\n\nComponent Capability:\n  - Path: inputs.initialValue\n    Category: inputs\n    Kind: object\n    Description: Valores iniciais locais para campos host-authored ou complementares.\n\nComponent Capability:\n  - Path: inputs.mode\n    Category: inputs\n    Kind: enum\n    Description: Modo do formulario (create/edit/view).\n\nComponent Capability:\n  - Path: inputs.config\n    Category: inputs\n    Kind: object\n    Description: Configuracao completa do formulario (FormConfig).\n\nComponent Capability:\n  - Path: inputs.schemaSource\n    Category: inputs\n    Kind: enum\n    Description: Fonte de schema para construcao automatica (resource/filter).\n\nComponent Capability:\n  - Path: inputs.schemaUrl\n    Category: inputs\n    Kind: string\n    Description: Schema canonico explicito publicado pelo backend para hosts que seguem surfaces/actions/capabilities.\n\nComponent Capability:\n  - Path: inputs.readUrl\n    Category: inputs\n    Kind: string\n    Description: Endpoint canonico de leitura publicado por surface VIEW/READ_PROJECTION para hidratar a entidade exibida.\n\nComponent Capability:\n  - Path: inputs.apiEndpointKey\n    Category: inputs\n    Kind: string\n    Description: Endpoint canonico usado para resolver schemaUrl, readUrl e submitUrl relativos em hosts destacados.\n\nComponent Capability:\n  - Path: inputs.submitUrl\n    Category: inputs\n    Kind: string\n    Description: Endpoint canonico de submit publicado por surface/action.\n\nComponent Capability:\n  - Path: inputs.submitMethod\n    Category: inputs\n    Kind: enum\n    Description: Metodo HTTP canonico para o submit quando o backend publica operacao explicita.\n\nComponent Capability:\n  - Path: inputs.submitIdempotencyKey\n    Category: inputs\n    Kind: string\n    Description: Identidade estavel da tentativa de comando, materializada a partir da politica execution da action.\n\nComponent Capability:\n  - Path: inputs.submitCorrelationId\n    Category: inputs\n    Kind: string\n    Description: Identificador de correlacao governado para rastreabilidade ponta a ponta do comando.\n\nComponent Capability:\n  - Path: inputs.submitResourceVersion\n    Category: inputs\n    Kind: string\n    Description: Versao persistida esperada, transportada como If-Match quando exigida pela action.\n\nComponent Capability:\n  - Path: inputs.submitResourceVersionTargetResourceKey\n    Category: inputs\n    Kind: string\n    Description: Resource key canônico materializado pela action para resolver o ETag de outro agregado no momento do submit.\n\nComponent Capability:\n  - Path: inputs.submitResourceVersionTargetIdField\n    Category: inputs\n    Kind: string\n    Description: Campo exato do request que identifica o agregado cujo ETag governa a action.\n\nComponent Capability:\n  - Path: inputs.responseSchemaUrl\n    Category: inputs\n    Kind: string\n    Description: Schema de resposta publicado pelo backend para inspeção diagnostica/read-only do host.\n\nComponent Capability:\n  - Path: inputs.enableCustomization\n    Category: inputs\n    Kind: boolean\n    Description: Habilita a edicao de layout/configuracao no editor.\n\nComponent Capability:\n  - Path: inputs.showAiAssistant\n    Category: inputs\n    Kind: boolean\n    Description: Mostra os gatilhos do copiloto semantico Praxis para a instancia do formulario.\n\nComponent Capability:\n  - Path: inputs.formId\n    Category: inputs\n    Kind: string\n    Description: ID persistente para salvar configuracoes e preferencias.\n\nComponent Capability:\n  - Path: inputs.editorialContext\n    Category: inputs\n    Kind: object\n    Description: Override de contexto editorial fornecido pelo host para os blocos hospedados antes/depois do formulario.\n\nComponent Capability:\n  - Path: inputs.layout\n    Category: inputs\n    Kind: object\n    Description: Layout legado (FormLayout). Preferir inputs.config + sections.\n\nComponent Capability:\n  - Path: inputs.generatedLayoutPreset\n    Category: inputs\n    Kind: enum\n    Description: Preset usado somente na criacao inicial de FormConfig a partir de schema/metadata.\n\nComponent Capability:\n  - Path: inputs.configPersistenceStrategy\n    Category: inputs\n    Kind: enum\n    Description: Define se preferências locais persistidas ou o contrato explícito do host governam a materialização corrente.\n\nComponent Capability:\n  - Path: inputs.layoutPolicy\n    Category: inputs\n    Kind: object\n    Description: Politica opt-in para materializar layout diretamente do schema atual sem depender de FormConfig.sections authoradas.\n\nComponent Capability:\n  - Path: inputs.layoutPolicy.source\n    Category: inputs\n    Kind: enum\n    Description: Define se o layout vem de configuracao authorada ou do schema.\n\nComponent Capability:\n  - Path: inputs.layoutPolicy.preset\n    Category: inputs\n    Kind: enum\n    Description: Preset de layout schema-driven. compactPresentation cobre detalhe read-only; groupedCommand cobre create/edit.\n\nComponent Capability:\n  - Path: inputs.layoutPolicy.intent\n    Category: inputs\n    Kind: enum\n    Description: Intencao da surface: detalhe/apresentacao ou comando/editavel.\n\nComponent Capability:\n  - Path: inputs.layoutPolicy.lifecycle\n    Category: inputs\n    Kind: enum\n    Description: Ciclo de materializacao do layout schema-driven.\n\nComponent Capability:\n  - Path: inputs.layoutPolicy.persistence\n    Category: inputs\n    Kind: enum\n    Description: Define se sections geradas sao transient ou podem virar layout authorado apos detach explicito.\n\nComponent Capability:\n  - Path: inputs.layoutPolicy.groupedCommand.orphanFieldExpansion\n    Category: inputs\n    Kind: enum\n    Description: Define como uma linha groupedCommand com um unico campo usa o espaco restante. O default medium-and-wide expande spans 6 ou 8 e preserva campos compactos.",
          "sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
          "contentHash": "26b2dfdc858e1b0af8adbd4557dec1561120af335ab33688421d1dda98a4281e",
          "sourceKind": "component_definition",
          "sourceId": "praxis-filter-form-dialog-host",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 11,
          "chunkKind": "capabilities",
          "content": "Component Capability:\n  - Path: inputs.layoutPolicy.groupedCommand.contextFields\n    Category: inputs\n    Kind: array\n    Description: Campos canônicos do request cujo valor vem do contexto da surface. Eles permanecem no FormGroup e no payload, sem renderizar controles redundantes.\n\nComponent Capability:\n  - Path: inputs.layoutPolicy.groupedCommand.partialRowStrategy\n    Category: inputs\n    Kind: enum\n    Description: Define se cada linha visual parcial, depois de resolver visibilidade responsiva, CSS order e wrap, preserva os spans canônicos ou redistribui apenas campos compatíveis para completar 12 colunas no breakpoint atual.\n\nComponent Capability:\n  - Path: inputs.layoutPolicy.detailSummary\n    Category: inputs\n    Kind: object\n    Description: Politica declarativa para resumo read-only compacto em compactPresentation, sem FormConfig.sections locais.\n\nComponent Capability:\n  - Path: inputs.layoutPolicy.detailSummary.includeFields\n    Category: inputs\n    Kind: array\n    Description: Lista de campos canônicos do schema que devem entrar no resumo read-only compacto.\n\nComponent Capability:\n  - Path: inputs.layoutPolicy.detailSummary.excludeFields\n    Category: inputs\n    Kind: array\n    Description: Lista de campos canônicos do schema que devem ficar fora do resumo read-only compacto.\n\nComponent Capability:\n  - Path: inputs.layoutPolicy.detailSummary.includeGroups\n    Category: inputs\n    Kind: array\n    Description: Lista de grupos do schema que devem entrar no resumo read-only compacto.\n\nComponent Capability:\n  - Path: inputs.layoutPolicy.detailSummary.excludeGroups\n    Category: inputs\n    Kind: array\n    Description: Lista de grupos do schema que devem ficar fora do resumo read-only compacto.\n\nComponent Capability:\n  - Path: inputs.layoutPolicy.detailSummary.includeRoles\n    Category: inputs\n    Kind: array\n    Description: Lista de papeis semanticos de campo que devem entrar no resumo read-only compacto.\n\nComponent Capability:\n  - Path: inputs.layoutPolicy.detailSummary.excludeRoles\n    Category: inputs\n    Kind: array\n    Description: Lista de papeis semanticos de campo que devem ficar fora do resumo read-only compacto.\n\nComponent Capability:\n  - Path: inputs.layoutPolicy.detailSummary.maxFields\n    Category: inputs\n    Kind: number\n    Description: Limite maximo de campos materializados no primeiro painel compacto.\n\nComponent Capability:\n  - Path: inputs.layoutPolicy.detailSummary.fieldPriority\n    Category: inputs\n    Kind: object\n    Description: Mapa campo -> prioridade para ordenar campos do resumo quando o schema publica candidatos suficientes.\n\nComponent Capability:\n  - Path: inputs.layoutPolicy.detailSummary.groupPriority\n    Category: inputs\n    Kind: object\n    Description: Mapa grupo -> prioridade para ordenar grupos do resumo quando o schema publica agrupamento semantico.\n\nComponent Capability:\n  - Path: inputs.layoutPolicy.detailSummary.columns\n    Category: inputs\n    Kind: number\n    Description: Quantidade base de colunas para distribuir campos de resumo schema-driven sem criar FormConfig.sections locais.\n\nComponent Capability:\n  - Path: inputs.layoutPolicy.detailSummary.responsiveColumns\n    Category: inputs\n    Kind: object\n    Description: Mapa de colunas por breakpoint xs/sm/md/lg/xl para detalhes read-only compactos em drawers, side sheets e desktop largo.\n\nComponent Capability:\n  - Path: inputs.layoutPolicy.detailSummary.widthPrecedence\n    Category: inputs\n    Kind: enum\n    Description: Define se larguras explicitas do schema ou a densidade do resumo controlam os spans no compactPresentation read-only.\n\nComponent Capability:\n  - Path: inputs.fieldIconPolicy\n    Category: inputs\n    Kind: enum\n    Description: Controla se icones prefix/suffix dos metadados aparecem em todos os modos, apenas apresentacao, ou nunca.\n\nComponent Capability:\n  - Path: inputs.backConfig\n    Category: inputs\n    Kind: object\n    Description: Configuracao de navegacao/retorno (BackConfig).\n\nComponent Capability:\n  - Path: inputs.backConfig.strategy\n    Category: inputs\n    Kind: enum\n    Description: Estrategia de retorno (auto/close/navigate).\n\nComponent Capability:\n  - Path: inputs.backConfig.returnTo\n    Category: inputs\n    Kind: string\n    Description: Rota para retornar quando strategy=navigate.\n\nComponent Capability:\n  - Path: inputs.backConfig.confirmOnDirty\n    Category: inputs\n    Kind: boolean\n    Description: Solicita confirmacao ao sair com mudancas nao salvas.\n\nComponent Capability:\n  - Path: inputs.hooks\n    Category: inputs\n    Kind: object\n    Description: Declaracoes de hooks fornecidas diretamente ao componente.\n\nComponent Capability:\n  - Path: inputs.hooks.beforeInit[]\n    Category: hooks\n    Kind: array\n    Description: Hooks executados antes da inicializacao.\n\nComponent Capability:\n  - Path: inputs.hooks.afterInit[]\n    Category: hooks\n    Kind: array\n    Description: Hooks executados apos a inicializacao.\n\nComponent Capability:\n  - Path: inputs.hooks.beforeValidate[]\n    Category: hooks\n    Kind: array\n    Description: Hooks executados antes da validacao.\n\nComponent Capability:\n  - Path: inputs.hooks.afterValidate[]\n    Category: hooks\n    Kind: array\n    Description: Hooks executados apos a validacao.\n\nComponent Capability:\n  - Path: inputs.hooks.beforeSubmit[]\n    Category: hooks\n    Kind: array\n    Description: Hooks executados antes do submit.\n\nComponent Capability:\n  - Path: inputs.hooks.afterSubmit[]\n    Category: hooks\n    Kind: array\n    Description: Hooks executados apos o submit.\n\nComponent Capability:\n  - Path: inputs.hooks.onError[]\n    Category: hooks\n    Kind: array\n    Description: Hooks executados em erros de submit/validacao.\n\nComponent Capability:\n  - Path: inputs.removeEmptyContainersOnSave\n    Category: inputs\n    Kind: boolean\n    Description: Remove containers vazios ao salvar configuracao.\n\nComponent Capability:\n  - Path: inputs.reactiveValidation\n    Category: inputs\n    Kind: boolean\n    Description: Ativa validacao reativa (afterValidate em valueChanges).\n\nComponent Capability:\n  - Path: inputs.reactiveValidationDebounceMs\n    Category: inputs\n    Kind: number\n    Description: Debounce em ms para validacao reativa.\n\nComponent Capability:\n  - Path: inputs.notifyIfOutdated\n    Category: inputs\n    Kind: enum\n    Description: Canal de notificacao para schema desatualizado.\n\nComponent Capability:\n  - Path: inputs.snoozeMs\n    Category: inputs\n    Kind: number\n    Description: Duracao do snooze para alertas de schema.\n\nComponent Capability:\n  - Path: inputs.autoOpenSettingsOnOutdated\n    Category: inputs\n    Kind: boolean\n    Description: Abre automaticamente o editor ao detectar schema desatualizado.\n\nComponent Capability:\n  - Path: inputs.readonlyModeGlobal\n    Category: inputs\n    Kind: boolean\n    Description: Forca modo somente leitura global.\n\nComponent Capability:\n  - Path: inputs.disabledModeGlobal\n    Category: inputs\n    Kind: boolean\n    Description: Forca modo desabilitado global.\n\nComponent Capability:\n  - Path: inputs.presentationModeGlobal\n    Category: inputs\n    Kind: boolean\n    Description: Ativa modo de apresentacao global (somente view).\n\nComponent Capability:\n  - Path: inputs.visibleGlobal\n    Category: inputs\n    Kind: boolean\n    Description: Forca visibilidade global dos campos.\n\nComponent Capability:\n  - Path: inputs.customEndpoints\n    Category: inputs\n    Kind: object\n    Description: Override de endpoints CRUD (EndpointConfig).\n\nComponent Capability:\n  - Path: inputs.customEndpoints.getAll\n    Category: inputs\n    Kind: string\n    Description: Endpoint customizado para listar registros.\n\nComponent Capability:\n  - Path: inputs.customEndpoints.getById\n    Category: inputs\n    Kind: string\n    Description: Endpoint customizado para obter registro por ID.\n\nComponent Capability:\n  - Path: inputs.customEndpoints.create\n    Category: inputs\n    Kind: string\n    Description: Endpoint customizado para criar registro.",
          "sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
          "contentHash": "d8a5bd44a76042ef92898e9140289bc09495b4ae07573b497e95c9abdc1ab4a7",
          "sourceKind": "component_definition",
          "sourceId": "praxis-filter-form-dialog-host",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 12,
          "chunkKind": "capabilities",
          "content": "Component Capability:\n  - Path: inputs.customEndpoints.update\n    Category: inputs\n    Kind: string\n    Description: Endpoint customizado para atualizar registro.\n\nComponent Capability:\n  - Path: inputs.customEndpoints.delete\n    Category: inputs\n    Kind: string\n    Description: Endpoint customizado para deletar registro.\n\nComponent Capability:\n  - Path: inputs.customEndpoints.filter\n    Category: inputs\n    Kind: string\n    Description: Endpoint customizado para filtro.\n\nComponent Capability:\n  - Path: inputs.customEndpoints.schema\n    Category: inputs\n    Kind: string\n    Description: Endpoint customizado para schemas.\n\nComponent Capability:\n  - Path: inputs.config.presentation\n    Category: appearance\n    Kind: object\n    Description: Preferencias visuais persistidas no config.\n\nComponent Capability:\n  - Path: inputs.config.presentation.labelFontSize\n    Category: appearance\n    Kind: number\n    Description: Tamanho da fonte do label (px).\n\nComponent Capability:\n  - Path: inputs.config.presentation.valueFontSize\n    Category: appearance\n    Kind: number\n    Description: Tamanho da fonte do valor (px).\n\nComponent Capability:\n  - Path: inputs.config.presentation.labelPosition\n    Category: appearance\n    Kind: enum\n    Description: Posicionamento do label (above/left).\n\nComponent Capability:\n  - Path: inputs.config.presentation.compact\n    Category: appearance\n    Kind: boolean\n    Description: Modo compacto de apresentacao.\n\nComponent Capability:\n  - Path: inputs.config.presentation.density\n    Category: appearance\n    Kind: enum\n    Description: Densidade visual global.\n\nComponent Capability:\n  - Path: inputs.config.presentation.labelWidth\n    Category: appearance\n    Kind: number\n    Description: Largura do label (px).\n\nComponent Capability:\n  - Path: inputs.config.presentation.labelAlign\n    Category: appearance\n    Kind: enum\n    Description: Alinhamento do label.\n\nComponent Capability:\n  - Path: inputs.config.presentation.valueAlign\n    Category: appearance\n    Kind: enum\n    Description: Alinhamento do valor.\n\nComponent Capability:\n  - Path: outputs.formSubmit\n    Category: outputs\n    Kind: object\n    Description: Evento emitido no submit do formulario.\n\nComponent Capability:\n  - Path: outputs.formCancel\n    Category: outputs\n    Kind: object\n    Description: Evento emitido ao cancelar.\n\nComponent Capability:\n  - Path: outputs.formReset\n    Category: outputs\n    Kind: object\n    Description: Evento emitido ao resetar o formulario.\n\nComponent Capability:\n  - Path: outputs.configChange\n    Category: outputs\n    Kind: object\n    Description: Evento emitido quando a configuracao muda.\n\nComponent Capability:\n  - Path: outputs.formReady\n    Category: outputs\n    Kind: object\n    Description: Evento emitido quando o formulario esta pronto.\n\nComponent Capability:\n  - Path: outputs.valueChange\n    Category: outputs\n    Kind: object\n    Description: Evento emitido quando o valor do formulario muda.\n\nComponent Capability:\n  - Path: outputs.syncCompleted\n    Category: outputs\n    Kind: object\n    Description: Evento emitido ao completar sincronizacao com schema.\n\nComponent Capability:\n  - Path: outputs.initializationError\n    Category: outputs\n    Kind: object\n    Description: Evento emitido quando ocorre erro na inicializacao.\n\nComponent Capability:\n  - Path: outputs.enableCustomizationChange\n    Category: outputs\n    Kind: object\n    Description: Evento emitido quando o modo de customizacao muda.\n\nComponent Capability:\n  - Path: outputs.customAction\n    Category: outputs\n    Kind: object\n    Description: Evento emitido ao disparar acao customizada.\n\nComponent Capability:\n  - Path: outputs.actionConfirmation\n    Category: outputs\n    Kind: object\n    Description: Evento emitido quando acao requer confirmacao.\n\nComponent Capability:\n  - Path: outputs.schemaStatusChange\n    Category: outputs\n    Kind: object\n    Description: Evento emitido quando o status do schema muda.\n\nCapability Note:\n  - Este catalogo descreve inputs e outputs do componente.\n\nCapability Note:\n  - O objeto inputs.config segue o schema de FormConfig (veja form-ai-capabilities).\n\nCapability Note:\n  - inputs.config.presentation e uma extensao de runtime aplicada pelo componente.\n\nCapability Note:\n  - Preferir FormConfig (sections/fieldMetadata) em vez do layout legado (fieldsets).\n\nCapability Note:\n  - Use inputs.editorialContext apenas para override de contexto editorial do host; a precedencia final e runtime < config.editorialContext < host.\n\nCapability Note:\n  - rich content editorial hospedado pelo form pode ser renderizado em tres slots semanticos: before, beforeActions e after.",
          "sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
          "contentHash": "8cde02bbb0100a17feb34ecf1e03642b852a82d237170763ad456693ee7b8789",
          "sourceKind": "component_definition",
          "sourceId": "praxis-filter-form-dialog-host",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 13,
          "chunkKind": "context_pack",
          "content": "{\"componentContext\":{\"version\":\"v1\",\"optionsByPath\":{},\"actionCatalog\":[{\"id\":\"inputs.formId.set\",\"intentExamples\":[\"form id\",\"formulario\",\"identificador\"],\"patchTemplate\":{\"inputs\":{\"formId\":\"{{value}}\"}}},{\"id\":\"inputs.resourcePath.set\",\"intentExamples\":[\"resource path\",\"endpoint\",\"api\"],\"patchTemplate\":{\"inputs\":{\"resourcePath\":\"{{value}}\"}}},{\"id\":\"inputs.schemaSource.set\",\"intentExamples\":[\"schema source\",\"schema\",\"resource\",\"filter\"],\"patchTemplate\":{\"inputs\":{\"schemaSource\":\"{{value}}\"}}},{\"id\":\"inputs.enableCustomization.enable\",\"intentExamples\":[\"enable edit\",\"modo edicao\",\"edit layout\"],\"patchTemplate\":{\"inputs\":{\"enableCustomization\":true}}},{\"id\":\"inputs.enableCustomization.disable\",\"intentExamples\":[\"disable edit\",\"somente leitura\",\"no edit\"],\"patchTemplate\":{\"inputs\":{\"enableCustomization\":false}}}],\"fieldResolvers\":{},\"hints\":[\"Dialog host: patches operate over inputs.*.\",\"schemaSource expects resource|filter.\"]}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/filter-form-dialog-host-context-pack.ts",
          "contentHash": "4aa937fd3e6fb0758fa5fbc57a0294f6cb45fc97b8a0034c8d0822d72f66876a",
          "sourceKind": "component_definition",
          "sourceId": "praxis-filter-form-dialog-host",
          "corpusVersion": "1.0.0"
        }
      ]
    },
    "praxis-table": {
      "id": "praxis-table",
      "description": "Tabela interativa com paginação, ordenação e ações em massa.",
      "category": "table",
      "inputs": [
        {
          "name": "config",
          "type": "TableConfig",
          "required": false,
          "description": "Configuração da tabela (colunas, toolbar, ações)",
          "label": "Configuração"
        },
        {
          "name": "resourcePath",
          "type": "string",
          "required": false,
          "description": "Endpoint base para operações de dados",
          "label": "Recurso"
        },
        {
          "name": "data",
          "type": "any[]",
          "required": false,
          "description": "Dataset local para modo client-side quando não há resourcePath",
          "label": "Dados locais",
          "default": null
        },
        {
          "name": "configPersistenceStrategy",
          "type": "'local-first' | 'input-first' | 'volatile'",
          "required": false,
          "description": "Define como a tabela hidrata preferências persistidas. Use 'volatile' para surfaces efêmeras que devem renderizar apenas por inputs e não consultar nem gravar configuração remota.",
          "label": "Estratégia de persistência",
          "default": "local-first"
        },
        {
          "name": "queryContext",
          "type": "PraxisDataQueryContext | null",
          "required": false,
          "description": "Contrato semantico primario de consulta para orquestracao declarativa por pagina dinamica. A tabela compoe queryContext.filters sobre o pipeline de filtro efetivo existente e respeita sort, limit e page quando aplicavel.",
          "label": "Contexto de consulta",
          "default": null
        },
        {
          "name": "aiContext",
          "type": "TableAiContext | null",
          "required": false,
          "description": "Contexto governado pelo host para grounding do assistente, incluindo superfícies relacionadas ao registro e destinos de navegação declarados pelo host. A visibilidade do entrypoint do assistente e controlada por config.ai.assistant.enabled.",
          "label": "Contexto semântico para IA",
          "default": null
        },
        {
          "name": "aiAssistantVoiceInputMode",
          "type": "'disabled' | 'browser-speech'",
          "required": false,
          "description": "Modo opt-in de captura de voz do assistente da tabela. O padrão permanece desabilitado para preservar controle de privacidade no host.",
          "label": "Entrada por voz do assistente",
          "default": "disabled"
        },
        {
          "name": "aiAssistantVoiceLanguage",
          "type": "string",
          "required": false,
          "description": "Código BCP 47 usado pelo serviço de transcrição do navegador quando a entrada por voz do assistente estiver habilitada.",
          "label": "Idioma da entrada por voz",
          "default": "pt-BR"
        },
        {
          "name": "filterCriteria",
          "type": "Record<string, any>",
          "required": false,
          "description": "Bridge legada de compatibilidade para filtros declarativos. Para novo authoring, prefira queryContext.",
          "label": "Criterios de filtro",
          "default": {}
        },
        {
          "name": "autoDelete",
          "type": "boolean",
          "required": false,
          "description": "Ativa deleção automática",
          "default": false
        },
        {
          "name": "enableCustomization",
          "type": "boolean",
          "required": false,
          "description": "Permite customização runtime da tabela",
          "default": false
        },
        {
          "name": "authoringCapability",
          "type": "string",
          "required": false,
          "description": "Capability publica do EnterpriseRuntimeContext exigida para exibir e abrir configuracao governada da tabela."
        },
        {
          "name": "dense",
          "type": "boolean",
          "required": false,
          "description": "Modo compacto",
          "default": false
        },
        {
          "name": "horizontalScroll",
          "type": "'auto' | 'wrap' | 'none'",
          "required": false,
          "description": "Política horizontal de rolagem/quebra aplicada ao viewport da tabela.",
          "default": "auto"
        },
        {
          "name": "tableId",
          "type": "string",
          "required": false,
          "description": "Identificador para armazenamento de configuração",
          "label": "ID da Tabela",
          "default": "default"
        },
        {
          "name": "componentInstanceId",
          "type": "string",
          "required": false,
          "description": "Identificador estável para instâncias múltiplas da tabela"
        },
        {
          "name": "title",
          "type": "string",
          "required": false,
          "description": "Título opcional usado por toolbar, quick connect e surfaces de configuração."
        },
        {
          "name": "subtitle",
          "type": "string",
          "required": false,
          "description": "Subtítulo opcional exibido em surfaces auxiliares do runtime."
        },
        {
          "name": "icon",
          "type": "string",
          "required": false,
          "description": "Ícone opcional usado em quick connect, settings e affordances do host."
        },
        {
          "name": "notifyIfOutdated",
          "type": "'inline' | 'snackbar' | 'both' | 'none'",
          "required": false,
          "description": "Publica avisos de drift de schema quando o host habilita notificação operacional.",
          "default": "both"
        },
        {
          "name": "snoozeMs",
          "type": "number",
          "required": false,
          "description": "Janela de snooze para avisos de drift quando a política operacional estiver habilitada.",
          "default": 86400000
        },
        {
          "name": "autoOpenSettingsOnOutdated",
          "type": "boolean",
          "required": false,
          "description": "Abre automaticamente o settings panel quando o runtime detecta schema desatualizado.",
          "default": false
        },
        {
          "name": "crudContext",
          "type": "any",
          "required": false,
          "description": "Contexto operacional opcional para overrides de CRUD, incluindo resolução de idField.",
          "default": null
        }
      ],
      "outputs": [
        {
          "name": "rowClick",
          "type": "{ row: any; index: number }",
          "required": false,
          "description": "Emitido ao clicar em uma linha",
          "label": "Clique na linha"
        },
        {
          "name": "widgetEvent",
          "type": "WidgetEventEnvelope",
          "required": false,
          "description": "Canal host-mediated para eventos runtime governados, incluindo abertura de superfície relacionada solicitada pelo assistente.",
          "label": "Evento de widget"
        },
        {
          "name": "resourceEvent",
          "type": "PraxisResourceEvent",
          "required": false,
          "description": "Envelope canonico emitido em paralelo para cliques, selecao, acoes, exportacao e abertura de superficies relacionadas; interacoes de registro incluem o resourceId resolvido pelo idField.",
          "label": "Evento de recurso"
        },
        {
          "name": "rowDoubleClick",
          "type": "{ action: string; row: any }",
          "required": false,
          "description": "Emitido ao dar duplo clique na linha (ação conforme Behavior)",
          "label": "Duplo clique na linha"
        },
        {
          "name": "rowExpansionChange",
          "type": "RowExpansionChangeEvent",
          "required": false,
          "description": "Emitido ao expandir/colapsar detalhes com contrato discriminado por política de exposição de identificadores",
          "label": "Mudança de expansão"
        },
        {
          "name": "selectionChange",
          "type": "{ trigger: string; row?: any; selectedRows: any[]; selectedCount: number; tableId?: string }",
          "required": false,
          "description": "Emitido quando a selecao de linhas muda por interacao do usuario",
          "label": "Selecao alterada"
        },
        {
          "name": "rowAction",
          "type": "{ action: string; row: any }",
          "required": false,
          "description": "Emitido ao acionar uma ação em uma linha",
          "label": "Ação na linha"
        },
        {
          "name": "toolbarAction",
          "type": "{ action: string }",
          "required": false,
          "description": "Emitido ao acionar uma ação da toolbar",
          "label": "Ação da toolbar"
        },
        {
          "name": "bulkAction",
          "type": "{ action: string; rows: any[] }",
          "required": false,
          "description": "Emitido ao executar ações em massa",
          "label": "Ação em massa"
        },
        {
          "name": "columnReorder",
          "type": "{ action: string; trigger: \"drag\" | \"keyboard\" | \"undo\"; operationId: number; tableId: string; sourceField: string; targetField: string; previousIndex: number; currentIndex: number; sourceZone: \"start\" | \"center\" | \"end\"; targetZone: \"start\" | \"center\" | \"end\"; previousOrder: string[]; currentOrder: string[]; persisted: boolean }",
          "required": false,
          "description": "Emitido quando a reordenação de colunas é concluída",
          "label": "Reordenação concluída"
        },
        {
          "name": "columnReorderAttempt",
          "type": "{ action: \"columnReorderAttempt\"; trigger: \"drag\" | \"keyboard\"; operationId: number; tableId: string; sourceField: string; targetField: string; previousIndex: number; currentIndex: number; sourceZone: \"start\" | \"center\" | \"end\"; targetZone: \"start\" | \"center\" | \"end\"; result: \"blocked\"; reasonCode: \"drop-zone-policy-blocked\"; configuredColumnDropZones: string[] }",
          "required": false,
          "description": "Emitido quando a reordenação é bloqueada pela política de zonas",
          "label": "Tentativa bloqueada"
        },
        {
          "name": "beforeDelete",
          "type": "any",
          "required": false,
          "description": "Antes de deletar uma linha"
        },
        {
          "name": "afterDelete",
          "type": "any",
          "required": false,
          "description": "Após deletar uma linha"
        },
        {
          "name": "deleteError",
          "type": "{ row: any; error: unknown }",
          "required": false,
          "description": "Erro ao deletar uma linha"
        },
        {
          "name": "beforeBulkDelete",
          "type": "any[]",
          "required": false,
          "description": "Antes de deletar múltiplas linhas"
        },
        {
          "name": "afterBulkDelete",
          "type": "any[]",
          "required": false,
          "description": "Após deletar múltiplas linhas"
        },
        {
          "name": "bulkDeleteError",
          "type": "{ rows: any[]; error: unknown }",
          "required": false,
          "description": "Erro ao deletar múltiplas linhas"
        },
        {
          "name": "schemaStatusChange",
          "type": "{ outdated: boolean; serverHash?: string; lastVerifiedAt?: string; trigger?: string; tableId?: string }",
          "required": false,
          "description": "Emitido quando o runtime verifica drift de schema ou atualiza o status de reconciliação"
        },
        {
          "name": "metadataChange",
          "type": "{ trigger: string; meta: any; tableId?: string }",
          "required": false,
          "description": "Emitido quando o runtime atualiza config.meta durante bootstrap, verificação ou aplicação"
        },
        {
          "name": "configChange",
          "type": "TableConfig",
          "required": false,
          "description": "Emitido quando o runtime aplica uma nova configuracao materializada por authoring, editor ou assistente"
        },
        {
          "name": "loadingStateChange",
          "type": "LoadingState",
          "required": false,
          "description": "Emitido quando a tabela muda de fase de carregamento no runtime"
        }
      ],
      "configSchemaId": "TableConfig",
      "selector": "praxis-table",
      "friendlyName": "Praxis Table",
      "icon": "grid_on",
      "tags": [
        "widget",
        "table",
        "configurable",
        "hasWizard",
        "stable"
      ],
      "lib": "@praxisui/table",
      "layoutHints": {
        "recommendedCols": 8,
        "recommendedRows": 6,
        "minCols": 5,
        "minRows": 4
      },
      "actions": [
        {
          "id": "refresh",
          "label": "Atualizar",
          "icon": "refresh",
          "description": "Solicita atualização da tabela",
          "emit": "toolbarAction",
          "payloadSchema": {
            "type": "object",
            "properties": {
              "action": {
                "type": "string",
                "description": "Identificador da ação"
              }
            },
            "required": [
              "action"
            ],
            "example": {
              "action": "refresh"
            }
          },
          "scope": "toolbar"
        },
        {
          "id": "export",
          "label": "Exportar",
          "icon": "file_download",
          "description": "Solicita exportação de dados",
          "emit": "toolbarAction",
          "payloadSchema": {
            "type": "object",
            "properties": {
              "action": {
                "type": "string",
                "description": "Identificador da ação"
              }
            },
            "required": [
              "action"
            ],
            "example": {
              "action": "export"
            }
          },
          "scope": "toolbar"
        },
        {
          "id": "create",
          "label": "Criar",
          "icon": "add",
          "description": "Solicita criação de um novo registro",
          "emit": "toolbarAction",
          "payloadSchema": {
            "type": "object",
            "properties": {
              "action": {
                "type": "string",
                "description": "Identificador da ação"
              }
            },
            "required": [
              "action"
            ],
            "example": {
              "action": "create"
            }
          },
          "scope": "toolbar"
        },
        {
          "id": "view",
          "label": "Visualizar",
          "icon": "visibility",
          "description": "Solicita visualização de uma linha",
          "emit": "rowAction",
          "payloadSchema": {
            "type": "object",
            "properties": {
              "action": {
                "type": "string",
                "description": "Identificador da ação"
              },
              "row": {
                "type": "object",
                "description": "Linha selecionada"
              }
            },
            "required": [
              "action",
              "row"
            ],
            "example": {
              "action": "view",
              "row": {}
            }
          },
          "scope": "context"
        },
        {
          "id": "edit",
          "label": "Editar",
          "icon": "edit",
          "description": "Solicita edição de uma linha",
          "emit": "rowAction",
          "payloadSchema": {
            "type": "object",
            "properties": {
              "action": {
                "type": "string",
                "description": "Identificador da ação"
              },
              "row": {
                "type": "object",
                "description": "Linha selecionada"
              }
            },
            "required": [
              "action",
              "row"
            ],
            "example": {
              "action": "edit",
              "row": {}
            }
          },
          "scope": "context"
        },
        {
          "id": "delete",
          "label": "Excluir",
          "icon": "delete",
          "description": "Solicita exclusão de uma linha",
          "emit": "rowAction",
          "payloadSchema": {
            "type": "object",
            "properties": {
              "action": {
                "type": "string",
                "description": "Identificador da ação"
              },
              "row": {
                "type": "object",
                "description": "Linha selecionada"
              }
            },
            "required": [
              "action",
              "row"
            ],
            "example": {
              "action": "delete",
              "row": {}
            }
          },
          "scope": "context"
        },
        {
          "id": "bulk-delete",
          "label": "Excluir em massa",
          "icon": "delete_sweep",
          "description": "Solicita exclusão de múltiplas linhas",
          "emit": "bulkAction",
          "payloadSchema": {
            "type": "object",
            "properties": {
              "action": {
                "type": "string",
                "description": "Identificador da ação"
              },
              "rows": {
                "type": "array",
                "description": "Linhas selecionadas"
              }
            },
            "required": [
              "action",
              "rows"
            ],
            "example": {
              "action": "delete",
              "rows": []
            }
          },
          "scope": "toolbar"
        }
      ],
      "ports": [
        {
          "id": "data",
          "label": "Local Data",
          "direction": "input",
          "semanticKind": "collection",
          "schema": {
            "id": "unknown[]",
            "kind": "ts-type",
            "ref": "unknown[]"
          },
          "description": "Colecao local materializada declarativamente por uma composicao de pagina.",
          "compatibility": {
            "acceptsSemanticKinds": [
              "collection"
            ],
            "schemaMode": "structural"
          },
          "exposure": {
            "public": true,
            "group": "data"
          }
        },
        {
          "id": "queryContext",
          "label": "Query Context",
          "direction": "input",
          "semanticKind": "query-context",
          "schema": {
            "id": "PraxisDataQueryContext",
            "kind": "ts-type",
            "ref": "PraxisDataQueryContext"
          },
          "description": "Contrato semantico primario de consulta para orquestracao declarativa.",
          "compatibility": {
            "acceptsSemanticKinds": [
              "query-context"
            ],
            "schemaMode": "structural"
          },
          "exposure": {
            "public": true,
            "group": "data"
          }
        },
        {
          "id": "filterCriteria",
          "label": "Filter Criteria",
          "direction": "input",
          "semanticKind": "config-fragment",
          "schema": {
            "id": "Record<string,any>",
            "kind": "ts-type",
            "ref": "Record<string, any>"
          },
          "description": "Bridge legada de compatibilidade para filtros.",
          "exposure": {
            "public": true,
            "deprecated": true,
            "group": "compatibility"
          }
        },
        {
          "id": "title",
          "label": "Title",
          "direction": "input",
          "semanticKind": "value",
          "schema": {
            "id": "string",
            "kind": "ts-type",
            "ref": "string"
          },
          "description": "Valor complementar de apresentacao para toolbar, quick connect e host surfaces.",
          "exposure": {
            "public": true,
            "group": "presentation"
          }
        },
        {
          "id": "subtitle",
          "label": "Subtitle",
          "direction": "input",
          "semanticKind": "value",
          "schema": {
            "id": "string",
            "kind": "ts-type",
            "ref": "string"
          },
          "description": "Valor complementar de apresentacao para contexto operacional do host.",
          "exposure": {
            "public": true,
            "group": "presentation"
          }
        },
        {
          "id": "rowClick",
          "label": "Row Click",
          "direction": "output",
          "semanticKind": "event",
          "schema": {
            "id": "PraxisTableRowClickEvent",
            "kind": "structural-shape",
            "ref": "{ row: any; index: number }"
          },
          "cardinality": "stream",
          "description": "Evento complementar de clique em linha sem substituir o output atual.",
          "exposure": {
            "public": true,
            "group": "selection"
          }
        },
        {
          "id": "selectionChange",
          "label": "Selection Change",
          "direction": "output",
          "semanticKind": "event",
          "schema": {
            "id": "PraxisTableSelectionChangeEvent",
            "kind": "structural-shape",
            "ref": "{ trigger: string; row?: any; selectedRows: any[]; selectedCount: number; tableId?: string }"
          },
          "cardinality": "stream",
          "description": "Evento canonico de selecao de linhas; tambem alimenta o contexto sanitizado do assistente sem decidir intencao primaria.",
          "exposure": {
            "public": true,
            "group": "selection"
          }
        },
        {
          "id": "resourceEvent",
          "label": "Resource Event",
          "direction": "output",
          "semanticKind": "event",
          "schema": {
            "id": "PraxisResourceEvent",
            "kind": "ts-type",
            "ref": "PraxisResourceEvent"
          },
          "cardinality": "stream",
          "description": "Envelope canonico para eventos de recurso, tabela e surface sem substituir os outputs legados.",
          "exposure": {
            "public": true,
            "group": "resource-runtime"
          }
        },
        {
          "id": "recordSurfaceOpen",
          "label": "Record Surface Open",
          "direction": "output",
          "semanticKind": "event",
          "schema": {
            "id": "PraxisTableRecordSurfaceOpenEvent",
            "kind": "structural-shape",
            "ref": "{ operationId: \"dynamicPage.surface.open\"; surface: RecordRelatedSurfaceContext; selectedRow: any; selectedRows: any[]; selectedCount: number; tableId?: string }"
          },
          "cardinality": "stream",
          "description": "Evento host-mediated emitido quando o assistente solicita abertura de uma superfície relacionada ao registro selecionado.",
          "exposure": {
            "public": true,
            "group": "ai-runtime"
          }
        },
        {
          "id": "loadingStateChange",
          "label": "Loading State",
          "direction": "output",
          "semanticKind": "status",
          "schema": {
            "id": "LoadingState",
            "kind": "ts-type",
            "ref": "LoadingState"
          },
          "cardinality": "stream",
          "description": "Sinal complementar de status operacional emitido pelo runtime.",
          "exposure": {
            "public": true,
            "group": "status"
          }
        }
      ],
      "runtimeProfiles": [
        {
          "id": "public-local-volatile",
          "audience": "public-untrusted",
          "description": "Tabela efêmera com dados inline e sem efeitos externos.",
          "constraints": [
            {
              "path": "resourcePath",
              "operator": "absent-or-empty"
            },
            {
              "path": "data",
              "operator": "array"
            },
            {
              "path": "configPersistenceStrategy",
              "operator": "equals",
              "value": "volatile"
            },
            {
              "path": "enableCustomization",
              "operator": "not-true"
            },
            {
              "path": "config.behavior.localDataMode.enabled",
              "operator": "equals",
              "value": true
            },
            {
              "path": "config.analyticsProjection",
              "operator": "absent-or-empty"
            },
            {
              "path": "config.actions.row.enabled",
              "operator": "not-true"
            },
            {
              "path": "config.actions.bulk.enabled",
              "operator": "not-true"
            },
            {
              "path": "config.export.enabled",
              "operator": "not-true"
            },
            {
              "path": "config.ai.assistant.enabled",
              "operator": "not-true"
            },
            {
              "path": "config.behavior.expansion.detail.source.mode",
              "operator": "none-of",
              "values": [
                "resourcePath",
                "hypermedia",
                "surface"
              ]
            },
            {
              "path": "config.columns[*].renderer.type",
              "operator": "none-of",
              "values": [
                "image",
                "avatar",
                "link",
                "button",
                "menu"
              ]
            },
            {
              "path": "config.columns[*].conditionalRenderers[*].renderer.type",
              "operator": "none-of",
              "values": [
                "image",
                "avatar",
                "link",
                "button",
                "menu"
              ]
            }
          ],
          "effects": []
        },
        {
          "id": "public-resource-read",
          "audience": "public-untrusted",
          "description": "Leitura paginada de recurso público, condicionada a capabilities do backend.",
          "constraints": [
            {
              "path": "resourcePath",
              "operator": "present"
            },
            {
              "path": "configPersistenceStrategy",
              "operator": "equals",
              "value": "volatile"
            },
            {
              "path": "enableCustomization",
              "operator": "not-true"
            },
            {
              "path": "config.analyticsProjection",
              "operator": "absent-or-empty"
            },
            {
              "path": "config.actions.row.enabled",
              "operator": "not-true"
            },
            {
              "path": "config.actions.bulk.enabled",
              "operator": "not-true"
            },
            {
              "path": "config.export.enabled",
              "operator": "not-true"
            },
            {
              "path": "config.ai.assistant.enabled",
              "operator": "not-true"
            },
            {
              "path": "config.behavior.expansion.detail.source.mode",
              "operator": "none-of",
              "values": [
                "resourcePath",
                "hypermedia",
                "surface"
              ]
            },
            {
              "path": "config.columns[*].renderer.type",
              "operator": "none-of",
              "values": [
                "image",
                "avatar",
                "link",
                "button",
                "menu"
              ]
            },
            {
              "path": "config.columns[*].conditionalRenderers[*].renderer.type",
              "operator": "none-of",
              "values": [
                "image",
                "avatar",
                "link",
                "button",
                "menu"
              ]
            }
          ],
          "effects": [
            {
              "kind": "resource-read",
              "resourcePath": "resourcePath",
              "operations": [
                {
                  "operationId": "filter",
                  "method": "POST",
                  "pathSuffix": "filter",
                  "role": "primary",
                  "queryContext": {
                    "portId": "queryContext",
                    "requestFieldPath": "$"
                  }
                }
              ]
            }
          ]
        }
      ],
      "configEditor": {
        "component": "[ref:PraxisTableWidgetConfigEditor]",
        "title": "Configurar tabela"
      },
      "authoringManifestRef": {
        "componentId": "praxis-table",
        "source": "PRAXIS_TABLE_AUTHORING_MANIFEST"
      },
      "source": "projects/praxis-table/src/lib/praxis-table.metadata.ts",
      "exportName": "PRAXIS_TABLE_COMPONENT_METADATA",
      "capabilities": [
        {
          "path": "meta.name",
          "category": "meta",
          "valueKind": "string",
          "description": "Nome amigável da configuração para exibição em tooltips ou relatórios.",
          "intentExamples": [
            "renomear tabela",
            "chamar de Funcionários"
          ],
          "example": "\"Funcionários ativos\""
        },
        {
          "path": "meta.description",
          "category": "meta",
          "valueKind": "string",
          "description": "Descrição breve do propósito da tabela.",
          "intentExamples": [
            "documentar tabela",
            "anotar uso em relatórios"
          ],
          "example": "\"Visão dos funcionários ativos com filtros por status.\""
        },
        {
          "path": "meta.tags",
          "category": "meta",
          "valueKind": "array",
          "description": "Tags para busca, presets e telemetria.",
          "intentExamples": [
            "adicionar tag demo",
            "marcar como financeiro"
          ],
          "example": "[\"financeiro\",\"demo\"]"
        },
        {
          "path": "meta.idField",
          "category": "meta",
          "valueKind": "string",
          "description": "Campo usado como chave primária operacional da tabela.",
          "critical": true,
          "intentExamples": [
            "usar employeeId como chave",
            "trocar id da linha"
          ],
          "example": "\"employeeId\"",
          "safetyNotes": "Trocar idField sem migrar dados pode quebrar seleção e ações por linha."
        },
        {
          "path": "meta.schemaId",
          "category": "meta",
          "valueKind": "string",
          "description": "Identidade do schema de origem para reconciliação.",
          "intentExamples": [
            "registrar schema",
            "alinhar com API X"
          ],
          "example": "\"path:/employees#response\""
        },
        {
          "path": "columns[].field",
          "category": "columns",
          "valueKind": "string",
          "description": "Identificador técnico no dataset. Deve ser único.",
          "critical": true,
          "intentExamples": [
            "apontar campo source",
            "usar field id"
          ],
          "example": "\"status\""
        },
        {
          "path": "columns[].header",
          "category": "columns",
          "valueKind": "string",
          "description": "Texto exibido no cabeçalho da coluna.",
          "intentExamples": [
            "renomear coluna",
            "mudar título para"
          ],
          "example": "\"Status do colaborador\""
        },
        {
          "path": "columns[].visible",
          "category": "columns",
          "valueKind": "boolean",
          "description": "Controla a visibilidade da coluna. Crítico para UX.",
          "critical": true,
          "intentExamples": [
            "esconder coluna",
            "mostrar apenas",
            "remover coluna"
          ]
        },
        {
          "path": "columns[].order",
          "category": "columns",
          "valueKind": "number",
          "description": "Ordem visual. Menor número = mais à esquerda.",
          "intentExamples": [
            "mover para o início",
            "trocar ordem",
            "colocar depois de"
          ],
          "example": "0"
        },
        {
          "path": "columns[].width",
          "category": "columns",
          "valueKind": "string",
          "description": "Largura da coluna (ex.: 100px, 10%, auto).",
          "intentExamples": [
            "aumentar largura",
            "coluna mais estreita"
          ],
          "example": "\"140px\""
        },
        {
          "path": "columns[].align",
          "category": "columns",
          "valueKind": "enum",
          "allowedValues": [
            "left",
            "center",
            "right"
          ],
          "description": "Alinhamento do conteúdo e cabeçalho.",
          "intentExamples": [
            "centralizar coluna",
            "alinhar à direita"
          ]
        },
        {
          "path": "columns[].sticky",
          "category": "columns",
          "valueKind": "enum",
          "allowedValues": [
            "start",
            "end",
            true,
            false
          ],
          "description": "Fixa a coluna no início (start/true) ou fim (end) da rolagem; false desativa sticky.",
          "intentExamples": [
            "congelar coluna",
            "fixar à esquerda"
          ],
          "safetyNotes": "Use start/end para expressar direção quando a coluna fixa precisar de semântica explícita."
        },
        {
          "path": "columns[].sortable",
          "category": "columns",
          "valueKind": "boolean",
          "description": "Habilita ordenação nesta coluna específica.",
          "intentExamples": [
            "permitir ordenar por",
            "bloquear ordenação"
          ]
        },
        {
          "path": "columns[].filterable",
          "category": "columns",
          "valueKind": "boolean",
          "description": "Habilita filtro nesta coluna específica.",
          "intentExamples": [
            "filtrar por",
            "adicionar filtro em"
          ]
        },
        {
          "path": "columns[].resizable",
          "category": "columns",
          "valueKind": "boolean",
          "description": "Permite redimensionar a largura desta coluna."
        },
        {
          "path": "columns[].type",
          "category": "columns",
          "valueKind": "enum",
          "allowedValues": [
            "string",
            "number",
            "date",
            "boolean",
            "currency",
            "percentage",
            "custom"
          ],
          "description": "Tipo de dado base para formatação padrão.",
          "intentExamples": [
            "formatar como moeda",
            "tratar como data"
          ]
        },
        {
          "path": "columns[].sortField",
          "category": "columns",
          "valueKind": "string",
          "description": "Campo usado para ordenação no backend, se diferente de \"field\".",
          "example": "\"created_at\""
        },
        {
          "path": "columns[].style",
          "category": "columns",
          "valueKind": "string",
          "description": "Estilos CSS inline aplicados à célula.",
          "intentExamples": [
            "mudar cor do texto da coluna",
            "destacar coluna"
          ],
          "example": "\"color: #1976d2; font-weight: 600;\""
        },
        {
          "path": "columns[].headerStyle",
          "category": "columns",
          "valueKind": "string",
          "description": "Estilos CSS para o cabeçalho da coluna.",
          "intentExamples": [
            "negrito no cabeçalho",
            "centralizar título"
          ],
          "example": "\"text-transform: uppercase;\""
        },
        {
          "path": "columns[].valueMapping",
          "category": "mapping",
          "valueKind": "object",
          "description": "Mapeia valores crus para rótulos amigáveis.",
          "intentExamples": [
            "mostrar status como rótulo",
            "mapear 1 para Ativo"
          ],
          "example": "{ \"1\": \"Ativo\", \"0\": \"Inativo\" }"
        },
        {
          "path": "columns[].format",
          "category": "format",
          "valueKind": "string",
          "description": "Formato de exibicao especifico (DataFormattingService). Presets em allowedValues; aceita DatePipe (dd/MM/yyyy, yyyy-MM-dd, yyyy-MM-dd HH:mm) e formatos numericos \"1.2-2\".",
          "intentExamples": [
            "formato de data",
            "2 casas decimais"
          ],
          "example": "\"BRL|symbol|2\"",
          "safetyNotes": "Gramatica suportada: currency \"BRL|symbol|2|nosep\"; percentage \"1.2-2|x100\"; boolean \"custom|Sim|Nao\"; string \"uppercase|truncate|50|...\"; mascaras com 0#9X (ex: \"000.000.000-00\")."
        },
        {
          "path": "columns[].computed",
          "category": "columns",
          "valueKind": "object",
          "description": "Configuração de coluna calculada (expression + tipo/format).",
          "intentExamples": [
            "coluna calculada",
            "criar total",
            "calcular idade",
            "dias desde cadastro",
            "tempo de casa",
            "idade em meses",
            "bonus com fallback",
            "arredondar valor"
          ],
          "safetyNotes": "Use expression como AST Json Logic canônico para derived values. Sem JS, sem eval e sem strings DSL. Operadores/funções canônicos relevantes: +, -, *, /, %, min, max, cat, substr, round, ceil, floor, abs, coalesce, now, date, yearsSince, monthsSince, daysSince, len, toNumber e stringify."
        },
        {
          "path": "columns[].computed.expression",
          "category": "columns",
          "valueKind": "expression",
          "description": "AST Json Logic canônico para derivar valores computados da linha.",
          "intentExamples": [
            "{ \"*\": [{ \"var\": \"quantity\" }, { \"var\": \"price\" }] }",
            "{ \"yearsSince\": [{ \"var\": \"dataNascimento\" }] }",
            "{ \"+\": [{ \"coalesce\": [{ \"var\": \"bonus\" }, 0] }, { \"var\": \"salario\" }] }"
          ],
          "safetyNotes": "Deve ser objeto Json Logic não vazio. Use { \"var\": \"campo\" } para acessar dados da linha e { \"var\": \"computed.campo\" } para depender de outra coluna computada. O runtime resolve dependências entre computeds sem depender da ordem física das colunas. Não use strings como \"quantity * price\" nem qualquer forma de JS."
        },
        {
          "path": "columns[].computed.outputType",
          "category": "format",
          "valueKind": "enum",
          "allowedValues": [
            "string",
            "number",
            "date",
            "boolean",
            "currency",
            "percentage",
            "custom"
          ],
          "description": "Tipo de saída do cálculo para formatação.",
          "intentExamples": [
            "resultado como currency",
            "resultado como number"
          ]
        },
        {
          "path": "columns[].computed.format",
          "category": "format",
          "valueKind": "string",
          "description": "Formato de exibição do resultado calculado.",
          "example": "\"BRL|symbol|2\""
        },
        {
          "path": "columns[].computed.dependencies",
          "category": "columns",
          "valueKind": "array",
          "description": "Campos usados na expressão (opcional).",
          "intentExamples": [
            "dependencias da coluna calculada"
          ]
        },
        {
          "path": "columns[].renderer.type",
          "category": "renderer",
          "valueKind": "enum",
          "allowedValues": [
            "icon",
            "image",
            "badge",
            "link",
            "button",
            "chip",
            "progress",
            "avatar",
            "toggle",
            "menu",
            "rating",
            "microVisualization",
            "html",
            "compose"
          ],
          "description": "Tipo de renderizador customizado (icon, badge, button etc.).",
          "critical": true,
          "intentExamples": [
            "mostrar ícone",
            "transformar em botão de ação"
          ],
          "safetyNotes": "Tipos interativos (button, toggle, menu) exigem ação configurada e review de UX."
        },
        {
          "path": "columns[].renderer.typeExpr",
          "category": "renderer",
          "valueKind": "expression",
          "description": "Expressao computada do dominio da tabela para decidir o tipo do renderer; nao e Json Logic.",
          "dependsOn": "columns[].renderer.type"
        },
        {
          "path": "columns[].renderer.button",
          "category": "renderer",
          "valueKind": "object",
          "description": "Configuração do botão por linha.",
          "dependsOn": "columns[].renderer.type",
          "intentExamples": [
            "adicionar botão de editar",
            "colocar botão warn"
          ],
          "example": "{ label: \"Editar\", icon: \"edit\", variant: \"outlined\", action: { id: \"edit-row\" } }"
        },
        {
          "path": "columns[].renderer.button.label",
          "category": "renderer",
          "valueKind": "string",
          "description": "Texto fixo do botao.",
          "dependsOn": "columns[].renderer.button"
        },
        {
          "path": "columns[].renderer.button.labelField",
          "category": "renderer",
          "valueKind": "string",
          "description": "Campo do row para texto do botao.",
          "dependsOn": "columns[].renderer.button"
        },
        {
          "path": "columns[].renderer.button.icon",
          "category": "renderer",
          "valueKind": "string",
          "description": "Icone do botao.",
          "dependsOn": "columns[].renderer.button"
        },
        {
          "path": "columns[].renderer.button.color",
          "category": "renderer",
          "valueKind": "enum",
          "allowedValues": [
            "primary",
            "accent",
            "warn"
          ],
          "description": "Cor do botao (ou token CSS).",
          "dependsOn": "columns[].renderer.button"
        },
        {
          "path": "columns[].renderer.button.variant",
          "category": "renderer",
          "valueKind": "enum",
          "allowedValues": [
            "filled",
            "outlined",
            "text"
          ],
          "description": "Variante visual do botao.",
          "dependsOn": "columns[].renderer.button"
        },
        {
          "path": "columns[].renderer.button.size",
          "category": "renderer",
          "valueKind": "enum",
          "allowedValues": [
            "sm",
            "md",
            "lg"
          ],
          "description": "Tamanho do botao.",
          "dependsOn": "columns[].renderer.button"
        },
        {
          "path": "columns[].renderer.button.ariaLabel",
          "category": "renderer",
          "valueKind": "string",
          "description": "Label acessivel do botao.",
          "dependsOn": "columns[].renderer.button"
        },
        {
          "path": "columns[].renderer.button.disabledCondition",
          "category": "renderer",
          "valueKind": "expression",
          "description": "Expressao condicional canonica em JSON Logic para desabilitar.",
          "dependsOn": "columns[].renderer.button",
          "safetyNotes": "Pode referenciar computed.<field>. Sem JS/eval."
        },
        {
          "path": "columns[].renderer.button.action",
          "category": "renderer",
          "valueKind": "object",
          "description": "Acao disparada pelo botao.",
          "dependsOn": "columns[].renderer.button"
        },
        {
          "path": "columns[].renderer.button.action.id",
          "category": "renderer",
          "valueKind": "string",
          "description": "Identificador da acao do botao.",
          "dependsOn": "columns[].renderer.button.action"
        },
        {
          "path": "columns[].renderer.button.action.payloadExpr",
          "category": "renderer",
          "valueKind": "expression",
          "description": "Expressao computada do dominio da tabela para montar o payload da acao; nao e Json Logic.",
          "dependsOn": "columns[].renderer.button.action"
        },
        {
          "path": "columns[].renderer.link",
          "category": "renderer",
          "valueKind": "object",
          "description": "Link sanitizado com href fixo ou field.",
          "dependsOn": "columns[].renderer.type",
          "intentExamples": [
            "abrir detalhe em nova aba"
          ],
          "example": "{ textField: \"name\", hrefField: \"profileUrl\", target: \"_blank\" }",
          "safetyNotes": "Evitar href vindo de campo sem sanitização/whitelist."
        },
        {
          "path": "columns[].renderer.link.text",
          "category": "renderer",
          "valueKind": "string",
          "description": "Texto fixo do link.",
          "dependsOn": "columns[].renderer.link"
        },
        {
          "path": "columns[].renderer.link.textField",
          "category": "renderer",
          "valueKind": "string",
          "description": "Campo para texto do link.",
          "dependsOn": "columns[].renderer.link"
        },
        {
          "path": "columns[].renderer.link.href",
          "category": "renderer",
          "valueKind": "string",
          "description": "Href fixo do link.",
          "dependsOn": "columns[].renderer.link"
        },
        {
          "path": "columns[].renderer.link.hrefField",
          "category": "renderer",
          "valueKind": "string",
          "description": "Campo para href do link.",
          "dependsOn": "columns[].renderer.link"
        },
        {
          "path": "columns[].renderer.link.target",
          "category": "renderer",
          "valueKind": "enum",
          "allowedValues": [
            "_blank",
            "_self",
            "_parent",
            "_top"
          ],
          "description": "Target do link.",
          "dependsOn": "columns[].renderer.link"
        },
        {
          "path": "columns[].renderer.link.rel",
          "category": "renderer",
          "valueKind": "string",
          "description": "Atributo rel do link.",
          "dependsOn": "columns[].renderer.link"
        },
        {
          "path": "columns[].renderer.icon",
          "category": "renderer",
          "valueKind": "object",
          "description": "Icone material/SVG com cor, tamanho e texto opcional ao lado do valor.",
          "dependsOn": "columns[].renderer.type",
          "example": "{ name: \"tag\", textField: \"codigo\", prefix: \"#\", color: \"success\", size: 18 }",
          "intentExamples": [
            "mostrar ícone de status",
            "icone verde para ativo",
            "mostrar codigo com # e icone"
          ]
        },
        {
          "path": "columns[].renderer.icon.name",
          "category": "renderer",
          "valueKind": "string",
          "description": "Nome fixo do icone.",
          "dependsOn": "columns[].renderer.icon"
        },
        {
          "path": "columns[].renderer.icon.nameField",
          "category": "renderer",
          "valueKind": "string",
          "description": "Campo com nome do icone.",
          "dependsOn": "columns[].renderer.icon"
        },
        {
          "path": "columns[].renderer.icon.text",
          "category": "renderer",
          "valueKind": "string",
          "description": "Texto fixo renderizado junto ao icone.",
          "dependsOn": "columns[].renderer.icon"
        },
        {
          "path": "columns[].renderer.icon.textField",
          "category": "renderer",
          "valueKind": "string",
          "description": "Campo de linha usado como texto renderizado junto ao icone.",
          "dependsOn": "columns[].renderer.icon"
        },
        {
          "path": "columns[].renderer.icon.prefix",
          "category": "renderer",
          "valueKind": "string",
          "description": "Prefixo visual aplicado somente ao texto exibido pelo renderer de icone.",
          "dependsOn": "columns[].renderer.icon"
        },
        {
          "path": "columns[].renderer.icon.suffix",
          "category": "renderer",
          "valueKind": "string",
          "description": "Sufixo visual aplicado somente ao texto exibido pelo renderer de icone.",
          "dependsOn": "columns[].renderer.icon"
        },
        {
          "path": "columns[].renderer.icon.color",
          "category": "renderer",
          "valueKind": "string",
          "description": "Cor do icone.",
          "dependsOn": "columns[].renderer.icon"
        },
        {
          "path": "columns[].renderer.icon.size",
          "category": "renderer",
          "valueKind": "number",
          "description": "Tamanho em px.",
          "dependsOn": "columns[].renderer.icon"
        },
        {
          "path": "columns[].renderer.icon.ariaLabel",
          "category": "renderer",
          "valueKind": "string",
          "description": "Label acessivel do icone.",
          "dependsOn": "columns[].renderer.icon"
        },
        {
          "path": "columns[].renderer.image",
          "category": "renderer",
          "valueKind": "object",
          "description": "Imagem com src fixo ou field.",
          "dependsOn": "columns[].renderer.type"
        },
        {
          "path": "columns[].renderer.image.src",
          "category": "renderer",
          "valueKind": "string",
          "description": "URL fixa da imagem.",
          "dependsOn": "columns[].renderer.image"
        },
        {
          "path": "columns[].renderer.image.srcField",
          "category": "renderer",
          "valueKind": "string",
          "description": "Campo com URL da imagem.",
          "dependsOn": "columns[].renderer.image"
        },
        {
          "path": "columns[].renderer.image.alt",
          "category": "renderer",
          "valueKind": "string",
          "description": "Alt fixo da imagem.",
          "dependsOn": "columns[].renderer.image"
        },
        {
          "path": "columns[].renderer.image.altField",
          "category": "renderer",
          "valueKind": "string",
          "description": "Campo com alt da imagem.",
          "dependsOn": "columns[].renderer.image"
        },
        {
          "path": "columns[].renderer.image.width",
          "category": "renderer",
          "valueKind": "number",
          "description": "Largura em px.",
          "dependsOn": "columns[].renderer.image"
        },
        {
          "path": "columns[].renderer.image.height",
          "category": "renderer",
          "valueKind": "number",
          "description": "Altura em px.",
          "dependsOn": "columns[].renderer.image"
        },
        {
          "path": "columns[].renderer.image.shape",
          "category": "renderer",
          "valueKind": "enum",
          "allowedValues": [
            "square",
            "rounded",
            "circle"
          ],
          "description": "Formato da imagem.",
          "dependsOn": "columns[].renderer.image"
        },
        {
          "path": "columns[].renderer.image.fit",
          "category": "renderer",
          "valueKind": "enum",
          "allowedValues": [
            "cover",
            "contain"
          ],
          "description": "Ajuste da imagem.",
          "dependsOn": "columns[].renderer.image"
        },
        {
          "path": "columns[].renderer.image.lazy",
          "category": "renderer",
          "valueKind": "boolean",
          "description": "Ativa lazy loading.",
          "dependsOn": "columns[].renderer.image"
        },
        {
          "path": "columns[].renderer.html",
          "category": "renderer",
          "valueKind": "object",
          "description": "HTML sanitizado com placeholders [[field]].",
          "dependsOn": "columns[].renderer.type",
          "example": "{ template: \"<strong>[[name]]</strong>\", sanitize: \"strict\" }",
          "safetyNotes": "Usar sanitize strict sempre que possível; evitar HTML vindo direto do usuário."
        },
        {
          "path": "columns[].renderer.html.template",
          "category": "renderer",
          "valueKind": "string",
          "description": "Template HTML com placeholders [[field]].",
          "dependsOn": "columns[].renderer.html"
        },
        {
          "path": "columns[].renderer.html.sanitize",
          "category": "renderer",
          "valueKind": "enum",
          "allowedValues": [
            "strict",
            "basic"
          ],
          "description": "Nivel de sanitizacao.",
          "dependsOn": "columns[].renderer.html"
        },
        {
          "path": "columns[].renderer.html.emptyFallback",
          "category": "renderer",
          "valueKind": "string",
          "description": "Fallback quando campo esta vazio.",
          "dependsOn": "columns[].renderer.html"
        },
        {
          "path": "columns[].renderer.menu",
          "category": "renderer",
          "valueKind": "object",
          "description": "Menu de ações por linha.",
          "dependsOn": "columns[].renderer.type",
          "intentExamples": [
            "menu de ações rápidas"
          ],
          "example": "{ itemsExpr: \"row.menuItems\", ariaLabel: \"Ações da linha\" }"
        },
        {
          "path": "columns[].renderer.menu.itemsExpr",
          "category": "renderer",
          "valueKind": "expression",
          "description": "Expressao computada do dominio da tabela para montar itens do menu; nao e Json Logic.",
          "dependsOn": "columns[].renderer.menu"
        },
        {
          "path": "columns[].renderer.menu.ariaLabel",
          "category": "renderer",
          "valueKind": "string",
          "description": "Label acessivel do menu.",
          "dependsOn": "columns[].renderer.menu"
        },
        {
          "path": "columns[].renderer.badge",
          "category": "renderer",
          "valueKind": "object",
          "description": "Badge simples (texto curto/status). Exige textField ou text.",
          "dependsOn": "columns[].renderer.type",
          "example": "{ text: \"Ativo\", color: \"success\", variant: \"filled\", icon: \"check\" }"
        },
        {
          "path": "columns[].renderer.badge.text",
          "category": "renderer",
          "valueKind": "string",
          "description": "Texto fixo do badge.",
          "dependsOn": "columns[].renderer.badge"
        },
        {
          "path": "columns[].renderer.badge.textField",
          "category": "renderer",
          "valueKind": "string",
          "description": "Campo de onde ler o texto do badge.",
          "dependsOn": "columns[].renderer.badge"
        },
        {
          "path": "columns[].renderer.badge.color",
          "category": "renderer",
          "valueKind": "string",
          "description": "Cor do badge (primary/accent/warn/success/etc).",
          "dependsOn": "columns[].renderer.badge"
        },
        {
          "path": "columns[].renderer.badge.variant",
          "category": "renderer",
          "valueKind": "enum",
          "allowedValues": [
            "filled",
            "outlined",
            "soft",
            "plain"
          ],
          "description": "Estilo visual do badge.",
          "dependsOn": "columns[].renderer.badge"
        },
        {
          "path": "columns[].renderer.badge.icon",
          "category": "renderer",
          "valueKind": "string",
          "description": "Ícone opcional dentro do badge.",
          "dependsOn": "columns[].renderer.badge"
        },
        {
          "path": "columns[].renderer.chip",
          "category": "renderer",
          "valueKind": "object",
          "description": "Chip interativo ou de status.",
          "dependsOn": "columns[].renderer.type",
          "example": "{ text: \"Ativo\", color: \"primary\", variant: \"filled\", icon: \"verified\" }",
          "intentExamples": [
            "chip de status",
            "chip com ícone para ativo"
          ]
        },
        {
          "path": "columns[].renderer.chip.text",
          "category": "renderer",
          "valueKind": "string",
          "description": "Texto fixo do chip.",
          "dependsOn": "columns[].renderer.chip"
        },
        {
          "path": "columns[].renderer.chip.textField",
          "category": "renderer",
          "valueKind": "string",
          "description": "Campo de texto do chip.",
          "dependsOn": "columns[].renderer.chip"
        },
        {
          "path": "columns[].renderer.chip.color",
          "category": "renderer",
          "valueKind": "string",
          "description": "Cor do chip.",
          "dependsOn": "columns[].renderer.chip"
        },
        {
          "path": "columns[].renderer.chip.variant",
          "category": "renderer",
          "valueKind": "enum",
          "allowedValues": [
            "filled",
            "outlined",
            "soft",
            "plain"
          ],
          "description": "Variante do chip.",
          "dependsOn": "columns[].renderer.chip"
        },
        {
          "path": "columns[].renderer.chip.icon",
          "category": "renderer",
          "valueKind": "string",
          "description": "Ícone do chip.",
          "dependsOn": "columns[].renderer.chip"
        },
        {
          "path": "columns[].renderer.progress",
          "category": "renderer",
          "valueKind": "object",
          "description": "Barra de progresso.",
          "dependsOn": "columns[].renderer.type"
        },
        {
          "path": "columns[].renderer.progress.valueExpr",
          "category": "renderer",
          "valueKind": "expression",
          "description": "Expressao computada do dominio da tabela para obter o valor (0-100); nao e Json Logic.",
          "dependsOn": "columns[].renderer.progress"
        },
        {
          "path": "columns[].renderer.progress.color",
          "category": "renderer",
          "valueKind": "string",
          "description": "Cor da barra.",
          "dependsOn": "columns[].renderer.progress"
        },
        {
          "path": "columns[].renderer.progress.showLabel",
          "category": "renderer",
          "valueKind": "boolean",
          "description": "Mostra valor numérico ao lado.",
          "dependsOn": "columns[].renderer.progress"
        },
        {
          "path": "columns[].renderer.avatar",
          "category": "renderer",
          "valueKind": "object",
          "description": "Avatar de usuário ou entidade.",
          "dependsOn": "columns[].renderer.type"
        },
        {
          "path": "columns[].renderer.avatar.src",
          "category": "renderer",
          "valueKind": "string",
          "description": "URL fixa da imagem.",
          "dependsOn": "columns[].renderer.avatar"
        },
        {
          "path": "columns[].renderer.avatar.srcField",
          "category": "renderer",
          "valueKind": "string",
          "description": "Campo contendo URL da imagem.",
          "dependsOn": "columns[].renderer.avatar"
        },
        {
          "path": "columns[].renderer.avatar.alt",
          "category": "renderer",
          "valueKind": "string",
          "description": "Texto alternativo fixo.",
          "dependsOn": "columns[].renderer.avatar"
        },
        {
          "path": "columns[].renderer.avatar.altField",
          "category": "renderer",
          "valueKind": "string",
          "description": "Campo para texto alternativo.",
          "dependsOn": "columns[].renderer.avatar"
        },
        {
          "path": "columns[].renderer.avatar.initialsField",
          "category": "renderer",
          "valueKind": "string",
          "description": "Campo textual bruto para derivar iniciais automaticamente.",
          "dependsOn": "columns[].renderer.avatar"
        },
        {
          "path": "columns[].renderer.avatar.initialsExpr",
          "category": "renderer",
          "valueKind": "expression",
          "description": "Expressao computada do dominio da tabela para derivar iniciais; nao e Json Logic.",
          "dependsOn": "columns[].renderer.avatar"
        },
        {
          "path": "columns[].renderer.avatar.shape",
          "category": "renderer",
          "valueKind": "string",
          "allowedValues": [
            "circle",
            "square",
            "rounded"
          ],
          "description": "Formato do avatar.",
          "dependsOn": "columns[].renderer.avatar"
        },
        {
          "path": "columns[].renderer.avatar.size",
          "category": "renderer",
          "valueKind": "number",
          "description": "Tamanho em px.",
          "dependsOn": "columns[].renderer.avatar"
        },
        {
          "path": "columns[].renderer.avatar.backgroundColor",
          "category": "renderer",
          "valueKind": "string",
          "description": "Cor de fundo do círculo do avatar. Use com conditionalRenderers para variar por linha.",
          "dependsOn": "columns[].renderer.avatar"
        },
        {
          "path": "columns[].renderer.avatar.textColor",
          "category": "renderer",
          "valueKind": "string",
          "description": "Cor das iniciais do avatar. Use contraste adequado com backgroundColor.",
          "dependsOn": "columns[].renderer.avatar"
        },
        {
          "path": "columns[].renderer.toggle",
          "category": "renderer",
          "valueKind": "object",
          "description": "Switch/Toggle booleano interativo.",
          "dependsOn": "columns[].renderer.type"
        },
        {
          "path": "columns[].renderer.toggle.stateExpr",
          "category": "renderer",
          "valueKind": "expression",
          "description": "Expressao computada do dominio da tabela para definir o estado checked; nao e Json Logic.",
          "dependsOn": "columns[].renderer.toggle"
        },
        {
          "path": "columns[].renderer.toggle.disabledCondition",
          "category": "renderer",
          "valueKind": "expression",
          "description": "Condicao canonica em Json Logic para desabilitacao.",
          "dependsOn": "columns[].renderer.toggle",
          "safetyNotes": "Pode referenciar computed.<field>. Sem JS/eval."
        },
        {
          "path": "columns[].renderer.toggle.ariaLabel",
          "category": "renderer",
          "valueKind": "string",
          "description": "Label acessível.",
          "dependsOn": "columns[].renderer.toggle"
        },
        {
          "path": "columns[].renderer.toggle.action",
          "category": "renderer",
          "valueKind": "object",
          "description": "Ação disparada ao mudar.",
          "dependsOn": "columns[].renderer.toggle"
        },
        {
          "path": "columns[].renderer.toggle.action.id",
          "category": "renderer",
          "valueKind": "string",
          "description": "Identificador da ação para toggle.",
          "dependsOn": "columns[].renderer.toggle.action"
        },
        {
          "path": "columns[].renderer.toggle.action.payloadExpr",
          "category": "renderer",
          "valueKind": "expression",
          "description": "Expressao computada do dominio da tabela para montar o payload da acao; nao e Json Logic.",
          "dependsOn": "columns[].renderer.toggle.action"
        },
        {
          "path": "columns[].renderer.rating",
          "category": "renderer",
          "valueKind": "object",
          "description": "Estrelas de avaliação.",
          "dependsOn": "columns[].renderer.type"
        },
        {
          "path": "columns[].renderer.rating.valueExpr",
          "category": "renderer",
          "valueKind": "expression",
          "description": "Expressao computada do dominio da tabela para obter o valor numerico; nao e Json Logic.",
          "dependsOn": "columns[].renderer.rating"
        },
        {
          "path": "columns[].renderer.rating.max",
          "category": "renderer",
          "valueKind": "number",
          "description": "Máximo de estrelas (default 5).",
          "dependsOn": "columns[].renderer.rating"
        },
        {
          "path": "columns[].renderer.rating.color",
          "category": "renderer",
          "valueKind": "string",
          "description": "Cor das estrelas ativas.",
          "dependsOn": "columns[].renderer.rating"
        },
        {
          "path": "columns[].renderer.rating.outlineColor",
          "category": "renderer",
          "valueKind": "string",
          "description": "Cor das bordas das estrelas.",
          "dependsOn": "columns[].renderer.rating"
        },
        {
          "path": "columns[].renderer.rating.size",
          "category": "renderer",
          "valueKind": "enum",
          "allowedValues": [
            "small",
            "medium",
            "large"
          ],
          "description": "Tamanho das estrelas.",
          "dependsOn": "columns[].renderer.rating"
        },
        {
          "path": "columns[].renderer.rating.ariaLabel",
          "category": "renderer",
          "valueKind": "string",
          "description": "Label acessível para a avaliação.",
          "dependsOn": "columns[].renderer.rating"
        },
        {
          "path": "columns[].renderer.compose",
          "category": "renderer",
          "valueKind": "object",
          "description": "Composição de múltiplos renderers na mesma célula.",
          "dependsOn": "columns[].renderer.type"
        },
        {
          "path": "columns[].renderer.compose.items",
          "category": "renderer",
          "valueKind": "array",
          "description": "Lista de renderers aninhados.",
          "dependsOn": "columns[].renderer.compose"
        },
        {
          "path": "columns[].renderer.compose.items[].type",
          "category": "renderer",
          "valueKind": "enum",
          "allowedValues": [
            "value",
            "icon",
            "image",
            "badge",
            "link",
            "button",
            "chip",
            "progress",
            "avatar",
            "toggle",
            "menu",
            "rating",
            "microVisualization",
            "html"
          ],
          "description": "Tipo do item de compose.",
          "dependsOn": "columns[].renderer.compose.items"
        },
        {
          "path": "columns[].renderer.compose.items[]",
          "category": "renderer",
          "valueKind": "object",
          "description": "Item do compose (ex.: { type: \"badge\", badge: {...} }, { type: \"icon\", icon: {...} }, { type: \"link\", link: {...} }).",
          "dependsOn": "columns[].renderer.compose.items",
          "safetyNotes": "Sempre informe \"type\" e o bloco correspondente (icon, badge, link, button, chip, progress, avatar, toggle, menu, html, image, rating).",
          "intentExamples": [
            "item icon com name, color e size",
            "item badge com textField, color e variant soft",
            "item link com textField, hrefField e target _blank",
            "item button com label, icon e action.id",
            "item chip com text e color",
            "item progress com valueExpr e showLabel",
            "item avatar com srcField, initialsField, shape circle e size",
            "item toggle com stateExpr e action.id",
            "item menu com itemsExpr",
            "item html com template e sanitize basic",
            "item image com srcField, fit cover e shape circle",
            "item rating com valueExpr, max, size e ariaLabel"
          ]
        },
        {
          "path": "columns[].renderer.compose.layout.gap",
          "category": "renderer",
          "valueKind": "number",
          "description": "Espacamento entre itens (px).",
          "dependsOn": "columns[].renderer.compose"
        },
        {
          "path": "columns[].renderer.compose.layout.direction",
          "category": "renderer",
          "valueKind": "enum",
          "allowedValues": [
            "row",
            "column"
          ],
          "description": "Direção do layout.",
          "dependsOn": "columns[].renderer.compose"
        },
        {
          "path": "columns[].renderer.compose.layout.align",
          "category": "renderer",
          "valueKind": "enum",
          "allowedValues": [
            "start",
            "center",
            "end"
          ],
          "description": "Alinhamento do layout.",
          "dependsOn": "columns[].renderer.compose"
        },
        {
          "path": "columns[].renderer.compose.layout.wrap",
          "category": "renderer",
          "valueKind": "boolean",
          "description": "Permite quebra de linha.",
          "dependsOn": "columns[].renderer.compose"
        },
        {
          "path": "columns[].renderer.compose.layout.ellipsis",
          "category": "renderer",
          "valueKind": "boolean",
          "description": "Aplica ellipsis quando overflow.",
          "dependsOn": "columns[].renderer.compose"
        },
        {
          "path": "columns[].conditionalRenderers[].condition",
          "category": "conditional",
          "valueKind": "expression",
          "description": "Expressao condicional canonica em JSON Logic. Ex.: {\"===\":[{\"var\":\"status\"},\"Active\"]}. Nao use JS puro nem \"row.\".",
          "intentExamples": [
            "se status for ativo",
            "quando valor maior que 100",
            "condição da renderização"
          ],
          "safetyNotes": "Use computed.<field> para valores calculados. Sem JS/eval."
        },
        {
          "path": "columns[].conditionalRenderers[].enabled",
          "category": "conditional",
          "valueKind": "boolean",
          "description": "Habilita/desabilita a regra.",
          "intentExamples": [
            "ativar regra condicional",
            "desligar renderização condicional"
          ]
        },
        {
          "path": "columns[].conditionalRenderers[].renderer",
          "category": "conditional",
          "valueKind": "object",
          "description": "Configuração do renderizador a ser usado se a condição for true.",
          "intentExamples": [
            "renderizador se condição for verdadeira",
            "visual condicional"
          ]
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.microVisualization",
          "category": "conditional",
          "valueKind": "object",
          "description": "Configuração de microvisualização condicional. A visualização precisa usar surface table-cell, fallbackText acessível e os dados exigidos pelo kind.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.type",
          "safetyNotes": "Use para uma decisão por linha já governada pela condição; não substitui uma regra de negócio."
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.microVisualization.visualization.kind",
          "category": "conditional",
          "valueKind": "enum",
          "allowedValues": [
            "line",
            "area",
            "column",
            "comparison",
            "stackedBar",
            "radial",
            "harveyBall",
            "bullet",
            "delta",
            "processFlow"
          ],
          "description": "Kind da microvisualização condicional. Prefira delta, bullet, radial, harveyBall ou stackedBar para leitura rápida; os demais exigem revisão de largura ou densidade.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.microVisualization"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.microVisualization.visualization.fallbackText",
          "category": "conditional",
          "valueKind": "string",
          "description": "Fallback acessível obrigatório da microvisualização condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.microVisualization"
        },
        {
          "path": "columns[].conditionalRenderers[].tooltip",
          "category": "conditional",
          "valueKind": "object",
          "description": "Tooltip aplicado quando a regra condicional vencer.",
          "intentExamples": [
            "adicione dica no chip ativo",
            "tooltip para o badge pendente"
          ]
        },
        {
          "path": "columns[].conditionalRenderers[].tooltip.text",
          "category": "conditional",
          "valueKind": "string",
          "description": "Texto do tooltip da regra condicional.",
          "dependsOn": "columns[].conditionalRenderers[].tooltip"
        },
        {
          "path": "columns[].conditionalRenderers[].effects",
          "category": "conditional",
          "valueKind": "array",
          "description": "Efeitos visuais canonicos capazes de produzir renderer, tooltip ou animacao condicional.",
          "intentExamples": [
            "renderizador por efeito visual",
            "badge condicional por RuleEffectDefinition"
          ]
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.type",
          "category": "conditional",
          "valueKind": "enum",
          "allowedValues": [
            "icon",
            "image",
            "badge",
            "link",
            "button",
            "chip",
            "progress",
            "avatar",
            "toggle",
            "menu",
            "rating",
            "microVisualization",
            "html",
            "compose"
          ],
          "description": "Tipo do renderizador condicional (badge, chip, etc.).",
          "dependsOn": "columns[].conditionalRenderers[].renderer",
          "intentExamples": [
            "mostrar badge se ativo",
            "usar chip se pendente"
          ]
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.typeExpr",
          "category": "conditional",
          "valueKind": "expression",
          "description": "Expressao computada do dominio da tabela para decidir o tipo do renderer condicional; nao e Json Logic.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.type"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.icon",
          "category": "conditional",
          "valueKind": "object",
          "description": "Configuracao de icone condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.type"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.icon.name",
          "category": "conditional",
          "valueKind": "string",
          "description": "Nome fixo do icone.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.icon"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.icon.nameField",
          "category": "conditional",
          "valueKind": "string",
          "description": "Campo com nome do icone.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.icon"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.icon.text",
          "category": "conditional",
          "valueKind": "string",
          "description": "Texto fixo renderizado junto ao icone condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.icon"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.icon.textField",
          "category": "conditional",
          "valueKind": "string",
          "description": "Campo de linha usado como texto renderizado junto ao icone condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.icon"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.icon.prefix",
          "category": "conditional",
          "valueKind": "string",
          "description": "Prefixo visual aplicado somente ao texto exibido pelo renderer de icone condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.icon"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.icon.suffix",
          "category": "conditional",
          "valueKind": "string",
          "description": "Sufixo visual aplicado somente ao texto exibido pelo renderer de icone condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.icon"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.icon.color",
          "category": "conditional",
          "valueKind": "string",
          "description": "Cor do icone.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.icon"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.icon.size",
          "category": "conditional",
          "valueKind": "number",
          "description": "Tamanho em px.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.icon"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.icon.ariaLabel",
          "category": "conditional",
          "valueKind": "string",
          "description": "Label acessivel do icone.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.icon"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.image",
          "category": "conditional",
          "valueKind": "object",
          "description": "Configuracao de imagem condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.type"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.image.src",
          "category": "conditional",
          "valueKind": "string",
          "description": "URL fixa da imagem.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.image"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.image.srcField",
          "category": "conditional",
          "valueKind": "string",
          "description": "Campo com URL da imagem.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.image"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.image.alt",
          "category": "conditional",
          "valueKind": "string",
          "description": "Alt fixo da imagem.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.image"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.image.altField",
          "category": "conditional",
          "valueKind": "string",
          "description": "Campo com alt da imagem.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.image"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.image.width",
          "category": "conditional",
          "valueKind": "number",
          "description": "Largura em px.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.image"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.image.height",
          "category": "conditional",
          "valueKind": "number",
          "description": "Altura em px.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.image"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.image.shape",
          "category": "conditional",
          "valueKind": "enum",
          "allowedValues": [
            "square",
            "rounded",
            "circle"
          ],
          "description": "Formato da imagem.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.image"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.image.fit",
          "category": "conditional",
          "valueKind": "enum",
          "allowedValues": [
            "cover",
            "contain"
          ],
          "description": "Ajuste da imagem.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.image"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.image.lazy",
          "category": "conditional",
          "valueKind": "boolean",
          "description": "Ativa lazy loading.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.image"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.link",
          "category": "conditional",
          "valueKind": "object",
          "description": "Configuracao de link condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.type"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.link.text",
          "category": "conditional",
          "valueKind": "string",
          "description": "Texto fixo do link.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.link"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.link.textField",
          "category": "conditional",
          "valueKind": "string",
          "description": "Campo para texto do link.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.link"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.link.href",
          "category": "conditional",
          "valueKind": "string",
          "description": "Href fixo do link.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.link"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.link.hrefField",
          "category": "conditional",
          "valueKind": "string",
          "description": "Campo para href do link.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.link"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.link.target",
          "category": "conditional",
          "valueKind": "enum",
          "allowedValues": [
            "_blank",
            "_self",
            "_parent",
            "_top"
          ],
          "description": "Target do link.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.link"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.link.rel",
          "category": "conditional",
          "valueKind": "string",
          "description": "Atributo rel do link.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.link"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.button",
          "category": "conditional",
          "valueKind": "object",
          "description": "Configuracao de botao condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.type"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.button.label",
          "category": "conditional",
          "valueKind": "string",
          "description": "Texto fixo do botao.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.button"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.button.labelField",
          "category": "conditional",
          "valueKind": "string",
          "description": "Campo do row para texto do botao.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.button"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.button.icon",
          "category": "conditional",
          "valueKind": "string",
          "description": "Icone do botao.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.button"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.button.color",
          "category": "conditional",
          "valueKind": "enum",
          "allowedValues": [
            "primary",
            "accent",
            "warn"
          ],
          "description": "Cor do botao (ou token CSS).",
          "dependsOn": "columns[].conditionalRenderers[].renderer.button"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.button.variant",
          "category": "conditional",
          "valueKind": "enum",
          "allowedValues": [
            "filled",
            "outlined",
            "text"
          ],
          "description": "Variante visual do botao.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.button"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.button.size",
          "category": "conditional",
          "valueKind": "enum",
          "allowedValues": [
            "sm",
            "md",
            "lg"
          ],
          "description": "Tamanho do botao.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.button"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.button.ariaLabel",
          "category": "conditional",
          "valueKind": "string",
          "description": "Label acessivel do botao.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.button"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.button.disabledCondition",
          "category": "conditional",
          "valueKind": "expression",
          "description": "Expressao condicional canonica em JSON Logic para desabilitar.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.button",
          "safetyNotes": "Pode referenciar computed.<field>. Sem JS/eval."
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.button.action",
          "category": "conditional",
          "valueKind": "object",
          "description": "Acao do botao condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.button"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.button.action.id",
          "category": "conditional",
          "valueKind": "string",
          "description": "ID da acao do botao.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.button.action"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.button.action.payloadExpr",
          "category": "conditional",
          "valueKind": "expression",
          "description": "Expressao computada do dominio da tabela para montar o payload da acao condicional; nao e Json Logic.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.button.action"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.menu",
          "category": "conditional",
          "valueKind": "object",
          "description": "Configuracao de menu condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.type"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.menu.itemsExpr",
          "category": "conditional",
          "valueKind": "expression",
          "description": "Expressao computada do dominio da tabela para montar itens do menu condicional; nao e Json Logic.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.menu"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.menu.ariaLabel",
          "category": "conditional",
          "valueKind": "string",
          "description": "Label acessivel do menu.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.menu"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.html",
          "category": "conditional",
          "valueKind": "object",
          "description": "HTML condicional sanitizado.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.type"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.html.template",
          "category": "conditional",
          "valueKind": "string",
          "description": "Template HTML com placeholders [[field]].",
          "dependsOn": "columns[].conditionalRenderers[].renderer.html"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.html.sanitize",
          "category": "conditional",
          "valueKind": "enum",
          "allowedValues": [
            "strict",
            "basic"
          ],
          "description": "Nivel de sanitizacao.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.html"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.html.emptyFallback",
          "category": "conditional",
          "valueKind": "string",
          "description": "Fallback quando campo esta vazio.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.html"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.badge",
          "category": "conditional",
          "valueKind": "object",
          "description": "Configuração de badge condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.type"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.badge.text",
          "category": "conditional",
          "valueKind": "string",
          "description": "Texto do badge condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.badge",
          "intentExamples": [
            "texto do badge se condicao ok"
          ]
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.badge.textField",
          "category": "conditional",
          "valueKind": "string",
          "description": "Campo de texto do badge condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.badge"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.badge.color",
          "category": "conditional",
          "valueKind": "string",
          "description": "Cor do badge condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.badge",
          "intentExamples": [
            "cor verde se aprovado",
            "badge vermelho se erro"
          ]
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.badge.variant",
          "category": "conditional",
          "valueKind": "enum",
          "allowedValues": [
            "filled",
            "outlined",
            "soft",
            "plain"
          ],
          "description": "Variante do badge condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.badge"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.badge.icon",
          "category": "conditional",
          "valueKind": "string",
          "description": "Ícone do badge condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.badge"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.badge.tooltip",
          "category": "conditional",
          "valueKind": "object",
          "description": "Tooltip acoplado ao badge condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.badge"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.chip",
          "category": "conditional",
          "valueKind": "object",
          "description": "Configuração de chip condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.type"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.chip.text",
          "category": "conditional",
          "valueKind": "string",
          "description": "Texto do chip condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.chip"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.chip.textField",
          "category": "conditional",
          "valueKind": "string",
          "description": "Campo de texto do chip condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.chip"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.chip.color",
          "category": "conditional",
          "valueKind": "string",
          "description": "Cor do chip condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.chip"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.chip.variant",
          "category": "conditional",
          "valueKind": "enum",
          "allowedValues": [
            "filled",
            "outlined",
            "soft",
            "plain"
          ],
          "description": "Variante do chip condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.chip"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.chip.icon",
          "category": "conditional",
          "valueKind": "string",
          "description": "Ícone do chip condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.chip"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.chip.tooltip",
          "category": "conditional",
          "valueKind": "object",
          "description": "Tooltip acoplado ao chip condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.chip"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.progress",
          "category": "conditional",
          "valueKind": "object",
          "description": "Configuração de progress condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.type"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.progress.valueExpr",
          "category": "conditional",
          "valueKind": "expression",
          "description": "Expressao computada do dominio da tabela para obter o valor condicional; nao e Json Logic.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.progress"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.progress.color",
          "category": "conditional",
          "valueKind": "string",
          "description": "Cor da barra condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.progress"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.progress.showLabel",
          "category": "conditional",
          "valueKind": "boolean",
          "description": "Mostrar label condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.progress"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.avatar",
          "category": "conditional",
          "valueKind": "object",
          "description": "Configuração de avatar condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.type"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.avatar.src",
          "category": "conditional",
          "valueKind": "string",
          "description": "Src do avatar.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.avatar"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.avatar.srcField",
          "category": "conditional",
          "valueKind": "string",
          "description": "Campo src do avatar.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.avatar"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.avatar.alt",
          "category": "conditional",
          "valueKind": "string",
          "description": "Alt do avatar.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.avatar"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.avatar.altField",
          "category": "conditional",
          "valueKind": "string",
          "description": "Campo alt do avatar.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.avatar"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.avatar.initialsField",
          "category": "conditional",
          "valueKind": "string",
          "description": "Campo textual para derivar iniciais do avatar.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.avatar"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.avatar.initialsExpr",
          "category": "conditional",
          "valueKind": "expression",
          "description": "Expressao computada do dominio da tabela para retornar as iniciais do avatar; nao e Json Logic.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.avatar"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.avatar.shape",
          "category": "conditional",
          "valueKind": "string",
          "allowedValues": [
            "circle",
            "square",
            "rounded"
          ],
          "description": "Shape do avatar.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.avatar"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.avatar.size",
          "category": "conditional",
          "valueKind": "number",
          "description": "Tamanho em px.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.avatar"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.avatar.backgroundColor",
          "category": "conditional",
          "valueKind": "string",
          "description": "Cor de fundo do círculo do avatar quando a condição for verdadeira.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.avatar"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.avatar.textColor",
          "category": "conditional",
          "valueKind": "string",
          "description": "Cor das iniciais do avatar quando a condição for verdadeira.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.avatar"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.toggle",
          "category": "conditional",
          "valueKind": "object",
          "description": "Configuração de toggle condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.type"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.toggle.stateExpr",
          "category": "conditional",
          "valueKind": "expression",
          "description": "Expressao computada do dominio da tabela para definir o estado checked condicional; nao e Json Logic.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.toggle"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.toggle.disabledCondition",
          "category": "conditional",
          "valueKind": "expression",
          "description": "Condicao canonica em Json Logic para desabilitacao condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.toggle",
          "safetyNotes": "Pode referenciar computed.<field>. Sem JS/eval."
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.toggle.ariaLabel",
          "category": "conditional",
          "valueKind": "string",
          "description": "Label acessível.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.toggle"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.toggle.action",
          "category": "conditional",
          "valueKind": "object",
          "description": "Ação do toggle condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.toggle"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.toggle.action.id",
          "category": "conditional",
          "valueKind": "string",
          "description": "ID da ação condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.toggle.action"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.toggle.action.payloadExpr",
          "category": "conditional",
          "valueKind": "expression",
          "description": "Expressao computada do dominio da tabela para montar o payload da acao condicional; nao e Json Logic.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.toggle.action"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.rating",
          "category": "conditional",
          "valueKind": "object",
          "description": "Configuração de rating condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.type"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.rating.valueExpr",
          "category": "conditional",
          "valueKind": "expression",
          "description": "Expressao computada do dominio da tabela para obter o valor do rating condicional; nao e Json Logic.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.rating"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.rating.max",
          "category": "conditional",
          "valueKind": "number",
          "description": "Max estrelas.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.rating"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.rating.color",
          "category": "conditional",
          "valueKind": "string",
          "description": "Cor das estrelas.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.rating"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.rating.outlineColor",
          "category": "conditional",
          "valueKind": "string",
          "description": "Cor da borda.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.rating"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.rating.size",
          "category": "conditional",
          "valueKind": "enum",
          "allowedValues": [
            "small",
            "medium",
            "large"
          ],
          "description": "Tamanho.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.rating"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.rating.ariaLabel",
          "category": "conditional",
          "valueKind": "string",
          "description": "Label acessível.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.rating"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.compose",
          "category": "conditional",
          "valueKind": "object",
          "description": "Compose condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.type"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.compose.items",
          "category": "conditional",
          "valueKind": "array",
          "description": "Itens do compose condicional.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.compose"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.compose.items[].type",
          "category": "conditional",
          "valueKind": "enum",
          "allowedValues": [
            "value",
            "icon",
            "image",
            "badge",
            "link",
            "button",
            "chip",
            "progress",
            "avatar",
            "toggle",
            "menu",
            "rating",
            "microVisualization",
            "html"
          ],
          "description": "Tipo do item de compose.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.compose.items"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.compose.items[]",
          "category": "conditional",
          "valueKind": "object",
          "description": "Item de compose condicional (ex.: { type: \"badge\", badge: {...} }, { type: \"icon\", icon: {...} }).",
          "dependsOn": "columns[].conditionalRenderers[].renderer.compose.items",
          "safetyNotes": "Sempre informe \"type\" e o bloco correspondente ao tipo.",
          "intentExamples": [
            "badge condicional com text, color e variant filled",
            "icon condicional com name e color warn",
            "chip condicional com textField e variant soft",
            "progress condicional com valueExpr e showLabel"
          ]
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.compose.layout.gap",
          "category": "conditional",
          "valueKind": "number",
          "description": "Gap (px).",
          "dependsOn": "columns[].conditionalRenderers[].renderer.compose"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.compose.layout.direction",
          "category": "conditional",
          "valueKind": "enum",
          "allowedValues": [
            "row",
            "column"
          ],
          "description": "Direção.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.compose"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.compose.layout.align",
          "category": "conditional",
          "valueKind": "enum",
          "allowedValues": [
            "start",
            "center",
            "end"
          ],
          "description": "Alinhamento.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.compose"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.compose.layout.wrap",
          "category": "conditional",
          "valueKind": "boolean",
          "description": "Permite quebra de linha.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.compose"
        },
        {
          "path": "columns[].conditionalRenderers[].renderer.compose.layout.ellipsis",
          "category": "conditional",
          "valueKind": "boolean",
          "description": "Aplica ellipsis quando overflow.",
          "dependsOn": "columns[].conditionalRenderers[].renderer.compose"
        },
        {
          "path": "columns[].conditionalRenderers[].animation",
          "category": "conditional",
          "valueKind": "object",
          "description": "Animacao aplicada ao conteudo da célula quando a condição for verdadeira. Use para animar uma parte/coluna especifica da tabela.",
          "intentExamples": [
            "animar célula quando salário alto",
            "piscar status crítico"
          ]
        },
        {
          "path": "columns[].conditionalRenderers[].animation.preset",
          "category": "conditional",
          "valueKind": "enum",
          "allowedValues": [
            "info-soft",
            "success-confirm",
            "warning-attention",
            "critical-alert",
            "audit-review",
            "sync-pending",
            "pulse-soft",
            "fade-soft",
            "sla-warning",
            "sla-breach",
            "risk-elevated",
            "risk-critical",
            "audit-warning",
            "sync-warning"
          ],
          "description": "Preset semântico recomendado para animação condicional de célula.",
          "dependsOn": "columns[].conditionalRenderers[].animation"
        },
        {
          "path": "columns[].conditionalRenderers[].animation.type",
          "category": "conditional",
          "valueKind": "enum",
          "allowedValues": [
            "pulse",
            "blink",
            "grow",
            "fade",
            "slide-in",
            "border-pulse"
          ],
          "description": "Tipo bruto de animação quando preset não for suficiente.",
          "dependsOn": "columns[].conditionalRenderers[].animation"
        },
        {
          "path": "columns[].conditionalRenderers[].animation.trigger",
          "category": "conditional",
          "valueKind": "enum",
          "allowedValues": [
            "onAppear",
            "onHover",
            "onChange",
            "onConditionEnter",
            "onConditionExit",
            "onDataRefresh"
          ],
          "description": "Gatilho da animação. onConditionEnter/onConditionExit/onDataRefresh são normalizados como onChange no runtime.",
          "dependsOn": "columns[].conditionalRenderers[].animation"
        },
        {
          "path": "columns[].conditionalRenderers[].animation.repeat",
          "category": "conditional",
          "valueKind": "string",
          "description": "once, loop, infinite ou número de repetições.",
          "dependsOn": "columns[].conditionalRenderers[].animation"
        },
        {
          "path": "columns[].conditionalRenderers[].animation.intensity",
          "category": "conditional",
          "valueKind": "enum",
          "allowedValues": [
            "subtle",
            "normal",
            "strong"
          ],
          "description": "Intensidade visual da animação.",
          "dependsOn": "columns[].conditionalRenderers[].animation"
        },
        {
          "path": "columns[].conditionalRenderers[].animation.durationMs",
          "category": "conditional",
          "valueKind": "number",
          "description": "Duração da animação em milissegundos.",
          "dependsOn": "columns[].conditionalRenderers[].animation"
        },
        {
          "path": "columns[].conditionalRenderers[].animation.delayMs",
          "category": "conditional",
          "valueKind": "number",
          "description": "Atraso da animação em milissegundos.",
          "dependsOn": "columns[].conditionalRenderers[].animation"
        },
        {
          "path": "columns[].conditionalRenderers[].description",
          "category": "conditional",
          "valueKind": "string",
          "description": "Descrição humana da regra.",
          "intentExamples": [
            "descrição da regra"
          ]
        },
        {
          "path": "columns[].conditionalStyles[].condition",
          "category": "conditional",
          "valueKind": "expression",
          "description": "Expressao condicional canonica em JSON Logic. Ex.: {\"===\":[{\"var\":\"status\"},\"Active\"]}. Nao use JS puro nem \"row.\".",
          "intentExamples": [
            "estilo se status ativo"
          ],
          "safetyNotes": "Use computed.<field> para valores calculados. Sem JS/eval."
        },
        {
          "path": "columns[].conditionalStyles[].cssClass",
          "category": "conditional",
          "valueKind": "string",
          "description": "Classe CSS a aplicar.",
          "intentExamples": [
            "classe de sucesso",
            "css condicional"
          ]
        },
        {
          "path": "columns[].conditionalStyles[].style",
          "category": "conditional",
          "valueKind": "object",
          "description": "Estilos inline seguros. Fundo sólido sem color usa foreground automático acessível no runtime; foreground explícito continua sujeito ao contraste AA.",
          "intentExamples": [
            "fundo vermelho se erro"
          ],
          "safetyNotes": "Gradiente, alpha, var() e CSS externo exigem preview; não declare contraste sem prova."
        },
        {
          "path": "columns[].conditionalStyles[].tooltip",
          "category": "conditional",
          "valueKind": "object",
          "description": "Tooltip aplicado na célula quando a condição for verdadeira.",
          "intentExamples": [
            "tooltip se salário alto",
            "dica condicional na célula"
          ]
        },
        {
          "path": "columns[].conditionalStyles[].effects",
          "category": "conditional",
          "valueKind": "array",
          "description": "Efeitos visuais canonicos da regra, alinhados ao RuleEffectDefinition do Table Rule Builder.",
          "intentExamples": [
            "efeito visual condicional na celula",
            "usar preset visual de regra"
          ]
        },
        {
          "path": "columns[].conditionalStyles[].description",
          "category": "conditional",
          "valueKind": "string",
          "description": "Descrição da regra de estilo."
        },
        {
          "path": "rowConditionalStyles[].condition",
          "category": "conditional",
          "valueKind": "expression",
          "description": "Expressao condicional canonica em JSON Logic. Ex.: {\"===\":[{\"var\":\"status\"},\"Active\"]}. Nao use JS puro nem \"row.\".",
          "intentExamples": [
            "destacar linha se ativo"
          ],
          "safetyNotes": "Use computed.<field> para valores calculados. Sem JS/eval."
        },
        {
          "path": "rowConditionalStyles[].cssClass",
          "category": "conditional",
          "valueKind": "string",
          "description": "Classe CSS para a linha.",
          "intentExamples": [
            "classe para a linha inteira"
          ]
        },
        {
          "path": "rowConditionalStyles[].style",
          "category": "conditional",
          "valueKind": "object",
          "description": "Estilos inline seguros aplicados na linha. Fundo sólido sem color materializa foreground automático sem persistir a cor derivada.",
          "safetyNotes": "Quando a cor comunicar uma classificação, inclua também marcador, ícone, label ou outra pista visível. Gradiente, alpha, var() e cssClass exigem preview contextual."
        },
        {
          "path": "rowConditionalStyles[].surfacePresetRef",
          "category": "conditional",
          "valueKind": "object",
          "description": "Referencia semantica versionada para uma superficie CSP-safe; a classe CSS permanece privada do runtime.",
          "intentExamples": [
            "usar preset warning na linha",
            "destacar linha com superficie danger"
          ]
        },
        {
          "path": "rowConditionalStyles[].effects",
          "category": "conditional",
          "valueKind": "array",
          "description": "Efeitos visuais canonicos da regra de linha, alinhados ao RuleEffectDefinition do Table Rule Builder.",
          "intentExamples": [
            "efeito visual condicional na linha",
            "destacar linha com preset visual"
          ]
        },
        {
          "path": "rowConditionalStyles[].description",
          "category": "conditional",
          "valueKind": "string",
          "description": "Descrição semântica da regra de estilo da linha; deve acompanhar refinamentos visuais para não contradizer o efeito materializado.",
          "intentExamples": [
            "atualizar descrição do destaque da linha"
          ]
        },
        {
          "path": "rowConditionalRenderers[].condition",
          "category": "conditional",
          "valueKind": "expression",
          "description": "Condicao canonica em JSON Logic para tooltip ou animacao de linha.",
          "safetyNotes": "Use computed.<field> para valores calculados. Sem JS/eval."
        },
        {
          "path": "rowConditionalRenderers[].tooltip",
          "category": "conditional",
          "valueKind": "object",
          "description": "Tooltip aplicado na linha quando a condicao for verdadeira."
        },
        {
          "path": "rowConditionalRenderers[].animation",
          "category": "conditional",
          "valueKind": "object",
          "description": "Animacao aplicada na linha quando a condicao for verdadeira."
        },
        {
          "path": "rowConditionalRenderers[].animation.preset",
          "category": "conditional",
          "valueKind": "enum",
          "allowedValues": [
            "info-soft",
            "success-confirm",
            "warning-attention",
            "critical-alert",
            "audit-review",
            "sync-pending",
            "pulse-soft",
            "fade-soft",
            "sla-warning",
            "sla-breach",
            "risk-elevated",
            "risk-critical",
            "audit-warning",
            "sync-warning"
          ],
          "description": "Preset semântico recomendado para animação condicional de linha.",
          "dependsOn": "rowConditionalRenderers[].animation"
        },
        {
          "path": "rowConditionalRenderers[].animation.type",
          "category": "conditional",
          "valueKind": "enum",
          "allowedValues": [
            "pulse",
            "blink",
            "grow",
            "fade",
            "slide-in",
            "border-pulse"
          ],
          "description": "Tipo bruto de animação quando preset não for suficiente.",
          "dependsOn": "rowConditionalRenderers[].animation"
        },
        {
          "path": "rowConditionalRenderers[].animation.trigger",
          "category": "conditional",
          "valueKind": "enum",
          "allowedValues": [
            "onAppear",
            "onHover",
            "onChange",
            "onConditionEnter",
            "onConditionExit",
            "onDataRefresh"
          ],
          "description": "Gatilho da animação. onConditionEnter/onConditionExit/onDataRefresh são normalizados como onChange no runtime.",
          "dependsOn": "rowConditionalRenderers[].animation"
        },
        {
          "path": "rowConditionalRenderers[].animation.repeat",
          "category": "conditional",
          "valueKind": "string",
          "description": "once, loop, infinite ou número de repetições.",
          "dependsOn": "rowConditionalRenderers[].animation"
        },
        {
          "path": "rowConditionalRenderers[].animation.intensity",
          "category": "conditional",
          "valueKind": "enum",
          "allowedValues": [
            "subtle",
            "normal",
            "strong"
          ],
          "description": "Intensidade visual da animação.",
          "dependsOn": "rowConditionalRenderers[].animation"
        },
        {
          "path": "rowConditionalRenderers[].animation.durationMs",
          "category": "conditional",
          "valueKind": "number",
          "description": "Duração da animação em milissegundos.",
          "dependsOn": "rowConditionalRenderers[].animation"
        },
        {
          "path": "rowConditionalRenderers[].animation.delayMs",
          "category": "conditional",
          "valueKind": "number",
          "description": "Atraso da animação em milissegundos.",
          "dependsOn": "rowConditionalRenderers[].animation"
        },
        {
          "path": "rowConditionalRenderers[].effects",
          "category": "conditional",
          "valueKind": "array",
          "description": "Efeitos visuais canonicos capazes de produzir tooltip ou animacao de linha."
        },
        {
          "path": "behavior.pagination",
          "category": "pagination",
          "valueKind": "object",
          "description": "Configuração global de paginação da tabela.",
          "critical": true,
          "intentExamples": [
            "habilitar paginação",
            "25 por página"
          ]
        },
        {
          "path": "behavior.pagination.enabled",
          "category": "pagination",
          "valueKind": "boolean",
          "description": "Habilita paginação. Crítico para performance.",
          "critical": true,
          "intentExamples": [
            "remover paginação",
            "paginar resultados",
            "lista infinita"
          ]
        },
        {
          "path": "behavior.pagination.strategy",
          "category": "pagination",
          "valueKind": "enum",
          "allowedValues": [
            "client",
            "server"
          ],
          "description": "Define se a paginação é feita no cliente ou servidor.",
          "dependsOn": "behavior.pagination.enabled",
          "intentExamples": [
            "paginar no servidor",
            "usar paginação client-side"
          ],
          "safetyNotes": "Para server, totalItems deve vir do backend; evite pageSize alto com client."
        },
        {
          "path": "behavior.pagination.pageSize",
          "category": "pagination",
          "valueKind": "number",
          "description": "Número de itens por página inicial.",
          "dependsOn": "behavior.pagination.enabled",
          "intentExamples": [
            "mostrar 50 itens",
            "aumentar tamanho da página"
          ],
          "example": "25"
        },
        {
          "path": "behavior.pagination.pageSizeOptions",
          "category": "pagination",
          "valueKind": "array",
          "description": "Lista de tamanhos permitidos no selector.",
          "dependsOn": "behavior.pagination.enabled",
          "intentExamples": [
            "permitir 10,25,50"
          ],
          "example": "[10, 25, 50, 100]"
        },
        {
          "path": "behavior.pagination.position",
          "category": "pagination",
          "valueKind": "enum",
          "allowedValues": [
            "top",
            "bottom",
            "both"
          ],
          "description": "Posiciona os controles de paginação.",
          "dependsOn": "behavior.pagination.enabled",
          "example": "\"bottom\""
        },
        {
          "path": "behavior.pagination.style",
          "category": "pagination",
          "valueKind": "enum",
          "allowedValues": [
            "default",
            "simple",
            "advanced",
            "compact"
          ],
          "description": "Variações visuais: default/simple/compact/advanced.",
          "dependsOn": "behavior.pagination.enabled",
          "intentExamples": [
            "paginação compacta",
            "exibição simples"
          ]
        },
        {
          "path": "behavior.pagination.advanced.maxPageSize",
          "category": "pagination",
          "valueKind": "number",
          "description": "Limite máximo permitido para pageSize customizado.",
          "dependsOn": "behavior.pagination.enabled",
          "critical": true,
          "example": "200",
          "safetyNotes": "Evita requisições pesadas ou uso de memória excessivo."
        },
        {
          "path": "behavior.sorting",
          "category": "sorting",
          "valueKind": "object",
          "description": "Configuração global de ordenação da tabela.",
          "intentExamples": [
            "configurar ordenação",
            "ordenar no backend"
          ]
        },
        {
          "path": "behavior.sorting.enabled",
          "category": "sorting",
          "valueKind": "boolean",
          "description": "Habilita ordenação global na tabela.",
          "intentExamples": [
            "desativar ordenação",
            "tabela estática"
          ]
        },
        {
          "path": "behavior.sorting.strategy",
          "category": "sorting",
          "valueKind": "enum",
          "allowedValues": [
            "client",
            "server"
          ],
          "description": "Define se a ordenação ocorre no cliente ou servidor.",
          "dependsOn": "behavior.sorting.enabled",
          "intentExamples": [
            "ordenar no backend"
          ]
        },
        {
          "path": "behavior.sorting.defaultSort",
          "category": "sorting",
          "valueKind": "object",
          "description": "Ordenação inicial. Aceita objeto único ou array para multisort.",
          "intentExamples": [
            "ordenar por data",
            "mais recentes primeiro"
          ],
          "example": "{ column: \"createdAt\", direction: \"desc\" }"
        },
        {
          "path": "behavior.sorting.allowClearSort",
          "category": "sorting",
          "valueKind": "boolean",
          "description": "Permite limpar a ordenação com terceiro clique.",
          "dependsOn": "behavior.sorting.enabled"
        },
        {
          "path": "behavior.filtering",
          "category": "filtering",
          "valueKind": "object",
          "description": "Configuração global de filtragem da tabela.",
          "critical": true,
          "intentExamples": [
            "habilitar filtros dinâmicos",
            "desativar filtros da tabela",
            "permitir busca"
          ]
        },
        {
          "path": "behavior.filtering.enabled",
          "category": "filtering",
          "valueKind": "boolean",
          "description": "Habilita sistema de filtragem.",
          "critical": true,
          "intentExamples": [
            "ligar filtros",
            "permitir busca"
          ]
        },
        {
          "path": "behavior.filtering.strategy",
          "category": "filtering",
          "valueKind": "enum",
          "allowedValues": [
            "client",
            "server"
          ],
          "description": "Filtragem no cliente ou servidor.",
          "dependsOn": "behavior.filtering.enabled",
          "safetyNotes": "Para server, evite expressões não suportadas pelo backend."
        },
        {
          "path": "behavior.filtering.columnFilters.enabled",
          "category": "filtering",
          "valueKind": "boolean",
          "description": "Exibe filtros por coluna.",
          "dependsOn": "behavior.filtering.enabled",
          "intentExamples": [
            "ativar filtros no cabeçalho"
          ]
        },
        {
          "path": "behavior.filtering.columnFilters.defaultType",
          "category": "filtering",
          "valueKind": "enum",
          "allowedValues": [
            "text",
            "select",
            "date",
            "number",
            "boolean"
          ],
          "description": "Tipo padrão do filtro individual.",
          "dependsOn": "behavior.filtering.columnFilters.enabled"
        },
        {
          "path": "behavior.filtering.columnFilters.position",
          "category": "filtering",
          "valueKind": "enum",
          "allowedValues": [
            "header",
            "subheader",
            "sidebar"
          ],
          "description": "Posiciona os filtros (header/subheader/sidebar).",
          "dependsOn": "behavior.filtering.columnFilters.enabled"
        },
        {
          "path": "behavior.filtering.advancedFilters",
          "category": "filtering",
          "valueKind": "object",
          "description": "Configuração canônica dos filtros avançados acoplados à tabela.",
          "dependsOn": "behavior.filtering.enabled",
          "intentExamples": [
            "ativar filtros avançados",
            "configurar filtros avançados"
          ]
        },
        {
          "path": "behavior.filtering.advancedFilters.enabled",
          "category": "filtering",
          "valueKind": "boolean",
          "description": "Habilita filtros avançados/painel.",
          "dependsOn": "behavior.filtering.enabled",
          "intentExamples": [
            "abrir filtro avançado",
            "habilitar query builder"
          ]
        },
        {
          "path": "behavior.filtering.advancedFilters.settings.mode",
          "category": "filtering",
          "valueKind": "enum",
          "allowedValues": [
            "filter"
          ],
          "description": "Modo único do componente de filtro (filter).",
          "dependsOn": "behavior.filtering.advancedFilters.enabled"
        },
        {
          "path": "behavior.filtering.advancedFilters.settings.showAdvanced",
          "category": "filtering",
          "valueKind": "boolean",
          "description": "Mantém o painel avançado disponível para filtros adicionais.",
          "dependsOn": "behavior.filtering.advancedFilters.enabled"
        },
        {
          "path": "behavior.filtering.advancedFilters.settings.tags",
          "category": "filtering",
          "valueKind": "array",
          "description": "Atalhos de filtro governados e somente leitura, com id, rótulo e patch compatível com o DTO canônico.",
          "dependsOn": "behavior.filtering.advancedFilters.enabled",
          "intentExamples": [
            "criar atalho para admissões recentes",
            "adicionar filtro rápido de faixa executiva"
          ],
          "safetyNotes": "O patch deve usar apenas campos aceitos pelo schema request do filtro; atalhos pessoais continuam persistidos separadamente."
        },
        {
          "path": "behavior.filtering.advancedFilters.settings.alwaysVisibleFields",
          "category": "filtering",
          "valueKind": "array",
          "description": "Campos do DTO de filtro que ficam fixos inline na barra.",
          "dependsOn": "behavior.filtering.advancedFilters.enabled",
          "safetyNotes": "Validar contra o schema request do filtro, não apenas contra colunas visíveis."
        },
        {
          "path": "behavior.filtering.advancedFilters.settings.selectedFieldIds",
          "category": "filtering",
          "valueKind": "array",
          "description": "Campos do DTO de filtro disponíveis no painel avançado.",
          "dependsOn": "behavior.filtering.advancedFilters.enabled",
          "safetyNotes": "Pode incluir campos que não são colunas da tabela quando pertencem ao DTO de filtro."
        },
        {
          "path": "behavior.filtering.advancedFilters.settings.alwaysVisibleFieldMetadataOverrides",
          "category": "filtering",
          "valueKind": "object",
          "description": "Overrides governados de metadata para campos fixos inline.",
          "dependsOn": "behavior.filtering.advancedFilters.enabled"
        },
        {
          "path": "behavior.filtering.advancedFilters.settings.changeDebounceMs",
          "category": "filtering",
          "valueKind": "number",
          "description": "Debounce local dos controles do filtro avançado.",
          "dependsOn": "behavior.filtering.advancedFilters.enabled"
        },
        {
          "path": "behavior.filtering.advancedFilters.settings.useInlineSearchableSelectVariant",
          "category": "filtering",
          "valueKind": "boolean",
          "description": "Usa variante inline pesquisável para selects na barra.",
          "dependsOn": "behavior.filtering.advancedFilters.enabled"
        },
        {
          "path": "behavior.filtering.advancedFilters.settings.useInlineRangeVariant",
          "category": "filtering",
          "valueKind": "boolean",
          "description": "Usa variante inline para ranges numéricos.",
          "dependsOn": "behavior.filtering.advancedFilters.enabled"
        },
        {
          "path": "behavior.filtering.advancedFilters.settings.useInlineDateVariant",
          "category": "filtering",
          "valueKind": "boolean",
          "description": "Usa variante inline para datas simples.",
          "dependsOn": "behavior.filtering.advancedFilters.enabled"
        },
        {
          "path": "behavior.filtering.advancedFilters.settings.useInlineDateRangeVariant",
          "category": "filtering",
          "valueKind": "boolean",
          "description": "Usa variante inline para intervalos de datas.",
          "dependsOn": "behavior.filtering.advancedFilters.enabled"
        },
        {
          "path": "behavior.filtering.debounceTime",
          "category": "filtering",
          "valueKind": "number",
          "description": "Debounce (ms) para filtros reativos.",
          "dependsOn": "behavior.filtering.enabled",
          "example": "300"
        },
        {
          "path": "behavior.selection",
          "category": "selection",
          "valueKind": "object",
          "description": "Configuração global de seleção de linhas.",
          "critical": true,
          "intentExamples": [
            "seleção múltipla de linhas",
            "desativar seleção"
          ]
        },
        {
          "path": "behavior.selection.enabled",
          "category": "selection",
          "valueKind": "boolean",
          "description": "Habilita seleção de linhas.",
          "critical": true,
          "intentExamples": [
            "selecionar linhas",
            "ativar checkboxes"
          ]
        },
        {
          "path": "behavior.selection.type",
          "category": "selection",
          "valueKind": "enum",
          "allowedValues": [
            "single",
            "multiple"
          ],
          "description": "Seleção única ou múltipla.",
          "critical": true,
          "intentExamples": [
            "seleção única",
            "selecionar vários"
          ]
        },
        {
          "path": "behavior.selection.mode",
          "category": "selection",
          "valueKind": "enum",
          "allowedValues": [
            "checkbox",
            "row",
            "both"
          ],
          "description": "Modo de interação (checkbox/row/both).",
          "dependsOn": "behavior.selection.enabled",
          "intentExamples": [
            "seleção por linha",
            "mostrar checkbox"
          ]
        },
        {
          "path": "behavior.selection.allowSelectAll",
          "category": "selection",
          "valueKind": "boolean",
          "description": "Permite selecionar todas as linhas.",
          "dependsOn": "behavior.selection.enabled",
          "critical": true,
          "safetyNotes": "Para tabelas grandes, combine com paginação server-side ou limite de seleção."
        },
        {
          "path": "behavior.selection.persistSelection",
          "category": "selection",
          "valueKind": "boolean",
          "description": "Mantém seleção entre páginas.",
          "dependsOn": "behavior.selection.enabled",
          "example": "true"
        },
        {
          "path": "behavior.selection.maxSelections",
          "category": "selection",
          "valueKind": "number",
          "description": "Limite máximo de itens selecionáveis.",
          "dependsOn": "behavior.selection.enabled",
          "critical": true,
          "example": "100"
        },
        {
          "path": "behavior.interaction.rowClick.action",
          "category": "interaction",
          "valueKind": "enum",
          "allowedValues": [
            "select",
            "edit",
            "view",
            "custom"
          ],
          "description": "Ação padrão ao clicar na linha.",
          "intentExamples": [
            "abrir em modo edição",
            "somente selecionar"
          ],
          "safetyNotes": "Para custom, exigir action handler registrado no componente."
        },
        {
          "path": "behavior.interaction.rowClick.enabled",
          "category": "interaction",
          "valueKind": "boolean",
          "description": "Ativa ou desativa ação de click na linha.",
          "dependsOn": "behavior.interaction.rowClick.action"
        },
        {
          "path": "behavior.interaction.keyboard.enabled",
          "category": "interaction",
          "valueKind": "boolean",
          "description": "Habilita navegação por teclado.",
          "intentExamples": [
            "permitir navegação por setas"
          ]
        },
        {
          "path": "behavior.interaction.hover.enabled",
          "category": "interaction",
          "valueKind": "boolean",
          "description": "Habilita comportamento de hover (highlight/ações).",
          "intentExamples": [
            "mostrar destaque ao passar o mouse"
          ]
        },
        {
          "path": "behavior.interaction.hover.highlightRow",
          "category": "interaction",
          "valueKind": "boolean",
          "description": "Destaca linha no hover.",
          "dependsOn": "behavior.interaction.hover.enabled"
        },
        {
          "path": "behavior.loading.type",
          "category": "behavior",
          "valueKind": "enum",
          "allowedValues": [
            "spinner",
            "skeleton",
            "progress"
          ],
          "description": "Tipo de indicador de loading (spinner, skeleton etc.).",
          "intentExamples": [
            "usar skeleton loading",
            "spinner de progresso"
          ]
        },
        {
          "path": "behavior.loading.position",
          "category": "behavior",
          "valueKind": "enum",
          "allowedValues": [
            "overlay",
            "inline",
            "replace"
          ],
          "description": "Onde exibir o loading (overlay/inline/replace).",
          "intentExamples": [
            "loading sobreposto",
            "loading inline"
          ]
        },
        {
          "path": "behavior.loading.text",
          "category": "behavior",
          "valueKind": "string",
          "description": "Mensagem exibida durante carregamento.",
          "example": "\"Carregando dados...\"",
          "intentExamples": [
            "texto de carregamento"
          ]
        },
        {
          "path": "behavior.loading.delay",
          "category": "behavior",
          "valueKind": "number",
          "description": "Delay (ms) antes de mostrar loading.",
          "example": "200"
        },
        {
          "path": "behavior.loading.showForQuickOperations",
          "category": "behavior",
          "valueKind": "boolean",
          "description": "Ignora o delay visual e mostra o indicador imediatamente para operacoes rapidas.",
          "example": "false",
          "dependsOn": "behavior.loading.delay"
        },
        {
          "path": "behavior.loading.requestTimeoutMs",
          "category": "behavior",
          "valueKind": "number",
          "description": "Tempo limite (ms) para requests remotos de schema e dados; zero delega a politica ao host.",
          "example": "30000",
          "critical": true,
          "safetyNotes": "Timeout encerra somente leitura remota e materializa erro recuperavel; nao habilita retry automatico de mutacoes."
        },
        {
          "path": "behavior.loading.allowCancel",
          "category": "behavior",
          "valueKind": "boolean",
          "description": "Permite cancelamento explicito do request remoto em andamento.",
          "example": "true",
          "critical": true,
          "safetyNotes": "O cancelamento aborta o transporte por unsubscribe e preserva dados estaveis ja renderizados."
        },
        {
          "path": "behavior.loading.skeleton.rows",
          "category": "behavior",
          "valueKind": "number",
          "description": "Quantidade de linhas do skeleton, limitada pelo runtime.",
          "example": "3",
          "dependsOn": "behavior.loading.type"
        },
        {
          "path": "behavior.loading.skeleton.animated",
          "category": "behavior",
          "valueKind": "boolean",
          "description": "Ativa a animacao do skeleton.",
          "example": "true",
          "dependsOn": "behavior.loading.type"
        },
        {
          "path": "behavior.emptyState.message",
          "category": "behavior",
          "valueKind": "string",
          "description": "Mensagem de estado vazio padrão.",
          "intentExamples": [
            "mensagem quando não há dados"
          ],
          "example": "\"Nenhum registro encontrado.\""
        },
        {
          "path": "behavior.emptyState.actions",
          "category": "behavior",
          "valueKind": "array",
          "description": "Ações contextuais explícitas do estado vazio.",
          "intentExamples": [
            "adicionar uma ação contextual quando não há dados"
          ],
          "example": "[{ \"label\": \"Importar arquivo\", \"action\": \"import\", \"primary\": true }]",
          "safetyNotes": "Não repita CREATE quando a capability já o materializa como ação primária estável da toolbar. Use este path somente para uma intenção contextual distinta."
        },
        {
          "path": "behavior.resizing.enabled",
          "category": "behavior",
          "valueKind": "boolean",
          "description": "Habilita redimensionamento de colunas."
        },
        {
          "path": "behavior.resizing.minColumnWidth",
          "category": "behavior",
          "valueKind": "number",
          "description": "Largura mínima das colunas (px).",
          "dependsOn": "behavior.resizing.enabled",
          "example": "60"
        },
        {
          "path": "behavior.resizing.maxColumnWidth",
          "category": "behavior",
          "valueKind": "number",
          "description": "Largura máxima das colunas (px).",
          "dependsOn": "behavior.resizing.enabled",
          "example": "500"
        },
        {
          "path": "behavior.resizing.autoFit",
          "category": "behavior",
          "valueKind": "boolean",
          "description": "Permite autoajustar uma coluna ao conteúdo renderizado com duplo clique no separador.",
          "dependsOn": "behavior.resizing.enabled",
          "example": "true",
          "intentExamples": [
            "ajustar coluna ao conteúdo",
            "habilitar autoajuste por clique duplo"
          ]
        },
        {
          "path": "behavior.resizing.persistWidths",
          "category": "behavior",
          "valueKind": "boolean",
          "description": "Persiste larguras ajustadas pelo usuário entre sessões.",
          "dependsOn": "behavior.resizing.enabled",
          "example": "true"
        },
        {
          "path": "behavior.dragging.columns",
          "category": "behavior",
          "valueKind": "boolean",
          "description": "Permite reordenar colunas por drag & drop.",
          "intentExamples": [
            "habilitar drag nas colunas"
          ]
        },
        {
          "path": "behavior.grouping.enabled",
          "category": "behavior",
          "valueKind": "boolean",
          "description": "Habilita agrupamento de linhas.",
          "intentExamples": [
            "agrupar linhas",
            "ligar agrupamento"
          ]
        },
        {
          "path": "behavior.grouping.fields",
          "category": "behavior",
          "valueKind": "array",
          "description": "Lista de campos (field) usados para agrupar.",
          "example": "[\"status\", \"department\"]"
        },
        {
          "path": "behavior.grouping.expanded",
          "category": "behavior",
          "valueKind": "boolean",
          "description": "Se true, grupos iniciam expandidos.",
          "example": "true"
        },
        {
          "path": "behavior.editing.mode",
          "category": "interaction",
          "valueKind": "enum",
          "allowedValues": [
            "cell",
            "row",
            "none"
          ],
          "description": "Modo de edição inline.",
          "intentExamples": [
            "editar na célula",
            "edição por linha"
          ]
        },
        {
          "path": "behavior.virtualization.enabled",
          "category": "performance",
          "valueKind": "boolean",
          "description": "Virtualiza linhas para grandes volumes.",
          "critical": true,
          "intentExamples": [
            "melhorar performance com muitas linhas"
          ],
          "safetyNotes": "Requer itemHeight definido e altura do container consistente."
        },
        {
          "path": "behavior.virtualization.itemHeight",
          "category": "performance",
          "valueKind": "number",
          "description": "Altura de cada linha (px) para virtualização.",
          "dependsOn": "behavior.virtualization.enabled",
          "example": "48"
        },
        {
          "path": "behavior.expansion.enabled",
          "category": "interaction",
          "valueKind": "boolean",
          "description": "Habilita detalhe expansível por linha.",
          "critical": true,
          "intentExamples": [
            "expandir linhas",
            "mostrar detalhes inline"
          ],
          "safetyNotes": "Exige idField estável para evitar drift de estado entre renders/páginas."
        },
        {
          "path": "behavior.expansion.contractVersion",
          "category": "interaction",
          "valueKind": "string",
          "description": "Versão local do contrato de expansão.",
          "dependsOn": "behavior.expansion.enabled",
          "example": "\"1.0.0\""
        },
        {
          "path": "behavior.expansion.state.mode",
          "category": "interaction",
          "valueKind": "enum",
          "allowedValues": [
            "controlled",
            "uncontrolled"
          ],
          "description": "Governança de estado de expansão (controlled/uncontrolled).",
          "dependsOn": "behavior.expansion.enabled",
          "critical": true,
          "safetyNotes": "Em controlled, o host é a fonte da verdade para expandedRowKeys."
        },
        {
          "path": "behavior.expansion.interaction.trigger",
          "category": "interaction",
          "valueKind": "enum",
          "allowedValues": [
            "icon",
            "row",
            "both"
          ],
          "description": "Define como o toggle de expansão é acionado.",
          "dependsOn": "behavior.expansion.enabled"
        },
        {
          "path": "behavior.expansion.interaction.toggleIcon.collapsed",
          "category": "interaction",
          "valueKind": "string",
          "description": "Ícone usado no estado recolhido do toggle de expansão via pipeline `[praxisIcon]` do host.",
          "dependsOn": "behavior.expansion.enabled",
          "example": "\"chevron_right\""
        },
        {
          "path": "behavior.expansion.interaction.toggleIcon.expanded",
          "category": "interaction",
          "valueKind": "string",
          "description": "Ícone usado no estado expandido do toggle de expansão via pipeline `[praxisIcon]` do host.",
          "dependsOn": "behavior.expansion.enabled",
          "example": "\"expand_more\""
        },
        {
          "path": "behavior.expansion.interaction.toggleIcon.ariaLabelCollapsed",
          "category": "interaction",
          "valueKind": "string",
          "description": "Aria-label do botão de expansão quando a linha está recolhida.",
          "dependsOn": "behavior.expansion.enabled"
        },
        {
          "path": "behavior.expansion.interaction.toggleIcon.ariaLabelExpanded",
          "category": "interaction",
          "valueKind": "string",
          "description": "Aria-label do botão de expansão quando a linha está expandida.",
          "dependsOn": "behavior.expansion.enabled"
        },
        {
          "path": "behavior.expansion.interaction.motion.preset",
          "category": "interaction",
          "valueKind": "enum",
          "allowedValues": [
            "none",
            "subtle-slide",
            "accordion",
            "fade-scale"
          ],
          "description": "Preset controlado de motion para abrir o detail row.",
          "dependsOn": "behavior.expansion.enabled",
          "safetyNotes": "Respeita prefers-reduced-motion e evita CSS arbitrário."
        },
        {
          "path": "behavior.expansion.interaction.motion.durationMs",
          "category": "performance",
          "valueKind": "number",
          "description": "Duração do preset de motion em milissegundos.",
          "dependsOn": "behavior.expansion.interaction.motion.preset",
          "example": "160"
        },
        {
          "path": "behavior.expansion.interaction.motion.easing",
          "category": "interaction",
          "valueKind": "enum",
          "allowedValues": [
            "standard",
            "emphasized",
            "decelerate"
          ],
          "description": "Curva de easing do preset de motion.",
          "dependsOn": "behavior.expansion.interaction.motion.preset"
        },
        {
          "path": "behavior.expansion.interaction.keyboard.profile",
          "category": "interaction",
          "valueKind": "enum",
          "allowedValues": [
            "disclosure",
            "grid"
          ],
          "description": "Perfil de teclado para expansão (disclosure/grid).",
          "dependsOn": "behavior.expansion.enabled",
          "safetyNotes": "Use grid somente com semântica e testes de foco completos."
        },
        {
          "path": "behavior.expansion.limits.allowMultiple",
          "category": "interaction",
          "valueKind": "boolean",
          "description": "Permite múltiplas linhas expandidas simultaneamente.",
          "dependsOn": "behavior.expansion.enabled"
        },
        {
          "path": "behavior.expansion.limits.maxExpandedRows",
          "category": "interaction",
          "valueKind": "number",
          "description": "Máximo de linhas expandidas simultaneamente.",
          "dependsOn": "behavior.expansion.enabled",
          "example": "1"
        },
        {
          "path": "behavior.expansion.limits.onOverflow",
          "category": "interaction",
          "valueKind": "enum",
          "allowedValues": [
            "collapseOldest",
            "denyNew",
            "collapseAll"
          ],
          "description": "Política quando ultrapassar o limite de linhas expandidas.",
          "dependsOn": "behavior.expansion.enabled"
        },
        {
          "path": "behavior.expansion.collapseOn.sortChange",
          "category": "interaction",
          "valueKind": "boolean",
          "description": "Colapsa linhas expandidas quando sort muda.",
          "dependsOn": "behavior.expansion.enabled"
        },
        {
          "path": "behavior.expansion.collapseOn.pageChange",
          "category": "interaction",
          "valueKind": "boolean",
          "description": "Colapsa linhas expandidas quando paginação muda.",
          "dependsOn": "behavior.expansion.enabled"
        },
        {
          "path": "behavior.expansion.collapseOn.filterChange",
          "category": "interaction",
          "valueKind": "boolean",
          "description": "Colapsa linhas expandidas quando filtros mudam.",
          "dependsOn": "behavior.expansion.enabled"
        },
        {
          "path": "behavior.expansion.collapseOn.dataRefresh",
          "category": "interaction",
          "valueKind": "boolean",
          "description": "Colapsa linhas expandidas em refresh de dados.",
          "dependsOn": "behavior.expansion.enabled"
        },
        {
          "path": "behavior.expansion.detail.schemaContract.kind",
          "category": "interaction",
          "valueKind": "string",
          "description": "Namespace do schema de detail row.",
          "dependsOn": "behavior.expansion.enabled",
          "critical": true,
          "example": "\"praxis.detail.schema\""
        },
        {
          "path": "behavior.expansion.detail.schemaContract.version",
          "category": "interaction",
          "valueKind": "string",
          "description": "Versão do contrato de schema detail.",
          "dependsOn": "behavior.expansion.enabled",
          "critical": true,
          "example": "\"1.0.0\""
        },
        {
          "path": "behavior.expansion.detail.source.mode",
          "category": "interaction",
          "valueKind": "enum",
          "allowedValues": [
            "inline",
            "resource",
            "resourcePath",
            "hypermedia"
          ],
          "description": "Fonte do schema de detail (inline/resource/resourcePath/hypermedia).",
          "dependsOn": "behavior.expansion.enabled",
          "critical": true
        },
        {
          "path": "behavior.expansion.detail.source.inlineSchema",
          "category": "interaction",
          "valueKind": "object",
          "description": "Schema inline completo para detail row quando source.mode=inline.",
          "dependsOn": "behavior.expansion.detail.source.mode",
          "safetyNotes": "O payload é schema-driven e deve respeitar schemaContract.allowedNodes."
        },
        {
          "path": "behavior.expansion.detail.source.resource.kind",
          "category": "interaction",
          "valueKind": "enum",
          "allowedValues": [
            "ui-composition",
            "form-schema",
            "table-schema",
            "dashboard-schema"
          ],
          "description": "Tipo de recurso quando source.mode=resource.",
          "dependsOn": "behavior.expansion.detail.source.mode"
        },
        {
          "path": "behavior.expansion.detail.source.resource.id",
          "category": "interaction",
          "valueKind": "string",
          "description": "ID do resource de detail schema.",
          "dependsOn": "behavior.expansion.detail.source.mode"
        },
        {
          "path": "behavior.expansion.detail.source.resource.version",
          "category": "interaction",
          "valueKind": "string",
          "description": "Versão do resource de detail schema.",
          "dependsOn": "behavior.expansion.detail.source.mode"
        },
        {
          "path": "behavior.expansion.detail.source.resourcePath.path",
          "category": "interaction",
          "valueKind": "string",
          "description": "Endpoint para resolver schema/detail data quando source.mode=resourcePath.",
          "dependsOn": "behavior.expansion.detail.source.mode",
          "safetyNotes": "Use rota relativa same-origin + allowlist; URL absoluta é bloqueada em runtime."
        },
        {
          "path": "behavior.expansion.detail.source.resourcePath.method",
          "category": "interaction",
          "valueKind": "enum",
          "allowedValues": [
            "GET",
            "POST"
          ],
          "description": "Método HTTP para resolver o detail schema/data.",
          "dependsOn": "behavior.expansion.detail.source.mode"
        },
        {
          "path": "behavior.expansion.detail.source.resourcePath.paramsMap",
          "category": "interaction",
          "valueKind": "object",
          "description": "Mapeia placeholders do resourcePath para expressões de contexto por linha (ex.: { id: \"$row.id\" }).",
          "dependsOn": "behavior.expansion.detail.source.mode",
          "safetyNotes": "JSON deve ser objeto simples; em runtime inválido aplica fail-closed."
        },
        {
          "path": "behavior.expansion.detail.source.resourceAllowList[]",
          "category": "interaction",
          "valueKind": "array",
          "description": "Allowlist obrigatória de rotas para source.mode=resourcePath.",
          "dependsOn": "behavior.expansion.detail.source.mode",
          "critical": true,
          "safetyNotes": "Sem allowlist o runtime bloqueia carregamento (fail-closed)."
        },
        {
          "path": "behavior.expansion.detail.source.hypermedia",
          "category": "interaction",
          "valueKind": "object",
          "description": "Configuração opcional do modo hypermedia; usa _links.capabilities como ponto único de descoberta canônica.",
          "dependsOn": "behavior.expansion.detail.source.mode",
          "safetyNotes": "O runtime continua fail-closed quando o item não expõe rel capabilities."
        },
        {
          "path": "behavior.expansion.detail.rendering.strategy",
          "category": "interaction",
          "valueKind": "enum",
          "allowedValues": [
            "registry"
          ],
          "description": "Estratégia de render do schema de detail.",
          "dependsOn": "behavior.expansion.enabled"
        },
        {
          "path": "behavior.expansion.detail.rendering.registryId",
          "category": "interaction",
          "valueKind": "string",
          "description": "ID do registry de renderers para detail row.",
          "dependsOn": "behavior.expansion.detail.rendering.strategy",
          "critical": true
        },
        {
          "path": "behavior.expansion.detail.rendering.hostLayout",
          "category": "interaction",
          "valueKind": "enum",
          "allowedValues": [
            "auto",
            "stack",
            "tabs"
          ],
          "description": "Layout hospedeiro preferencial do detail.",
          "dependsOn": "behavior.expansion.detail.rendering.strategy"
        },
        {
          "path": "behavior.expansion.detail.rendering.fallbackNodePolicy",
          "category": "interaction",
          "valueKind": "enum",
          "allowedValues": [
            "failClosed",
            "renderPlaceholder"
          ],
          "description": "Política para nós sem renderer registrado.",
          "dependsOn": "behavior.expansion.detail.rendering.strategy",
          "safetyNotes": "Use failClosed em ambiente corporativo."
        },
        {
          "path": "behavior.expansion.detail.height.mode",
          "category": "performance",
          "valueKind": "enum",
          "allowedValues": [
            "fixed",
            "dynamic"
          ],
          "description": "Modo de altura do detail row.",
          "dependsOn": "behavior.expansion.enabled"
        },
        {
          "path": "behavior.expansion.detail.height.px",
          "category": "performance",
          "valueKind": "number",
          "description": "Altura fixa (px) quando height.mode=fixed.",
          "dependsOn": "behavior.expansion.detail.height.mode",
          "example": "160"
        },
        {
          "path": "behavior.expansion.virtualization.policy",
          "category": "performance",
          "valueKind": "enum",
          "allowedValues": [
            "fixed-height-only",
            "allow-dynamic-under-flag"
          ],
          "description": "Política de compatibilidade com virtualização.",
          "dependsOn": "behavior.expansion.enabled",
          "safetyNotes": "No P0, use fixed-height-only."
        },
        {
          "path": "behavior.expansion.persistence.enabled",
          "category": "interaction",
          "valueKind": "boolean",
          "description": "Persiste linhas expandidas por escopo.",
          "dependsOn": "behavior.expansion.enabled"
        },
        {
          "path": "behavior.expansion.persistence.storageKeyStrategy.namespace",
          "category": "interaction",
          "valueKind": "string",
          "description": "Namespace de persistência para evitar colisão entre apps/tenants.",
          "dependsOn": "behavior.expansion.persistence.enabled",
          "example": "\"praxis.table.expansion\""
        },
        {
          "path": "behavior.expansion.security.eventExposureDefault.rowId",
          "category": "interaction",
          "valueKind": "enum",
          "allowedValues": [
            "redacted",
            "hashed",
            "raw"
          ],
          "description": "Nível de exposição de rowId em eventos/logs.",
          "dependsOn": "behavior.expansion.enabled",
          "critical": true,
          "safetyNotes": "Preferir hashed/redacted por padrão."
        },
        {
          "path": "behavior.expansion.security.eventExposureDefault.expandedKeys",
          "category": "interaction",
          "valueKind": "enum",
          "allowedValues": [
            "none",
            "hashed",
            "raw"
          ],
          "description": "Exposição de expandedRowKeys em eventos/logs.",
          "dependsOn": "behavior.expansion.enabled",
          "critical": true
        },
        {
          "path": "behavior.expansion.deepLink.enabled",
          "category": "interaction",
          "valueKind": "boolean",
          "description": "Habilita estado de expansão na URL (P1+).",
          "dependsOn": "behavior.expansion.enabled",
          "safetyNotes": "Exigir keyFormat, limites e integridade com token opaco."
        },
        {
          "path": "behavior.expansion.deepLink.encoding",
          "category": "interaction",
          "valueKind": "enum",
          "allowedValues": [
            "csv"
          ],
          "description": "Codificação do payload de deep-link.",
          "dependsOn": "behavior.expansion.deepLink.enabled"
        },
        {
          "path": "behavior.expansion.deepLink.parsing.duplicateParams",
          "category": "interaction",
          "valueKind": "enum",
          "allowedValues": [
            "firstWins",
            "reject"
          ],
          "description": "Política de parâmetros duplicados no parse da URL.",
          "dependsOn": "behavior.expansion.deepLink.enabled"
        },
        {
          "path": "behavior.expansion.deepLink.integrity.mode",
          "category": "interaction",
          "valueKind": "enum",
          "allowedValues": [
            "opaqueToken"
          ],
          "description": "Estratégia de integridade para deep-link.",
          "dependsOn": "behavior.expansion.deepLink.enabled"
        },
        {
          "path": "behavior.expansion.deepLink.privacy.mode",
          "category": "interaction",
          "valueKind": "enum",
          "allowedValues": [
            "denyByDefault",
            "allowByDefault"
          ],
          "description": "Política de privacidade para deep-link.",
          "dependsOn": "behavior.expansion.deepLink.enabled"
        },
        {
          "path": "appearance.density",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "compact",
            "comfortable",
            "spacious"
          ],
          "description": "Densidade vertical da tabela.",
          "intentExamples": [
            "tabela compacta",
            "aumentar espaçamento",
            "modo confortável"
          ]
        },
        {
          "path": "appearance.borders.showRowBorders",
          "category": "appearance",
          "valueKind": "boolean",
          "description": "Exibe bordas horizontais entre linhas.",
          "intentExamples": [
            "linhas divisórias",
            "remover bordas das linhas"
          ]
        },
        {
          "path": "appearance.borders.showColumnBorders",
          "category": "appearance",
          "valueKind": "boolean",
          "description": "Exibe bordas verticais entre colunas.",
          "intentExamples": [
            "colunas com borda",
            "grade vertical"
          ]
        },
        {
          "path": "appearance.borders.showOuterBorder",
          "category": "appearance",
          "valueKind": "boolean",
          "description": "Mostra borda externa da tabela.",
          "example": "true",
          "intentExamples": [
            "borda em volta da tabela"
          ]
        },
        {
          "path": "appearance.borders.style",
          "category": "appearance",
          "valueKind": "enum",
          "allowedValues": [
            "solid",
            "dashed",
            "dotted"
          ],
          "description": "Estilo da borda (solid/dashed/dotted).",
          "dependsOn": "appearance.borders.showOuterBorder"
        },
        {
          "path": "appearance.colors.alternateRowBackground",
          "category": "appearance",
          "valueKind": "string",
          "description": "Cor de fundo para linhas pares (zebra).",
          "intentExamples": [
            "linhas zebradas",
            "fundo alternado"
          ],
          "example": "\"#f7f9fc\""
        },
        {
          "path": "appearance.colors.hoverBackground",
          "category": "appearance",
          "valueKind": "string",
          "description": "Cor de fundo ao passar o mouse.",
          "example": "\"#eef3ff\""
        },
        {
          "path": "appearance.typography.fontSize",
          "category": "appearance",
          "valueKind": "string",
          "description": "Tamanho da fonte das células.",
          "intentExamples": [
            "aumentar fonte",
            "fonte menor"
          ],
          "example": "\"14px\""
        },
        {
          "path": "appearance.typography.headerFontWeight",
          "category": "appearance",
          "valueKind": "string",
          "description": "Peso da fonte do cabeçalho.",
          "example": "\"600\""
        },
        {
          "path": "appearance.spacing.cellPadding",
          "category": "appearance",
          "valueKind": "string",
          "description": "Padding das células.",
          "example": "\"8px 16px\""
        },
        {
          "path": "appearance.responsive.mobile.horizontalScroll",
          "category": "appearance",
          "valueKind": "boolean",
          "description": "Preferência de scroll horizontal responsivo (sem breakpoints.mobile declarado, aplica global por compatibilidade; com breakpoints.mobile, aplica apenas no viewport mobile).",
          "safetyNotes": "Quando removido do contrato, runtime volta para auto sem override explícito."
        },
        {
          "path": "appearance.responsive.breakpoints.mobile",
          "category": "appearance",
          "valueKind": "number",
          "description": "Breakpoint mobile (px) usado para aplicar responsive.mobile.horizontalScroll.",
          "example": "768"
        },
        {
          "path": "appearance.responsive.mobile.cardMode",
          "category": "appearance",
          "valueKind": "boolean",
          "description": "Materializa linhas não virtualizadas como cards rotulados no breakpoint mobile.",
          "safetyNotes": "Preserva os dados de cada coluna; a virtualização permanece no modo tabela de rolagem horizontal."
        },
        {
          "path": "appearance.responsive.mobile.priorityColumns",
          "category": "appearance",
          "valueKind": "array",
          "description": "Ordena os campos prioritários no início do card responsivo sem ocultar os demais dados.",
          "example": "[\"nome\", \"status\"]"
        },
        {
          "path": "appearance.animations.enabled",
          "category": "appearance",
          "valueKind": "boolean",
          "description": "Habilita animações de hover/seleção/superfície da tabela.",
          "safetyNotes": "Desative quando reduceMotion estiver ativo."
        },
        {
          "path": "appearance.elevation.level",
          "category": "appearance",
          "valueKind": "number",
          "description": "Nível de sombra/elevação da superfície da tabela.",
          "example": "2"
        },
        {
          "path": "toolbar",
          "category": "toolbar",
          "valueKind": "object",
          "description": "Configuração global da barra de ferramentas.",
          "intentExamples": [
            "mostrar toolbar no topo",
            "configurar barra de ferramentas"
          ]
        },
        {
          "path": "toolbar.visible",
          "category": "toolbar",
          "valueKind": "boolean",
          "description": "Exibe a barra de ferramentas acima da tabela.",
          "intentExamples": [
            "mostrar toolbar",
            "esconder barra de topo"
          ]
        },
        {
          "path": "toolbar.position",
          "category": "toolbar",
          "valueKind": "enum",
          "allowedValues": [
            "top",
            "bottom",
            "both"
          ],
          "description": "Posiciona a toolbar.",
          "example": "\"top\""
        },
        {
          "path": "toolbar.actionsPosition",
          "category": "toolbar",
          "valueKind": "enum",
          "allowedValues": [
            "top",
            "bottom",
            "both"
          ],
          "description": "Posiciona a barra de ações (top/bottom/both).",
          "intentExamples": [
            "ações no topo",
            "barra de ações embaixo",
            "ações em ambas"
          ],
          "example": "\"bottom\""
        },
        {
          "path": "toolbar.actionsBackgroundColor",
          "category": "toolbar",
          "valueKind": "string",
          "description": "Cor de fundo da barra de ações (token/hex).",
          "intentExamples": [
            "fundo das ações igual ao header",
            "cor da barra de ações do tema",
            "background das ações com surface"
          ],
          "example": "\"var(--md-sys-color-surface-container)\""
        },
        {
          "path": "toolbar.appearance.preset",
          "category": "toolbar",
          "valueKind": "string",
          "description": "Preset visual publico registrado para a toolbar. Use \"table-integrated\" para compor toolbar e tabela como um unico bloco operacional, sem CSS de host mirando classes internas.",
          "intentExamples": [
            "toolbar integrada à tabela",
            "colar barra de filtros na tabela",
            "um bloco visual para toolbar e grid"
          ],
          "example": "\"table-integrated\"",
          "safetyNotes": "Preset governa somente aparência; ações CRUD continuam materializadas por HATEOAS/capabilities e surface.open."
        },
        {
          "path": "toolbar.appearance.variant",
          "category": "toolbar",
          "valueKind": "enum",
          "allowedValues": [
            "flat",
            "outlined",
            "elevated",
            "integrated"
          ],
          "description": "Variante visual canônica da toolbar.",
          "intentExamples": [
            "toolbar elevada",
            "toolbar integrada",
            "barra sem borda"
          ],
          "example": "\"outlined\""
        },
        {
          "path": "toolbar.appearance.density",
          "category": "toolbar",
          "valueKind": "enum",
          "allowedValues": [
            "compact",
            "comfortable",
            "spacious"
          ],
          "description": "Densidade visual da toolbar e de seus botões.",
          "intentExamples": [
            "toolbar compacta",
            "ações mais espaçosas"
          ],
          "example": "\"compact\""
        },
        {
          "path": "toolbar.appearance.shape",
          "category": "toolbar",
          "valueKind": "enum",
          "allowedValues": [
            "square",
            "rounded",
            "pill"
          ],
          "description": "Forma canônica do container e dos botões da toolbar.",
          "intentExamples": [
            "barra em pílula",
            "botões menos arredondados"
          ],
          "example": "\"rounded\""
        },
        {
          "path": "toolbar.appearance.divider",
          "category": "toolbar",
          "valueKind": "enum",
          "allowedValues": [
            "none",
            "start",
            "between-groups"
          ],
          "description": "Política de divisores entre regiões semânticas da toolbar.",
          "intentExamples": [
            "separar configurações",
            "divisor entre ações"
          ],
          "example": "\"start\""
        },
        {
          "path": "toolbar.appearance.tokens",
          "category": "toolbar",
          "valueKind": "object",
          "description": "Tokens CSS públicos da toolbar materializados pelo runtime. Use para personalização visual do host sem redefinir a semântica das ações.",
          "safetyNotes": "Tokens personalizam aparência; intenção, capabilities e roteamento continuam governados por toolbar/actions/export/AI.",
          "example": "{ \"bg\": \"var(--p-host-surface)\", \"actionSize\": \"34px\" }"
        },
        {
          "path": "toolbar.title",
          "category": "toolbar",
          "valueKind": "string",
          "description": "Título principal na toolbar.",
          "intentExamples": [
            "mudar título da tabela",
            "nome da lista"
          ]
        },
        {
          "path": "toolbar.subtitle",
          "category": "toolbar",
          "valueKind": "string",
          "description": "Subtítulo/descrição curta na toolbar.",
          "example": "\"Dados sincronizados a cada 15min\""
        },
        {
          "path": "toolbar.icon",
          "category": "toolbar",
          "valueKind": "string",
          "description": "Ícone semântico exibido ao lado do título da toolbar.",
          "intentExamples": [
            "ícone da toolbar",
            "mostrar ícone de tabela no cabeçalho"
          ],
          "example": "\"table_view\""
        },
        {
          "path": "toolbar.textAlign",
          "category": "toolbar",
          "valueKind": "enum",
          "allowedValues": [
            "start",
            "center",
            "end"
          ],
          "description": "Alinhamento textual do bloco de título/subtítulo da toolbar.",
          "intentExamples": [
            "centralizar o título da toolbar",
            "alinhar título à direita"
          ],
          "example": "\"start\""
        },
        {
          "path": "toolbar.appearance.tokens.titleFg",
          "category": "toolbar",
          "valueKind": "string",
          "description": "Token CSS para a cor do título da toolbar.",
          "example": "\"var(--md-sys-color-on-surface)\""
        },
        {
          "path": "toolbar.appearance.tokens.subtitleFg",
          "category": "toolbar",
          "valueKind": "string",
          "description": "Token CSS para a cor do subtítulo da toolbar.",
          "example": "\"var(--md-sys-color-on-surface-variant)\""
        },
        {
          "path": "toolbar.appearance.tokens.iconFg",
          "category": "toolbar",
          "valueKind": "string",
          "description": "Token CSS para a cor do ícone da identidade da toolbar.",
          "example": "\"var(--md-sys-color-primary)\""
        },
        {
          "path": "toolbar.appearance.tokens.titleFontSize",
          "category": "toolbar",
          "valueKind": "string",
          "description": "Token CSS para tamanho do título da toolbar.",
          "example": "\"14px\""
        },
        {
          "path": "toolbar.appearance.tokens.subtitleFontSize",
          "category": "toolbar",
          "valueKind": "string",
          "description": "Token CSS para tamanho do subtítulo da toolbar.",
          "example": "\"11px\""
        },
        {
          "path": "toolbar.appearance.tokens.titleFontWeight",
          "category": "toolbar",
          "valueKind": "string",
          "description": "Token CSS para peso tipográfico do título da toolbar.",
          "example": "\"700\""
        },
        {
          "path": "toolbar.appearance.tokens.identityGap",
          "category": "toolbar",
          "valueKind": "string",
          "description": "Token CSS para o espaçamento entre ícone e copy da identidade da toolbar.",
          "example": "\"8px\""
        },
        {
          "path": "toolbar.appearance.tokens.identityFilterGap",
          "category": "toolbar",
          "valueKind": "string",
          "description": "Token CSS para o respiro vertical entre a identidade da toolbar e filtros/controles quando a identidade ocupa linha própria.",
          "example": "\"10px\""
        },
        {
          "path": "toolbar.appearance.tokens.identityMinHeight",
          "category": "toolbar",
          "valueKind": "string",
          "description": "Token CSS para a altura mínima do bloco de identidade da toolbar.",
          "example": "\"30px\""
        },
        {
          "path": "toolbar.appearance.tokens.identityMarginBottom",
          "category": "toolbar",
          "valueKind": "string",
          "description": "Token CSS para o espaçamento inferior complementar da identidade da toolbar.",
          "example": "\"2px\""
        },
        {
          "path": "toolbar.appearance.tokens.identityIconSize",
          "category": "toolbar",
          "valueKind": "string",
          "description": "Token CSS para o tamanho do container do ícone da identidade da toolbar.",
          "example": "\"28px\""
        },
        {
          "path": "toolbar.appearance.tokens.identityIconRadius",
          "category": "toolbar",
          "valueKind": "string",
          "description": "Token CSS para o raio do container do ícone da identidade da toolbar.",
          "example": "\"8px\""
        },
        {
          "path": "toolbar.layout.alignment",
          "category": "toolbar",
          "valueKind": "enum",
          "allowedValues": [
            "start",
            "center",
            "end",
            "space-between"
          ],
          "description": "Alinhamento do conteúdo da toolbar.",
          "example": "\"space-between\""
        },
        {
          "path": "toolbar.filters.enabled",
          "category": "toolbar",
          "valueKind": "boolean",
          "description": "Exibe filtros rápidos na toolbar.",
          "dependsOn": "behavior.filtering.enabled"
        },
        {
          "path": "toolbar.settingsMenu.enabled",
          "category": "toolbar",
          "valueKind": "boolean",
          "description": "Mostra menu de configurações (densidade, colunas etc.).",
          "intentExamples": [
            "mostrar menu de configurações"
          ]
        },
        {
          "path": "toolbar.actions[]",
          "category": "toolbar",
          "valueKind": "array",
          "description": "Ações exibidas na barra de ferramentas da tabela.",
          "dependsOn": "toolbar.visible",
          "intentExamples": [
            "adicionar botão na toolbar",
            "criar ação de exportação na barra de ações"
          ]
        },
        {
          "path": "toolbar.actions[].visibleWhen",
          "category": "toolbar",
          "valueKind": "expression",
          "description": "Condicao canonica em JSON Logic para exibir a acao da toolbar.",
          "dependsOn": "toolbar.visible",
          "safetyNotes": "Invalid Json Logic falha fechado; a acao nao deve ser exibida em nenhum ambiente."
        },
        {
          "path": "actions.collection.discovery.enabled",
          "category": "actions",
          "valueKind": "boolean",
          "description": "Controla a materialização de ações de coleção descobertas por HATEOAS/capabilities.",
          "critical": true,
          "intentExamples": [
            "desligar ações descobertas no seletor",
            "manter somente ações explícitas da coleção"
          ],
          "safetyNotes": "Desabilitar não remove ações explícitas, ações por linha, leitura remota, schema ou paginação."
        },
        {
          "path": "actions.row.enabled",
          "category": "actions",
          "valueKind": "boolean",
          "description": "Habilita coluna de ações por linha.",
          "critical": true,
          "intentExamples": [
            "ativar ações por linha",
            "desligar coluna de ações"
          ],
          "safetyNotes": "Ao desabilitar, verifique se não há ações críticas dependentes."
        },
        {
          "path": "actions.row.display",
          "category": "actions",
          "valueKind": "enum",
          "allowedValues": [
            "menu",
            "buttons",
            "icons"
          ],
          "description": "Modo de exibição das ações (menu/buttons/icons).",
          "dependsOn": "actions.row.enabled"
        },
        {
          "path": "actions.row.trigger",
          "category": "actions",
          "valueKind": "enum",
          "allowedValues": [
            "hover",
            "always",
            "click"
          ],
          "description": "Como as ações aparecem (hover/always/click).",
          "dependsOn": "actions.row.enabled"
        },
        {
          "path": "actions.row.discovery.enabled",
          "category": "actions",
          "valueKind": "boolean",
          "description": "Controla se a tabela enriquece ações por linha com discovery contextual de HATEOAS/capabilities.",
          "dependsOn": "actions.row.enabled",
          "safetyNotes": "Use false quando a experiência precisar mostrar apenas ações curadas pelo host."
        },
        {
          "path": "actions.row.actions[]",
          "category": "actions",
          "valueKind": "array",
          "description": "Ações curadas exibidas em cada linha da tabela. Use para criar botões de linha com GlobalActionRef governada, como surface.open.",
          "dependsOn": "actions.row.enabled",
          "intentExamples": [
            "adicionar botão em cada linha",
            "criar ação de linha para abrir uma superfície relacionada"
          ]
        },
        {
          "path": "actions.row.actions[].recordSurface",
          "category": "actions",
          "valueKind": "object",
          "description": "ResourceSurfaceCatalogItem canonico preservado para uma acao de linha abrir a superficie relacionada ao registro clicado sem sobrescrever a identidade da surface.",
          "dependsOn": "actions.row.actions[]",
          "intentExamples": [
            "botão de linha para abrir folha de pagamento",
            "ação por linha para abrir timeline relacionada"
          ]
        },
        {
          "path": "actions.row.actions[].globalAction.[actionId]",
          "category": "actions",
          "valueKind": "string",
          "description": "Identificador canônico de global action para a ação por linha (ex.: \"navigation.openRoute\", \"surface.open\", \"toast.success\").",
          "dependsOn": "actions.row.enabled",
          "intentExamples": [
            "navegar para detalhe interno ao clicar na linha",
            "abrir drawer com surface.open",
            "mostrar toast de sucesso"
          ]
        },
        {
          "path": "actions.row.actions[].globalAction.payload",
          "category": "actions",
          "valueKind": "object",
          "description": "Payload estruturado da global action por linha. Para `navigation.openRoute`, templates como `${row.id}` são resolvidos antes da navegação; para ações como `surface.open`, `payload.*` continua sendo o envelope canônico do evento consumido pelo destino.",
          "dependsOn": "actions.row.actions[].globalAction.[actionId]",
          "intentExamples": [
            "abrir detalhe com query.id da linha",
            "passar state.selectedId usando a linha atual"
          ],
          "example": "{ \"path\": \"/clientes/detalhe\", \"query\": { \"id\": \"${row.id}\" }, \"state\": { \"selectedId\": \"${row.id}\" } }"
        },
        {
          "path": "actions.row.actions[].visibleWhen",
          "category": "actions",
          "valueKind": "expression",
          "description": "Condicao canonica em JSON Logic para exibir a acao por linha.",
          "dependsOn": "actions.row.enabled",
          "safetyNotes": "Invalid Json Logic falha fechado; a acao de linha nao deve ser exibida em nenhum ambiente."
        },
        {
          "path": "actions.row.actions[].disabledWhen",
          "category": "actions",
          "valueKind": "expression",
          "description": "Condicao canonica em JSON Logic para desabilitar a acao por linha.",
          "dependsOn": "actions.row.enabled",
          "safetyNotes": "Invalid Json Logic falha como nao desabilitado, preservando logs estruturados."
        },
        {
          "path": "actions.row.actions[].effects",
          "category": "actions",
          "valueKind": "array",
          "description": "Array canonico de efeitos runtime da acao por linha, alinhado com PraxisRuntimeGlobalActionEffect.",
          "dependsOn": "actions.row.enabled"
        },
        {
          "path": "actions.row.actions[].effects[].kind",
          "category": "actions",
          "valueKind": "enum",
          "allowedValues": [
            "global-action"
          ],
          "description": "Tipo de efeito runtime da acao por linha. Neste corte, apenas global-action e suportado.",
          "dependsOn": "actions.row.actions[].effects"
        },
        {
          "path": "actions.row.actions[].effects[].globalAction.[actionId]",
          "category": "actions",
          "valueKind": "string",
          "description": "Identificador canonico da GlobalActionRef dentro do efeito runtime por linha.",
          "dependsOn": "actions.row.actions[].effects[].kind"
        },
        {
          "path": "actions.row.actions[].effects[].globalAction.payload",
          "category": "actions",
          "valueKind": "object",
          "description": "Payload estruturado da GlobalActionRef dentro do efeito runtime por linha.",
          "dependsOn": "actions.row.actions[].effects[].globalAction.[actionId]"
        },
        {
          "path": "actions.bulk.enabled",
          "category": "actions",
          "valueKind": "boolean",
          "description": "Habilita ações em lote.",
          "critical": true,
          "intentExamples": [
            "ativar ações em lote",
            "permitir excluir em massa"
          ],
          "safetyNotes": "Combine com selection.persistSelection e limites de maxSelections."
        },
        {
          "path": "actions.bulk.position",
          "category": "actions",
          "valueKind": "enum",
          "allowedValues": [
            "toolbar",
            "floating",
            "both"
          ],
          "description": "Posição das ações em lote.",
          "dependsOn": "actions.bulk.enabled"
        },
        {
          "path": "actions.bulk.actions[]",
          "category": "actions",
          "valueKind": "array",
          "description": "Ações curadas para operar sobre a seleção atual da tabela. Use para criar botões em lote com GlobalActionRef governada.",
          "dependsOn": "actions.bulk.enabled",
          "intentExamples": [
            "adicionar botão para agir sobre selecionados",
            "criar ação em lote para abrir rota com a seleção atual"
          ]
        },
        {
          "path": "actions.bulk.actions[].globalAction.[actionId]",
          "category": "actions",
          "valueKind": "string",
          "description": "Identificador canônico de global action para a ação em lote.",
          "dependsOn": "actions.bulk.enabled",
          "intentExamples": [
            "disparar ação global com a seleção atual",
            "abrir surface corporativa a partir do bulk action"
          ]
        },
        {
          "path": "actions.bulk.actions[].globalAction.payload",
          "category": "actions",
          "valueKind": "object",
          "description": "Payload estruturado da global action em lote. Deve permanecer alinhado ao schema da action escolhida e ao contexto da seleção atual; para `navigation.openRoute`, use templates como `${runtime.selectedIds}` quando precisar enviar os IDs selecionados.",
          "dependsOn": "actions.bulk.actions[].globalAction.[actionId]"
        },
        {
          "path": "actions.bulk.actions[].effects",
          "category": "actions",
          "valueKind": "array",
          "description": "Array canonico de efeitos runtime da acao em lote, alinhado com PraxisRuntimeGlobalActionEffect.",
          "dependsOn": "actions.bulk.enabled"
        },
        {
          "path": "actions.bulk.actions[].effects[].kind",
          "category": "actions",
          "valueKind": "enum",
          "allowedValues": [
            "global-action"
          ],
          "description": "Tipo de efeito runtime da acao em lote. Neste corte, apenas global-action e suportado.",
          "dependsOn": "actions.bulk.actions[].effects"
        },
        {
          "path": "actions.bulk.actions[].effects[].globalAction.[actionId]",
          "category": "actions",
          "valueKind": "string",
          "description": "Identificador canonico da GlobalActionRef dentro do efeito runtime em lote.",
          "dependsOn": "actions.bulk.actions[].effects[].kind"
        },
        {
          "path": "actions.bulk.actions[].effects[].globalAction.payload",
          "category": "actions",
          "valueKind": "object",
          "description": "Payload estruturado da GlobalActionRef dentro do efeito runtime em lote.",
          "dependsOn": "actions.bulk.actions[].effects[].globalAction.[actionId]"
        },
        {
          "path": "actions.context.enabled",
          "category": "actions",
          "valueKind": "boolean",
          "description": "Habilita menu de contexto (clique direito/long press).",
          "critical": true,
          "intentExamples": [
            "ativar menu de contexto"
          ]
        },
        {
          "path": "actions.context.trigger",
          "category": "actions",
          "valueKind": "enum",
          "allowedValues": [
            "right-click",
            "long-press",
            "both"
          ],
          "description": "Trigger para abrir o menu de contexto.",
          "dependsOn": "actions.context.enabled"
        },
        {
          "path": "actions.confirmations.default",
          "category": "actions",
          "valueKind": "object",
          "description": "Texto padrão de confirmação para ações perigosas.",
          "critical": true,
          "example": "{ title: \"Confirmar exclusão\", message: \"Deseja remover o item?\", confirmText: \"Remover\" }"
        },
        {
          "path": "toolbar.actions[].globalAction.[actionId]",
          "category": "toolbar",
          "valueKind": "string",
          "description": "Identificador canônico de global action para ações da toolbar (ex.: \"navigation.openRoute\", \"surface.open\", \"dialog.open\").",
          "dependsOn": "toolbar.visible",
          "intentExamples": [
            "abrir rota interna pela toolbar",
            "abrir surface pela toolbar"
          ]
        },
        {
          "path": "toolbar.actions[].globalAction.payload",
          "category": "toolbar",
          "valueKind": "object",
          "description": "Payload estruturado da global action da toolbar. Para `surface.open`, preserve a semântica canônica do catálogo compartilhado: `payload.*` representa o envelope do evento e `runtime.*` referencia estado exposto diretamente pelo host.",
          "dependsOn": "toolbar.actions[].globalAction.[actionId]"
        },
        {
          "path": "toolbar.actions[].effects",
          "category": "toolbar",
          "valueKind": "array",
          "description": "Array canonico de efeitos runtime da acao da toolbar, alinhado com PraxisRuntimeGlobalActionEffect.",
          "dependsOn": "toolbar.visible"
        },
        {
          "path": "toolbar.actions[].effects[].kind",
          "category": "toolbar",
          "valueKind": "enum",
          "allowedValues": [
            "global-action"
          ],
          "description": "Tipo de efeito runtime da acao da toolbar. Neste corte, apenas global-action e suportado.",
          "dependsOn": "toolbar.actions[].effects"
        },
        {
          "path": "toolbar.actions[].effects[].globalAction.[actionId]",
          "category": "toolbar",
          "valueKind": "string",
          "description": "Identificador canonico da GlobalActionRef dentro do efeito runtime da toolbar.",
          "dependsOn": "toolbar.actions[].effects[].kind"
        },
        {
          "path": "toolbar.actions[].effects[].globalAction.payload",
          "category": "toolbar",
          "valueKind": "object",
          "description": "Payload estruturado da GlobalActionRef dentro do efeito runtime da toolbar.",
          "dependsOn": "toolbar.actions[].effects[].globalAction.[actionId]"
        },
        {
          "path": "export",
          "category": "export",
          "valueKind": "object",
          "description": "Configuração global de exportação da tabela.",
          "critical": true,
          "intentExamples": [
            "habilitar exportação para excel e csv"
          ]
        },
        {
          "path": "export.enabled",
          "category": "export",
          "valueKind": "boolean",
          "description": "Habilita funcionalidades de exportação.",
          "critical": true,
          "intentExamples": [
            "permitir exportar",
            "desativar exportação"
          ],
          "safetyNotes": "Avaliar políticas de dados sensíveis antes de habilitar."
        },
        {
          "path": "export.formats",
          "category": "export",
          "valueKind": "array",
          "description": "Formatos permitidos.",
          "allowedValues": [
            "excel",
            "pdf",
            "csv",
            "json",
            "print"
          ],
          "example": "[\"csv\",\"excel\"]",
          "intentExamples": [
            "exportar para excel",
            "download em csv"
          ]
        },
        {
          "path": "export.general.includeHeaders",
          "category": "export",
          "valueKind": "boolean",
          "description": "Inclui cabeçalhos no arquivo exportado.",
          "intentExamples": [
            "incluir cabeçalho no excel"
          ]
        },
        {
          "path": "export.general.scope",
          "category": "export",
          "valueKind": "enum",
          "allowedValues": [
            "auto",
            "selected",
            "filtered",
            "currentPage",
            "all"
          ],
          "description": "Define o escopo dos dados exportados: auto, selected, filtered, currentPage ou all.",
          "dependsOn": "export.enabled",
          "intentExamples": [
            "exportar apenas selecionados",
            "exportar filtrados",
            "exportar pagina atual"
          ],
          "example": "\"auto\""
        },
        {
          "path": "export.general.maxRows",
          "category": "export",
          "valueKind": "number",
          "description": "Limite de linhas para exportação.",
          "dependsOn": "export.enabled",
          "critical": true,
          "example": "5000",
          "safetyNotes": "Previne exportações pesadas ou vazamento de massa de dados.",
          "intentExamples": [
            "limite de exportação 5000"
          ]
        },
        {
          "path": "export.excel.visibleCurrentPage",
          "category": "export",
          "valueKind": "boolean",
          "description": "Exibe a ação local \"Excel da página atual\", separada do Excel via provider.",
          "dependsOn": "export.enabled + export.formats contains excel",
          "critical": true,
          "intentExamples": [
            "esconder excel da pagina atual",
            "permitir apenas excel via provider"
          ],
          "safetyNotes": "Use false quando a política corporativa exigir que exportações passem pelo provider governado."
        },
        {
          "path": "export.excel.autoFitColumns",
          "category": "export",
          "valueKind": "boolean",
          "description": "Auto-ajusta largura de colunas na planilha.",
          "dependsOn": "export.enabled",
          "intentExamples": [
            "ajustar colunas no excel"
          ]
        },
        {
          "path": "export.pdf.orientation",
          "category": "export",
          "valueKind": "enum",
          "allowedValues": [
            "portrait",
            "landscape"
          ],
          "description": "Orientação do PDF.",
          "dependsOn": "export.enabled",
          "intentExamples": [
            "pdf paisagem",
            "pdf retrato"
          ]
        },
        {
          "path": "export.pdf.pageSize",
          "category": "export",
          "valueKind": "enum",
          "allowedValues": [
            "A4",
            "A3",
            "Letter",
            "Legal"
          ],
          "description": "Tamanho da página no PDF.",
          "dependsOn": "export.enabled"
        },
        {
          "path": "export.csv.delimiter",
          "category": "export",
          "valueKind": "enum",
          "allowedValues": [
            ",",
            ";",
            "|",
            "\\t"
          ],
          "description": "Separador do CSV.",
          "dependsOn": "export.enabled"
        },
        {
          "path": "tableRuntimeOperations.operations[]",
          "category": "runtime",
          "valueKind": "array",
          "description": "Operacoes runtime revisaveis da tabela para aplicar filtros ou executar exportacao sem alterar a configuracao persistida.",
          "critical": true,
          "intentExamples": [
            "aplicar filtro usando selecionados",
            "exportar selecionados agora"
          ]
        },
        {
          "path": "tableRuntimeOperations.operations[].operationId",
          "category": "runtime",
          "valueKind": "enum",
          "allowedValues": [
            "table.filter.apply",
            "table.export.run"
          ],
          "description": "Operacao runtime canonica permitida para a tabela.",
          "dependsOn": "tableRuntimeOperations.operations[]"
        },
        {
          "path": "tableRuntimeOperations.operations[].input.criteria",
          "category": "runtime",
          "valueKind": "object",
          "description": "Criterios de filtro a aplicar no runtime, usando campos declarados no catalogo de filtros. A semantica atual e uma conjuncao simples; expressoes booleanas compostas como OR, anyOf, oneOf ou allOf ainda nao fazem parte deste contrato.",
          "dependsOn": "tableRuntimeOperations.operations[].operationId"
        },
        {
          "path": "tableRuntimeOperations.operations[].input.format",
          "category": "runtime",
          "valueKind": "enum",
          "allowedValues": [
            "excel",
            "pdf",
            "csv",
            "json",
            "print"
          ],
          "description": "Formato da exportacao runtime.",
          "dependsOn": "tableRuntimeOperations.operations[].operationId"
        },
        {
          "path": "tableRuntimeOperations.operations[].input.scope",
          "category": "runtime",
          "valueKind": "enum",
          "allowedValues": [
            "auto",
            "selected",
            "filtered",
            "currentPage",
            "all"
          ],
          "description": "Escopo da exportacao runtime: selected, filtered, currentPage, all ou auto.",
          "dependsOn": "tableRuntimeOperations.operations[].operationId"
        },
        {
          "path": "messages.states.empty",
          "category": "messages",
          "valueKind": "string",
          "description": "Mensagem para estado vazio.",
          "example": "\"Sem registros encontrados.\"",
          "intentExamples": [
            "mensagem de lista vazia"
          ]
        },
        {
          "path": "messages.states.loading",
          "category": "messages",
          "valueKind": "string",
          "description": "Mensagem de loading.",
          "example": "\"Carregando...\"",
          "intentExamples": [
            "texto de carregamento"
          ]
        },
        {
          "path": "messages.actions.confirmations.delete",
          "category": "messages",
          "valueKind": "string",
          "description": "Texto de confirmação de exclusão.",
          "critical": true,
          "safetyNotes": "Evita exclusões silenciosas.",
          "intentExamples": [
            "mensagem ao deletar"
          ]
        },
        {
          "path": "localization.locale",
          "category": "localization",
          "valueKind": "string",
          "description": "Locale principal (ex.: pt-BR, en-US).",
          "example": "\"pt-BR\"",
          "intentExamples": [
            "idioma da tabela"
          ]
        },
        {
          "path": "localization.direction",
          "category": "localization",
          "valueKind": "enum",
          "allowedValues": [
            "ltr",
            "rtl"
          ],
          "description": "Direção do texto (ltr/rtl).",
          "intentExamples": [
            "modo RTL",
            "idioma árabe"
          ]
        },
        {
          "path": "localization.dateTime.dateFormat",
          "category": "localization",
          "valueKind": "string",
          "description": "Formato padrao de datas (DatePipe).",
          "example": "\"dd/MM/yyyy\"",
          "intentExamples": [
            "formato de data"
          ]
        },
        {
          "path": "localization.dateTime.timeFormat",
          "category": "localization",
          "valueKind": "string",
          "description": "Formato padrao de horas (DatePipe).",
          "example": "\"HH:mm:ss\"",
          "intentExamples": [
            "formato de hora"
          ]
        },
        {
          "path": "localization.dateTime.dateTimeFormat",
          "category": "localization",
          "valueKind": "string",
          "description": "Formato padrao de data e hora (DatePipe).",
          "example": "\"dd/MM/yyyy HH:mm:ss\""
        },
        {
          "path": "localization.dateTime.firstDayOfWeek",
          "category": "localization",
          "valueKind": "number",
          "allowedValues": [
            0,
            1,
            2,
            3,
            4,
            5,
            6
          ],
          "description": "Primeiro dia da semana (0=domingo).",
          "example": "0"
        },
        {
          "path": "localization.dateTime.relativeTime",
          "category": "localization",
          "valueKind": "boolean",
          "description": "Habilita formato relativo (ex.: ha 2 dias).",
          "example": "true"
        },
        {
          "path": "localization.dateTime.monthNames",
          "category": "localization",
          "valueKind": "array",
          "description": "Lista de nomes dos meses.",
          "example": "[\"janeiro\",\"fevereiro\"]"
        },
        {
          "path": "localization.dateTime.dayNames",
          "category": "localization",
          "valueKind": "array",
          "description": "Lista de nomes dos dias da semana.",
          "example": "[\"domingo\",\"segunda-feira\"]"
        },
        {
          "path": "localization.number.decimalSeparator",
          "category": "localization",
          "valueKind": "string",
          "description": "Separador decimal.",
          "example": "\",\""
        },
        {
          "path": "localization.number.thousandsSeparator",
          "category": "localization",
          "valueKind": "string",
          "description": "Separador de milhares.",
          "example": "\".\""
        },
        {
          "path": "localization.number.defaultPrecision",
          "category": "localization",
          "valueKind": "number",
          "description": "Casas decimais padrao.",
          "example": "2"
        },
        {
          "path": "localization.number.negativeSign",
          "category": "localization",
          "valueKind": "string",
          "description": "Simbolo de negativo.",
          "example": "\"-\""
        },
        {
          "path": "localization.number.negativeSignPosition",
          "category": "localization",
          "valueKind": "enum",
          "allowedValues": [
            "before",
            "after"
          ],
          "description": "Posicao do sinal negativo."
        },
        {
          "path": "localization.currency.code",
          "category": "localization",
          "valueKind": "string",
          "description": "Codigo da moeda (ISO 4217).",
          "example": "\"BRL\""
        },
        {
          "path": "localization.currency.symbol",
          "category": "localization",
          "valueKind": "string",
          "description": "Simbolo da moeda.",
          "example": "\"R$\""
        },
        {
          "path": "localization.currency.position",
          "category": "localization",
          "valueKind": "enum",
          "allowedValues": [
            "before",
            "after"
          ],
          "description": "Posicao do simbolo da moeda."
        },
        {
          "path": "localization.currency.spacing",
          "category": "localization",
          "valueKind": "boolean",
          "description": "Espaco entre simbolo e valor.",
          "example": "true"
        },
        {
          "path": "localization.currency.precision",
          "category": "localization",
          "valueKind": "number",
          "description": "Precisao padrao da moeda.",
          "example": "2"
        },
        {
          "path": "localization.formatting.percentageFormat",
          "category": "localization",
          "valueKind": "string",
          "description": "Formato de percentual.",
          "example": "\"#0.00%\""
        },
        {
          "path": "localization.formatting.fileSizeFormat",
          "category": "localization",
          "valueKind": "enum",
          "allowedValues": [
            "binary",
            "decimal"
          ],
          "description": "Formato de tamanho de arquivo."
        },
        {
          "path": "performance.virtualization.enabled",
          "category": "performance",
          "valueKind": "boolean",
          "description": "Virtualização via PerformanceConfig.",
          "critical": true,
          "safetyNotes": "Defina itemHeight para evitar saltos visuais."
        },
        {
          "path": "performance.virtualization.itemHeight",
          "category": "performance",
          "valueKind": "number",
          "description": "Altura da linha (px) para virtualização.",
          "dependsOn": "performance.virtualization.enabled",
          "example": "48"
        },
        {
          "path": "performance.debounce.search",
          "category": "performance",
          "valueKind": "number",
          "description": "Debounce (ms) para buscas.",
          "example": "300"
        },
        {
          "path": "performance.debounce.filter",
          "category": "performance",
          "valueKind": "number",
          "description": "Debounce (ms) para filtros.",
          "example": "300"
        },
        {
          "path": "performance.lazyLoading.images",
          "category": "performance",
          "valueKind": "boolean",
          "description": "Ativa lazy loading de imagens na tabela."
        },
        {
          "path": "data.loadingStrategy",
          "category": "data",
          "valueKind": "enum",
          "allowedValues": [
            "eager",
            "lazy",
            "on-demand"
          ],
          "description": "Estratégia de carregamento inicial dos dados.",
          "intentExamples": [
            "carregar sob demanda",
            "carregar tudo de uma vez"
          ]
        },
        {
          "path": "accessibility.enabled",
          "category": "accessibility",
          "valueKind": "boolean",
          "description": "Habilita recursos de acessibilidade.",
          "critical": true,
          "safetyNotes": "Não desligar sem validação de requisitos legais."
        },
        {
          "path": "accessibility.highContrast",
          "category": "accessibility",
          "valueKind": "boolean",
          "description": "Ativa modo de alto contraste.",
          "intentExamples": [
            "habilitar contraste alto"
          ]
        },
        {
          "path": "accessibility.reduceMotion",
          "category": "accessibility",
          "valueKind": "boolean",
          "description": "Reduz ou desativa animações para evitar motion sickness.",
          "intentExamples": [
            "desativar animações"
          ]
        },
        {
          "path": "accessibility.announcements.liveRegion",
          "category": "accessibility",
          "valueKind": "enum",
          "allowedValues": [
            "polite",
            "assertive"
          ],
          "description": "Região ARIA para anúncios (polite/assertive).",
          "dependsOn": "accessibility.enabled"
        },
        {
          "path": "accessibility.keyboard.shortcuts",
          "category": "accessibility",
          "valueKind": "boolean",
          "description": "Ativa atalhos de teclado.",
          "dependsOn": "accessibility.enabled"
        }
      ],
      "componentCapabilities": [
        {
          "path": "inputs.config",
          "category": "inputs",
          "valueKind": "object",
          "description": "Configuracao completa da tabela (TableConfig).",
          "critical": true
        },
        {
          "path": "inputs.resourcePath",
          "category": "data",
          "valueKind": "string",
          "description": "Endpoint base para operacoes de dados."
        },
        {
          "path": "inputs.queryContext",
          "category": "data",
          "valueKind": "object",
          "description": "Contrato semantico primario para consulta declarativa; nesta fase a tabela consome filters, sort, limit e page com foco principal em queryContext.filters."
        },
        {
          "path": "inputs.filterCriteria",
          "category": "data",
          "valueKind": "object",
          "description": "Bridge legada de compatibilidade. Para novo authoring, prefira inputs.queryContext."
        },
        {
          "path": "inputs.showToolbar",
          "category": "appearance",
          "valueKind": "boolean",
          "description": "Exibe barra de ferramentas."
        },
        {
          "path": "inputs.toolbarV2",
          "category": "appearance",
          "valueKind": "boolean",
          "description": "Ativa layout da toolbar v2."
        },
        {
          "path": "inputs.autoDelete",
          "category": "behavior",
          "valueKind": "boolean",
          "description": "Ativa delecao automatica."
        },
        {
          "path": "inputs.enableCustomization",
          "category": "behavior",
          "valueKind": "boolean",
          "description": "Permite edicao de layout."
        },
        {
          "path": "inputs.dense",
          "category": "appearance",
          "valueKind": "boolean",
          "description": "Entrada legada: aplica compacto apenas quando appearance.density nao foi definido. Preferir appearance.density para novas configuracoes."
        },
        {
          "path": "inputs.tableId",
          "category": "inputs",
          "valueKind": "string",
          "description": "Identificador para armazenamento de configuracao."
        },
        {
          "path": "outputs.rowClick",
          "category": "outputs",
          "valueKind": "object",
          "description": "Evento emitido ao clicar em uma linha."
        },
        {
          "path": "outputs.rowDoubleClick",
          "category": "outputs",
          "valueKind": "object",
          "description": "Evento emitido ao dar duplo clique em uma linha."
        },
        {
          "path": "outputs.rowExpansionChange",
          "category": "outputs",
          "valueKind": "object",
          "description": "Evento emitido ao expandir/colapsar detalhe de linha com payload governado por politica de exposicao."
        },
        {
          "path": "outputs.rowAction",
          "category": "outputs",
          "valueKind": "object",
          "description": "Evento emitido ao acionar uma acao em uma linha."
        },
        {
          "path": "outputs.toolbarAction",
          "category": "outputs",
          "valueKind": "object",
          "description": "Evento emitido ao acionar uma acao da toolbar."
        },
        {
          "path": "outputs.bulkAction",
          "category": "outputs",
          "valueKind": "object",
          "description": "Evento emitido ao executar acoes em massa."
        },
        {
          "path": "outputs.columnReorder",
          "category": "outputs",
          "valueKind": "object",
          "description": "Evento emitido quando a reordenacao de colunas e concluida (trigger: drag, keyboard ou undo; inclui operationId monotônico)."
        },
        {
          "path": "outputs.columnReorderAttempt",
          "category": "outputs",
          "valueKind": "object",
          "description": "Evento emitido para tentativa bloqueada de reordenacao de colunas (inclui operationId monotônico para correlacao)."
        },
        {
          "path": "outputs.columnResize",
          "category": "outputs",
          "valueKind": "object",
          "description": "Evento emitido quando uma coluna e redimensionada por ponteiro, teclado ou auto-fit (inclui operationId monotonico e status de persistencia)."
        },
        {
          "path": "outputs.beforeDelete",
          "category": "outputs",
          "valueKind": "object",
          "description": "Evento emitido antes de deletar uma linha."
        },
        {
          "path": "outputs.afterDelete",
          "category": "outputs",
          "valueKind": "object",
          "description": "Evento emitido apos deletar uma linha."
        },
        {
          "path": "outputs.deleteError",
          "category": "outputs",
          "valueKind": "object",
          "description": "Evento emitido ao ocorrer erro na delecao."
        },
        {
          "path": "outputs.beforeBulkDelete",
          "category": "outputs",
          "valueKind": "object",
          "description": "Evento emitido antes de deletar multiplas linhas."
        },
        {
          "path": "outputs.afterBulkDelete",
          "category": "outputs",
          "valueKind": "object",
          "description": "Evento emitido apos deletar multiplas linhas."
        },
        {
          "path": "outputs.bulkDeleteError",
          "category": "outputs",
          "valueKind": "object",
          "description": "Evento emitido ao ocorrer erro na delecao em massa."
        }
      ],
      "componentCapabilityNotes": [
        "Este catalogo descreve inputs e outputs do componente.",
        "inputs.config segue o schema de TableConfig (veja table-ai-capabilities)."
      ],
      "componentContext": {
        "version": "v1",
        "optionsByPath": {
          "appearance.density": {
            "mode": "enum",
            "options": [
              {
                "value": "compact",
                "label": "Compact"
              },
              {
                "value": "comfortable",
                "label": "Comfortable"
              },
              {
                "value": "spacious",
                "label": "Spacious"
              }
            ]
          },
          "export.formats": {
            "mode": "enum",
            "options": [
              {
                "value": "excel",
                "label": "Excel"
              },
              {
                "value": "pdf",
                "label": "PDF"
              },
              {
                "value": "csv",
                "label": "CSV"
              },
              {
                "value": "json",
                "label": "JSON"
              },
              {
                "value": "print",
                "label": "Print"
              }
            ]
          },
          "columns[].type": {
            "mode": "enum",
            "options": [
              {
                "value": "string",
                "label": "String"
              },
              {
                "value": "number",
                "label": "Number"
              },
              {
                "value": "currency",
                "label": "Currency"
              },
              {
                "value": "percentage",
                "label": "Percentage"
              },
              {
                "value": "date",
                "label": "Date"
              },
              {
                "value": "boolean",
                "label": "Boolean"
              },
              {
                "value": "custom",
                "label": "Custom"
              }
            ]
          },
          "columns[].format": {
            "mode": "suggested",
            "options": [
              {
                "value": "shortDate",
                "label": "Date short",
                "example": "01/12/2023"
              },
              {
                "value": "mediumDate",
                "label": "Date medium",
                "example": "01 Dec 2023"
              },
              {
                "value": "longDate",
                "label": "Date long",
                "example": "01 December 2023"
              },
              {
                "value": "fullDate",
                "label": "Date full",
                "example": "Friday, 01 December 2023"
              },
              {
                "value": "MMM/yyyy",
                "label": "Month/Year",
                "example": "Dec/2023"
              },
              {
                "value": "shortTime",
                "label": "Time short",
                "example": "14:30"
              },
              {
                "value": "short",
                "label": "Date+Time short",
                "example": "01/12/2023 14:30"
              },
              {
                "value": "yyyy-MM-dd",
                "label": "ISO 8601",
                "example": "2023-12-01"
              },
              {
                "value": "dd/MM/yyyy",
                "label": "Date dd/MM/yyyy",
                "example": "01/12/2023"
              },
              {
                "value": "yyyy-MM-dd HH:mm",
                "label": "DateTime yyyy-MM-dd HH:mm",
                "example": "2023-12-01 14:30"
              },
              {
                "value": "1.0-0",
                "label": "Number integer",
                "example": "1,234"
              },
              {
                "value": "1.1-1",
                "label": "Number 1 decimal",
                "example": "1,234.5"
              },
              {
                "value": "1.2-2",
                "label": "Number 2 decimals",
                "example": "1,234.56"
              },
              {
                "value": "1.0-3",
                "label": "Number up to 3 decimals",
                "example": "1,234.567"
              },
              {
                "value": "1.0-0|nosep",
                "label": "Number no grouping",
                "example": "1234"
              },
              {
                "value": "BRL|symbol|2",
                "label": "Currency BRL symbol",
                "example": "R$ 1.234,56"
              },
              {
                "value": "BRL|symbol|2|nosep",
                "label": "Currency BRL symbol (no grouping)",
                "example": "R$ 1234,56"
              },
              {
                "value": "USD|symbol|2",
                "label": "Currency USD symbol",
                "example": "US$ 1,234.56"
              },
              {
                "value": "EUR|symbol|2",
                "label": "Currency EUR symbol",
                "example": "EUR 1,234.56"
              },
              {
                "value": "BRL|code|2",
                "label": "Currency code",
                "example": "1,234.56 BRL"
              },
              {
                "value": "USD|code|0",
                "label": "Currency USD code (0 decimals)",
                "example": "1234 USD"
              },
              {
                "value": "EUR|symbol|2|nosep",
                "label": "Currency EUR symbol (no grouping)",
                "example": "EUR 1234,56"
              },
              {
                "value": "1.0-0",
                "label": "Percent 0 decimals",
                "example": "12%"
              },
              {
                "value": "1.1-1",
                "label": "Percent 1 decimal",
                "example": "12.3%"
              },
              {
                "value": "1.2-2",
                "label": "Percent 2 decimals",
                "example": "12.34%"
              },
              {
                "value": "1.0-0|x100",
                "label": "Percent 0 decimals (x100)",
                "example": "12%"
              },
              {
                "value": "1.1-1|x100",
                "label": "Percent 1 decimal (x100)",
                "example": "12.3%"
              },
              {
                "value": "1.2-2|x100",
                "label": "Percent 2 decimals (x100)",
                "example": "12.34%"
              },
              {
                "value": "none",
                "label": "String none",
                "example": "Sample"
              },
              {
                "value": "uppercase",
                "label": "String uppercase",
                "example": "SAMPLE"
              },
              {
                "value": "lowercase",
                "label": "String lowercase",
                "example": "sample"
              },
              {
                "value": "titlecase",
                "label": "String titlecase",
                "example": "Sample Text"
              },
              {
                "value": "capitalize",
                "label": "String capitalize",
                "example": "Sample"
              },
              {
                "value": "uppercase|truncate|50|...",
                "label": "String uppercase + truncate 50",
                "example": "SAMPLE..."
              },
              {
                "value": "true-false",
                "label": "Boolean true/false",
                "example": "True / False"
              },
              {
                "value": "yes-no",
                "label": "Boolean yes/no",
                "example": "Yes / No"
              },
              {
                "value": "active-inactive",
                "label": "Boolean active/inactive",
                "example": "Active / Inactive"
              },
              {
                "value": "on-off",
                "label": "Boolean on/off",
                "example": "On / Off"
              },
              {
                "value": "enabled-disabled",
                "label": "Boolean enabled/disabled",
                "example": "Enabled / Disabled"
              },
              {
                "value": "custom|Sim|Nao",
                "label": "Boolean custom (Sim/Nao)",
                "example": "Sim / Nao"
              }
            ]
          },
          "columns[].computed.outputType": {
            "mode": "enum",
            "options": [
              {
                "value": "string",
                "label": "String"
              },
              {
                "value": "number",
                "label": "Number"
              },
              {
                "value": "currency",
                "label": "Currency"
              },
              {
                "value": "percentage",
                "label": "Percentage"
              },
              {
                "value": "date",
                "label": "Date"
              },
              {
                "value": "boolean",
                "label": "Boolean"
              },
              {
                "value": "custom",
                "label": "Custom"
              }
            ]
          },
          "columns[].computed.format": {
            "mode": "suggested",
            "options": [
              {
                "value": "shortDate",
                "label": "Date short",
                "example": "01/12/2023"
              },
              {
                "value": "mediumDate",
                "label": "Date medium",
                "example": "01 Dec 2023"
              },
              {
                "value": "longDate",
                "label": "Date long",
                "example": "01 December 2023"
              },
              {
                "value": "fullDate",
                "label": "Date full",
                "example": "Friday, 01 December 2023"
              },
              {
                "value": "MMM/yyyy",
                "label": "Month/Year",
                "example": "Dec/2023"
              },
              {
                "value": "shortTime",
                "label": "Time short",
                "example": "14:30"
              },
              {
                "value": "short",
                "label": "Date+Time short",
                "example": "01/12/2023 14:30"
              },
              {
                "value": "yyyy-MM-dd",
                "label": "ISO 8601",
                "example": "2023-12-01"
              },
              {
                "value": "dd/MM/yyyy",
                "label": "Date dd/MM/yyyy",
                "example": "01/12/2023"
              },
              {
                "value": "yyyy-MM-dd HH:mm",
                "label": "DateTime yyyy-MM-dd HH:mm",
                "example": "2023-12-01 14:30"
              },
              {
                "value": "1.0-0",
                "label": "Number integer",
                "example": "1,234"
              },
              {
                "value": "1.1-1",
                "label": "Number 1 decimal",
                "example": "1,234.5"
              },
              {
                "value": "1.2-2",
                "label": "Number 2 decimals",
                "example": "1,234.56"
              },
              {
                "value": "1.0-3",
                "label": "Number up to 3 decimals",
                "example": "1,234.567"
              },
              {
                "value": "1.0-0|nosep",
                "label": "Number no grouping",
                "example": "1234"
              },
              {
                "value": "BRL|symbol|2",
                "label": "Currency BRL symbol",
                "example": "R$ 1.234,56"
              },
              {
                "value": "BRL|symbol|2|nosep",
                "label": "Currency BRL symbol (no grouping)",
                "example": "R$ 1234,56"
              },
              {
                "value": "USD|symbol|2",
                "label": "Currency USD symbol",
                "example": "US$ 1,234.56"
              },
              {
                "value": "EUR|symbol|2",
                "label": "Currency EUR symbol",
                "example": "EUR 1,234.56"
              },
              {
                "value": "BRL|code|2",
                "label": "Currency code",
                "example": "1,234.56 BRL"
              },
              {
                "value": "USD|code|0",
                "label": "Currency USD code (0 decimals)",
                "example": "1234 USD"
              },
              {
                "value": "EUR|symbol|2|nosep",
                "label": "Currency EUR symbol (no grouping)",
                "example": "EUR 1234,56"
              },
              {
                "value": "1.0-0",
                "label": "Percent 0 decimals",
                "example": "12%"
              },
              {
                "value": "1.1-1",
                "label": "Percent 1 decimal",
                "example": "12.3%"
              },
              {
                "value": "1.2-2",
                "label": "Percent 2 decimals",
                "example": "12.34%"
              },
              {
                "value": "1.0-0|x100",
                "label": "Percent 0 decimals (x100)",
                "example": "12%"
              },
              {
                "value": "1.1-1|x100",
                "label": "Percent 1 decimal (x100)",
                "example": "12.3%"
              },
              {
                "value": "1.2-2|x100",
                "label": "Percent 2 decimals (x100)",
                "example": "12.34%"
              },
              {
                "value": "none",
                "label": "String none",
                "example": "Sample"
              },
              {
                "value": "uppercase",
                "label": "String uppercase",
                "example": "SAMPLE"
              },
              {
                "value": "lowercase",
                "label": "String lowercase",
                "example": "sample"
              },
              {
                "value": "titlecase",
                "label": "String titlecase",
                "example": "Sample Text"
              },
              {
                "value": "capitalize",
                "label": "String capitalize",
                "example": "Sample"
              },
              {
                "value": "uppercase|truncate|50|...",
                "label": "String uppercase + truncate 50",
                "example": "SAMPLE..."
              },
              {
                "value": "true-false",
                "label": "Boolean true/false",
                "example": "True / False"
              },
              {
                "value": "yes-no",
                "label": "Boolean yes/no",
                "example": "Yes / No"
              },
              {
                "value": "active-inactive",
                "label": "Boolean active/inactive",
                "example": "Active / Inactive"
              },
              {
                "value": "on-off",
                "label": "Boolean on/off",
                "example": "On / Off"
              },
              {
                "value": "enabled-disabled",
                "label": "Boolean enabled/disabled",
                "example": "Enabled / Disabled"
              },
              {
                "value": "custom|Sim|Nao",
                "label": "Boolean custom (Sim/Nao)",
                "example": "Sim / Nao"
              }
            ]
          },
          "behavior.filtering.advancedFilters.settings.mode": {
            "mode": "enum",
            "options": [
              {
                "value": "filter",
                "label": "Filter"
              }
            ]
          },
          "behavior.expansion.state.mode": {
            "mode": "enum",
            "options": [
              {
                "value": "controlled",
                "label": "Controlled"
              },
              {
                "value": "uncontrolled",
                "label": "Uncontrolled"
              }
            ]
          },
          "behavior.expansion.interaction.trigger": {
            "mode": "enum",
            "options": [
              {
                "value": "icon",
                "label": "Icon"
              },
              {
                "value": "row",
                "label": "Row"
              },
              {
                "value": "both",
                "label": "Both"
              }
            ]
          },
          "behavior.expansion.interaction.keyboard.profile": {
            "mode": "enum",
            "options": [
              {
                "value": "disclosure",
                "label": "Disclosure"
              },
              {
                "value": "grid",
                "label": "Grid"
              }
            ]
          },
          "behavior.expansion.limits.onOverflow": {
            "mode": "enum",
            "options": [
              {
                "value": "collapseOldest",
                "label": "Collapse Oldest"
              },
              {
                "value": "denyNew",
                "label": "Deny New"
              },
              {
                "value": "collapseAll",
                "label": "Collapse All"
              }
            ]
          },
          "behavior.expansion.collapseOn.sortChange": {
            "mode": "enum",
            "options": [
              {
                "value": "true",
                "label": "Enabled"
              },
              {
                "value": "false",
                "label": "Disabled"
              }
            ]
          },
          "behavior.expansion.collapseOn.pageChange": {
            "mode": "enum",
            "options": [
              {
                "value": "true",
                "label": "Enabled"
              },
              {
                "value": "false",
                "label": "Disabled"
              }
            ]
          },
          "behavior.expansion.collapseOn.filterChange": {
            "mode": "enum",
            "options": [
              {
                "value": "true",
                "label": "Enabled"
              },
              {
                "value": "false",
                "label": "Disabled"
              }
            ]
          },
          "behavior.expansion.collapseOn.dataRefresh": {
            "mode": "enum",
            "options": [
              {
                "value": "true",
                "label": "Enabled"
              },
              {
                "value": "false",
                "label": "Disabled"
              }
            ]
          },
          "behavior.expansion.detail.source.mode": {
            "mode": "enum",
            "options": [
              {
                "value": "inline",
                "label": "Inline"
              },
              {
                "value": "resource",
                "label": "Resource"
              },
              {
                "value": "resourcePath",
                "label": "Resource Path"
              }
            ]
          },
          "behavior.expansion.detail.source.resource.kind": {
            "mode": "enum",
            "options": [
              {
                "value": "ui-composition",
                "label": "UI Composition"
              },
              {
                "value": "form-schema",
                "label": "Form Schema"
              },
              {
                "value": "table-schema",
                "label": "Table Schema"
              },
              {
                "value": "dashboard-schema",
                "label": "Dashboard Schema"
              }
            ]
          },
          "behavior.expansion.detail.source.resourcePath.method": {
            "mode": "enum",
            "options": [
              {
                "value": "GET",
                "label": "GET"
              },
              {
                "value": "POST",
                "label": "POST"
              }
            ]
          },
          "behavior.expansion.detail.source.resourcePath.paramsMap": {
            "mode": "suggested",
            "options": [
              {
                "value": "{\"id\":\"$row.id\"}",
                "label": "Row ID"
              },
              {
                "value": "{\"id\":\"$row.id\",\"table\":\"$ctx.tableId\"}",
                "label": "Row + Table"
              }
            ]
          },
          "behavior.expansion.detail.source.resourceAllowList[]": {
            "mode": "suggested",
            "options": [
              {
                "value": "api/orders/*/detail-schema",
                "label": "Orders detail schema"
              },
              {
                "value": "api/customers/*/detail-schema",
                "label": "Customers detail schema"
              }
            ]
          },
          "behavior.expansion.detail.rendering.strategy": {
            "mode": "enum",
            "options": [
              {
                "value": "registry",
                "label": "Registry"
              }
            ]
          },
          "behavior.expansion.detail.rendering.hostLayout": {
            "mode": "enum",
            "options": [
              {
                "value": "auto",
                "label": "Auto"
              },
              {
                "value": "stack",
                "label": "Stack"
              },
              {
                "value": "tabs",
                "label": "Tabs"
              }
            ]
          },
          "behavior.expansion.detail.rendering.fallbackNodePolicy": {
            "mode": "enum",
            "options": [
              {
                "value": "failClosed",
                "label": "Fail Closed"
              },
              {
                "value": "renderPlaceholder",
                "label": "Render Placeholder"
              }
            ]
          },
          "behavior.expansion.detail.height.mode": {
            "mode": "enum",
            "options": [
              {
                "value": "fixed",
                "label": "Fixed"
              },
              {
                "value": "dynamic",
                "label": "Dynamic"
              }
            ]
          },
          "behavior.expansion.virtualization.policy": {
            "mode": "enum",
            "options": [
              {
                "value": "fixed-height-only",
                "label": "Fixed Height Only"
              },
              {
                "value": "allow-dynamic-under-flag",
                "label": "Allow Dynamic Under Flag"
              }
            ]
          },
          "behavior.expansion.security.eventExposureDefault.rowId": {
            "mode": "enum",
            "options": [
              {
                "value": "redacted",
                "label": "Redacted"
              },
              {
                "value": "hashed",
                "label": "Hashed"
              },
              {
                "value": "raw",
                "label": "Raw"
              }
            ]
          },
          "behavior.expansion.security.eventExposureDefault.expandedKeys": {
            "mode": "enum",
            "options": [
              {
                "value": "none",
                "label": "None"
              },
              {
                "value": "hashed",
                "label": "Hashed"
              },
              {
                "value": "raw",
                "label": "Raw"
              }
            ]
          },
          "behavior.expansion.deepLink.encoding": {
            "mode": "enum",
            "options": [
              {
                "value": "csv",
                "label": "CSV"
              }
            ]
          },
          "behavior.expansion.deepLink.parsing.duplicateParams": {
            "mode": "enum",
            "options": [
              {
                "value": "firstWins",
                "label": "First Wins"
              },
              {
                "value": "reject",
                "label": "Reject"
              }
            ]
          },
          "behavior.expansion.deepLink.integrity.mode": {
            "mode": "enum",
            "options": [
              {
                "value": "opaqueToken",
                "label": "Opaque Token"
              }
            ]
          },
          "behavior.expansion.deepLink.privacy.mode": {
            "mode": "enum",
            "options": [
              {
                "value": "denyByDefault",
                "label": "Deny By Default"
              },
              {
                "value": "allowByDefault",
                "label": "Allow By Default"
              }
            ]
          },
          "columns[].renderer.type": {
            "mode": "enum",
            "options": [
              {
                "value": "icon",
                "label": "Icon"
              },
              {
                "value": "image",
                "label": "Image"
              },
              {
                "value": "badge",
                "label": "Badge"
              },
              {
                "value": "link",
                "label": "Link"
              },
              {
                "value": "button",
                "label": "Button"
              },
              {
                "value": "chip",
                "label": "Chip"
              },
              {
                "value": "progress",
                "label": "Progress"
              },
              {
                "value": "avatar",
                "label": "Avatar"
              },
              {
                "value": "toggle",
                "label": "Toggle"
              },
              {
                "value": "menu",
                "label": "Menu"
              },
              {
                "value": "rating",
                "label": "Rating"
              },
              {
                "value": "html",
                "label": "HTML"
              },
              {
                "value": "microVisualization",
                "label": "Micro visualization"
              },
              {
                "value": "compose",
                "label": "Compose"
              }
            ]
          },
          "columns[].renderer.image.shape": {
            "mode": "enum",
            "options": [
              {
                "value": "square",
                "label": "Square"
              },
              {
                "value": "rounded",
                "label": "Rounded"
              },
              {
                "value": "circle",
                "label": "Circle"
              }
            ]
          },
          "columns[].renderer.image.fit": {
            "mode": "enum",
            "options": [
              {
                "value": "cover",
                "label": "Cover"
              },
              {
                "value": "contain",
                "label": "Contain"
              }
            ]
          },
          "columns[].renderer.link.target": {
            "mode": "enum",
            "options": [
              {
                "value": "_blank",
                "label": "New tab"
              },
              {
                "value": "_self",
                "label": "Same tab"
              },
              {
                "value": "_parent",
                "label": "Parent frame"
              },
              {
                "value": "_top",
                "label": "Top frame"
              }
            ]
          },
          "columns[].renderer.button.variant": {
            "mode": "enum",
            "options": [
              {
                "value": "filled",
                "label": "Filled"
              },
              {
                "value": "outlined",
                "label": "Outlined"
              },
              {
                "value": "text",
                "label": "Text"
              }
            ]
          },
          "columns[].renderer.button.color": {
            "mode": "enum",
            "options": [
              {
                "value": "primary",
                "label": "Primary"
              },
              {
                "value": "accent",
                "label": "Accent"
              },
              {
                "value": "warn",
                "label": "Warn"
              }
            ]
          },
          "columns[].renderer.button.size": {
            "mode": "enum",
            "options": [
              {
                "value": "sm",
                "label": "Small"
              },
              {
                "value": "md",
                "label": "Medium"
              },
              {
                "value": "lg",
                "label": "Large"
              }
            ]
          },
          "columns[].renderer.badge.variant": {
            "mode": "enum",
            "options": [
              {
                "value": "filled",
                "label": "Filled"
              },
              {
                "value": "outlined",
                "label": "Outlined"
              },
              {
                "value": "soft",
                "label": "Soft"
              },
              {
                "value": "plain",
                "label": "Plain"
              }
            ]
          },
          "columns[].renderer.chip.variant": {
            "mode": "enum",
            "options": [
              {
                "value": "filled",
                "label": "Filled"
              },
              {
                "value": "outlined",
                "label": "Outlined"
              },
              {
                "value": "soft",
                "label": "Soft"
              },
              {
                "value": "plain",
                "label": "Plain"
              }
            ]
          },
          "columns[].renderer.rating.size": {
            "mode": "enum",
            "options": [
              {
                "value": "small",
                "label": "Small"
              },
              {
                "value": "medium",
                "label": "Medium"
              },
              {
                "value": "large",
                "label": "Large"
              }
            ]
          },
          "columns[].renderer.compose.items[].type": {
            "mode": "enum",
            "options": [
              {
                "value": "value",
                "label": "Value"
              },
              {
                "value": "icon",
                "label": "Icon"
              },
              {
                "value": "image",
                "label": "Image"
              },
              {
                "value": "badge",
                "label": "Badge"
              },
              {
                "value": "link",
                "label": "Link"
              },
              {
                "value": "button",
                "label": "Button"
              },
              {
                "value": "chip",
                "label": "Chip"
              },
              {
                "value": "progress",
                "label": "Progress"
              },
              {
                "value": "avatar",
                "label": "Avatar"
              },
              {
                "value": "toggle",
                "label": "Toggle"
              },
              {
                "value": "menu",
                "label": "Menu"
              },
              {
                "value": "rating",
                "label": "Rating"
              },
              {
                "value": "html",
                "label": "HTML"
              },
              {
                "value": "microVisualization",
                "label": "Micro visualization"
              }
            ]
          },
          "columns[].renderer.microVisualization.visualization.valueExpr": {},
          "columns[].renderer.microVisualization.visualization.valueSuffixExpr": {},
          "columns[].renderer.microVisualization.visualization.totalExpr": {},
          "columns[].renderer.microVisualization.visualization.targetExpr": {},
          "columns[].renderer.microVisualization.visualization.baselineExpr": {},
          "columns[].renderer.microVisualization.visualization.segmentsExpr": {},
          "columns[].renderer.microVisualization.visualization.pointsExpr": {},
          "columns[].renderer.microVisualization.visualization.thresholdsExpr": {},
          "columns[].renderer.microVisualization.visualization.itemsExpr": {},
          "columns[].renderer.microVisualization.visualization.toneExpr": {},
          "columns[].renderer.microVisualization.visualization.ariaLabelExpr": {},
          "columns[].renderer.microVisualization.visualization.fallbackTextExpr": {},
          "columns[].conditionalRenderers[].renderer.type": {
            "mode": "enum",
            "options": [
              {
                "value": "icon",
                "label": "Icon"
              },
              {
                "value": "image",
                "label": "Image"
              },
              {
                "value": "badge",
                "label": "Badge"
              },
              {
                "value": "link",
                "label": "Link"
              },
              {
                "value": "button",
                "label": "Button"
              },
              {
                "value": "chip",
                "label": "Chip"
              },
              {
                "value": "progress",
                "label": "Progress"
              },
              {
                "value": "avatar",
                "label": "Avatar"
              },
              {
                "value": "toggle",
                "label": "Toggle"
              },
              {
                "value": "menu",
                "label": "Menu"
              },
              {
                "value": "rating",
                "label": "Rating"
              },
              {
                "value": "html",
                "label": "HTML"
              },
              {
                "value": "microVisualization",
                "label": "Micro visualization"
              },
              {
                "value": "compose",
                "label": "Compose"
              }
            ]
          },
          "columns[].conditionalRenderers[].renderer.image.shape": {
            "mode": "enum",
            "options": [
              {
                "value": "square",
                "label": "Square"
              },
              {
                "value": "rounded",
                "label": "Rounded"
              },
              {
                "value": "circle",
                "label": "Circle"
              }
            ]
          },
          "columns[].conditionalRenderers[].renderer.image.fit": {
            "mode": "enum",
            "options": [
              {
                "value": "cover",
                "label": "Cover"
              },
              {
                "value": "contain",
                "label": "Contain"
              }
            ]
          },
          "columns[].conditionalRenderers[].renderer.link.target": {
            "mode": "enum",
            "options": [
              {
                "value": "_blank",
                "label": "New tab"
              },
              {
                "value": "_self",
                "label": "Same tab"
              },
              {
                "value": "_parent",
                "label": "Parent frame"
              },
              {
                "value": "_top",
                "label": "Top frame"
              }
            ]
          },
          "columns[].conditionalRenderers[].renderer.button.variant": {
            "mode": "enum",
            "options": [
              {
                "value": "filled",
                "label": "Filled"
              },
              {
                "value": "outlined",
                "label": "Outlined"
              },
              {
                "value": "text",
                "label": "Text"
              }
            ]
          },
          "columns[].conditionalRenderers[].renderer.button.color": {
            "mode": "enum",
            "options": [
              {
                "value": "primary",
                "label": "Primary"
              },
              {
                "value": "accent",
                "label": "Accent"
              },
              {
                "value": "warn",
                "label": "Warn"
              }
            ]
          },
          "columns[].conditionalRenderers[].renderer.button.size": {
            "mode": "enum",
            "options": [
              {
                "value": "sm",
                "label": "Small"
              },
              {
                "value": "md",
                "label": "Medium"
              },
              {
                "value": "lg",
                "label": "Large"
              }
            ]
          },
          "columns[].conditionalRenderers[].renderer.badge.variant": {
            "mode": "enum",
            "options": [
              {
                "value": "filled",
                "label": "Filled"
              },
              {
                "value": "outlined",
                "label": "Outlined"
              },
              {
                "value": "soft",
                "label": "Soft"
              }
            ]
          },
          "columns[].conditionalRenderers[].renderer.chip.variant": {
            "mode": "enum",
            "options": [
              {
                "value": "filled",
                "label": "Filled"
              },
              {
                "value": "outlined",
                "label": "Outlined"
              },
              {
                "value": "soft",
                "label": "Soft"
              }
            ]
          },
          "columns[].conditionalRenderers[].renderer.rating.size": {
            "mode": "enum",
            "options": [
              {
                "value": "small",
                "label": "Small"
              },
              {
                "value": "medium",
                "label": "Medium"
              },
              {
                "value": "large",
                "label": "Large"
              }
            ]
          },
          "columns[].conditionalRenderers[].renderer.compose.items[].type": {
            "mode": "enum",
            "options": [
              {
                "value": "value",
                "label": "Value"
              },
              {
                "value": "icon",
                "label": "Icon"
              },
              {
                "value": "image",
                "label": "Image"
              },
              {
                "value": "badge",
                "label": "Badge"
              },
              {
                "value": "link",
                "label": "Link"
              },
              {
                "value": "button",
                "label": "Button"
              },
              {
                "value": "chip",
                "label": "Chip"
              },
              {
                "value": "progress",
                "label": "Progress"
              },
              {
                "value": "avatar",
                "label": "Avatar"
              },
              {
                "value": "toggle",
                "label": "Toggle"
              },
              {
                "value": "menu",
                "label": "Menu"
              },
              {
                "value": "rating",
                "label": "Rating"
              },
              {
                "value": "html",
                "label": "HTML"
              },
              {
                "value": "microVisualization",
                "label": "Micro visualization"
              }
            ]
          },
          "actions.row.actions[].color": {
            "mode": "enum",
            "options": [
              {
                "value": "primary",
                "label": "Primary"
              },
              {
                "value": "accent",
                "label": "Accent"
              },
              {
                "value": "warn",
                "label": "Warn"
              }
            ]
          },
          "actions.row.actions[].icon": {
            "mode": "suggested",
            "options": [
              {
                "value": "edit",
                "label": "Edit"
              },
              {
                "value": "delete",
                "label": "Delete"
              },
              {
                "value": "visibility",
                "label": "View"
              },
              {
                "value": "more_vert",
                "label": "More"
              },
              {
                "value": "check",
                "label": "Approve"
              },
              {
                "value": "close",
                "label": "Reject"
              },
              {
                "value": "download",
                "label": "Download"
              }
            ]
          },
          "actions.row.actions[].globalAction.[actionId]": {
            "mode": "suggested",
            "options": [
              {
                "value": "toast.success",
                "label": "Toast success"
              },
              {
                "value": "toast.error",
                "label": "Toast error"
              },
              {
                "value": "dialog.alert",
                "label": "Dialog alert"
              },
              {
                "value": "dialog.open",
                "label": "Dialog open"
              },
              {
                "value": "navigation.openExternal",
                "label": "Open external URL"
              },
              {
                "value": "navigation.openRoute",
                "label": "Open internal route"
              },
              {
                "value": "api.post",
                "label": "API POST"
              },
              {
                "value": "api.patch",
                "label": "API PATCH"
              }
            ]
          },
          "rowConditionalStyles[].condition": {
            "mode": "suggested",
            "options": [
              {
                "value": "status == \"active\"",
                "label": "Status Active"
              },
              {
                "value": "amount < 0",
                "label": "Negative Amount"
              },
              {
                "value": "priority == \"high\"",
                "label": "High Priority"
              }
            ]
          }
        },
        "actionCatalog": [
          {
            "id": "ADD_COLUMN",
            "intentExamples": [
              "add column",
              "nova coluna",
              "criar coluna",
              "insert column"
            ],
            "scope": "GLOBAL",
            "valueType": "OBJECT",
            "operation": "create",
            "requiresExistingTarget": false,
            "params": [
              {
                "name": "field",
                "type": "STRING",
                "description": "Nome técnico da nova coluna"
              },
              {
                "name": "header",
                "type": "STRING",
                "description": "Título da coluna"
              }
            ],
            "patchTemplate": {
              "columns": [
                {
                  "field": "{{params.field}}",
                  "header": "{{params.header}}",
                  "visible": true
                }
              ]
            }
          },
          {
            "id": "ADD_COLUMN_COMPUTED",
            "intentExamples": [
              "calculated column",
              "coluna calculada",
              "compute",
              "formula",
              "expression"
            ],
            "scope": "GLOBAL",
            "valueType": "OBJECT",
            "operation": "create",
            "requiresExistingTarget": false,
            "params": [
              {
                "name": "field",
                "type": "STRING",
                "description": "Nome técnico da nova coluna (ex: total)"
              },
              {
                "name": "header",
                "type": "STRING",
                "description": "Título da coluna"
              },
              {
                "name": "expression",
                "type": "STRING",
                "description": "AST Json Logic canônico serializado em JSON para derived values (ex: { \"*\": [{ \"var\": \"quantity\" }, { \"var\": \"price\" }] })"
              },
              {
                "name": "type",
                "type": "ENUM",
                "options": [
                  "number",
                  "currency",
                  "percentage",
                  "string",
                  "boolean"
                ],
                "description": "Tipo de dado resultante"
              }
            ],
            "relatedConcepts": [
              "computed-logic"
            ],
            "patchTemplate": {
              "columns": [
                {
                  "field": "{{params.field}}",
                  "header": "{{params.header}}",
                  "visible": true,
                  "computed": {
                    "expression": "{{params.expression}}",
                    "outputType": "{{params.type}}"
                  }
                }
              ]
            }
          },
          {
            "id": "HIDE_COLUMN",
            "intentExamples": [
              "hide column",
              "ocultar coluna",
              "esconder coluna",
              "invisible"
            ],
            "scope": "COLUMN",
            "valueType": "BOOLEAN",
            "operation": "update",
            "requiresExistingTarget": true,
            "defaultValue": false,
            "patchTemplate": {
              "columns": [
                {
                  "field": "{{target}}",
                  "visible": false
                }
              ]
            }
          },
          {
            "id": "SHOW_COLUMN",
            "intentExamples": [
              "show column",
              "mostrar coluna",
              "exibir coluna",
              "visible"
            ],
            "scope": "COLUMN",
            "valueType": "BOOLEAN",
            "operation": "update",
            "requiresExistingTarget": true,
            "defaultValue": true,
            "patchTemplate": {
              "columns": [
                {
                  "field": "{{target}}",
                  "visible": true
                }
              ]
            }
          },
          {
            "id": "RENAME_COLUMN",
            "intentExamples": [
              "rename column",
              "renomear coluna",
              "titulo",
              "cabecalho"
            ],
            "scope": "COLUMN",
            "valueType": "STRING",
            "operation": "update",
            "requiresExistingTarget": true,
            "patchTemplate": {
              "columns": [
                {
                  "field": "{{target}}",
                  "header": "{{value}}"
                }
              ]
            }
          },
          {
            "id": "column.format.set",
            "intentExamples": [
              "format",
              "formatar",
              "date format",
              "number format"
            ],
            "scope": "COLUMN",
            "valueType": "ENUM",
            "operation": "update",
            "requiresExistingTarget": true,
            "patchTemplate": {
              "columns": [
                {
                  "field": "{{target}}",
                  "format": "{{value}}"
                }
              ]
            }
          },
          {
            "id": "column.type.set",
            "intentExamples": [
              "type",
              "tipo",
              "data type"
            ],
            "scope": "COLUMN",
            "valueType": "ENUM",
            "operation": "update",
            "requiresExistingTarget": true,
            "patchTemplate": {
              "columns": [
                {
                  "field": "{{target}}",
                  "type": "{{value}}"
                }
              ]
            }
          },
          {
            "id": "DISABLE_SORT",
            "intentExamples": [
              "disable sort",
              "desativar ordenacao",
              "sem ordenacao"
            ],
            "scope": "COLUMN",
            "valueType": "BOOLEAN",
            "operation": "update",
            "requiresExistingTarget": true,
            "defaultValue": false,
            "patchTemplate": {
              "columns": [
                {
                  "field": "{{target}}",
                  "sortable": false
                }
              ]
            }
          },
          {
            "id": "ENABLE_SORT",
            "intentExamples": [
              "enable sort",
              "ativar ordenacao"
            ],
            "scope": "COLUMN",
            "valueType": "BOOLEAN",
            "operation": "update",
            "requiresExistingTarget": true,
            "defaultValue": true,
            "patchTemplate": {
              "columns": [
                {
                  "field": "{{target}}",
                  "sortable": true
                }
              ]
            }
          },
          {
            "id": "column.width.set",
            "intentExamples": [
              "width",
              "largura",
              "col width"
            ],
            "scope": "COLUMN",
            "valueType": "STRING",
            "operation": "update",
            "requiresExistingTarget": true,
            "patchTemplate": {
              "columns": [
                {
                  "field": "{{target}}",
                  "width": "{{value}}"
                }
              ]
            }
          },
          {
            "id": "column.order.set",
            "intentExamples": [
              "ordem visual",
              "mover coluna",
              "colocar depois de",
              "colocar antes de"
            ],
            "scope": "COLUMN",
            "valueType": "NUMBER",
            "operation": "update",
            "requiresExistingTarget": true,
            "patchTemplate": {
              "columns": [
                {
                  "field": "{{target}}",
                  "order": "{{value}}"
                }
              ]
            }
          },
          {
            "id": "column.align.set",
            "intentExamples": [
              "align",
              "alinhamento",
              "left",
              "center",
              "right"
            ],
            "scope": "COLUMN",
            "valueType": "ENUM",
            "operation": "update",
            "requiresExistingTarget": true,
            "patchTemplate": {
              "columns": [
                {
                  "field": "{{target}}",
                  "align": "{{value}}"
                }
              ]
            }
          },
          {
            "id": "column.sticky.set",
            "intentExamples": [
              "sticky",
              "fixar coluna",
              "pin column"
            ],
            "scope": "COLUMN",
            "valueType": "ENUM",
            "operation": "update",
            "requiresExistingTarget": true,
            "patchTemplate": {
              "columns": [
                {
                  "field": "{{target}}",
                  "sticky": "{{value}}"
                }
              ]
            }
          },
          {
            "id": "column.renderer.type.set",
            "intentExamples": [
              "renderer",
              "render",
              "cell type"
            ],
            "scope": "COLUMN",
            "valueType": "ENUM",
            "operation": "update",
            "requiresExistingTarget": true,
            "patchTemplate": {
              "columns": [
                {
                  "field": "{{target}}",
                  "renderer": {
                    "type": "{{value}}"
                  }
                }
              ]
            }
          },
          {
            "id": "column.renderer.image.shape.set",
            "intentExamples": [
              "image shape",
              "avatar shape",
              "imagem recorte"
            ],
            "scope": "COLUMN",
            "valueType": "ENUM",
            "operation": "update",
            "requiresExistingTarget": true,
            "patchTemplate": {
              "columns": [
                {
                  "field": "{{target}}",
                  "renderer": {
                    "type": "image",
                    "image": {
                      "shape": "{{value}}"
                    }
                  }
                }
              ]
            }
          },
          {
            "id": "column.renderer.link.target.set",
            "intentExamples": [
              "link target",
              "abrir em nova aba",
              "target blank"
            ],
            "scope": "COLUMN",
            "valueType": "ENUM",
            "operation": "update",
            "requiresExistingTarget": true,
            "patchTemplate": {
              "columns": [
                {
                  "field": "{{target}}",
                  "renderer": {
                    "type": "link",
                    "link": {
                      "target": "{{value}}"
                    }
                  }
                }
              ]
            }
          },
          {
            "id": "column.renderer.button.style.set",
            "intentExamples": [
              "button style",
              "botao estilo",
              "variant",
              "color"
            ],
            "scope": "COLUMN",
            "valueType": "OBJECT",
            "operation": "update",
            "requiresExistingTarget": true,
            "patchTemplate": {
              "columns": [
                {
                  "field": "{{target}}",
                  "renderer": {
                    "type": "button",
                    "button": {
                      "variant": "{{params.variant}}",
                      "color": "{{params.color}}"
                    }
                  }
                }
              ]
            }
          },
          {
            "id": "SET_RENDERER_BADGE",
            "intentExamples": [
              "render badge",
              "exibir como badge",
              "status badge",
              "etiqueta",
              "tag"
            ],
            "scope": "COLUMN",
            "valueType": "OBJECT",
            "operation": "update",
            "requiresExistingTarget": true,
            "params": [
              {
                "name": "variant",
                "type": "ENUM",
                "options": [
                  "filled",
                  "outlined",
                  "soft",
                  "plain"
                ],
                "description": "Estilo visual do badge"
              },
              {
                "name": "color",
                "type": "ENUM",
                "options": [
                  "primary",
                  "accent",
                  "warn",
                  "success",
                  "info"
                ],
                "description": "Cor semântica do badge"
              }
            ],
            "patchTemplate": {
              "columns": [
                {
                  "field": "{{target}}",
                  "renderer": {
                    "type": "badge",
                    "badge": {
                      "text": "{{target}}",
                      "textField": "{{target}}",
                      "color": "{{params.color}}",
                      "variant": "{{params.variant}}"
                    }
                  }
                }
              ]
            }
          },
          {
            "id": "SET_RENDERER_CHIP",
            "intentExamples": [
              "render chip",
              "exibir como chip",
              "chip",
              "pilula"
            ],
            "scope": "COLUMN",
            "valueType": "OBJECT",
            "operation": "update",
            "requiresExistingTarget": true,
            "patchTemplate": {
              "columns": [
                {
                  "field": "{{target}}",
                  "renderer": {
                    "type": "chip",
                    "chip": {
                      "textField": "{{target}}",
                      "color": "{{params.color}}",
                      "variant": "{{params.variant}}"
                    }
                  }
                }
              ]
            }
          },
          {
            "id": "SET_RENDERER_ICON",
            "intentExamples": [
              "render icon",
              "exibir como icone",
              "icone",
              "icon"
            ],
            "scope": "COLUMN",
            "valueType": "OBJECT",
            "operation": "update",
            "requiresExistingTarget": true,
            "patchTemplate": {
              "columns": [
                {
                  "field": "{{target}}",
                  "renderer": {
                    "type": "icon",
                    "icon": {
                      "name": "{{value}}",
                      "color": "{{params.color}}",
                      "size": 18
                    }
                  }
                }
              ]
            }
          },
          {
            "id": "SET_RENDERER_COMPOSE_TITLE_SUBTITLE",
            "intentExamples": [
              "compose title subtitle",
              "titulo e subtitulo",
              "two lines",
              "duas linhas"
            ],
            "scope": "COLUMN",
            "valueType": "OBJECT",
            "operation": "update",
            "requiresExistingTarget": true,
            "patchTemplate": {
              "columns": [
                {
                  "field": "{{target}}",
                  "renderer": {
                    "type": "compose",
                    "compose": {
                      "layout": {
                        "direction": "column",
                        "gap": 4
                      },
                      "items": [
                        {
                          "type": "value",
                          "emphasis": "strong"
                        },
                        {
                          "type": "value",
                          "textField": "{{params.subtitleField}}",
                          "emphasis": "subtle"
                        }
                      ]
                    }
                  }
                }
              ]
            }
          },
          {
            "id": "SET_RENDERER_COMPOSE_AVATAR_TEXT",
            "intentExamples": [
              "compose avatar text",
              "avatar e texto",
              "user card"
            ],
            "scope": "COLUMN",
            "valueType": "OBJECT",
            "operation": "update",
            "requiresExistingTarget": true,
            "patchTemplate": {
              "columns": [
                {
                  "field": "{{target}}",
                  "renderer": {
                    "type": "compose",
                    "compose": {
                      "layout": {
                        "direction": "row",
                        "gap": 12,
                        "align": "center",
                        "ellipsis": true
                      },
                      "items": [
                        {
                          "type": "avatar",
                          "avatar": {
                            "srcField": "{{params.imageField}}",
                            "initialsField": "{{target}}",
                            "shape": "circle"
                          }
                        },
                        {
                          "type": "value",
                          "emphasis": "strong"
                        }
                      ]
                    }
                  }
                }
              ]
            }
          },
          {
            "id": "ENABLE_PAGINATION",
            "intentExamples": [
              "enable pagination",
              "paginar",
              "paginação",
              "pagination"
            ],
            "scope": "GLOBAL",
            "valueType": "BOOLEAN",
            "operation": "update",
            "requiresExistingTarget": false,
            "defaultValue": true,
            "patchTemplate": {
              "behavior": {
                "pagination": {
                  "enabled": true,
                  "pageSize": "{{params.pageSize}}"
                }
              }
            }
          },
          {
            "id": "DISABLE_PAGINATION",
            "intentExamples": [
              "disable pagination",
              "remover paginacao",
              "lista infinita",
              "no pagination"
            ],
            "scope": "GLOBAL",
            "valueType": "BOOLEAN",
            "operation": "update",
            "requiresExistingTarget": false,
            "defaultValue": false,
            "patchTemplate": {
              "behavior": {
                "pagination": {
                  "enabled": false
                }
              }
            }
          },
          {
            "id": "ENABLE_FILTERING",
            "intentExamples": [
              "enable filtering",
              "ligar filtros",
              "filtrar",
              "searchable"
            ],
            "scope": "GLOBAL",
            "valueType": "BOOLEAN",
            "operation": "update",
            "requiresExistingTarget": false,
            "defaultValue": true,
            "patchTemplate": {
              "behavior": {
                "filtering": {
                  "enabled": true
                }
              }
            }
          },
          {
            "id": "DISABLE_FILTERING",
            "intentExamples": [
              "disable filtering",
              "desligar filtros",
              "no filter"
            ],
            "scope": "GLOBAL",
            "valueType": "BOOLEAN",
            "operation": "update",
            "requiresExistingTarget": false,
            "defaultValue": false,
            "patchTemplate": {
              "behavior": {
                "filtering": {
                  "enabled": false
                }
              }
            }
          },
          {
            "id": "ENABLE_ADVANCED_FILTERS",
            "intentExamples": [
              "advanced filters",
              "filtros avancados",
              "filtro complexo"
            ],
            "scope": "GLOBAL",
            "valueType": "BOOLEAN",
            "operation": "update",
            "requiresExistingTarget": false,
            "defaultValue": true,
            "patchTemplate": {
              "behavior": {
                "filtering": {
                  "advancedFilters": {
                    "enabled": true
                  }
                }
              }
            }
          },
          {
            "id": "SET_FILTER_MODE",
            "intentExamples": [
              "filter mode",
              "modo de filtro",
              "modo unico do filtro",
              "painel de filtro"
            ],
            "scope": "GLOBAL",
            "valueType": "ENUM",
            "operation": "update",
            "requiresExistingTarget": false,
            "patchTemplate": {
              "behavior": {
                "filtering": {
                  "advancedFilters": {
                    "settings": {
                      "mode": "{{value}}"
                    }
                  }
                }
              }
            }
          },
          {
            "id": "SET_ALWAYS_VISIBLE_FILTERS",
            "intentExamples": [
              "always visible filter",
              "filtro fixo",
              "fixar filtro",
              "pin filter"
            ],
            "scope": "GLOBAL",
            "valueType": "STRING",
            "operation": "update",
            "requiresExistingTarget": true,
            "patchTemplate": {
              "behavior": {
                "filtering": {
                  "advancedFilters": {
                    "settings": {
                      "alwaysVisibleFields": [
                        "{{target}}"
                      ]
                    }
                  }
                }
              }
            }
          },
          {
            "id": "ENABLE_FILTER_SAVING",
            "intentExamples": [
              "save filters",
              "salvar filtros",
              "filter tags"
            ],
            "scope": "GLOBAL",
            "valueType": "BOOLEAN",
            "operation": "update",
            "requiresExistingTarget": false,
            "defaultValue": true,
            "patchTemplate": {
              "behavior": {
                "filtering": {
                  "advancedFilters": {
                    "settings": {
                      "allowSaveTags": true
                    }
                  }
                }
              }
            }
          },
          {
            "id": "ENABLE_SORTING",
            "intentExamples": [
              "enable sorting",
              "ligar ordenacao",
              "ordenar"
            ],
            "scope": "GLOBAL",
            "valueType": "BOOLEAN",
            "operation": "update",
            "requiresExistingTarget": false,
            "defaultValue": true,
            "patchTemplate": {
              "behavior": {
                "sorting": {
                  "enabled": true
                }
              }
            }
          },
          {
            "id": "DISABLE_SORTING",
            "intentExamples": [
              "disable sorting",
              "desligar ordenacao",
              "no sort"
            ],
            "scope": "GLOBAL",
            "valueType": "BOOLEAN",
            "operation": "update",
            "requiresExistingTarget": false,
            "defaultValue": false,
            "patchTemplate": {
              "behavior": {
                "sorting": {
                  "enabled": false
                }
              }
            }
          },
          {
            "id": "ENABLE_SELECTION",
            "intentExamples": [
              "enable selection",
              "ativar selecao",
              "selecionavel",
              "selectable"
            ],
            "scope": "GLOBAL",
            "valueType": "BOOLEAN",
            "operation": "update",
            "requiresExistingTarget": false,
            "defaultValue": true,
            "patchTemplate": {
              "behavior": {
                "selection": {
                  "enabled": true
                }
              }
            }
          },
          {
            "id": "DISABLE_SELECTION",
            "intentExamples": [
              "disable selection",
              "remover selecao",
              "not selectable"
            ],
            "scope": "GLOBAL",
            "valueType": "BOOLEAN",
            "operation": "update",
            "requiresExistingTarget": false,
            "defaultValue": false,
            "patchTemplate": {
              "behavior": {
                "selection": {
                  "enabled": false
                }
              }
            }
          },
          {
            "id": "SET_SELECTION_SINGLE",
            "intentExamples": [
              "single selection",
              "selecao unica",
              "selecionar um"
            ],
            "scope": "GLOBAL",
            "valueType": "ENUM",
            "operation": "update",
            "requiresExistingTarget": false,
            "defaultValue": "single",
            "patchTemplate": {
              "behavior": {
                "selection": {
                  "type": "single"
                }
              }
            }
          },
          {
            "id": "SET_SELECTION_MULTIPLE",
            "intentExamples": [
              "multiple selection",
              "selecao multipla",
              "selecionar varios"
            ],
            "scope": "GLOBAL",
            "valueType": "ENUM",
            "operation": "update",
            "requiresExistingTarget": false,
            "defaultValue": "multiple",
            "patchTemplate": {
              "behavior": {
                "selection": {
                  "type": "multiple"
                }
              }
            }
          },
          {
            "id": "ENABLE_EXPORT",
            "intentExamples": [
              "enable export",
              "ativar exportacao",
              "botão exportar",
              "excel",
              "pdf"
            ],
            "scope": "GLOBAL",
            "valueType": "BOOLEAN",
            "operation": "update",
            "requiresExistingTarget": false,
            "defaultValue": true,
            "patchTemplate": {
              "export": {
                "enabled": true
              },
              "toolbar": {
                "visible": true
              }
            }
          },
          {
            "id": "DISABLE_EXPORT",
            "intentExamples": [
              "disable export",
              "remover exportacao",
              "esconder exportar"
            ],
            "scope": "GLOBAL",
            "valueType": "BOOLEAN",
            "operation": "update",
            "requiresExistingTarget": false,
            "defaultValue": false,
            "patchTemplate": {
              "export": {
                "enabled": false
              }
            }
          },
          {
            "id": "SET_DENSITY",
            "intentExamples": [
              "set density",
              "mudar densidade",
              "compacto",
              "confortavel",
              "espacoso"
            ],
            "scope": "GLOBAL",
            "valueType": "ENUM",
            "operation": "update",
            "requiresExistingTarget": false,
            "patchTemplate": {
              "appearance": {
                "density": "{{value}}"
              }
            }
          },
          {
            "id": "SHOW_BORDERS",
            "intentExamples": [
              "show borders",
              "mostrar bordas",
              "com bordas",
              "grid lines"
            ],
            "scope": "GLOBAL",
            "valueType": "BOOLEAN",
            "operation": "update",
            "requiresExistingTarget": false,
            "defaultValue": true,
            "patchTemplate": {
              "appearance": {
                "borders": {
                  "showRowBorders": true,
                  "showColumnBorders": true
                }
              }
            }
          },
          {
            "id": "HIDE_BORDERS",
            "intentExamples": [
              "hide borders",
              "ocultar bordas",
              "sem bordas",
              "clean look"
            ],
            "scope": "GLOBAL",
            "valueType": "BOOLEAN",
            "operation": "update",
            "requiresExistingTarget": false,
            "defaultValue": false,
            "patchTemplate": {
              "appearance": {
                "borders": {
                  "showRowBorders": false,
                  "showColumnBorders": false,
                  "showOuterBorder": false
                }
              }
            }
          },
          {
            "id": "ENABLE_STRIPED_ROWS",
            "intentExamples": [
              "striped rows",
              "zebrado",
              "linhas alternadas",
              "zebra"
            ],
            "scope": "GLOBAL",
            "valueType": "BOOLEAN",
            "operation": "update",
            "requiresExistingTarget": false,
            "defaultValue": true,
            "patchTemplate": {
              "appearance": {
                "colors": {
                  "alternateRowBackground": "#f7f9fc"
                }
              }
            }
          },
          {
            "id": "DISABLE_STRIPED_ROWS",
            "intentExamples": [
              "disable striped",
              "remover zebrado",
              "fundo solido"
            ],
            "scope": "GLOBAL",
            "valueType": "BOOLEAN",
            "operation": "update",
            "requiresExistingTarget": false,
            "defaultValue": false,
            "patchTemplate": {
              "appearance": {
                "colors": {}
              }
            }
          },
          {
            "id": "SHOW_TOOLBAR",
            "intentExamples": [
              "show toolbar",
              "mostrar toolbar",
              "barra de ferramentas",
              "titulo da tabela"
            ],
            "scope": "GLOBAL",
            "valueType": "BOOLEAN",
            "operation": "update",
            "requiresExistingTarget": false,
            "defaultValue": true,
            "patchTemplate": {
              "toolbar": {
                "visible": true
              }
            }
          },
          {
            "id": "HIDE_TOOLBAR",
            "intentExamples": [
              "hide toolbar",
              "esconder toolbar",
              "remover titulo"
            ],
            "scope": "GLOBAL",
            "valueType": "BOOLEAN",
            "operation": "update",
            "requiresExistingTarget": false,
            "defaultValue": false,
            "patchTemplate": {
              "toolbar": {
                "visible": false
              }
            }
          },
          {
            "id": "SET_TOOLBAR_POSITION",
            "intentExamples": [
              "toolbar position",
              "posicao da toolbar",
              "toolbar no topo",
              "toolbar embaixo",
              "toolbar em cima",
              "toolbar ambos"
            ],
            "scope": "GLOBAL",
            "valueType": "ENUM",
            "operation": "update",
            "requiresExistingTarget": false,
            "patchTemplate": {
              "toolbar": {
                "position": "{{value}}"
              }
            }
          },
          {
            "id": "SET_TOOLBAR_ACTIONS_POSITION",
            "intentExamples": [
              "acoes da toolbar",
              "barra de acoes",
              "acoes no topo",
              "acoes embaixo",
              "acoes em cima",
              "acoes em ambos"
            ],
            "scope": "GLOBAL",
            "valueType": "ENUM",
            "operation": "update",
            "requiresExistingTarget": false,
            "patchTemplate": {
              "toolbar": {
                "actionsPosition": "{{value}}"
              }
            }
          },
          {
            "id": "SET_TOOLBAR_ACTIONS_BG",
            "intentExamples": [
              "cor barra de acoes",
              "fundo da barra de acoes",
              "background acoes",
              "acoes com cor"
            ],
            "scope": "GLOBAL",
            "valueType": "STRING",
            "operation": "update",
            "requiresExistingTarget": false,
            "patchTemplate": {
              "toolbar": {
                "actionsBackgroundColor": "{{value}}"
              }
            }
          },
          {
            "id": "ENABLE_VIRTUALIZATION",
            "intentExamples": [
              "enable virtualization",
              "virtualizar",
              "scroll infinito",
              "performance",
              "large dataset"
            ],
            "scope": "GLOBAL",
            "valueType": "BOOLEAN",
            "operation": "update",
            "requiresExistingTarget": false,
            "defaultValue": true,
            "patchTemplate": {
              "behavior": {
                "virtualization": {
                  "enabled": true,
                  "itemHeight": 48
                }
              },
              "performance": {
                "virtualization": {
                  "enabled": true,
                  "itemHeight": 48
                }
              }
            }
          },
          {
            "id": "DISABLE_VIRTUALIZATION",
            "intentExamples": [
              "disable virtualization",
              "desativar virtualizacao"
            ],
            "scope": "GLOBAL",
            "valueType": "BOOLEAN",
            "operation": "update",
            "requiresExistingTarget": false,
            "defaultValue": false,
            "patchTemplate": {
              "behavior": {
                "virtualization": {
                  "enabled": false
                }
              },
              "performance": {
                "virtualization": {
                  "enabled": false
                }
              }
            }
          },
          {
            "id": "ENABLE_ROW_EXPANSION",
            "intentExamples": [
              "expand row",
              "expandir linha",
              "detalhe expansivel",
              "row details",
              "master detail"
            ],
            "scope": "GLOBAL",
            "valueType": "BOOLEAN",
            "operation": "update",
            "requiresExistingTarget": false,
            "defaultValue": true,
            "patchTemplate": {
              "behavior": {
                "expansion": {
                  "enabled": true,
                  "contractVersion": "1.0.0",
                  "interaction": {
                    "trigger": "icon",
                    "keyboard": {
                      "profile": "disclosure"
                    }
                  },
                  "limits": {
                    "allowMultiple": false,
                    "maxExpandedRows": 1,
                    "onOverflow": "collapseOldest"
                  },
                  "detail": {
                    "schemaContract": {
                      "kind": "praxis.detail.schema",
                      "version": "1.0.0"
                    },
                    "source": {
                      "mode": "inline",
                      "inlineSchema": {
                        "layout": "stack",
                        "items": []
                      }
                    },
                    "rendering": {
                      "strategy": "registry",
                      "registryId": "praxis.detail.default"
                    }
                  }
                }
              }
            }
          },
          {
            "id": "SET_EXPANSION_SOURCE_MODE",
            "intentExamples": [
              "expansion source",
              "detail source",
              "schema source",
              "resource detail",
              "resourcePath detail"
            ],
            "scope": "GLOBAL",
            "valueType": "ENUM",
            "operation": "update",
            "requiresExistingTarget": false,
            "patchTemplate": {
              "behavior": {
                "expansion": {
                  "detail": {
                    "source": {
                      "mode": "{{value}}"
                    }
                  }
                }
              }
            }
          },
          {
            "id": "SET_EXPANSION_RESOURCE",
            "intentExamples": [
              "detail resource id",
              "resource detail id",
              "ui composition detail",
              "schema detail resource"
            ],
            "scope": "GLOBAL",
            "valueType": "OBJECT",
            "operation": "update",
            "requiresExistingTarget": false,
            "patchTemplate": {
              "behavior": {
                "expansion": {
                  "detail": {
                    "source": {
                      "mode": "resource",
                      "resource": {
                        "kind": "{{params.kind}}",
                        "id": "{{params.id}}",
                        "version": "{{params.version}}"
                      }
                    }
                  }
                }
              }
            }
          },
          {
            "id": "SET_COLUMN_BOLD",
            "intentExamples": [
              "column bold",
              "coluna negrito",
              "destacar coluna",
              "bold text"
            ],
            "scope": "COLUMN",
            "valueType": "STRING",
            "operation": "update",
            "requiresExistingTarget": true,
            "patchTemplate": {
              "columns": [
                {
                  "field": "{{target}}",
                  "style": "font-weight: 600;"
                }
              ]
            }
          },
          {
            "id": "SET_COLUMN_COLOR",
            "intentExamples": [
              "column color",
              "cor da coluna",
              "pintar coluna",
              "text color"
            ],
            "scope": "COLUMN",
            "valueType": "STRING",
            "operation": "update",
            "requiresExistingTarget": true,
            "patchTemplate": {
              "columns": [
                {
                  "field": "{{target}}",
                  "style": "color: {{value}};"
                }
              ]
            }
          },
          {
            "id": "SET_HEADER_UPPERCASE",
            "intentExamples": [
              "header uppercase",
              "cabecalho maiuscula",
              "titulo caixa alta"
            ],
            "scope": "COLUMN",
            "valueType": "STRING",
            "operation": "update",
            "requiresExistingTarget": true,
            "patchTemplate": {
              "columns": [
                {
                  "field": "{{target}}",
                  "headerStyle": "text-transform: uppercase;"
                }
              ]
            }
          },
          {
            "id": "SET_HEADER_BOLD",
            "intentExamples": [
              "header bold",
              "cabecalho negrito",
              "titulo forte"
            ],
            "scope": "COLUMN",
            "valueType": "STRING",
            "operation": "update",
            "requiresExistingTarget": true,
            "patchTemplate": {
              "columns": [
                {
                  "field": "{{target}}",
                  "headerStyle": "font-weight: 600;"
                }
              ]
            }
          },
          {
            "id": "SET_HEADER_BG_COLOR",
            "intentExamples": [
              "header background",
              "fundo cabecalho",
              "cor titulo"
            ],
            "scope": "COLUMN",
            "valueType": "STRING",
            "operation": "update",
            "requiresExistingTarget": true,
            "patchTemplate": {
              "columns": [
                {
                  "field": "{{target}}",
                  "headerStyle": "background-color: {{value}};"
                }
              ]
            }
          },
          {
            "id": "SET_HEADER_TEXT_COLOR",
            "intentExamples": [
              "header text color",
              "cor texto cabecalho"
            ],
            "scope": "COLUMN",
            "valueType": "STRING",
            "operation": "update",
            "requiresExistingTarget": true,
            "patchTemplate": {
              "columns": [
                {
                  "field": "{{target}}",
                  "headerStyle": "color: {{value}};"
                }
              ]
            }
          },
          {
            "id": "SET_TOOLBAR_ALIGNMENT",
            "intentExamples": [
              "toolbar align",
              "alinhar toolbar",
              "alinhamento barra",
              "space-between",
              "start",
              "end"
            ],
            "scope": "GLOBAL",
            "valueType": "ENUM",
            "operation": "update",
            "requiresExistingTarget": false,
            "patchTemplate": {
              "toolbar": {
                "layout": {
                  "alignment": "{{value}}"
                }
              }
            }
          },
          {
            "id": "ENABLE_GROUPING",
            "intentExamples": [
              "group by",
              "agrupar por",
              "agrupamento"
            ],
            "scope": "GLOBAL",
            "valueType": "STRING",
            "operation": "update",
            "requiresExistingTarget": true,
            "patchTemplate": {
              "behavior": {
                "grouping": {
                  "enabled": true,
                  "fields": [
                    "{{target}}"
                  ],
                  "expanded": true
                }
              }
            }
          },
          {
            "id": "CLEAR_GROUPING",
            "intentExamples": [
              "ungroup",
              "desagrupar",
              "remover agrupamento"
            ],
            "scope": "GLOBAL",
            "valueType": "BOOLEAN",
            "operation": "update",
            "requiresExistingTarget": false,
            "defaultValue": true,
            "patchTemplate": {
              "behavior": {
                "grouping": {
                  "enabled": false,
                  "fields": []
                }
              }
            }
          },
          {
            "id": "ENABLE_ROW_ACTIONS",
            "intentExamples": [
              "enable row actions",
              "acoes de linha",
              "botoes na linha"
            ],
            "scope": "GLOBAL",
            "valueType": "BOOLEAN",
            "operation": "update",
            "requiresExistingTarget": false,
            "defaultValue": true,
            "patchTemplate": {
              "actions": {
                "row": {
                  "enabled": true,
                  "sticky": "end"
                }
              }
            }
          },
          {
            "id": "ADD_ROW_ACTION_ICON",
            "intentExamples": [
              "add row action",
              "botao de acao",
              "adicionar botao"
            ],
            "scope": "GLOBAL",
            "valueType": "OBJECT",
            "operation": "create",
            "requiresExistingTarget": false,
            "patchTemplate": {
              "actions": {
                "row": {
                  "actions": [
                    {
                      "id": "{{id}}",
                      "icon": "{{icon}}",
                      "label": "{{label}}",
                      "color": "{{params.color}}",
                      "overflow": false
                    }
                  ]
                }
              }
            }
          },
          {
            "id": "ADD_ROW_ACTION_MENU",
            "intentExamples": [
              "add row menu",
              "acao no menu",
              "item de menu"
            ],
            "scope": "GLOBAL",
            "valueType": "OBJECT",
            "operation": "create",
            "requiresExistingTarget": false,
            "patchTemplate": {
              "actions": {
                "row": {
                  "actions": [
                    {
                      "id": "{{id}}",
                      "icon": "{{icon}}",
                      "label": "{{label}}",
                      "overflow": true
                    }
                  ]
                }
              }
            }
          },
          {
            "id": "ADD_ROW_STYLE_BG",
            "intentExamples": [
              "row background condition",
              "pintar linha se",
              "cor de fundo condicional"
            ],
            "scope": "GLOBAL",
            "valueType": "OBJECT",
            "operation": "create",
            "requiresExistingTarget": false,
            "patchTemplate": {
              "rowConditionalStyles": [
                {
                  "condition": "{{condition}}",
                  "style": {
                    "background-color": "{{value}}"
                  }
                }
              ]
            }
          },
          {
            "id": "ADD_ROW_STYLE_COLOR",
            "intentExamples": [
              "row text color condition",
              "cor texto linha se"
            ],
            "scope": "GLOBAL",
            "valueType": "OBJECT",
            "operation": "create",
            "requiresExistingTarget": false,
            "patchTemplate": {
              "rowConditionalStyles": [
                {
                  "condition": "{{condition}}",
                  "style": {
                    "color": "{{value}}"
                  }
                }
              ]
            }
          },
          {
            "id": "ADD_CONDITIONAL_RENDERER",
            "intentExamples": [
              "conditional renderer",
              "renderer condicional",
              "badge condicional",
              "chip condicional",
              "badge se",
              "chip se",
              "conditional badge",
              "conditional chip"
            ],
            "scope": "COLUMN",
            "valueType": "OBJECT",
            "operation": "create",
            "requiresExistingTarget": true,
            "params": [
              {
                "name": "condition",
                "type": "STRING",
                "description": "Objeto JSON Logic canonico serializado, nunca DSL textual (ex: { \">\": [{ \"var\": \"recompensa\" }, 500000] })"
              },
              {
                "name": "renderer",
                "type": "STRING",
                "description": "Renderer completo com type e config (ex: { type: \"badge\", badge: { textField: \"recompensa\", color: \"#ff69b4\", variant: \"filled\" } })"
              }
            ],
            "patchTemplate": {
              "columns": [
                {
                  "field": "{{target}}",
                  "conditionalRenderers": [
                    {
                      "condition": "{{params.condition}}",
                      "renderer": "{{params.renderer}}"
                    }
                  ]
                }
              ]
            }
          },
          {
            "id": "ADD_CONDITIONAL_ICON",
            "intentExamples": [
              "conditional icon",
              "icone condicional",
              "icone se"
            ],
            "scope": "COLUMN",
            "valueType": "OBJECT",
            "operation": "create",
            "requiresExistingTarget": true,
            "patchTemplate": {
              "columns": [
                {
                  "field": "{{target}}",
                  "conditionalRenderers": [
                    {
                      "condition": "{{condition}}",
                      "renderer": {
                        "type": "icon",
                        "icon": {
                          "name": "{{value}}",
                          "color": "{{params.color}}"
                        }
                      }
                    }
                  ]
                }
              ]
            }
          }
        ],
        "fieldResolvers": {
          "columns[].field": [
            "field",
            "header"
          ],
          "actions.row.actions[].id": [
            "id",
            "label"
          ],
          "rowConditionalStyles[].condition": [
            "condition"
          ]
        },
        "hints": [
          "Use semantic patches with columns[] and field, not JSON Patch or column indexes.",
          "Set columns[].type before choosing columns[].format presets to avoid mismatched formatting.",
          "Renderer config overrides format/valueMapping; avoid mixing unless required.",
          "Use ADD_CONDITIONAL_RENDERER with renderer.type + renderer.<type> config for conditional badges/chips.",
          "When the table already shows a status/boolean column as valueMapping or chip/badge and the user refines colors, variants, icons, animation or tooltip, preserve the target column and create conditionalRenderers per semantic value instead of repeating the same valueMapping.",
          "For boolean chips/badges, model true/false branches explicitly: condition {\"==\":[{\"var\":\"<field>\"},true]} for the positive label and {\"==\":[{\"var\":\"<field>\"},false]} for the negative label; use renderer.type \"chip\" or \"badge\" with text, color and variant.",
          "DOC: Widget purpose: data table with sorting, filtering, pagination, and actions.",
          "DOC: Host inputs: tableId (required), resourcePath (optional), config (optional).",
          "DOC: config defaults to createDefaultTableConfig(); columns may start empty.",
          "DOC: behavior.expansion.detail é schema-driven; altere source.mode (inline/resource/resourcePath), não use detail.type.",
          "DOC: Para detail.source.mode=resource, sempre informar resource.kind + resource.id + resource.version.",
          "DOC: Para detail.source.mode=resourcePath, sempre informar resourcePath.paramsMap + resourceAllowList[]; URL absoluta/scheme (http:, https:, data:, javascript:) é bloqueada e o runtime aplica fail-closed.",
          "DOC: collapseOn ativo no runtime P0A: sortChange, pageChange, filterChange e dataRefresh.",
          "DOC: When resourcePath is available, the table can load schema and data; ask the user to pick an API resource when missing.",
          "DOC: resourcePath must be the base resource path only (no /filter, /all, /{id}). CRUD endpoints are handled internally.",
          "DOC: columns[].computed.expression agora usa AST Json Logic canônico para derived values; não use fórmulas string.",
          "DOC: Para microVisualization em table-cell, recomende delta, bullet, radial, harveyBall ou stackedBar para leitura rápida. line, area e column são condicionais à largura horizontal; comparison aumenta a altura da linha; processFlow exige etapas reconhecíveis. Quando esses trade-offs não servirem à decisão, prefira detalhe expandido ou superfície relacionada.",
          "DOC: Expressões de microVisualization aceitam caminho da linha (row.sla) ou fórmula controlada com prefixo = (= row.sla), com a mesma semântica do editor visual.",
          "DOC: Operadores/funções canônicos úteis: +, -, *, /, %, min, max, cat, substr, round, ceil, floor, abs, coalesce, now, date, yearsSince, monthsSince, daysSince, len, toNumber e stringify.",
          "DOC: Examples: {\"yearsSince\":[{\"var\":\"dataNascimento\"}]} → idade; {\"yearsSince\":[{\"var\":\"dataAdmissao\"}]} → tempoEmpresa (anos); {\"monthsSince\":[{\"var\":\"dataAdmissao\"}]} → tempoEmpresa (meses); {\"daysSince\":[{\"var\":\"dataCadastro\"}]} → dias desde cadastro; {\"+\":[{\"coalesce\":[{\"var\":\"bonus\"},0]},{\"var\":\"salario\"}]} → total com fallback.",
          "### DATA ARCHETYPE TO VISUAL STRATEGY",
          "Apply these patterns based on the SEMANTIC NATURE of the column data:",
          "- STATUS/STATE (e.g., phase, stage, is_active, priority):",
          "  -> Use \"badge\" or \"chip\" with conditional colors (success/warn/error/info).",
          "  -> Use \"valueMapping\" to convert codes (1, \"A\") to labels (\"Active\", \"Approved\").",
          "- METRICS/KPI (e.g., progress, score, rating, completion):",
          "  -> Use \"progress\" (bars), \"rating\" (stars), or \"percentage\" type.",
          "  -> Align \"right\".",
          "- FINANCIAL (e.g., price, cost, balance, total):",
          "  -> Use type \"currency\" and format \"BRL|symbol|2\" (or per locale).",
          "  -> Align \"right\". Style: \"font-variant-numeric: tabular-nums\".",
          "- ENTITIES (e.g., user, product, thumb):",
          "  -> Use \"avatar\" (for people/users) or \"image\" (for products/files).",
          "  -> Combine with \"link\" or \"compose\" for title+subtitle layouts.",
          "- INTERACTIVE/NAV (e.g., details, website, download):",
          "  -> Use \"button\" (actions), \"link\" (navigation) or \"icon\" (simple triggers).",
          "- BOOLEAN (e.g., has_tax, is_valid):",
          "  -> Use \"toggle\" (if editable) or \"icon\" (check/close) or \"badge\" (Yes/No).",
          "- IDENTIFIERS (e.g., uuid, sku, order_id, cpf):",
          "  -> Style: \"font-family: monospace\".",
          "  -> CRITICAL: Do NOT use numeric formatting (like \"1.0-0\") for IDs. Treat them as strings.",
          "  -> Consider adding a \"copy\" context action.",
          "- GROUPING (e.g., category, department):",
          "  -> If the user asks to \"group by X\", use the ENABLE_GROUPING action with target=X.",
          "- TEMPORAL (e.g., created_at, deadline):",
          "  -> Use type \"date\". Prefer \"short\" or \"shortDate\" for compact views.",
          "  -> Use standard format (dd/MM/yyyy) for strict records."
        ]
      },
      "aiConcepts": {
        "authoring-envelope": {
          "id": "authoring-envelope",
          "title": "Envelope de Autoria",
          "description": "Contrato primário de autoria usado por editor visual, editor JSON, playground e IA.",
          "rules": [
            "O JSON primário de autoria é TableAuthoringDocument com kind \"praxis.table.editor\".",
            "bindings.resourcePath e bindings.horizontalScroll não devem ser embutidos diretamente no TableConfig.",
            "meta.idField pertence ao TableConfig canônico e deve ser editado como metadado da configuração.",
            "TableConfig representa a projeção canônica de runtime, não o envelope completo de autoria.",
            "meta.schemaId e meta.serverHash são snapshots persistidos de reconciliação, não fonte primária do runtime."
          ],
          "examples": [
            "{ kind: \"praxis.table.editor\", version: 1, config: { meta: { idField: \"employeeId\" }, columns: [{ field: \"name\", header: \"Nome\" }] }, bindings: { resourcePath: \"employees\", horizontalScroll: \"auto\" } }"
          ],
          "antiPatterns": [
            "{ columns: [{ field: \"name\", header: \"Nome\" }], __resourcePath__: \"employees\" }",
            "{ config: { columns: [] }, bindings: { idField: \"employeeId\" } }"
          ]
        },
        "meta-identity": {
          "id": "meta-identity",
          "title": "Identidade e Metadados",
          "description": "Regras para meta.* persistível (nome, descrição, tags, schemaId).",
          "rules": [
            "meta.idField deve apontar para o campo único das linhas quando configurado.",
            "Alterar meta.idField exige confirmação pois impacta seleção e ações por linha.",
            "meta.tags deve ser uma lista de strings curtas e sem espaços extras.",
            "meta.schemaId é referência de origem; use apenas valores conhecidos."
          ],
          "examples": [
            "meta.name = \"Funcionários ativos\"",
            "meta.description = \"Visão de colaboradores ativos com filtros por status.\"",
            "meta.tags = [\"financeiro\", \"demo\"]",
            "meta.idField = \"employeeId\""
          ],
          "antiPatterns": [
            "meta.idField = \"id\" (sem validar se existe no dataset)",
            "meta.tags = \"financeiro\""
          ]
        },
        "columns-core": {
          "id": "columns-core",
          "title": "Colunas Básicas",
          "description": "Definições essenciais de colunas (field, header, visible, order, width).",
          "rules": [
            "columns[].field deve ser único e existir no dataset.",
            "Não reutilize o mesmo field em duas colunas.",
            "Use order para posicionar colunas; menor valor = mais à esquerda.",
            "width aceita valores CSS (ex.: \"120px\", \"10%\", \"auto\")."
          ],
          "examples": [
            "{ field: \"status\", header: \"Status\", visible: true, order: 2 }",
            "{ field: \"createdAt\", header: \"Criado em\", width: \"140px\" }"
          ],
          "antiPatterns": [
            "{ field: \"status\", header: \"Status\" } e outra coluna com field \"status\"",
            "{ field: \"price\", width: 120 }"
          ]
        },
        "columns-behavior": {
          "id": "columns-behavior",
          "title": "Comportamento de Coluna",
          "description": "Configura sortable, filterable, resizable, align e sticky.",
          "rules": [
            "sortable e filterable devem refletir o comportamento real do backend.",
            "resizable depende de behavior.resizing.enabled quando disponível.",
            "align deve ser left/center/right.",
            "sticky aceita true, \"start\" ou \"end\"."
          ],
          "examples": [
            "{ field: \"amount\", sortable: true, filterable: true, align: \"right\" }",
            "{ field: \"id\", sticky: \"start\" }"
          ],
          "antiPatterns": [
            "{ align: \"middle\" }",
            "{ sticky: \"left\" }"
          ]
        },
        "columns-styles": {
          "id": "columns-styles",
          "title": "Estilos de Coluna",
          "description": "CSS inline e classes para células e cabeçalho.",
          "rules": [
            "cssClass/headerCssClass devem ser nomes de classe válidos.",
            "style/headerStyle são CSS inline curtos e seguros.",
            "Evite !important e regras muito longas."
          ],
          "examples": [
            "{ field: \"status\", cssClass: \"col-status\" }",
            "{ field: \"name\", headerStyle: \"text-transform: uppercase;\" }"
          ],
          "antiPatterns": [
            "{ headerCssClass: \"header title\" }",
            "{ style: \"background: url(javascript:...)\" }"
          ]
        },
        "columns-types": {
          "id": "columns-types",
          "title": "Tipos e Formatos de Coluna",
          "description": "Regras de type/format por tipo de dado.",
          "rules": [
            "type deve ser um dos tipos suportados (string/number/date/boolean/currency/percentage/custom).",
            "format deve ser compatível com type e presets do sistema.",
            "Para currency, use formato \"BRL|symbol|2\" ou semelhante.",
            "Para date, use DatePipe ou presets existentes."
          ],
          "examples": [
            "{ field: \"createdAt\", type: \"date\", format: \"dd/MM/yyyy\" }",
            "{ field: \"amount\", type: \"currency\", format: \"BRL|symbol|2\" }"
          ],
          "antiPatterns": [
            "{ type: \"money\" }",
            "{ format: \"money()\" }"
          ]
        },
        "columns-formatting": {
          "id": "columns-formatting",
          "title": "Mapeamento e Formatação Avançada",
          "description": "valueMapping, format e estilos adicionais.",
          "rules": [
            "valueMapping deve usar chaves de string para mapear valores crus.",
            "Use format presets quando disponíveis; evite formatos inventados."
          ],
          "syntax": "format: \"BRL|symbol|2\"",
          "examples": [
            "{ field: \"active\", valueMapping: { \"1\": \"Ativo\", \"0\": \"Inativo\" } }"
          ],
          "antiPatterns": [
            "{ valueMapping: { 1: \"Ativo\" } }"
          ]
        },
        "columns-internals": {
          "id": "columns-internals",
          "title": "Campos Internos de Coluna",
          "description": "Campos reservados usados por fluxos internos e importação.",
          "rules": [
            "Evite setar _styleRulesState, _generatedValueGetter, _originalApiType e _isApiField manualmente.",
            "Use apenas em fluxos de migração ou importação controlada."
          ],
          "examples": [
            "(_isApiField true só quando coluna veio da API)"
          ],
          "antiPatterns": [
            "{ _generatedValueGetter: \"row => row.value\" }"
          ]
        },
        "computed-logic": {
          "id": "computed-logic",
          "title": "Lógica de Colunas Calculadas",
          "description": "Regras matemáticas e de sintaxe para colunas computed.",
          "rules": [
            "Use AST Json Logic canônico em columns[].computed.expression.",
            "Acesse campos da linha com {\"var\":\"field\"} e dependências anteriores com {\"var\":\"computed.total\"}.",
            "Operadores/funções disponíveis incluem +, -, *, /, %, min, max, cat, substr, round, floor, ceil, abs, coalesce, now, date, yearsSince, monthsSince, daysSince, len, toNumber e stringify.",
            "NÃO use prefixos como \"row.\", \"this.\" ou \"item.\", nem strings DSL.",
            "O resultado deve ser compatível com o outputType (number, currency, percentage, string)."
          ],
          "syntax": "{\"*\":[{\"var\":\"fieldA\"},{\"var\":\"fieldB\"}]}",
          "examples": [
            "{\"*\":[{\"var\":\"quantity\"},{\"var\":\"unitPrice\"}]}",
            "{\"/\":[{\"-\":[{\"var\":\"total\"},{\"var\":\"cost\"}]},{\"var\":\"total\"}]}",
            "{\"min\":[{\"var\":\"stock\"},100]}",
            "{\"abs\":[{\"var\":\"balance\"}]}"
          ],
          "antiPatterns": [
            "\"quantity * price\"",
            "row.quantity * row.price",
            "Math.max(price, 0)",
            "return quantity * price;"
          ]
        },
        "renderers-core": {
          "id": "renderers-core",
          "title": "Renderers de Coluna",
          "description": "Regras para columns[].renderer.* e tipos suportados.",
          "rules": [
            "Defina columns[].renderer.type antes de configurar detalhes.",
            "Para renderers interativos (button, toggle, menu), configure action.",
            "renderer.html deve usar template com placeholders [[field]].",
            "renderer.link deve preferir hrefField/textField quando o valor vem do dataset."
          ],
          "examples": [
            "{ renderer: { type: \"badge\", badge: { textField: \"status\", color: \"success\" } } }",
            "{ renderer: { type: \"button\", button: { label: \"Editar\", action: { id: \"edit-row\" } } } }"
          ],
          "antiPatterns": [
            "{ renderer: { badge: { text: \"Ativo\" } } }",
            "{ renderer: { type: \"button\", button: { label: \"Editar\" } } }"
          ]
        },
        "renderer-icon": {
          "id": "renderer-icon",
          "title": "Renderer Icon",
          "description": "Configuração de renderer.icon.*",
          "rules": [
            "Use icon.name para ícone fixo ou icon.nameField para dinâmico.",
            "icon.size é em px.",
            "ariaLabel deve ser descritivo."
          ],
          "examples": [
            "{ renderer: { type: \"icon\", icon: { name: \"check_circle\", color: \"success\", size: 18 } } }"
          ],
          "antiPatterns": [
            "{ icon: { name: \"check\" } } sem renderer.type"
          ]
        },
        "renderer-image": {
          "id": "renderer-image",
          "title": "Renderer Image",
          "description": "Configuração de renderer.image.*",
          "rules": [
            "Use srcField quando a URL vem do dataset.",
            "Defina alt/altField para acessibilidade.",
            "width/height são em px.",
            "shape deve ser square/rounded/circle."
          ],
          "examples": [
            "{ renderer: { type: \"image\", image: { srcField: \"avatarUrl\", shape: \"circle\", width: 32, height: 32 } } }"
          ],
          "antiPatterns": [
            "{ renderer: { type: \"image\", image: { src: \"\" } } }"
          ]
        },
        "renderer-badge": {
          "id": "renderer-badge",
          "title": "Renderer Badge",
          "description": "Configuração de renderer.badge.*",
          "rules": [
            "Badge requer text ou textField.",
            "variant deve ser filled/outlined/soft/plain."
          ],
          "examples": [
            "{ renderer: { type: \"badge\", badge: { textField: \"status\", variant: \"filled\" } } }"
          ],
          "antiPatterns": [
            "{ badge: {} }"
          ]
        },
        "renderer-link": {
          "id": "renderer-link",
          "title": "Renderer Link",
          "description": "Configuração de renderer.link.*",
          "rules": [
            "Use hrefField quando URL vem do dataset.",
            "target deve ser _blank/_self/_parent/_top.",
            "rel deve ser usado com target _blank (ex.: noopener)."
          ],
          "examples": [
            "{ renderer: { type: \"link\", link: { textField: \"name\", hrefField: \"profileUrl\", target: \"_blank\", rel: \"noopener\" } } }"
          ],
          "antiPatterns": [
            "{ link: { href: \"javascript:alert(1)\" } }"
          ]
        },
        "renderer-button": {
          "id": "renderer-button",
          "title": "Renderer Button",
          "description": "Configuração de renderer.button.*",
          "rules": [
            "button.action.id é obrigatório para ações interativas.",
            "disabledCondition usa expressao condicional canonica em JSON Logic.",
            "variant deve ser filled/outlined/text."
          ],
          "examples": [
            "{ renderer: { type: \"button\", button: { label: \"Editar\", action: { id: \"edit-row\" } } } }"
          ],
          "antiPatterns": [
            "{ button: { label: \"Editar\" } }"
          ]
        },
        "renderer-chip": {
          "id": "renderer-chip",
          "title": "Renderer Chip",
          "description": "Configuração de renderer.chip.*",
          "rules": [
            "Chip requer text ou textField.",
            "variant deve ser filled/outlined/soft/plain."
          ],
          "examples": [
            "{ renderer: { type: \"chip\", chip: { text: \"Ativo\", variant: \"filled\" } } }"
          ],
          "antiPatterns": [
            "{ chip: { variant: \"ghost\" } }"
          ]
        },
        "renderer-progress": {
          "id": "renderer-progress",
          "title": "Renderer Progress",
          "description": "Configuração de renderer.progress.*",
          "rules": [
            "valueExpr deve retornar 0-100.",
            "showLabel controla exibição do valor."
          ],
          "examples": [
            "{ renderer: { type: \"progress\", progress: { valueExpr: \"progress\", showLabel: true } } }"
          ],
          "antiPatterns": [
            "{ progress: { valueExpr: \"progress/100\" } } sem garantir 0-100"
          ]
        },
        "renderer-avatar": {
          "id": "renderer-avatar",
          "title": "Renderer Avatar",
          "description": "Configuração de renderer.avatar.*",
          "rules": [
            "Use srcField para imagem dinâmica.",
            "initialsField deriva iniciais automaticamente a partir de um campo textual.",
            "initialsExpr é fallback quando não há imagem e deve retornar as iniciais prontas; não use JS arbitrário para split/map/trim.",
            "Use backgroundColor e textColor para colorir o círculo do avatar; para variar por linha, aplique esses campos em conditionalRenderers.",
            "shape deve ser circle/square/rounded."
          ],
          "examples": [
            "{ renderer: { type: \"avatar\", avatar: { srcField: \"avatarUrl\", initialsField: \"name\" } } }",
            "{ renderer: { type: \"avatar\", avatar: { initialsExpr: \"initials\" } } }",
            "{ conditionalRenderers: [{ condition: { \">\": [{ \"var\": \"salary\" }, 30000] }, renderer: { type: \"avatar\", avatar: { initialsField: \"name\", backgroundColor: \"#D32F2F\", textColor: \"#FFFFFF\" } } }] }"
          ],
          "antiPatterns": [
            "{ avatar: { initialsExpr: \"name\" } }",
            "{ avatar: { shape: \"round\" } }"
          ]
        },
        "renderer-toggle": {
          "id": "renderer-toggle",
          "title": "Renderer Toggle",
          "description": "Configuração de renderer.toggle.*",
          "rules": [
            "toggle.action.id é obrigatório para persistir mudança.",
            "disabledCondition usa expressao condicional canonica em JSON Logic."
          ],
          "examples": [
            "{ renderer: { type: \"toggle\", toggle: { stateExpr: \"active\", action: { id: \"toggle-active\" } } } }"
          ],
          "antiPatterns": [
            "{ toggle: { stateExpr: \"active\" } } sem action"
          ]
        },
        "renderer-menu": {
          "id": "renderer-menu",
          "title": "Renderer Menu",
          "description": "Configuração de renderer.menu.*",
          "rules": [
            "itemsExpr deve produzir lista de ações válidas.",
            "ariaLabel deve descrever o menu."
          ],
          "examples": [
            "{ renderer: { type: \"menu\", menu: { itemsExpr: \"row.menuItems\", ariaLabel: \"Ações\" } } }"
          ],
          "antiPatterns": [
            "{ menu: { itemsExpr: \"row => row.items\" } }"
          ]
        },
        "renderer-rating": {
          "id": "renderer-rating",
          "title": "Renderer Rating",
          "description": "Configuração de renderer.rating.*",
          "rules": [
            "valueExpr deve retornar numero dentro do max.",
            "O renderer é somente leitura por padrão; não use readonly no schema funcional."
          ],
          "examples": [
            "{ renderer: { type: \"rating\", rating: { valueExpr: \"score\", max: 5, ariaLabel: \"Nota {value} de {max}\" } } }"
          ],
          "antiPatterns": [
            "{ rating: { max: 0 } }"
          ]
        },
        "renderer-html": {
          "id": "renderer-html",
          "title": "Renderer HTML",
          "description": "Configuração de renderer.html.*",
          "rules": [
            "template deve usar placeholders [[field]].",
            "sanitize deve ser strict ou basic, preferindo strict."
          ],
          "examples": [
            "{ renderer: { type: \"html\", html: { template: \"<strong>[[name]]</strong>\", sanitize: \"strict\" } } }"
          ],
          "antiPatterns": [
            "{ html: { template: \"<script>alert(1)</script>\" } }"
          ]
        },
        "renderer-compose": {
          "id": "renderer-compose",
          "title": "Renderer Compose",
          "description": "Composição de múltiplos renderers na mesma célula.",
          "rules": [
            "columns[].renderer.compose.items deve ser uma lista de renderers válidos.",
            "Defina layout (direction, gap, align) para evitar overflow.",
            "Evite mixar elementos interativos sem espaço suficiente."
          ],
          "examples": [
            "{ renderer: { type: \"compose\", compose: { items: [{ type: \"icon\", icon: { name: \"check\" } }, { type: \"text\", textField: \"status\" }], layout: { direction: \"row\", gap: 8 } } } }"
          ],
          "antiPatterns": [
            "{ renderer: { type: \"compose\", compose: { items: [] } } }"
          ]
        },
        "conditional-json-logic": {
          "id": "conditional-json-logic",
          "title": "Expressoes Condicionais",
          "description": "Sintaxe de condições para conditionalRenderers e filtros de estilo.",
          "rules": [
            "Use objetos JSON Logic com referencias var (ex: { \"===\": [{ \"var\": \"status\" }, \"Ativo\"] }).",
            "Operadores suportados: ===, !==, >, <, >=, <=, and, or, !.",
            "Funcoes comuns: { \"contains\": [{ \"var\": \"name\" }, \"Silva\"] }.",
            "Pode referenciar computed.<field> quando existir.",
            "NAO use DSL textual, JavaScript (row., this., Math., ternario, eval) nem strings de expressao."
          ],
          "syntax": "{\"and\":[{\"contains\":[{\"var\":\"status\"},\"Ativo\"]},{\">=\":[{\"var\":\"price\"},100]}]}",
          "examples": [
            "{\"===\":[{\"var\":\"status\"},\"Ativo\"]}",
            "{\"contains\":[{\"var\":\"name\"},\"Silva\"]}",
            "{\">\":[{\"var\":\"computed.total\"},1000]}"
          ],
          "antiPatterns": [
            "row.status == \"Ativo\"",
            "Math.max(price, 0) > 10",
            "status ? \"A\" : \"B\""
          ]
        },
        "conditional-renderers": {
          "id": "conditional-renderers",
          "title": "Renderers Condicionais",
          "description": "Configura conditionalRenderers por coluna.",
          "rules": [
            "condition usa expressao condicional canonica em JSON Logic.",
            "renderer interno segue as mesmas regras dos renderers padrão.",
            "Para animar apenas uma célula/coluna quando a condição for verdadeira, use columns[].conditionalRenderers[].animation.",
            "enabled controla ativacao da regra."
          ],
          "examples": [
            "{ conditionalRenderers: [{ condition: { \"===\": [{ \"var\": \"status\" }, \"Ativo\"] }, renderer: { type: \"badge\", badge: { text: \"Ativo\" } } }] }",
            "{ conditionalRenderers: [{ condition: { \">\": [{ \"var\": \"salario\" }, 30000] }, animation: { preset: \"pulse-soft\", trigger: \"onAppear\", intensity: \"subtle\", repeat: \"once\" } }] }"
          ],
          "antiPatterns": [
            "{ conditionalRenderers: [{ condition: \"row.status == \"Ativo\"\" }] }",
            "{ conditionalStyles: [{ style: { animation: \"pulse 1s infinite\" } }] }"
          ]
        },
        "conditional-animations": {
          "id": "conditional-animations",
          "title": "Animações Condicionais",
          "description": "Animações condicionais de linha e célula na tabela.",
          "rules": [
            "Use rowConditionalRenderers[].animation para animar a linha inteira.",
            "Use columns[].conditionalRenderers[].animation para animar somente o conteúdo de uma célula/coluna.",
            "Prefira preset semântico antes de type bruto: info-soft, success-confirm, warning-attention, critical-alert, audit-review, sync-pending, pulse-soft, fade-soft, sla-warning, sla-breach, risk-elevated, risk-critical, audit-warning ou sync-warning.",
            "condition sempre usa JSON Logic; não use JS, row.status ou strings de expressão.",
            "appearance.animations.enabled=false desativa animações; appearance.animations.specific.row/cell=false desativa o escopo correspondente.",
            "onConditionEnter, onConditionExit e onDataRefresh são aceitos no contrato de autoria e normalizados para gatilho de mudança no runtime."
          ],
          "examples": [
            "{ rowConditionalRenderers: [{ id: \"salary-high-pulse\", condition: { \">\": [{ \"var\": \"salario\" }, 30000] }, animation: { preset: \"pulse-soft\", trigger: \"onAppear\", intensity: \"subtle\", repeat: \"once\", durationMs: 1200 }, enabled: true }] }",
            "{ columns: [{ field: \"status\", conditionalRenderers: [{ id: \"status-critical-alert\", condition: { \"===\": [{ \"var\": \"status\" }, \"Critico\"] }, animation: { preset: \"critical-alert\", trigger: \"onChange\", repeat: \"loop\", intensity: \"strong\" }, enabled: true }] }] }"
          ],
          "antiPatterns": [
            "{ rowConditionalStyles: [{ style: { animation: \"pulse 1s infinite\" } }] }",
            "{ rowConditionalRenderers: [{ condition: \"row.salario > 30000\", animation: { name: \"pulse\" } }] }",
            "{ columns: [{ conditionalStyles: [{ condition: { \">\": [{ \"var\": \"salario\" }, 30000] }, style: { animationName: \"pulse\" } }] }] }"
          ]
        },
        "conditional-styles": {
          "id": "conditional-styles",
          "title": "Estilos Condicionais por Coluna",
          "description": "Configura conditionalStyles.*",
          "rules": [
            "condition usa expressao condicional canonica em JSON Logic.",
            "cssClass define classe e style aplica inline.",
            "description deve ser texto curto."
          ],
          "examples": [
            "{ conditionalStyles: [{ condition: { \"<\": [{ \"var\": \"amount\" }, 0] }, cssClass: \"col-negative\" }] }"
          ],
          "antiPatterns": [
            "{ conditionalStyles: [{ condition: \"row.amount < 0\" }] }"
          ]
        },
        "row-conditional-styles": {
          "id": "row-conditional-styles",
          "title": "Estilos Condicionais de Linha",
          "description": "Configura rowConditionalStyles.*",
          "rules": [
            "condition usa expressao condicional canonica em JSON Logic.",
            "cssClass define classe e style aplica inline.",
            "description deve ser texto curto."
          ],
          "examples": [
            "{ rowConditionalStyles: [{ condition: { \"<\": [{ \"var\": \"amount\" }, 0] }, cssClass: \"row-negative\" }] }"
          ],
          "antiPatterns": [
            "{ rowConditionalStyles: [{ condition: \"row.amount < 0\" }] }"
          ]
        },
        "behavior-pagination": {
          "id": "behavior-pagination",
          "title": "Paginação (Behavior)",
          "description": "Configuração de behavior.pagination.*",
          "rules": [
            "strategy deve ser client ou server.",
            "pageSizeOptions deve incluir pageSize.",
            "advanced.maxPageSize limita pageSize customizado."
          ],
          "examples": [
            "{ behavior: { pagination: { enabled: true, strategy: \"server\", pageSize: 25, pageSizeOptions: [10, 25, 50] } } }"
          ],
          "antiPatterns": [
            "{ behavior: { pagination: { strategy: \"server\" } } } sem totalItems"
          ]
        },
        "behavior-sorting": {
          "id": "behavior-sorting",
          "title": "Ordenação (Behavior)",
          "description": "Configuração de behavior.sorting.*",
          "rules": [
            "defaultSort pode ser objeto unico ou lista.",
            "multiSort true permite multiplos campos.",
            "allowClearSort habilita terceiro clique."
          ],
          "examples": [
            "{ behavior: { sorting: { enabled: true, strategy: \"client\", defaultSort: { column: \"createdAt\", direction: \"desc\" } } } }"
          ],
          "antiPatterns": [
            "{ behavior: { sorting: { defaultSort: { column: \"\", direction: \"asc\" } } } }"
          ]
        },
        "behavior-filtering": {
          "id": "behavior-filtering",
          "title": "Filtros (Behavior)",
          "description": "Configuração de behavior.filtering.*",
          "rules": [
            "columnFilters.position deve ser header/subheader/sidebar.",
            "advancedFilters.settings controla o painel avançado.",
            "strategy deve refletir suporte do backend."
          ],
          "examples": [
            "{ behavior: { filtering: { enabled: true, columnFilters: { enabled: true, position: \"header\" } } } }"
          ],
          "antiPatterns": [
            "{ behavior: { filtering: { enabled: true } } } sem strategy"
          ]
        },
        "behavior-selection": {
          "id": "behavior-selection",
          "title": "Selecao (Behavior)",
          "description": "Configuração de behavior.selection.*",
          "rules": [
            "type define single/multiple e mode define checkbox/row/both.",
            "persistSelection mantem selecao entre paginas.",
            "visual.highlightSelected define destaque da linha."
          ],
          "examples": [
            "{ behavior: { selection: { enabled: true, type: \"multiple\", mode: \"checkbox\", persistSelection: true } } }"
          ],
          "antiPatterns": [
            "{ behavior: { selection: { type: \"multi\" } } }"
          ]
        },
        "behavior-interaction": {
          "id": "behavior-interaction",
          "title": "Interacao (Behavior)",
          "description": "Configuração de behavior.interaction.*",
          "rules": [
            "rowClick/rowDoubleClick.action devem ser ids conhecidos.",
            "customAction deve referenciar handler registrado.",
            "keyboard.customShortcuts mapeia teclas para ações."
          ],
          "examples": [
            "{ behavior: { interaction: { rowClick: { enabled: true, action: \"view\" } } } }"
          ],
          "antiPatterns": [
            "{ behavior: { interaction: { rowClick: { customAction: \"row => fn(row)\" } } } }"
          ]
        },
        "behavior-loading": {
          "id": "behavior-loading",
          "title": "Loading (Behavior)",
          "description": "Configuração de behavior.loading.*",
          "rules": [
            "type deve ser spinner/skeleton/progress; custom nao possui renderer canonico no runtime.",
            "position deve ser overlay/inline/replace e e materializada pelo runtime.",
            "delay evita flicker; showForQuickOperations=true ignora o delay visual.",
            "requestTimeoutMs evita espera indefinida e materializa erro recuperavel.",
            "allowCancel aborta o request remoto sem descartar dados estaveis ja renderizados.",
            "skeleton.rows deve ser numero positivo."
          ],
          "examples": [
            "{ behavior: { loading: { type: \"skeleton\", position: \"replace\", delay: 200, showForQuickOperations: false, requestTimeoutMs: 30000, allowCancel: true, skeleton: { rows: 6, animated: true } } } }"
          ],
          "antiPatterns": [
            "{ behavior: { loading: { delay: 0 } } }"
          ]
        },
        "behavior-empty-state": {
          "id": "behavior-empty-state",
          "title": "Estado Vazio (Behavior)",
          "description": "Configuração de behavior.emptyState.*",
          "rules": [
            "message deve ser texto curto.",
            "actions[].action deve ser string de acao.",
            "actions deve representar uma intencao contextual distinta; CREATE capability-governado permanece na toolbar e nao deve ser duplicado.",
            "contexts permite variações por cenário."
          ],
          "examples": [
            "{ behavior: { emptyState: { message: \"Sem dados\", actions: [{ label: \"Importar arquivo\", action: \"import\", primary: true }] } } }"
          ],
          "antiPatterns": [
            "{ behavior: { emptyState: { message: \"\" } } }",
            "{ toolbar: { actions: [{ action: \"create\" }] }, behavior: { emptyState: { actions: [{ action: \"create\" }] } } }"
          ]
        },
        "behavior-virtualization": {
          "id": "behavior-virtualization",
          "title": "Virtualizacao (Behavior)",
          "description": "Configuração de behavior.virtualization.*",
          "rules": [
            "itemHeight deve ser informado quando enabled.",
            "strategy deve ser fixed ou dynamic."
          ],
          "examples": [
            "{ behavior: { virtualization: { enabled: true, itemHeight: 48, strategy: \"fixed\" } } }"
          ],
          "antiPatterns": [
            "{ behavior: { virtualization: { enabled: true } } }"
          ]
        },
        "behavior-resizing": {
          "id": "behavior-resizing",
          "title": "Resize (Behavior)",
          "description": "Configuração de behavior.resizing.*",
          "rules": [
            "minColumnWidth deve ser positivo.",
            "maxColumnWidth deve ser maior que minColumnWidth quando informado.",
            "autoFit habilita duplo clique no separador para ajustar a coluna ao conteúdo renderizado.",
            "persistWidths salva ajustes do usuario."
          ],
          "examples": [
            "{ behavior: { resizing: { enabled: true, minColumnWidth: 80, maxColumnWidth: 520, autoFit: true, persistWidths: true } } }"
          ],
          "antiPatterns": [
            "{ behavior: { resizing: { minColumnWidth: 0 } } }"
          ]
        },
        "behavior-dragging": {
          "id": "behavior-dragging",
          "title": "Drag & Drop (Behavior)",
          "description": "Configuração de behavior.dragging.*",
          "rules": [
            "columns/rows controla reordenacao.",
            "columnDropZones deve listar zonas validas."
          ],
          "examples": [
            "{ behavior: { dragging: { columns: true, rows: false, showDragIndicator: true } } }"
          ],
          "antiPatterns": [
            "{ behavior: { dragging: { columns: \"yes\" } } }"
          ]
        },
        "behavior-expansion": {
          "id": "behavior-expansion",
          "title": "Expansion (Behavior)",
          "description": "Configuração de behavior.expansion.* para detail rows schema-driven.",
          "rules": [
            "detail é sempre schema-driven; varie source.mode (inline/resource/resourcePath), não detail.type.",
            "detail.schemaContract.kind/version deve ser informado para validação e migração.",
            "Em virtualização, prefira detail.height.mode=fixed com virtualization.policy=fixed-height-only.",
            "Use eventExposureDefault hashed/redacted por padrão em ambiente corporativo."
          ],
          "examples": [
            "{ behavior: { expansion: { enabled: true, state: { mode: \"controlled\" }, detail: { schemaContract: { kind: \"praxis.detail.schema\", version: \"1.0.0\" }, source: { mode: \"resource\", resource: { kind: \"ui-composition\", id: \"customer-detail-v2\", version: \"2.1.0\" } }, rendering: { strategy: \"registry\", registryId: \"praxis.detail.default\" } } } } }"
          ],
          "antiPatterns": [
            "{ behavior: { expansion: { detail: { type: \"template\", templateId: \"legacy-id\" } } } }"
          ]
        },
        "appearance": {
          "id": "appearance",
          "title": "Aparência e Layout",
          "description": "Densidade, bordas, cores, tipografia, espaçamento e responsividade.",
          "rules": [
            "appearance.density deve usar valores compact/comfortable/spacious.",
            "Cores devem usar tokens do tema ou hex válido.",
            "responsive.mobile.cardMode deve ser combinado com colunas prioritárias.",
            "Se animations.enabled for true, respeite reduceMotion.",
            "appearance.animations.specific.row e appearance.animations.specific.cell controlam animações condicionais por escopo."
          ],
          "examples": [
            "{ appearance: { density: \"compact\", borders: { showRowBorders: true } } }",
            "{ appearance: { typography: { fontSize: \"14px\" }, spacing: { cellPadding: \"8px 16px\" } } }"
          ],
          "antiPatterns": [
            "{ appearance: { density: \"tiny\" } }"
          ]
        },
        "appearance-details": {
          "id": "appearance-details",
          "title": "Detalhes de Aparência",
          "description": "Bordas, cores, tipografia, spacing, elevation e responsive autoAdjust.",
          "rules": [
            "borders.style deve ser solid/dashed/dotted quando aplicável.",
            "typography.headerFontWeight deve ser string numerica ou token.",
            "responsive.autoAdjust controla ajustes automáticos em telas menores."
          ],
          "examples": [
            "{ appearance: { borders: { showOuterBorder: true, style: \"solid\" }, colors: { alternateRowBackground: \"#f7f9fc\" } } }",
            "{ appearance: { responsive: { mobile: { cardMode: true, priorityColumns: [\"name\", \"status\"] } } } }"
          ],
          "antiPatterns": [
            "{ appearance: { borders: { style: \"double\" } } }"
          ]
        },
        "toolbar": {
          "id": "toolbar",
          "title": "Toolbar",
          "description": "Configurações gerais da toolbar.",
          "rules": [
            "toolbar.visible controla exibição global da barra.",
            "Use toolbar.layout.alignment para ajustar distribuição.",
            "toolbar.filters.enabled depende de filtering.enabled.",
            "settingsMenu.enabled expõe opções de densidade e colunas."
          ],
          "examples": [
            "{ toolbar: { visible: true, position: \"top\", title: \"Pedidos\" } }"
          ],
          "antiPatterns": [
            "{ toolbar: { position: \"left\" } }"
          ]
        },
        "toolbar-layout": {
          "id": "toolbar-layout",
          "title": "Layout da Toolbar",
          "description": "Configuração de toolbar.layout.*",
          "rules": [
            "alignment deve ser start/center/end/space-between.",
            "height e padding devem ser coerentes com o tema."
          ],
          "examples": [
            "{ toolbar: { layout: { alignment: \"space-between\", height: 56, showSeparator: true } } }"
          ],
          "antiPatterns": [
            "{ toolbar: { layout: { alignment: \"between\" } } }"
          ]
        },
        "toolbar-actions": {
          "id": "toolbar-actions",
          "title": "Ações da Toolbar",
          "description": "Definições de toolbar.actions[].",
          "rules": [
            "toolbar.actions[].id deve ser único.",
            "action deve ser string, não função JS.",
            "type deve ser button/icon/fab/menu.",
            "visibleWhen usa expressao condicional canonica em JSON Logic."
          ],
          "examples": [
            "{ toolbar: { actions: [{ id: \"add\", label: \"Adicionar\", type: \"button\", action: \"create\", position: \"end\" }] } }",
            "{ toolbar: { actions: [{ id: \"more\", label: \"Mais\", type: \"menu\", action: \"noop\", children: [{ id: \"export\", label: \"Exportar\", type: \"button\", action: \"export\" }] }] } }"
          ],
          "antiPatterns": [
            "{ actions: [{ action: \"() => doSomething()\" }] }"
          ]
        },
        "toolbar-filters": {
          "id": "toolbar-filters",
          "title": "Filtros da Toolbar",
          "description": "Configuração de toolbar.filters.* e quickFilters.",
          "rules": [
            "quickFilters[].filter deve seguir a estrutura do filtro suportado.",
            "quickFilters representa um pequeno seletor de escopo exclusivo e removível; use filtros avançados para critérios combináveis.",
            "enabled depende de behavior.filtering.enabled."
          ],
          "examples": [
            "{ toolbar: { filters: { enabled: true, quickFilters: [{ id: \"active\", label: \"Ativos\", filter: { status: \"active\" } }] } } }"
          ],
          "antiPatterns": [
            "{ toolbar: { filters: { quickFilters: [{ filter: \"status=active\" }] } } }"
          ]
        },
        "toolbar-settings": {
          "id": "toolbar-settings",
          "title": "Menu de Configuracoes",
          "description": "Configuração de toolbar.settingsMenu.*",
          "rules": [
            "settingsMenu.options[].type deve ser toggle/select/action.",
            "options deve listar valores validos quando type for select."
          ],
          "examples": [
            "{ toolbar: { settingsMenu: { enabled: true, options: [{ id: \"density\", label: \"Densidade\", type: \"select\", options: [\"compact\", \"comfortable\", \"spacious\"] }] } } }"
          ],
          "antiPatterns": [
            "{ settingsMenu: { options: [{ type: \"dropdown\" }] } }"
          ]
        },
        "row-actions": {
          "id": "row-actions",
          "title": "Acoes por Linha",
          "description": "Configuração de actions.row.*",
          "rules": [
            "enabled deve estar true para mostrar coluna de ações.",
            "display deve ser menu/buttons/icons.",
            "trigger deve ser hover/always/click.",
            "actions[].action deve ser string."
          ],
          "examples": [
            "{ actions: { row: { enabled: true, display: \"menu\", trigger: \"hover\", actions: [{ id: \"edit\", label: \"Editar\", action: \"edit\" }] } } }"
          ],
          "antiPatterns": [
            "{ actions: { row: { display: \"dropdown\" } } }"
          ]
        },
        "row-actions-advanced": {
          "id": "row-actions-advanced",
          "title": "Acoes por Linha Avancadas",
          "description": "Header, overflow, menu e comportamento avançado.",
          "rules": [
            "header.align deve ser start/center/end.",
            "behavior.maxInline deve ser numero ou objeto de breakpoints.",
            "menuIcon e menuButtonColor devem ser valores suportados.",
            "discovery.enabled=false mantem apenas as actions configuradas e bloqueia a descoberta contextual por HATEOAS/capabilities."
          ],
          "examples": [
            "{ actions: { row: { header: { label: \"Ações\", align: \"end\" }, maxVisibleActions: 3, behavior: { enabled: true, maxInline: 2 } } } }",
            "{ actions: { row: { enabled: true, display: \"buttons\", discovery: { enabled: false }, actions: [{ id: \"briefing\", label: \"Briefing\", action: \"inspect-surfaces\" }] } } }"
          ],
          "antiPatterns": [
            "{ row: { header: { align: \"middle\" } } }"
          ]
        },
        "bulk-actions": {
          "id": "bulk-actions",
          "title": "Acoes em Lote",
          "description": "Configuração de actions.bulk.*",
          "rules": [
            "bulk.enabled exige selection.enabled.",
            "floating.position deve ser bottom-right/bottom-left/top-right/top-left.",
            "hideWhenEmpty evita botão flutuante quando nada selecionado."
          ],
          "examples": [
            "{ actions: { bulk: { enabled: true, position: \"toolbar\", actions: [{ id: \"delete\", label: \"Excluir\", action: \"bulk-delete\", requiresConfirmation: true }], floating: { position: \"bottom-right\", hideWhenEmpty: true } } } }"
          ],
          "antiPatterns": [
            "{ actions: { bulk: { enabled: true } } } sem selection.enabled"
          ]
        },
        "context-actions": {
          "id": "context-actions",
          "title": "Menu de Contexto",
          "description": "Configuração de actions.context.*",
          "rules": [
            "trigger deve ser right-click/long-press/both.",
            "actions[].action deve ser string."
          ],
          "examples": [
            "{ actions: { context: { enabled: true, trigger: \"right-click\", actions: [{ id: \"copy\", label: \"Copiar\", action: \"copy\" }] } } }"
          ],
          "antiPatterns": [
            "{ context: { trigger: \"click\" } }"
          ]
        },
        "actions-confirmations": {
          "id": "actions-confirmations",
          "title": "Confirmacoes de Acoes",
          "description": "Configuração de actions.confirmations.*",
          "rules": [
            "default deve conter title, message, confirmText e cancelText.",
            "specific usa actionId como chave."
          ],
          "examples": [
            "{ actions: { confirmations: { default: { title: \"Confirmar\", message: \"Deseja continuar?\", confirmText: \"Sim\", cancelText: \"Nao\" }, specific: { \"delete\": { message: \"Excluir item?\" } } } } }"
          ],
          "antiPatterns": [
            "{ actions: { confirmations: { default: { title: \"\" } } } }"
          ]
        },
        "export-general": {
          "id": "export-general",
          "title": "Exportacao Geral",
          "description": "Configuração de export.general.*",
          "rules": [
            "includeHeaders deve ser boolean.",
            "scope deve ser auto, selected, filtered, currentPage ou all.",
            "maxRows deve limitar volume.",
            "includeColumns deve ser all/visible ou lista de fields."
          ],
          "examples": [
            "{ export: { enabled: true, formats: [\"csv\"], general: { includeHeaders: true, scope: \"auto\", maxRows: 5000, includeColumns: \"visible\" } } }"
          ],
          "antiPatterns": [
            "{ export: { general: { maxRows: 0 } } }"
          ]
        },
        "export-excel": {
          "id": "export-excel",
          "title": "Exportacao Excel",
          "description": "Configuração de export.excel.*",
          "rules": [
            "sheetName deve ser curto e sem caracteres invalidos.",
            "autoFitColumns melhora legibilidade.",
            "styling.headerStyle e cellStyle devem ser simples."
          ],
          "examples": [
            "{ export: { excel: { sheetName: \"Dados\", autoFitColumns: true, freezeHeaders: true, styling: { headerStyle: { fontWeight: \"bold\" } } } } }"
          ],
          "antiPatterns": [
            "{ excel: { sheetName: \"\" } }"
          ]
        },
        "export-pdf": {
          "id": "export-pdf",
          "title": "Exportacao PDF",
          "description": "Configuração de export.pdf.*",
          "rules": [
            "orientation deve ser portrait/landscape.",
            "pageSize deve ser A4/A3/Letter/Legal.",
            "margins devem conter top/right/bottom/left."
          ],
          "examples": [
            "{ export: { pdf: { orientation: \"landscape\", pageSize: \"A4\", margins: { top: 10, right: 10, bottom: 10, left: 10 }, autoPageBreak: true } } }"
          ],
          "antiPatterns": [
            "{ pdf: { pageSize: \"A5\" } }"
          ]
        },
        "export-csv": {
          "id": "export-csv",
          "title": "Exportacao CSV",
          "description": "Configuração de export.csv.*",
          "rules": [
            "delimiter deve ser \",\", \";\", \"|\" ou \"\\t\".",
            "encoding deve ser utf-8/utf-16/iso-8859-1.",
            "escapeChar deve ser um caractere."
          ],
          "examples": [
            "{ export: { csv: { delimiter: \";\", encoding: \"utf-8\", escapeChar: \"\\\" } } }"
          ],
          "antiPatterns": [
            "{ csv: { delimiter: \":\" } }"
          ]
        },
        "export-json": {
          "id": "export-json",
          "title": "Exportacao JSON",
          "description": "Configuração de export.json.*",
          "rules": [
            "format deve ser pretty ou compact.",
            "structure deve ser array ou object."
          ],
          "examples": [
            "{ export: { json: { format: \"pretty\", includeMetadata: true, structure: \"array\" } } }"
          ],
          "antiPatterns": [
            "{ json: { format: \"full\" } }"
          ]
        },
        "export-templates": {
          "id": "export-templates",
          "title": "Templates de Exportacao",
          "description": "Configuração de export.templates[]",
          "rules": [
            "templates devem ter id, name e format válidos.",
            "config deve seguir o formato correspondente."
          ],
          "examples": [
            "{ export: { templates: [{ id: \"resumo\", name: \"Resumo\", format: \"pdf\", config: {}, isDefault: false }] } }"
          ],
          "antiPatterns": [
            "{ templates: [{ id: \"\", format: \"xls\" }] }"
          ]
        },
        "messages": {
          "id": "messages",
          "title": "Mensagens",
          "description": "Mensagens de estados, ações, validação e exportação.",
          "rules": [
            "Mensagens devem ser curtas e claras.",
            "Não defina funções inline (use templates ou strings simples)."
          ],
          "examples": [
            "{ messages: { states: { empty: \"Sem registros.\" }, actions: { confirmations: { delete: \"Excluir?\" } } } }"
          ],
          "antiPatterns": [
            "{ messages: { states: { loadingWithCount: \"(n) => ...\" } } }"
          ]
        },
        "messages-advanced": {
          "id": "messages-advanced",
          "title": "Mensagens Avancadas",
          "description": "custom, templates e formatos por tipo.",
          "rules": [
            "templates[].template deve usar placeholders simples.",
            "custom é um mapa chave -> mensagem.",
            "formats deve seguir excel/pdf/csv/json."
          ],
          "examples": [
            "{ messages: { export: { formats: { excel: \"Excel pronto\" } }, templates: [{ id: \"t1\", template: \"Exportado {count} itens\" }] } }"
          ],
          "antiPatterns": [
            "{ messages: { templates: [{ id: \"t1\" }] } }"
          ]
        },
        "localization-date-time": {
          "id": "localization-date-time",
          "title": "Localizacao de Datas",
          "description": "Configuração de localization.dateTime.*",
          "rules": [
            "dateFormat/timeFormat devem seguir DatePipe.",
            "firstDayOfWeek deve ser 0-6.",
            "monthNames e dayNames devem ter 12 e 7 entradas."
          ],
          "examples": [
            "{ localization: { dateTime: { dateFormat: \"dd/MM/yyyy\", timeFormat: \"HH:mm\", firstDayOfWeek: 0 } } }"
          ],
          "antiPatterns": [
            "{ localization: { dateTime: { firstDayOfWeek: 7 } } }"
          ]
        },
        "localization-number-currency": {
          "id": "localization-number-currency",
          "title": "Localizacao de Numeros e Moeda",
          "description": "Configuração de localization.number.* e localization.currency.*",
          "rules": [
            "decimalSeparator e thousandsSeparator devem ser 1 caractere.",
            "negativeSignPosition deve ser before/after.",
            "currency.code deve ser ISO 4217."
          ],
          "examples": [
            "{ localization: { number: { decimalSeparator: \",\", thousandsSeparator: \".\", negativeSign: \"-\", negativeSignPosition: \"before\" }, currency: { code: \"BRL\", symbol: \"R$\" } } }"
          ],
          "antiPatterns": [
            "{ localization: { currency: { code: \"REAL\" } } }"
          ]
        },
        "localization-formatting": {
          "id": "localization-formatting",
          "title": "Formatos Locais",
          "description": "Configuração de localization.formatting.*",
          "rules": [
            "percentageFormat e fileSizeFormat devem seguir padrao esperado.",
            "units deve mapear tipo -> unidade -> label."
          ],
          "examples": [
            "{ localization: { formatting: { percentageFormat: \"#0.00%\", fileSizeFormat: \"decimal\" } } }"
          ],
          "antiPatterns": [
            "{ localization: { formatting: { percentageFormat: \"percent\" } } }"
          ]
        },
        "localization-translations": {
          "id": "localization-translations",
          "title": "Traducoes",
          "description": "Configuração de localization.availableLocales e translations.*",
          "rules": [
            "availableLocales deve listar locales conhecidos.",
            "translations deve mapear locale -> chaves de texto."
          ],
          "examples": [
            "{ localization: { availableLocales: [\"pt-BR\", \"en-US\"], translations: { \"pt-BR\": { \"table.title\": \"Pedidos\" } } } }"
          ],
          "antiPatterns": [
            "{ translations: \"pt-BR\" }"
          ]
        },
        "data-cache": {
          "id": "data-cache",
          "title": "Cache de Dados",
          "description": "Configuração de data.cache.*",
          "rules": [
            "ttl e maxSize devem ser positivos.",
            "invalidationStrategy deve ser ttl/manual/on-update."
          ],
          "examples": [
            "{ data: { cache: { enabled: true, ttl: 600000, maxSize: 1000, invalidationStrategy: \"ttl\" } } }"
          ],
          "antiPatterns": [
            "{ cache: { ttl: 0 } }"
          ]
        },
        "data-sync": {
          "id": "data-sync",
          "title": "Sincronizacao",
          "description": "Configuração de data.sync.*",
          "rules": [
            "interval deve ser em ms.",
            "deltaSync e autoSync devem ser boolean.",
            "conflictResolution deve ser client/server/manual."
          ],
          "examples": [
            "{ data: { sync: { autoSync: true, interval: 30000, deltaSync: true, conflictResolution: \"server\" } } }"
          ],
          "antiPatterns": [
            "{ sync: { interval: -1 } }"
          ]
        },
        "data-validation": {
          "id": "data-validation",
          "title": "Validacao de Dados",
          "description": "Configuração de data.validation.* e rules[]",
          "rules": [
            "rules[].type deve ser required/format/range/custom.",
            "params deve conter dados compatíveis com o tipo.",
            "showInlineErrors deve ser boolean."
          ],
          "examples": [
            "{ data: { validation: { clientSide: true, serverSide: false, showInlineErrors: true, rules: [{ field: \"email\", type: \"format\", params: { format: \"email\" }, message: \"Email invalido\" }] } } }"
          ],
          "antiPatterns": [
            "{ validation: { rules: [{ type: \"regex\" }] } }"
          ]
        },
        "data-transformations": {
          "id": "data-transformations",
          "title": "Transformacoes de Dados",
          "description": "Configuração de data.transformations[]",
          "rules": [
            "transform deve ser uma string suportada pelo sistema, não funcao JS.",
            "applyTo deve ser display/data/both."
          ],
          "examples": [
            "{ data: { transformations: [{ id: \"t1\", field: \"amount\", type: \"format\", transform: \"currency\", applyTo: \"display\" }] } }"
          ],
          "antiPatterns": [
            "{ transformations: [{ transform: \"row => row.amount\" }] }"
          ]
        },
        "data-polling": {
          "id": "data-polling",
          "title": "Polling",
          "description": "Configuração de data.polling.*",
          "rules": [
            "interval deve ser em ms e razoavel.",
            "exponentialBackoff deve ser boolean."
          ],
          "examples": [
            "{ data: { polling: { enabled: true, interval: 30000, onlyWhenActive: true, exponentialBackoff: true } } }"
          ],
          "antiPatterns": [
            "{ polling: { interval: 100 } }"
          ]
        },
        "performance-virtualization": {
          "id": "performance-virtualization",
          "title": "Performance Virtualization",
          "description": "Configuração de performance.virtualization.*",
          "rules": [
            "itemHeight deve ser informado quando enabled.",
            "strategy deve ser fixed/dynamic."
          ],
          "examples": [
            "{ performance: { virtualization: { enabled: true, itemHeight: 48 } } }"
          ],
          "antiPatterns": [
            "{ performance: { virtualization: { enabled: true } } }"
          ]
        },
        "performance-debounce": {
          "id": "performance-debounce",
          "title": "Performance Debounce",
          "description": "Configuração de performance.debounce.*",
          "rules": [
            "valores devem estar em ms (ex.: 200-500)."
          ],
          "examples": [
            "{ performance: { debounce: { search: 300, filter: 300, resize: 200, scroll: 200 } } }"
          ],
          "antiPatterns": [
            "{ debounce: { search: -1 } }"
          ]
        },
        "performance-memory": {
          "id": "performance-memory",
          "title": "Performance Memory",
          "description": "Configuração de performance.memory.*",
          "rules": [
            "maxRows deve limitar o volume em memoria.",
            "cleanupInterval deve ser em ms."
          ],
          "examples": [
            "{ performance: { memory: { maxRows: 5000, autoCleanup: true, cleanupInterval: 60000 } } }"
          ],
          "antiPatterns": [
            "{ memory: { maxRows: 0 } }"
          ]
        },
        "performance-rendering": {
          "id": "performance-rendering",
          "title": "Performance Rendering",
          "description": "Configuração de performance.rendering.*",
          "rules": [
            "batchUpdates true requer batchSize coerente.",
            "optimizeReRenders melhora atualizações frequentes."
          ],
          "examples": [
            "{ performance: { rendering: { useRAF: true, batchUpdates: true, batchSize: 50, optimizeReRenders: true } } }"
          ],
          "antiPatterns": [
            "{ rendering: { batchSize: 0 } }"
          ]
        },
        "performance-lazy-loading": {
          "id": "performance-lazy-loading",
          "title": "Performance Lazy Loading",
          "description": "Configuração de performance.lazyLoading.*",
          "rules": [
            "threshold deve ser numero positivo.",
            "components e images devem ser boolean."
          ],
          "examples": [
            "{ performance: { lazyLoading: { images: true, components: true, threshold: 200 } } }"
          ],
          "antiPatterns": [
            "{ lazyLoading: { threshold: -1 } }"
          ]
        },
        "accessibility-core": {
          "id": "accessibility-core",
          "title": "Acessibilidade",
          "description": "Configuração base de accessibility.*",
          "rules": [
            "enabled deve ser true em apps com requisitos a11y.",
            "reduceMotion deve desativar animacoes nao essenciais."
          ],
          "examples": [
            "{ accessibility: { enabled: true, reduceMotion: true } }"
          ],
          "antiPatterns": [
            "{ accessibility: { enabled: true, reduceMotion: \"yes\" } }"
          ]
        },
        "accessibility-announcements": {
          "id": "accessibility-announcements",
          "title": "Acessibilidade Anuncios",
          "description": "Configuração de accessibility.announcements.*",
          "rules": [
            "dataChanges, userActions e loadingStates devem ser boolean.",
            "liveRegion deve ser polite ou assertive."
          ],
          "examples": [
            "{ accessibility: { announcements: { dataChanges: true, userActions: true, loadingStates: true, liveRegion: \"polite\" } } }"
          ],
          "antiPatterns": [
            "{ announcements: { liveRegion: \"loud\" } }"
          ]
        },
        "accessibility-keyboard": {
          "id": "accessibility-keyboard",
          "title": "Acessibilidade Teclado",
          "description": "Configuração de accessibility.keyboard.*",
          "rules": [
            "tabNavigation e arrowNavigation devem ser boolean.",
            "shortcuts e skipLinks devem ser boolean.",
            "focusTrap deve ser boolean."
          ],
          "examples": [
            "{ accessibility: { keyboard: { tabNavigation: true, arrowNavigation: true, shortcuts: true, skipLinks: true, focusTrap: false } } }"
          ],
          "antiPatterns": [
            "{ keyboard: { tabNavigation: \"yes\" } }"
          ]
        },
        "accessibility-aria-labels": {
          "id": "accessibility-aria-labels",
          "title": "Acessibilidade ARIA",
          "description": "Configuração de accessibility.ariaLabels.*",
          "rules": [
            "ariaLabels deve mapear chaves conhecidas para textos curtos."
          ],
          "examples": [
            "{ accessibility: { ariaLabels: { table: \"Tabela de pedidos\" } } }"
          ],
          "antiPatterns": [
            "{ ariaLabels: { table: \"\" } }"
          ]
        },
        "theme-core": {
          "id": "theme-core",
          "title": "Tema Base",
          "description": "Configuração de theme.primary/secondary/darkMode.",
          "rules": [
            "primary e secondary devem ser cores validas (hex ou token).",
            "darkMode deve ser boolean."
          ],
          "examples": [
            "{ theme: { primary: \"#1976d2\", secondary: \"#ff9800\" } }"
          ],
          "antiPatterns": [
            "{ theme: { primary: \"blue\" } }"
          ]
        },
        "theme-custom": {
          "id": "theme-custom",
          "title": "Tema Customizado",
          "description": "Configuração de theme.custom e theme.cssVariables.",
          "rules": [
            "cssVariables deve usar nomes CSS validos (ex.: --table-bg).",
            "custom deve ser mapa simples de tokens."
          ],
          "examples": [
            "{ theme: { custom: { headerBg: \"var(--md-sys-color-surface-container)\" }, cssVariables: { \"--table-bg\": \"var(--md-sys-color-surface)\" } } }"
          ],
          "antiPatterns": [
            "{ theme: { cssVariables: { \"table-bg\": \"var(--md-sys-color-surface)\" } } }"
          ]
        },
        "plugins": {
          "id": "plugins",
          "title": "Plugins",
          "description": "Configuração de plugins[].",
          "rules": [
            "plugins[].id, name e version sao obrigatorios.",
            "hooks deve mapear eventos para handlers conhecidos."
          ],
          "examples": [
            "{ plugins: [{ id: \"audit\", name: \"Audit Logger\", version: \"1.2.0\", enabled: true }] }"
          ],
          "antiPatterns": [
            "{ plugins: [{ name: \"Audit\" }] }"
          ]
        },
        "editor-extras": {
          "id": "editor-extras",
          "title": "Extras do Editor",
          "description": "Envelope de autoria usado pelo editor e pelo playground.",
          "rules": [
            "bindings.resourcePath deve ser path valido da API quando presente.",
            "config.meta.idField deve refletir a chave primaria quando configurado.",
            "bindings.horizontalScroll deve ser auto/wrap/none."
          ],
          "examples": [
            "{ kind: \"praxis.table.editor\", version: 1, config: { meta: { idField: \"employeeId\" }, columns: [] }, bindings: { resourcePath: \"/api/employees\", horizontalScroll: \"auto\" } }"
          ],
          "antiPatterns": [
            "{ kind: \"praxis.table.editor\", version: 1, config: { columns: [] }, bindings: { horizontalScroll: \"left\" } }"
          ]
        }
      },
      "authoringManifest": {
        "schemaVersion": "1.0.0",
        "componentId": "praxis-table",
        "ownerPackage": "@praxisui/table",
        "configSchemaId": "TableConfig",
        "manifestVersion": "2.2.5",
        "runtimeInputs": [
          {
            "name": "config",
            "type": "TableConfig",
            "description": "Configuração completa da tabela"
          },
          {
            "name": "data",
            "type": "any[]",
            "description": "Dados a serem exibidos (modo client-side)"
          },
          {
            "name": "resourcePath",
            "type": "string",
            "description": "Caminho do recurso (API base)"
          },
          {
            "name": "queryContext",
            "type": "PraxisDataQueryContext",
            "description": "Contexto de consulta declarativo"
          },
          {
            "name": "title",
            "type": "string",
            "description": "Título da tabela"
          },
          {
            "name": "subtitle",
            "type": "string",
            "description": "Subtítulo da tabela"
          },
          {
            "name": "enableCustomization",
            "type": "boolean",
            "description": "Habilita modo de edição"
          },
          {
            "name": "authoringCapability",
            "type": "string",
            "description": "Capability pública do contexto corporativo exigida para materializar authoring governado."
          }
        ],
        "editableTargets": [
          {
            "kind": "column",
            "resolver": "column-by-field",
            "description": "Colunas base da tabela"
          },
          {
            "kind": "columnProjection",
            "resolver": "schema-column-projection",
            "description": "Projecao de colunas derivada do schema com overrides editoriais"
          },
          {
            "kind": "computedColumn",
            "resolver": "column-by-field",
            "description": "Colunas calculadas"
          },
          {
            "kind": "renderer",
            "resolver": "renderer-in-column",
            "description": "Renderizador de célula"
          },
          {
            "kind": "conditionalRenderer",
            "resolver": "conditional-renderer-in-column",
            "description": "Renderizadores condicionais"
          },
          {
            "kind": "rowAction",
            "resolver": "action-in-row-config",
            "description": "Ações por linha"
          },
          {
            "kind": "toolbarAction",
            "resolver": "action-in-toolbar-config",
            "description": "Ações na barra de ferramentas"
          },
          {
            "kind": "toolbar",
            "resolver": "toolbar-config",
            "description": "Configuração da barra de ferramentas"
          },
          {
            "kind": "filter",
            "resolver": "filter-config",
            "description": "Configuração de filtragem"
          },
          {
            "kind": "grouping",
            "resolver": "grouping-config",
            "description": "Configuração de agrupamento"
          },
          {
            "kind": "selection",
            "resolver": "selection-config",
            "description": "Configuração de seleção"
          },
          {
            "kind": "export",
            "resolver": "export-config",
            "description": "Configuração de exportação"
          },
          {
            "kind": "appearance",
            "resolver": "appearance-config",
            "description": "Configurações visuais"
          },
          {
            "kind": "expansion",
            "resolver": "expansion-config",
            "description": "Configuração de detalhe/expansão"
          },
          {
            "kind": "rule",
            "resolver": "style-rule-in-column-or-row",
            "description": "Regras de estilo ou comportamento"
          },
          {
            "kind": "meta",
            "resolver": "table-meta-config",
            "description": "Metadados da configuracao"
          },
          {
            "kind": "bulkAction",
            "resolver": "action-in-bulk-config",
            "description": "Acoes em lote"
          },
          {
            "kind": "contextAction",
            "resolver": "action-in-context-config",
            "description": "Acoes de menu contextual"
          },
          {
            "kind": "pagination",
            "resolver": "pagination-config",
            "description": "Configuracao de paginacao"
          },
          {
            "kind": "sorting",
            "resolver": "sorting-config",
            "description": "Configuracao de ordenacao"
          },
          {
            "kind": "interaction",
            "resolver": "interaction-config",
            "description": "Configuracao de interacao"
          },
          {
            "kind": "loading",
            "resolver": "loading-config",
            "description": "Estados de carregamento"
          },
          {
            "kind": "emptyState",
            "resolver": "empty-state-config",
            "description": "Estado vazio"
          },
          {
            "kind": "aiAssistant",
            "resolver": "ai-assistant-config",
            "description": "Config path ai.assistant.enabled controlling the embedded table AI assistant entrypoint and session."
          },
          {
            "kind": "resizing",
            "resolver": "resizing-config",
            "description": "Redimensionamento de colunas"
          },
          {
            "kind": "dragging",
            "resolver": "dragging-config",
            "description": "Reorganizacao por drag and drop"
          },
          {
            "kind": "editing",
            "resolver": "editing-config",
            "description": "Modo de edicao"
          },
          {
            "kind": "messages",
            "resolver": "messages-config",
            "description": "Mensagens da tabela"
          },
          {
            "kind": "localization",
            "resolver": "localization-config",
            "description": "Localizacao e formatos regionais"
          },
          {
            "kind": "performance",
            "resolver": "performance-config",
            "description": "Configuracoes de performance"
          },
          {
            "kind": "data",
            "resolver": "data-config",
            "description": "Configuracoes de dados"
          },
          {
            "kind": "runtimeOperation",
            "resolver": "table-runtime-operation-contract",
            "description": "Operacoes runtime revisaveis sem mutar a configuracao persistida"
          },
          {
            "kind": "accessibility",
            "resolver": "accessibility-config",
            "description": "Acessibilidade"
          }
        ],
        "operations": [
          {
            "operationId": "column.projection.configure",
            "title": "Usar colunas governadas pelo schema",
            "description": "Mantem /schemas/filtered como fonte estrutural das colunas e registra somente diferencas editoriais por nome canonico de campo. Nao use para inventar campos ou contornar metadata ausente.",
            "scope": "global",
            "targetKind": "columnProjection",
            "target": {
              "kind": "columnProjection",
              "resolver": "schema-column-projection",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "source"
              ],
              "additionalProperties": false,
              "properties": {
                "source": {
                  "const": "schema"
                },
                "include": {
                  "type": "array",
                  "uniqueItems": true,
                  "items": {
                    "type": "string",
                    "minLength": 1
                  },
                  "description": "Allowlist ordenada de campos canonicos. Recomendada para dados sensiveis ou quando a pagina precisa de uma projecao focada."
                },
                "overrides": {
                  "type": "object",
                  "description": "Mapa indexado pelo nome canonico do campo. O objeto de override nao pode conter field.",
                  "additionalProperties": {
                    "type": "object",
                    "not": {
                      "required": [
                        "field"
                      ]
                    }
                  }
                },
                "additions": {
                  "type": "array",
                  "description": "Colunas editoriais sem correspondente no schema, normalmente derivadas pelo round-trip de colunas computadas. Uma adicao nunca substitui um campo canonico.",
                  "items": {
                    "type": "object",
                    "required": [
                      "field"
                    ],
                    "properties": {
                      "field": {
                        "type": "string",
                        "minLength": 1
                      },
                      "header": {
                        "type": [
                          "string",
                          "object"
                        ]
                      },
                      "type": {
                        "enum": [
                          "string",
                          "number",
                          "date",
                          "boolean",
                          "currency",
                          "percentage",
                          "custom"
                        ]
                      }
                    }
                  }
                }
              }
            },
            "effects": [
              {
                "kind": "set-value",
                "path": "columnProjection"
              }
            ],
            "validators": [
              "schema-column-override-field-immutable",
              "editor-round-trip-preserve"
            ],
            "affectedPaths": [
              "columnProjection"
            ],
            "submissionImpact": "affects-schema-backed-data",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "column.add",
            "title": "Adicionar coluna",
            "scope": "global",
            "targetKind": "column",
            "target": {
              "kind": "column",
              "resolver": "column-by-field",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "field",
                "header"
              ],
              "properties": {
                "field": {
                  "type": "string"
                },
                "header": {
                  "type": "string"
                },
                "type": {
                  "enum": [
                    "string",
                    "number",
                    "date",
                    "boolean",
                    "currency",
                    "percentage",
                    "custom"
                  ],
                  "default": "string"
                }
              }
            },
            "effects": [
              {
                "kind": "append-unique",
                "path": "columns[]",
                "key": "field"
              }
            ],
            "validators": [
              "column-field-unique"
            ],
            "affectedPaths": [
              "columns[]"
            ],
            "submissionImpact": "affects-schema-backed-data",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "column.remove",
            "title": "Remover coluna",
            "scope": "column",
            "targetKind": "column",
            "target": {
              "kind": "column",
              "resolver": "column-by-field",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "properties": {}
            },
            "effects": [
              {
                "kind": "remove-by-key",
                "path": "columns[]",
                "key": "field"
              }
            ],
            "destructive": true,
            "requiresConfirmation": true,
            "validators": [
              "destructive-removal-confirmation"
            ],
            "affectedPaths": [
              "columns[]"
            ],
            "submissionImpact": "affects-schema-backed-data",
            "preconditions": [
              "config-initialized",
              "target-exists"
            ]
          },
          {
            "operationId": "column.header.set",
            "title": "Renomear o título da coluna sem alterar valores das células",
            "scope": "column",
            "targetKind": "column",
            "target": {
              "kind": "column",
              "resolver": "column-by-field",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "header"
              ],
              "properties": {
                "header": {
                  "type": "string",
                  "minLength": 1
                }
              }
            },
            "effects": [
              {
                "kind": "merge-by-key",
                "path": "columns[]",
                "key": "field"
              }
            ],
            "validators": [
              "target-column-exists"
            ],
            "affectedPaths": [
              "columns[].header"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized",
              "target-exists"
            ]
          },
          {
            "operationId": "column.type.set",
            "title": "Definir tipo de dado",
            "scope": "column",
            "targetKind": "column",
            "target": {
              "kind": "column",
              "resolver": "column-by-field",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "enum": [
                    "string",
                    "number",
                    "date",
                    "boolean",
                    "currency",
                    "percentage",
                    "custom"
                  ]
                }
              }
            },
            "effects": [
              {
                "kind": "merge-by-key",
                "path": "columns[]",
                "key": "field"
              }
            ],
            "validators": [
              "target-column-exists"
            ],
            "affectedPaths": [
              "columns[].type"
            ],
            "submissionImpact": "affects-schema-backed-data",
            "preconditions": [
              "config-initialized",
              "target-exists"
            ]
          },
          {
            "operationId": "column.format.set",
            "title": "Definir formato",
            "description": "Define o preset de apresentação e materializa o tipo visual compatível quando o formato é moeda, percentual, data ou booleano, preservando os demais atributos da coluna.",
            "scope": "column",
            "targetKind": "column",
            "target": {
              "kind": "column",
              "resolver": "column-by-field",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "format"
              ],
              "properties": {
                "format": {
                  "type": "string",
                  "enum": [
                    "shortDate",
                    "mediumDate",
                    "longDate",
                    "fullDate",
                    "MMM/yyyy",
                    "shortTime",
                    "short",
                    "yyyy-MM-dd",
                    "dd/MM/yyyy",
                    "yyyy-MM-dd HH:mm",
                    "1.0-0",
                    "1.1-1",
                    "1.2-2",
                    "1.0-3",
                    "1.0-0|nosep",
                    "BRL|symbol|2",
                    "USD|symbol|2",
                    "EUR|symbol|2",
                    "BRL|code|2",
                    "USD|code|0",
                    "BRL|symbol|2|nosep",
                    "EUR|symbol|2|nosep",
                    "1.0-0|x100",
                    "1.1-1|x100",
                    "1.2-2|x100",
                    "none",
                    "uppercase",
                    "lowercase",
                    "titlecase",
                    "capitalize",
                    "uppercase|truncate|50|...",
                    "000.000.000-00",
                    "true-false",
                    "yes-no",
                    "active-inactive",
                    "on-off",
                    "enabled-disabled",
                    "custom|Sim|Nao"
                  ],
                  "description": "Preset canÃ´nico do DataFormattingService."
                }
              }
            },
            "effects": [
              {
                "kind": "compile-domain-patch",
                "handler": "table-column-format-set",
                "path": "columns[]"
              }
            ],
            "validators": [
              "target-column-exists",
              "format-preset-supported",
              "editor-round-trip-preserve"
            ],
            "affectedPaths": [
              "columns[].format",
              "columns[].type"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized",
              "target-exists"
            ]
          },
          {
            "operationId": "column.width.set",
            "title": "Definir largura da coluna",
            "scope": "column",
            "targetKind": "column",
            "target": {
              "kind": "column",
              "resolver": "column-by-field",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "width"
              ],
              "properties": {
                "width": {
                  "type": "string",
                  "pattern": "^(auto|\\d+(px|%|rem|em))$"
                }
              }
            },
            "effects": [
              {
                "kind": "merge-by-key",
                "path": "columns[]",
                "key": "field"
              }
            ],
            "validators": [
              "target-column-exists",
              "column-width-valid"
            ],
            "affectedPaths": [
              "columns[].width"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized",
              "target-exists"
            ]
          },
          {
            "operationId": "column.align.set",
            "title": "Definir alinhamento da coluna",
            "scope": "column",
            "targetKind": "column",
            "target": {
              "kind": "column",
              "resolver": "column-by-field",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "align"
              ],
              "properties": {
                "align": {
                  "enum": [
                    "left",
                    "center",
                    "right"
                  ]
                }
              }
            },
            "effects": [
              {
                "kind": "merge-by-key",
                "path": "columns[]",
                "key": "field"
              }
            ],
            "validators": [
              "target-column-exists"
            ],
            "affectedPaths": [
              "columns[].align"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized",
              "target-exists"
            ]
          },
          {
            "operationId": "column.sticky.set",
            "title": "Fixar coluna durante a rolagem sem reordená-la",
            "description": "Mantém a coluna visível em uma extremidade durante a rolagem horizontal. Não altera sua posição na sequência de colunas; pedidos para mover, reordenar ou colocar uma coluna no início pertencem a column.order.set.",
            "scope": "column",
            "targetKind": "column",
            "target": {
              "kind": "column",
              "resolver": "column-by-field",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "sticky"
              ],
              "properties": {
                "sticky": {
                  "enum": [
                    "start",
                    "end",
                    true,
                    false
                  ]
                }
              }
            },
            "effects": [
              {
                "kind": "merge-by-key",
                "path": "columns[]",
                "key": "field"
              }
            ],
            "validators": [
              "target-column-exists"
            ],
            "affectedPaths": [
              "columns[].sticky"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized",
              "target-exists"
            ]
          },
          {
            "operationId": "column.sortable.set",
            "title": "Definir ordenação da coluna",
            "scope": "column",
            "targetKind": "column",
            "target": {
              "kind": "column",
              "resolver": "column-by-field",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "sortable"
              ],
              "properties": {
                "sortable": {
                  "type": "boolean"
                }
              }
            },
            "effects": [
              {
                "kind": "merge-by-key",
                "path": "columns[]",
                "key": "field"
              }
            ],
            "validators": [
              "target-column-exists"
            ],
            "affectedPaths": [
              "columns[].sortable"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized",
              "target-exists"
            ]
          },
          {
            "operationId": "column.filterable.set",
            "title": "Definir filtro da coluna",
            "scope": "column",
            "targetKind": "column",
            "target": {
              "kind": "column",
              "resolver": "column-by-field",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "filterable"
              ],
              "properties": {
                "filterable": {
                  "type": "boolean"
                }
              }
            },
            "effects": [
              {
                "kind": "merge-by-key",
                "path": "columns[]",
                "key": "field"
              }
            ],
            "validators": [
              "target-column-exists"
            ],
            "affectedPaths": [
              "columns[].filterable"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized",
              "target-exists"
            ]
          },
          {
            "operationId": "column.style.set",
            "title": "Definir estilo da célula",
            "scope": "column",
            "targetKind": "column",
            "target": {
              "kind": "column",
              "resolver": "column-by-field",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "style"
              ],
              "properties": {
                "style": {
                  "type": "string"
                }
              }
            },
            "effects": [
              {
                "kind": "merge-by-key",
                "path": "columns[]",
                "key": "field"
              }
            ],
            "validators": [
              "target-column-exists",
              "css-style-safe"
            ],
            "affectedPaths": [
              "columns[].style"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized",
              "target-exists"
            ]
          },
          {
            "operationId": "column.headerStyle.set",
            "title": "Definir estilo do cabeçalho",
            "scope": "column",
            "targetKind": "column",
            "target": {
              "kind": "column",
              "resolver": "column-by-field",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "headerStyle"
              ],
              "properties": {
                "headerStyle": {
                  "type": "string"
                }
              }
            },
            "effects": [
              {
                "kind": "merge-by-key",
                "path": "columns[]",
                "key": "field"
              }
            ],
            "validators": [
              "target-column-exists",
              "css-style-safe"
            ],
            "affectedPaths": [
              "columns[].headerStyle"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized",
              "target-exists"
            ]
          },
          {
            "operationId": "column.valueMapping.set",
            "title": "Mapear valores exibidos nas células sem renomear a coluna",
            "scope": "column",
            "targetKind": "column",
            "target": {
              "kind": "column",
              "resolver": "column-by-field",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "valueMapping"
              ],
              "properties": {
                "valueMapping": {
                  "type": "object",
                  "minProperties": 1
                }
              }
            },
            "effects": [
              {
                "kind": "merge-by-key",
                "path": "columns[]",
                "key": "field"
              }
            ],
            "validators": [
              "target-column-exists",
              "value-mapping-valid"
            ],
            "affectedPaths": [
              "columns[].valueMapping"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized",
              "target-exists"
            ]
          },
          {
            "operationId": "column.order.set",
            "title": "Mover coluna inteira sem alterar o conteúdo da célula",
            "description": "Altera a posição visual da coluna na sequência. Use order 0 para colocá-la no início; use esta operação para mover ou reordenar ao início, ao fim, antes ou depois de outra coluna. Não fixa a coluna durante a rolagem; essa é a responsabilidade de column.sticky.set.",
            "scope": "column",
            "targetKind": "column",
            "target": {
              "kind": "column",
              "resolver": "column-by-field",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "order"
              ],
              "properties": {
                "order": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "Índice visual absoluto da coluna; 0 representa a primeira posição."
                }
              }
            },
            "effects": [
              {
                "kind": "compile-domain-patch",
                "handler": "table-column-order-set",
                "path": "columns[]"
              }
            ],
            "validators": [
              "target-column-exists",
              "editor-round-trip-preserve"
            ],
            "affectedPaths": [
              "columns[].order"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized",
              "target-exists"
            ]
          },
          {
            "operationId": "column.visibility.set",
            "title": "Mostrar ou ocultar coluna independente sem excluí-la",
            "description": "Altera somente a visibilidade da coluna-alvo. Quando um pedido incorpora o conteúdo de uma coluna em outra célula e também diz que a coluna de origem não deve continuar separada, esta operação complementa a composição do renderer.",
            "scope": "column",
            "targetKind": "column",
            "target": {
              "kind": "column",
              "resolver": "column-by-field",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "visible"
              ],
              "properties": {
                "visible": {
                  "type": "boolean"
                }
              }
            },
            "effects": [
              {
                "kind": "merge-by-key",
                "path": "columns[]",
                "key": "field"
              }
            ],
            "validators": [
              "target-column-exists"
            ],
            "affectedPaths": [
              "columns[].visible"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized",
              "target-exists"
            ]
          },
          {
            "operationId": "column.computed.add",
            "title": "Adicionar coluna calculada",
            "scope": "global",
            "targetKind": "computedColumn",
            "target": {
              "kind": "computedColumn",
              "resolver": "column-by-field",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "field",
                "header",
                "expression"
              ],
              "properties": {
                "field": {
                  "type": "string",
                  "description": "Stable camelCase field id for the new computed column. When the user supplies a header/name, derive this id from that header instead of asking for clarification."
                },
                "header": {
                  "type": "string",
                  "description": "User-facing label for the computed column."
                },
                "expression": {
                  "type": "object",
                  "description": "AST Json Logic"
                },
                "outputType": {
                  "enum": [
                    "string",
                    "number",
                    "date",
                    "boolean",
                    "currency",
                    "percentage",
                    "custom"
                  ]
                }
              }
            },
            "effects": [
              {
                "kind": "append-unique",
                "path": "columns[]",
                "key": "field"
              }
            ],
            "validators": [
              "column-field-unique",
              "computed-expression-valid"
            ],
            "affectedPaths": [
              "columns[]"
            ],
            "submissionImpact": "affects-schema-backed-data",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "column.renderer.set",
            "title": "Compor ou definir o conteúdo visual dentro da célula",
            "description": "Define ou substitui o renderer raiz da célula. Para mudar somente direção, alinhamento, espaçamento ou quebra de um compose existente, use column.renderer.composeLayout.set. Para mudar somente tamanho, forma ou outra propriedade de um item existente, use column.renderer.composeItem.set. Esta operação não oculta uma coluna de origem; quando o mesmo pedido exige que essa origem deixe de aparecer separadamente, combine-a com column.visibility.set.",
            "scope": "column",
            "targetKind": "renderer",
            "target": {
              "kind": "renderer",
              "resolver": "renderer-in-column",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "description": "Renderizador visual. Quando a intencao pedir chip, use type \"chip\" e configure chip; efeitos iconBadge materializam badge, nao chip. Ao refinar um compose existente, copie seus itens atuais e altere somente tamanho, forma, direção ou outra propriedade explicitamente solicitada.",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "enum": [
                    "icon",
                    "image",
                    "badge",
                    "link",
                    "button",
                    "chip",
                    "progress",
                    "avatar",
                    "toggle",
                    "menu",
                    "rating",
                    "microVisualization",
                    "html",
                    "compose"
                  ]
                },
                "typeExpr": {
                  "type": "string"
                },
                "button": {
                  "type": "object",
                  "required": [
                    "action"
                  ],
                  "properties": {
                    "label": {
                      "type": "string"
                    },
                    "labelField": {
                      "type": "string"
                    },
                    "icon": {
                      "type": "string"
                    },
                    "color": {
                      "enum": [
                        "primary",
                        "accent",
                        "warn"
                      ]
                    },
                    "variant": {
                      "enum": [
                        "filled",
                        "outlined",
                        "text"
                      ]
                    },
                    "size": {
                      "enum": [
                        "sm",
                        "md",
                        "lg"
                      ]
                    },
                    "ariaLabel": {
                      "type": "string"
                    },
                    "disabledCondition": {
                      "type": "object",
                      "description": "AST Json Logic"
                    },
                    "action": {
                      "type": "object",
                      "required": [
                        "id"
                      ],
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "payloadExpr": {
                          "type": "string"
                        }
                      }
                    }
                  }
                },
                "menu": {
                  "type": "object",
                  "required": [
                    "itemsExpr"
                  ],
                  "properties": {
                    "itemsExpr": {
                      "type": "string"
                    },
                    "ariaLabel": {
                      "type": "string"
                    }
                  }
                },
                "link": {
                  "type": "object",
                  "anyOf": [
                    {
                      "required": [
                        "href"
                      ]
                    },
                    {
                      "required": [
                        "hrefField"
                      ]
                    }
                  ],
                  "properties": {
                    "text": {
                      "type": "string"
                    },
                    "textField": {
                      "type": "string"
                    },
                    "href": {
                      "type": "string"
                    },
                    "hrefField": {
                      "type": "string"
                    },
                    "target": {
                      "enum": [
                        "_blank",
                        "_self",
                        "_parent",
                        "_top"
                      ]
                    },
                    "rel": {
                      "type": "string"
                    }
                  }
                },
                "progress": {
                  "type": "object",
                  "required": [
                    "valueExpr"
                  ],
                  "properties": {
                    "valueExpr": {
                      "type": "string"
                    },
                    "color": {
                      "type": "string"
                    },
                    "showLabel": {
                      "type": "boolean"
                    }
                  }
                },
                "badge": {
                  "type": "object",
                  "anyOf": [
                    {
                      "required": [
                        "text"
                      ]
                    },
                    {
                      "required": [
                        "textField"
                      ]
                    }
                  ],
                  "properties": {
                    "text": {
                      "type": "string"
                    },
                    "textField": {
                      "type": "string"
                    },
                    "color": {
                      "enum": [
                        "primary",
                        "accent",
                        "warn",
                        "danger",
                        "success",
                        "info",
                        "basic"
                      ]
                    },
                    "variant": {
                      "enum": [
                        "filled",
                        "outlined",
                        "soft",
                        "plain"
                      ]
                    },
                    "icon": {
                      "type": "string"
                    },
                    "tooltip": {
                      "type": "object",
                      "properties": {
                        "text": {
                          "type": "string"
                        },
                        "position": {
                          "enum": [
                            "top",
                            "right",
                            "bottom",
                            "left"
                          ]
                        },
                        "bgColor": {
                          "type": "string"
                        },
                        "delayMs": {
                          "type": "number"
                        }
                      }
                    }
                  }
                },
                "chip": {
                  "type": "object",
                  "anyOf": [
                    {
                      "required": [
                        "text"
                      ]
                    },
                    {
                      "required": [
                        "textField"
                      ]
                    }
                  ],
                  "properties": {
                    "text": {
                      "type": "string"
                    },
                    "textField": {
                      "type": "string"
                    },
                    "color": {
                      "enum": [
                        "primary",
                        "accent",
                        "warn",
                        "danger",
                        "success",
                        "info",
                        "basic"
                      ]
                    },
                    "variant": {
                      "enum": [
                        "filled",
                        "outlined"
                      ]
                    },
                    "icon": {
                      "type": "string"
                    },
                    "tooltip": {
                      "type": "object",
                      "properties": {
                        "text": {
                          "type": "string"
                        },
                        "position": {
                          "enum": [
                            "top",
                            "right",
                            "bottom",
                            "left"
                          ]
                        },
                        "bgColor": {
                          "type": "string"
                        },
                        "delayMs": {
                          "type": "number"
                        }
                      }
                    }
                  }
                },
                "icon": {
                  "type": "object",
                  "anyOf": [
                    {
                      "required": [
                        "name"
                      ]
                    },
                    {
                      "required": [
                        "nameField"
                      ]
                    }
                  ],
                  "properties": {
                    "name": {
                      "type": "string"
                    },
                    "nameField": {
                      "type": "string"
                    },
                    "text": {
                      "type": "string"
                    },
                    "textField": {
                      "type": "string"
                    },
                    "prefix": {
                      "type": "string"
                    },
                    "suffix": {
                      "type": "string"
                    },
                    "color": {
                      "type": "string"
                    },
                    "size": {
                      "type": "number"
                    },
                    "ariaLabel": {
                      "type": "string"
                    }
                  }
                },
                "image": {
                  "type": "object",
                  "anyOf": [
                    {
                      "required": [
                        "src"
                      ]
                    },
                    {
                      "required": [
                        "srcField"
                      ]
                    }
                  ],
                  "properties": {
                    "src": {
                      "type": "string"
                    },
                    "srcField": {
                      "type": "string"
                    },
                    "alt": {
                      "type": "string"
                    },
                    "altField": {
                      "type": "string"
                    },
                    "width": {
                      "type": "number",
                      "description": "Largura visual em pixels; altere apenas quando o pedido mudar o tamanho da imagem."
                    },
                    "height": {
                      "type": "number",
                      "description": "Altura visual em pixels; para imagem quadrada, mantenha igual a width."
                    },
                    "shape": {
                      "enum": [
                        "square",
                        "rounded",
                        "circle"
                      ],
                      "description": "square não arredonda, rounded usa cantos arredondados e circle materializa um círculo."
                    },
                    "fit": {
                      "enum": [
                        "cover",
                        "contain"
                      ]
                    },
                    "lazy": {
                      "type": "boolean"
                    }
                  }
                },
                "avatar": {
                  "type": "object",
                  "anyOf": [
                    {
                      "required": [
                        "src"
                      ]
                    },
                    {
                      "required": [
                        "srcField"
                      ]
                    },
                    {
                      "required": [
                        "initialsField"
                      ]
                    },
                    {
                      "required": [
                        "initialsExpr"
                      ]
                    }
                  ],
                  "properties": {
                    "src": {
                      "type": "string"
                    },
                    "srcField": {
                      "type": "string"
                    },
                    "alt": {
                      "type": "string"
                    },
                    "altField": {
                      "type": "string"
                    },
                    "initialsField": {
                      "type": "string"
                    },
                    "initialsExpr": {
                      "type": "string"
                    },
                    "shape": {
                      "enum": [
                        "circle",
                        "square",
                        "rounded"
                      ],
                      "description": "circle é circular, square é quadrado e rounded é quadrado com cantos arredondados."
                    },
                    "size": {
                      "type": "number",
                      "description": "Tamanho visual do avatar em pixels; preserve os demais campos e itens do compose ao mudar apenas o tamanho."
                    },
                    "backgroundColor": {
                      "type": "string"
                    },
                    "textColor": {
                      "type": "string"
                    }
                  }
                },
                "toggle": {
                  "type": "object",
                  "required": [
                    "stateExpr",
                    "action"
                  ],
                  "properties": {
                    "stateExpr": {
                      "type": "string"
                    },
                    "disabledCondition": {
                      "type": "object",
                      "description": "AST Json Logic"
                    },
                    "ariaLabel": {
                      "type": "string"
                    },
                    "action": {
                      "type": "object",
                      "required": [
                        "id"
                      ],
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "payloadExpr": {
                          "type": "string"
                        }
                      }
                    }
                  }
                },
                "rating": {
                  "type": "object",
                  "required": [
                    "valueExpr"
                  ],
                  "properties": {
                    "valueExpr": {
                      "type": "string"
                    },
                    "max": {
                      "type": "number"
                    },
                    "color": {
                      "type": "string"
                    },
                    "outlineColor": {
                      "type": "string"
                    },
                    "size": {
                      "enum": [
                        "small",
                        "medium",
                        "large"
                      ]
                    },
                    "ariaLabel": {
                      "type": "string"
                    }
                  }
                },
                "microVisualization": {
                  "type": "object",
                  "required": [
                    "visualization"
                  ],
                  "properties": {
                    "visualization": {
                      "type": "object",
                      "description": "Expression properties accept a row path such as row.sla or a controlled formula prefixed with =, such as = row.sla.",
                      "required": [
                        "kind",
                        "fallbackText"
                      ],
                      "properties": {
                        "kind": {
                          "enum": [
                            "line",
                            "area",
                            "column",
                            "comparison",
                            "stackedBar",
                            "radial",
                            "harveyBall",
                            "bullet",
                            "delta",
                            "processFlow"
                          ],
                          "description": "Table-cell guidance: recommended for rapid scanning: delta, bullet, radial, harveyBall, stackedBar. Conditional: line, area and column require horizontal space; comparison increases row height; processFlow needs recognizable steps."
                        },
                        "surface": {
                          "const": "table-cell"
                        },
                        "size": {
                          "enum": [
                            "xs",
                            "sm",
                            "md",
                            "lg",
                            "responsive"
                          ]
                        },
                        "value": {},
                        "valueExpr": {
                          "type": "string"
                        },
                        "valueSuffix": {
                          "type": "string"
                        },
                        "valueSuffixExpr": {
                          "type": "string"
                        },
                        "total": {
                          "type": "number"
                        },
                        "totalExpr": {
                          "type": "string"
                        },
                        "target": {
                          "type": "number"
                        },
                        "targetExpr": {
                          "type": "string"
                        },
                        "baseline": {
                          "type": "number"
                        },
                        "baselineExpr": {
                          "type": "string"
                        },
                        "segments": {
                          "type": "array"
                        },
                        "segmentsExpr": {
                          "type": "string"
                        },
                        "points": {
                          "type": "array"
                        },
                        "pointsExpr": {
                          "type": "string"
                        },
                        "thresholds": {
                          "type": "array"
                        },
                        "thresholdsExpr": {
                          "type": "string"
                        },
                        "items": {
                          "type": "array"
                        },
                        "itemsExpr": {
                          "type": "string"
                        },
                        "tone": {
                          "enum": [
                            "neutral",
                            "info",
                            "success",
                            "warning",
                            "danger",
                            "critical"
                          ]
                        },
                        "toneExpr": {
                          "type": "string"
                        },
                        "ariaLabel": {
                          "type": "string"
                        },
                        "ariaLabelExpr": {
                          "type": "string"
                        },
                        "fallbackText": {
                          "type": "string"
                        },
                        "fallbackTextExpr": {
                          "type": "string"
                        }
                      },
                      "allOf": [
                        {
                          "if": {
                            "properties": {
                              "kind": {
                                "enum": [
                                  "delta",
                                  "bullet",
                                  "radial",
                                  "harveyBall"
                                ]
                              }
                            }
                          },
                          "then": {
                            "anyOf": [
                              {
                                "required": [
                                  "value"
                                ]
                              },
                              {
                                "required": [
                                  "valueExpr"
                                ]
                              }
                            ]
                          }
                        },
                        {
                          "if": {
                            "properties": {
                              "kind": {
                                "enum": [
                                  "line",
                                  "area",
                                  "column",
                                  "comparison"
                                ]
                              }
                            }
                          },
                          "then": {
                            "anyOf": [
                              {
                                "required": [
                                  "points"
                                ]
                              },
                              {
                                "required": [
                                  "pointsExpr"
                                ]
                              }
                            ]
                          }
                        },
                        {
                          "if": {
                            "properties": {
                              "kind": {
                                "const": "stackedBar"
                              }
                            }
                          },
                          "then": {
                            "anyOf": [
                              {
                                "required": [
                                  "segments"
                                ]
                              },
                              {
                                "required": [
                                  "segmentsExpr"
                                ]
                              }
                            ]
                          }
                        },
                        {
                          "if": {
                            "properties": {
                              "kind": {
                                "const": "processFlow"
                              }
                            }
                          },
                          "then": {
                            "anyOf": [
                              {
                                "required": [
                                  "items"
                                ]
                              },
                              {
                                "required": [
                                  "itemsExpr"
                                ]
                              }
                            ]
                          }
                        }
                      ]
                    }
                  }
                },
                "html": {
                  "type": "object",
                  "required": [
                    "template"
                  ],
                  "properties": {
                    "template": {
                      "type": "string"
                    },
                    "sanitize": {
                      "enum": [
                        "strict",
                        "basic"
                      ]
                    },
                    "emptyFallback": {
                      "type": "string"
                    }
                  }
                },
                "compose": {
                  "type": "object",
                  "description": "Composição de vários itens dentro da mesma célula. Em refinamentos, preserve os itens atuais e altere somente o atributo solicitado.",
                  "required": [
                    "items"
                  ],
                  "properties": {
                    "items": {
                      "type": "array",
                      "minItems": 1,
                      "items": {
                        "type": "object",
                        "description": "Item de uma célula composta. value mostra um campo da linha; os demais tipos exigem seu bloco de configuração homônimo.",
                        "required": [
                          "type"
                        ],
                        "properties": {
                          "type": {
                            "enum": [
                              "value",
                              "icon",
                              "image",
                              "badge",
                              "link",
                              "button",
                              "chip",
                              "progress",
                              "avatar",
                              "toggle",
                              "menu",
                              "rating",
                              "microVisualization",
                              "html"
                            ]
                          },
                          "field": {
                            "type": "string"
                          },
                          "textField": {
                            "type": "string"
                          },
                          "valueField": {
                            "type": "string"
                          },
                          "text": {
                            "type": "string"
                          },
                          "emphasis": {
                            "enum": [
                              "strong",
                              "subtle"
                            ],
                            "description": "Semantic hierarchy for a value item. Use strong for the primary value and subtle for supporting context; arbitrary CSS is not part of the compose contract."
                          },
                          "button": {
                            "type": "object",
                            "required": [
                              "action"
                            ],
                            "properties": {
                              "label": {
                                "type": "string"
                              },
                              "labelField": {
                                "type": "string"
                              },
                              "icon": {
                                "type": "string"
                              },
                              "color": {
                                "enum": [
                                  "primary",
                                  "accent",
                                  "warn"
                                ]
                              },
                              "variant": {
                                "enum": [
                                  "filled",
                                  "outlined",
                                  "text"
                                ]
                              },
                              "size": {
                                "enum": [
                                  "sm",
                                  "md",
                                  "lg"
                                ]
                              },
                              "ariaLabel": {
                                "type": "string"
                              },
                              "disabledCondition": {
                                "type": "object",
                                "description": "AST Json Logic"
                              },
                              "action": {
                                "type": "object",
                                "required": [
                                  "id"
                                ],
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "payloadExpr": {
                                    "type": "string"
                                  }
                                }
                              }
                            }
                          },
                          "menu": {
                            "type": "object",
                            "required": [
                              "itemsExpr"
                            ],
                            "properties": {
                              "itemsExpr": {
                                "type": "string"
                              },
                              "ariaLabel": {
                                "type": "string"
                              }
                            }
                          },
                          "link": {
                            "type": "object",
                            "anyOf": [
                              {
                                "required": [
                                  "href"
                                ]
                              },
                              {
                                "required": [
                                  "hrefField"
                                ]
                              }
                            ],
                            "properties": {
                              "text": {
                                "type": "string"
                              },
                              "textField": {
                                "type": "string"
                              },
                              "href": {
                                "type": "string"
                              },
                              "hrefField": {
                                "type": "string"
                              },
                              "target": {
                                "enum": [
                                  "_blank",
                                  "_self",
                                  "_parent",
                                  "_top"
                                ]
                              },
                              "rel": {
                                "type": "string"
                              }
                            }
                          },
                          "progress": {
                            "type": "object",
                            "required": [
                              "valueExpr"
                            ],
                            "properties": {
                              "valueExpr": {
                                "type": "string"
                              },
                              "color": {
                                "type": "string"
                              },
                              "showLabel": {
                                "type": "boolean"
                              }
                            }
                          },
                          "badge": {
                            "type": "object",
                            "anyOf": [
                              {
                                "required": [
                                  "text"
                                ]
                              },
                              {
                                "required": [
                                  "textField"
                                ]
                              }
                            ],
                            "properties": {
                              "text": {
                                "type": "string"
                              },
                              "textField": {
                                "type": "string"
                              },
                              "color": {
                                "enum": [
                                  "primary",
                                  "accent",
                                  "warn",
                                  "danger",
                                  "success",
                                  "info",
                                  "basic"
                                ]
                              },
                              "variant": {
                                "enum": [
                                  "filled",
                                  "outlined",
                                  "soft",
                                  "plain"
                                ]
                              },
                              "icon": {
                                "type": "string"
                              },
                              "tooltip": {
                                "type": "object",
                                "properties": {
                                  "text": {
                                    "type": "string"
                                  },
                                  "position": {
                                    "enum": [
                                      "top",
                                      "right",
                                      "bottom",
                                      "left"
                                    ]
                                  },
                                  "bgColor": {
                                    "type": "string"
                                  },
                                  "delayMs": {
                                    "type": "number"
                                  }
                                }
                              }
                            }
                          },
                          "chip": {
                            "type": "object",
                            "anyOf": [
                              {
                                "required": [
                                  "text"
                                ]
                              },
                              {
                                "required": [
                                  "textField"
                                ]
                              }
                            ],
                            "properties": {
                              "text": {
                                "type": "string"
                              },
                              "textField": {
                                "type": "string"
                              },
                              "color": {
                                "enum": [
                                  "primary",
                                  "accent",
                                  "warn",
                                  "danger",
                                  "success",
                                  "info",
                                  "basic"
                                ]
                              },
                              "variant": {
                                "enum": [
                                  "filled",
                                  "outlined"
                                ]
                              },
                              "icon": {
                                "type": "string"
                              },
                              "tooltip": {
                                "type": "object",
                                "properties": {
                                  "text": {
                                    "type": "string"
                                  },
                                  "position": {
                                    "enum": [
                                      "top",
                                      "right",
                                      "bottom",
                                      "left"
                                    ]
                                  },
                                  "bgColor": {
                                    "type": "string"
                                  },
                                  "delayMs": {
                                    "type": "number"
                                  }
                                }
                              }
                            }
                          },
                          "icon": {
                            "type": "object",
                            "anyOf": [
                              {
                                "required": [
                                  "name"
                                ]
                              },
                              {
                                "required": [
                                  "nameField"
                                ]
                              }
                            ],
                            "properties": {
                              "name": {
                                "type": "string"
                              },
                              "nameField": {
                                "type": "string"
                              },
                              "text": {
                                "type": "string"
                              },
                              "textField": {
                                "type": "string"
                              },
                              "prefix": {
                                "type": "string"
                              },
                              "suffix": {
                                "type": "string"
                              },
                              "color": {
                                "type": "string"
                              },
                              "size": {
                                "type": "number"
                              },
                              "ariaLabel": {
                                "type": "string"
                              }
                            }
                          },
                          "image": {
                            "type": "object",
                            "anyOf": [
                              {
                                "required": [
                                  "src"
                                ]
                              },
                              {
                                "required": [
                                  "srcField"
                                ]
                              }
                            ],
                            "properties": {
                              "src": {
                                "type": "string"
                              },
                              "srcField": {
                                "type": "string"
                              },
                              "alt": {
                                "type": "string"
                              },
                              "altField": {
                                "type": "string"
                              },
                              "width": {
                                "type": "number",
                                "description": "Largura visual em pixels; altere apenas quando o pedido mudar o tamanho da imagem."
                              },
                              "height": {
                                "type": "number",
                                "description": "Altura visual em pixels; para imagem quadrada, mantenha igual a width."
                              },
                              "shape": {
                                "enum": [
                                  "square",
                                  "rounded",
                                  "circle"
                                ],
                                "description": "square não arredonda, rounded usa cantos arredondados e circle materializa um círculo."
                              },
                              "fit": {
                                "enum": [
                                  "cover",
                                  "contain"
                                ]
                              },
                              "lazy": {
                                "type": "boolean"
                              }
                            }
                          },
                          "avatar": {
                            "type": "object",
                            "anyOf": [
                              {
                                "required": [
                                  "src"
                                ]
                              },
                              {
                                "required": [
                                  "srcField"
                                ]
                              },
                              {
                                "required": [
                                  "initialsField"
                                ]
                              },
                              {
                                "required": [
                                  "initialsExpr"
                                ]
                              }
                            ],
                            "properties": {
                              "src": {
                                "type": "string"
                              },
                              "srcField": {
                                "type": "string"
                              },
                              "alt": {
                                "type": "string"
                              },
                              "altField": {
                                "type": "string"
                              },
                              "initialsField": {
                                "type": "string"
                              },
                              "initialsExpr": {
                                "type": "string"
                              },
                              "shape": {
                                "enum": [
                                  "circle",
                                  "square",
                                  "rounded"
                                ],
                                "description": "circle é circular, square é quadrado e rounded é quadrado com cantos arredondados."
                              },
                              "size": {
                                "type": "number",
                                "description": "Tamanho visual do avatar em pixels; preserve os demais campos e itens do compose ao mudar apenas o tamanho."
                              },
                              "backgroundColor": {
                                "type": "string"
                              },
                              "textColor": {
                                "type": "string"
                              }
                            }
                          },
                          "toggle": {
                            "type": "object",
                            "required": [
                              "stateExpr",
                              "action"
                            ],
                            "properties": {
                              "stateExpr": {
                                "type": "string"
                              },
                              "disabledCondition": {
                                "type": "object",
                                "description": "AST Json Logic"
                              },
                              "ariaLabel": {
                                "type": "string"
                              },
                              "action": {
                                "type": "object",
                                "required": [
                                  "id"
                                ],
                                "properties": {
                                  "id": {
                                    "type": "string"
                                  },
                                  "payloadExpr": {
                                    "type": "string"
                                  }
                                }
                              }
                            }
                          },
                          "rating": {
                            "type": "object",
                            "required": [
                              "valueExpr"
                            ],
                            "properties": {
                              "valueExpr": {
                                "type": "string"
                              },
                              "max": {
                                "type": "number"
                              },
                              "color": {
                                "type": "string"
                              },
                              "outlineColor": {
                                "type": "string"
                              },
                              "size": {
                                "enum": [
                                  "small",
                                  "medium",
                                  "large"
                                ]
                              },
                              "ariaLabel": {
                                "type": "string"
                              }
                            }
                          },
                          "microVisualization": {
                            "type": "object",
                            "required": [
                              "visualization"
                            ],
                            "properties": {
                              "visualization": {
                                "type": "object",
                                "description": "Expression properties accept a row path such as row.sla or a controlled formula prefixed with =, such as = row.sla.",
                                "required": [
                                  "kind",
                                  "fallbackText"
                                ],
                                "properties": {
                                  "kind": {
                                    "enum": [
                                      "line",
                                      "area",
                                      "column",
                                      "comparison",
                                      "stackedBar",
                                      "radial",
                                      "harveyBall",
                                      "bullet",
                                      "delta",
                                      "processFlow"
                                    ],
                                    "description": "Table-cell guidance: recommended for rapid scanning: delta, bullet, radial, harveyBall, stackedBar. Conditional: line, area and column require horizontal space; comparison increases row height; processFlow needs recognizable steps."
                                  },
                                  "surface": {
                                    "const": "table-cell"
                                  },
                                  "size": {
                                    "enum": [
                                      "xs",
                                      "sm",
                                      "md",
                                      "lg",
                                      "responsive"
                                    ]
                                  },
                                  "value": {},
                                  "valueExpr": {
                                    "type": "string"
                                  },
                                  "valueSuffix": {
                                    "type": "string"
                                  },
                                  "valueSuffixExpr": {
                                    "type": "string"
                                  },
                                  "total": {
                                    "type": "number"
                                  },
                                  "totalExpr": {
                                    "type": "string"
                                  },
                                  "target": {
                                    "type": "number"
                                  },
                                  "targetExpr": {
                                    "type": "string"
                                  },
                                  "baseline": {
                                    "type": "number"
                                  },
                                  "baselineExpr": {
                                    "type": "string"
                                  },
                                  "segments": {
                                    "type": "array"
                                  },
                                  "segmentsExpr": {
                                    "type": "string"
                                  },
                                  "points": {
                                    "type": "array"
                                  },
                                  "pointsExpr": {
                                    "type": "string"
                                  },
                                  "thresholds": {
                                    "type": "array"
                                  },
                                  "thresholdsExpr": {
                                    "type": "string"
                                  },
                                  "items": {
                                    "type": "array"
                                  },
                                  "itemsExpr": {
                                    "type": "string"
                                  },
                                  "tone": {
                                    "enum": [
                                      "neutral",
                                      "info",
                                      "success",
                                      "warning",
                                      "danger",
                                      "critical"
                                    ]
                                  },
                                  "toneExpr": {
                                    "type": "string"
                                  },
                                  "ariaLabel": {
                                    "type": "string"
                                  },
                                  "ariaLabelExpr": {
                                    "type": "string"
                                  },
                                  "fallbackText": {
                                    "type": "string"
                                  },
                                  "fallbackTextExpr": {
                                    "type": "string"
                                  }
                                },
                                "allOf": [
                                  {
                                    "if": {
                                      "properties": {
                                        "kind": {
                                          "enum": [
                                            "delta",
                                            "bullet",
                                            "radial",
                                            "harveyBall"
                                          ]
                                        }
                                      }
                                    },
                                    "then": {
                                      "anyOf": [
                                        {
                                          "required": [
                                            "value"
                                          ]
                                        },
                                        {
                                          "required": [
                                            "valueExpr"
                                          ]
                                        }
                                      ]
                                    }
                                  },
                                  {
                                    "if": {
                                      "properties": {
                                        "kind": {
                                          "enum": [
                                            "line",
                                            "area",
                                            "column",
                                            "comparison"
                                          ]
                                        }
                                      }
                                    },
                                    "then": {
                                      "anyOf": [
                                        {
                                          "required": [
                                            "points"
                                          ]
                                        },
                                        {
                                          "required": [
                                            "pointsExpr"
                                          ]
                                        }
                                      ]
                                    }
                                  },
                                  {
                                    "if": {
                                      "properties": {
                                        "kind": {
                                          "const": "stackedBar"
                                        }
                                      }
                                    },
                                    "then": {
                                      "anyOf": [
                                        {
                                          "required": [
                                            "segments"
                                          ]
                                        },
                                        {
                                          "required": [
                                            "segmentsExpr"
                                          ]
                                        }
                                      ]
                                    }
                                  },
                                  {
                                    "if": {
                                      "properties": {
                                        "kind": {
                                          "const": "processFlow"
                                        }
                                      }
                                    },
                                    "then": {
                                      "anyOf": [
                                        {
                                          "required": [
                                            "items"
                                          ]
                                        },
                                        {
                                          "required": [
                                            "itemsExpr"
                                          ]
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            }
                          },
                          "html": {
                            "type": "object",
                            "required": [
                              "template"
                            ],
                            "properties": {
                              "template": {
                                "type": "string"
                              },
                              "sanitize": {
                                "enum": [
                                  "strict",
                                  "basic"
                                ]
                              },
                              "emptyFallback": {
                                "type": "string"
                              }
                            }
                          }
                        },
                        "allOf": [
                          {
                            "if": {
                              "properties": {
                                "type": {
                                  "const": "button"
                                }
                              }
                            },
                            "then": {
                              "required": [
                                "button"
                              ]
                            }
                          },
                          {
                            "if": {
                              "properties": {
                                "type": {
                                  "const": "menu"
                                }
                              }
                            },
                            "then": {
                              "required": [
                                "menu"
                              ]
                            }
                          },
                          {
                            "if": {
                              "properties": {
                                "type": {
                                  "const": "link"
                                }
                              }
                            },
                            "then": {
                              "required": [
                                "link"
                              ]
                            }
                          },
                          {
                            "if": {
                              "properties": {
                                "type": {
                                  "const": "progress"
                                }
                              }
                            },
                            "then": {
                              "required": [
                                "progress"
                              ]
                            }
                          },
                          {
                            "if": {
                              "properties": {
                                "type": {
                                  "const": "badge"
                                }
                              }
                            },
                            "then": {
                              "required": [
                                "badge"
                              ]
                            }
                          },
                          {
                            "if": {
                              "properties": {
                                "type": {
                                  "const": "chip"
                                }
                              }
                            },
                            "then": {
                              "required": [
                                "chip"
                              ]
                            }
                          },
                          {
                            "if": {
                              "properties": {
                                "type": {
                                  "const": "icon"
                                }
                              }
                            },
                            "then": {
                              "required": [
                                "icon"
                              ]
                            }
                          },
                          {
                            "if": {
                              "properties": {
                                "type": {
                                  "const": "image"
                                }
                              }
                            },
                            "then": {
                              "required": [
                                "image"
                              ]
                            }
                          },
                          {
                            "if": {
                              "properties": {
                                "type": {
                                  "const": "avatar"
                                }
                              }
                            },
                            "then": {
                              "required": [
                                "avatar"
                              ]
                            }
                          },
                          {
                            "if": {
                              "properties": {
                                "type": {
                                  "const": "toggle"
                                }
                              }
                            },
                            "then": {
                              "required": [
                                "toggle"
                              ]
                            }
                          },
                          {
                            "if": {
                              "properties": {
                                "type": {
                                  "const": "rating"
                                }
                              }
                            },
                            "then": {
                              "required": [
                                "rating"
                              ]
                            }
                          },
                          {
                            "if": {
                              "properties": {
                                "type": {
                                  "const": "microVisualization"
                                }
                              }
                            },
                            "then": {
                              "required": [
                                "microVisualization"
                              ]
                            }
                          },
                          {
                            "if": {
                              "properties": {
                                "type": {
                                  "const": "html"
                                }
                              }
                            },
                            "then": {
                              "required": [
                                "html"
                              ]
                            }
                          }
                        ]
                      }
                    },
                    "layout": {
                      "type": "object",
                      "minProperties": 1,
                      "properties": {
                        "gap": {
                          "type": "number"
                        },
                        "direction": {
                          "enum": [
                            "row",
                            "column"
                          ],
                          "description": "row coloca os itens lado a lado na mesma linha; column empilha verticalmente, por exemplo foto em cima e código embaixo."
                        },
                        "align": {
                          "enum": [
                            "start",
                            "center",
                            "end"
                          ]
                        },
                        "wrap": {
                          "type": "boolean"
                        },
                        "ellipsis": {
                          "type": "boolean"
                        }
                      }
                    }
                  }
                }
              },
              "allOf": [
                {
                  "if": {
                    "properties": {
                      "type": {
                        "const": "button"
                      }
                    }
                  },
                  "then": {
                    "required": [
                      "button"
                    ]
                  }
                },
                {
                  "if": {
                    "properties": {
                      "type": {
                        "const": "menu"
                      }
                    }
                  },
                  "then": {
                    "required": [
                      "menu"
                    ]
                  }
                },
                {
                  "if": {
                    "properties": {
                      "type": {
                        "const": "link"
                      }
                    }
                  },
                  "then": {
                    "required": [
                      "link"
                    ]
                  }
                },
                {
                  "if": {
                    "properties": {
                      "type": {
                        "const": "progress"
                      }
                    }
                  },
                  "then": {
                    "required": [
                      "progress"
                    ]
                  }
                },
                {
                  "if": {
                    "properties": {
                      "type": {
                        "const": "badge"
                      }
                    }
                  },
                  "then": {
                    "required": [
                      "badge"
                    ]
                  }
                },
                {
                  "if": {
                    "properties": {
                      "type": {
                        "const": "chip"
                      }
                    }
                  },
                  "then": {
                    "required": [
                      "chip"
                    ]
                  }
                },
                {
                  "if": {
                    "properties": {
                      "type": {
                        "const": "icon"
                      }
                    }
                  },
                  "then": {
                    "required": [
                      "icon"
                    ]
                  }
                },
                {
                  "if": {
                    "properties": {
                      "type": {
                        "const": "image"
                      }
                    }
                  },
                  "then": {
                    "required": [
                      "image"
                    ]
                  }
                },
                {
                  "if": {
                    "properties": {
                      "type": {
                        "const": "avatar"
                      }
                    }
                  },
                  "then": {
                    "required": [
                      "avatar"
                    ]
                  }
                },
                {
                  "if": {
                    "properties": {
                      "type": {
                        "const": "toggle"
                      }
                    }
                  },
                  "then": {
                    "required": [
                      "toggle"
                    ]
                  }
                },
                {
                  "if": {
                    "properties": {
                      "type": {
                        "const": "rating"
                      }
                    }
                  },
                  "then": {
                    "required": [
                      "rating"
                    ]
                  }
                },
                {
                  "if": {
                    "properties": {
                      "type": {
                        "const": "microVisualization"
                      }
                    }
                  },
                  "then": {
                    "required": [
                      "microVisualization"
                    ]
                  }
                },
                {
                  "if": {
                    "properties": {
                      "type": {
                        "const": "html"
                      }
                    }
                  },
                  "then": {
                    "required": [
                      "html"
                    ]
                  }
                },
                {
                  "if": {
                    "properties": {
                      "type": {
                        "const": "compose"
                      }
                    }
                  },
                  "then": {
                    "required": [
                      "compose"
                    ]
                  }
                }
              ]
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "columns[].renderer"
              }
            ],
            "validators": [
              "target-column-exists",
              "renderer-type-supported",
              "renderer-config-match",
              "renderer-fields-exist",
              "editor-round-trip-preserve"
            ],
            "affectedPaths": [
              "columns[].renderer"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized",
              "target-exists"
            ]
          },
          {
            "operationId": "column.renderer.composeLayout.set",
            "title": "Refinar somente o layout de uma célula composta",
            "description": "Altera direção, alinhamento, espaçamento, quebra ou ellipsis do layout de renderer.type compose já existente. Preserva o discriminator compose, a ordem, a configuração e todos os itens atuais; não reconstrua os itens para uma mudança somente de layout.",
            "scope": "column",
            "targetKind": "renderer",
            "target": {
              "kind": "renderer",
              "resolver": "renderer-in-column",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "properties": {
                "gap": {
                  "type": "number"
                },
                "direction": {
                  "enum": [
                    "row",
                    "column"
                  ],
                  "description": "row coloca os itens lado a lado na mesma linha; column empilha verticalmente, por exemplo foto em cima e código embaixo."
                },
                "align": {
                  "enum": [
                    "start",
                    "center",
                    "end"
                  ]
                },
                "wrap": {
                  "type": "boolean"
                },
                "ellipsis": {
                  "type": "boolean"
                }
              }
            },
            "effects": [
              {
                "kind": "compile-domain-patch",
                "handler": "table-renderer-compose-layout-merge",
                "path": "columns[].renderer.compose.layout"
              }
            ],
            "validators": [
              "target-column-exists",
              "renderer-compose-exists",
              "editor-round-trip-preserve"
            ],
            "affectedPaths": [
              "columns[].renderer.compose.layout"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized",
              "target-exists"
            ]
          },
          {
            "operationId": "column.renderer.composeItem.set",
            "title": "Refinar somente um item existente da célula composta",
            "description": "Altera um único item já materializado em renderer.type compose, preservando o discriminator compose, o layout, a ordem e todos os itens irmãos. Use itemType para resolver o item; quando houver mais de um item do mesmo tipo, informe itemField para desambiguar.",
            "scope": "column",
            "targetKind": "renderer",
            "target": {
              "kind": "renderer",
              "resolver": "renderer-in-column",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "itemType",
                "item"
              ],
              "properties": {
                "itemType": {
                  "enum": [
                    "value",
                    "icon",
                    "image",
                    "badge",
                    "link",
                    "button",
                    "chip",
                    "progress",
                    "avatar",
                    "toggle",
                    "menu",
                    "rating",
                    "html"
                  ],
                  "description": "Discriminator canônico do item existente que será refinado."
                },
                "itemField": {
                  "type": "string",
                  "description": "Campo estável do item quando itemType sozinho não o identifica de forma única."
                },
                "item": {
                  "type": "object",
                  "description": "Item de uma célula composta. value mostra um campo da linha; os demais tipos exigem seu bloco de configuração homônimo.",
                  "required": [
                    "type"
                  ],
                  "properties": {
                    "type": {
                      "enum": [
                        "value",
                        "icon",
                        "image",
                        "badge",
                        "link",
                        "button",
                        "chip",
                        "progress",
                        "avatar",
                        "toggle",
                        "menu",
                        "rating",
                        "microVisualization",
                        "html"
                      ]
                    },
                    "field": {
                      "type": "string"
                    },
                    "textField": {
                      "type": "string"
                    },
                    "valueField": {
                      "type": "string"
                    },
                    "text": {
                      "type": "string"
                    },
                    "emphasis": {
                      "enum": [
                        "strong",
                        "subtle"
                      ],
                      "description": "Semantic hierarchy for a value item. Use strong for the primary value and subtle for supporting context; arbitrary CSS is not part of the compose contract."
                    },
                    "button": {
                      "type": "object",
                      "required": [
                        "action"
                      ],
                      "properties": {
                        "label": {
                          "type": "string"
                        },
                        "labelField": {
                          "type": "string"
                        },
                        "icon": {
                          "type": "string"
                        },
                        "color": {
                          "enum": [
                            "primary",
                            "accent",
                            "warn"
                          ]
                        },
                        "variant": {
                          "enum": [
                            "filled",
                            "outlined",
                            "text"
                          ]
                        },
                        "size": {
                          "enum": [
                            "sm",
                            "md",
                            "lg"
                          ]
                        },
                        "ariaLabel": {
                          "type": "string"
                        },
                        "disabledCondition": {
                          "type": "object",
                          "description": "AST Json Logic"
                        },
                        "action": {
                          "type": "object",
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "payloadExpr": {
                              "type": "string"
                            }
                          }
                        }
                      }
                    },
                    "menu": {
                      "type": "object",
                      "required": [
                        "itemsExpr"
                      ],
                      "properties": {
                        "itemsExpr": {
                          "type": "string"
                        },
                        "ariaLabel": {
                          "type": "string"
                        }
                      }
                    },
                    "link": {
                      "type": "object",
                      "anyOf": [
                        {
                          "required": [
                            "href"
                          ]
                        },
                        {
                          "required": [
                            "hrefField"
                          ]
                        }
                      ],
                      "properties": {
                        "text": {
                          "type": "string"
                        },
                        "textField": {
                          "type": "string"
                        },
                        "href": {
                          "type": "string"
                        },
                        "hrefField": {
                          "type": "string"
                        },
                        "target": {
                          "enum": [
                            "_blank",
                            "_self",
                            "_parent",
                            "_top"
                          ]
                        },
                        "rel": {
                          "type": "string"
                        }
                      }
                    },
                    "progress": {
                      "type": "object",
                      "required": [
                        "valueExpr"
                      ],
                      "properties": {
                        "valueExpr": {
                          "type": "string"
                        },
                        "color": {
                          "type": "string"
                        },
                        "showLabel": {
                          "type": "boolean"
                        }
                      }
                    },
                    "badge": {
                      "type": "object",
                      "anyOf": [
                        {
                          "required": [
                            "text"
                          ]
                        },
                        {
                          "required": [
                            "textField"
                          ]
                        }
                      ],
                      "properties": {
                        "text": {
                          "type": "string"
                        },
                        "textField": {
                          "type": "string"
                        },
                        "color": {
                          "enum": [
                            "primary",
                            "accent",
                            "warn",
                            "danger",
                            "success",
                            "info",
                            "basic"
                          ]
                        },
                        "variant": {
                          "enum": [
                            "filled",
                            "outlined",
                            "soft",
                            "plain"
                          ]
                        },
                        "icon": {
                          "type": "string"
                        },
                        "tooltip": {
                          "type": "object",
                          "properties": {
                            "text": {
                              "type": "string"
                            },
                            "position": {
                              "enum": [
                                "top",
                                "right",
                                "bottom",
                                "left"
                              ]
                            },
                            "bgColor": {
                              "type": "string"
                            },
                            "delayMs": {
                              "type": "number"
                            }
                          }
                        }
                      }
                    },
                    "chip": {
                      "type": "object",
                      "anyOf": [
                        {
                          "required": [
                            "text"
                          ]
                        },
                        {
                          "required": [
                            "textField"
                          ]
                        }
                      ],
                      "properties": {
                        "text": {
                          "type": "string"
                        },
                        "textField": {
                          "type": "string"
                        },
                        "color": {
                          "enum": [
                            "primary",
                            "accent",
                            "warn",
                            "danger",
                            "success",
                            "info",
                            "basic"
                          ]
                        },
                        "variant": {
                          "enum": [
                            "filled",
                            "outlined"
                          ]
                        },
                        "icon": {
                          "type": "string"
                        },
                        "tooltip": {
                          "type": "object",
                          "properties": {
                            "text": {
                              "type": "string"
                            },
                            "position": {
                              "enum": [
                                "top",
                                "right",
                                "bottom",
                                "left"
                              ]
                            },
                            "bgColor": {
                              "type": "string"
                            },
                            "delayMs": {
                              "type": "number"
                            }
                          }
                        }
                      }
                    },
                    "icon": {
                      "type": "object",
                      "anyOf": [
                        {
                          "required": [
                            "name"
                          ]
                        },
                        {
                          "required": [
                            "nameField"
                          ]
                        }
                      ],
                      "properties": {
                        "name": {
                          "type": "string"
                        },
                        "nameField": {
                          "type": "string"
                        },
                        "text": {
                          "type": "string"
                        },
                        "textField": {
                          "type": "string"
                        },
                        "prefix": {
                          "type": "string"
                        },
                        "suffix": {
                          "type": "string"
                        },
                        "color": {
                          "type": "string"
                        },
                        "size": {
                          "type": "number"
                        },
                        "ariaLabel": {
                          "type": "string"
                        }
                      }
                    },
                    "image": {
                      "type": "object",
                      "anyOf": [
                        {
                          "required": [
                            "src"
                          ]
                        },
                        {
                          "required": [
                            "srcField"
                          ]
                        }
                      ],
                      "properties": {
                        "src": {
                          "type": "string"
                        },
                        "srcField": {
                          "type": "string"
                        },
                        "alt": {
                          "type": "string"
                        },
                        "altField": {
                          "type": "string"
                        },
                        "width": {
                          "type": "number",
                          "description": "Largura visual em pixels; altere apenas quando o pedido mudar o tamanho da imagem."
                        },
                        "height": {
                          "type": "number",
                          "description": "Altura visual em pixels; para imagem quadrada, mantenha igual a width."
                        },
                        "shape": {
                          "enum": [
                            "square",
                            "rounded",
                            "circle"
                          ],
                          "description": "square não arredonda, rounded usa cantos arredondados e circle materializa um círculo."
                        },
                        "fit": {
                          "enum": [
                            "cover",
                            "contain"
                          ]
                        },
                        "lazy": {
                          "type": "boolean"
                        }
                      }
                    },
                    "avatar": {
                      "type": "object",
                      "anyOf": [
                        {
                          "required": [
                            "src"
                          ]
                        },
                        {
                          "required": [
                            "srcField"
                          ]
                        },
                        {
                          "required": [
                            "initialsField"
                          ]
                        },
                        {
                          "required": [
                            "initialsExpr"
                          ]
                        }
                      ],
                      "properties": {
                        "src": {
                          "type": "string"
                        },
                        "srcField": {
                          "type": "string"
                        },
                        "alt": {
                          "type": "string"
                        },
                        "altField": {
                          "type": "string"
                        },
                        "initialsField": {
                          "type": "string"
                        },
                        "initialsExpr": {
                          "type": "string"
                        },
                        "shape": {
                          "enum": [
                            "circle",
                            "square",
                            "rounded"
                          ],
                          "description": "circle é circular, square é quadrado e rounded é quadrado com cantos arredondados."
                        },
                        "size": {
                          "type": "number",
                          "description": "Tamanho visual do avatar em pixels; preserve os demais campos e itens do compose ao mudar apenas o tamanho."
                        },
                        "backgroundColor": {
                          "type": "string"
                        },
                        "textColor": {
                          "type": "string"
                        }
                      }
                    },
                    "toggle": {
                      "type": "object",
                      "required": [
                        "stateExpr",
                        "action"
                      ],
                      "properties": {
                        "stateExpr": {
                          "type": "string"
                        },
                        "disabledCondition": {
                          "type": "object",
                          "description": "AST Json Logic"
                        },
                        "ariaLabel": {
                          "type": "string"
                        },
                        "action": {
                          "type": "object",
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "payloadExpr": {
                              "type": "string"
                            }
                          }
                        }
                      }
                    },
                    "rating": {
                      "type": "object",
                      "required": [
                        "valueExpr"
                      ],
                      "properties": {
                        "valueExpr": {
                          "type": "string"
                        },
                        "max": {
                          "type": "number"
                        },
                        "color": {
                          "type": "string"
                        },
                        "outlineColor": {
                          "type": "string"
                        },
                        "size": {
                          "enum": [
                            "small",
                            "medium",
                            "large"
                          ]
                        },
                        "ariaLabel": {
                          "type": "string"
                        }
                      }
                    },
                    "microVisualization": {
                      "type": "object",
                      "required": [
                        "visualization"
                      ],
                      "properties": {
                        "visualization": {
                          "type": "object",
                          "description": "Expression properties accept a row path such as row.sla or a controlled formula prefixed with =, such as = row.sla.",
                          "required": [
                            "kind",
                            "fallbackText"
                          ],
                          "properties": {
                            "kind": {
                              "enum": [
                                "line",
                                "area",
                                "column",
                                "comparison",
                                "stackedBar",
                                "radial",
                                "harveyBall",
                                "bullet",
                                "delta",
                                "processFlow"
                              ],
                              "description": "Table-cell guidance: recommended for rapid scanning: delta, bullet, radial, harveyBall, stackedBar. Conditional: line, area and column require horizontal space; comparison increases row height; processFlow needs recognizable steps."
                            },
                            "surface": {
                              "const": "table-cell"
                            },
                            "size": {
                              "enum": [
                                "xs",
                                "sm",
                                "md",
                                "lg",
                                "responsive"
                              ]
                            },
                            "value": {},
                            "valueExpr": {
                              "type": "string"
                            },
                            "valueSuffix": {
                              "type": "string"
                            },
                            "valueSuffixExpr": {
                              "type": "string"
                            },
                            "total": {
                              "type": "number"
                            },
                            "totalExpr": {
                              "type": "string"
                            },
                            "target": {
                              "type": "number"
                            },
                            "targetExpr": {
                              "type": "string"
                            },
                            "baseline": {
                              "type": "number"
                            },
                            "baselineExpr": {
                              "type": "string"
                            },
                            "segments": {
                              "type": "array"
                            },
                            "segmentsExpr": {
                              "type": "string"
                            },
                            "points": {
                              "type": "array"
                            },
                            "pointsExpr": {
                              "type": "string"
                            },
                            "thresholds": {
                              "type": "array"
                            },
                            "thresholdsExpr": {
                              "type": "string"
                            },
                            "items": {
                              "type": "array"
                            },
                            "itemsExpr": {
                              "type": "string"
                            },
                            "tone": {
                              "enum": [
                                "neutral",
                                "info",
                                "success",
                                "warning",
                                "danger",
                                "critical"
                              ]
                            },
                            "toneExpr": {
                              "type": "string"
                            },
                            "ariaLabel": {
                              "type": "string"
                            },
                            "ariaLabelExpr": {
                              "type": "string"
                            },
                            "fallbackText": {
                              "type": "string"
                            },
                            "fallbackTextExpr": {
                              "type": "string"
                            }
                          },
                          "allOf": [
                            {
                              "if": {
                                "properties": {
                                  "kind": {
                                    "enum": [
                                      "delta",
                                      "bullet",
                                      "radial",
                                      "harveyBall"
                                    ]
                                  }
                                }
                              },
                              "then": {
                                "anyOf": [
                                  {
                                    "required": [
                                      "value"
                                    ]
                                  },
                                  {
                                    "required": [
                                      "valueExpr"
                                    ]
                                  }
                                ]
                              }
                            },
                            {
                              "if": {
                                "properties": {
                                  "kind": {
                                    "enum": [
                                      "line",
                                      "area",
                                      "column",
                                      "comparison"
                                    ]
                                  }
                                }
                              },
                              "then": {
                                "anyOf": [
                                  {
                                    "required": [
                                      "points"
                                    ]
                                  },
                                  {
                                    "required": [
                                      "pointsExpr"
                                    ]
                                  }
                                ]
                              }
                            },
                            {
                              "if": {
                                "properties": {
                                  "kind": {
                                    "const": "stackedBar"
                                  }
                                }
                              },
                              "then": {
                                "anyOf": [
                                  {
                                    "required": [
                                      "segments"
                                    ]
                                  },
                                  {
                                    "required": [
                                      "segmentsExpr"
                                    ]
                                  }
                                ]
                              }
                            },
                            {
                              "if": {
                                "properties": {
                                  "kind": {
                                    "const": "processFlow"
                                  }
                                }
                              },
                              "then": {
                                "anyOf": [
                                  {
                                    "required": [
                                      "items"
                                    ]
                                  },
                                  {
                                    "required": [
                                      "itemsExpr"
                                    ]
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    },
                    "html": {
                      "type": "object",
                      "required": [
                        "template"
                      ],
                      "properties": {
                        "template": {
                          "type": "string"
                        },
                        "sanitize": {
                          "enum": [
                            "strict",
                            "basic"
                          ]
                        },
                        "emptyFallback": {
                          "type": "string"
                        }
                      }
                    }
                  },
                  "allOf": [
                    {
                      "if": {
                        "properties": {
                          "type": {
                            "const": "button"
                          }
                        }
                      },
                      "then": {
                        "required": [
                          "button"
                        ]
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "type": {
                            "const": "menu"
                          }
                        }
                      },
                      "then": {
                        "required": [
                          "menu"
                        ]
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "type": {
                            "const": "link"
                          }
                        }
                      },
                      "then": {
                        "required": [
                          "link"
                        ]
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "type": {
                            "const": "progress"
                          }
                        }
                      },
                      "then": {
                        "required": [
                          "progress"
                        ]
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "type": {
                            "const": "badge"
                          }
                        }
                      },
                      "then": {
                        "required": [
                          "badge"
                        ]
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "type": {
                            "const": "chip"
                          }
                        }
                      },
                      "then": {
                        "required": [
                          "chip"
                        ]
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "type": {
                            "const": "icon"
                          }
                        }
                      },
                      "then": {
                        "required": [
                          "icon"
                        ]
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "type": {
                            "const": "image"
                          }
                        }
                      },
                      "then": {
                        "required": [
                          "image"
                        ]
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "type": {
                            "const": "avatar"
                          }
                        }
                      },
                      "then": {
                        "required": [
                          "avatar"
                        ]
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "type": {
                            "const": "toggle"
                          }
                        }
                      },
                      "then": {
                        "required": [
                          "toggle"
                        ]
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "type": {
                            "const": "rating"
                          }
                        }
                      },
                      "then": {
                        "required": [
                          "rating"
                        ]
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "type": {
                            "const": "microVisualization"
                          }
                        }
                      },
                      "then": {
                        "required": [
                          "microVisualization"
                        ]
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "type": {
                            "const": "html"
                          }
                        }
                      },
                      "then": {
                        "required": [
                          "html"
                        ]
                      }
                    }
                  ]
                }
              }
            },
            "effects": [
              {
                "kind": "compile-domain-patch",
                "handler": "table-renderer-compose-item-merge",
                "path": "columns[].renderer.compose.items[]"
              }
            ],
            "validators": [
              "target-column-exists",
              "renderer-compose-item-exists",
              "renderer-type-supported",
              "renderer-config-match",
              "renderer-fields-exist",
              "editor-round-trip-preserve"
            ],
            "affectedPaths": [
              "columns[].renderer.compose.items[]"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized",
              "target-exists"
            ]
          },
          {
            "operationId": "column.conditionalRenderer.add",
            "title": "Adicionar renderizador condicional",
            "scope": "column",
            "targetKind": "column",
            "target": {
              "kind": "column",
              "resolver": "column-by-field",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "id",
                "condition"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Identificador estável do renderer condicional (usado para deduplicação)"
                },
                "condition": {
                  "type": "object",
                  "description": "AST Json Logic"
                },
                "renderer": {
                  "type": "object",
                  "description": "Renderizador visual. Quando a intencao pedir chip, use type \"chip\" e configure chip; efeitos iconBadge materializam badge, nao chip. Ao refinar um compose existente, copie seus itens atuais e altere somente tamanho, forma, direção ou outra propriedade explicitamente solicitada.",
                  "required": [
                    "type"
                  ],
                  "properties": {
                    "type": {
                      "enum": [
                        "icon",
                        "image",
                        "badge",
                        "link",
                        "button",
                        "chip",
                        "progress",
                        "avatar",
                        "toggle",
                        "menu",
                        "rating",
                        "microVisualization",
                        "html",
                        "compose"
                      ]
                    },
                    "typeExpr": {
                      "type": "string"
                    },
                    "button": {
                      "type": "object",
                      "required": [
                        "action"
                      ],
                      "properties": {
                        "label": {
                          "type": "string"
                        },
                        "labelField": {
                          "type": "string"
                        },
                        "icon": {
                          "type": "string"
                        },
                        "color": {
                          "enum": [
                            "primary",
                            "accent",
                            "warn"
                          ]
                        },
                        "variant": {
                          "enum": [
                            "filled",
                            "outlined",
                            "text"
                          ]
                        },
                        "size": {
                          "enum": [
                            "sm",
                            "md",
                            "lg"
                          ]
                        },
                        "ariaLabel": {
                          "type": "string"
                        },
                        "disabledCondition": {
                          "type": "object",
                          "description": "AST Json Logic"
                        },
                        "action": {
                          "type": "object",
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "payloadExpr": {
                              "type": "string"
                            }
                          }
                        }
                      }
                    },
                    "menu": {
                      "type": "object",
                      "required": [
                        "itemsExpr"
                      ],
                      "properties": {
                        "itemsExpr": {
                          "type": "string"
                        },
                        "ariaLabel": {
                          "type": "string"
                        }
                      }
                    },
                    "link": {
                      "type": "object",
                      "anyOf": [
                        {
                          "required": [
                            "href"
                          ]
                        },
                        {
                          "required": [
                            "hrefField"
                          ]
                        }
                      ],
                      "properties": {
                        "text": {
                          "type": "string"
                        },
                        "textField": {
                          "type": "string"
                        },
                        "href": {
                          "type": "string"
                        },
                        "hrefField": {
                          "type": "string"
                        },
                        "target": {
                          "enum": [
                            "_blank",
                            "_self",
                            "_parent",
                            "_top"
                          ]
                        },
                        "rel": {
                          "type": "string"
                        }
                      }
                    },
                    "progress": {
                      "type": "object",
                      "required": [
                        "valueExpr"
                      ],
                      "properties": {
                        "valueExpr": {
                          "type": "string"
                        },
                        "color": {
                          "type": "string"
                        },
                        "showLabel": {
                          "type": "boolean"
                        }
                      }
                    },
                    "badge": {
                      "type": "object",
                      "anyOf": [
                        {
                          "required": [
                            "text"
                          ]
                        },
                        {
                          "required": [
                            "textField"
                          ]
                        }
                      ],
                      "properties": {
                        "text": {
                          "type": "string"
                        },
                        "textField": {
                          "type": "string"
                        },
                        "color": {
                          "enum": [
                            "primary",
                            "accent",
                            "warn",
                            "danger",
                            "success",
                            "info",
                            "basic"
                          ]
                        },
                        "variant": {
                          "enum": [
                            "filled",
                            "outlined",
                            "soft",
                            "plain"
                          ]
                        },
                        "icon": {
                          "type": "string"
                        },
                        "tooltip": {
                          "type": "object",
                          "properties": {
                            "text": {
                              "type": "string"
                            },
                            "position": {
                              "enum": [
                                "top",
                                "right",
                                "bottom",
                                "left"
                              ]
                            },
                            "bgColor": {
                              "type": "string"
                            },
                            "delayMs": {
                              "type": "number"
                            }
                          }
                        }
                      }
                    },
                    "chip": {
                      "type": "object",
                      "anyOf": [
                        {
                          "required": [
                            "text"
                          ]
                        },
                        {
                          "required": [
                            "textField"
                          ]
                        }
                      ],
                      "properties": {
                        "text": {
                          "type": "string"
                        },
                        "textField": {
                          "type": "string"
                        },
                        "color": {
                          "enum": [
                            "primary",
                            "accent",
                            "warn",
                            "danger",
                            "success",
                            "info",
                            "basic"
                          ]
                        },
                        "variant": {
                          "enum": [
                            "filled",
                            "outlined"
                          ]
                        },
                        "icon": {
                          "type": "string"
                        },
                        "tooltip": {
                          "type": "object",
                          "properties": {
                            "text": {
                              "type": "string"
                            },
                            "position": {
                              "enum": [
                                "top",
                                "right",
                                "bottom",
                                "left"
                              ]
                            },
                            "bgColor": {
                              "type": "string"
                            },
                            "delayMs": {
                              "type": "number"
                            }
                          }
                        }
                      }
                    },
                    "icon": {
                      "type": "object",
                      "anyOf": [
                        {
                          "required": [
                            "name"
                          ]
                        },
                        {
                          "required": [
                            "nameField"
                          ]
                        }
                      ],
                      "properties": {
                        "name": {
                          "type": "string"
                        },
                        "nameField": {
                          "type": "string"
                        },
                        "text": {
                          "type": "string"
                        },
                        "textField": {
                          "type": "string"
                        },
                        "prefix": {
                          "type": "string"
                        },
                        "suffix": {
                          "type": "string"
                        },
                        "color": {
                          "type": "string"
                        },
                        "size": {
                          "type": "number"
                        },
                        "ariaLabel": {
                          "type": "string"
                        }
                      }
                    },
                    "image": {
                      "type": "object",
                      "anyOf": [
                        {
                          "required": [
                            "src"
                          ]
                        },
                        {
                          "required": [
                            "srcField"
                          ]
                        }
                      ],
                      "properties": {
                        "src": {
                          "type": "string"
                        },
                        "srcField": {
                          "type": "string"
                        },
                        "alt": {
                          "type": "string"
                        },
                        "altField": {
                          "type": "string"
                        },
                        "width": {
                          "type": "number",
                          "description": "Largura visual em pixels; altere apenas quando o pedido mudar o tamanho da imagem."
                        },
                        "height": {
                          "type": "number",
                          "description": "Altura visual em pixels; para imagem quadrada, mantenha igual a width."
                        },
                        "shape": {
                          "enum": [
                            "square",
                            "rounded",
                            "circle"
                          ],
                          "description": "square não arredonda, rounded usa cantos arredondados e circle materializa um círculo."
                        },
                        "fit": {
                          "enum": [
                            "cover",
                            "contain"
                          ]
                        },
                        "lazy": {
                          "type": "boolean"
                        }
                      }
                    },
                    "avatar": {
                      "type": "object",
                      "anyOf": [
                        {
                          "required": [
                            "src"
                          ]
                        },
                        {
                          "required": [
                            "srcField"
                          ]
                        },
                        {
                          "required": [
                            "initialsField"
                          ]
                        },
                        {
                          "required": [
                            "initialsExpr"
                          ]
                        }
                      ],
                      "properties": {
                        "src": {
                          "type": "string"
                        },
                        "srcField": {
                          "type": "string"
                        },
                        "alt": {
                          "type": "string"
                        },
                        "altField": {
                          "type": "string"
                        },
                        "initialsField": {
                          "type": "string"
                        },
                        "initialsExpr": {
                          "type": "string"
                        },
                        "shape": {
                          "enum": [
                            "circle",
                            "square",
                            "rounded"
                          ],
                          "description": "circle é circular, square é quadrado e rounded é quadrado com cantos arredondados."
                        },
                        "size": {
                          "type": "number",
                          "description": "Tamanho visual do avatar em pixels; preserve os demais campos e itens do compose ao mudar apenas o tamanho."
                        },
                        "backgroundColor": {
                          "type": "string"
                        },
                        "textColor": {
                          "type": "string"
                        }
                      }
                    },
                    "toggle": {
                      "type": "object",
                      "required": [
                        "stateExpr",
                        "action"
                      ],
                      "properties": {
                        "stateExpr": {
                          "type": "string"
                        },
                        "disabledCondition": {
                          "type": "object",
                          "description": "AST Json Logic"
                        },
                        "ariaLabel": {
                          "type": "string"
                        },
                        "action": {
                          "type": "object",
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "payloadExpr": {
                              "type": "string"
                            }
                          }
                        }
                      }
                    },
                    "rating": {
                      "type": "object",
                      "required": [
                        "valueExpr"
                      ],
                      "properties": {
                        "valueExpr": {
                          "type": "string"
                        },
                        "max": {
                          "type": "number"
                        },
                        "color": {
                          "type": "string"
                        },
                        "outlineColor": {
                          "type": "string"
                        },
                        "size": {
                          "enum": [
                            "small",
                            "medium",
                            "large"
                          ]
                        },
                        "ariaLabel": {
                          "type": "string"
                        }
                      }
                    },
                    "microVisualization": {
                      "type": "object",
                      "required": [
                        "visualization"
                      ],
                      "properties": {
                        "visualization": {
                          "type": "object",
                          "description": "Expression properties accept a row path such as row.sla or a controlled formula prefixed with =, such as = row.sla.",
                          "required": [
                            "kind",
                            "fallbackText"
                          ],
                          "properties": {
                            "kind": {
                              "enum": [
                                "line",
                                "area",
                                "column",
                                "comparison",
                                "stackedBar",
                                "radial",
                                "harveyBall",
                                "bullet",
                                "delta",
                                "processFlow"
                              ],
                              "description": "Table-cell guidance: recommended for rapid scanning: delta, bullet, radial, harveyBall, stackedBar. Conditional: line, area and column require horizontal space; comparison increases row height; processFlow needs recognizable steps."
                            },
                            "surface": {
                              "const": "table-cell"
                            },
                            "size": {
                              "enum": [
                                "xs",
                                "sm",
                                "md",
                                "lg",
                                "responsive"
                              ]
                            },
                            "value": {},
                            "valueExpr": {
                              "type": "string"
                            },
                            "valueSuffix": {
                              "type": "string"
                            },
                            "valueSuffixExpr": {
                              "type": "string"
                            },
                            "total": {
                              "type": "number"
                            },
                            "totalExpr": {
                              "type": "string"
                            },
                            "target": {
                              "type": "number"
                            },
                            "targetExpr": {
                              "type": "string"
                            },
                            "baseline": {
                              "type": "number"
                            },
                            "baselineExpr": {
                              "type": "string"
                            },
                            "segments": {
                              "type": "array"
                            },
                            "segmentsExpr": {
                              "type": "string"
                            },
                            "points": {
                              "type": "array"
                            },
                            "pointsExpr": {
                              "type": "string"
                            },
                            "thresholds": {
                              "type": "array"
                            },
                            "thresholdsExpr": {
                              "type": "string"
                            },
                            "items": {
                              "type": "array"
                            },
                            "itemsExpr": {
                              "type": "string"
                            },
                            "tone": {
                              "enum": [
                                "neutral",
                                "info",
                                "success",
                                "warning",
                                "danger",
                                "critical"
                              ]
                            },
                            "toneExpr": {
                              "type": "string"
                            },
                            "ariaLabel": {
                              "type": "string"
                            },
                            "ariaLabelExpr": {
                              "type": "string"
                            },
                            "fallbackText": {
                              "type": "string"
                            },
                            "fallbackTextExpr": {
                              "type": "string"
                            }
                          },
                          "allOf": [
                            {
                              "if": {
                                "properties": {
                                  "kind": {
                                    "enum": [
                                      "delta",
                                      "bullet",
                                      "radial",
                                      "harveyBall"
                                    ]
                                  }
                                }
                              },
                              "then": {
                                "anyOf": [
                                  {
                                    "required": [
                                      "value"
                                    ]
                                  },
                                  {
                                    "required": [
                                      "valueExpr"
                                    ]
                                  }
                                ]
                              }
                            },
                            {
                              "if": {
                                "properties": {
                                  "kind": {
                                    "enum": [
                                      "line",
                                      "area",
                                      "column",
                                      "comparison"
                                    ]
                                  }
                                }
                              },
                              "then": {
                                "anyOf": [
                                  {
                                    "required": [
                                      "points"
                                    ]
                                  },
                                  {
                                    "required": [
                                      "pointsExpr"
                                    ]
                                  }
                                ]
                              }
                            },
                            {
                              "if": {
                                "properties": {
                                  "kind": {
                                    "const": "stackedBar"
                                  }
                                }
                              },
                              "then": {
                                "anyOf": [
                                  {
                                    "required": [
                                      "segments"
                                    ]
                                  },
                                  {
                                    "required": [
                                      "segmentsExpr"
                                    ]
                                  }
                                ]
                              }
                            },
                            {
                              "if": {
                                "properties": {
                                  "kind": {
                                    "const": "processFlow"
                                  }
                                }
                              },
                              "then": {
                                "anyOf": [
                                  {
                                    "required": [
                                      "items"
                                    ]
                                  },
                                  {
                                    "required": [
                                      "itemsExpr"
                                    ]
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    },
                    "html": {
                      "type": "object",
                      "required": [
                        "template"
                      ],
                      "properties": {
                        "template": {
                          "type": "string"
                        },
                        "sanitize": {
                          "enum": [
                            "strict",
                            "basic"
                          ]
                        },
                        "emptyFallback": {
                          "type": "string"
                        }
                      }
                    },
                    "compose": {
                      "type": "object",
                      "description": "Composição de vários itens dentro da mesma célula. Em refinamentos, preserve os itens atuais e altere somente o atributo solicitado.",
                      "required": [
                        "items"
                      ],
                      "properties": {
                        "items": {
                          "type": "array",
                          "minItems": 1,
                          "items": {
                            "type": "object",
                            "description": "Item de uma célula composta. value mostra um campo da linha; os demais tipos exigem seu bloco de configuração homônimo.",
                            "required": [
                              "type"
                            ],
                            "properties": {
                              "type": {
                                "enum": [
                                  "value",
                                  "icon",
                                  "image",
                                  "badge",
                                  "link",
                                  "button",
                                  "chip",
                                  "progress",
                                  "avatar",
                                  "toggle",
                                  "menu",
                                  "rating",
                                  "microVisualization",
                                  "html"
                                ]
                              },
                              "field": {
                                "type": "string"
                              },
                              "textField": {
                                "type": "string"
                              },
                              "valueField": {
                                "type": "string"
                              },
                              "text": {
                                "type": "string"
                              },
                              "emphasis": {
                                "enum": [
                                  "strong",
                                  "subtle"
                                ],
                                "description": "Semantic hierarchy for a value item. Use strong for the primary value and subtle for supporting context; arbitrary CSS is not part of the compose contract."
                              },
                              "button": {
                                "type": "object",
                                "required": [
                                  "action"
                                ],
                                "properties": {
                                  "label": {
                                    "type": "string"
                                  },
                                  "labelField": {
                                    "type": "string"
                                  },
                                  "icon": {
                                    "type": "string"
                                  },
                                  "color": {
                                    "enum": [
                                      "primary",
                                      "accent",
                                      "warn"
                                    ]
                                  },
                                  "variant": {
                                    "enum": [
                                      "filled",
                                      "outlined",
                                      "text"
                                    ]
                                  },
                                  "size": {
                                    "enum": [
                                      "sm",
                                      "md",
                                      "lg"
                                    ]
                                  },
                                  "ariaLabel": {
                                    "type": "string"
                                  },
                                  "disabledCondition": {
                                    "type": "object",
                                    "description": "AST Json Logic"
                                  },
                                  "action": {
                                    "type": "object",
                                    "required": [
                                      "id"
                                    ],
                                    "properties": {
                                      "id": {
                                        "type": "string"
                                      },
                                      "payloadExpr": {
                                        "type": "string"
                                      }
                                    }
                                  }
                                }
                              },
                              "menu": {
                                "type": "object",
                                "required": [
                                  "itemsExpr"
                                ],
                                "properties": {
                                  "itemsExpr": {
                                    "type": "string"
                                  },
                                  "ariaLabel": {
                                    "type": "string"
                                  }
                                }
                              },
                              "link": {
                                "type": "object",
                                "anyOf": [
                                  {
                                    "required": [
                                      "href"
                                    ]
                                  },
                                  {
                                    "required": [
                                      "hrefField"
                                    ]
                                  }
                                ],
                                "properties": {
                                  "text": {
                                    "type": "string"
                                  },
                                  "textField": {
                                    "type": "string"
                                  },
                                  "href": {
                                    "type": "string"
                                  },
                                  "hrefField": {
                                    "type": "string"
                                  },
                                  "target": {
                                    "enum": [
                                      "_blank",
                                      "_self",
                                      "_parent",
                                      "_top"
                                    ]
                                  },
                                  "rel": {
                                    "type": "string"
                                  }
                                }
                              },
                              "progress": {
                                "type": "object",
                                "required": [
                                  "valueExpr"
                                ],
                                "properties": {
                                  "valueExpr": {
                                    "type": "string"
                                  },
                                  "color": {
                                    "type": "string"
                                  },
                                  "showLabel": {
                                    "type": "boolean"
                                  }
                                }
                              },
                              "badge": {
                                "type": "object",
                                "anyOf": [
                                  {
                                    "required": [
                                      "text"
                                    ]
                                  },
                                  {
                                    "required": [
                                      "textField"
                                    ]
                                  }
                                ],
                                "properties": {
                                  "text": {
                                    "type": "string"
                                  },
                                  "textField": {
                                    "type": "string"
                                  },
                                  "color": {
                                    "enum": [
                                      "primary",
                                      "accent",
                                      "warn",
                                      "danger",
                                      "success",
                                      "info",
                                      "basic"
                                    ]
                                  },
                                  "variant": {
                                    "enum": [
                                      "filled",
                                      "outlined",
                                      "soft",
                                      "plain"
                                    ]
                                  },
                                  "icon": {
                                    "type": "string"
                                  },
                                  "tooltip": {
                                    "type": "object",
                                    "properties": {
                                      "text": {
                                        "type": "string"
                                      },
                                      "position": {
                                        "enum": [
                                          "top",
                                          "right",
                                          "bottom",
                                          "left"
                                        ]
                                      },
                                      "bgColor": {
                                        "type": "string"
                                      },
                                      "delayMs": {
                                        "type": "number"
                                      }
                                    }
                                  }
                                }
                              },
                              "chip": {
                                "type": "object",
                                "anyOf": [
                                  {
                                    "required": [
                                      "text"
                                    ]
                                  },
                                  {
                                    "required": [
                                      "textField"
                                    ]
                                  }
                                ],
                                "properties": {
                                  "text": {
                                    "type": "string"
                                  },
                                  "textField": {
                                    "type": "string"
                                  },
                                  "color": {
                                    "enum": [
                                      "primary",
                                      "accent",
                                      "warn",
                                      "danger",
                                      "success",
                                      "info",
                                      "basic"
                                    ]
                                  },
                                  "variant": {
                                    "enum": [
                                      "filled",
                                      "outlined"
                                    ]
                                  },
                                  "icon": {
                                    "type": "string"
                                  },
                                  "tooltip": {
                                    "type": "object",
                                    "properties": {
                                      "text": {
                                        "type": "string"
                                      },
                                      "position": {
                                        "enum": [
                                          "top",
                                          "right",
                                          "bottom",
                                          "left"
                                        ]
                                      },
                                      "bgColor": {
                                        "type": "string"
                                      },
                                      "delayMs": {
                                        "type": "number"
                                      }
                                    }
                                  }
                                }
                              },
                              "icon": {
                                "type": "object",
                                "anyOf": [
                                  {
                                    "required": [
                                      "name"
                                    ]
                                  },
                                  {
                                    "required": [
                                      "nameField"
                                    ]
                                  }
                                ],
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "nameField": {
                                    "type": "string"
                                  },
                                  "text": {
                                    "type": "string"
                                  },
                                  "textField": {
                                    "type": "string"
                                  },
                                  "prefix": {
                                    "type": "string"
                                  },
                                  "suffix": {
                                    "type": "string"
                                  },
                                  "color": {
                                    "type": "string"
                                  },
                                  "size": {
                                    "type": "number"
                                  },
                                  "ariaLabel": {
                                    "type": "string"
                                  }
                                }
                              },
                              "image": {
                                "type": "object",
                                "anyOf": [
                                  {
                                    "required": [
                                      "src"
                                    ]
                                  },
                                  {
                                    "required": [
                                      "srcField"
                                    ]
                                  }
                                ],
                                "properties": {
                                  "src": {
                                    "type": "string"
                                  },
                                  "srcField": {
                                    "type": "string"
                                  },
                                  "alt": {
                                    "type": "string"
                                  },
                                  "altField": {
                                    "type": "string"
                                  },
                                  "width": {
                                    "type": "number",
                                    "description": "Largura visual em pixels; altere apenas quando o pedido mudar o tamanho da imagem."
                                  },
                                  "height": {
                                    "type": "number",
                                    "description": "Altura visual em pixels; para imagem quadrada, mantenha igual a width."
                                  },
                                  "shape": {
                                    "enum": [
                                      "square",
                                      "rounded",
                                      "circle"
                                    ],
                                    "description": "square não arredonda, rounded usa cantos arredondados e circle materializa um círculo."
                                  },
                                  "fit": {
                                    "enum": [
                                      "cover",
                                      "contain"
                                    ]
                                  },
                                  "lazy": {
                                    "type": "boolean"
                                  }
                                }
                              },
                              "avatar": {
                                "type": "object",
                                "anyOf": [
                                  {
                                    "required": [
                                      "src"
                                    ]
                                  },
                                  {
                                    "required": [
                                      "srcField"
                                    ]
                                  },
                                  {
                                    "required": [
                                      "initialsField"
                                    ]
                                  },
                                  {
                                    "required": [
                                      "initialsExpr"
                                    ]
                                  }
                                ],
                                "properties": {
                                  "src": {
                                    "type": "string"
                                  },
                                  "srcField": {
                                    "type": "string"
                                  },
                                  "alt": {
                                    "type": "string"
                                  },
                                  "altField": {
                                    "type": "string"
                                  },
                                  "initialsField": {
                                    "type": "string"
                                  },
                                  "initialsExpr": {
                                    "type": "string"
                                  },
                                  "shape": {
                                    "enum": [
                                      "circle",
                                      "square",
                                      "rounded"
                                    ],
                                    "description": "circle é circular, square é quadrado e rounded é quadrado com cantos arredondados."
                                  },
                                  "size": {
                                    "type": "number",
                                    "description": "Tamanho visual do avatar em pixels; preserve os demais campos e itens do compose ao mudar apenas o tamanho."
                                  },
                                  "backgroundColor": {
                                    "type": "string"
                                  },
                                  "textColor": {
                                    "type": "string"
                                  }
                                }
                              },
                              "toggle": {
                                "type": "object",
                                "required": [
                                  "stateExpr",
                                  "action"
                                ],
                                "properties": {
                                  "stateExpr": {
                                    "type": "string"
                                  },
                                  "disabledCondition": {
                                    "type": "object",
                                    "description": "AST Json Logic"
                                  },
                                  "ariaLabel": {
                                    "type": "string"
                                  },
                                  "action": {
                                    "type": "object",
                                    "required": [
                                      "id"
                                    ],
                                    "properties": {
                                      "id": {
                                        "type": "string"
                                      },
                                      "payloadExpr": {
                                        "type": "string"
                                      }
                                    }
                                  }
                                }
                              },
                              "rating": {
                                "type": "object",
                                "required": [
                                  "valueExpr"
                                ],
                                "properties": {
                                  "valueExpr": {
                                    "type": "string"
                                  },
                                  "max": {
                                    "type": "number"
                                  },
                                  "color": {
                                    "type": "string"
                                  },
                                  "outlineColor": {
                                    "type": "string"
                                  },
                                  "size": {
                                    "enum": [
                                      "small",
                                      "medium",
                                      "large"
                                    ]
                                  },
                                  "ariaLabel": {
                                    "type": "string"
                                  }
                                }
                              },
                              "microVisualization": {
                                "type": "object",
                                "required": [
                                  "visualization"
                                ],
                                "properties": {
                                  "visualization": {
                                    "type": "object",
                                    "description": "Expression properties accept a row path such as row.sla or a controlled formula prefixed with =, such as = row.sla.",
                                    "required": [
                                      "kind",
                                      "fallbackText"
                                    ],
                                    "properties": {
                                      "kind": {
                                        "enum": [
                                          "line",
                                          "area",
                                          "column",
                                          "comparison",
                                          "stackedBar",
                                          "radial",
                                          "harveyBall",
                                          "bullet",
                                          "delta",
                                          "processFlow"
                                        ],
                                        "description": "Table-cell guidance: recommended for rapid scanning: delta, bullet, radial, harveyBall, stackedBar. Conditional: line, area and column require horizontal space; comparison increases row height; processFlow needs recognizable steps."
                                      },
                                      "surface": {
                                        "const": "table-cell"
                                      },
                                      "size": {
                                        "enum": [
                                          "xs",
                                          "sm",
                                          "md",
                                          "lg",
                                          "responsive"
                                        ]
                                      },
                                      "value": {},
                                      "valueExpr": {
                                        "type": "string"
                                      },
                                      "valueSuffix": {
                                        "type": "string"
                                      },
                                      "valueSuffixExpr": {
                                        "type": "string"
                                      },
                                      "total": {
                                        "type": "number"
                                      },
                                      "totalExpr": {
                                        "type": "string"
                                      },
                                      "target": {
                                        "type": "number"
                                      },
                                      "targetExpr": {
                                        "type": "string"
                                      },
                                      "baseline": {
                                        "type": "number"
                                      },
                                      "baselineExpr": {
                                        "type": "string"
                                      },
                                      "segments": {
                                        "type": "array"
                                      },
                                      "segmentsExpr": {
                                        "type": "string"
                                      },
                                      "points": {
                                        "type": "array"
                                      },
                                      "pointsExpr": {
                                        "type": "string"
                                      },
                                      "thresholds": {
                                        "type": "array"
                                      },
                                      "thresholdsExpr": {
                                        "type": "string"
                                      },
                                      "items": {
                                        "type": "array"
                                      },
                                      "itemsExpr": {
                                        "type": "string"
                                      },
                                      "tone": {
                                        "enum": [
                                          "neutral",
                                          "info",
                                          "success",
                                          "warning",
                                          "danger",
                                          "critical"
                                        ]
                                      },
                                      "toneExpr": {
                                        "type": "string"
                                      },
                                      "ariaLabel": {
                                        "type": "string"
                                      },
                                      "ariaLabelExpr": {
                                        "type": "string"
                                      },
                                      "fallbackText": {
                                        "type": "string"
                                      },
                                      "fallbackTextExpr": {
                                        "type": "string"
                                      }
                                    },
                                    "allOf": [
                                      {
                                        "if": {
                                          "properties": {
                                            "kind": {
                                              "enum": [
                                                "delta",
                                                "bullet",
                                                "radial",
                                                "harveyBall"
                                              ]
                                            }
                                          }
                                        },
                                        "then": {
                                          "anyOf": [
                                            {
                                              "required": [
                                                "value"
                                              ]
                                            },
                                            {
                                              "required": [
                                                "valueExpr"
                                              ]
                                            }
                                          ]
                                        }
                                      },
                                      {
                                        "if": {
                                          "properties": {
                                            "kind": {
                                              "enum": [
                                                "line",
                                                "area",
                                                "column",
                                                "comparison"
                                              ]
                                            }
                                          }
                                        },
                                        "then": {
                                          "anyOf": [
                                            {
                                              "required": [
                                                "points"
                                              ]
                                            },
                                            {
                                              "required": [
                                                "pointsExpr"
                                              ]
                                            }
                                          ]
                                        }
                                      },
                                      {
                                        "if": {
                                          "properties": {
                                            "kind": {
                                              "const": "stackedBar"
                                            }
                                          }
                                        },
                                        "then": {
                                          "anyOf": [
                                            {
                                              "required": [
                                                "segments"
                                              ]
                                            },
                                            {
                                              "required": [
                                                "segmentsExpr"
                                              ]
                                            }
                                          ]
                                        }
                                      },
                                      {
                                        "if": {
                                          "properties": {
                                            "kind": {
                                              "const": "processFlow"
                                            }
                                          }
                                        },
                                        "then": {
                                          "anyOf": [
                                            {
                                              "required": [
                                                "items"
                                              ]
                                            },
                                            {
                                              "required": [
                                                "itemsExpr"
                                              ]
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  }
                                }
                              },
                              "html": {
                                "type": "object",
                                "required": [
                                  "template"
                                ],
                                "properties": {
                                  "template": {
                                    "type": "string"
                                  },
                                  "sanitize": {
                                    "enum": [
                                      "strict",
                                      "basic"
                                    ]
                                  },
                                  "emptyFallback": {
                                    "type": "string"
                                  }
                                }
                              }
                            },
                            "allOf": [
                              {
                                "if": {
                                  "properties": {
                                    "type": {
                                      "const": "button"
                                    }
                                  }
                                },
                                "then": {
                                  "required": [
                                    "button"
                                  ]
                                }
                              },
                              {
                                "if": {
                                  "properties": {
                                    "type": {
                                      "const": "menu"
                                    }
                                  }
                                },
                                "then": {
                                  "required": [
                                    "menu"
                                  ]
                                }
                              },
                              {
                                "if": {
                                  "properties": {
                                    "type": {
                                      "const": "link"
                                    }
                                  }
                                },
                                "then": {
                                  "required": [
                                    "link"
                                  ]
                                }
                              },
                              {
                                "if": {
                                  "properties": {
                                    "type": {
                                      "const": "progress"
                                    }
                                  }
                                },
                                "then": {
                                  "required": [
                                    "progress"
                                  ]
                                }
                              },
                              {
                                "if": {
                                  "properties": {
                                    "type": {
                                      "const": "badge"
                                    }
                                  }
                                },
                                "then": {
                                  "required": [
                                    "badge"
                                  ]
                                }
                              },
                              {
                                "if": {
                                  "properties": {
                                    "type": {
                                      "const": "chip"
                                    }
                                  }
                                },
                                "then": {
                                  "required": [
                                    "chip"
                                  ]
                                }
                              },
                              {
                                "if": {
                                  "properties": {
                                    "type": {
                                      "const": "icon"
                                    }
                                  }
                                },
                                "then": {
                                  "required": [
                                    "icon"
                                  ]
                                }
                              },
                              {
                                "if": {
                                  "properties": {
                                    "type": {
                                      "const": "image"
                                    }
                                  }
                                },
                                "then": {
                                  "required": [
                                    "image"
                                  ]
                                }
                              },
                              {
                                "if": {
                                  "properties": {
                                    "type": {
                                      "const": "avatar"
                                    }
                                  }
                                },
                                "then": {
                                  "required": [
                                    "avatar"
                                  ]
                                }
                              },
                              {
                                "if": {
                                  "properties": {
                                    "type": {
                                      "const": "toggle"
                                    }
                                  }
                                },
                                "then": {
                                  "required": [
                                    "toggle"
                                  ]
                                }
                              },
                              {
                                "if": {
                                  "properties": {
                                    "type": {
                                      "const": "rating"
                                    }
                                  }
                                },
                                "then": {
                                  "required": [
                                    "rating"
                                  ]
                                }
                              },
                              {
                                "if": {
                                  "properties": {
                                    "type": {
                                      "const": "microVisualization"
                                    }
                                  }
                                },
                                "then": {
                                  "required": [
                                    "microVisualization"
                                  ]
                                }
                              },
                              {
                                "if": {
                                  "properties": {
                                    "type": {
                                      "const": "html"
                                    }
                                  }
                                },
                                "then": {
                                  "required": [
                                    "html"
                                  ]
                                }
                              }
                            ]
                          }
                        },
                        "layout": {
                          "type": "object",
                          "minProperties": 1,
                          "properties": {
                            "gap": {
                              "type": "number"
                            },
                            "direction": {
                              "enum": [
                                "row",
                                "column"
                              ],
                              "description": "row coloca os itens lado a lado na mesma linha; column empilha verticalmente, por exemplo foto em cima e código embaixo."
                            },
                            "align": {
                              "enum": [
                                "start",
                                "center",
                                "end"
                              ]
                            },
                            "wrap": {
                              "type": "boolean"
                            },
                            "ellipsis": {
                              "type": "boolean"
                            }
                          }
                        }
                      }
                    }
                  },
                  "allOf": [
                    {
                      "if": {
                        "properties": {
                          "type": {
                            "const": "button"
                          }
                        }
                      },
                      "then": {
                        "required": [
                          "button"
                        ]
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "type": {
                            "const": "menu"
                          }
                        }
                      },
                      "then": {
                        "required": [
                          "menu"
                        ]
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "type": {
                            "const": "link"
                          }
                        }
                      },
                      "then": {
                        "required": [
                          "link"
                        ]
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "type": {
                            "const": "progress"
                          }
                        }
                      },
                      "then": {
                        "required": [
                          "progress"
                        ]
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "type": {
                            "const": "badge"
                          }
                        }
                      },
                      "then": {
                        "required": [
                          "badge"
                        ]
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "type": {
                            "const": "chip"
                          }
                        }
                      },
                      "then": {
                        "required": [
                          "chip"
                        ]
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "type": {
                            "const": "icon"
                          }
                        }
                      },
                      "then": {
                        "required": [
                          "icon"
                        ]
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "type": {
                            "const": "image"
                          }
                        }
                      },
                      "then": {
                        "required": [
                          "image"
                        ]
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "type": {
                            "const": "avatar"
                          }
                        }
                      },
                      "then": {
                        "required": [
                          "avatar"
                        ]
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "type": {
                            "const": "toggle"
                          }
                        }
                      },
                      "then": {
                        "required": [
                          "toggle"
                        ]
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "type": {
                            "const": "rating"
                          }
                        }
                      },
                      "then": {
                        "required": [
                          "rating"
                        ]
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "type": {
                            "const": "microVisualization"
                          }
                        }
                      },
                      "then": {
                        "required": [
                          "microVisualization"
                        ]
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "type": {
                            "const": "html"
                          }
                        }
                      },
                      "then": {
                        "required": [
                          "html"
                        ]
                      }
                    },
                    {
                      "if": {
                        "properties": {
                          "type": {
                            "const": "compose"
                          }
                        }
                      },
                      "then": {
                        "required": [
                          "compose"
                        ]
                      }
                    }
                  ]
                },
                "tooltip": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "text": {
                      "type": "string"
                    },
                    "position": {
                      "enum": [
                        "top",
                        "right",
                        "bottom",
                        "left"
                      ]
                    },
                    "bgColor": {
                      "type": "string"
                    },
                    "delayMs": {
                      "type": "number"
                    }
                  }
                },
                "animation": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "enabled": {
                      "type": "boolean",
                      "description": "false desativa a animacao sem remover a regra."
                    },
                    "preset": {
                      "enum": [
                        "info-soft",
                        "success-confirm",
                        "warning-attention",
                        "critical-alert",
                        "audit-review",
                        "sync-pending",
                        "pulse-soft",
                        "fade-soft",
                        "sla-warning",
                        "sla-breach",
                        "risk-elevated",
                        "risk-critical",
                        "audit-warning",
                        "sync-warning"
                      ],
                      "description": "Preset semantico recomendado. Preferir preset antes de type bruto."
                    },
                    "type": {
                      "enum": [
                        "pulse",
                        "blink",
                        "grow",
                        "fade",
                        "slide-in",
                        "border-pulse"
                      ]
                    },
                    "durationMs": {
                      "type": "number"
                    },
                    "trigger": {
                      "enum": [
                        "onChange",
                        "onAppear",
                        "onHover",
                        "onConditionEnter",
                        "onConditionExit",
                        "onDataRefresh"
                      ]
                    },
                    "repeat": {
                      "oneOf": [
                        {
                          "enum": [
                            "once",
                            "loop",
                            "infinite"
                          ]
                        },
                        {
                          "type": "number"
                        }
                      ]
                    },
                    "delayMs": {
                      "type": "number"
                    },
                    "intensity": {
                      "enum": [
                        "subtle",
                        "normal",
                        "strong"
                      ]
                    }
                  }
                },
                "effects": {
                  "type": "array",
                  "description": "Efeitos complementares de estilo, layout, icone ou badge. Nao substituem renderer quando a intencao exige um tipo visual especifico como chip.",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "scope": {
                        "enum": [
                          "cell",
                          "row",
                          "column",
                          "table"
                        ]
                      },
                      "description": {
                        "type": "string"
                      },
                      "estilo": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "color": {
                            "type": "string"
                          },
                          "bgColor": {
                            "type": "string"
                          },
                          "bold": {
                            "type": "boolean"
                          },
                          "italic": {
                            "type": "boolean"
                          },
                          "underline": {
                            "type": "boolean"
                          },
                          "transform": {
                            "enum": [
                              "uppercase",
                              "lowercase",
                              "capitalize",
                              null
                            ]
                          },
                          "opacity": {
                            "type": "number"
                          },
                          "fontScale": {
                            "type": "number"
                          }
                        }
                      },
                      "layout": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "border": {
                            "enum": [
                              "none",
                              "left",
                              "right",
                              "top",
                              "bottom",
                              "all"
                            ]
                          },
                          "borderColor": {
                            "type": "string"
                          },
                          "borderWidth": {
                            "type": "number"
                          },
                          "padding": {
                            "type": "number"
                          },
                          "align": {
                            "enum": [
                              "start",
                              "center",
                              "end"
                            ]
                          },
                          "elevation": {
                            "type": "number"
                          }
                        }
                      },
                      "iconBadge": {
                        "type": "object",
                        "description": "Adiciona icone e/ou badge ao valor materializado. Nao representa chip; para chip use renderer.type \"chip\" e renderer.chip.",
                        "additionalProperties": false,
                        "properties": {
                          "icon": {
                            "type": "string"
                          },
                          "iconColor": {
                            "type": "string"
                          },
                          "iconPos": {
                            "enum": [
                              "before",
                              "after",
                              "overlay"
                            ]
                          },
                          "badgeText": {
                            "type": "string"
                          },
                          "badgeStyle": {
                            "enum": [
                              "solid",
                              "soft",
                              "outline"
                            ]
                          },
                          "badgeColor": {
                            "type": "string"
                          }
                        }
                      },
                      "background": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "color": {
                            "type": "string"
                          },
                          "gradient": {
                            "type": "string"
                          },
                          "alpha": {
                            "type": "number"
                          },
                          "blur": {
                            "type": "number"
                          }
                        }
                      },
                      "animation": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "false desativa a animacao sem remover a regra."
                          },
                          "preset": {
                            "enum": [
                              "info-soft",
                              "success-confirm",
                              "warning-attention",
                              "critical-alert",
                              "audit-review",
                              "sync-pending",
                              "pulse-soft",
                              "fade-soft",
                              "sla-warning",
                              "sla-breach",
                              "risk-elevated",
                              "risk-critical",
                              "audit-warning",
                              "sync-warning"
                            ],
                            "description": "Preset semantico recomendado. Preferir preset antes de type bruto."
                          },
                          "type": {
                            "enum": [
                              "pulse",
                              "blink",
                              "grow",
                              "fade",
                              "slide-in",
                              "border-pulse"
                            ]
                          },
                          "durationMs": {
                            "type": "number"
                          },
                          "trigger": {
                            "enum": [
                              "onChange",
                              "onAppear",
                              "onHover",
                              "onConditionEnter",
                              "onConditionExit",
                              "onDataRefresh"
                            ]
                          },
                          "repeat": {
                            "oneOf": [
                              {
                                "enum": [
                                  "once",
                                  "loop",
                                  "infinite"
                                ]
                              },
                              {
                                "type": "number"
                              }
                            ]
                          },
                          "delayMs": {
                            "type": "number"
                          },
                          "intensity": {
                            "enum": [
                              "subtle",
                              "normal",
                              "strong"
                            ]
                          }
                        }
                      },
                      "tooltip": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "text": {
                            "type": "string"
                          },
                          "position": {
                            "enum": [
                              "top",
                              "right",
                              "bottom",
                              "left"
                            ]
                          },
                          "bgColor": {
                            "type": "string"
                          },
                          "delayMs": {
                            "type": "number"
                          }
                        }
                      },
                      "cssClass": {
                        "type": "string"
                      },
                      "inlineStyle": {
                        "type": "string"
                      }
                    }
                  }
                },
                "enabled": {
                  "type": "boolean"
                },
                "description": {
                  "type": "string"
                }
              },
              "anyOf": [
                {
                  "required": [
                    "renderer"
                  ]
                },
                {
                  "required": [
                    "tooltip"
                  ]
                },
                {
                  "required": [
                    "animation"
                  ]
                },
                {
                  "required": [
                    "effects"
                  ]
                }
              ]
            },
            "effects": [
              {
                "kind": "append-unique",
                "path": "columns[].conditionalRenderers[]",
                "key": "id"
              }
            ],
            "validators": [
              "target-column-exists",
              "computed-expression-valid",
              "renderer-config-match",
              "renderer-fields-exist"
            ],
            "affectedPaths": [
              "columns[].conditionalRenderers[]",
              "columns[].conditionalRenderers[].tooltip",
              "columns[].conditionalRenderers[].animation",
              "columns[].conditionalRenderers[].effects"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized",
              "target-exists"
            ]
          },
          {
            "operationId": "column.conditionalStyle.add",
            "title": "Adicionar regra de estilo condicional na coluna",
            "scope": "column",
            "targetKind": "rule",
            "target": {
              "kind": "rule",
              "resolver": "style-rule-in-column-or-row",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "id",
                "condition"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Identificador estÃ¡vel da regra de estilo da coluna"
                },
                "condition": {
                  "type": "object",
                  "description": "AST Json Logic"
                },
                "surfacePresetRef": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "id",
                    "catalogVersion"
                  ],
                  "properties": {
                    "id": {
                      "enum": [
                        "success",
                        "warning",
                        "danger",
                        "highlight"
                      ]
                    },
                    "catalogVersion": {
                      "const": "0.2.0"
                    }
                  }
                },
                "cssClass": {
                  "type": "string"
                },
                "style": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "background": {
                      "type": "string"
                    },
                    "backgroundColor": {
                      "type": "string"
                    },
                    "background-color": {
                      "type": "string"
                    },
                    "color": {
                      "type": "string"
                    },
                    "fontWeight": {
                      "type": "string"
                    },
                    "font-weight": {
                      "type": "string"
                    },
                    "fontStyle": {
                      "type": "string"
                    },
                    "font-style": {
                      "type": "string"
                    },
                    "textDecoration": {
                      "type": "string"
                    },
                    "text-decoration": {
                      "type": "string"
                    },
                    "textTransform": {
                      "type": "string"
                    },
                    "text-transform": {
                      "type": "string"
                    },
                    "opacity": {
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "number"
                        }
                      ]
                    },
                    "border": {
                      "type": "string"
                    },
                    "borderLeft": {
                      "type": "string"
                    },
                    "border-left": {
                      "type": "string"
                    },
                    "borderRight": {
                      "type": "string"
                    },
                    "border-right": {
                      "type": "string"
                    },
                    "borderTop": {
                      "type": "string"
                    },
                    "border-top": {
                      "type": "string"
                    },
                    "borderBottom": {
                      "type": "string"
                    },
                    "border-bottom": {
                      "type": "string"
                    }
                  }
                },
                "tooltip": {
                  "type": "object"
                },
                "effects": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "scope": {
                        "enum": [
                          "cell",
                          "row",
                          "column",
                          "table"
                        ]
                      },
                      "description": {
                        "type": "string"
                      },
                      "estilo": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "color": {
                            "type": "string"
                          },
                          "bgColor": {
                            "type": "string"
                          },
                          "bold": {
                            "type": "boolean"
                          },
                          "italic": {
                            "type": "boolean"
                          },
                          "underline": {
                            "type": "boolean"
                          },
                          "transform": {
                            "enum": [
                              "uppercase",
                              "lowercase",
                              "capitalize",
                              null
                            ]
                          },
                          "opacity": {
                            "type": "number"
                          },
                          "fontScale": {
                            "type": "number"
                          }
                        }
                      },
                      "layout": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "border": {
                            "enum": [
                              "none",
                              "left",
                              "right",
                              "top",
                              "bottom",
                              "all"
                            ]
                          },
                          "borderColor": {
                            "type": "string"
                          },
                          "borderWidth": {
                            "type": "number"
                          },
                          "padding": {
                            "type": "number"
                          },
                          "align": {
                            "enum": [
                              "start",
                              "center",
                              "end"
                            ]
                          },
                          "elevation": {
                            "type": "number"
                          }
                        }
                      },
                      "iconBadge": {
                        "type": "object",
                        "description": "Adiciona icone e/ou badge ao valor materializado. Nao representa chip; para chip use renderer.type \"chip\" e renderer.chip.",
                        "additionalProperties": false,
                        "properties": {
                          "icon": {
                            "type": "string"
                          },
                          "iconColor": {
                            "type": "string"
                          },
                          "iconPos": {
                            "enum": [
                              "before",
                              "after",
                              "overlay"
                            ]
                          },
                          "badgeText": {
                            "type": "string"
                          },
                          "badgeStyle": {
                            "enum": [
                              "solid",
                              "soft",
                              "outline"
                            ]
                          },
                          "badgeColor": {
                            "type": "string"
                          }
                        }
                      },
                      "background": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "color": {
                            "type": "string"
                          },
                          "gradient": {
                            "type": "string"
                          },
                          "alpha": {
                            "type": "number"
                          },
                          "blur": {
                            "type": "number"
                          }
                        }
                      },
                      "animation": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "false desativa a animacao sem remover a regra."
                          },
                          "preset": {
                            "enum": [
                              "info-soft",
                              "success-confirm",
                              "warning-attention",
                              "critical-alert",
                              "audit-review",
                              "sync-pending",
                              "pulse-soft",
                              "fade-soft",
                              "sla-warning",
                              "sla-breach",
                              "risk-elevated",
                              "risk-critical",
                              "audit-warning",
                              "sync-warning"
                            ],
                            "description": "Preset semantico recomendado. Preferir preset antes de type bruto."
                          },
                          "type": {
                            "enum": [
                              "pulse",
                              "blink",
                              "grow",
                              "fade",
                              "slide-in",
                              "border-pulse"
                            ]
                          },
                          "durationMs": {
                            "type": "number"
                          },
                          "trigger": {
                            "enum": [
                              "onChange",
                              "onAppear",
                              "onHover",
                              "onConditionEnter",
                              "onConditionExit",
                              "onDataRefresh"
                            ]
                          },
                          "repeat": {
                            "oneOf": [
                              {
                                "enum": [
                                  "once",
                                  "loop",
                                  "infinite"
                                ]
                              },
                              {
                                "type": "number"
                              }
                            ]
                          },
                          "delayMs": {
                            "type": "number"
                          },
                          "intensity": {
                            "enum": [
                              "subtle",
                              "normal",
                              "strong"
                            ]
                          }
                        }
                      },
                      "tooltip": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "text": {
                            "type": "string"
                          },
                          "position": {
                            "enum": [
                              "top",
                              "right",
                              "bottom",
                              "left"
                            ]
                          },
                          "bgColor": {
                            "type": "string"
                          },
                          "delayMs": {
                            "type": "number"
                          }
                        }
                      },
                      "cssClass": {
                        "type": "string"
                      },
                      "inlineStyle": {
                        "type": "string"
                      }
                    }
                  }
                },
                "description": {
                  "type": "string"
                }
              },
              "anyOf": [
                {
                  "required": [
                    "surfacePresetRef"
                  ]
                },
                {
                  "required": [
                    "cssClass"
                  ]
                },
                {
                  "required": [
                    "style"
                  ]
                },
                {
                  "required": [
                    "tooltip"
                  ]
                },
                {
                  "required": [
                    "effects"
                  ]
                }
              ]
            },
            "effects": [
              {
                "kind": "append-unique",
                "path": "columns[].conditionalStyles[]",
                "key": "id"
              }
            ],
            "validators": [
              "target-column-exists",
              "computed-expression-valid",
              "conditional-style-valid",
              "conditional-surface-accessible"
            ],
            "affectedPaths": [
              "columns[].conditionalStyles[]",
              "columns[].conditionalStyles[].effects",
              "columns[].conditionalStyles[].tooltip"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized",
              "target-exists"
            ]
          },
          {
            "operationId": "row.styleRule.add",
            "title": "Adicionar destaque visual condicional à linha",
            "scope": "global",
            "targetKind": "rule",
            "target": {
              "kind": "rule",
              "resolver": "style-rule-in-column-or-row",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "id",
                "condition"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Identificador estável da regra (usado para deduplicação via append-unique)"
                },
                "condition": {
                  "type": "object",
                  "description": "AST Json Logic"
                },
                "surfacePresetRef": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "id",
                    "catalogVersion"
                  ],
                  "properties": {
                    "id": {
                      "enum": [
                        "success",
                        "warning",
                        "danger",
                        "highlight"
                      ]
                    },
                    "catalogVersion": {
                      "const": "0.2.0"
                    }
                  }
                },
                "style": {
                  "description": "Estilo CSS seguro; fundo sem color usa foreground automático governado no runtime"
                },
                "cssClass": {
                  "type": "string"
                },
                "effects": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "scope": {
                        "enum": [
                          "cell",
                          "row",
                          "column",
                          "table"
                        ]
                      },
                      "description": {
                        "type": "string"
                      },
                      "estilo": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "color": {
                            "type": "string"
                          },
                          "bgColor": {
                            "type": "string"
                          },
                          "bold": {
                            "type": "boolean"
                          },
                          "italic": {
                            "type": "boolean"
                          },
                          "underline": {
                            "type": "boolean"
                          },
                          "transform": {
                            "enum": [
                              "uppercase",
                              "lowercase",
                              "capitalize",
                              null
                            ]
                          },
                          "opacity": {
                            "type": "number"
                          },
                          "fontScale": {
                            "type": "number"
                          }
                        }
                      },
                      "layout": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "border": {
                            "enum": [
                              "none",
                              "left",
                              "right",
                              "top",
                              "bottom",
                              "all"
                            ]
                          },
                          "borderColor": {
                            "type": "string"
                          },
                          "borderWidth": {
                            "type": "number"
                          },
                          "padding": {
                            "type": "number"
                          },
                          "align": {
                            "enum": [
                              "start",
                              "center",
                              "end"
                            ]
                          },
                          "elevation": {
                            "type": "number"
                          }
                        }
                      },
                      "iconBadge": {
                        "type": "object",
                        "description": "Adiciona icone e/ou badge ao valor materializado. Nao representa chip; para chip use renderer.type \"chip\" e renderer.chip.",
                        "additionalProperties": false,
                        "properties": {
                          "icon": {
                            "type": "string"
                          },
                          "iconColor": {
                            "type": "string"
                          },
                          "iconPos": {
                            "enum": [
                              "before",
                              "after",
                              "overlay"
                            ]
                          },
                          "badgeText": {
                            "type": "string"
                          },
                          "badgeStyle": {
                            "enum": [
                              "solid",
                              "soft",
                              "outline"
                            ]
                          },
                          "badgeColor": {
                            "type": "string"
                          }
                        }
                      },
                      "background": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "color": {
                            "type": "string"
                          },
                          "gradient": {
                            "type": "string"
                          },
                          "alpha": {
                            "type": "number"
                          },
                          "blur": {
                            "type": "number"
                          }
                        }
                      },
                      "animation": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "false desativa a animacao sem remover a regra."
                          },
                          "preset": {
                            "enum": [
                              "info-soft",
                              "success-confirm",
                              "warning-attention",
                              "critical-alert",
                              "audit-review",
                              "sync-pending",
                              "pulse-soft",
                              "fade-soft",
                              "sla-warning",
                              "sla-breach",
                              "risk-elevated",
                              "risk-critical",
                              "audit-warning",
                              "sync-warning"
                            ],
                            "description": "Preset semantico recomendado. Preferir preset antes de type bruto."
                          },
                          "type": {
                            "enum": [
                              "pulse",
                              "blink",
                              "grow",
                              "fade",
                              "slide-in",
                              "border-pulse"
                            ]
                          },
                          "durationMs": {
                            "type": "number"
                          },
                          "trigger": {
                            "enum": [
                              "onChange",
                              "onAppear",
                              "onHover",
                              "onConditionEnter",
                              "onConditionExit",
                              "onDataRefresh"
                            ]
                          },
                          "repeat": {
                            "oneOf": [
                              {
                                "enum": [
                                  "once",
                                  "loop",
                                  "infinite"
                                ]
                              },
                              {
                                "type": "number"
                              }
                            ]
                          },
                          "delayMs": {
                            "type": "number"
                          },
                          "intensity": {
                            "enum": [
                              "subtle",
                              "normal",
                              "strong"
                            ]
                          }
                        }
                      },
                      "tooltip": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "text": {
                            "type": "string"
                          },
                          "position": {
                            "enum": [
                              "top",
                              "right",
                              "bottom",
                              "left"
                            ]
                          },
                          "bgColor": {
                            "type": "string"
                          },
                          "delayMs": {
                            "type": "number"
                          }
                        }
                      },
                      "cssClass": {
                        "type": "string"
                      },
                      "inlineStyle": {
                        "type": "string"
                      }
                    }
                  }
                },
                "description": {
                  "type": "string"
                }
              },
              "anyOf": [
                {
                  "required": [
                    "surfacePresetRef"
                  ]
                },
                {
                  "required": [
                    "cssClass"
                  ]
                },
                {
                  "required": [
                    "style"
                  ]
                },
                {
                  "required": [
                    "effects"
                  ]
                }
              ]
            },
            "effects": [
              {
                "kind": "append-unique",
                "path": "rowConditionalStyles[]",
                "key": "id"
              }
            ],
            "validators": [
              "computed-expression-valid",
              "conditional-surface-accessible"
            ],
            "affectedPaths": [
              "rowConditionalStyles[]",
              "rowConditionalStyles[].effects"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "row.styleRule.update",
            "title": "Atualizar destaque visual condicional existente da linha",
            "scope": "rule",
            "targetKind": "rule",
            "target": {
              "kind": "rule",
              "resolver": "style-rule-in-column-or-row",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "properties": {
                "condition": {
                  "type": "object",
                  "description": "Nova AST Json Logic; omita para preservar a condição atual"
                },
                "surfacePresetRef": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "id",
                    "catalogVersion"
                  ],
                  "properties": {
                    "id": {
                      "enum": [
                        "success",
                        "warning",
                        "danger",
                        "highlight"
                      ]
                    },
                    "catalogVersion": {
                      "const": "0.2.0"
                    }
                  }
                },
                "style": {
                  "description": "Novo estilo CSS seguro; omitir color mantém foreground automático"
                },
                "cssClass": {
                  "type": "string"
                },
                "effects": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "scope": {
                        "enum": [
                          "cell",
                          "row",
                          "column",
                          "table"
                        ]
                      },
                      "description": {
                        "type": "string"
                      },
                      "estilo": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "color": {
                            "type": "string"
                          },
                          "bgColor": {
                            "type": "string"
                          },
                          "bold": {
                            "type": "boolean"
                          },
                          "italic": {
                            "type": "boolean"
                          },
                          "underline": {
                            "type": "boolean"
                          },
                          "transform": {
                            "enum": [
                              "uppercase",
                              "lowercase",
                              "capitalize",
                              null
                            ]
                          },
                          "opacity": {
                            "type": "number"
                          },
                          "fontScale": {
                            "type": "number"
                          }
                        }
                      },
                      "layout": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "border": {
                            "enum": [
                              "none",
                              "left",
                              "right",
                              "top",
                              "bottom",
                              "all"
                            ]
                          },
                          "borderColor": {
                            "type": "string"
                          },
                          "borderWidth": {
                            "type": "number"
                          },
                          "padding": {
                            "type": "number"
                          },
                          "align": {
                            "enum": [
                              "start",
                              "center",
                              "end"
                            ]
                          },
                          "elevation": {
                            "type": "number"
                          }
                        }
                      },
                      "iconBadge": {
                        "type": "object",
                        "description": "Adiciona icone e/ou badge ao valor materializado. Nao representa chip; para chip use renderer.type \"chip\" e renderer.chip.",
                        "additionalProperties": false,
                        "properties": {
                          "icon": {
                            "type": "string"
                          },
                          "iconColor": {
                            "type": "string"
                          },
                          "iconPos": {
                            "enum": [
                              "before",
                              "after",
                              "overlay"
                            ]
                          },
                          "badgeText": {
                            "type": "string"
                          },
                          "badgeStyle": {
                            "enum": [
                              "solid",
                              "soft",
                              "outline"
                            ]
                          },
                          "badgeColor": {
                            "type": "string"
                          }
                        }
                      },
                      "background": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "color": {
                            "type": "string"
                          },
                          "gradient": {
                            "type": "string"
                          },
                          "alpha": {
                            "type": "number"
                          },
                          "blur": {
                            "type": "number"
                          }
                        }
                      },
                      "animation": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "false desativa a animacao sem remover a regra."
                          },
                          "preset": {
                            "enum": [
                              "info-soft",
                              "success-confirm",
                              "warning-attention",
                              "critical-alert",
                              "audit-review",
                              "sync-pending",
                              "pulse-soft",
                              "fade-soft",
                              "sla-warning",
                              "sla-breach",
                              "risk-elevated",
                              "risk-critical",
                              "audit-warning",
                              "sync-warning"
                            ],
                            "description": "Preset semantico recomendado. Preferir preset antes de type bruto."
                          },
                          "type": {
                            "enum": [
                              "pulse",
                              "blink",
                              "grow",
                              "fade",
                              "slide-in",
                              "border-pulse"
                            ]
                          },
                          "durationMs": {
                            "type": "number"
                          },
                          "trigger": {
                            "enum": [
                              "onChange",
                              "onAppear",
                              "onHover",
                              "onConditionEnter",
                              "onConditionExit",
                              "onDataRefresh"
                            ]
                          },
                          "repeat": {
                            "oneOf": [
                              {
                                "enum": [
                                  "once",
                                  "loop",
                                  "infinite"
                                ]
                              },
                              {
                                "type": "number"
                              }
                            ]
                          },
                          "delayMs": {
                            "type": "number"
                          },
                          "intensity": {
                            "enum": [
                              "subtle",
                              "normal",
                              "strong"
                            ]
                          }
                        }
                      },
                      "tooltip": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "text": {
                            "type": "string"
                          },
                          "position": {
                            "enum": [
                              "top",
                              "right",
                              "bottom",
                              "left"
                            ]
                          },
                          "bgColor": {
                            "type": "string"
                          },
                          "delayMs": {
                            "type": "number"
                          }
                        }
                      },
                      "cssClass": {
                        "type": "string"
                      },
                      "inlineStyle": {
                        "type": "string"
                      }
                    }
                  }
                },
                "description": {
                  "type": "string",
                  "description": "Descrição semântica atualizada da regra visual"
                }
              },
              "anyOf": [
                {
                  "required": [
                    "condition"
                  ]
                },
                {
                  "required": [
                    "surfacePresetRef"
                  ]
                },
                {
                  "required": [
                    "cssClass"
                  ]
                },
                {
                  "required": [
                    "style"
                  ]
                },
                {
                  "required": [
                    "effects"
                  ]
                },
                {
                  "required": [
                    "description"
                  ]
                }
              ]
            },
            "effects": [
              {
                "kind": "merge-by-key",
                "path": "rowConditionalStyles[]",
                "key": "id"
              }
            ],
            "validators": [
              "computed-expression-valid",
              "conditional-surface-accessible"
            ],
            "affectedPaths": [
              "rowConditionalStyles[]",
              "rowConditionalStyles[].condition",
              "rowConditionalStyles[].surfacePresetRef",
              "rowConditionalStyles[].style",
              "rowConditionalStyles[].cssClass",
              "rowConditionalStyles[].effects",
              "rowConditionalStyles[].description"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized",
              "target-exists"
            ]
          },
          {
            "operationId": "row.conditionalRenderer.add",
            "title": "Adicionar renderizador condicional de linha",
            "scope": "global",
            "targetKind": "conditionalRenderer",
            "target": {
              "kind": "conditionalRenderer",
              "resolver": "conditional-renderer-in-row",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "id",
                "condition"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Identificador estavel da regra de renderer de linha"
                },
                "condition": {
                  "type": "object",
                  "description": "AST Json Logic"
                },
                "tooltip": {
                  "type": "object",
                  "description": "Tooltip de linha"
                },
                "animation": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "enabled": {
                      "type": "boolean",
                      "description": "false desativa a animacao sem remover a regra."
                    },
                    "preset": {
                      "enum": [
                        "info-soft",
                        "success-confirm",
                        "warning-attention",
                        "critical-alert",
                        "audit-review",
                        "sync-pending",
                        "pulse-soft",
                        "fade-soft",
                        "sla-warning",
                        "sla-breach",
                        "risk-elevated",
                        "risk-critical",
                        "audit-warning",
                        "sync-warning"
                      ],
                      "description": "Preset semantico recomendado. Preferir preset antes de type bruto."
                    },
                    "type": {
                      "enum": [
                        "pulse",
                        "blink",
                        "grow",
                        "fade",
                        "slide-in",
                        "border-pulse"
                      ]
                    },
                    "durationMs": {
                      "type": "number"
                    },
                    "trigger": {
                      "enum": [
                        "onChange",
                        "onAppear",
                        "onHover",
                        "onConditionEnter",
                        "onConditionExit",
                        "onDataRefresh"
                      ]
                    },
                    "repeat": {
                      "oneOf": [
                        {
                          "enum": [
                            "once",
                            "loop",
                            "infinite"
                          ]
                        },
                        {
                          "type": "number"
                        }
                      ]
                    },
                    "delayMs": {
                      "type": "number"
                    },
                    "intensity": {
                      "enum": [
                        "subtle",
                        "normal",
                        "strong"
                      ]
                    }
                  }
                },
                "effects": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "scope": {
                        "enum": [
                          "cell",
                          "row",
                          "column",
                          "table"
                        ]
                      },
                      "description": {
                        "type": "string"
                      },
                      "estilo": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "color": {
                            "type": "string"
                          },
                          "bgColor": {
                            "type": "string"
                          },
                          "bold": {
                            "type": "boolean"
                          },
                          "italic": {
                            "type": "boolean"
                          },
                          "underline": {
                            "type": "boolean"
                          },
                          "transform": {
                            "enum": [
                              "uppercase",
                              "lowercase",
                              "capitalize",
                              null
                            ]
                          },
                          "opacity": {
                            "type": "number"
                          },
                          "fontScale": {
                            "type": "number"
                          }
                        }
                      },
                      "layout": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "border": {
                            "enum": [
                              "none",
                              "left",
                              "right",
                              "top",
                              "bottom",
                              "all"
                            ]
                          },
                          "borderColor": {
                            "type": "string"
                          },
                          "borderWidth": {
                            "type": "number"
                          },
                          "padding": {
                            "type": "number"
                          },
                          "align": {
                            "enum": [
                              "start",
                              "center",
                              "end"
                            ]
                          },
                          "elevation": {
                            "type": "number"
                          }
                        }
                      },
                      "iconBadge": {
                        "type": "object",
                        "description": "Adiciona icone e/ou badge ao valor materializado. Nao representa chip; para chip use renderer.type \"chip\" e renderer.chip.",
                        "additionalProperties": false,
                        "properties": {
                          "icon": {
                            "type": "string"
                          },
                          "iconColor": {
                            "type": "string"
                          },
                          "iconPos": {
                            "enum": [
                              "before",
                              "after",
                              "overlay"
                            ]
                          },
                          "badgeText": {
                            "type": "string"
                          },
                          "badgeStyle": {
                            "enum": [
                              "solid",
                              "soft",
                              "outline"
                            ]
                          },
                          "badgeColor": {
                            "type": "string"
                          }
                        }
                      },
                      "background": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "color": {
                            "type": "string"
                          },
                          "gradient": {
                            "type": "string"
                          },
                          "alpha": {
                            "type": "number"
                          },
                          "blur": {
                            "type": "number"
                          }
                        }
                      },
                      "animation": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "false desativa a animacao sem remover a regra."
                          },
                          "preset": {
                            "enum": [
                              "info-soft",
                              "success-confirm",
                              "warning-attention",
                              "critical-alert",
                              "audit-review",
                              "sync-pending",
                              "pulse-soft",
                              "fade-soft",
                              "sla-warning",
                              "sla-breach",
                              "risk-elevated",
                              "risk-critical",
                              "audit-warning",
                              "sync-warning"
                            ],
                            "description": "Preset semantico recomendado. Preferir preset antes de type bruto."
                          },
                          "type": {
                            "enum": [
                              "pulse",
                              "blink",
                              "grow",
                              "fade",
                              "slide-in",
                              "border-pulse"
                            ]
                          },
                          "durationMs": {
                            "type": "number"
                          },
                          "trigger": {
                            "enum": [
                              "onChange",
                              "onAppear",
                              "onHover",
                              "onConditionEnter",
                              "onConditionExit",
                              "onDataRefresh"
                            ]
                          },
                          "repeat": {
                            "oneOf": [
                              {
                                "enum": [
                                  "once",
                                  "loop",
                                  "infinite"
                                ]
                              },
                              {
                                "type": "number"
                              }
                            ]
                          },
                          "delayMs": {
                            "type": "number"
                          },
                          "intensity": {
                            "enum": [
                              "subtle",
                              "normal",
                              "strong"
                            ]
                          }
                        }
                      },
                      "tooltip": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "text": {
                            "type": "string"
                          },
                          "position": {
                            "enum": [
                              "top",
                              "right",
                              "bottom",
                              "left"
                            ]
                          },
                          "bgColor": {
                            "type": "string"
                          },
                          "delayMs": {
                            "type": "number"
                          }
                        }
                      },
                      "cssClass": {
                        "type": "string"
                      },
                      "inlineStyle": {
                        "type": "string"
                      }
                    }
                  }
                },
                "enabled": {
                  "type": "boolean"
                },
                "description": {
                  "type": "string"
                }
              },
              "anyOf": [
                {
                  "required": [
                    "tooltip"
                  ]
                },
                {
                  "required": [
                    "animation"
                  ]
                },
                {
                  "required": [
                    "effects"
                  ]
                }
              ]
            },
            "effects": [
              {
                "kind": "append-unique",
                "path": "rowConditionalRenderers[]",
                "key": "id"
              }
            ],
            "validators": [
              "computed-expression-valid"
            ],
            "affectedPaths": [
              "rowConditionalRenderers[]",
              "rowConditionalRenderers[].condition",
              "rowConditionalRenderers[].tooltip",
              "rowConditionalRenderers[].animation",
              "rowConditionalRenderers[].effects"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "toolbar.visibility.set",
            "title": "Definir visibilidade da toolbar",
            "scope": "global",
            "targetKind": "toolbar",
            "target": {
              "kind": "toolbar",
              "resolver": "toolbar-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "visible"
              ],
              "properties": {
                "visible": {
                  "type": "boolean"
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "toolbar"
              }
            ],
            "affectedPaths": [
              "toolbar.visible"
            ],
            "validators": [
              "editor-round-trip-preserve"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "toolbar.action.add",
            "title": "Adicionar ação na toolbar",
            "scope": "global",
            "targetKind": "toolbarAction",
            "target": {
              "kind": "toolbarAction",
              "resolver": "action-in-toolbar-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "id",
                "label",
                "action"
              ],
              "properties": {
                "id": {
                  "type": "string"
                },
                "label": {
                  "type": "string"
                },
                "action": {
                  "type": "string"
                },
                "icon": {
                  "type": "string"
                },
                "type": {
                  "enum": [
                    "button",
                    "icon",
                    "menu"
                  ],
                  "default": "button"
                },
                "visibleWhen": {
                  "type": "object",
                  "description": "AST Json Logic"
                },
                "globalAction": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "actionId": {
                      "type": "string",
                      "enum": [
                        "toast.success",
                        "toast.error",
                        "dialog.alert",
                        "dialog.open",
                        "navigation.openExternal",
                        "navigation.openRoute",
                        "api.post",
                        "api.patch"
                      ]
                    },
                    "payload": {
                      "type": "object"
                    },
                    "payloadExpr": {
                      "type": "string"
                    }
                  }
                },
                "effects": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "kind",
                      "globalAction"
                    ],
                    "additionalProperties": false,
                    "properties": {
                      "kind": {
                        "enum": [
                          "global-action"
                        ]
                      },
                      "globalAction": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "actionId": {
                            "type": "string",
                            "enum": [
                              "toast.success",
                              "toast.error",
                              "dialog.alert",
                              "dialog.open",
                              "navigation.openExternal",
                              "navigation.openRoute",
                              "api.post",
                              "api.patch"
                            ]
                          },
                          "payload": {
                            "type": "object"
                          },
                          "payloadExpr": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            },
            "effects": [
              {
                "kind": "append-unique",
                "path": "toolbar.actions[]",
                "key": "id"
              }
            ],
            "validators": [
              "toolbar-action-id-unique"
            ],
            "affectedPaths": [
              "toolbar.actions[]",
              "toolbar.actions[].visibleWhen",
              "toolbar.actions[].effects"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "rowAction.add",
            "title": "Adicionar ação de linha",
            "scope": "global",
            "targetKind": "rowAction",
            "target": {
              "kind": "rowAction",
              "resolver": "action-in-row-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "id",
                "label",
                "action"
              ],
              "properties": {
                "id": {
                  "type": "string"
                },
                "label": {
                  "type": "string"
                },
                "action": {
                  "type": "string"
                },
                "icon": {
                  "type": "string"
                },
                "color": {
                  "type": "string"
                },
                "visibleWhen": {
                  "type": "object",
                  "description": "AST Json Logic"
                },
                "disabledWhen": {
                  "type": "object",
                  "description": "AST Json Logic"
                },
                "recordSurface": {
                  "type": "object",
                  "description": "ResourceSurfaceCatalogItem canonico preservado para abrir uma superficie relacionada ao registro da linha clicada."
                },
                "globalAction": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "actionId": {
                      "type": "string",
                      "enum": [
                        "toast.success",
                        "toast.error",
                        "dialog.alert",
                        "dialog.open",
                        "navigation.openExternal",
                        "navigation.openRoute",
                        "api.post",
                        "api.patch"
                      ]
                    },
                    "payload": {
                      "type": "object"
                    },
                    "payloadExpr": {
                      "type": "string"
                    }
                  }
                },
                "effects": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "kind",
                      "globalAction"
                    ],
                    "additionalProperties": false,
                    "properties": {
                      "kind": {
                        "enum": [
                          "global-action"
                        ]
                      },
                      "globalAction": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "actionId": {
                            "type": "string",
                            "enum": [
                              "toast.success",
                              "toast.error",
                              "dialog.alert",
                              "dialog.open",
                              "navigation.openExternal",
                              "navigation.openRoute",
                              "api.post",
                              "api.patch"
                            ]
                          },
                          "payload": {
                            "type": "object"
                          },
                          "payloadExpr": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            },
            "effects": [
              {
                "kind": "append-unique",
                "path": "actions.row.actions[]",
                "key": "id"
              }
            ],
            "validators": [
              "row-action-id-unique"
            ],
            "affectedPaths": [
              "actions.row.actions[]",
              "actions.row.actions[].visibleWhen",
              "actions.row.actions[].disabledWhen",
              "actions.row.actions[].effects"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "bulkAction.add",
            "title": "Adicionar ação em lote",
            "scope": "global",
            "targetKind": "bulkAction",
            "target": {
              "kind": "bulkAction",
              "resolver": "action-in-bulk-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "id",
                "label",
                "action"
              ],
              "properties": {
                "id": {
                  "type": "string"
                },
                "label": {
                  "type": "string"
                },
                "action": {
                  "type": "string"
                },
                "icon": {
                  "type": "string"
                },
                "color": {
                  "type": "string"
                },
                "globalAction": {
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "actionId": {
                      "type": "string",
                      "enum": [
                        "toast.success",
                        "toast.error",
                        "dialog.alert",
                        "dialog.open",
                        "navigation.openExternal",
                        "navigation.openRoute",
                        "api.post",
                        "api.patch"
                      ]
                    },
                    "payload": {
                      "type": "object"
                    },
                    "payloadExpr": {
                      "type": "string"
                    }
                  }
                },
                "effects": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "kind",
                      "globalAction"
                    ],
                    "additionalProperties": false,
                    "properties": {
                      "kind": {
                        "enum": [
                          "global-action"
                        ]
                      },
                      "globalAction": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "actionId": {
                            "type": "string",
                            "enum": [
                              "toast.success",
                              "toast.error",
                              "dialog.alert",
                              "dialog.open",
                              "navigation.openExternal",
                              "navigation.openRoute",
                              "api.post",
                              "api.patch"
                            ]
                          },
                          "payload": {
                            "type": "object"
                          },
                          "payloadExpr": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            },
            "effects": [
              {
                "kind": "append-unique",
                "path": "actions.bulk.actions[]",
                "key": "id"
              }
            ],
            "validators": [
              "bulk-action-id-unique"
            ],
            "affectedPaths": [
              "actions.bulk.actions[]",
              "actions.bulk.actions[].effects"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "export.enabled.set",
            "title": "Habilitar exportação",
            "scope": "global",
            "targetKind": "export",
            "target": {
              "kind": "export",
              "resolver": "export-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "enabled"
              ],
              "properties": {
                "enabled": {
                  "type": "boolean"
                },
                "formats": {
                  "type": "array",
                  "items": {
                    "enum": [
                      "excel",
                      "pdf",
                      "csv",
                      "json"
                    ]
                  }
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "export"
              }
            ],
            "affectedPaths": [
              "export.enabled",
              "export.formats"
            ],
            "validators": [
              "editor-round-trip-preserve"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "filter.advanced.configure",
            "title": "Configurar filtros avançados",
            "scope": "global",
            "targetKind": "filter",
            "target": {
              "kind": "filter",
              "resolver": "filter-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "enabled"
              ],
              "properties": {
                "enabled": {
                  "type": "boolean"
                },
                "queryBuilder": {
                  "type": "boolean"
                },
                "savePresets": {
                  "type": "boolean"
                },
                "settings": {
                  "type": "object",
                  "properties": {
                    "mode": {
                      "enum": [
                        "filter"
                      ]
                    },
                    "showAdvanced": {
                      "type": "boolean"
                    },
                    "allowSaveTags": {
                      "type": "boolean"
                    },
                    "tags": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "id",
                          "label",
                          "patch"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "minLength": 1
                          },
                          "label": {
                            "type": "string",
                            "minLength": 1
                          },
                          "patch": {
                            "type": "object"
                          }
                        }
                      }
                    },
                    "alwaysVisibleFields": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "selectedFieldIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "alwaysVisibleFieldMetadataOverrides": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "object"
                      }
                    },
                    "changeDebounceMs": {
                      "type": "number",
                      "minimum": 0
                    },
                    "useInlineSearchableSelectVariant": {
                      "type": "boolean"
                    },
                    "useInlineRangeVariant": {
                      "type": "boolean"
                    },
                    "useInlineDateVariant": {
                      "type": "boolean"
                    },
                    "useInlineDateRangeVariant": {
                      "type": "boolean"
                    }
                  }
                }
              }
            },
            "effects": [
              {
                "kind": "set-value",
                "path": "behavior.filtering.enabled",
                "value": true
              },
              {
                "kind": "merge-object",
                "path": "behavior.filtering.advancedFilters"
              }
            ],
            "affectedPaths": [
              "behavior.filtering.enabled",
              "behavior.filtering.advancedFilters.enabled",
              "behavior.filtering.advancedFilters.settings"
            ],
            "validators": [
              "filter-fields-exist",
              "editor-round-trip-preserve"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "filter.advanced.fields.add",
            "title": "Adicionar campos aos filtros avançados",
            "scope": "global",
            "targetKind": "filter",
            "target": {
              "kind": "filter",
              "resolver": "filter-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "fields"
              ],
              "properties": {
                "fields": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "minItems": 1
                },
                "selected": {
                  "type": "boolean"
                },
                "alwaysVisible": {
                  "type": "boolean"
                }
              }
            },
            "effects": [
              {
                "kind": "set-value",
                "path": "behavior.filtering.enabled",
                "value": true
              },
              {
                "kind": "merge-object",
                "path": "behavior.filtering.advancedFilters"
              }
            ],
            "affectedPaths": [
              "behavior.filtering.enabled",
              "behavior.filtering.advancedFilters.enabled",
              "behavior.filtering.advancedFilters.settings"
            ],
            "validators": [
              "filter-fields-exist",
              "editor-round-trip-preserve"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "filter.advanced.fields.remove",
            "title": "Remover campos dos filtros avançados",
            "scope": "global",
            "targetKind": "filter",
            "target": {
              "kind": "filter",
              "resolver": "filter-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "fields"
              ],
              "properties": {
                "fields": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "minItems": 1
                },
                "selected": {
                  "type": "boolean"
                },
                "alwaysVisible": {
                  "type": "boolean"
                }
              }
            },
            "effects": [
              {
                "kind": "set-value",
                "path": "behavior.filtering.enabled",
                "value": true
              },
              {
                "kind": "merge-object",
                "path": "behavior.filtering.advancedFilters"
              }
            ],
            "affectedPaths": [
              "behavior.filtering.enabled",
              "behavior.filtering.advancedFilters.enabled",
              "behavior.filtering.advancedFilters.settings"
            ],
            "validators": [
              "filter-fields-exist",
              "editor-round-trip-preserve"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "grouping.set",
            "title": "Definir agrupamento",
            "scope": "global",
            "targetKind": "grouping",
            "target": {
              "kind": "grouping",
              "resolver": "grouping-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "enabled"
              ],
              "properties": {
                "enabled": {
                  "type": "boolean"
                },
                "fields": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "expanded": {
                  "type": "boolean"
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "behavior.grouping"
              }
            ],
            "validators": [
              "grouping-fields-exist"
            ],
            "affectedPaths": [
              "behavior.grouping"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "selection.mode.set",
            "title": "Definir modo de seleção",
            "scope": "global",
            "targetKind": "selection",
            "target": {
              "kind": "selection",
              "resolver": "selection-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "enabled",
                "type"
              ],
              "properties": {
                "enabled": {
                  "type": "boolean"
                },
                "type": {
                  "enum": [
                    "single",
                    "multiple"
                  ]
                },
                "mode": {
                  "enum": [
                    "checkbox",
                    "row",
                    "both"
                  ]
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "behavior.selection"
              }
            ],
            "affectedPaths": [
              "behavior.selection.enabled",
              "behavior.selection.type",
              "behavior.selection.mode"
            ],
            "validators": [
              "editor-round-trip-preserve"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "appearance.density.set",
            "title": "Definir densidade",
            "scope": "global",
            "targetKind": "appearance",
            "target": {
              "kind": "appearance",
              "resolver": "appearance-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "density"
              ],
              "properties": {
                "density": {
                  "enum": [
                    "compact",
                    "comfortable",
                    "spacious"
                  ]
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "appearance"
              }
            ],
            "affectedPaths": [
              "appearance.density"
            ],
            "validators": [
              "editor-round-trip-preserve"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "appearance.borders.set",
            "title": "Definir bordas",
            "scope": "global",
            "targetKind": "appearance",
            "target": {
              "kind": "appearance",
              "resolver": "appearance-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "showRowBorders",
                "showColumnBorders"
              ],
              "properties": {
                "showRowBorders": {
                  "type": "boolean"
                },
                "showColumnBorders": {
                  "type": "boolean"
                },
                "showOuterBorder": {
                  "type": "boolean"
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "appearance.borders"
              }
            ],
            "affectedPaths": [
              "appearance.borders.showRowBorders",
              "appearance.borders.showColumnBorders",
              "appearance.borders.showOuterBorder"
            ],
            "validators": [
              "editor-round-trip-preserve"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "virtualization.enabled.set",
            "title": "Habilitar virtualização",
            "scope": "global",
            "targetKind": "appearance",
            "target": {
              "kind": "appearance",
              "resolver": "appearance-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "enabled"
              ],
              "properties": {
                "enabled": {
                  "type": "boolean"
                },
                "itemHeight": {
                  "type": "number",
                  "default": 48
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "behavior.virtualization"
              },
              {
                "kind": "merge-object",
                "path": "performance.virtualization"
              }
            ],
            "affectedPaths": [
              "behavior.virtualization",
              "performance.virtualization"
            ],
            "validators": [
              "editor-round-trip-preserve"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "expansion.configure",
            "title": "Configurar expansão de linha",
            "scope": "global",
            "targetKind": "expansion",
            "target": {
              "kind": "expansion",
              "resolver": "expansion-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "properties": {
                "enabled": {
                  "type": "boolean"
                },
                "contractVersion": {
                  "type": "string"
                },
                "state": {
                  "type": "object",
                  "properties": {
                    "mode": {
                      "enum": [
                        "controlled",
                        "uncontrolled"
                      ]
                    }
                  }
                },
                "interaction": {
                  "type": "object",
                  "properties": {
                    "trigger": {
                      "enum": [
                        "icon",
                        "row",
                        "both"
                      ]
                    },
                    "toggleIcon": {
                      "type": "object",
                      "properties": {
                        "collapsed": {
                          "type": "string"
                        },
                        "expanded": {
                          "type": "string"
                        },
                        "ariaLabelCollapsed": {
                          "type": "string"
                        },
                        "ariaLabelExpanded": {
                          "type": "string"
                        }
                      }
                    },
                    "motion": {
                      "type": "object",
                      "properties": {
                        "preset": {
                          "enum": [
                            "none",
                            "subtle-slide",
                            "accordion",
                            "fade-scale"
                          ]
                        },
                        "durationMs": {
                          "type": "number",
                          "minimum": 0
                        },
                        "easing": {
                          "enum": [
                            "standard",
                            "emphasized",
                            "decelerate"
                          ]
                        }
                      }
                    },
                    "keyboard": {
                      "type": "object",
                      "properties": {
                        "profile": {
                          "enum": [
                            "disclosure",
                            "grid"
                          ]
                        }
                      }
                    }
                  }
                },
                "limits": {
                  "type": "object",
                  "properties": {
                    "allowMultiple": {
                      "type": "boolean"
                    },
                    "maxExpandedRows": {
                      "type": "number",
                      "minimum": 1
                    },
                    "onOverflow": {
                      "enum": [
                        "collapseOldest",
                        "denyNew",
                        "collapseAll"
                      ]
                    }
                  }
                },
                "collapseOn": {
                  "type": "object",
                  "properties": {
                    "sortChange": {
                      "type": "boolean"
                    },
                    "pageChange": {
                      "type": "boolean"
                    },
                    "filterChange": {
                      "type": "boolean"
                    },
                    "dataRefresh": {
                      "type": "boolean"
                    }
                  }
                },
                "virtualization": {
                  "type": "object",
                  "properties": {
                    "policy": {
                      "enum": [
                        "fixed-height-only",
                        "allow-dynamic-under-flag"
                      ]
                    }
                  }
                },
                "persistence": {
                  "type": "object",
                  "properties": {
                    "enabled": {
                      "type": "boolean"
                    },
                    "storageKeyStrategy": {
                      "type": "object",
                      "properties": {
                        "namespace": {
                          "type": "string"
                        }
                      }
                    }
                  }
                },
                "security": {
                  "type": "object",
                  "properties": {
                    "eventExposureDefault": {
                      "type": "object",
                      "properties": {
                        "rowId": {
                          "enum": [
                            "redacted",
                            "hashed",
                            "raw"
                          ]
                        },
                        "expandedKeys": {
                          "enum": [
                            "none",
                            "hashed",
                            "raw"
                          ]
                        }
                      }
                    }
                  }
                },
                "deepLink": {
                  "type": "object",
                  "properties": {
                    "enabled": {
                      "type": "boolean"
                    },
                    "encoding": {
                      "enum": [
                        "csv"
                      ]
                    },
                    "parsing": {
                      "type": "object",
                      "properties": {
                        "duplicateParams": {
                          "enum": [
                            "firstWins",
                            "reject"
                          ]
                        }
                      }
                    },
                    "integrity": {
                      "type": "object",
                      "properties": {
                        "mode": {
                          "enum": [
                            "opaqueToken"
                          ]
                        }
                      }
                    },
                    "privacy": {
                      "type": "object",
                      "properties": {
                        "mode": {
                          "enum": [
                            "denyByDefault",
                            "allowByDefault"
                          ]
                        }
                      }
                    }
                  }
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "behavior.expansion"
              }
            ],
            "validators": [
              "editor-round-trip-preserve"
            ],
            "affectedPaths": [
              "behavior.expansion"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "expansion.detailSource.configure",
            "title": "Configurar fonte remota do detalhe expansivel",
            "scope": "global",
            "targetKind": "expansion",
            "target": {
              "kind": "expansion",
              "resolver": "expansion-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "properties": {
                "mode": {
                  "enum": [
                    "inline",
                    "resource",
                    "resourcePath",
                    "hypermedia"
                  ]
                },
                "inlineSchema": {
                  "type": "object"
                },
                "resource": {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "enum": [
                        "ui-composition",
                        "form-schema",
                        "table-schema",
                        "dashboard-schema"
                      ]
                    },
                    "id": {
                      "type": "string"
                    },
                    "version": {
                      "type": "string"
                    }
                  }
                },
                "resourcePath": {
                  "type": "object",
                  "properties": {
                    "path": {
                      "type": "string"
                    },
                    "method": {
                      "enum": [
                        "GET",
                        "POST"
                      ]
                    },
                    "paramsMap": {
                      "type": "object"
                    }
                  }
                },
                "resourceAllowList": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "hypermedia": {
                  "type": "object"
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "behavior.expansion.detail.source"
              }
            ],
            "validators": [
              "remote-resource-binding-safe",
              "editor-round-trip-preserve"
            ],
            "affectedPaths": [
              "behavior.expansion.detail.source",
              "behavior.expansion.detail.source.mode",
              "behavior.expansion.detail.source.resourcePath",
              "behavior.expansion.detail.source.resourceAllowList",
              "behavior.expansion.detail.source.hypermedia"
            ],
            "submissionImpact": "affects-remote-binding",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "expansion.detailPresentation.configure",
            "title": "Configurar apresentacao do detalhe expansivel",
            "scope": "global",
            "targetKind": "expansion",
            "target": {
              "kind": "expansion",
              "resolver": "expansion-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "properties": {
                "schemaContract": {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string"
                    },
                    "version": {
                      "type": "string"
                    }
                  }
                },
                "rendering": {
                  "type": "object",
                  "properties": {
                    "strategy": {
                      "enum": [
                        "registry"
                      ]
                    },
                    "registryId": {
                      "type": "string"
                    },
                    "hostLayout": {
                      "enum": [
                        "auto",
                        "stack",
                        "tabs"
                      ]
                    },
                    "fallbackNodePolicy": {
                      "enum": [
                        "failClosed",
                        "renderPlaceholder"
                      ]
                    }
                  }
                },
                "height": {
                  "type": "object",
                  "properties": {
                    "mode": {
                      "enum": [
                        "fixed",
                        "dynamic"
                      ]
                    },
                    "px": {
                      "type": "number",
                      "minimum": 0
                    }
                  }
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "behavior.expansion.detail"
              }
            ],
            "validators": [
              "editor-round-trip-preserve"
            ],
            "affectedPaths": [
              "behavior.expansion.detail",
              "behavior.expansion.detail.schemaContract",
              "behavior.expansion.detail.rendering",
              "behavior.expansion.detail.height"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "meta.configure",
            "title": "Configurar metadados",
            "scope": "global",
            "targetKind": "meta",
            "target": {
              "kind": "meta",
              "resolver": "table-meta-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "properties": {
                "name": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                },
                "tags": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "schemaId": {
                  "type": "string"
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "meta"
              }
            ],
            "affectedPaths": [
              "meta"
            ],
            "validators": [
              "editor-round-trip-preserve"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "meta.idField.set",
            "title": "Definir campo de identidade",
            "scope": "global",
            "targetKind": "meta",
            "target": {
              "kind": "meta",
              "resolver": "table-meta-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "idField"
              ],
              "properties": {
                "idField": {
                  "type": "string",
                  "minLength": 1
                }
              }
            },
            "effects": [
              {
                "kind": "set-value",
                "path": "meta.idField"
              }
            ],
            "requiresConfirmation": true,
            "affectedPaths": [
              "meta.idField"
            ],
            "validators": [
              "target-column-exists",
              "editor-round-trip-preserve"
            ],
            "submissionImpact": "affects-schema-backed-data",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "column.resizable.set",
            "title": "Definir redimensionamento da coluna",
            "scope": "column",
            "targetKind": "column",
            "target": {
              "kind": "column",
              "resolver": "column-by-field",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "resizable"
              ],
              "properties": {
                "resizable": {
                  "type": "boolean"
                }
              }
            },
            "effects": [
              {
                "kind": "merge-by-key",
                "path": "columns[]",
                "key": "field"
              }
            ],
            "validators": [
              "target-column-exists"
            ],
            "affectedPaths": [
              "columns[].resizable"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized",
              "target-exists"
            ]
          },
          {
            "operationId": "column.sortField.set",
            "title": "Definir campo de ordenacao da coluna",
            "scope": "column",
            "targetKind": "column",
            "target": {
              "kind": "column",
              "resolver": "column-by-field",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "sortField"
              ],
              "properties": {
                "sortField": {
                  "type": "string",
                  "minLength": 1
                }
              }
            },
            "effects": [
              {
                "kind": "merge-by-key",
                "path": "columns[]",
                "key": "field"
              }
            ],
            "validators": [
              "target-column-exists"
            ],
            "affectedPaths": [
              "columns[].sortField"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized",
              "target-exists"
            ]
          },
          {
            "operationId": "column.computed.configure",
            "title": "Configurar coluna calculada",
            "scope": "column",
            "targetKind": "computedColumn",
            "target": {
              "kind": "computedColumn",
              "resolver": "column-by-field",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "expression"
              ],
              "properties": {
                "expression": {
                  "type": "object",
                  "description": "AST Json Logic"
                },
                "outputType": {
                  "enum": [
                    "string",
                    "number",
                    "date",
                    "boolean",
                    "currency",
                    "percentage",
                    "custom"
                  ]
                },
                "format": {
                  "type": "string",
                  "enum": [
                    "shortDate",
                    "mediumDate",
                    "longDate",
                    "fullDate",
                    "MMM/yyyy",
                    "shortTime",
                    "short",
                    "yyyy-MM-dd",
                    "dd/MM/yyyy",
                    "yyyy-MM-dd HH:mm",
                    "1.0-0",
                    "1.1-1",
                    "1.2-2",
                    "1.0-3",
                    "1.0-0|nosep",
                    "BRL|symbol|2",
                    "USD|symbol|2",
                    "EUR|symbol|2",
                    "BRL|code|2",
                    "USD|code|0",
                    "BRL|symbol|2|nosep",
                    "EUR|symbol|2|nosep",
                    "1.0-0|x100",
                    "1.1-1|x100",
                    "1.2-2|x100",
                    "none",
                    "uppercase",
                    "lowercase",
                    "titlecase",
                    "capitalize",
                    "uppercase|truncate|50|...",
                    "000.000.000-00",
                    "true-false",
                    "yes-no",
                    "active-inactive",
                    "on-off",
                    "enabled-disabled",
                    "custom|Sim|Nao"
                  ]
                },
                "dependencies": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            },
            "effects": [
              {
                "kind": "merge-by-key",
                "path": "columns[]",
                "key": "field"
              }
            ],
            "validators": [
              "target-column-exists",
              "computed-expression-valid",
              "format-preset-supported"
            ],
            "affectedPaths": [
              "columns[].computed"
            ],
            "submissionImpact": "affects-schema-backed-data",
            "preconditions": [
              "config-initialized",
              "target-exists"
            ]
          },
          {
            "operationId": "behavior.pagination.configure",
            "title": "Configurar paginacao",
            "scope": "global",
            "targetKind": "pagination",
            "target": {
              "kind": "pagination",
              "resolver": "pagination-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "properties": {
                "enabled": {
                  "type": "boolean"
                },
                "strategy": {
                  "enum": [
                    "client",
                    "server"
                  ]
                },
                "pageSize": {
                  "type": "number",
                  "minimum": 1
                },
                "pageSizeOptions": {
                  "type": "array",
                  "items": {
                    "type": "number",
                    "minimum": 1
                  }
                },
                "position": {
                  "enum": [
                    "top",
                    "bottom",
                    "both"
                  ]
                },
                "style": {
                  "enum": [
                    "default",
                    "simple",
                    "advanced",
                    "compact"
                  ]
                },
                "advanced": {
                  "type": "object",
                  "properties": {
                    "maxPageSize": {
                      "type": "number",
                      "minimum": 1
                    }
                  }
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "behavior.pagination"
              }
            ],
            "affectedPaths": [
              "behavior.pagination"
            ],
            "validators": [
              "editor-round-trip-preserve"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "behavior.sorting.configure",
            "title": "Configurar ordenacao",
            "scope": "global",
            "targetKind": "sorting",
            "target": {
              "kind": "sorting",
              "resolver": "sorting-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "properties": {
                "enabled": {
                  "type": "boolean"
                },
                "strategy": {
                  "enum": [
                    "client",
                    "server"
                  ]
                },
                "defaultSort": {
                  "type": "object"
                },
                "allowClearSort": {
                  "type": "boolean"
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "behavior.sorting"
              }
            ],
            "affectedPaths": [
              "behavior.sorting"
            ],
            "validators": [
              "editor-round-trip-preserve"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "behavior.filtering.configure",
            "title": "Configurar filtragem",
            "scope": "global",
            "targetKind": "filter",
            "target": {
              "kind": "filter",
              "resolver": "filter-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "properties": {
                "enabled": {
                  "type": "boolean"
                },
                "strategy": {
                  "enum": [
                    "client",
                    "server"
                  ]
                },
                "columnFilters": {
                  "type": "object",
                  "properties": {
                    "enabled": {
                      "type": "boolean"
                    },
                    "defaultType": {
                      "enum": [
                        "text",
                        "select",
                        "date",
                        "number",
                        "boolean"
                      ]
                    },
                    "position": {
                      "enum": [
                        "header",
                        "subheader",
                        "sidebar"
                      ]
                    }
                  }
                },
                "advancedFilters": {
                  "type": "object",
                  "properties": {
                    "enabled": {
                      "type": "boolean"
                    },
                    "settings": {
                      "type": "object",
                      "properties": {
                        "mode": {
                          "enum": [
                            "filter"
                          ]
                        },
                        "showAdvanced": {
                          "type": "boolean"
                        },
                        "allowSaveTags": {
                          "type": "boolean"
                        },
                        "tags": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "id",
                              "label",
                              "patch"
                            ],
                            "properties": {
                              "id": {
                                "type": "string",
                                "minLength": 1
                              },
                              "label": {
                                "type": "string",
                                "minLength": 1
                              },
                              "patch": {
                                "type": "object"
                              }
                            }
                          }
                        },
                        "alwaysVisibleFields": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "selectedFieldIds": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "alwaysVisibleFieldMetadataOverrides": {
                          "type": "object",
                          "additionalProperties": {
                            "type": "object"
                          }
                        },
                        "changeDebounceMs": {
                          "type": "number",
                          "minimum": 0
                        },
                        "useInlineSearchableSelectVariant": {
                          "type": "boolean"
                        },
                        "useInlineRangeVariant": {
                          "type": "boolean"
                        },
                        "useInlineDateVariant": {
                          "type": "boolean"
                        },
                        "useInlineDateRangeVariant": {
                          "type": "boolean"
                        }
                      }
                    }
                  }
                },
                "debounceTime": {
                  "type": "number",
                  "minimum": 0
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "behavior.filtering"
              }
            ],
            "affectedPaths": [
              "behavior.filtering"
            ],
            "validators": [
              "editor-round-trip-preserve"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "behavior.selection.configure",
            "title": "Configurar selecao",
            "scope": "global",
            "targetKind": "selection",
            "target": {
              "kind": "selection",
              "resolver": "selection-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "properties": {
                "enabled": {
                  "type": "boolean"
                },
                "type": {
                  "enum": [
                    "single",
                    "multiple"
                  ]
                },
                "mode": {
                  "enum": [
                    "checkbox",
                    "row",
                    "both"
                  ]
                },
                "allowSelectAll": {
                  "type": "boolean"
                },
                "persistSelection": {
                  "type": "boolean"
                },
                "maxSelections": {
                  "type": "number",
                  "minimum": 1
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "behavior.selection"
              }
            ],
            "affectedPaths": [
              "behavior.selection"
            ],
            "validators": [
              "editor-round-trip-preserve"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "behavior.interaction.configure",
            "title": "Configurar interacao",
            "scope": "global",
            "targetKind": "interaction",
            "target": {
              "kind": "interaction",
              "resolver": "interaction-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "properties": {
                "rowClick": {
                  "type": "object",
                  "properties": {
                    "enabled": {
                      "type": "boolean"
                    },
                    "action": {
                      "type": "string"
                    }
                  }
                },
                "keyboard": {
                  "type": "object",
                  "properties": {
                    "enabled": {
                      "type": "boolean"
                    }
                  }
                },
                "hover": {
                  "type": "object",
                  "properties": {
                    "enabled": {
                      "type": "boolean"
                    },
                    "highlightRow": {
                      "type": "boolean"
                    }
                  }
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "behavior.interaction"
              }
            ],
            "affectedPaths": [
              "behavior.interaction"
            ],
            "validators": [
              "editor-round-trip-preserve"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "behavior.loading.configure",
            "title": "Configurar loading",
            "scope": "global",
            "targetKind": "loading",
            "target": {
              "kind": "loading",
              "resolver": "loading-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "properties": {
                "type": {
                  "enum": [
                    "spinner",
                    "skeleton",
                    "progress"
                  ]
                },
                "position": {
                  "enum": [
                    "overlay",
                    "inline",
                    "replace"
                  ]
                },
                "text": {
                  "type": "string"
                },
                "delay": {
                  "type": "number",
                  "minimum": 0
                },
                "showForQuickOperations": {
                  "type": "boolean"
                },
                "requestTimeoutMs": {
                  "type": "number",
                  "minimum": 0
                },
                "allowCancel": {
                  "type": "boolean"
                },
                "skeleton": {
                  "type": "object",
                  "properties": {
                    "rows": {
                      "type": "number",
                      "minimum": 1,
                      "maximum": 12
                    },
                    "animated": {
                      "type": "boolean"
                    }
                  }
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "behavior.loading"
              }
            ],
            "affectedPaths": [
              "behavior.loading"
            ],
            "validators": [
              "editor-round-trip-preserve"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "behavior.emptyState.configure",
            "title": "Configurar estado vazio",
            "description": "Configura copy, apresentação e ações contextuais explícitas do estado vazio. Não duplica CREATE capability-governado, que permanece como ação primária estável da toolbar.",
            "scope": "global",
            "targetKind": "emptyState",
            "target": {
              "kind": "emptyState",
              "resolver": "empty-state-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "message"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "message": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                },
                "icon": {
                  "type": "string"
                },
                "tone": {
                  "enum": [
                    "neutral",
                    "primary",
                    "secondary"
                  ]
                },
                "variant": {
                  "enum": [
                    "card",
                    "inline",
                    "panel",
                    "transparent"
                  ]
                },
                "alignment": {
                  "enum": [
                    "start",
                    "center"
                  ]
                },
                "density": {
                  "enum": [
                    "compact",
                    "comfortable"
                  ]
                },
                "iconContainer": {
                  "enum": [
                    "none",
                    "circle",
                    "soft"
                  ]
                },
                "actions": {
                  "type": "array"
                },
                "contexts": {
                  "type": "object"
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "behavior.emptyState"
              }
            ],
            "affectedPaths": [
              "behavior.emptyState"
            ],
            "validators": [
              "editor-round-trip-preserve"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "behavior.resizing.configure",
            "title": "Configurar redimensionamento",
            "scope": "global",
            "targetKind": "resizing",
            "target": {
              "kind": "resizing",
              "resolver": "resizing-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "properties": {
                "enabled": {
                  "type": "boolean"
                },
                "minColumnWidth": {
                  "type": "number",
                  "minimum": 1
                },
                "maxColumnWidth": {
                  "type": "number",
                  "minimum": 1
                },
                "autoFit": {
                  "type": "boolean"
                },
                "persistWidths": {
                  "type": "boolean"
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "behavior.resizing"
              }
            ],
            "affectedPaths": [
              "behavior.resizing"
            ],
            "validators": [
              "editor-round-trip-preserve"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "behavior.dragging.configure",
            "title": "Configurar drag and drop",
            "scope": "global",
            "targetKind": "dragging",
            "target": {
              "kind": "dragging",
              "resolver": "dragging-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "columns"
              ],
              "properties": {
                "columns": {
                  "type": "boolean"
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "behavior.dragging"
              }
            ],
            "affectedPaths": [
              "behavior.dragging"
            ],
            "validators": [
              "editor-round-trip-preserve"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "behavior.editing.configure",
            "title": "Configurar edicao",
            "scope": "global",
            "targetKind": "editing",
            "target": {
              "kind": "editing",
              "resolver": "editing-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "mode"
              ],
              "properties": {
                "mode": {
                  "type": "string"
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "behavior.editing"
              }
            ],
            "affectedPaths": [
              "behavior.editing"
            ],
            "validators": [
              "editor-round-trip-preserve"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "toolbar.configure",
            "title": "Configurar barra e título global da tabela",
            "description": "Configura a barra da tabela, incluindo o título global em toolbar.title. Não use para renomear o cabeçalho de uma coluna; nesse caso use column.header.set.",
            "scope": "global",
            "targetKind": "toolbar",
            "target": {
              "kind": "toolbar",
              "resolver": "toolbar-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "properties": {
                "visible": {
                  "type": "boolean"
                },
                "position": {
                  "enum": [
                    "top",
                    "bottom",
                    "both"
                  ]
                },
                "actionsPosition": {
                  "enum": [
                    "top",
                    "bottom",
                    "both"
                  ]
                },
                "actionsBackgroundColor": {
                  "type": "string"
                },
                "appearance": {
                  "type": "object",
                  "properties": {
                    "preset": {
                      "type": "string"
                    },
                    "variant": {
                      "enum": [
                        "flat",
                        "outlined",
                        "elevated",
                        "integrated"
                      ]
                    },
                    "density": {
                      "enum": [
                        "compact",
                        "comfortable",
                        "spacious"
                      ]
                    },
                    "shape": {
                      "enum": [
                        "square",
                        "rounded",
                        "pill"
                      ]
                    },
                    "divider": {
                      "enum": [
                        "none",
                        "start",
                        "between-groups"
                      ]
                    },
                    "tokens": {
                      "type": "object",
                      "properties": {
                        "titleFg": {
                          "type": "string"
                        },
                        "subtitleFg": {
                          "type": "string"
                        },
                        "iconFg": {
                          "type": "string"
                        },
                        "titleFontSize": {
                          "type": "string"
                        },
                        "subtitleFontSize": {
                          "type": "string"
                        },
                        "titleFontWeight": {
                          "type": "string"
                        },
                        "identityGap": {
                          "type": "string"
                        },
                        "identityFilterGap": {
                          "type": "string"
                        },
                        "identityMinHeight": {
                          "type": "string"
                        },
                        "identityMarginBottom": {
                          "type": "string"
                        },
                        "identityIconSize": {
                          "type": "string"
                        },
                        "identityIconRadius": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": {
                        "type": "string"
                      }
                    }
                  }
                },
                "title": {
                  "type": "string"
                },
                "subtitle": {
                  "type": "string"
                },
                "icon": {
                  "type": "string"
                },
                "textAlign": {
                  "enum": [
                    "start",
                    "center",
                    "end"
                  ]
                },
                "layout": {
                  "type": "object",
                  "properties": {
                    "alignment": {
                      "enum": [
                        "start",
                        "center",
                        "end",
                        "space-between"
                      ]
                    }
                  }
                },
                "filters": {
                  "type": "object",
                  "properties": {
                    "enabled": {
                      "type": "boolean"
                    },
                    "showAdvancedButton": {
                      "type": "boolean"
                    },
                    "quickFilters": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "id",
                          "label",
                          "filter"
                        ],
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "label": {
                            "type": "string"
                          },
                          "icon": {
                            "type": "string"
                          },
                          "filter": {
                            "type": "object"
                          }
                        }
                      }
                    }
                  }
                },
                "settingsMenu": {
                  "type": "object",
                  "properties": {
                    "enabled": {
                      "type": "boolean"
                    }
                  }
                },
                "columnsVisibility": {
                  "type": "object",
                  "properties": {
                    "enabled": {
                      "type": "boolean"
                    }
                  }
                },
                "densityToggle": {
                  "type": "object",
                  "properties": {
                    "enabled": {
                      "type": "boolean"
                    },
                    "values": {
                      "type": "array",
                      "items": {
                        "enum": [
                          "compact",
                          "comfortable",
                          "spacious"
                        ]
                      },
                      "uniqueItems": true
                    }
                  }
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "toolbar"
              }
            ],
            "validators": [
              "css-style-safe",
              "editor-round-trip-preserve"
            ],
            "affectedPaths": [
              "toolbar",
              "toolbar.title",
              "toolbar.subtitle",
              "toolbar.icon",
              "toolbar.textAlign",
              "toolbar.appearance",
              "toolbar.appearance.tokens"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "actions.collection.configure",
            "title": "Configurar descoberta de acoes da colecao",
            "scope": "global",
            "targetKind": "toolbar",
            "target": {
              "kind": "toolbar",
              "resolver": "toolbar-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "discovery"
              ],
              "properties": {
                "discovery": {
                  "type": "object",
                  "required": [
                    "enabled"
                  ],
                  "properties": {
                    "enabled": {
                      "type": "boolean"
                    }
                  }
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "actions.collection"
              }
            ],
            "affectedPaths": [
              "actions.collection",
              "actions.collection.discovery.enabled"
            ],
            "validators": [
              "editor-round-trip-preserve"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "actions.row.configure",
            "title": "Configurar acoes de linha",
            "scope": "global",
            "targetKind": "rowAction",
            "target": {
              "kind": "rowAction",
              "resolver": "action-in-row-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "properties": {
                "enabled": {
                  "type": "boolean"
                },
                "display": {
                  "enum": [
                    "menu",
                    "buttons",
                    "icons"
                  ]
                },
                "trigger": {
                  "enum": [
                    "hover",
                    "always",
                    "click"
                  ]
                },
                "discovery": {
                  "type": "object",
                  "properties": {
                    "enabled": {
                      "type": "boolean"
                    }
                  }
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "actions.row"
              }
            ],
            "affectedPaths": [
              "actions.row"
            ],
            "validators": [
              "editor-round-trip-preserve"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "actions.bulk.configure",
            "title": "Configurar acoes em lote",
            "scope": "global",
            "targetKind": "bulkAction",
            "target": {
              "kind": "bulkAction",
              "resolver": "action-in-bulk-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "properties": {
                "enabled": {
                  "type": "boolean"
                },
                "position": {
                  "enum": [
                    "toolbar",
                    "floating",
                    "both"
                  ]
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "actions.bulk"
              }
            ],
            "requiresConfirmation": true,
            "affectedPaths": [
              "actions.bulk"
            ],
            "validators": [
              "editor-round-trip-preserve"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "actions.context.configure",
            "title": "Configurar menu contextual",
            "scope": "global",
            "targetKind": "contextAction",
            "target": {
              "kind": "contextAction",
              "resolver": "action-in-context-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "properties": {
                "enabled": {
                  "type": "boolean"
                },
                "trigger": {
                  "enum": [
                    "right-click",
                    "long-press",
                    "both"
                  ]
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "actions.context"
              }
            ],
            "requiresConfirmation": true,
            "affectedPaths": [
              "actions.context"
            ],
            "validators": [
              "editor-round-trip-preserve"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "actions.confirmations.configure",
            "title": "Configurar confirmacoes",
            "scope": "global",
            "targetKind": "contextAction",
            "target": {
              "kind": "contextAction",
              "resolver": "action-in-context-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "default"
              ],
              "properties": {
                "default": {
                  "type": "object"
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "actions.confirmations"
              }
            ],
            "requiresConfirmation": true,
            "affectedPaths": [
              "actions.confirmations.default"
            ],
            "validators": [
              "editor-round-trip-preserve"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "export.configure",
            "title": "Configurar exportacao",
            "description": "Configura a exportação governada da tabela, inclusive formatos e escopo. Para exportar apenas as linhas selecionadas, a decisão precisa manter a exportação habilitada, permitir seleção e executar a exportação usando apenas as linhas marcadas.",
            "scope": "global",
            "targetKind": "export",
            "target": {
              "kind": "export",
              "resolver": "export-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "properties": {
                "enabled": {
                  "type": "boolean"
                },
                "formats": {
                  "type": "array",
                  "items": {
                    "enum": [
                      "excel",
                      "pdf",
                      "csv",
                      "json",
                      "print"
                    ]
                  }
                },
                "general": {
                  "type": "object",
                  "properties": {
                    "includeHeaders": {
                      "type": "boolean"
                    },
                    "scope": {
                      "enum": [
                        "auto",
                        "selected",
                        "filtered",
                        "currentPage",
                        "all"
                      ]
                    },
                    "maxRows": {
                      "type": "number",
                      "minimum": 1
                    }
                  }
                },
                "excel": {
                  "type": "object",
                  "properties": {
                    "autoFitColumns": {
                      "type": "boolean"
                    },
                    "visibleCurrentPage": {
                      "type": "boolean"
                    }
                  }
                },
                "pdf": {
                  "type": "object",
                  "properties": {
                    "orientation": {
                      "enum": [
                        "portrait",
                        "landscape"
                      ]
                    },
                    "pageSize": {
                      "enum": [
                        "A4",
                        "A3",
                        "Letter",
                        "Legal"
                      ]
                    }
                  }
                },
                "csv": {
                  "type": "object",
                  "properties": {
                    "delimiter": {
                      "enum": [
                        ",",
                        ";",
                        "|",
                        "\\t"
                      ]
                    }
                  }
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "export"
              }
            ],
            "requiresConfirmation": true,
            "affectedPaths": [
              "export"
            ],
            "validators": [
              "editor-round-trip-preserve"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "tableRuntimeOperations.plan",
            "title": "Planejar operacoes runtime da tabela",
            "scope": "global",
            "targetKind": "runtimeOperation",
            "target": {
              "kind": "runtimeOperation",
              "resolver": "table-runtime-operation-contract",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "operations"
              ],
              "properties": {
                "operations": {
                  "type": "array",
                  "minItems": 1,
                  "items": {
                    "type": "object",
                    "required": [
                      "operationId",
                      "input"
                    ],
                    "properties": {
                      "operationId": {
                        "enum": [
                          "table.filter.apply",
                          "table.export.run"
                        ]
                      },
                      "input": {
                        "type": "object",
                        "minProperties": 1,
                        "properties": {
                          "criteria": {
                            "type": "object"
                          },
                          "format": {
                            "enum": [
                              "excel",
                              "pdf",
                              "csv",
                              "json",
                              "print"
                            ]
                          },
                          "scope": {
                            "enum": [
                              "auto",
                              "selected",
                              "filtered",
                              "currentPage",
                              "all"
                            ]
                          }
                        }
                      },
                      "description": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            },
            "effects": [
              {
                "kind": "set-value",
                "path": "tableRuntimeOperations"
              }
            ],
            "affectedPaths": [
              "tableRuntimeOperations"
            ],
            "validators": [
              "runtime-operation-declared"
            ],
            "submissionImpact": "none",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "appearance.configure",
            "title": "Configurar aparencia",
            "scope": "global",
            "targetKind": "appearance",
            "target": {
              "kind": "appearance",
              "resolver": "appearance-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "properties": {
                "density": {
                  "enum": [
                    "compact",
                    "comfortable",
                    "spacious"
                  ]
                },
                "borders": {
                  "type": "object",
                  "properties": {
                    "showRowBorders": {
                      "type": "boolean"
                    },
                    "showColumnBorders": {
                      "type": "boolean"
                    },
                    "showOuterBorder": {
                      "type": "boolean"
                    },
                    "style": {
                      "enum": [
                        "solid",
                        "dashed",
                        "dotted"
                      ]
                    }
                  }
                },
                "colors": {
                  "type": "object",
                  "properties": {
                    "alternateRowBackground": {
                      "type": "string"
                    },
                    "hoverBackground": {
                      "type": "string"
                    }
                  }
                },
                "typography": {
                  "type": "object",
                  "properties": {
                    "fontSize": {
                      "type": "string"
                    },
                    "headerFontWeight": {
                      "type": "string"
                    }
                  }
                },
                "spacing": {
                  "type": "object",
                  "properties": {
                    "cellPadding": {
                      "type": "string"
                    }
                  }
                },
                "responsive": {
                  "type": "object",
                  "properties": {
                    "mobile": {
                      "type": "object",
                      "properties": {
                        "horizontalScroll": {
                          "type": "boolean"
                        },
                        "cardMode": {
                          "type": "boolean"
                        },
                        "priorityColumns": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "breakpoints": {
                      "type": "object",
                      "properties": {
                        "mobile": {
                          "type": "number",
                          "minimum": 0
                        }
                      }
                    }
                  }
                },
                "animations": {
                  "type": "object",
                  "properties": {
                    "enabled": {
                      "type": "boolean"
                    }
                  }
                },
                "elevation": {
                  "type": "object",
                  "properties": {
                    "level": {
                      "type": "number",
                      "minimum": 0
                    }
                  }
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "appearance"
              }
            ],
            "validators": [
              "css-style-safe"
            ],
            "affectedPaths": [
              "appearance"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "messages.configure",
            "title": "Configurar mensagens",
            "scope": "global",
            "targetKind": "messages",
            "target": {
              "kind": "messages",
              "resolver": "messages-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "properties": {
                "states": {
                  "type": "object",
                  "properties": {
                    "empty": {
                      "type": "string"
                    },
                    "loading": {
                      "type": "string"
                    }
                  }
                },
                "actions": {
                  "type": "object",
                  "properties": {
                    "confirmations": {
                      "type": "object",
                      "properties": {
                        "delete": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "messages"
              }
            ],
            "affectedPaths": [
              "messages"
            ],
            "validators": [
              "editor-round-trip-preserve"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "localization.configure",
            "title": "Configurar localizacao",
            "scope": "global",
            "targetKind": "localization",
            "target": {
              "kind": "localization",
              "resolver": "localization-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "properties": {
                "locale": {
                  "type": "string"
                },
                "direction": {
                  "enum": [
                    "ltr",
                    "rtl"
                  ]
                },
                "dateTime": {
                  "type": "object",
                  "properties": {
                    "dateFormat": {
                      "type": "string"
                    },
                    "timeFormat": {
                      "type": "string"
                    },
                    "dateTimeFormat": {
                      "type": "string"
                    },
                    "firstDayOfWeek": {
                      "enum": [
                        0,
                        1,
                        2,
                        3,
                        4,
                        5,
                        6
                      ]
                    },
                    "relativeTime": {
                      "type": "boolean"
                    },
                    "monthNames": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "dayNames": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                },
                "number": {
                  "type": "object",
                  "properties": {
                    "decimalSeparator": {
                      "type": "string"
                    },
                    "thousandsSeparator": {
                      "type": "string"
                    },
                    "defaultPrecision": {
                      "type": "number",
                      "minimum": 0
                    },
                    "negativeSign": {
                      "type": "string"
                    },
                    "negativeSignPosition": {
                      "enum": [
                        "before",
                        "after"
                      ]
                    }
                  }
                },
                "currency": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "symbol": {
                      "type": "string"
                    },
                    "position": {
                      "enum": [
                        "before",
                        "after"
                      ]
                    },
                    "spacing": {
                      "type": "boolean"
                    },
                    "precision": {
                      "type": "number",
                      "minimum": 0
                    }
                  }
                },
                "formatting": {
                  "type": "object",
                  "properties": {
                    "percentageFormat": {
                      "type": "string"
                    },
                    "fileSizeFormat": {
                      "enum": [
                        "binary",
                        "decimal"
                      ]
                    }
                  }
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "localization"
              }
            ],
            "affectedPaths": [
              "localization"
            ],
            "validators": [
              "editor-round-trip-preserve"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "performance.configure",
            "title": "Configurar performance",
            "scope": "global",
            "targetKind": "performance",
            "target": {
              "kind": "performance",
              "resolver": "performance-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "properties": {
                "virtualization": {
                  "type": "object",
                  "properties": {
                    "enabled": {
                      "type": "boolean"
                    },
                    "itemHeight": {
                      "type": "number",
                      "minimum": 1
                    }
                  }
                },
                "debounce": {
                  "type": "object",
                  "properties": {
                    "search": {
                      "type": "number",
                      "minimum": 0
                    },
                    "filter": {
                      "type": "number",
                      "minimum": 0
                    }
                  }
                },
                "lazyLoading": {
                  "type": "object",
                  "properties": {
                    "images": {
                      "type": "boolean"
                    }
                  }
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "performance"
              }
            ],
            "affectedPaths": [
              "performance"
            ],
            "validators": [
              "editor-round-trip-preserve"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "data.loadingStrategy.set",
            "title": "Definir estrategia de carregamento",
            "scope": "global",
            "targetKind": "data",
            "target": {
              "kind": "data",
              "resolver": "data-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "loadingStrategy"
              ],
              "properties": {
                "loadingStrategy": {
                  "enum": [
                    "eager",
                    "lazy",
                    "on-demand"
                  ]
                }
              }
            },
            "effects": [
              {
                "kind": "set-value",
                "path": "data.loadingStrategy"
              }
            ],
            "affectedPaths": [
              "data.loadingStrategy"
            ],
            "validators": [
              "editor-round-trip-preserve"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "accessibility.configure",
            "title": "Configurar acessibilidade",
            "scope": "global",
            "targetKind": "accessibility",
            "target": {
              "kind": "accessibility",
              "resolver": "accessibility-config",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "properties": {
                "enabled": {
                  "type": "boolean"
                },
                "highContrast": {
                  "type": "boolean"
                },
                "reduceMotion": {
                  "type": "boolean"
                },
                "announcements": {
                  "type": "object",
                  "properties": {
                    "liveRegion": {
                      "enum": [
                        "polite",
                        "assertive"
                      ]
                    }
                  }
                },
                "keyboard": {
                  "type": "object",
                  "properties": {
                    "shortcuts": {
                      "type": "boolean"
                    }
                  }
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "accessibility"
              }
            ],
            "requiresConfirmation": true,
            "affectedPaths": [
              "accessibility"
            ],
            "validators": [
              "editor-round-trip-preserve"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized"
            ]
          }
        ],
        "validators": [
          {
            "validatorId": "target-column-exists",
            "level": "error",
            "code": "TB001",
            "description": "A coluna alvo deve existir na configuração."
          },
          {
            "validatorId": "column-field-unique",
            "level": "error",
            "code": "TB002",
            "description": "O identificador técnico da coluna (field) deve ser único."
          },
          {
            "validatorId": "renderer-type-supported",
            "level": "error",
            "code": "TB003",
            "description": "O tipo de renderizador deve ser suportado pelo componente."
          },
          {
            "validatorId": "renderer-config-match",
            "level": "error",
            "code": "TB004",
            "description": "A configuração do renderizador deve corresponder ao tipo selecionado."
          },
          {
            "validatorId": "renderer-fields-exist",
            "level": "error",
            "code": "TB023",
            "description": "Todos os campos referenciados pelo renderizador devem existir na configuração atual da tabela."
          },
          {
            "validatorId": "renderer-compose-exists",
            "level": "error",
            "code": "TB022",
            "description": "O renderer alvo deve ser uma composição existente e conter ao menos um item antes de refinar seu layout."
          },
          {
            "validatorId": "renderer-compose-item-exists",
            "level": "error",
            "code": "TB021",
            "description": "O renderer alvo deve ser compose e conter exatamente um item compatível com itemType e itemField."
          },
          {
            "validatorId": "grouping-fields-exist",
            "level": "error",
            "code": "TB005",
            "description": "Os campos de agrupamento devem existir na definição de colunas."
          },
          {
            "validatorId": "filter-fields-exist",
            "level": "error",
            "code": "TB018",
            "description": "Os campos de filtro avançado devem existir no schema request do filtro governado."
          },
          {
            "validatorId": "destructive-removal-confirmation",
            "level": "error",
            "code": "TB006",
            "description": "Remoções destrutivas de colunas ou ações exigem confirmação explícita."
          },
          {
            "validatorId": "computed-expression-valid",
            "level": "error",
            "code": "TB007",
            "description": "A expressão de cálculo deve ser um AST Json Logic válido."
          },
          {
            "validatorId": "remote-resource-binding-safe",
            "level": "error",
            "code": "TB008",
            "description": "A ligação com recurso remoto não deve conter URLs absolutas não permitidas."
          },
          {
            "validatorId": "editor-round-trip-preserve",
            "level": "error",
            "code": "TB009",
            "description": "A edição não deve corromper propriedades críticas necessárias para o round-trip do editor."
          },
          {
            "validatorId": "toolbar-action-id-unique",
            "level": "error",
            "code": "TB010",
            "description": "O id da ação de toolbar deve ser único em toolbar.actions[]. O efeito append-unique usa este id como chave de deduplicação."
          },
          {
            "validatorId": "row-action-id-unique",
            "level": "error",
            "code": "TB011",
            "description": "O id da row action deve ser único em actions.row.actions[]. O efeito append-unique usa este id como chave de deduplicação."
          },
          {
            "validatorId": "bulk-action-id-unique",
            "level": "error",
            "code": "TB017",
            "description": "O id da ação em lote deve ser único em actions.bulk.actions[]. O efeito append-unique usa este id como chave de deduplicação."
          },
          {
            "validatorId": "format-preset-supported",
            "level": "error",
            "code": "TB012",
            "description": "O formato deve usar um preset canonico publicado em table-ai-capabilities.ts."
          },
          {
            "validatorId": "column-width-valid",
            "level": "error",
            "code": "TB013",
            "description": "A largura deve ser auto ou uma medida simples em px, %, rem ou em."
          },
          {
            "validatorId": "css-style-safe",
            "level": "error",
            "code": "TB014",
            "description": "Estilos inline devem permanecer em CSS simples e seguro, sem scripts, URLs perigosas ou expressoes dinamicas."
          },
          {
            "validatorId": "value-mapping-valid",
            "level": "error",
            "code": "TB015",
            "description": "O mapeamento de valores deve ser um objeto simples com chaves estaveis e labels serializaveis."
          },
          {
            "validatorId": "conditional-style-valid",
            "level": "error",
            "code": "TB016",
            "description": "Regras condicionais devem ter id estavel, condition Json Logic e ao menos cssClass, style ou effects."
          },
          {
            "validatorId": "conditional-surface-accessible",
            "level": "error",
            "code": "TB020",
            "description": "Foreground explícito deve atingir contraste AA em fundo sólido; fundo sem foreground é derivado pelo runtime e composições não determinísticas exigem diagnóstico."
          },
          {
            "validatorId": "runtime-operation-declared",
            "level": "error",
            "code": "TB019",
            "description": "Operacoes runtime devem usar operationId e input declarados em tableRuntimeOperations sem alterar a configuracao persistida."
          },
          {
            "validatorId": "schema-column-override-field-immutable",
            "level": "error",
            "code": "TB024",
            "description": "Overrides de projecao podem alterar apresentacao e comportamento, mas nunca a identidade canonica field."
          }
        ],
        "roundTripRequirements": [
          "preserve-column-order",
          "normalize-enum-values",
          "maintain-renderer-precedence",
          "preserve-meta-ids"
        ],
        "presentationAffordances": {
          "version": "0.2.0",
          "componentId": "praxis-table",
          "defaultTargetKind": "column",
          "sourceRef": "praxis-ui-angular:projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts#presentationAffordances",
          "affordances": [
            {
              "id": "table.conditional-surface.row",
              "targetKind": "row",
              "category": "surface-preset",
              "description": "Versioned semantic row surfaces materialized privately by the table runtime.",
              "options": [
                "success",
                "warning",
                "danger",
                "highlight"
              ],
              "appliesToTypes": [
                "unknown"
              ],
              "unknownCompatible": true
            },
            {
              "id": "table.conditional-surface.cell",
              "targetKind": "column",
              "category": "surface-preset",
              "description": "Versioned semantic cell surfaces materialized privately by the table runtime.",
              "options": [
                "success",
                "warning",
                "danger",
                "highlight"
              ],
              "appliesToTypes": [
                "string",
                "text",
                "boolean",
                "number",
                "currency",
                "percentage",
                "date",
                "datetime",
                "unknown"
              ],
              "unknownCompatible": true
            },
            {
              "id": "table.column.text-formatting",
              "targetKind": "column",
              "category": "format",
              "description": "Text transforms and masks for textual table columns.",
              "options": [
                "none",
                "uppercase",
                "lowercase",
                "titlecase",
                "capitalize",
                "uppercase|truncate|50|...",
                "000.000.000-00"
              ],
              "appliesToTypes": [
                "string",
                "text",
                "unknown"
              ],
              "unknownCompatible": true
            },
            {
              "id": "table.column.numeric-formatting",
              "targetKind": "column",
              "category": "format",
              "description": "Decimal, currency and percentage formats for numeric table columns.",
              "options": [
                "1.0-0",
                "1.1-1",
                "1.2-2",
                "1.0-3",
                "1.0-0|nosep",
                "BRL|symbol|2",
                "USD|symbol|2",
                "EUR|symbol|2",
                "BRL|code|2",
                "USD|code|0",
                "BRL|symbol|2|nosep",
                "EUR|symbol|2|nosep",
                "1.0-0|x100",
                "1.1-1|x100",
                "1.2-2|x100"
              ],
              "appliesToTypes": [
                "number",
                "currency",
                "percentage"
              ],
              "unknownCompatible": false
            },
            {
              "id": "table.column.date-formatting",
              "targetKind": "column",
              "category": "format",
              "description": "Date and time formats for date-like table columns.",
              "options": [
                "shortDate",
                "mediumDate",
                "longDate",
                "fullDate",
                "MMM/yyyy",
                "shortTime",
                "short",
                "yyyy-MM-dd",
                "dd/MM/yyyy",
                "yyyy-MM-dd HH:mm"
              ],
              "appliesToTypes": [
                "date",
                "datetime",
                "time"
              ],
              "unknownCompatible": false
            },
            {
              "id": "table.column.boolean-formatting",
              "targetKind": "column",
              "category": "format",
              "description": "Boolean label formats for true/false table columns.",
              "options": [
                "true-false",
                "yes-no",
                "active-inactive",
                "on-off",
                "enabled-disabled",
                "custom|Sim|Nao"
              ],
              "appliesToTypes": [
                "boolean"
              ],
              "unknownCompatible": false
            },
            {
              "id": "table.column.semantic-renderers",
              "targetKind": "column",
              "category": "renderer",
              "description": "Visual renderers for categorical, status or action-oriented table columns.",
              "options": [
                "badge",
                "chip",
                "icon",
                "link",
                "button",
                "progress",
                "avatar",
                "toggle",
                "menu",
                "rating",
                "compose"
              ],
              "appliesToTypes": [
                "string",
                "text",
                "boolean",
                "number",
                "currency",
                "percentage",
                "date",
                "datetime",
                "unknown"
              ],
              "unknownCompatible": true
            },
            {
              "id": "table.column.alignment-layout",
              "targetKind": "column",
              "category": "layout",
              "description": "Column alignment and composed cell layout options.",
              "options": [
                "align:start",
                "align:center",
                "align:end",
                "compose:row",
                "compose:column",
                "secondary-line",
                "prefix",
                "suffix"
              ],
              "appliesToTypes": [
                "string",
                "text",
                "boolean",
                "number",
                "currency",
                "percentage",
                "date",
                "datetime",
                "unknown"
              ],
              "unknownCompatible": true
            }
          ]
        },
        "examples": [
          {
            "id": "add-schema-column",
            "request": "Adicionar coluna para o campo email com o título Contato",
            "operationId": "column.add",
            "params": {
              "field": "email",
              "header": "Contato",
              "type": "string"
            },
            "isPositive": true
          },
          {
            "id": "add-email-column-imperative",
            "request": "Adicione a coluna e-mail à tabela de funcionários e mantenha as demais colunas",
            "operationId": "column.add",
            "params": {
              "field": "email",
              "header": "E-mail",
              "type": "string"
            },
            "isPositive": true
          },
          {
            "id": "rename-active-column-to-status",
            "request": "Ativo vira Status.",
            "operationId": "column.header.set",
            "target": "ativo",
            "params": {
              "header": "Status"
            },
            "isPositive": true
          },
          {
            "id": "rename-column-title-without-changing-cell-values",
            "request": "Troque somente o título da coluna Ativo para Status, sem alterar os valores das células",
            "operationId": "column.header.set",
            "target": "ativo",
            "params": {
              "header": "Status"
            },
            "isPositive": true
          },
          {
            "id": "cell-value-mapping-is-not-header-renaming",
            "request": "Sem mudar o título da coluna Ativo, mostre Sim e Não no lugar dos valores das células",
            "operationId": "column.header.set",
            "target": "ativo",
            "isPositive": false
          },
          {
            "id": "current-column-label-is-not-a-rename-request",
            "request": "Na coluna chamada Status, mostre um chip vermelho quando o valor estiver inativo",
            "operationId": "column.header.set",
            "target": "ativo",
            "isPositive": false
          },
          {
            "id": "add-computed-column",
            "request": "Criar coluna de idade baseada na data de nascimento",
            "operationId": "column.computed.add",
            "params": {
              "field": "idade",
              "header": "Idade",
              "expression": {
                "yearsSince": [
                  {
                    "var": "dataNascimento"
                  }
                ]
              },
              "outputType": "number"
            },
            "isPositive": true
          },
          {
            "id": "add-conditional-badge",
            "request": "Mostrar badge vermelho na coluna status se o valor for \"atrasado\"",
            "operationId": "column.conditionalRenderer.add",
            "target": "status",
            "params": {
              "id": "badge-atrasado",
              "condition": {
                "==": [
                  {
                    "var": "status"
                  },
                  "atrasado"
                ]
              },
              "renderer": {
                "type": "badge",
                "badge": {
                  "color": "warn",
                  "variant": "filled"
                }
              }
            },
            "isPositive": true
          },
          {
            "id": "set-active-base-chip-for-status-pair",
            "request": "Na coluna Status, use chip verde quando ativo e chip vermelho quando inativo sem alterar as outras colunas",
            "operationId": "column.renderer.set",
            "target": "ativo",
            "params": {
              "type": "chip",
              "chip": {
                "textField": "ativo",
                "color": "success",
                "variant": "filled"
              }
            },
            "isPositive": true
          },
          {
            "id": "add-inactive-conditional-chip",
            "request": "Na coluna Status, use chip verde quando ativo e chip vermelho quando inativo sem alterar as outras colunas",
            "operationId": "column.conditionalRenderer.add",
            "target": "ativo",
            "params": {
              "id": "chip-inativo",
              "condition": {
                "==": [
                  {
                    "var": "ativo"
                  },
                  false
                ]
              },
              "renderer": {
                "type": "chip",
                "chip": {
                  "text": "Inativo",
                  "color": "warn",
                  "variant": "filled"
                }
              }
            },
            "isPositive": true
          },
          {
            "id": "enable-export",
            "request": "Habilitar exportação para Excel e PDF",
            "operationId": "export.enabled.set",
            "params": {
              "enabled": true,
              "formats": [
                "excel",
                "pdf"
              ]
            },
            "isPositive": true
          },
          {
            "id": "add-row-action",
            "request": "Adicionar botão de excluir na linha",
            "operationId": "rowAction.add",
            "params": {
              "id": "delete",
              "label": "Excluir",
              "action": "delete",
              "icon": "delete",
              "color": "warn"
            },
            "isPositive": true
          },
          {
            "id": "add-row-action-open-route",
            "request": "Adicionar botão de linha para abrir detalhe com navegação interna",
            "operationId": "rowAction.add",
            "params": {
              "id": "details",
              "label": "Detalhes",
              "action": "navigation.openRoute",
              "icon": "open_in_new",
              "globalAction": {
                "actionId": "navigation.openRoute",
                "payload": {
                  "path": "/clientes/detalhe",
                  "query": {
                    "id": "${row.id}"
                  }
                }
              }
            },
            "isPositive": true
          },
          {
            "id": "group-by-field",
            "request": "Agrupar a tabela por departamento",
            "operationId": "grouping.set",
            "params": {
              "enabled": true,
              "fields": [
                "departamento"
              ]
            },
            "isPositive": true
          },
          {
            "id": "reject-invalid-renderer",
            "request": "Configurar imagem para um renderizador do tipo ícone",
            "operationId": "column.renderer.set",
            "target": "avatar",
            "params": {
              "type": "icon",
              "image": {
                "src": "..."
              }
            },
            "isPositive": false
          },
          {
            "id": "compose-photo-and-code-in-code-cell",
            "request": "Na coluna Código, mostrar primeiro a foto e depois o código na mesma célula, sem manter Foto como coluna separada",
            "operationId": "column.renderer.set",
            "target": "codigo",
            "params": {
              "type": "compose",
              "compose": {
                "items": [
                  {
                    "type": "avatar",
                    "avatar": {
                      "srcField": "foto",
                      "altField": "nome",
                      "initialsField": "nome",
                      "shape": "rounded",
                      "size": 32
                    }
                  },
                  {
                    "type": "value",
                    "field": "codigo"
                  }
                ],
                "layout": {
                  "direction": "row",
                  "align": "center",
                  "gap": 8
                }
              }
            },
            "isPositive": true
          },
          {
            "id": "stack-existing-photo-and-code-vertically",
            "request": "No composto anterior, deixe em duas linhas: foto em cima e código embaixo",
            "operationId": "column.renderer.composeLayout.set",
            "target": "codigo",
            "params": {
              "direction": "column"
            },
            "isPositive": true
          },
          {
            "id": "grow-photo-inside-existing-compose",
            "request": "Aumente um pouco somente a foto dessa célula composta, sem mudar os outros itens",
            "operationId": "column.renderer.composeItem.set",
            "target": "codigo",
            "params": {
              "itemType": "avatar",
              "item": {
                "type": "avatar",
                "avatar": {
                  "srcField": "foto",
                  "initialsField": "nome",
                  "shape": "rounded",
                  "size": 40
                }
              }
            },
            "isPositive": true
          },
          {
            "id": "shrink-photo-inside-existing-compose",
            "request": "Diminua só essa foto; ela está grande demais, e preserve o restante",
            "operationId": "column.renderer.composeItem.set",
            "target": "codigo",
            "params": {
              "itemType": "avatar",
              "item": {
                "type": "avatar",
                "avatar": {
                  "srcField": "foto",
                  "initialsField": "nome",
                  "shape": "rounded",
                  "size": 24
                }
              }
            },
            "isPositive": true
          },
          {
            "id": "make-photo-circular-inside-existing-compose",
            "request": "Deixe somente a foto dessa célula composta circular, sem alterar tamanho, layout ou os outros itens",
            "operationId": "column.renderer.composeItem.set",
            "target": "codigo",
            "params": {
              "itemType": "avatar",
              "item": {
                "type": "avatar",
                "avatar": {
                  "srcField": "foto",
                  "initialsField": "nome",
                  "shape": "circle",
                  "size": 24
                }
              }
            },
            "isPositive": true
          },
          {
            "id": "set-composed-photo-rounded-square-after-correction",
            "request": "Deixe a foto circular... não, cancela essa parte: quero quadrada com cantos arredondados",
            "operationId": "column.renderer.composeItem.set",
            "target": "codigo",
            "params": {
              "itemType": "avatar",
              "item": {
                "type": "avatar",
                "avatar": {
                  "srcField": "foto",
                  "initialsField": "nome",
                  "shape": "rounded",
                  "size": 24
                }
              }
            },
            "isPositive": true
          },
          {
            "id": "set-button-renderer",
            "request": "Transformar a coluna acoes em botao que executa abrir-detalhe",
            "operationId": "column.renderer.set",
            "target": "acoes",
            "params": {
              "type": "button",
              "button": {
                "label": "Abrir",
                "action": {
                  "id": "abrir-detalhe"
                }
              }
            },
            "isPositive": true
          },
          {
            "id": "add-column-conditional-style",
            "request": "Destacar a coluna status quando o valor estiver bloqueado",
            "operationId": "column.conditionalStyle.add",
            "target": "status",
            "params": {
              "id": "status-bloqueado",
              "condition": {
                "==": [
                  {
                    "var": "status"
                  },
                  "bloqueado"
                ]
              },
              "cssClass": "status-bloqueado"
            },
            "isPositive": true
          },
          {
            "id": "set-currency-format-preset",
            "request": "Formatar a coluna total como moeda brasileira",
            "operationId": "column.format.set",
            "target": "total",
            "params": {
              "format": "BRL|symbol|2"
            },
            "isPositive": true
          },
          {
            "id": "set-cpf-format-preset",
            "request": "Formate a coluna CPF",
            "operationId": "column.format.set",
            "target": "cpf",
            "params": {
              "format": "000.000.000-00"
            },
            "isPositive": true
          },
          {
            "id": "set-long-date-format-preset",
            "request": "Mostre a data de admissão por extenso",
            "operationId": "column.format.set",
            "target": "dataAdmissao",
            "params": {
              "format": "longDate"
            },
            "isPositive": true
          },
          {
            "id": "set-basic-column-width",
            "request": "Definir a largura da coluna nome para 240px",
            "operationId": "column.width.set",
            "target": "nome",
            "params": {
              "width": "240px"
            },
            "isPositive": true
          },
          {
            "id": "set-salary-align-right",
            "request": "Alinhe o salário à direita",
            "operationId": "column.align.set",
            "target": "salario",
            "params": {
              "align": "right"
            },
            "isPositive": true
          },
          {
            "id": "make-name-sticky-start",
            "request": "Fixe a coluna funcionário no início da tabela",
            "operationId": "column.sticky.set",
            "target": "funcionario",
            "params": {
              "sticky": "start"
            },
            "isPositive": true
          },
          {
            "id": "moving-column-to-start-is-not-sticky",
            "request": "Mova a coluna salário líquido da tabela para o início",
            "operationId": "column.sticky.set",
            "target": "salarioLiquido",
            "isPositive": false
          },
          {
            "id": "disable-cpf-sorting",
            "request": "Não permita ordenar pela coluna CPF",
            "operationId": "column.sortable.set",
            "target": "cpf",
            "params": {
              "sortable": false
            },
            "isPositive": true
          },
          {
            "id": "enable-department-filter",
            "request": "Deixe o departamento disponível nos filtros",
            "operationId": "column.filterable.set",
            "target": "departamento",
            "params": {
              "filterable": true
            },
            "isPositive": true
          },
          {
            "id": "hide-internal-id-column",
            "request": "Oculte o ID interno da tabela",
            "operationId": "column.visibility.set",
            "target": "id",
            "params": {
              "visible": false
            },
            "isPositive": true
          },
          {
            "id": "hide-source-column-after-cell-composition",
            "request": "Na coluna Código, mostrar primeiro a foto e depois o código na mesma célula, sem manter Foto como coluna separada",
            "operationId": "column.visibility.set",
            "target": "foto",
            "params": {
              "visible": false
            },
            "isPositive": true
          },
          {
            "id": "move-whole-photo-column-before-code",
            "request": "Mover a coluna Foto inteira para antes da coluna Código, mantendo as duas colunas separadas e sem alterar suas células",
            "operationId": "column.order.set",
            "target": "foto",
            "params": {
              "order": 0
            },
            "isPositive": true
          },
          {
            "id": "move-net-salary-column-to-start",
            "request": "Mova a coluna salário líquido da tabela para o início",
            "operationId": "column.order.set",
            "target": "salarioLiquido",
            "params": {
              "order": 0
            },
            "isPositive": true
          },
          {
            "id": "pinning-column-is-not-reordering",
            "request": "Fixe a coluna funcionário no início durante a rolagem horizontal",
            "operationId": "column.order.set",
            "target": "funcionario",
            "isPositive": false
          },
          {
            "id": "map-active-status-labels",
            "request": "Sem mudar o título da coluna Ativo, mostre Sim e Não no lugar dos valores das células",
            "operationId": "column.valueMapping.set",
            "target": "ativo",
            "params": {
              "valueMapping": {
                "true": "Sim",
                "false": "Não"
              }
            },
            "isPositive": true
          },
          {
            "id": "column-header-renaming-is-not-value-mapping",
            "request": "Ativo vira Status.",
            "operationId": "column.valueMapping.set",
            "target": "ativo",
            "isPositive": false
          },
          {
            "id": "set-avatar-chip-renderer",
            "request": "Corrija o avatar do funcionário e mantenha o nome como chip",
            "operationId": "column.renderer.set",
            "target": "funcionario",
            "params": {
              "type": "compose",
              "compose": {
                "items": [
                  {
                    "type": "avatar",
                    "avatar": {
                      "srcField": "avatarUrl",
                      "initialsField": "funcionario",
                      "shape": "circle",
                      "backgroundColor": "#E3F2FD",
                      "textColor": "#0D47A1"
                    }
                  },
                  {
                    "type": "chip",
                    "chip": {
                      "textField": "funcionario",
                      "variant": "soft"
                    }
                  }
                ]
              }
            },
            "isPositive": true
          },
          {
            "id": "highlight-high-salary-row-red",
            "request": "Destaque de vermelho as linhas com salário acima de 30 mil",
            "operationId": "row.styleRule.add",
            "params": {
              "id": "salario-acima-30000",
              "condition": {
                ">": [
                  {
                    "var": "salario"
                  },
                  30000
                ]
              },
              "effects": [
                {
                  "id": "salario-alto-destaque",
                  "scope": "row",
                  "description": "Destaque visual para salários acima de R$ 30.000.",
                  "estilo": {
                    "color": "#B42318",
                    "bold": true
                  },
                  "background": {
                    "color": "#FDECEC"
                  },
                  "layout": {
                    "border": "left",
                    "borderColor": "#D92D20",
                    "borderWidth": 4
                  }
                }
              ],
              "description": "Destaca a linha inteira sem alterar dados, filtros ou paginação."
            },
            "isPositive": true
          },
          {
            "id": "change-high-salary-row-highlight-to-orange",
            "request": "Agora troque vermelho por laranja",
            "operationId": "row.styleRule.update",
            "target": "salario-acima-30000",
            "params": {
              "description": "Destaca em laranja a linha inteira para salários acima de R$ 30.000.",
              "effects": [
                {
                  "id": "salario-alto-destaque",
                  "scope": "row",
                  "description": "Destaque visual laranja para salários acima de R$ 30.000.",
                  "estilo": {
                    "color": "#9A3412",
                    "bold": true
                  },
                  "background": {
                    "color": "#FFEDD5"
                  },
                  "layout": {
                    "border": "left",
                    "borderColor": "#F97316",
                    "borderWidth": 4
                  }
                }
              ]
            },
            "isPositive": true
          },
          {
            "id": "animate-high-salary-row",
            "request": "Anime suavemente as linhas com salário acima de 30000",
            "operationId": "row.conditionalRenderer.add",
            "params": {
              "id": "salario-alto-pulse",
              "condition": {
                ">": [
                  {
                    "var": "salario"
                  },
                  30000
                ]
              },
              "animation": {
                "preset": "pulse-soft",
                "trigger": "onAppear",
                "intensity": "subtle",
                "repeat": "once",
                "durationMs": 1200
              },
              "description": "Destaca linhas de salário alto sem alterar os dados."
            },
            "isPositive": true
          },
          {
            "id": "style-low-salary-cell",
            "request": "Para salários menores que 30000, use fundo laranja claro",
            "operationId": "column.conditionalStyle.add",
            "target": "salario",
            "params": {
              "id": "salario-baixo-laranja",
              "condition": {
                "<": [
                  {
                    "var": "salario"
                  },
                  30000
                ]
              },
              "style": {
                "backgroundColor": "#FFF3E0",
                "color": "#8A4B00"
              },
              "tooltip": {
                "text": "Salário abaixo do recorte configurado",
                "position": "top"
              }
            },
            "isPositive": true
          },
          {
            "id": "enable-advanced-filters-human",
            "request": "Ative filtros avançados e deixe CPF e departamento sempre visíveis",
            "operationId": "filter.advanced.configure",
            "params": {
              "enabled": true,
              "queryBuilder": true,
              "savePresets": true,
              "settings": {
                "mode": "filter",
                "showAdvanced": true,
                "alwaysVisibleFields": [
                  "cpf",
                  "departamento"
                ]
              }
            },
            "isPositive": true
          },
          {
            "id": "add-salary-to-advanced-filters-human",
            "request": "Inclua também Salário nesses filtros",
            "operationId": "filter.advanced.fields.add",
            "params": {
              "fields": [
                "salario"
              ],
              "selected": true,
              "alwaysVisible": true
            },
            "isPositive": true
          },
          {
            "id": "remove-active-from-advanced-filters-human",
            "request": "Agora remova Ativo desses filtros",
            "operationId": "filter.advanced.fields.remove",
            "params": {
              "fields": [
                "ativo"
              ],
              "selected": true,
              "alwaysVisible": true
            },
            "isPositive": true
          },
          {
            "id": "enable-table-filters-human",
            "request": "Habilite os filtros dinâmicos da tabela",
            "operationId": "behavior.filtering.configure",
            "params": {
              "enabled": true,
              "strategy": "client",
              "debounceMs": 250
            },
            "isPositive": true
          },
          {
            "id": "compact-density-human",
            "request": "Deixe a tabela mais compacta",
            "operationId": "appearance.density.set",
            "params": {
              "density": "compact"
            },
            "isPositive": true
          },
          {
            "id": "toolbar-search-refresh-human",
            "request": "Mostre busca e botão de atualizar na toolbar",
            "operationId": "toolbar.configure",
            "params": {
              "visible": true,
              "showSearch": true,
              "showRefresh": true
            },
            "isPositive": true
          },
          {
            "id": "rename-global-table-title-human",
            "request": "Altere o titulo da tabela para Folha operacional revisada",
            "operationId": "toolbar.configure",
            "params": {
              "title": "Folha operacional revisada"
            },
            "isPositive": true
          },
          {
            "id": "column-title-is-not-global-table-title-human",
            "request": "Altere o título da coluna Salário Líquido para Valor líquido",
            "operationId": "toolbar.configure",
            "target": "salarioLiquido",
            "isPositive": false
          },
          {
            "id": "selected-rows-export-is-not-toolbar-presentation",
            "request": "Habilite um botão para exportar apenas as linhas selecionadas",
            "operationId": "toolbar.configure",
            "isPositive": false
          },
          {
            "id": "configure-selected-rows-export",
            "request": "Habilite em uma tabela o botão para exportar apenas as linhas selecionadas",
            "operationId": "export.configure",
            "params": {
              "enabled": true,
              "general": {
                "scope": "selected"
              }
            },
            "isPositive": true
          },
          {
            "id": "configure-server-pagination",
            "request": "Usar paginacao no servidor com 50 linhas por pagina",
            "operationId": "behavior.pagination.configure",
            "params": {
              "enabled": true,
              "strategy": "server",
              "pageSize": 50,
              "position": "bottom"
            },
            "isPositive": true
          },
          {
            "id": "configure-default-sorting",
            "request": "Ordenar inicialmente por data de criacao decrescente",
            "operationId": "behavior.sorting.configure",
            "params": {
              "enabled": true,
              "strategy": "server",
              "defaultSort": {
                "column": "createdAt",
                "direction": "desc"
              }
            },
            "isPositive": true
          },
          {
            "id": "configure-bulk-actions",
            "request": "Habilitar acoes em lote na toolbar",
            "operationId": "actions.bulk.configure",
            "params": {
              "enabled": true,
              "position": "toolbar"
            },
            "isPositive": true
          },
          {
            "id": "configure-localization",
            "request": "Configurar a tabela para portugues do Brasil",
            "operationId": "localization.configure",
            "params": {
              "locale": "pt-BR",
              "direction": "ltr",
              "dateTime": {
                "dateFormat": "dd/MM/yyyy"
              }
            },
            "isPositive": true
          },
          {
            "id": "configure-accessibility",
            "request": "Ativar alto contraste e reduzir animacoes",
            "operationId": "accessibility.configure",
            "params": {
              "enabled": true,
              "highContrast": true,
              "reduceMotion": true,
              "announcements": {
                "liveRegion": "polite"
              }
            },
            "isPositive": true
          },
          {
            "id": "require-removal-confirmation",
            "request": "Remover a coluna nome",
            "operationId": "column.remove",
            "target": "nome",
            "isPositive": true
          }
        ]
      },
      "chunks": [
        {
          "chunkIndex": 0,
          "chunkKind": "summary",
          "content": "Component ID: praxis-table\nSelector: praxis-table\nFriendly Name: Praxis Table\nDescription: Tabela interativa com paginação, ordenação e ações em massa.\nCategory: table\nLib/Package: @praxisui/table\nTags: widget, table, configurable, hasWizard, stable\nInputs:\n  - config (TableConfig)\n  - resourcePath (string)\n  - data (any[])\n  - configPersistenceStrategy ('local-first' | 'input-first' | 'volatile')\n  - queryContext (PraxisDataQueryContext | null)\n  - aiContext (TableAiContext | null)\n  - aiAssistantVoiceInputMode ('disabled' | 'browser-speech')\n  - aiAssistantVoiceLanguage (string)\n  - filterCriteria (Record<string, any>)\n  - autoDelete (boolean)\n  - enableCustomization (boolean)\n  - authoringCapability (string)\n  - dense (boolean)\n  - horizontalScroll ('auto' | 'wrap' | 'none')\n  - tableId (string)\n  - componentInstanceId (string)\n  - title (string)\n  - subtitle (string)\n  - icon (string)\n  - notifyIfOutdated ('inline' | 'snackbar' | 'both' | 'none')\n  - snoozeMs (number)\n  - autoOpenSettingsOnOutdated (boolean)\n  - crudContext (any)\nOutputs:\n  - rowClick ({ row: any; index: number })\n  - widgetEvent (WidgetEventEnvelope)\n  - resourceEvent (PraxisResourceEvent)\n  - rowDoubleClick ({ action: string; row: any })\n  - rowExpansionChange (RowExpansionChangeEvent)\n  - selectionChange ({ trigger: string; row?: any; selectedRows: any[]; selectedCount: number; tableId?: string })\n  - rowAction ({ action: string; row: any })\n  - toolbarAction ({ action: string })\n  - bulkAction ({ action: string; rows: any[] })\n  - columnReorder ({ action: string; trigger: \"drag\" | \"keyboard\" | \"undo\"; operationId: number; tableId: string; sourceField: string; targetField: string; previousIndex: number; currentIndex: number; sourceZone: \"start\" | \"center\" | \"end\"; targetZone: \"start\" | \"center\" | \"end\"; previousOrder: string[]; currentOrder: string[]; persisted: boolean })\n  - columnReorderAttempt ({ action: \"columnReorderAttempt\"; trigger: \"drag\" | \"keyboard\"; operationId: number; tableId: string; sourceField: string; targetField: string; previousIndex: number; currentIndex: number; sourceZone: \"start\" | \"center\" | \"end\"; targetZone: \"start\" | \"center\" | \"end\"; result: \"blocked\"; reasonCode: \"drop-zone-policy-blocked\"; configuredColumnDropZones: string[] })\n  - beforeDelete (any)\n  - afterDelete (any)\n  - deleteError ({ row: any; error: unknown })\n  - beforeBulkDelete (any[])\n  - afterBulkDelete (any[])\n  - bulkDeleteError ({ rows: any[]; error: unknown })\n  - schemaStatusChange ({ outdated: boolean; serverHash?: string; lastVerifiedAt?: string; trigger?: string; tableId?: string })\n  - metadataChange ({ trigger: string; meta: any; tableId?: string })\n  - configChange (TableConfig)\n  - loadingStateChange (LoadingState)\n",
          "sourcePointer": "projects/praxis-table/src/lib/praxis-table.metadata.ts",
          "contentHash": "30072163f1c8308aa5b1fb1f060b423f022e856e04e0fa7f32a02c013c623c51",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 1,
          "chunkKind": "capabilities",
          "content": "Schema Capability:\n  - Path: meta.name\n    Category: meta\n    Kind: string\n    Description: Nome amigável da configuração para exibição em tooltips ou relatórios.\n\nSchema Capability:\n  - Path: meta.description\n    Category: meta\n    Kind: string\n    Description: Descrição breve do propósito da tabela.\n\nSchema Capability:\n  - Path: meta.tags\n    Category: meta\n    Kind: array\n    Description: Tags para busca, presets e telemetria.\n\nSchema Capability:\n  - Path: meta.idField\n    Category: meta\n    Kind: string\n    Description: Campo usado como chave primária operacional da tabela.\n\nSchema Capability:\n  - Path: meta.schemaId\n    Category: meta\n    Kind: string\n    Description: Identidade do schema de origem para reconciliação.\n\nSchema Capability:\n  - Path: columns[].field\n    Category: columns\n    Kind: string\n    Description: Identificador técnico no dataset. Deve ser único.\n\nSchema Capability:\n  - Path: columns[].header\n    Category: columns\n    Kind: string\n    Description: Texto exibido no cabeçalho da coluna.\n\nSchema Capability:\n  - Path: columns[].visible\n    Category: columns\n    Kind: boolean\n    Description: Controla a visibilidade da coluna. Crítico para UX.\n\nSchema Capability:\n  - Path: columns[].order\n    Category: columns\n    Kind: number\n    Description: Ordem visual. Menor número = mais à esquerda.\n\nSchema Capability:\n  - Path: columns[].width\n    Category: columns\n    Kind: string\n    Description: Largura da coluna (ex.: 100px, 10%, auto).\n\nSchema Capability:\n  - Path: columns[].align\n    Category: columns\n    Kind: enum\n    Description: Alinhamento do conteúdo e cabeçalho.\n\nSchema Capability:\n  - Path: columns[].sticky\n    Category: columns\n    Kind: enum\n    Description: Fixa a coluna no início (start/true) ou fim (end) da rolagem; false desativa sticky.\n\nSchema Capability:\n  - Path: columns[].sortable\n    Category: columns\n    Kind: boolean\n    Description: Habilita ordenação nesta coluna específica.\n\nSchema Capability:\n  - Path: columns[].filterable\n    Category: columns\n    Kind: boolean\n    Description: Habilita filtro nesta coluna específica.\n\nSchema Capability:\n  - Path: columns[].resizable\n    Category: columns\n    Kind: boolean\n    Description: Permite redimensionar a largura desta coluna.\n\nSchema Capability:\n  - Path: columns[].type\n    Category: columns\n    Kind: enum\n    Description: Tipo de dado base para formatação padrão.\n\nSchema Capability:\n  - Path: columns[].sortField\n    Category: columns\n    Kind: string\n    Description: Campo usado para ordenação no backend, se diferente de \"field\".\n\nSchema Capability:\n  - Path: columns[].style\n    Category: columns\n    Kind: string\n    Description: Estilos CSS inline aplicados à célula.\n\nSchema Capability:\n  - Path: columns[].headerStyle\n    Category: columns\n    Kind: string\n    Description: Estilos CSS para o cabeçalho da coluna.\n\nSchema Capability:\n  - Path: columns[].valueMapping\n    Category: mapping\n    Kind: object\n    Description: Mapeia valores crus para rótulos amigáveis.\n\nSchema Capability:\n  - Path: columns[].format\n    Category: format\n    Kind: string\n    Description: Formato de exibicao especifico (DataFormattingService). Presets em allowedValues; aceita DatePipe (dd/MM/yyyy, yyyy-MM-dd, yyyy-MM-dd HH:mm) e formatos numericos \"1.2-2\".\n\nSchema Capability:\n  - Path: columns[].computed\n    Category: columns\n    Kind: object\n    Description: Configuração de coluna calculada (expression + tipo/format).\n\nSchema Capability:\n  - Path: columns[].computed.expression\n    Category: columns\n    Kind: expression\n    Description: AST Json Logic canônico para derivar valores computados da linha.\n\nSchema Capability:\n  - Path: columns[].computed.outputType\n    Category: format\n    Kind: enum\n    Description: Tipo de saída do cálculo para formatação.\n\nSchema Capability:\n  - Path: columns[].computed.format\n    Category: format\n    Kind: string\n    Description: Formato de exibição do resultado calculado.\n\nSchema Capability:\n  - Path: columns[].computed.dependencies\n    Category: columns\n    Kind: array\n    Description: Campos usados na expressão (opcional).\n\nSchema Capability:\n  - Path: columns[].renderer.type\n    Category: renderer\n    Kind: enum\n    Description: Tipo de renderizador customizado (icon, badge, button etc.).\n\nSchema Capability:\n  - Path: columns[].renderer.typeExpr\n    Category: renderer\n    Kind: expression\n    Description: Expressao computada do dominio da tabela para decidir o tipo do renderer; nao e Json Logic.\n\nSchema Capability:\n  - Path: columns[].renderer.button\n    Category: renderer\n    Kind: object\n    Description: Configuração do botão por linha.\n\nSchema Capability:\n  - Path: columns[].renderer.button.label\n    Category: renderer\n    Kind: string\n    Description: Texto fixo do botao.\n\nSchema Capability:\n  - Path: columns[].renderer.button.labelField\n    Category: renderer\n    Kind: string\n    Description: Campo do row para texto do botao.\n\nSchema Capability:\n  - Path: columns[].renderer.button.icon\n    Category: renderer\n    Kind: string\n    Description: Icone do botao.\n\nSchema Capability:\n  - Path: columns[].renderer.button.color\n    Category: renderer\n    Kind: enum\n    Description: Cor do botao (ou token CSS).\n\nSchema Capability:\n  - Path: columns[].renderer.button.variant\n    Category: renderer\n    Kind: enum\n    Description: Variante visual do botao.\n\nSchema Capability:\n  - Path: columns[].renderer.button.size\n    Category: renderer\n    Kind: enum\n    Description: Tamanho do botao.\n\nSchema Capability:\n  - Path: columns[].renderer.button.ariaLabel\n    Category: renderer\n    Kind: string\n    Description: Label acessivel do botao.\n\nSchema Capability:\n  - Path: columns[].renderer.button.disabledCondition\n    Category: renderer\n    Kind: expression\n    Description: Expressao condicional canonica em JSON Logic para desabilitar.\n\nSchema Capability:\n  - Path: columns[].renderer.button.action\n    Category: renderer\n    Kind: object\n    Description: Acao disparada pelo botao.\n\nSchema Capability:\n  - Path: columns[].renderer.button.action.id\n    Category: renderer\n    Kind: string\n    Description: Identificador da acao do botao.\n\nSchema Capability:\n  - Path: columns[].renderer.button.action.payloadExpr\n    Category: renderer\n    Kind: expression\n    Description: Expressao computada do dominio da tabela para montar o payload da acao; nao e Json Logic.\n\nSchema Capability:\n  - Path: columns[].renderer.link\n    Category: renderer\n    Kind: object\n    Description: Link sanitizado com href fixo ou field.\n\nSchema Capability:\n  - Path: columns[].renderer.link.text\n    Category: renderer\n    Kind: string\n    Description: Texto fixo do link.\n\nSchema Capability:\n  - Path: columns[].renderer.link.textField\n    Category: renderer\n    Kind: string\n    Description: Campo para texto do link.\n\nSchema Capability:\n  - Path: columns[].renderer.link.href\n    Category: renderer\n    Kind: string\n    Description: Href fixo do link.\n\nSchema Capability:\n  - Path: columns[].renderer.link.hrefField\n    Category: renderer\n    Kind: string\n    Description: Campo para href do link.\n\nSchema Capability:\n  - Path: columns[].renderer.link.target\n    Category: renderer\n    Kind: enum\n    Description: Target do link.\n\nSchema Capability:\n  - Path: columns[].renderer.link.rel\n    Category: renderer\n    Kind: string\n    Description: Atributo rel do link.\n\nSchema Capability:\n  - Path: columns[].renderer.icon\n    Category: renderer\n    Kind: object\n    Description: Icone material/SVG com cor, tamanho e texto opcional ao lado do valor.\n\nSchema Capability:\n  - Path: columns[].renderer.icon.name\n    Category: renderer\n    Kind: string\n    Description: Nome fixo do icone.\n\nSchema Capability:\n  - Path: columns[].renderer.icon.nameField\n    Category: renderer\n    Kind: string\n    Description: Campo com nome do icone.",
          "sourcePointer": "projects/praxis-table/src/lib/ai/table-component-ai-capabilities.ts",
          "contentHash": "1a93867a6d533573030914915bad480294bdf421edb3c886f3b62372ae838ff0",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 2,
          "chunkKind": "capabilities",
          "content": "Schema Capability:\n  - Path: columns[].renderer.icon.text\n    Category: renderer\n    Kind: string\n    Description: Texto fixo renderizado junto ao icone.\n\nSchema Capability:\n  - Path: columns[].renderer.icon.textField\n    Category: renderer\n    Kind: string\n    Description: Campo de linha usado como texto renderizado junto ao icone.\n\nSchema Capability:\n  - Path: columns[].renderer.icon.prefix\n    Category: renderer\n    Kind: string\n    Description: Prefixo visual aplicado somente ao texto exibido pelo renderer de icone.\n\nSchema Capability:\n  - Path: columns[].renderer.icon.suffix\n    Category: renderer\n    Kind: string\n    Description: Sufixo visual aplicado somente ao texto exibido pelo renderer de icone.\n\nSchema Capability:\n  - Path: columns[].renderer.icon.color\n    Category: renderer\n    Kind: string\n    Description: Cor do icone.\n\nSchema Capability:\n  - Path: columns[].renderer.icon.size\n    Category: renderer\n    Kind: number\n    Description: Tamanho em px.\n\nSchema Capability:\n  - Path: columns[].renderer.icon.ariaLabel\n    Category: renderer\n    Kind: string\n    Description: Label acessivel do icone.\n\nSchema Capability:\n  - Path: columns[].renderer.image\n    Category: renderer\n    Kind: object\n    Description: Imagem com src fixo ou field.\n\nSchema Capability:\n  - Path: columns[].renderer.image.src\n    Category: renderer\n    Kind: string\n    Description: URL fixa da imagem.\n\nSchema Capability:\n  - Path: columns[].renderer.image.srcField\n    Category: renderer\n    Kind: string\n    Description: Campo com URL da imagem.\n\nSchema Capability:\n  - Path: columns[].renderer.image.alt\n    Category: renderer\n    Kind: string\n    Description: Alt fixo da imagem.\n\nSchema Capability:\n  - Path: columns[].renderer.image.altField\n    Category: renderer\n    Kind: string\n    Description: Campo com alt da imagem.\n\nSchema Capability:\n  - Path: columns[].renderer.image.width\n    Category: renderer\n    Kind: number\n    Description: Largura em px.\n\nSchema Capability:\n  - Path: columns[].renderer.image.height\n    Category: renderer\n    Kind: number\n    Description: Altura em px.\n\nSchema Capability:\n  - Path: columns[].renderer.image.shape\n    Category: renderer\n    Kind: enum\n    Description: Formato da imagem.\n\nSchema Capability:\n  - Path: columns[].renderer.image.fit\n    Category: renderer\n    Kind: enum\n    Description: Ajuste da imagem.\n\nSchema Capability:\n  - Path: columns[].renderer.image.lazy\n    Category: renderer\n    Kind: boolean\n    Description: Ativa lazy loading.\n\nSchema Capability:\n  - Path: columns[].renderer.html\n    Category: renderer\n    Kind: object\n    Description: HTML sanitizado com placeholders [[field]].\n\nSchema Capability:\n  - Path: columns[].renderer.html.template\n    Category: renderer\n    Kind: string\n    Description: Template HTML com placeholders [[field]].\n\nSchema Capability:\n  - Path: columns[].renderer.html.sanitize\n    Category: renderer\n    Kind: enum\n    Description: Nivel de sanitizacao.\n\nSchema Capability:\n  - Path: columns[].renderer.html.emptyFallback\n    Category: renderer\n    Kind: string\n    Description: Fallback quando campo esta vazio.\n\nSchema Capability:\n  - Path: columns[].renderer.menu\n    Category: renderer\n    Kind: object\n    Description: Menu de ações por linha.\n\nSchema Capability:\n  - Path: columns[].renderer.menu.itemsExpr\n    Category: renderer\n    Kind: expression\n    Description: Expressao computada do dominio da tabela para montar itens do menu; nao e Json Logic.\n\nSchema Capability:\n  - Path: columns[].renderer.menu.ariaLabel\n    Category: renderer\n    Kind: string\n    Description: Label acessivel do menu.\n\nSchema Capability:\n  - Path: columns[].renderer.badge\n    Category: renderer\n    Kind: object\n    Description: Badge simples (texto curto/status). Exige textField ou text.\n\nSchema Capability:\n  - Path: columns[].renderer.badge.text\n    Category: renderer\n    Kind: string\n    Description: Texto fixo do badge.\n\nSchema Capability:\n  - Path: columns[].renderer.badge.textField\n    Category: renderer\n    Kind: string\n    Description: Campo de onde ler o texto do badge.\n\nSchema Capability:\n  - Path: columns[].renderer.badge.color\n    Category: renderer\n    Kind: string\n    Description: Cor do badge (primary/accent/warn/success/etc).\n\nSchema Capability:\n  - Path: columns[].renderer.badge.variant\n    Category: renderer\n    Kind: enum\n    Description: Estilo visual do badge.\n\nSchema Capability:\n  - Path: columns[].renderer.badge.icon\n    Category: renderer\n    Kind: string\n    Description: Ícone opcional dentro do badge.\n\nSchema Capability:\n  - Path: columns[].renderer.chip\n    Category: renderer\n    Kind: object\n    Description: Chip interativo ou de status.\n\nSchema Capability:\n  - Path: columns[].renderer.chip.text\n    Category: renderer\n    Kind: string\n    Description: Texto fixo do chip.\n\nSchema Capability:\n  - Path: columns[].renderer.chip.textField\n    Category: renderer\n    Kind: string\n    Description: Campo de texto do chip.\n\nSchema Capability:\n  - Path: columns[].renderer.chip.color\n    Category: renderer\n    Kind: string\n    Description: Cor do chip.\n\nSchema Capability:\n  - Path: columns[].renderer.chip.variant\n    Category: renderer\n    Kind: enum\n    Description: Variante do chip.\n\nSchema Capability:\n  - Path: columns[].renderer.chip.icon\n    Category: renderer\n    Kind: string\n    Description: Ícone do chip.\n\nSchema Capability:\n  - Path: columns[].renderer.progress\n    Category: renderer\n    Kind: object\n    Description: Barra de progresso.\n\nSchema Capability:\n  - Path: columns[].renderer.progress.valueExpr\n    Category: renderer\n    Kind: expression\n    Description: Expressao computada do dominio da tabela para obter o valor (0-100); nao e Json Logic.\n\nSchema Capability:\n  - Path: columns[].renderer.progress.color\n    Category: renderer\n    Kind: string\n    Description: Cor da barra.\n\nSchema Capability:\n  - Path: columns[].renderer.progress.showLabel\n    Category: renderer\n    Kind: boolean\n    Description: Mostra valor numérico ao lado.\n\nSchema Capability:\n  - Path: columns[].renderer.avatar\n    Category: renderer\n    Kind: object\n    Description: Avatar de usuário ou entidade.\n\nSchema Capability:\n  - Path: columns[].renderer.avatar.src\n    Category: renderer\n    Kind: string\n    Description: URL fixa da imagem.\n\nSchema Capability:\n  - Path: columns[].renderer.avatar.srcField\n    Category: renderer\n    Kind: string\n    Description: Campo contendo URL da imagem.\n\nSchema Capability:\n  - Path: columns[].renderer.avatar.alt\n    Category: renderer\n    Kind: string\n    Description: Texto alternativo fixo.\n\nSchema Capability:\n  - Path: columns[].renderer.avatar.altField\n    Category: renderer\n    Kind: string\n    Description: Campo para texto alternativo.\n\nSchema Capability:\n  - Path: columns[].renderer.avatar.initialsField\n    Category: renderer\n    Kind: string\n    Description: Campo textual bruto para derivar iniciais automaticamente.\n\nSchema Capability:\n  - Path: columns[].renderer.avatar.initialsExpr\n    Category: renderer\n    Kind: expression\n    Description: Expressao computada do dominio da tabela para derivar iniciais; nao e Json Logic.\n\nSchema Capability:\n  - Path: columns[].renderer.avatar.shape\n    Category: renderer\n    Kind: string\n    Description: Formato do avatar.\n\nSchema Capability:\n  - Path: columns[].renderer.avatar.size\n    Category: renderer\n    Kind: number\n    Description: Tamanho em px.\n\nSchema Capability:\n  - Path: columns[].renderer.avatar.backgroundColor\n    Category: renderer\n    Kind: string\n    Description: Cor de fundo do círculo do avatar. Use com conditionalRenderers para variar por linha.\n\nSchema Capability:\n  - Path: columns[].renderer.avatar.textColor\n    Category: renderer\n    Kind: string\n    Description: Cor das iniciais do avatar. Use contraste adequado com backgroundColor.\n\nSchema Capability:\n  - Path: columns[].renderer.toggle\n    Category: renderer\n    Kind: object\n    Description: Switch/Toggle booleano interativo.",
          "sourcePointer": "projects/praxis-table/src/lib/ai/table-component-ai-capabilities.ts",
          "contentHash": "bb1da1d86b86ba45f5971a5319b0c94b5665ee75887cd8aa2f4f23674a2590e2",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 3,
          "chunkKind": "capabilities",
          "content": "Schema Capability:\n  - Path: columns[].renderer.toggle.stateExpr\n    Category: renderer\n    Kind: expression\n    Description: Expressao computada do dominio da tabela para definir o estado checked; nao e Json Logic.\n\nSchema Capability:\n  - Path: columns[].renderer.toggle.disabledCondition\n    Category: renderer\n    Kind: expression\n    Description: Condicao canonica em Json Logic para desabilitacao.\n\nSchema Capability:\n  - Path: columns[].renderer.toggle.ariaLabel\n    Category: renderer\n    Kind: string\n    Description: Label acessível.\n\nSchema Capability:\n  - Path: columns[].renderer.toggle.action\n    Category: renderer\n    Kind: object\n    Description: Ação disparada ao mudar.\n\nSchema Capability:\n  - Path: columns[].renderer.toggle.action.id\n    Category: renderer\n    Kind: string\n    Description: Identificador da ação para toggle.\n\nSchema Capability:\n  - Path: columns[].renderer.toggle.action.payloadExpr\n    Category: renderer\n    Kind: expression\n    Description: Expressao computada do dominio da tabela para montar o payload da acao; nao e Json Logic.\n\nSchema Capability:\n  - Path: columns[].renderer.rating\n    Category: renderer\n    Kind: object\n    Description: Estrelas de avaliação.\n\nSchema Capability:\n  - Path: columns[].renderer.rating.valueExpr\n    Category: renderer\n    Kind: expression\n    Description: Expressao computada do dominio da tabela para obter o valor numerico; nao e Json Logic.\n\nSchema Capability:\n  - Path: columns[].renderer.rating.max\n    Category: renderer\n    Kind: number\n    Description: Máximo de estrelas (default 5).\n\nSchema Capability:\n  - Path: columns[].renderer.rating.color\n    Category: renderer\n    Kind: string\n    Description: Cor das estrelas ativas.\n\nSchema Capability:\n  - Path: columns[].renderer.rating.outlineColor\n    Category: renderer\n    Kind: string\n    Description: Cor das bordas das estrelas.\n\nSchema Capability:\n  - Path: columns[].renderer.rating.size\n    Category: renderer\n    Kind: enum\n    Description: Tamanho das estrelas.\n\nSchema Capability:\n  - Path: columns[].renderer.rating.ariaLabel\n    Category: renderer\n    Kind: string\n    Description: Label acessível para a avaliação.\n\nSchema Capability:\n  - Path: columns[].renderer.compose\n    Category: renderer\n    Kind: object\n    Description: Composição de múltiplos renderers na mesma célula.\n\nSchema Capability:\n  - Path: columns[].renderer.compose.items\n    Category: renderer\n    Kind: array\n    Description: Lista de renderers aninhados.\n\nSchema Capability:\n  - Path: columns[].renderer.compose.items[].type\n    Category: renderer\n    Kind: enum\n    Description: Tipo do item de compose.\n\nSchema Capability:\n  - Path: columns[].renderer.compose.items[]\n    Category: renderer\n    Kind: object\n    Description: Item do compose (ex.: { type: \"badge\", badge: {...} }, { type: \"icon\", icon: {...} }, { type: \"link\", link: {...} }).\n\nSchema Capability:\n  - Path: columns[].renderer.compose.layout.gap\n    Category: renderer\n    Kind: number\n    Description: Espacamento entre itens (px).\n\nSchema Capability:\n  - Path: columns[].renderer.compose.layout.direction\n    Category: renderer\n    Kind: enum\n    Description: Direção do layout.\n\nSchema Capability:\n  - Path: columns[].renderer.compose.layout.align\n    Category: renderer\n    Kind: enum\n    Description: Alinhamento do layout.\n\nSchema Capability:\n  - Path: columns[].renderer.compose.layout.wrap\n    Category: renderer\n    Kind: boolean\n    Description: Permite quebra de linha.\n\nSchema Capability:\n  - Path: columns[].renderer.compose.layout.ellipsis\n    Category: renderer\n    Kind: boolean\n    Description: Aplica ellipsis quando overflow.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].condition\n    Category: conditional\n    Kind: expression\n    Description: Expressao condicional canonica em JSON Logic. Ex.: {\"===\":[{\"var\":\"status\"},\"Active\"]}. Nao use JS puro nem \"row.\".\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].enabled\n    Category: conditional\n    Kind: boolean\n    Description: Habilita/desabilita a regra.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer\n    Category: conditional\n    Kind: object\n    Description: Configuração do renderizador a ser usado se a condição for true.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.microVisualization\n    Category: conditional\n    Kind: object\n    Description: Configuração de microvisualização condicional. A visualização precisa usar surface table-cell, fallbackText acessível e os dados exigidos pelo kind.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.microVisualization.visualization.kind\n    Category: conditional\n    Kind: enum\n    Description: Kind da microvisualização condicional. Prefira delta, bullet, radial, harveyBall ou stackedBar para leitura rápida; os demais exigem revisão de largura ou densidade.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.microVisualization.visualization.fallbackText\n    Category: conditional\n    Kind: string\n    Description: Fallback acessível obrigatório da microvisualização condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].tooltip\n    Category: conditional\n    Kind: object\n    Description: Tooltip aplicado quando a regra condicional vencer.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].tooltip.text\n    Category: conditional\n    Kind: string\n    Description: Texto do tooltip da regra condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].effects\n    Category: conditional\n    Kind: array\n    Description: Efeitos visuais canonicos capazes de produzir renderer, tooltip ou animacao condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.type\n    Category: conditional\n    Kind: enum\n    Description: Tipo do renderizador condicional (badge, chip, etc.).\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.typeExpr\n    Category: conditional\n    Kind: expression\n    Description: Expressao computada do dominio da tabela para decidir o tipo do renderer condicional; nao e Json Logic.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.icon\n    Category: conditional\n    Kind: object\n    Description: Configuracao de icone condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.icon.name\n    Category: conditional\n    Kind: string\n    Description: Nome fixo do icone.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.icon.nameField\n    Category: conditional\n    Kind: string\n    Description: Campo com nome do icone.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.icon.text\n    Category: conditional\n    Kind: string\n    Description: Texto fixo renderizado junto ao icone condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.icon.textField\n    Category: conditional\n    Kind: string\n    Description: Campo de linha usado como texto renderizado junto ao icone condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.icon.prefix\n    Category: conditional\n    Kind: string\n    Description: Prefixo visual aplicado somente ao texto exibido pelo renderer de icone condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.icon.suffix\n    Category: conditional\n    Kind: string\n    Description: Sufixo visual aplicado somente ao texto exibido pelo renderer de icone condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.icon.color\n    Category: conditional\n    Kind: string\n    Description: Cor do icone.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.icon.size\n    Category: conditional\n    Kind: number\n    Description: Tamanho em px.",
          "sourcePointer": "projects/praxis-table/src/lib/ai/table-component-ai-capabilities.ts",
          "contentHash": "70921299c852a3e256e930742118d0d2a419b0cc20de7765098758efb4c56d1f",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 4,
          "chunkKind": "capabilities",
          "content": "Schema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.icon.ariaLabel\n    Category: conditional\n    Kind: string\n    Description: Label acessivel do icone.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.image\n    Category: conditional\n    Kind: object\n    Description: Configuracao de imagem condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.image.src\n    Category: conditional\n    Kind: string\n    Description: URL fixa da imagem.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.image.srcField\n    Category: conditional\n    Kind: string\n    Description: Campo com URL da imagem.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.image.alt\n    Category: conditional\n    Kind: string\n    Description: Alt fixo da imagem.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.image.altField\n    Category: conditional\n    Kind: string\n    Description: Campo com alt da imagem.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.image.width\n    Category: conditional\n    Kind: number\n    Description: Largura em px.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.image.height\n    Category: conditional\n    Kind: number\n    Description: Altura em px.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.image.shape\n    Category: conditional\n    Kind: enum\n    Description: Formato da imagem.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.image.fit\n    Category: conditional\n    Kind: enum\n    Description: Ajuste da imagem.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.image.lazy\n    Category: conditional\n    Kind: boolean\n    Description: Ativa lazy loading.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.link\n    Category: conditional\n    Kind: object\n    Description: Configuracao de link condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.link.text\n    Category: conditional\n    Kind: string\n    Description: Texto fixo do link.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.link.textField\n    Category: conditional\n    Kind: string\n    Description: Campo para texto do link.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.link.href\n    Category: conditional\n    Kind: string\n    Description: Href fixo do link.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.link.hrefField\n    Category: conditional\n    Kind: string\n    Description: Campo para href do link.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.link.target\n    Category: conditional\n    Kind: enum\n    Description: Target do link.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.link.rel\n    Category: conditional\n    Kind: string\n    Description: Atributo rel do link.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.button\n    Category: conditional\n    Kind: object\n    Description: Configuracao de botao condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.button.label\n    Category: conditional\n    Kind: string\n    Description: Texto fixo do botao.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.button.labelField\n    Category: conditional\n    Kind: string\n    Description: Campo do row para texto do botao.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.button.icon\n    Category: conditional\n    Kind: string\n    Description: Icone do botao.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.button.color\n    Category: conditional\n    Kind: enum\n    Description: Cor do botao (ou token CSS).\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.button.variant\n    Category: conditional\n    Kind: enum\n    Description: Variante visual do botao.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.button.size\n    Category: conditional\n    Kind: enum\n    Description: Tamanho do botao.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.button.ariaLabel\n    Category: conditional\n    Kind: string\n    Description: Label acessivel do botao.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.button.disabledCondition\n    Category: conditional\n    Kind: expression\n    Description: Expressao condicional canonica em JSON Logic para desabilitar.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.button.action\n    Category: conditional\n    Kind: object\n    Description: Acao do botao condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.button.action.id\n    Category: conditional\n    Kind: string\n    Description: ID da acao do botao.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.button.action.payloadExpr\n    Category: conditional\n    Kind: expression\n    Description: Expressao computada do dominio da tabela para montar o payload da acao condicional; nao e Json Logic.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.menu\n    Category: conditional\n    Kind: object\n    Description: Configuracao de menu condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.menu.itemsExpr\n    Category: conditional\n    Kind: expression\n    Description: Expressao computada do dominio da tabela para montar itens do menu condicional; nao e Json Logic.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.menu.ariaLabel\n    Category: conditional\n    Kind: string\n    Description: Label acessivel do menu.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.html\n    Category: conditional\n    Kind: object\n    Description: HTML condicional sanitizado.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.html.template\n    Category: conditional\n    Kind: string\n    Description: Template HTML com placeholders [[field]].\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.html.sanitize\n    Category: conditional\n    Kind: enum\n    Description: Nivel de sanitizacao.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.html.emptyFallback\n    Category: conditional\n    Kind: string\n    Description: Fallback quando campo esta vazio.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.badge\n    Category: conditional\n    Kind: object\n    Description: Configuração de badge condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.badge.text\n    Category: conditional\n    Kind: string\n    Description: Texto do badge condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.badge.textField\n    Category: conditional\n    Kind: string\n    Description: Campo de texto do badge condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.badge.color\n    Category: conditional\n    Kind: string\n    Description: Cor do badge condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.badge.variant\n    Category: conditional\n    Kind: enum\n    Description: Variante do badge condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.badge.icon\n    Category: conditional\n    Kind: string\n    Description: Ícone do badge condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.badge.tooltip\n    Category: conditional\n    Kind: object\n    Description: Tooltip acoplado ao badge condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.chip\n    Category: conditional\n    Kind: object\n    Description: Configuração de chip condicional.",
          "sourcePointer": "projects/praxis-table/src/lib/ai/table-component-ai-capabilities.ts",
          "contentHash": "d33c072dacf4a6c5d38175be0a3a2ff661d5ce052e6ee467ab916590b049cf25",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 5,
          "chunkKind": "capabilities",
          "content": "Schema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.chip.text\n    Category: conditional\n    Kind: string\n    Description: Texto do chip condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.chip.textField\n    Category: conditional\n    Kind: string\n    Description: Campo de texto do chip condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.chip.color\n    Category: conditional\n    Kind: string\n    Description: Cor do chip condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.chip.variant\n    Category: conditional\n    Kind: enum\n    Description: Variante do chip condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.chip.icon\n    Category: conditional\n    Kind: string\n    Description: Ícone do chip condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.chip.tooltip\n    Category: conditional\n    Kind: object\n    Description: Tooltip acoplado ao chip condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.progress\n    Category: conditional\n    Kind: object\n    Description: Configuração de progress condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.progress.valueExpr\n    Category: conditional\n    Kind: expression\n    Description: Expressao computada do dominio da tabela para obter o valor condicional; nao e Json Logic.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.progress.color\n    Category: conditional\n    Kind: string\n    Description: Cor da barra condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.progress.showLabel\n    Category: conditional\n    Kind: boolean\n    Description: Mostrar label condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.avatar\n    Category: conditional\n    Kind: object\n    Description: Configuração de avatar condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.avatar.src\n    Category: conditional\n    Kind: string\n    Description: Src do avatar.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.avatar.srcField\n    Category: conditional\n    Kind: string\n    Description: Campo src do avatar.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.avatar.alt\n    Category: conditional\n    Kind: string\n    Description: Alt do avatar.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.avatar.altField\n    Category: conditional\n    Kind: string\n    Description: Campo alt do avatar.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.avatar.initialsField\n    Category: conditional\n    Kind: string\n    Description: Campo textual para derivar iniciais do avatar.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.avatar.initialsExpr\n    Category: conditional\n    Kind: expression\n    Description: Expressao computada do dominio da tabela para retornar as iniciais do avatar; nao e Json Logic.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.avatar.shape\n    Category: conditional\n    Kind: string\n    Description: Shape do avatar.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.avatar.size\n    Category: conditional\n    Kind: number\n    Description: Tamanho em px.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.avatar.backgroundColor\n    Category: conditional\n    Kind: string\n    Description: Cor de fundo do círculo do avatar quando a condição for verdadeira.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.avatar.textColor\n    Category: conditional\n    Kind: string\n    Description: Cor das iniciais do avatar quando a condição for verdadeira.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.toggle\n    Category: conditional\n    Kind: object\n    Description: Configuração de toggle condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.toggle.stateExpr\n    Category: conditional\n    Kind: expression\n    Description: Expressao computada do dominio da tabela para definir o estado checked condicional; nao e Json Logic.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.toggle.disabledCondition\n    Category: conditional\n    Kind: expression\n    Description: Condicao canonica em Json Logic para desabilitacao condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.toggle.ariaLabel\n    Category: conditional\n    Kind: string\n    Description: Label acessível.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.toggle.action\n    Category: conditional\n    Kind: object\n    Description: Ação do toggle condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.toggle.action.id\n    Category: conditional\n    Kind: string\n    Description: ID da ação condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.toggle.action.payloadExpr\n    Category: conditional\n    Kind: expression\n    Description: Expressao computada do dominio da tabela para montar o payload da acao condicional; nao e Json Logic.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.rating\n    Category: conditional\n    Kind: object\n    Description: Configuração de rating condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.rating.valueExpr\n    Category: conditional\n    Kind: expression\n    Description: Expressao computada do dominio da tabela para obter o valor do rating condicional; nao e Json Logic.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.rating.max\n    Category: conditional\n    Kind: number\n    Description: Max estrelas.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.rating.color\n    Category: conditional\n    Kind: string\n    Description: Cor das estrelas.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.rating.outlineColor\n    Category: conditional\n    Kind: string\n    Description: Cor da borda.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.rating.size\n    Category: conditional\n    Kind: enum\n    Description: Tamanho.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.rating.ariaLabel\n    Category: conditional\n    Kind: string\n    Description: Label acessível.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.compose\n    Category: conditional\n    Kind: object\n    Description: Compose condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.compose.items\n    Category: conditional\n    Kind: array\n    Description: Itens do compose condicional.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.compose.items[].type\n    Category: conditional\n    Kind: enum\n    Description: Tipo do item de compose.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.compose.items[]\n    Category: conditional\n    Kind: object\n    Description: Item de compose condicional (ex.: { type: \"badge\", badge: {...} }, { type: \"icon\", icon: {...} }).\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.compose.layout.gap\n    Category: conditional\n    Kind: number\n    Description: Gap (px).\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.compose.layout.direction\n    Category: conditional\n    Kind: enum\n    Description: Direção.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.compose.layout.align\n    Category: conditional\n    Kind: enum\n    Description: Alinhamento.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.compose.layout.wrap\n    Category: conditional\n    Kind: boolean\n    Description: Permite quebra de linha.",
          "sourcePointer": "projects/praxis-table/src/lib/ai/table-component-ai-capabilities.ts",
          "contentHash": "87c84a0d1a732a5d96e6dacf1f12ef2f91218fe452af83f88e9c9940676f8fc2",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 6,
          "chunkKind": "capabilities",
          "content": "Schema Capability:\n  - Path: columns[].conditionalRenderers[].renderer.compose.layout.ellipsis\n    Category: conditional\n    Kind: boolean\n    Description: Aplica ellipsis quando overflow.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].animation\n    Category: conditional\n    Kind: object\n    Description: Animacao aplicada ao conteudo da célula quando a condição for verdadeira. Use para animar uma parte/coluna especifica da tabela.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].animation.preset\n    Category: conditional\n    Kind: enum\n    Description: Preset semântico recomendado para animação condicional de célula.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].animation.type\n    Category: conditional\n    Kind: enum\n    Description: Tipo bruto de animação quando preset não for suficiente.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].animation.trigger\n    Category: conditional\n    Kind: enum\n    Description: Gatilho da animação. onConditionEnter/onConditionExit/onDataRefresh são normalizados como onChange no runtime.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].animation.repeat\n    Category: conditional\n    Kind: string\n    Description: once, loop, infinite ou número de repetições.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].animation.intensity\n    Category: conditional\n    Kind: enum\n    Description: Intensidade visual da animação.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].animation.durationMs\n    Category: conditional\n    Kind: number\n    Description: Duração da animação em milissegundos.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].animation.delayMs\n    Category: conditional\n    Kind: number\n    Description: Atraso da animação em milissegundos.\n\nSchema Capability:\n  - Path: columns[].conditionalRenderers[].description\n    Category: conditional\n    Kind: string\n    Description: Descrição humana da regra.\n\nSchema Capability:\n  - Path: columns[].conditionalStyles[].condition\n    Category: conditional\n    Kind: expression\n    Description: Expressao condicional canonica em JSON Logic. Ex.: {\"===\":[{\"var\":\"status\"},\"Active\"]}. Nao use JS puro nem \"row.\".\n\nSchema Capability:\n  - Path: columns[].conditionalStyles[].cssClass\n    Category: conditional\n    Kind: string\n    Description: Classe CSS a aplicar.\n\nSchema Capability:\n  - Path: columns[].conditionalStyles[].style\n    Category: conditional\n    Kind: object\n    Description: Estilos inline seguros. Fundo sólido sem color usa foreground automático acessível no runtime; foreground explícito continua sujeito ao contraste AA.\n\nSchema Capability:\n  - Path: columns[].conditionalStyles[].tooltip\n    Category: conditional\n    Kind: object\n    Description: Tooltip aplicado na célula quando a condição for verdadeira.\n\nSchema Capability:\n  - Path: columns[].conditionalStyles[].effects\n    Category: conditional\n    Kind: array\n    Description: Efeitos visuais canonicos da regra, alinhados ao RuleEffectDefinition do Table Rule Builder.\n\nSchema Capability:\n  - Path: columns[].conditionalStyles[].description\n    Category: conditional\n    Kind: string\n    Description: Descrição da regra de estilo.\n\nSchema Capability:\n  - Path: rowConditionalStyles[].condition\n    Category: conditional\n    Kind: expression\n    Description: Expressao condicional canonica em JSON Logic. Ex.: {\"===\":[{\"var\":\"status\"},\"Active\"]}. Nao use JS puro nem \"row.\".\n\nSchema Capability:\n  - Path: rowConditionalStyles[].cssClass\n    Category: conditional\n    Kind: string\n    Description: Classe CSS para a linha.\n\nSchema Capability:\n  - Path: rowConditionalStyles[].style\n    Category: conditional\n    Kind: object\n    Description: Estilos inline seguros aplicados na linha. Fundo sólido sem color materializa foreground automático sem persistir a cor derivada.\n\nSchema Capability:\n  - Path: rowConditionalStyles[].surfacePresetRef\n    Category: conditional\n    Kind: object\n    Description: Referencia semantica versionada para uma superficie CSP-safe; a classe CSS permanece privada do runtime.\n\nSchema Capability:\n  - Path: rowConditionalStyles[].effects\n    Category: conditional\n    Kind: array\n    Description: Efeitos visuais canonicos da regra de linha, alinhados ao RuleEffectDefinition do Table Rule Builder.\n\nSchema Capability:\n  - Path: rowConditionalStyles[].description\n    Category: conditional\n    Kind: string\n    Description: Descrição semântica da regra de estilo da linha; deve acompanhar refinamentos visuais para não contradizer o efeito materializado.\n\nSchema Capability:\n  - Path: rowConditionalRenderers[].condition\n    Category: conditional\n    Kind: expression\n    Description: Condicao canonica em JSON Logic para tooltip ou animacao de linha.\n\nSchema Capability:\n  - Path: rowConditionalRenderers[].tooltip\n    Category: conditional\n    Kind: object\n    Description: Tooltip aplicado na linha quando a condicao for verdadeira.\n\nSchema Capability:\n  - Path: rowConditionalRenderers[].animation\n    Category: conditional\n    Kind: object\n    Description: Animacao aplicada na linha quando a condicao for verdadeira.\n\nSchema Capability:\n  - Path: rowConditionalRenderers[].animation.preset\n    Category: conditional\n    Kind: enum\n    Description: Preset semântico recomendado para animação condicional de linha.\n\nSchema Capability:\n  - Path: rowConditionalRenderers[].animation.type\n    Category: conditional\n    Kind: enum\n    Description: Tipo bruto de animação quando preset não for suficiente.\n\nSchema Capability:\n  - Path: rowConditionalRenderers[].animation.trigger\n    Category: conditional\n    Kind: enum\n    Description: Gatilho da animação. onConditionEnter/onConditionExit/onDataRefresh são normalizados como onChange no runtime.\n\nSchema Capability:\n  - Path: rowConditionalRenderers[].animation.repeat\n    Category: conditional\n    Kind: string\n    Description: once, loop, infinite ou número de repetições.\n\nSchema Capability:\n  - Path: rowConditionalRenderers[].animation.intensity\n    Category: conditional\n    Kind: enum\n    Description: Intensidade visual da animação.\n\nSchema Capability:\n  - Path: rowConditionalRenderers[].animation.durationMs\n    Category: conditional\n    Kind: number\n    Description: Duração da animação em milissegundos.\n\nSchema Capability:\n  - Path: rowConditionalRenderers[].animation.delayMs\n    Category: conditional\n    Kind: number\n    Description: Atraso da animação em milissegundos.\n\nSchema Capability:\n  - Path: rowConditionalRenderers[].effects\n    Category: conditional\n    Kind: array\n    Description: Efeitos visuais canonicos capazes de produzir tooltip ou animacao de linha.\n\nSchema Capability:\n  - Path: behavior.pagination\n    Category: pagination\n    Kind: object\n    Description: Configuração global de paginação da tabela.\n\nSchema Capability:\n  - Path: behavior.pagination.enabled\n    Category: pagination\n    Kind: boolean\n    Description: Habilita paginação. Crítico para performance.\n\nSchema Capability:\n  - Path: behavior.pagination.strategy\n    Category: pagination\n    Kind: enum\n    Description: Define se a paginação é feita no cliente ou servidor.\n\nSchema Capability:\n  - Path: behavior.pagination.pageSize\n    Category: pagination\n    Kind: number\n    Description: Número de itens por página inicial.\n\nSchema Capability:\n  - Path: behavior.pagination.pageSizeOptions\n    Category: pagination\n    Kind: array\n    Description: Lista de tamanhos permitidos no selector.\n\nSchema Capability:\n  - Path: behavior.pagination.position\n    Category: pagination\n    Kind: enum\n    Description: Posiciona os controles de paginação.\n\nSchema Capability:\n  - Path: behavior.pagination.style\n    Category: pagination\n    Kind: enum\n    Description: Variações visuais: default/simple/compact/advanced.",
          "sourcePointer": "projects/praxis-table/src/lib/ai/table-component-ai-capabilities.ts",
          "contentHash": "f0cdd4ae02744e39254bf14b1228860fbb9f2b491938ad3eb8cc4aa33b9d691d",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 7,
          "chunkKind": "capabilities",
          "content": "Schema Capability:\n  - Path: behavior.pagination.advanced.maxPageSize\n    Category: pagination\n    Kind: number\n    Description: Limite máximo permitido para pageSize customizado.\n\nSchema Capability:\n  - Path: behavior.sorting\n    Category: sorting\n    Kind: object\n    Description: Configuração global de ordenação da tabela.\n\nSchema Capability:\n  - Path: behavior.sorting.enabled\n    Category: sorting\n    Kind: boolean\n    Description: Habilita ordenação global na tabela.\n\nSchema Capability:\n  - Path: behavior.sorting.strategy\n    Category: sorting\n    Kind: enum\n    Description: Define se a ordenação ocorre no cliente ou servidor.\n\nSchema Capability:\n  - Path: behavior.sorting.defaultSort\n    Category: sorting\n    Kind: object\n    Description: Ordenação inicial. Aceita objeto único ou array para multisort.\n\nSchema Capability:\n  - Path: behavior.sorting.allowClearSort\n    Category: sorting\n    Kind: boolean\n    Description: Permite limpar a ordenação com terceiro clique.\n\nSchema Capability:\n  - Path: behavior.filtering\n    Category: filtering\n    Kind: object\n    Description: Configuração global de filtragem da tabela.\n\nSchema Capability:\n  - Path: behavior.filtering.enabled\n    Category: filtering\n    Kind: boolean\n    Description: Habilita sistema de filtragem.\n\nSchema Capability:\n  - Path: behavior.filtering.strategy\n    Category: filtering\n    Kind: enum\n    Description: Filtragem no cliente ou servidor.\n\nSchema Capability:\n  - Path: behavior.filtering.columnFilters.enabled\n    Category: filtering\n    Kind: boolean\n    Description: Exibe filtros por coluna.\n\nSchema Capability:\n  - Path: behavior.filtering.columnFilters.defaultType\n    Category: filtering\n    Kind: enum\n    Description: Tipo padrão do filtro individual.\n\nSchema Capability:\n  - Path: behavior.filtering.columnFilters.position\n    Category: filtering\n    Kind: enum\n    Description: Posiciona os filtros (header/subheader/sidebar).\n\nSchema Capability:\n  - Path: behavior.filtering.advancedFilters\n    Category: filtering\n    Kind: object\n    Description: Configuração canônica dos filtros avançados acoplados à tabela.\n\nSchema Capability:\n  - Path: behavior.filtering.advancedFilters.enabled\n    Category: filtering\n    Kind: boolean\n    Description: Habilita filtros avançados/painel.\n\nSchema Capability:\n  - Path: behavior.filtering.advancedFilters.settings.mode\n    Category: filtering\n    Kind: enum\n    Description: Modo único do componente de filtro (filter).\n\nSchema Capability:\n  - Path: behavior.filtering.advancedFilters.settings.showAdvanced\n    Category: filtering\n    Kind: boolean\n    Description: Mantém o painel avançado disponível para filtros adicionais.\n\nSchema Capability:\n  - Path: behavior.filtering.advancedFilters.settings.tags\n    Category: filtering\n    Kind: array\n    Description: Atalhos de filtro governados e somente leitura, com id, rótulo e patch compatível com o DTO canônico.\n\nSchema Capability:\n  - Path: behavior.filtering.advancedFilters.settings.alwaysVisibleFields\n    Category: filtering\n    Kind: array\n    Description: Campos do DTO de filtro que ficam fixos inline na barra.\n\nSchema Capability:\n  - Path: behavior.filtering.advancedFilters.settings.selectedFieldIds\n    Category: filtering\n    Kind: array\n    Description: Campos do DTO de filtro disponíveis no painel avançado.\n\nSchema Capability:\n  - Path: behavior.filtering.advancedFilters.settings.alwaysVisibleFieldMetadataOverrides\n    Category: filtering\n    Kind: object\n    Description: Overrides governados de metadata para campos fixos inline.\n\nSchema Capability:\n  - Path: behavior.filtering.advancedFilters.settings.changeDebounceMs\n    Category: filtering\n    Kind: number\n    Description: Debounce local dos controles do filtro avançado.\n\nSchema Capability:\n  - Path: behavior.filtering.advancedFilters.settings.useInlineSearchableSelectVariant\n    Category: filtering\n    Kind: boolean\n    Description: Usa variante inline pesquisável para selects na barra.\n\nSchema Capability:\n  - Path: behavior.filtering.advancedFilters.settings.useInlineRangeVariant\n    Category: filtering\n    Kind: boolean\n    Description: Usa variante inline para ranges numéricos.\n\nSchema Capability:\n  - Path: behavior.filtering.advancedFilters.settings.useInlineDateVariant\n    Category: filtering\n    Kind: boolean\n    Description: Usa variante inline para datas simples.\n\nSchema Capability:\n  - Path: behavior.filtering.advancedFilters.settings.useInlineDateRangeVariant\n    Category: filtering\n    Kind: boolean\n    Description: Usa variante inline para intervalos de datas.\n\nSchema Capability:\n  - Path: behavior.filtering.debounceTime\n    Category: filtering\n    Kind: number\n    Description: Debounce (ms) para filtros reativos.\n\nSchema Capability:\n  - Path: behavior.selection\n    Category: selection\n    Kind: object\n    Description: Configuração global de seleção de linhas.\n\nSchema Capability:\n  - Path: behavior.selection.enabled\n    Category: selection\n    Kind: boolean\n    Description: Habilita seleção de linhas.\n\nSchema Capability:\n  - Path: behavior.selection.type\n    Category: selection\n    Kind: enum\n    Description: Seleção única ou múltipla.\n\nSchema Capability:\n  - Path: behavior.selection.mode\n    Category: selection\n    Kind: enum\n    Description: Modo de interação (checkbox/row/both).\n\nSchema Capability:\n  - Path: behavior.selection.allowSelectAll\n    Category: selection\n    Kind: boolean\n    Description: Permite selecionar todas as linhas.\n\nSchema Capability:\n  - Path: behavior.selection.persistSelection\n    Category: selection\n    Kind: boolean\n    Description: Mantém seleção entre páginas.\n\nSchema Capability:\n  - Path: behavior.selection.maxSelections\n    Category: selection\n    Kind: number\n    Description: Limite máximo de itens selecionáveis.\n\nSchema Capability:\n  - Path: behavior.interaction.rowClick.action\n    Category: interaction\n    Kind: enum\n    Description: Ação padrão ao clicar na linha.\n\nSchema Capability:\n  - Path: behavior.interaction.rowClick.enabled\n    Category: interaction\n    Kind: boolean\n    Description: Ativa ou desativa ação de click na linha.\n\nSchema Capability:\n  - Path: behavior.interaction.keyboard.enabled\n    Category: interaction\n    Kind: boolean\n    Description: Habilita navegação por teclado.\n\nSchema Capability:\n  - Path: behavior.interaction.hover.enabled\n    Category: interaction\n    Kind: boolean\n    Description: Habilita comportamento de hover (highlight/ações).\n\nSchema Capability:\n  - Path: behavior.interaction.hover.highlightRow\n    Category: interaction\n    Kind: boolean\n    Description: Destaca linha no hover.\n\nSchema Capability:\n  - Path: behavior.loading.type\n    Category: behavior\n    Kind: enum\n    Description: Tipo de indicador de loading (spinner, skeleton etc.).\n\nSchema Capability:\n  - Path: behavior.loading.position\n    Category: behavior\n    Kind: enum\n    Description: Onde exibir o loading (overlay/inline/replace).\n\nSchema Capability:\n  - Path: behavior.loading.text\n    Category: behavior\n    Kind: string\n    Description: Mensagem exibida durante carregamento.\n\nSchema Capability:\n  - Path: behavior.loading.delay\n    Category: behavior\n    Kind: number\n    Description: Delay (ms) antes de mostrar loading.\n\nSchema Capability:\n  - Path: behavior.loading.showForQuickOperations\n    Category: behavior\n    Kind: boolean\n    Description: Ignora o delay visual e mostra o indicador imediatamente para operacoes rapidas.\n\nSchema Capability:\n  - Path: behavior.loading.requestTimeoutMs\n    Category: behavior\n    Kind: number\n    Description: Tempo limite (ms) para requests remotos de schema e dados; zero delega a politica ao host.\n\nSchema Capability:\n  - Path: behavior.loading.allowCancel\n    Category: behavior\n    Kind: boolean\n    Description: Permite cancelamento explicito do request remoto em andamento.",
          "sourcePointer": "projects/praxis-table/src/lib/ai/table-component-ai-capabilities.ts",
          "contentHash": "7b21b207643a9de6d70c96d1937e70bf69a2528eb059770ee8fa16be683e1309",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 8,
          "chunkKind": "capabilities",
          "content": "Schema Capability:\n  - Path: behavior.loading.skeleton.rows\n    Category: behavior\n    Kind: number\n    Description: Quantidade de linhas do skeleton, limitada pelo runtime.\n\nSchema Capability:\n  - Path: behavior.loading.skeleton.animated\n    Category: behavior\n    Kind: boolean\n    Description: Ativa a animacao do skeleton.\n\nSchema Capability:\n  - Path: behavior.emptyState.message\n    Category: behavior\n    Kind: string\n    Description: Mensagem de estado vazio padrão.\n\nSchema Capability:\n  - Path: behavior.emptyState.actions\n    Category: behavior\n    Kind: array\n    Description: Ações contextuais explícitas do estado vazio.\n\nSchema Capability:\n  - Path: behavior.resizing.enabled\n    Category: behavior\n    Kind: boolean\n    Description: Habilita redimensionamento de colunas.\n\nSchema Capability:\n  - Path: behavior.resizing.minColumnWidth\n    Category: behavior\n    Kind: number\n    Description: Largura mínima das colunas (px).\n\nSchema Capability:\n  - Path: behavior.resizing.maxColumnWidth\n    Category: behavior\n    Kind: number\n    Description: Largura máxima das colunas (px).\n\nSchema Capability:\n  - Path: behavior.resizing.autoFit\n    Category: behavior\n    Kind: boolean\n    Description: Permite autoajustar uma coluna ao conteúdo renderizado com duplo clique no separador.\n\nSchema Capability:\n  - Path: behavior.resizing.persistWidths\n    Category: behavior\n    Kind: boolean\n    Description: Persiste larguras ajustadas pelo usuário entre sessões.\n\nSchema Capability:\n  - Path: behavior.dragging.columns\n    Category: behavior\n    Kind: boolean\n    Description: Permite reordenar colunas por drag & drop.\n\nSchema Capability:\n  - Path: behavior.grouping.enabled\n    Category: behavior\n    Kind: boolean\n    Description: Habilita agrupamento de linhas.\n\nSchema Capability:\n  - Path: behavior.grouping.fields\n    Category: behavior\n    Kind: array\n    Description: Lista de campos (field) usados para agrupar.\n\nSchema Capability:\n  - Path: behavior.grouping.expanded\n    Category: behavior\n    Kind: boolean\n    Description: Se true, grupos iniciam expandidos.\n\nSchema Capability:\n  - Path: behavior.editing.mode\n    Category: interaction\n    Kind: enum\n    Description: Modo de edição inline.\n\nSchema Capability:\n  - Path: behavior.virtualization.enabled\n    Category: performance\n    Kind: boolean\n    Description: Virtualiza linhas para grandes volumes.\n\nSchema Capability:\n  - Path: behavior.virtualization.itemHeight\n    Category: performance\n    Kind: number\n    Description: Altura de cada linha (px) para virtualização.\n\nSchema Capability:\n  - Path: behavior.expansion.enabled\n    Category: interaction\n    Kind: boolean\n    Description: Habilita detalhe expansível por linha.\n\nSchema Capability:\n  - Path: behavior.expansion.contractVersion\n    Category: interaction\n    Kind: string\n    Description: Versão local do contrato de expansão.\n\nSchema Capability:\n  - Path: behavior.expansion.state.mode\n    Category: interaction\n    Kind: enum\n    Description: Governança de estado de expansão (controlled/uncontrolled).\n\nSchema Capability:\n  - Path: behavior.expansion.interaction.trigger\n    Category: interaction\n    Kind: enum\n    Description: Define como o toggle de expansão é acionado.\n\nSchema Capability:\n  - Path: behavior.expansion.interaction.toggleIcon.collapsed\n    Category: interaction\n    Kind: string\n    Description: Ícone usado no estado recolhido do toggle de expansão via pipeline `[praxisIcon]` do host.\n\nSchema Capability:\n  - Path: behavior.expansion.interaction.toggleIcon.expanded\n    Category: interaction\n    Kind: string\n    Description: Ícone usado no estado expandido do toggle de expansão via pipeline `[praxisIcon]` do host.\n\nSchema Capability:\n  - Path: behavior.expansion.interaction.toggleIcon.ariaLabelCollapsed\n    Category: interaction\n    Kind: string\n    Description: Aria-label do botão de expansão quando a linha está recolhida.\n\nSchema Capability:\n  - Path: behavior.expansion.interaction.toggleIcon.ariaLabelExpanded\n    Category: interaction\n    Kind: string\n    Description: Aria-label do botão de expansão quando a linha está expandida.\n\nSchema Capability:\n  - Path: behavior.expansion.interaction.motion.preset\n    Category: interaction\n    Kind: enum\n    Description: Preset controlado de motion para abrir o detail row.\n\nSchema Capability:\n  - Path: behavior.expansion.interaction.motion.durationMs\n    Category: performance\n    Kind: number\n    Description: Duração do preset de motion em milissegundos.\n\nSchema Capability:\n  - Path: behavior.expansion.interaction.motion.easing\n    Category: interaction\n    Kind: enum\n    Description: Curva de easing do preset de motion.\n\nSchema Capability:\n  - Path: behavior.expansion.interaction.keyboard.profile\n    Category: interaction\n    Kind: enum\n    Description: Perfil de teclado para expansão (disclosure/grid).\n\nSchema Capability:\n  - Path: behavior.expansion.limits.allowMultiple\n    Category: interaction\n    Kind: boolean\n    Description: Permite múltiplas linhas expandidas simultaneamente.\n\nSchema Capability:\n  - Path: behavior.expansion.limits.maxExpandedRows\n    Category: interaction\n    Kind: number\n    Description: Máximo de linhas expandidas simultaneamente.\n\nSchema Capability:\n  - Path: behavior.expansion.limits.onOverflow\n    Category: interaction\n    Kind: enum\n    Description: Política quando ultrapassar o limite de linhas expandidas.\n\nSchema Capability:\n  - Path: behavior.expansion.collapseOn.sortChange\n    Category: interaction\n    Kind: boolean\n    Description: Colapsa linhas expandidas quando sort muda.\n\nSchema Capability:\n  - Path: behavior.expansion.collapseOn.pageChange\n    Category: interaction\n    Kind: boolean\n    Description: Colapsa linhas expandidas quando paginação muda.\n\nSchema Capability:\n  - Path: behavior.expansion.collapseOn.filterChange\n    Category: interaction\n    Kind: boolean\n    Description: Colapsa linhas expandidas quando filtros mudam.\n\nSchema Capability:\n  - Path: behavior.expansion.collapseOn.dataRefresh\n    Category: interaction\n    Kind: boolean\n    Description: Colapsa linhas expandidas em refresh de dados.\n\nSchema Capability:\n  - Path: behavior.expansion.detail.schemaContract.kind\n    Category: interaction\n    Kind: string\n    Description: Namespace do schema de detail row.\n\nSchema Capability:\n  - Path: behavior.expansion.detail.schemaContract.version\n    Category: interaction\n    Kind: string\n    Description: Versão do contrato de schema detail.\n\nSchema Capability:\n  - Path: behavior.expansion.detail.source.mode\n    Category: interaction\n    Kind: enum\n    Description: Fonte do schema de detail (inline/resource/resourcePath/hypermedia).\n\nSchema Capability:\n  - Path: behavior.expansion.detail.source.inlineSchema\n    Category: interaction\n    Kind: object\n    Description: Schema inline completo para detail row quando source.mode=inline.\n\nSchema Capability:\n  - Path: behavior.expansion.detail.source.resource.kind\n    Category: interaction\n    Kind: enum\n    Description: Tipo de recurso quando source.mode=resource.\n\nSchema Capability:\n  - Path: behavior.expansion.detail.source.resource.id\n    Category: interaction\n    Kind: string\n    Description: ID do resource de detail schema.\n\nSchema Capability:\n  - Path: behavior.expansion.detail.source.resource.version\n    Category: interaction\n    Kind: string\n    Description: Versão do resource de detail schema.\n\nSchema Capability:\n  - Path: behavior.expansion.detail.source.resourcePath.path\n    Category: interaction\n    Kind: string\n    Description: Endpoint para resolver schema/detail data quando source.mode=resourcePath.\n\nSchema Capability:\n  - Path: behavior.expansion.detail.source.resourcePath.method\n    Category: interaction\n    Kind: enum\n    Description: Método HTTP para resolver o detail schema/data.",
          "sourcePointer": "projects/praxis-table/src/lib/ai/table-component-ai-capabilities.ts",
          "contentHash": "842d6e7b4f5ebf12ca09745534b8c9bf2ee9ffb27fe8816c32194d40e98dadcb",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 9,
          "chunkKind": "capabilities",
          "content": "Schema Capability:\n  - Path: behavior.expansion.detail.source.resourcePath.paramsMap\n    Category: interaction\n    Kind: object\n    Description: Mapeia placeholders do resourcePath para expressões de contexto por linha (ex.: { id: \"$row.id\" }).\n\nSchema Capability:\n  - Path: behavior.expansion.detail.source.resourceAllowList[]\n    Category: interaction\n    Kind: array\n    Description: Allowlist obrigatória de rotas para source.mode=resourcePath.\n\nSchema Capability:\n  - Path: behavior.expansion.detail.source.hypermedia\n    Category: interaction\n    Kind: object\n    Description: Configuração opcional do modo hypermedia; usa _links.capabilities como ponto único de descoberta canônica.\n\nSchema Capability:\n  - Path: behavior.expansion.detail.rendering.strategy\n    Category: interaction\n    Kind: enum\n    Description: Estratégia de render do schema de detail.\n\nSchema Capability:\n  - Path: behavior.expansion.detail.rendering.registryId\n    Category: interaction\n    Kind: string\n    Description: ID do registry de renderers para detail row.\n\nSchema Capability:\n  - Path: behavior.expansion.detail.rendering.hostLayout\n    Category: interaction\n    Kind: enum\n    Description: Layout hospedeiro preferencial do detail.\n\nSchema Capability:\n  - Path: behavior.expansion.detail.rendering.fallbackNodePolicy\n    Category: interaction\n    Kind: enum\n    Description: Política para nós sem renderer registrado.\n\nSchema Capability:\n  - Path: behavior.expansion.detail.height.mode\n    Category: performance\n    Kind: enum\n    Description: Modo de altura do detail row.\n\nSchema Capability:\n  - Path: behavior.expansion.detail.height.px\n    Category: performance\n    Kind: number\n    Description: Altura fixa (px) quando height.mode=fixed.\n\nSchema Capability:\n  - Path: behavior.expansion.virtualization.policy\n    Category: performance\n    Kind: enum\n    Description: Política de compatibilidade com virtualização.\n\nSchema Capability:\n  - Path: behavior.expansion.persistence.enabled\n    Category: interaction\n    Kind: boolean\n    Description: Persiste linhas expandidas por escopo.\n\nSchema Capability:\n  - Path: behavior.expansion.persistence.storageKeyStrategy.namespace\n    Category: interaction\n    Kind: string\n    Description: Namespace de persistência para evitar colisão entre apps/tenants.\n\nSchema Capability:\n  - Path: behavior.expansion.security.eventExposureDefault.rowId\n    Category: interaction\n    Kind: enum\n    Description: Nível de exposição de rowId em eventos/logs.\n\nSchema Capability:\n  - Path: behavior.expansion.security.eventExposureDefault.expandedKeys\n    Category: interaction\n    Kind: enum\n    Description: Exposição de expandedRowKeys em eventos/logs.\n\nSchema Capability:\n  - Path: behavior.expansion.deepLink.enabled\n    Category: interaction\n    Kind: boolean\n    Description: Habilita estado de expansão na URL (P1+).\n\nSchema Capability:\n  - Path: behavior.expansion.deepLink.encoding\n    Category: interaction\n    Kind: enum\n    Description: Codificação do payload de deep-link.\n\nSchema Capability:\n  - Path: behavior.expansion.deepLink.parsing.duplicateParams\n    Category: interaction\n    Kind: enum\n    Description: Política de parâmetros duplicados no parse da URL.\n\nSchema Capability:\n  - Path: behavior.expansion.deepLink.integrity.mode\n    Category: interaction\n    Kind: enum\n    Description: Estratégia de integridade para deep-link.\n\nSchema Capability:\n  - Path: behavior.expansion.deepLink.privacy.mode\n    Category: interaction\n    Kind: enum\n    Description: Política de privacidade para deep-link.\n\nSchema Capability:\n  - Path: appearance.density\n    Category: appearance\n    Kind: enum\n    Description: Densidade vertical da tabela.\n\nSchema Capability:\n  - Path: appearance.borders.showRowBorders\n    Category: appearance\n    Kind: boolean\n    Description: Exibe bordas horizontais entre linhas.\n\nSchema Capability:\n  - Path: appearance.borders.showColumnBorders\n    Category: appearance\n    Kind: boolean\n    Description: Exibe bordas verticais entre colunas.\n\nSchema Capability:\n  - Path: appearance.borders.showOuterBorder\n    Category: appearance\n    Kind: boolean\n    Description: Mostra borda externa da tabela.\n\nSchema Capability:\n  - Path: appearance.borders.style\n    Category: appearance\n    Kind: enum\n    Description: Estilo da borda (solid/dashed/dotted).\n\nSchema Capability:\n  - Path: appearance.colors.alternateRowBackground\n    Category: appearance\n    Kind: string\n    Description: Cor de fundo para linhas pares (zebra).\n\nSchema Capability:\n  - Path: appearance.colors.hoverBackground\n    Category: appearance\n    Kind: string\n    Description: Cor de fundo ao passar o mouse.\n\nSchema Capability:\n  - Path: appearance.typography.fontSize\n    Category: appearance\n    Kind: string\n    Description: Tamanho da fonte das células.\n\nSchema Capability:\n  - Path: appearance.typography.headerFontWeight\n    Category: appearance\n    Kind: string\n    Description: Peso da fonte do cabeçalho.\n\nSchema Capability:\n  - Path: appearance.spacing.cellPadding\n    Category: appearance\n    Kind: string\n    Description: Padding das células.\n\nSchema Capability:\n  - Path: appearance.responsive.mobile.horizontalScroll\n    Category: appearance\n    Kind: boolean\n    Description: Preferência de scroll horizontal responsivo (sem breakpoints.mobile declarado, aplica global por compatibilidade; com breakpoints.mobile, aplica apenas no viewport mobile).\n\nSchema Capability:\n  - Path: appearance.responsive.breakpoints.mobile\n    Category: appearance\n    Kind: number\n    Description: Breakpoint mobile (px) usado para aplicar responsive.mobile.horizontalScroll.\n\nSchema Capability:\n  - Path: appearance.responsive.mobile.cardMode\n    Category: appearance\n    Kind: boolean\n    Description: Materializa linhas não virtualizadas como cards rotulados no breakpoint mobile.\n\nSchema Capability:\n  - Path: appearance.responsive.mobile.priorityColumns\n    Category: appearance\n    Kind: array\n    Description: Ordena os campos prioritários no início do card responsivo sem ocultar os demais dados.\n\nSchema Capability:\n  - Path: appearance.animations.enabled\n    Category: appearance\n    Kind: boolean\n    Description: Habilita animações de hover/seleção/superfície da tabela.\n\nSchema Capability:\n  - Path: appearance.elevation.level\n    Category: appearance\n    Kind: number\n    Description: Nível de sombra/elevação da superfície da tabela.\n\nSchema Capability:\n  - Path: toolbar\n    Category: toolbar\n    Kind: object\n    Description: Configuração global da barra de ferramentas.\n\nSchema Capability:\n  - Path: toolbar.visible\n    Category: toolbar\n    Kind: boolean\n    Description: Exibe a barra de ferramentas acima da tabela.\n\nSchema Capability:\n  - Path: toolbar.position\n    Category: toolbar\n    Kind: enum\n    Description: Posiciona a toolbar.\n\nSchema Capability:\n  - Path: toolbar.actionsPosition\n    Category: toolbar\n    Kind: enum\n    Description: Posiciona a barra de ações (top/bottom/both).\n\nSchema Capability:\n  - Path: toolbar.actionsBackgroundColor\n    Category: toolbar\n    Kind: string\n    Description: Cor de fundo da barra de ações (token/hex).\n\nSchema Capability:\n  - Path: toolbar.appearance.preset\n    Category: toolbar\n    Kind: string\n    Description: Preset visual publico registrado para a toolbar. Use \"table-integrated\" para compor toolbar e tabela como um unico bloco operacional, sem CSS de host mirando classes internas.\n\nSchema Capability:\n  - Path: toolbar.appearance.variant\n    Category: toolbar\n    Kind: enum\n    Description: Variante visual canônica da toolbar.\n\nSchema Capability:\n  - Path: toolbar.appearance.density\n    Category: toolbar\n    Kind: enum\n    Description: Densidade visual da toolbar e de seus botões.\n\nSchema Capability:\n  - Path: toolbar.appearance.shape\n    Category: toolbar\n    Kind: enum\n    Description: Forma canônica do container e dos botões da toolbar.",
          "sourcePointer": "projects/praxis-table/src/lib/ai/table-component-ai-capabilities.ts",
          "contentHash": "e60d44433f4d9fe747baac97f28d3ee705c79c7b47b530efd7c18910bec420cc",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 10,
          "chunkKind": "capabilities",
          "content": "Schema Capability:\n  - Path: toolbar.appearance.divider\n    Category: toolbar\n    Kind: enum\n    Description: Política de divisores entre regiões semânticas da toolbar.\n\nSchema Capability:\n  - Path: toolbar.appearance.tokens\n    Category: toolbar\n    Kind: object\n    Description: Tokens CSS públicos da toolbar materializados pelo runtime. Use para personalização visual do host sem redefinir a semântica das ações.\n\nSchema Capability:\n  - Path: toolbar.title\n    Category: toolbar\n    Kind: string\n    Description: Título principal na toolbar.\n\nSchema Capability:\n  - Path: toolbar.subtitle\n    Category: toolbar\n    Kind: string\n    Description: Subtítulo/descrição curta na toolbar.\n\nSchema Capability:\n  - Path: toolbar.icon\n    Category: toolbar\n    Kind: string\n    Description: Ícone semântico exibido ao lado do título da toolbar.\n\nSchema Capability:\n  - Path: toolbar.textAlign\n    Category: toolbar\n    Kind: enum\n    Description: Alinhamento textual do bloco de título/subtítulo da toolbar.\n\nSchema Capability:\n  - Path: toolbar.appearance.tokens.titleFg\n    Category: toolbar\n    Kind: string\n    Description: Token CSS para a cor do título da toolbar.\n\nSchema Capability:\n  - Path: toolbar.appearance.tokens.subtitleFg\n    Category: toolbar\n    Kind: string\n    Description: Token CSS para a cor do subtítulo da toolbar.\n\nSchema Capability:\n  - Path: toolbar.appearance.tokens.iconFg\n    Category: toolbar\n    Kind: string\n    Description: Token CSS para a cor do ícone da identidade da toolbar.\n\nSchema Capability:\n  - Path: toolbar.appearance.tokens.titleFontSize\n    Category: toolbar\n    Kind: string\n    Description: Token CSS para tamanho do título da toolbar.\n\nSchema Capability:\n  - Path: toolbar.appearance.tokens.subtitleFontSize\n    Category: toolbar\n    Kind: string\n    Description: Token CSS para tamanho do subtítulo da toolbar.\n\nSchema Capability:\n  - Path: toolbar.appearance.tokens.titleFontWeight\n    Category: toolbar\n    Kind: string\n    Description: Token CSS para peso tipográfico do título da toolbar.\n\nSchema Capability:\n  - Path: toolbar.appearance.tokens.identityGap\n    Category: toolbar\n    Kind: string\n    Description: Token CSS para o espaçamento entre ícone e copy da identidade da toolbar.\n\nSchema Capability:\n  - Path: toolbar.appearance.tokens.identityFilterGap\n    Category: toolbar\n    Kind: string\n    Description: Token CSS para o respiro vertical entre a identidade da toolbar e filtros/controles quando a identidade ocupa linha própria.\n\nSchema Capability:\n  - Path: toolbar.appearance.tokens.identityMinHeight\n    Category: toolbar\n    Kind: string\n    Description: Token CSS para a altura mínima do bloco de identidade da toolbar.\n\nSchema Capability:\n  - Path: toolbar.appearance.tokens.identityMarginBottom\n    Category: toolbar\n    Kind: string\n    Description: Token CSS para o espaçamento inferior complementar da identidade da toolbar.\n\nSchema Capability:\n  - Path: toolbar.appearance.tokens.identityIconSize\n    Category: toolbar\n    Kind: string\n    Description: Token CSS para o tamanho do container do ícone da identidade da toolbar.\n\nSchema Capability:\n  - Path: toolbar.appearance.tokens.identityIconRadius\n    Category: toolbar\n    Kind: string\n    Description: Token CSS para o raio do container do ícone da identidade da toolbar.\n\nSchema Capability:\n  - Path: toolbar.layout.alignment\n    Category: toolbar\n    Kind: enum\n    Description: Alinhamento do conteúdo da toolbar.\n\nSchema Capability:\n  - Path: toolbar.filters.enabled\n    Category: toolbar\n    Kind: boolean\n    Description: Exibe filtros rápidos na toolbar.\n\nSchema Capability:\n  - Path: toolbar.settingsMenu.enabled\n    Category: toolbar\n    Kind: boolean\n    Description: Mostra menu de configurações (densidade, colunas etc.).\n\nSchema Capability:\n  - Path: toolbar.actions[]\n    Category: toolbar\n    Kind: array\n    Description: Ações exibidas na barra de ferramentas da tabela.\n\nSchema Capability:\n  - Path: toolbar.actions[].visibleWhen\n    Category: toolbar\n    Kind: expression\n    Description: Condicao canonica em JSON Logic para exibir a acao da toolbar.\n\nSchema Capability:\n  - Path: actions.collection.discovery.enabled\n    Category: actions\n    Kind: boolean\n    Description: Controla a materialização de ações de coleção descobertas por HATEOAS/capabilities.\n\nSchema Capability:\n  - Path: actions.row.enabled\n    Category: actions\n    Kind: boolean\n    Description: Habilita coluna de ações por linha.\n\nSchema Capability:\n  - Path: actions.row.display\n    Category: actions\n    Kind: enum\n    Description: Modo de exibição das ações (menu/buttons/icons).\n\nSchema Capability:\n  - Path: actions.row.trigger\n    Category: actions\n    Kind: enum\n    Description: Como as ações aparecem (hover/always/click).\n\nSchema Capability:\n  - Path: actions.row.discovery.enabled\n    Category: actions\n    Kind: boolean\n    Description: Controla se a tabela enriquece ações por linha com discovery contextual de HATEOAS/capabilities.\n\nSchema Capability:\n  - Path: actions.row.actions[]\n    Category: actions\n    Kind: array\n    Description: Ações curadas exibidas em cada linha da tabela. Use para criar botões de linha com GlobalActionRef governada, como surface.open.\n\nSchema Capability:\n  - Path: actions.row.actions[].recordSurface\n    Category: actions\n    Kind: object\n    Description: ResourceSurfaceCatalogItem canonico preservado para uma acao de linha abrir a superficie relacionada ao registro clicado sem sobrescrever a identidade da surface.\n\nSchema Capability:\n  - Path: actions.row.actions[].globalAction.[actionId]\n    Category: actions\n    Kind: string\n    Description: Identificador canônico de global action para a ação por linha (ex.: \"navigation.openRoute\", \"surface.open\", \"toast.success\").\n\nSchema Capability:\n  - Path: actions.row.actions[].globalAction.payload\n    Category: actions\n    Kind: object\n    Description: Payload estruturado da global action por linha. Para `navigation.openRoute`, templates como `${row.id}` são resolvidos antes da navegação; para ações como `surface.open`, `payload.*` continua sendo o envelope canônico do evento consumido pelo destino.\n\nSchema Capability:\n  - Path: actions.row.actions[].visibleWhen\n    Category: actions\n    Kind: expression\n    Description: Condicao canonica em JSON Logic para exibir a acao por linha.\n\nSchema Capability:\n  - Path: actions.row.actions[].disabledWhen\n    Category: actions\n    Kind: expression\n    Description: Condicao canonica em JSON Logic para desabilitar a acao por linha.\n\nSchema Capability:\n  - Path: actions.row.actions[].effects\n    Category: actions\n    Kind: array\n    Description: Array canonico de efeitos runtime da acao por linha, alinhado com PraxisRuntimeGlobalActionEffect.\n\nSchema Capability:\n  - Path: actions.row.actions[].effects[].kind\n    Category: actions\n    Kind: enum\n    Description: Tipo de efeito runtime da acao por linha. Neste corte, apenas global-action e suportado.\n\nSchema Capability:\n  - Path: actions.row.actions[].effects[].globalAction.[actionId]\n    Category: actions\n    Kind: string\n    Description: Identificador canonico da GlobalActionRef dentro do efeito runtime por linha.\n\nSchema Capability:\n  - Path: actions.row.actions[].effects[].globalAction.payload\n    Category: actions\n    Kind: object\n    Description: Payload estruturado da GlobalActionRef dentro do efeito runtime por linha.\n\nSchema Capability:\n  - Path: actions.bulk.enabled\n    Category: actions\n    Kind: boolean\n    Description: Habilita ações em lote.\n\nSchema Capability:\n  - Path: actions.bulk.position\n    Category: actions\n    Kind: enum\n    Description: Posição das ações em lote.\n\nSchema Capability:\n  - Path: actions.bulk.actions[]\n    Category: actions\n    Kind: array\n    Description: Ações curadas para operar sobre a seleção atual da tabela. Use para criar botões em lote com GlobalActionRef governada.",
          "sourcePointer": "projects/praxis-table/src/lib/ai/table-component-ai-capabilities.ts",
          "contentHash": "610aaa3591db8b42f0ea0121ebb596cb0d9b522f8ca2b1616c9dd9cdd9762968",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 11,
          "chunkKind": "capabilities",
          "content": "Schema Capability:\n  - Path: actions.bulk.actions[].globalAction.[actionId]\n    Category: actions\n    Kind: string\n    Description: Identificador canônico de global action para a ação em lote.\n\nSchema Capability:\n  - Path: actions.bulk.actions[].globalAction.payload\n    Category: actions\n    Kind: object\n    Description: Payload estruturado da global action em lote. Deve permanecer alinhado ao schema da action escolhida e ao contexto da seleção atual; para `navigation.openRoute`, use templates como `${runtime.selectedIds}` quando precisar enviar os IDs selecionados.\n\nSchema Capability:\n  - Path: actions.bulk.actions[].effects\n    Category: actions\n    Kind: array\n    Description: Array canonico de efeitos runtime da acao em lote, alinhado com PraxisRuntimeGlobalActionEffect.\n\nSchema Capability:\n  - Path: actions.bulk.actions[].effects[].kind\n    Category: actions\n    Kind: enum\n    Description: Tipo de efeito runtime da acao em lote. Neste corte, apenas global-action e suportado.\n\nSchema Capability:\n  - Path: actions.bulk.actions[].effects[].globalAction.[actionId]\n    Category: actions\n    Kind: string\n    Description: Identificador canonico da GlobalActionRef dentro do efeito runtime em lote.\n\nSchema Capability:\n  - Path: actions.bulk.actions[].effects[].globalAction.payload\n    Category: actions\n    Kind: object\n    Description: Payload estruturado da GlobalActionRef dentro do efeito runtime em lote.\n\nSchema Capability:\n  - Path: actions.context.enabled\n    Category: actions\n    Kind: boolean\n    Description: Habilita menu de contexto (clique direito/long press).\n\nSchema Capability:\n  - Path: actions.context.trigger\n    Category: actions\n    Kind: enum\n    Description: Trigger para abrir o menu de contexto.\n\nSchema Capability:\n  - Path: actions.confirmations.default\n    Category: actions\n    Kind: object\n    Description: Texto padrão de confirmação para ações perigosas.\n\nSchema Capability:\n  - Path: toolbar.actions[].globalAction.[actionId]\n    Category: toolbar\n    Kind: string\n    Description: Identificador canônico de global action para ações da toolbar (ex.: \"navigation.openRoute\", \"surface.open\", \"dialog.open\").\n\nSchema Capability:\n  - Path: toolbar.actions[].globalAction.payload\n    Category: toolbar\n    Kind: object\n    Description: Payload estruturado da global action da toolbar. Para `surface.open`, preserve a semântica canônica do catálogo compartilhado: `payload.*` representa o envelope do evento e `runtime.*` referencia estado exposto diretamente pelo host.\n\nSchema Capability:\n  - Path: toolbar.actions[].effects\n    Category: toolbar\n    Kind: array\n    Description: Array canonico de efeitos runtime da acao da toolbar, alinhado com PraxisRuntimeGlobalActionEffect.\n\nSchema Capability:\n  - Path: toolbar.actions[].effects[].kind\n    Category: toolbar\n    Kind: enum\n    Description: Tipo de efeito runtime da acao da toolbar. Neste corte, apenas global-action e suportado.\n\nSchema Capability:\n  - Path: toolbar.actions[].effects[].globalAction.[actionId]\n    Category: toolbar\n    Kind: string\n    Description: Identificador canonico da GlobalActionRef dentro do efeito runtime da toolbar.\n\nSchema Capability:\n  - Path: toolbar.actions[].effects[].globalAction.payload\n    Category: toolbar\n    Kind: object\n    Description: Payload estruturado da GlobalActionRef dentro do efeito runtime da toolbar.\n\nSchema Capability:\n  - Path: export\n    Category: export\n    Kind: object\n    Description: Configuração global de exportação da tabela.\n\nSchema Capability:\n  - Path: export.enabled\n    Category: export\n    Kind: boolean\n    Description: Habilita funcionalidades de exportação.\n\nSchema Capability:\n  - Path: export.formats\n    Category: export\n    Kind: array\n    Description: Formatos permitidos.\n\nSchema Capability:\n  - Path: export.general.includeHeaders\n    Category: export\n    Kind: boolean\n    Description: Inclui cabeçalhos no arquivo exportado.\n\nSchema Capability:\n  - Path: export.general.scope\n    Category: export\n    Kind: enum\n    Description: Define o escopo dos dados exportados: auto, selected, filtered, currentPage ou all.\n\nSchema Capability:\n  - Path: export.general.maxRows\n    Category: export\n    Kind: number\n    Description: Limite de linhas para exportação.\n\nSchema Capability:\n  - Path: export.excel.visibleCurrentPage\n    Category: export\n    Kind: boolean\n    Description: Exibe a ação local \"Excel da página atual\", separada do Excel via provider.\n\nSchema Capability:\n  - Path: export.excel.autoFitColumns\n    Category: export\n    Kind: boolean\n    Description: Auto-ajusta largura de colunas na planilha.\n\nSchema Capability:\n  - Path: export.pdf.orientation\n    Category: export\n    Kind: enum\n    Description: Orientação do PDF.\n\nSchema Capability:\n  - Path: export.pdf.pageSize\n    Category: export\n    Kind: enum\n    Description: Tamanho da página no PDF.\n\nSchema Capability:\n  - Path: export.csv.delimiter\n    Category: export\n    Kind: enum\n    Description: Separador do CSV.\n\nSchema Capability:\n  - Path: tableRuntimeOperations.operations[]\n    Category: runtime\n    Kind: array\n    Description: Operacoes runtime revisaveis da tabela para aplicar filtros ou executar exportacao sem alterar a configuracao persistida.\n\nSchema Capability:\n  - Path: tableRuntimeOperations.operations[].operationId\n    Category: runtime\n    Kind: enum\n    Description: Operacao runtime canonica permitida para a tabela.\n\nSchema Capability:\n  - Path: tableRuntimeOperations.operations[].input.criteria\n    Category: runtime\n    Kind: object\n    Description: Criterios de filtro a aplicar no runtime, usando campos declarados no catalogo de filtros. A semantica atual e uma conjuncao simples; expressoes booleanas compostas como OR, anyOf, oneOf ou allOf ainda nao fazem parte deste contrato.\n\nSchema Capability:\n  - Path: tableRuntimeOperations.operations[].input.format\n    Category: runtime\n    Kind: enum\n    Description: Formato da exportacao runtime.\n\nSchema Capability:\n  - Path: tableRuntimeOperations.operations[].input.scope\n    Category: runtime\n    Kind: enum\n    Description: Escopo da exportacao runtime: selected, filtered, currentPage, all ou auto.\n\nSchema Capability:\n  - Path: messages.states.empty\n    Category: messages\n    Kind: string\n    Description: Mensagem para estado vazio.\n\nSchema Capability:\n  - Path: messages.states.loading\n    Category: messages\n    Kind: string\n    Description: Mensagem de loading.\n\nSchema Capability:\n  - Path: messages.actions.confirmations.delete\n    Category: messages\n    Kind: string\n    Description: Texto de confirmação de exclusão.\n\nSchema Capability:\n  - Path: localization.locale\n    Category: localization\n    Kind: string\n    Description: Locale principal (ex.: pt-BR, en-US).\n\nSchema Capability:\n  - Path: localization.direction\n    Category: localization\n    Kind: enum\n    Description: Direção do texto (ltr/rtl).\n\nSchema Capability:\n  - Path: localization.dateTime.dateFormat\n    Category: localization\n    Kind: string\n    Description: Formato padrao de datas (DatePipe).\n\nSchema Capability:\n  - Path: localization.dateTime.timeFormat\n    Category: localization\n    Kind: string\n    Description: Formato padrao de horas (DatePipe).\n\nSchema Capability:\n  - Path: localization.dateTime.dateTimeFormat\n    Category: localization\n    Kind: string\n    Description: Formato padrao de data e hora (DatePipe).\n\nSchema Capability:\n  - Path: localization.dateTime.firstDayOfWeek\n    Category: localization\n    Kind: number\n    Description: Primeiro dia da semana (0=domingo).\n\nSchema Capability:\n  - Path: localization.dateTime.relativeTime\n    Category: localization\n    Kind: boolean\n    Description: Habilita formato relativo (ex.: ha 2 dias).\n\nSchema Capability:\n  - Path: localization.dateTime.monthNames\n    Category: localization\n    Kind: array\n    Description: Lista de nomes dos meses.",
          "sourcePointer": "projects/praxis-table/src/lib/ai/table-component-ai-capabilities.ts",
          "contentHash": "290c42bb914c597f5c0aae5c88c481c15b0dbe65b584b10a830c237621238b91",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 12,
          "chunkKind": "capabilities",
          "content": "Schema Capability:\n  - Path: localization.dateTime.dayNames\n    Category: localization\n    Kind: array\n    Description: Lista de nomes dos dias da semana.\n\nSchema Capability:\n  - Path: localization.number.decimalSeparator\n    Category: localization\n    Kind: string\n    Description: Separador decimal.\n\nSchema Capability:\n  - Path: localization.number.thousandsSeparator\n    Category: localization\n    Kind: string\n    Description: Separador de milhares.\n\nSchema Capability:\n  - Path: localization.number.defaultPrecision\n    Category: localization\n    Kind: number\n    Description: Casas decimais padrao.\n\nSchema Capability:\n  - Path: localization.number.negativeSign\n    Category: localization\n    Kind: string\n    Description: Simbolo de negativo.\n\nSchema Capability:\n  - Path: localization.number.negativeSignPosition\n    Category: localization\n    Kind: enum\n    Description: Posicao do sinal negativo.\n\nSchema Capability:\n  - Path: localization.currency.code\n    Category: localization\n    Kind: string\n    Description: Codigo da moeda (ISO 4217).\n\nSchema Capability:\n  - Path: localization.currency.symbol\n    Category: localization\n    Kind: string\n    Description: Simbolo da moeda.\n\nSchema Capability:\n  - Path: localization.currency.position\n    Category: localization\n    Kind: enum\n    Description: Posicao do simbolo da moeda.\n\nSchema Capability:\n  - Path: localization.currency.spacing\n    Category: localization\n    Kind: boolean\n    Description: Espaco entre simbolo e valor.\n\nSchema Capability:\n  - Path: localization.currency.precision\n    Category: localization\n    Kind: number\n    Description: Precisao padrao da moeda.\n\nSchema Capability:\n  - Path: localization.formatting.percentageFormat\n    Category: localization\n    Kind: string\n    Description: Formato de percentual.\n\nSchema Capability:\n  - Path: localization.formatting.fileSizeFormat\n    Category: localization\n    Kind: enum\n    Description: Formato de tamanho de arquivo.\n\nSchema Capability:\n  - Path: performance.virtualization.enabled\n    Category: performance\n    Kind: boolean\n    Description: Virtualização via PerformanceConfig.\n\nSchema Capability:\n  - Path: performance.virtualization.itemHeight\n    Category: performance\n    Kind: number\n    Description: Altura da linha (px) para virtualização.\n\nSchema Capability:\n  - Path: performance.debounce.search\n    Category: performance\n    Kind: number\n    Description: Debounce (ms) para buscas.\n\nSchema Capability:\n  - Path: performance.debounce.filter\n    Category: performance\n    Kind: number\n    Description: Debounce (ms) para filtros.\n\nSchema Capability:\n  - Path: performance.lazyLoading.images\n    Category: performance\n    Kind: boolean\n    Description: Ativa lazy loading de imagens na tabela.\n\nSchema Capability:\n  - Path: data.loadingStrategy\n    Category: data\n    Kind: enum\n    Description: Estratégia de carregamento inicial dos dados.\n\nSchema Capability:\n  - Path: accessibility.enabled\n    Category: accessibility\n    Kind: boolean\n    Description: Habilita recursos de acessibilidade.\n\nSchema Capability:\n  - Path: accessibility.highContrast\n    Category: accessibility\n    Kind: boolean\n    Description: Ativa modo de alto contraste.\n\nSchema Capability:\n  - Path: accessibility.reduceMotion\n    Category: accessibility\n    Kind: boolean\n    Description: Reduz ou desativa animações para evitar motion sickness.\n\nSchema Capability:\n  - Path: accessibility.announcements.liveRegion\n    Category: accessibility\n    Kind: enum\n    Description: Região ARIA para anúncios (polite/assertive).\n\nSchema Capability:\n  - Path: accessibility.keyboard.shortcuts\n    Category: accessibility\n    Kind: boolean\n    Description: Ativa atalhos de teclado.\n\nComponent Capability:\n  - Path: inputs.config\n    Category: inputs\n    Kind: object\n    Description: Configuracao completa da tabela (TableConfig).\n\nComponent Capability:\n  - Path: inputs.resourcePath\n    Category: data\n    Kind: string\n    Description: Endpoint base para operacoes de dados.\n\nComponent Capability:\n  - Path: inputs.queryContext\n    Category: data\n    Kind: object\n    Description: Contrato semantico primario para consulta declarativa; nesta fase a tabela consome filters, sort, limit e page com foco principal em queryContext.filters.\n\nComponent Capability:\n  - Path: inputs.filterCriteria\n    Category: data\n    Kind: object\n    Description: Bridge legada de compatibilidade. Para novo authoring, prefira inputs.queryContext.\n\nComponent Capability:\n  - Path: inputs.showToolbar\n    Category: appearance\n    Kind: boolean\n    Description: Exibe barra de ferramentas.\n\nComponent Capability:\n  - Path: inputs.toolbarV2\n    Category: appearance\n    Kind: boolean\n    Description: Ativa layout da toolbar v2.\n\nComponent Capability:\n  - Path: inputs.autoDelete\n    Category: behavior\n    Kind: boolean\n    Description: Ativa delecao automatica.\n\nComponent Capability:\n  - Path: inputs.enableCustomization\n    Category: behavior\n    Kind: boolean\n    Description: Permite edicao de layout.\n\nComponent Capability:\n  - Path: inputs.dense\n    Category: appearance\n    Kind: boolean\n    Description: Entrada legada: aplica compacto apenas quando appearance.density nao foi definido. Preferir appearance.density para novas configuracoes.\n\nComponent Capability:\n  - Path: inputs.tableId\n    Category: inputs\n    Kind: string\n    Description: Identificador para armazenamento de configuracao.\n\nComponent Capability:\n  - Path: outputs.rowClick\n    Category: outputs\n    Kind: object\n    Description: Evento emitido ao clicar em uma linha.\n\nComponent Capability:\n  - Path: outputs.rowDoubleClick\n    Category: outputs\n    Kind: object\n    Description: Evento emitido ao dar duplo clique em uma linha.\n\nComponent Capability:\n  - Path: outputs.rowExpansionChange\n    Category: outputs\n    Kind: object\n    Description: Evento emitido ao expandir/colapsar detalhe de linha com payload governado por politica de exposicao.\n\nComponent Capability:\n  - Path: outputs.rowAction\n    Category: outputs\n    Kind: object\n    Description: Evento emitido ao acionar uma acao em uma linha.\n\nComponent Capability:\n  - Path: outputs.toolbarAction\n    Category: outputs\n    Kind: object\n    Description: Evento emitido ao acionar uma acao da toolbar.\n\nComponent Capability:\n  - Path: outputs.bulkAction\n    Category: outputs\n    Kind: object\n    Description: Evento emitido ao executar acoes em massa.\n\nComponent Capability:\n  - Path: outputs.columnReorder\n    Category: outputs\n    Kind: object\n    Description: Evento emitido quando a reordenacao de colunas e concluida (trigger: drag, keyboard ou undo; inclui operationId monotônico).\n\nComponent Capability:\n  - Path: outputs.columnReorderAttempt\n    Category: outputs\n    Kind: object\n    Description: Evento emitido para tentativa bloqueada de reordenacao de colunas (inclui operationId monotônico para correlacao).\n\nComponent Capability:\n  - Path: outputs.columnResize\n    Category: outputs\n    Kind: object\n    Description: Evento emitido quando uma coluna e redimensionada por ponteiro, teclado ou auto-fit (inclui operationId monotonico e status de persistencia).\n\nComponent Capability:\n  - Path: outputs.beforeDelete\n    Category: outputs\n    Kind: object\n    Description: Evento emitido antes de deletar uma linha.\n\nComponent Capability:\n  - Path: outputs.afterDelete\n    Category: outputs\n    Kind: object\n    Description: Evento emitido apos deletar uma linha.\n\nComponent Capability:\n  - Path: outputs.deleteError\n    Category: outputs\n    Kind: object\n    Description: Evento emitido ao ocorrer erro na delecao.\n\nComponent Capability:\n  - Path: outputs.beforeBulkDelete\n    Category: outputs\n    Kind: object\n    Description: Evento emitido antes de deletar multiplas linhas.\n\nComponent Capability:\n  - Path: outputs.afterBulkDelete\n    Category: outputs\n    Kind: object\n    Description: Evento emitido apos deletar multiplas linhas.",
          "sourcePointer": "projects/praxis-table/src/lib/ai/table-component-ai-capabilities.ts",
          "contentHash": "653764927cbbc478609aff06b4824279100969ac3de6d949e0903c5ce9ba1e80",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 13,
          "chunkKind": "capabilities",
          "content": "Component Capability:\n  - Path: outputs.bulkDeleteError\n    Category: outputs\n    Kind: object\n    Description: Evento emitido ao ocorrer erro na delecao em massa.\n\nCapability Note:\n  - Este catalogo descreve inputs e outputs do componente.\n\nCapability Note:\n  - inputs.config segue o schema de TableConfig (veja table-ai-capabilities).",
          "sourcePointer": "projects/praxis-table/src/lib/ai/table-component-ai-capabilities.ts",
          "contentHash": "b9b1958ba345b95fd9e92e68ab120e6e7af79529e2e09dec1fa67d025ebdcc8f",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 14,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"column.projection.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Usar colunas governadas pelo schema Mantem /schemas/filtered como fonte estrutural das colunas e registra somente diferencas editoriais por nome canonico de campo. Nao use para inventar campos ou contornar metadata ausente. Effects: set-value.\",\"scope\":\"global\",\"target\":{\"kind\":\"columnProjection\",\"resolver\":\"schema-column-projection\",\"required\":false},\"inputContract\":{\"required\":[\"source\"],\"properties\":[\"source\",\"include\",\"overrides\",\"additions\"],\"semanticTerms\":[\"source\",\"include\",\"overrides\",\"additions\",\"schema\",\"additions.field\",\"additions.header\",\"additions.type\",\"string\",\"number\",\"date\",\"boolean\",\"currency\",\"percentage\",\"custom\"]},\"effects\":[\"set-value\"],\"affectedPaths\":[\"columnProjection\"],\"validators\":[{\"validatorId\":\"schema-column-override-field-immutable\",\"level\":\"error\",\"code\":\"TB024\",\"description\":\"Overrides de projecao podem alterar apresentacao e comportamento, mas nunca a identidade canonica field.\"},{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"affects-schema-backed-data\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "9ad36cd37b270c6a292bf98ddd003c87975cec4d6ca4fbac27bbaf055f75fbd2",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 15,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"column.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Adicionar coluna Effects: append-unique. Adicionar coluna para o campo email com o título Contato Adicione a coluna e-mail à tabela de funcionários e mantenha as demais colunas\",\"scope\":\"global\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"required\":false},\"inputContract\":{\"required\":[\"field\",\"header\"],\"properties\":[\"field\",\"header\",\"type\"],\"semanticTerms\":[\"field\",\"header\",\"type\",\"string\",\"number\",\"date\",\"boolean\",\"currency\",\"percentage\",\"custom\"]},\"effects\":[\"append-unique\"],\"affectedPaths\":[\"columns[]\"],\"validators\":[{\"validatorId\":\"column-field-unique\",\"level\":\"error\",\"code\":\"TB002\",\"description\":\"O identificador técnico da coluna (field) deve ser único.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"affects-schema-backed-data\",\"presentationAffordances\":[{\"id\":\"table.conditional-surface.cell\",\"targetKind\":\"column\",\"category\":\"surface-preset\",\"description\":\"Versioned semantic cell surfaces materialized privately by the table runtime.\",\"options\":[\"success\",\"warning\",\"danger\",\"highlight\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.text-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Text transforms and masks for textual table columns.\",\"options\":[\"none\",\"uppercase\",\"lowercase\",\"titlecase\",\"capitalize\",\"uppercase|truncate|50|...\",\"000.000.000-00\"],\"appliesToTypes\":[\"string\",\"text\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.numeric-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Decimal, currency and percentage formats for numeric table columns.\",\"options\":[\"1.0-0\",\"1.1-1\",\"1.2-2\",\"1.0-3\",\"1.0-0|nosep\",\"BRL|symbol|2\",\"USD|symbol|2\",\"EUR|symbol|2\",\"BRL|code|2\",\"USD|code|0\",\"BRL|symbol|2|nosep\",\"EUR|symbol|2|nosep\",\"1.0-0|x100\",\"1.1-1|x100\",\"1.2-2|x100\"],\"appliesToTypes\":[\"number\",\"currency\",\"percentage\"],\"unknownCompatible\":false},{\"id\":\"table.column.date-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Date and time formats for date-like table columns.\",\"options\":[\"shortDate\",\"mediumDate\",\"longDate\",\"fullDate\",\"MMM/yyyy\",\"shortTime\",\"short\",\"yyyy-MM-dd\",\"dd/MM/yyyy\",\"yyyy-MM-dd HH:mm\"],\"appliesToTypes\":[\"date\",\"datetime\",\"time\"],\"unknownCompatible\":false},{\"id\":\"table.column.boolean-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Boolean label formats for true/false table columns.\",\"options\":[\"true-false\",\"yes-no\",\"active-inactive\",\"on-off\",\"enabled-disabled\",\"custom|Sim|Nao\"],\"appliesToTypes\":[\"boolean\"],\"unknownCompatible\":false},{\"id\":\"table.column.semantic-renderers\",\"targetKind\":\"column\",\"category\":\"renderer\",\"description\":\"Visual renderers for categorical, status or action-oriented table columns.\",\"options\":[\"badge\",\"chip\",\"icon\",\"link\",\"button\",\"progress\",\"avatar\",\"toggle\",\"menu\",\"rating\",\"compose\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.alignment-layout\",\"targetKind\":\"column\",\"category\":\"layout\",\"description\":\"Column alignment and composed cell layout options.\",\"options\":[\"align:start\",\"align:center\",\"align:end\",\"compose:row\",\"compose:column\",\"secondary-line\",\"prefix\",\"suffix\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true}],\"positiveExamples\":[{\"id\":\"add-schema-column\",\"request\":\"Adicionar coluna para o campo email com o título Contato\",\"operationId\":\"column.add\",\"params\":{\"field\":\"email\",\"header\":\"Contato\",\"type\":\"string\"},\"isPositive\":true},{\"id\":\"add-email-column-imperative\",\"request\":\"Adicione a coluna e-mail à tabela de funcionários e mantenha as demais colunas\",\"operationId\":\"column.add\",\"params\":{\"field\":\"email\",\"header\":\"E-mail\",\"type\":\"string\"},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "47f9ad780982fd12533ab83adcbbbcd6962fe4a4e7afb490effed75840d15423",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 16,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"column.remove\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Remover coluna Effects: remove-by-key. Remover a coluna nome\",\"scope\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"required\":true},\"inputContract\":{\"required\":[],\"properties\":[],\"semanticTerms\":[]},\"effects\":[\"remove-by-key\"],\"affectedPaths\":[\"columns[]\"],\"validators\":[{\"validatorId\":\"destructive-removal-confirmation\",\"level\":\"error\",\"code\":\"TB006\",\"description\":\"Remoções destrutivas de colunas ou ações exigem confirmação explícita.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"affects-schema-backed-data\",\"presentationAffordances\":[{\"id\":\"table.conditional-surface.cell\",\"targetKind\":\"column\",\"category\":\"surface-preset\",\"description\":\"Versioned semantic cell surfaces materialized privately by the table runtime.\",\"options\":[\"success\",\"warning\",\"danger\",\"highlight\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.text-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Text transforms and masks for textual table columns.\",\"options\":[\"none\",\"uppercase\",\"lowercase\",\"titlecase\",\"capitalize\",\"uppercase|truncate|50|...\",\"000.000.000-00\"],\"appliesToTypes\":[\"string\",\"text\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.numeric-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Decimal, currency and percentage formats for numeric table columns.\",\"options\":[\"1.0-0\",\"1.1-1\",\"1.2-2\",\"1.0-3\",\"1.0-0|nosep\",\"BRL|symbol|2\",\"USD|symbol|2\",\"EUR|symbol|2\",\"BRL|code|2\",\"USD|code|0\",\"BRL|symbol|2|nosep\",\"EUR|symbol|2|nosep\",\"1.0-0|x100\",\"1.1-1|x100\",\"1.2-2|x100\"],\"appliesToTypes\":[\"number\",\"currency\",\"percentage\"],\"unknownCompatible\":false},{\"id\":\"table.column.date-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Date and time formats for date-like table columns.\",\"options\":[\"shortDate\",\"mediumDate\",\"longDate\",\"fullDate\",\"MMM/yyyy\",\"shortTime\",\"short\",\"yyyy-MM-dd\",\"dd/MM/yyyy\",\"yyyy-MM-dd HH:mm\"],\"appliesToTypes\":[\"date\",\"datetime\",\"time\"],\"unknownCompatible\":false},{\"id\":\"table.column.boolean-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Boolean label formats for true/false table columns.\",\"options\":[\"true-false\",\"yes-no\",\"active-inactive\",\"on-off\",\"enabled-disabled\",\"custom|Sim|Nao\"],\"appliesToTypes\":[\"boolean\"],\"unknownCompatible\":false},{\"id\":\"table.column.semantic-renderers\",\"targetKind\":\"column\",\"category\":\"renderer\",\"description\":\"Visual renderers for categorical, status or action-oriented table columns.\",\"options\":[\"badge\",\"chip\",\"icon\",\"link\",\"button\",\"progress\",\"avatar\",\"toggle\",\"menu\",\"rating\",\"compose\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.alignment-layout\",\"targetKind\":\"column\",\"category\":\"layout\",\"description\":\"Column alignment and composed cell layout options.\",\"options\":[\"align:start\",\"align:center\",\"align:end\",\"compose:row\",\"compose:column\",\"secondary-line\",\"prefix\",\"suffix\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true}],\"positiveExamples\":[{\"id\":\"require-removal-confirmation\",\"request\":\"Remover a coluna nome\",\"operationId\":\"column.remove\",\"target\":\"nome\",\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "df844a26e2acd58a569d6bda45b9ea61a2947d6e84cc75eaa05b888f4d90cbcf",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 17,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"column.header.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Renomear o título da coluna sem alterar valores das células Effects: merge-by-key. Ativo vira Status. Troque somente o título da coluna Ativo para Status, sem alterar os valores das células Sem mudar o título da coluna Ativo, mostre Sim e Não no lugar dos valores das células Na coluna chamada Status, mostre um chip vermelho quando o valor estiver inativo\",\"scope\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"required\":true},\"inputContract\":{\"required\":[\"header\"],\"properties\":[\"header\"],\"semanticTerms\":[\"header\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"columns[].header\"],\"validators\":[{\"validatorId\":\"target-column-exists\",\"level\":\"error\",\"code\":\"TB001\",\"description\":\"A coluna alvo deve existir na configuração.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[{\"id\":\"table.conditional-surface.cell\",\"targetKind\":\"column\",\"category\":\"surface-preset\",\"description\":\"Versioned semantic cell surfaces materialized privately by the table runtime.\",\"options\":[\"success\",\"warning\",\"danger\",\"highlight\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.text-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Text transforms and masks for textual table columns.\",\"options\":[\"none\",\"uppercase\",\"lowercase\",\"titlecase\",\"capitalize\",\"uppercase|truncate|50|...\",\"000.000.000-00\"],\"appliesToTypes\":[\"string\",\"text\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.numeric-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Decimal, currency and percentage formats for numeric table columns.\",\"options\":[\"1.0-0\",\"1.1-1\",\"1.2-2\",\"1.0-3\",\"1.0-0|nosep\",\"BRL|symbol|2\",\"USD|symbol|2\",\"EUR|symbol|2\",\"BRL|code|2\",\"USD|code|0\",\"BRL|symbol|2|nosep\",\"EUR|symbol|2|nosep\",\"1.0-0|x100\",\"1.1-1|x100\",\"1.2-2|x100\"],\"appliesToTypes\":[\"number\",\"currency\",\"percentage\"],\"unknownCompatible\":false},{\"id\":\"table.column.date-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Date and time formats for date-like table columns.\",\"options\":[\"shortDate\",\"mediumDate\",\"longDate\",\"fullDate\",\"MMM/yyyy\",\"shortTime\",\"short\",\"yyyy-MM-dd\",\"dd/MM/yyyy\",\"yyyy-MM-dd HH:mm\"],\"appliesToTypes\":[\"date\",\"datetime\",\"time\"],\"unknownCompatible\":false},{\"id\":\"table.column.boolean-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Boolean label formats for true/false table columns.\",\"options\":[\"true-false\",\"yes-no\",\"active-inactive\",\"on-off\",\"enabled-disabled\",\"custom|Sim|Nao\"],\"appliesToTypes\":[\"boolean\"],\"unknownCompatible\":false},{\"id\":\"table.column.semantic-renderers\",\"targetKind\":\"column\",\"category\":\"renderer\",\"description\":\"Visual renderers for categorical, status or action-oriented table columns.\",\"options\":[\"badge\",\"chip\",\"icon\",\"link\",\"button\",\"progress\",\"avatar\",\"toggle\",\"menu\",\"rating\",\"compose\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.alignment-layout\",\"targetKind\":\"column\",\"category\":\"layout\",\"description\":\"Column alignment and composed cell layout options.\",\"options\":[\"align:start\",\"align:center\",\"align:end\",\"compose:row\",\"compose:column\",\"secondary-line\",\"prefix\",\"suffix\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true}],\"positiveExamples\":[{\"id\":\"rename-active-column-to-status\",\"request\":\"Ativo vira Status.\",\"operationId\":\"column.header.set\",\"target\":\"ativo\",\"params\":{\"header\":\"Status\"},\"isPositive\":true},{\"id\":\"rename-column-title-without-changing-cell-values\",\"request\":\"Troque somente o título da coluna Ativo para Status, sem alterar os valores das células\",\"operationId\":\"column.header.set\",\"target\":\"ativo\",\"params\":{\"header\":\"Status\"},\"isPositive\":true}],\"negativeExamples\":[{\"id\":\"cell-value-mapping-is-not-header-renaming\",\"request\":\"Sem mudar o título da coluna Ativo, mostre Sim e Não no lugar dos valores das células\",\"operationId\":\"column.header.set\",\"target\":\"ativo\",\"isPositive\":false},{\"id\":\"current-column-label-is-not-a-rename-request\",\"request\":\"Na coluna chamada Status, mostre um chip vermelho quando o valor estiver inativo\",\"operationId\":\"column.header.set\",\"target\":\"ativo\",\"isPositive\":false}]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "a4c5eb9c0c2fb434e9eab0aa50ffe7c66ad3df284c4a4fda844dba6edabf9440",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 18,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"column.type.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Definir tipo de dado Effects: merge-by-key.\",\"scope\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"required\":true},\"inputContract\":{\"required\":[\"type\"],\"properties\":[\"type\"],\"semanticTerms\":[\"type\",\"string\",\"number\",\"date\",\"boolean\",\"currency\",\"percentage\",\"custom\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"columns[].type\"],\"validators\":[{\"validatorId\":\"target-column-exists\",\"level\":\"error\",\"code\":\"TB001\",\"description\":\"A coluna alvo deve existir na configuração.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"affects-schema-backed-data\",\"presentationAffordances\":[{\"id\":\"table.conditional-surface.cell\",\"targetKind\":\"column\",\"category\":\"surface-preset\",\"description\":\"Versioned semantic cell surfaces materialized privately by the table runtime.\",\"options\":[\"success\",\"warning\",\"danger\",\"highlight\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.text-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Text transforms and masks for textual table columns.\",\"options\":[\"none\",\"uppercase\",\"lowercase\",\"titlecase\",\"capitalize\",\"uppercase|truncate|50|...\",\"000.000.000-00\"],\"appliesToTypes\":[\"string\",\"text\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.numeric-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Decimal, currency and percentage formats for numeric table columns.\",\"options\":[\"1.0-0\",\"1.1-1\",\"1.2-2\",\"1.0-3\",\"1.0-0|nosep\",\"BRL|symbol|2\",\"USD|symbol|2\",\"EUR|symbol|2\",\"BRL|code|2\",\"USD|code|0\",\"BRL|symbol|2|nosep\",\"EUR|symbol|2|nosep\",\"1.0-0|x100\",\"1.1-1|x100\",\"1.2-2|x100\"],\"appliesToTypes\":[\"number\",\"currency\",\"percentage\"],\"unknownCompatible\":false},{\"id\":\"table.column.date-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Date and time formats for date-like table columns.\",\"options\":[\"shortDate\",\"mediumDate\",\"longDate\",\"fullDate\",\"MMM/yyyy\",\"shortTime\",\"short\",\"yyyy-MM-dd\",\"dd/MM/yyyy\",\"yyyy-MM-dd HH:mm\"],\"appliesToTypes\":[\"date\",\"datetime\",\"time\"],\"unknownCompatible\":false},{\"id\":\"table.column.boolean-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Boolean label formats for true/false table columns.\",\"options\":[\"true-false\",\"yes-no\",\"active-inactive\",\"on-off\",\"enabled-disabled\",\"custom|Sim|Nao\"],\"appliesToTypes\":[\"boolean\"],\"unknownCompatible\":false},{\"id\":\"table.column.semantic-renderers\",\"targetKind\":\"column\",\"category\":\"renderer\",\"description\":\"Visual renderers for categorical, status or action-oriented table columns.\",\"options\":[\"badge\",\"chip\",\"icon\",\"link\",\"button\",\"progress\",\"avatar\",\"toggle\",\"menu\",\"rating\",\"compose\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.alignment-layout\",\"targetKind\":\"column\",\"category\":\"layout\",\"description\":\"Column alignment and composed cell layout options.\",\"options\":[\"align:start\",\"align:center\",\"align:end\",\"compose:row\",\"compose:column\",\"secondary-line\",\"prefix\",\"suffix\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true}],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "c3a7577087fab2873daaec5744838795c0b26c28d7927b74d72eac9abf873b58",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 19,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"column.format.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Definir formato Define o preset de apresentação e materializa o tipo visual compatível quando o formato é moeda, percentual, data ou booleano, preservando os demais atributos da coluna. Effects: compile-domain-patch. Formatar a coluna total como moeda brasileira Formate a coluna CPF Mostre a data de admissão por extenso\",\"scope\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"required\":true},\"inputContract\":{\"required\":[\"format\"],\"properties\":[\"format\"],\"semanticTerms\":[\"format\",\"shortDate\",\"mediumDate\",\"longDate\",\"fullDate\",\"MMM/yyyy\",\"shortTime\",\"short\",\"yyyy-MM-dd\",\"dd/MM/yyyy\",\"yyyy-MM-dd HH:mm\",\"1.0-0\",\"1.1-1\",\"1.2-2\",\"1.0-3\",\"1.0-0|nosep\",\"BRL|symbol|2\",\"USD|symbol|2\",\"EUR|symbol|2\",\"BRL|code|2\",\"USD|code|0\",\"BRL|symbol|2|nosep\",\"EUR|symbol|2|nosep\",\"1.0-0|x100\",\"1.1-1|x100\",\"1.2-2|x100\",\"none\",\"uppercase\",\"lowercase\",\"titlecase\",\"capitalize\",\"uppercase|truncate|50|...\",\"000.000.000-00\",\"true-false\",\"yes-no\",\"active-inactive\",\"on-off\",\"enabled-disabled\",\"custom|Sim|Nao\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"columns[].format\",\"columns[].type\"],\"validators\":[{\"validatorId\":\"target-column-exists\",\"level\":\"error\",\"code\":\"TB001\",\"description\":\"A coluna alvo deve existir na configuração.\"},{\"validatorId\":\"format-preset-supported\",\"level\":\"error\",\"code\":\"TB012\",\"description\":\"O formato deve usar um preset canonico publicado em table-ai-capabilities.ts.\"},{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[{\"id\":\"table.conditional-surface.cell\",\"targetKind\":\"column\",\"category\":\"surface-preset\",\"description\":\"Versioned semantic cell surfaces materialized privately by the table runtime.\",\"options\":[\"success\",\"warning\",\"danger\",\"highlight\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.text-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Text transforms and masks for textual table columns.\",\"options\":[\"none\",\"uppercase\",\"lowercase\",\"titlecase\",\"capitalize\",\"uppercase|truncate|50|...\",\"000.000.000-00\"],\"appliesToTypes\":[\"string\",\"text\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.numeric-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Decimal, currency and percentage formats for numeric table columns.\",\"options\":[\"1.0-0\",\"1.1-1\",\"1.2-2\",\"1.0-3\",\"1.0-0|nosep\",\"BRL|symbol|2\",\"USD|symbol|2\",\"EUR|symbol|2\",\"BRL|code|2\",\"USD|code|0\",\"BRL|symbol|2|nosep\",\"EUR|symbol|2|nosep\",\"1.0-0|x100\",\"1.1-1|x100\",\"1.2-2|x100\"],\"appliesToTypes\":[\"number\",\"currency\",\"percentage\"],\"unknownCompatible\":false},{\"id\":\"table.column.date-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Date and time formats for date-like table columns.\",\"options\":[\"shortDate\",\"mediumDate\",\"longDate\",\"fullDate\",\"MMM/yyyy\",\"shortTime\",\"short\",\"yyyy-MM-dd\",\"dd/MM/yyyy\",\"yyyy-MM-dd HH:mm\"],\"appliesToTypes\":[\"date\",\"datetime\",\"time\"],\"unknownCompatible\":false},{\"id\":\"table.column.boolean-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Boolean label formats for true/false table columns.\",\"options\":[\"true-false\",\"yes-no\",\"active-inactive\",\"on-off\",\"enabled-disabled\",\"custom|Sim|Nao\"],\"appliesToTypes\":[\"boolean\"],\"unknownCompatible\":false},{\"id\":\"table.column.semantic-renderers\",\"targetKind\":\"column\",\"category\":\"renderer\",\"description\":\"Visual renderers for categorical, status or action-oriented table columns.\",\"options\":[\"badge\",\"chip\",\"icon\",\"link\",\"button\",\"progress\",\"avatar\",\"toggle\",\"menu\",\"rating\",\"compose\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.alignment-layout\",\"targetKind\":\"column\",\"category\":\"layout\",\"description\":\"Column alignment and composed cell layout options.\",\"options\":[\"align:start\",\"align:center\",\"align:end\",\"compose:row\",\"compose:column\",\"secondary-line\",\"prefix\",\"suffix\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true}],\"positiveExamples\":[{\"id\":\"set-currency-format-preset\",\"request\":\"Formatar a coluna total como moeda brasileira\",\"operationId\":\"column.format.set\",\"target\":\"total\",\"params\":{\"format\":\"BRL|symbol|2\"},\"isPositive\":true},{\"id\":\"set-cpf-format-preset\",\"request\":\"Formate a coluna CPF\",\"operationId\":\"column.format.set\",\"target\":\"cpf\",\"params\":{\"format\":\"000.000.000-00\"},\"isPositive\":true},{\"id\":\"set-long-date-format-preset\",\"request\":\"Mostre a data de admissão por extenso\",\"operationId\":\"column.format.set\",\"target\":\"dataAdmissao\",\"params\":{\"format\":\"longDate\"},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "9bbfb4cd8000ee718c33225e0d45d8fd633dd6ac165181bf47c9765adb22bcc5",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 20,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"column.width.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Definir largura da coluna Effects: merge-by-key. Definir a largura da coluna nome para 240px\",\"scope\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"required\":true},\"inputContract\":{\"required\":[\"width\"],\"properties\":[\"width\"],\"semanticTerms\":[\"width\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"columns[].width\"],\"validators\":[{\"validatorId\":\"target-column-exists\",\"level\":\"error\",\"code\":\"TB001\",\"description\":\"A coluna alvo deve existir na configuração.\"},{\"validatorId\":\"column-width-valid\",\"level\":\"error\",\"code\":\"TB013\",\"description\":\"A largura deve ser auto ou uma medida simples em px, %, rem ou em.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[{\"id\":\"table.conditional-surface.cell\",\"targetKind\":\"column\",\"category\":\"surface-preset\",\"description\":\"Versioned semantic cell surfaces materialized privately by the table runtime.\",\"options\":[\"success\",\"warning\",\"danger\",\"highlight\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.text-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Text transforms and masks for textual table columns.\",\"options\":[\"none\",\"uppercase\",\"lowercase\",\"titlecase\",\"capitalize\",\"uppercase|truncate|50|...\",\"000.000.000-00\"],\"appliesToTypes\":[\"string\",\"text\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.numeric-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Decimal, currency and percentage formats for numeric table columns.\",\"options\":[\"1.0-0\",\"1.1-1\",\"1.2-2\",\"1.0-3\",\"1.0-0|nosep\",\"BRL|symbol|2\",\"USD|symbol|2\",\"EUR|symbol|2\",\"BRL|code|2\",\"USD|code|0\",\"BRL|symbol|2|nosep\",\"EUR|symbol|2|nosep\",\"1.0-0|x100\",\"1.1-1|x100\",\"1.2-2|x100\"],\"appliesToTypes\":[\"number\",\"currency\",\"percentage\"],\"unknownCompatible\":false},{\"id\":\"table.column.date-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Date and time formats for date-like table columns.\",\"options\":[\"shortDate\",\"mediumDate\",\"longDate\",\"fullDate\",\"MMM/yyyy\",\"shortTime\",\"short\",\"yyyy-MM-dd\",\"dd/MM/yyyy\",\"yyyy-MM-dd HH:mm\"],\"appliesToTypes\":[\"date\",\"datetime\",\"time\"],\"unknownCompatible\":false},{\"id\":\"table.column.boolean-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Boolean label formats for true/false table columns.\",\"options\":[\"true-false\",\"yes-no\",\"active-inactive\",\"on-off\",\"enabled-disabled\",\"custom|Sim|Nao\"],\"appliesToTypes\":[\"boolean\"],\"unknownCompatible\":false},{\"id\":\"table.column.semantic-renderers\",\"targetKind\":\"column\",\"category\":\"renderer\",\"description\":\"Visual renderers for categorical, status or action-oriented table columns.\",\"options\":[\"badge\",\"chip\",\"icon\",\"link\",\"button\",\"progress\",\"avatar\",\"toggle\",\"menu\",\"rating\",\"compose\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.alignment-layout\",\"targetKind\":\"column\",\"category\":\"layout\",\"description\":\"Column alignment and composed cell layout options.\",\"options\":[\"align:start\",\"align:center\",\"align:end\",\"compose:row\",\"compose:column\",\"secondary-line\",\"prefix\",\"suffix\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true}],\"positiveExamples\":[{\"id\":\"set-basic-column-width\",\"request\":\"Definir a largura da coluna nome para 240px\",\"operationId\":\"column.width.set\",\"target\":\"nome\",\"params\":{\"width\":\"240px\"},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "5f61e4a9d31a599cc9ed7fa519a727fc0e1d218f3dc4301c3b2b1a54e3df2296",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 21,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"column.align.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Definir alinhamento da coluna Effects: merge-by-key. Alinhe o salário à direita\",\"scope\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"required\":true},\"inputContract\":{\"required\":[\"align\"],\"properties\":[\"align\"],\"semanticTerms\":[\"align\",\"left\",\"center\",\"right\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"columns[].align\"],\"validators\":[{\"validatorId\":\"target-column-exists\",\"level\":\"error\",\"code\":\"TB001\",\"description\":\"A coluna alvo deve existir na configuração.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[{\"id\":\"table.conditional-surface.cell\",\"targetKind\":\"column\",\"category\":\"surface-preset\",\"description\":\"Versioned semantic cell surfaces materialized privately by the table runtime.\",\"options\":[\"success\",\"warning\",\"danger\",\"highlight\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.text-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Text transforms and masks for textual table columns.\",\"options\":[\"none\",\"uppercase\",\"lowercase\",\"titlecase\",\"capitalize\",\"uppercase|truncate|50|...\",\"000.000.000-00\"],\"appliesToTypes\":[\"string\",\"text\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.numeric-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Decimal, currency and percentage formats for numeric table columns.\",\"options\":[\"1.0-0\",\"1.1-1\",\"1.2-2\",\"1.0-3\",\"1.0-0|nosep\",\"BRL|symbol|2\",\"USD|symbol|2\",\"EUR|symbol|2\",\"BRL|code|2\",\"USD|code|0\",\"BRL|symbol|2|nosep\",\"EUR|symbol|2|nosep\",\"1.0-0|x100\",\"1.1-1|x100\",\"1.2-2|x100\"],\"appliesToTypes\":[\"number\",\"currency\",\"percentage\"],\"unknownCompatible\":false},{\"id\":\"table.column.date-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Date and time formats for date-like table columns.\",\"options\":[\"shortDate\",\"mediumDate\",\"longDate\",\"fullDate\",\"MMM/yyyy\",\"shortTime\",\"short\",\"yyyy-MM-dd\",\"dd/MM/yyyy\",\"yyyy-MM-dd HH:mm\"],\"appliesToTypes\":[\"date\",\"datetime\",\"time\"],\"unknownCompatible\":false},{\"id\":\"table.column.boolean-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Boolean label formats for true/false table columns.\",\"options\":[\"true-false\",\"yes-no\",\"active-inactive\",\"on-off\",\"enabled-disabled\",\"custom|Sim|Nao\"],\"appliesToTypes\":[\"boolean\"],\"unknownCompatible\":false},{\"id\":\"table.column.semantic-renderers\",\"targetKind\":\"column\",\"category\":\"renderer\",\"description\":\"Visual renderers for categorical, status or action-oriented table columns.\",\"options\":[\"badge\",\"chip\",\"icon\",\"link\",\"button\",\"progress\",\"avatar\",\"toggle\",\"menu\",\"rating\",\"compose\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.alignment-layout\",\"targetKind\":\"column\",\"category\":\"layout\",\"description\":\"Column alignment and composed cell layout options.\",\"options\":[\"align:start\",\"align:center\",\"align:end\",\"compose:row\",\"compose:column\",\"secondary-line\",\"prefix\",\"suffix\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true}],\"positiveExamples\":[{\"id\":\"set-salary-align-right\",\"request\":\"Alinhe o salário à direita\",\"operationId\":\"column.align.set\",\"target\":\"salario\",\"params\":{\"align\":\"right\"},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "9faa6d293a81fb1070a816896bbb7a00f533dbca0a5df0456f800e3e56da1b2b",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 22,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"column.sticky.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Fixar coluna durante a rolagem sem reordená-la Mantém a coluna visível em uma extremidade durante a rolagem horizontal. Não altera sua posição na sequência de colunas; pedidos para mover, reordenar ou colocar uma coluna no início pertencem a column.order.set. Effects: merge-by-key. Fixe a coluna funcionário no início da tabela Mova a coluna salário líquido da tabela para o início\",\"scope\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"required\":true},\"inputContract\":{\"required\":[\"sticky\"],\"properties\":[\"sticky\"],\"semanticTerms\":[\"sticky\",\"start\",\"end\",\"true\",\"false\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"columns[].sticky\"],\"validators\":[{\"validatorId\":\"target-column-exists\",\"level\":\"error\",\"code\":\"TB001\",\"description\":\"A coluna alvo deve existir na configuração.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[{\"id\":\"table.conditional-surface.cell\",\"targetKind\":\"column\",\"category\":\"surface-preset\",\"description\":\"Versioned semantic cell surfaces materialized privately by the table runtime.\",\"options\":[\"success\",\"warning\",\"danger\",\"highlight\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.text-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Text transforms and masks for textual table columns.\",\"options\":[\"none\",\"uppercase\",\"lowercase\",\"titlecase\",\"capitalize\",\"uppercase|truncate|50|...\",\"000.000.000-00\"],\"appliesToTypes\":[\"string\",\"text\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.numeric-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Decimal, currency and percentage formats for numeric table columns.\",\"options\":[\"1.0-0\",\"1.1-1\",\"1.2-2\",\"1.0-3\",\"1.0-0|nosep\",\"BRL|symbol|2\",\"USD|symbol|2\",\"EUR|symbol|2\",\"BRL|code|2\",\"USD|code|0\",\"BRL|symbol|2|nosep\",\"EUR|symbol|2|nosep\",\"1.0-0|x100\",\"1.1-1|x100\",\"1.2-2|x100\"],\"appliesToTypes\":[\"number\",\"currency\",\"percentage\"],\"unknownCompatible\":false},{\"id\":\"table.column.date-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Date and time formats for date-like table columns.\",\"options\":[\"shortDate\",\"mediumDate\",\"longDate\",\"fullDate\",\"MMM/yyyy\",\"shortTime\",\"short\",\"yyyy-MM-dd\",\"dd/MM/yyyy\",\"yyyy-MM-dd HH:mm\"],\"appliesToTypes\":[\"date\",\"datetime\",\"time\"],\"unknownCompatible\":false},{\"id\":\"table.column.boolean-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Boolean label formats for true/false table columns.\",\"options\":[\"true-false\",\"yes-no\",\"active-inactive\",\"on-off\",\"enabled-disabled\",\"custom|Sim|Nao\"],\"appliesToTypes\":[\"boolean\"],\"unknownCompatible\":false},{\"id\":\"table.column.semantic-renderers\",\"targetKind\":\"column\",\"category\":\"renderer\",\"description\":\"Visual renderers for categorical, status or action-oriented table columns.\",\"options\":[\"badge\",\"chip\",\"icon\",\"link\",\"button\",\"progress\",\"avatar\",\"toggle\",\"menu\",\"rating\",\"compose\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.alignment-layout\",\"targetKind\":\"column\",\"category\":\"layout\",\"description\":\"Column alignment and composed cell layout options.\",\"options\":[\"align:start\",\"align:center\",\"align:end\",\"compose:row\",\"compose:column\",\"secondary-line\",\"prefix\",\"suffix\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true}],\"positiveExamples\":[{\"id\":\"make-name-sticky-start\",\"request\":\"Fixe a coluna funcionário no início da tabela\",\"operationId\":\"column.sticky.set\",\"target\":\"funcionario\",\"params\":{\"sticky\":\"start\"},\"isPositive\":true}],\"negativeExamples\":[{\"id\":\"moving-column-to-start-is-not-sticky\",\"request\":\"Mova a coluna salário líquido da tabela para o início\",\"operationId\":\"column.sticky.set\",\"target\":\"salarioLiquido\",\"isPositive\":false}]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "a2733490fe3b7447963db26684d26546d8b0fab0d87f77474a07f69aa1b04980",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 23,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"column.sortable.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Definir ordenação da coluna Effects: merge-by-key. Não permita ordenar pela coluna CPF\",\"scope\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"required\":true},\"inputContract\":{\"required\":[\"sortable\"],\"properties\":[\"sortable\"],\"semanticTerms\":[\"sortable\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"columns[].sortable\"],\"validators\":[{\"validatorId\":\"target-column-exists\",\"level\":\"error\",\"code\":\"TB001\",\"description\":\"A coluna alvo deve existir na configuração.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[{\"id\":\"table.conditional-surface.cell\",\"targetKind\":\"column\",\"category\":\"surface-preset\",\"description\":\"Versioned semantic cell surfaces materialized privately by the table runtime.\",\"options\":[\"success\",\"warning\",\"danger\",\"highlight\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.text-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Text transforms and masks for textual table columns.\",\"options\":[\"none\",\"uppercase\",\"lowercase\",\"titlecase\",\"capitalize\",\"uppercase|truncate|50|...\",\"000.000.000-00\"],\"appliesToTypes\":[\"string\",\"text\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.numeric-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Decimal, currency and percentage formats for numeric table columns.\",\"options\":[\"1.0-0\",\"1.1-1\",\"1.2-2\",\"1.0-3\",\"1.0-0|nosep\",\"BRL|symbol|2\",\"USD|symbol|2\",\"EUR|symbol|2\",\"BRL|code|2\",\"USD|code|0\",\"BRL|symbol|2|nosep\",\"EUR|symbol|2|nosep\",\"1.0-0|x100\",\"1.1-1|x100\",\"1.2-2|x100\"],\"appliesToTypes\":[\"number\",\"currency\",\"percentage\"],\"unknownCompatible\":false},{\"id\":\"table.column.date-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Date and time formats for date-like table columns.\",\"options\":[\"shortDate\",\"mediumDate\",\"longDate\",\"fullDate\",\"MMM/yyyy\",\"shortTime\",\"short\",\"yyyy-MM-dd\",\"dd/MM/yyyy\",\"yyyy-MM-dd HH:mm\"],\"appliesToTypes\":[\"date\",\"datetime\",\"time\"],\"unknownCompatible\":false},{\"id\":\"table.column.boolean-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Boolean label formats for true/false table columns.\",\"options\":[\"true-false\",\"yes-no\",\"active-inactive\",\"on-off\",\"enabled-disabled\",\"custom|Sim|Nao\"],\"appliesToTypes\":[\"boolean\"],\"unknownCompatible\":false},{\"id\":\"table.column.semantic-renderers\",\"targetKind\":\"column\",\"category\":\"renderer\",\"description\":\"Visual renderers for categorical, status or action-oriented table columns.\",\"options\":[\"badge\",\"chip\",\"icon\",\"link\",\"button\",\"progress\",\"avatar\",\"toggle\",\"menu\",\"rating\",\"compose\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.alignment-layout\",\"targetKind\":\"column\",\"category\":\"layout\",\"description\":\"Column alignment and composed cell layout options.\",\"options\":[\"align:start\",\"align:center\",\"align:end\",\"compose:row\",\"compose:column\",\"secondary-line\",\"prefix\",\"suffix\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true}],\"positiveExamples\":[{\"id\":\"disable-cpf-sorting\",\"request\":\"Não permita ordenar pela coluna CPF\",\"operationId\":\"column.sortable.set\",\"target\":\"cpf\",\"params\":{\"sortable\":false},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "dbac3dd589c08228ae56111195ffe66eb8b6a032ce950c68cf520e37d129fece",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 24,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"column.filterable.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Definir filtro da coluna Effects: merge-by-key. Deixe o departamento disponível nos filtros\",\"scope\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"required\":true},\"inputContract\":{\"required\":[\"filterable\"],\"properties\":[\"filterable\"],\"semanticTerms\":[\"filterable\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"columns[].filterable\"],\"validators\":[{\"validatorId\":\"target-column-exists\",\"level\":\"error\",\"code\":\"TB001\",\"description\":\"A coluna alvo deve existir na configuração.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[{\"id\":\"table.conditional-surface.cell\",\"targetKind\":\"column\",\"category\":\"surface-preset\",\"description\":\"Versioned semantic cell surfaces materialized privately by the table runtime.\",\"options\":[\"success\",\"warning\",\"danger\",\"highlight\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.text-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Text transforms and masks for textual table columns.\",\"options\":[\"none\",\"uppercase\",\"lowercase\",\"titlecase\",\"capitalize\",\"uppercase|truncate|50|...\",\"000.000.000-00\"],\"appliesToTypes\":[\"string\",\"text\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.numeric-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Decimal, currency and percentage formats for numeric table columns.\",\"options\":[\"1.0-0\",\"1.1-1\",\"1.2-2\",\"1.0-3\",\"1.0-0|nosep\",\"BRL|symbol|2\",\"USD|symbol|2\",\"EUR|symbol|2\",\"BRL|code|2\",\"USD|code|0\",\"BRL|symbol|2|nosep\",\"EUR|symbol|2|nosep\",\"1.0-0|x100\",\"1.1-1|x100\",\"1.2-2|x100\"],\"appliesToTypes\":[\"number\",\"currency\",\"percentage\"],\"unknownCompatible\":false},{\"id\":\"table.column.date-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Date and time formats for date-like table columns.\",\"options\":[\"shortDate\",\"mediumDate\",\"longDate\",\"fullDate\",\"MMM/yyyy\",\"shortTime\",\"short\",\"yyyy-MM-dd\",\"dd/MM/yyyy\",\"yyyy-MM-dd HH:mm\"],\"appliesToTypes\":[\"date\",\"datetime\",\"time\"],\"unknownCompatible\":false},{\"id\":\"table.column.boolean-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Boolean label formats for true/false table columns.\",\"options\":[\"true-false\",\"yes-no\",\"active-inactive\",\"on-off\",\"enabled-disabled\",\"custom|Sim|Nao\"],\"appliesToTypes\":[\"boolean\"],\"unknownCompatible\":false},{\"id\":\"table.column.semantic-renderers\",\"targetKind\":\"column\",\"category\":\"renderer\",\"description\":\"Visual renderers for categorical, status or action-oriented table columns.\",\"options\":[\"badge\",\"chip\",\"icon\",\"link\",\"button\",\"progress\",\"avatar\",\"toggle\",\"menu\",\"rating\",\"compose\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.alignment-layout\",\"targetKind\":\"column\",\"category\":\"layout\",\"description\":\"Column alignment and composed cell layout options.\",\"options\":[\"align:start\",\"align:center\",\"align:end\",\"compose:row\",\"compose:column\",\"secondary-line\",\"prefix\",\"suffix\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true}],\"positiveExamples\":[{\"id\":\"enable-department-filter\",\"request\":\"Deixe o departamento disponível nos filtros\",\"operationId\":\"column.filterable.set\",\"target\":\"departamento\",\"params\":{\"filterable\":true},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "16196e4ed15f336fa40d332e14898663eab2d99544acf1c9659f1e7c00a7c94b",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 25,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"column.style.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Definir estilo da célula Effects: merge-by-key.\",\"scope\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"required\":true},\"inputContract\":{\"required\":[\"style\"],\"properties\":[\"style\"],\"semanticTerms\":[\"style\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"columns[].style\"],\"validators\":[{\"validatorId\":\"target-column-exists\",\"level\":\"error\",\"code\":\"TB001\",\"description\":\"A coluna alvo deve existir na configuração.\"},{\"validatorId\":\"css-style-safe\",\"level\":\"error\",\"code\":\"TB014\",\"description\":\"Estilos inline devem permanecer em CSS simples e seguro, sem scripts, URLs perigosas ou expressoes dinamicas.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[{\"id\":\"table.conditional-surface.cell\",\"targetKind\":\"column\",\"category\":\"surface-preset\",\"description\":\"Versioned semantic cell surfaces materialized privately by the table runtime.\",\"options\":[\"success\",\"warning\",\"danger\",\"highlight\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.text-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Text transforms and masks for textual table columns.\",\"options\":[\"none\",\"uppercase\",\"lowercase\",\"titlecase\",\"capitalize\",\"uppercase|truncate|50|...\",\"000.000.000-00\"],\"appliesToTypes\":[\"string\",\"text\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.numeric-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Decimal, currency and percentage formats for numeric table columns.\",\"options\":[\"1.0-0\",\"1.1-1\",\"1.2-2\",\"1.0-3\",\"1.0-0|nosep\",\"BRL|symbol|2\",\"USD|symbol|2\",\"EUR|symbol|2\",\"BRL|code|2\",\"USD|code|0\",\"BRL|symbol|2|nosep\",\"EUR|symbol|2|nosep\",\"1.0-0|x100\",\"1.1-1|x100\",\"1.2-2|x100\"],\"appliesToTypes\":[\"number\",\"currency\",\"percentage\"],\"unknownCompatible\":false},{\"id\":\"table.column.date-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Date and time formats for date-like table columns.\",\"options\":[\"shortDate\",\"mediumDate\",\"longDate\",\"fullDate\",\"MMM/yyyy\",\"shortTime\",\"short\",\"yyyy-MM-dd\",\"dd/MM/yyyy\",\"yyyy-MM-dd HH:mm\"],\"appliesToTypes\":[\"date\",\"datetime\",\"time\"],\"unknownCompatible\":false},{\"id\":\"table.column.boolean-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Boolean label formats for true/false table columns.\",\"options\":[\"true-false\",\"yes-no\",\"active-inactive\",\"on-off\",\"enabled-disabled\",\"custom|Sim|Nao\"],\"appliesToTypes\":[\"boolean\"],\"unknownCompatible\":false},{\"id\":\"table.column.semantic-renderers\",\"targetKind\":\"column\",\"category\":\"renderer\",\"description\":\"Visual renderers for categorical, status or action-oriented table columns.\",\"options\":[\"badge\",\"chip\",\"icon\",\"link\",\"button\",\"progress\",\"avatar\",\"toggle\",\"menu\",\"rating\",\"compose\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.alignment-layout\",\"targetKind\":\"column\",\"category\":\"layout\",\"description\":\"Column alignment and composed cell layout options.\",\"options\":[\"align:start\",\"align:center\",\"align:end\",\"compose:row\",\"compose:column\",\"secondary-line\",\"prefix\",\"suffix\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true}],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "20cbd1fb9d633f52112ce11dedc0aec24209e19d087fb77011fe9490d766741d",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 26,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"column.headerStyle.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Definir estilo do cabeçalho Effects: merge-by-key.\",\"scope\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"required\":true},\"inputContract\":{\"required\":[\"headerStyle\"],\"properties\":[\"headerStyle\"],\"semanticTerms\":[\"headerStyle\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"columns[].headerStyle\"],\"validators\":[{\"validatorId\":\"target-column-exists\",\"level\":\"error\",\"code\":\"TB001\",\"description\":\"A coluna alvo deve existir na configuração.\"},{\"validatorId\":\"css-style-safe\",\"level\":\"error\",\"code\":\"TB014\",\"description\":\"Estilos inline devem permanecer em CSS simples e seguro, sem scripts, URLs perigosas ou expressoes dinamicas.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[{\"id\":\"table.conditional-surface.cell\",\"targetKind\":\"column\",\"category\":\"surface-preset\",\"description\":\"Versioned semantic cell surfaces materialized privately by the table runtime.\",\"options\":[\"success\",\"warning\",\"danger\",\"highlight\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.text-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Text transforms and masks for textual table columns.\",\"options\":[\"none\",\"uppercase\",\"lowercase\",\"titlecase\",\"capitalize\",\"uppercase|truncate|50|...\",\"000.000.000-00\"],\"appliesToTypes\":[\"string\",\"text\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.numeric-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Decimal, currency and percentage formats for numeric table columns.\",\"options\":[\"1.0-0\",\"1.1-1\",\"1.2-2\",\"1.0-3\",\"1.0-0|nosep\",\"BRL|symbol|2\",\"USD|symbol|2\",\"EUR|symbol|2\",\"BRL|code|2\",\"USD|code|0\",\"BRL|symbol|2|nosep\",\"EUR|symbol|2|nosep\",\"1.0-0|x100\",\"1.1-1|x100\",\"1.2-2|x100\"],\"appliesToTypes\":[\"number\",\"currency\",\"percentage\"],\"unknownCompatible\":false},{\"id\":\"table.column.date-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Date and time formats for date-like table columns.\",\"options\":[\"shortDate\",\"mediumDate\",\"longDate\",\"fullDate\",\"MMM/yyyy\",\"shortTime\",\"short\",\"yyyy-MM-dd\",\"dd/MM/yyyy\",\"yyyy-MM-dd HH:mm\"],\"appliesToTypes\":[\"date\",\"datetime\",\"time\"],\"unknownCompatible\":false},{\"id\":\"table.column.boolean-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Boolean label formats for true/false table columns.\",\"options\":[\"true-false\",\"yes-no\",\"active-inactive\",\"on-off\",\"enabled-disabled\",\"custom|Sim|Nao\"],\"appliesToTypes\":[\"boolean\"],\"unknownCompatible\":false},{\"id\":\"table.column.semantic-renderers\",\"targetKind\":\"column\",\"category\":\"renderer\",\"description\":\"Visual renderers for categorical, status or action-oriented table columns.\",\"options\":[\"badge\",\"chip\",\"icon\",\"link\",\"button\",\"progress\",\"avatar\",\"toggle\",\"menu\",\"rating\",\"compose\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.alignment-layout\",\"targetKind\":\"column\",\"category\":\"layout\",\"description\":\"Column alignment and composed cell layout options.\",\"options\":[\"align:start\",\"align:center\",\"align:end\",\"compose:row\",\"compose:column\",\"secondary-line\",\"prefix\",\"suffix\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true}],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "407d2942303510c8ed2ffa0d90be98b39a0b60cf7066e1fa2aecf941f8db4f95",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 27,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"column.valueMapping.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Mapear valores exibidos nas células sem renomear a coluna Effects: merge-by-key. Sem mudar o título da coluna Ativo, mostre Sim e Não no lugar dos valores das células Ativo vira Status.\",\"scope\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"required\":true},\"inputContract\":{\"required\":[\"valueMapping\"],\"properties\":[\"valueMapping\"],\"semanticTerms\":[\"valueMapping\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"columns[].valueMapping\"],\"validators\":[{\"validatorId\":\"target-column-exists\",\"level\":\"error\",\"code\":\"TB001\",\"description\":\"A coluna alvo deve existir na configuração.\"},{\"validatorId\":\"value-mapping-valid\",\"level\":\"error\",\"code\":\"TB015\",\"description\":\"O mapeamento de valores deve ser um objeto simples com chaves estaveis e labels serializaveis.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[{\"id\":\"table.conditional-surface.cell\",\"targetKind\":\"column\",\"category\":\"surface-preset\",\"description\":\"Versioned semantic cell surfaces materialized privately by the table runtime.\",\"options\":[\"success\",\"warning\",\"danger\",\"highlight\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.text-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Text transforms and masks for textual table columns.\",\"options\":[\"none\",\"uppercase\",\"lowercase\",\"titlecase\",\"capitalize\",\"uppercase|truncate|50|...\",\"000.000.000-00\"],\"appliesToTypes\":[\"string\",\"text\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.numeric-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Decimal, currency and percentage formats for numeric table columns.\",\"options\":[\"1.0-0\",\"1.1-1\",\"1.2-2\",\"1.0-3\",\"1.0-0|nosep\",\"BRL|symbol|2\",\"USD|symbol|2\",\"EUR|symbol|2\",\"BRL|code|2\",\"USD|code|0\",\"BRL|symbol|2|nosep\",\"EUR|symbol|2|nosep\",\"1.0-0|x100\",\"1.1-1|x100\",\"1.2-2|x100\"],\"appliesToTypes\":[\"number\",\"currency\",\"percentage\"],\"unknownCompatible\":false},{\"id\":\"table.column.date-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Date and time formats for date-like table columns.\",\"options\":[\"shortDate\",\"mediumDate\",\"longDate\",\"fullDate\",\"MMM/yyyy\",\"shortTime\",\"short\",\"yyyy-MM-dd\",\"dd/MM/yyyy\",\"yyyy-MM-dd HH:mm\"],\"appliesToTypes\":[\"date\",\"datetime\",\"time\"],\"unknownCompatible\":false},{\"id\":\"table.column.boolean-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Boolean label formats for true/false table columns.\",\"options\":[\"true-false\",\"yes-no\",\"active-inactive\",\"on-off\",\"enabled-disabled\",\"custom|Sim|Nao\"],\"appliesToTypes\":[\"boolean\"],\"unknownCompatible\":false},{\"id\":\"table.column.semantic-renderers\",\"targetKind\":\"column\",\"category\":\"renderer\",\"description\":\"Visual renderers for categorical, status or action-oriented table columns.\",\"options\":[\"badge\",\"chip\",\"icon\",\"link\",\"button\",\"progress\",\"avatar\",\"toggle\",\"menu\",\"rating\",\"compose\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.alignment-layout\",\"targetKind\":\"column\",\"category\":\"layout\",\"description\":\"Column alignment and composed cell layout options.\",\"options\":[\"align:start\",\"align:center\",\"align:end\",\"compose:row\",\"compose:column\",\"secondary-line\",\"prefix\",\"suffix\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true}],\"positiveExamples\":[{\"id\":\"map-active-status-labels\",\"request\":\"Sem mudar o título da coluna Ativo, mostre Sim e Não no lugar dos valores das células\",\"operationId\":\"column.valueMapping.set\",\"target\":\"ativo\",\"params\":{\"valueMapping\":{\"true\":\"Sim\",\"false\":\"Não\"}},\"isPositive\":true}],\"negativeExamples\":[{\"id\":\"column-header-renaming-is-not-value-mapping\",\"request\":\"Ativo vira Status.\",\"operationId\":\"column.valueMapping.set\",\"target\":\"ativo\",\"isPositive\":false}]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "ca5e2c50bdc3dc6e1b2d9fd95bee8e443d217d419397a1bb64d3004acc93285e",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 28,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"column.order.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Mover coluna inteira sem alterar o conteúdo da célula Altera a posição visual da coluna na sequência. Use order 0 para colocá-la no início; use esta operação para mover ou reordenar ao início, ao fim, antes ou depois de outra coluna. Não fixa a coluna durante a rolagem; essa é a responsabilidade de column.sticky.set. Effects: compile-domain-patch. Mover a coluna Foto inteira para antes da coluna Código, mantendo as duas colunas separadas e sem alterar suas células Mova a coluna salário líquido da tabela para o início Fixe a coluna funcionário no início durante a rolagem horizontal\",\"scope\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"required\":true},\"inputContract\":{\"required\":[\"order\"],\"properties\":[\"order\"],\"semanticTerms\":[\"order\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"columns[].order\"],\"validators\":[{\"validatorId\":\"target-column-exists\",\"level\":\"error\",\"code\":\"TB001\",\"description\":\"A coluna alvo deve existir na configuração.\"},{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[{\"id\":\"table.conditional-surface.cell\",\"targetKind\":\"column\",\"category\":\"surface-preset\",\"description\":\"Versioned semantic cell surfaces materialized privately by the table runtime.\",\"options\":[\"success\",\"warning\",\"danger\",\"highlight\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.text-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Text transforms and masks for textual table columns.\",\"options\":[\"none\",\"uppercase\",\"lowercase\",\"titlecase\",\"capitalize\",\"uppercase|truncate|50|...\",\"000.000.000-00\"],\"appliesToTypes\":[\"string\",\"text\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.numeric-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Decimal, currency and percentage formats for numeric table columns.\",\"options\":[\"1.0-0\",\"1.1-1\",\"1.2-2\",\"1.0-3\",\"1.0-0|nosep\",\"BRL|symbol|2\",\"USD|symbol|2\",\"EUR|symbol|2\",\"BRL|code|2\",\"USD|code|0\",\"BRL|symbol|2|nosep\",\"EUR|symbol|2|nosep\",\"1.0-0|x100\",\"1.1-1|x100\",\"1.2-2|x100\"],\"appliesToTypes\":[\"number\",\"currency\",\"percentage\"],\"unknownCompatible\":false},{\"id\":\"table.column.date-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Date and time formats for date-like table columns.\",\"options\":[\"shortDate\",\"mediumDate\",\"longDate\",\"fullDate\",\"MMM/yyyy\",\"shortTime\",\"short\",\"yyyy-MM-dd\",\"dd/MM/yyyy\",\"yyyy-MM-dd HH:mm\"],\"appliesToTypes\":[\"date\",\"datetime\",\"time\"],\"unknownCompatible\":false},{\"id\":\"table.column.boolean-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Boolean label formats for true/false table columns.\",\"options\":[\"true-false\",\"yes-no\",\"active-inactive\",\"on-off\",\"enabled-disabled\",\"custom|Sim|Nao\"],\"appliesToTypes\":[\"boolean\"],\"unknownCompatible\":false},{\"id\":\"table.column.semantic-renderers\",\"targetKind\":\"column\",\"category\":\"renderer\",\"description\":\"Visual renderers for categorical, status or action-oriented table columns.\",\"options\":[\"badge\",\"chip\",\"icon\",\"link\",\"button\",\"progress\",\"avatar\",\"toggle\",\"menu\",\"rating\",\"compose\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.alignment-layout\",\"targetKind\":\"column\",\"category\":\"layout\",\"description\":\"Column alignment and composed cell layout options.\",\"options\":[\"align:start\",\"align:center\",\"align:end\",\"compose:row\",\"compose:column\",\"secondary-line\",\"prefix\",\"suffix\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true}],\"positiveExamples\":[{\"id\":\"move-whole-photo-column-before-code\",\"request\":\"Mover a coluna Foto inteira para antes da coluna Código, mantendo as duas colunas separadas e sem alterar suas células\",\"operationId\":\"column.order.set\",\"target\":\"foto\",\"params\":{\"order\":0},\"isPositive\":true},{\"id\":\"move-net-salary-column-to-start\",\"request\":\"Mova a coluna salário líquido da tabela para o início\",\"operationId\":\"column.order.set\",\"target\":\"salarioLiquido\",\"params\":{\"order\":0},\"isPositive\":true}],\"negativeExamples\":[{\"id\":\"pinning-column-is-not-reordering\",\"request\":\"Fixe a coluna funcionário no início durante a rolagem horizontal\",\"operationId\":\"column.order.set\",\"target\":\"funcionario\",\"isPositive\":false}]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "3a7ce909ad7497a42abe4456785c09cc606a44034f8864d64fd9a807cfd15467",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 29,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"column.visibility.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Mostrar ou ocultar coluna independente sem excluí-la Altera somente a visibilidade da coluna-alvo. Quando um pedido incorpora o conteúdo de uma coluna em outra célula e também diz que a coluna de origem não deve continuar separada, esta operação complementa a composição do renderer. Effects: merge-by-key. Oculte o ID interno da tabela Na coluna Código, mostrar primeiro a foto e depois o código na mesma célula, sem manter Foto como coluna separada\",\"scope\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"required\":true},\"inputContract\":{\"required\":[\"visible\"],\"properties\":[\"visible\"],\"semanticTerms\":[\"visible\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"columns[].visible\"],\"validators\":[{\"validatorId\":\"target-column-exists\",\"level\":\"error\",\"code\":\"TB001\",\"description\":\"A coluna alvo deve existir na configuração.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[{\"id\":\"table.conditional-surface.cell\",\"targetKind\":\"column\",\"category\":\"surface-preset\",\"description\":\"Versioned semantic cell surfaces materialized privately by the table runtime.\",\"options\":[\"success\",\"warning\",\"danger\",\"highlight\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.text-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Text transforms and masks for textual table columns.\",\"options\":[\"none\",\"uppercase\",\"lowercase\",\"titlecase\",\"capitalize\",\"uppercase|truncate|50|...\",\"000.000.000-00\"],\"appliesToTypes\":[\"string\",\"text\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.numeric-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Decimal, currency and percentage formats for numeric table columns.\",\"options\":[\"1.0-0\",\"1.1-1\",\"1.2-2\",\"1.0-3\",\"1.0-0|nosep\",\"BRL|symbol|2\",\"USD|symbol|2\",\"EUR|symbol|2\",\"BRL|code|2\",\"USD|code|0\",\"BRL|symbol|2|nosep\",\"EUR|symbol|2|nosep\",\"1.0-0|x100\",\"1.1-1|x100\",\"1.2-2|x100\"],\"appliesToTypes\":[\"number\",\"currency\",\"percentage\"],\"unknownCompatible\":false},{\"id\":\"table.column.date-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Date and time formats for date-like table columns.\",\"options\":[\"shortDate\",\"mediumDate\",\"longDate\",\"fullDate\",\"MMM/yyyy\",\"shortTime\",\"short\",\"yyyy-MM-dd\",\"dd/MM/yyyy\",\"yyyy-MM-dd HH:mm\"],\"appliesToTypes\":[\"date\",\"datetime\",\"time\"],\"unknownCompatible\":false},{\"id\":\"table.column.boolean-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Boolean label formats for true/false table columns.\",\"options\":[\"true-false\",\"yes-no\",\"active-inactive\",\"on-off\",\"enabled-disabled\",\"custom|Sim|Nao\"],\"appliesToTypes\":[\"boolean\"],\"unknownCompatible\":false},{\"id\":\"table.column.semantic-renderers\",\"targetKind\":\"column\",\"category\":\"renderer\",\"description\":\"Visual renderers for categorical, status or action-oriented table columns.\",\"options\":[\"badge\",\"chip\",\"icon\",\"link\",\"button\",\"progress\",\"avatar\",\"toggle\",\"menu\",\"rating\",\"compose\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.alignment-layout\",\"targetKind\":\"column\",\"category\":\"layout\",\"description\":\"Column alignment and composed cell layout options.\",\"options\":[\"align:start\",\"align:center\",\"align:end\",\"compose:row\",\"compose:column\",\"secondary-line\",\"prefix\",\"suffix\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true}],\"positiveExamples\":[{\"id\":\"hide-internal-id-column\",\"request\":\"Oculte o ID interno da tabela\",\"operationId\":\"column.visibility.set\",\"target\":\"id\",\"params\":{\"visible\":false},\"isPositive\":true},{\"id\":\"hide-source-column-after-cell-composition\",\"request\":\"Na coluna Código, mostrar primeiro a foto e depois o código na mesma célula, sem manter Foto como coluna separada\",\"operationId\":\"column.visibility.set\",\"target\":\"foto\",\"params\":{\"visible\":false},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "2225337838d2b20bbd2b8b5e1b30b6527042b7d81ed41c4a7e80541051ca5615",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 30,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"column.computed.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Adicionar coluna calculada Effects: append-unique. Criar coluna de idade baseada na data de nascimento\",\"scope\":\"global\",\"target\":{\"kind\":\"computedColumn\",\"resolver\":\"column-by-field\",\"required\":false},\"inputContract\":{\"required\":[\"field\",\"header\",\"expression\"],\"properties\":[\"field\",\"header\",\"expression\",\"outputType\"],\"semanticTerms\":[\"field\",\"header\",\"expression\",\"outputType\",\"string\",\"number\",\"date\",\"boolean\",\"currency\",\"percentage\",\"custom\"]},\"effects\":[\"append-unique\"],\"affectedPaths\":[\"columns[]\"],\"validators\":[{\"validatorId\":\"column-field-unique\",\"level\":\"error\",\"code\":\"TB002\",\"description\":\"O identificador técnico da coluna (field) deve ser único.\"},{\"validatorId\":\"computed-expression-valid\",\"level\":\"error\",\"code\":\"TB007\",\"description\":\"A expressão de cálculo deve ser um AST Json Logic válido.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"affects-schema-backed-data\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"add-computed-column\",\"request\":\"Criar coluna de idade baseada na data de nascimento\",\"operationId\":\"column.computed.add\",\"params\":{\"field\":\"idade\",\"header\":\"Idade\",\"expression\":{\"yearsSince\":[{\"var\":\"dataNascimento\"}]},\"outputType\":\"number\"},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "049225dcdc98760c5848acd4086afaadd4920a676fa44a60f82ca4662181ace8",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 31,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"column.renderer.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Compor ou definir o conteúdo visual dentro da célula Define ou substitui o renderer raiz da célula. Para mudar somente direção, alinhamento, espaçamento ou quebra de um compose existente, use column.renderer.composeLayout.set. Para mudar somente tamanho, forma ou outra propriedade de um item existente, use column.renderer.composeItem.set. Esta operação não oculta uma coluna de origem; quando o mesmo pedido exige que essa origem deixe de aparecer separadamente, combine-a com column.visibility.set. Effects: merge-object. Na coluna Status, use chip verde quando ativo e chip vermelho quando inativo sem alterar as outras colunas Configurar imagem para um renderizador do tipo ícone Na coluna Código, mostrar primeiro a foto e depois o código na mesma célula, sem manter Foto como coluna separada Transformar a coluna acoes em botao que executa abrir-detalhe Corrija o avatar do funcionário e mantenha o nome como chip\",\"scope\":\"column\",\"target\":{\"kind\":\"renderer\",\"resolver\":\"renderer-in-column\",\"required\":true},\"inputContract\":{\"required\":[\"type\"],\"properties\":[\"type\",\"typeExpr\",\"button\",\"menu\",\"link\",\"progress\",\"badge\",\"chip\",\"icon\",\"image\",\"avatar\",\"toggle\",\"rating\",\"microVisualization\",\"html\",\"compose\"],\"semanticTerms\":[\"type\",\"typeExpr\",\"button\",\"menu\",\"link\",\"progress\",\"badge\",\"chip\",\"icon\",\"image\",\"avatar\",\"toggle\",\"rating\",\"microVisualization\",\"html\",\"compose\",\"button.label\",\"button.labelField\",\"button.icon\",\"button.color\",\"button.variant\",\"button.size\",\"button.ariaLabel\",\"button.disabledCondition\",\"button.action\",\"menu.itemsExpr\",\"menu.ariaLabel\",\"link.text\",\"link.textField\",\"link.href\",\"link.hrefField\",\"link.target\",\"link.rel\",\"progress.valueExpr\",\"progress.color\",\"progress.showLabel\",\"badge.text\",\"badge.textField\",\"badge.color\",\"badge.variant\",\"badge.icon\",\"badge.tooltip\",\"chip.text\",\"chip.textField\",\"chip.color\",\"chip.variant\",\"chip.icon\",\"chip.tooltip\",\"icon.name\",\"icon.nameField\",\"icon.text\",\"icon.textField\",\"icon.prefix\",\"icon.suffix\",\"icon.color\",\"icon.size\",\"icon.ariaLabel\",\"image.src\",\"image.srcField\",\"image.alt\",\"image.altField\",\"image.width\",\"image.height\",\"image.shape\",\"image.fit\",\"image.lazy\",\"avatar.src\",\"avatar.srcField\",\"avatar.alt\",\"avatar.altField\",\"avatar.initialsField\",\"avatar.initialsExpr\",\"avatar.shape\",\"avatar.size\",\"avatar.backgroundColor\",\"avatar.textColor\",\"toggle.stateExpr\",\"toggle.disabledCondition\",\"toggle.ariaLabel\",\"toggle.action\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"columns[].renderer\"],\"validators\":[{\"validatorId\":\"target-column-exists\",\"level\":\"error\",\"code\":\"TB001\",\"description\":\"A coluna alvo deve existir na configuração.\"},{\"validatorId\":\"renderer-type-supported\",\"level\":\"error\",\"code\":\"TB003\",\"description\":\"O tipo de renderizador deve ser suportado pelo componente.\"},{\"validatorId\":\"renderer-config-match\",\"level\":\"error\",\"code\":\"TB004\",\"description\":\"A configuração do renderizador deve corresponder ao tipo selecionado.\"},{\"validatorId\":\"renderer-fields-exist\",\"level\":\"error\",\"code\":\"TB023\",\"description\":\"Todos os campos referenciados pelo renderizador devem existir na configuração atual da tabela.\"},{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"set-active-base-chip-for-status-pair\",\"request\":\"Na coluna Status, use chip verde quando ativo e chip vermelho quando inativo sem alterar as outras colunas\",\"operationId\":\"column.renderer.set\",\"target\":\"ativo\",\"params\":{\"type\":\"chip\",\"chip\":{\"textField\":\"ativo\",\"color\":\"success\",\"variant\":\"filled\"}},\"isPositive\":true},{\"id\":\"compose-photo-and-code-in-code-cell\",\"request\":\"Na coluna Código, mostrar primeiro a foto e depois o código na mesma célula, sem manter Foto como coluna separada\",\"operationId\":\"column.renderer.set\",\"target\":\"codigo\",\"params\":{\"type\":\"compose\",\"compose\":{\"items\":[{\"type\":\"avatar\",\"avatar\":{\"srcField\":\"foto\",\"altField\":\"nome\",\"initialsField\":\"nome\",\"shape\":\"rounded\",\"size\":32}},{\"type\":\"value\",\"field\":\"codigo\"}],\"layout\":{\"direction\":\"row\",\"align\":\"center\",\"gap\":8}}},\"isPositive\":true},{\"id\":\"set-button-renderer\",\"request\":\"Transformar a coluna acoes em botao que executa abrir-detalhe\",\"operationId\":\"column.renderer.set\",\"target\":\"acoes\",\"params\":{\"type\":\"button\",\"button\":{\"label\":\"Abrir\",\"action\":{\"id\":\"abrir-detalhe\"}}},\"isPositive\":true},{\"id\":\"set-avatar-chip-renderer\",\"request\":\"Corrija o avatar do funcionário e mantenha o nome como chip\",\"operationId\":\"column.renderer.set\",\"target\":\"funcionario\",\"params\":{\"type\":\"compose\",\"compose\":{\"items\":[{\"type\":\"avatar\",\"avatar\":{\"srcField\":\"avatarUrl\",\"initialsField\":\"funcionario\",\"shape\":\"circle\",\"backgroundColor\":\"#E3F2FD\",\"textColor\":\"#0D47A1\"}},{\"type\":\"chip\",\"chip\":{\"textField\":\"funcionario\",\"variant\":\"soft\"}}]}},\"isPositive\":true}],\"negativeExamples\":[{\"id\":\"reject-invalid-renderer\",\"request\":\"Configurar imagem para um renderizador do tipo ícone\",\"operationId\":\"column.renderer.set\",\"target\":\"avatar\",\"params\":{\"type\":\"icon\",\"image\":{\"src\":\"...\"}},\"isPositive\":false}]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "b2abc04299e7d0af7a874d48c1607612af71684cbc08e3da808b286fee40c5c5",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 32,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"column.renderer.composeLayout.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Refinar somente o layout de uma célula composta Altera direção, alinhamento, espaçamento, quebra ou ellipsis do layout de renderer.type compose já existente. Preserva o discriminator compose, a ordem, a configuração e todos os itens atuais; não reconstrua os itens para uma mudança somente de layout. Effects: compile-domain-patch. No composto anterior, deixe em duas linhas: foto em cima e código embaixo\",\"scope\":\"column\",\"target\":{\"kind\":\"renderer\",\"resolver\":\"renderer-in-column\",\"required\":true},\"inputContract\":{\"required\":[],\"properties\":[\"gap\",\"direction\",\"align\",\"wrap\",\"ellipsis\"],\"semanticTerms\":[\"gap\",\"direction\",\"align\",\"wrap\",\"ellipsis\",\"row\",\"column\",\"start\",\"center\",\"end\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"columns[].renderer.compose.layout\"],\"validators\":[{\"validatorId\":\"target-column-exists\",\"level\":\"error\",\"code\":\"TB001\",\"description\":\"A coluna alvo deve existir na configuração.\"},{\"validatorId\":\"renderer-compose-exists\",\"level\":\"error\",\"code\":\"TB022\",\"description\":\"O renderer alvo deve ser uma composição existente e conter ao menos um item antes de refinar seu layout.\"},{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"stack-existing-photo-and-code-vertically\",\"request\":\"No composto anterior, deixe em duas linhas: foto em cima e código embaixo\",\"operationId\":\"column.renderer.composeLayout.set\",\"target\":\"codigo\",\"params\":{\"direction\":\"column\"},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "b753ebc94f04dad858274ca0522cd67ab6c80e80d0917315ba535178524d692b",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 33,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"column.renderer.composeItem.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Refinar somente um item existente da célula composta Altera um único item já materializado em renderer.type compose, preservando o discriminator compose, o layout, a ordem e todos os itens irmãos. Use itemType para resolver o item; quando houver mais de um item do mesmo tipo, informe itemField para desambiguar. Effects: compile-domain-patch. Aumente um pouco somente a foto dessa célula composta, sem mudar os outros itens Diminua só essa foto; ela está grande demais, e preserve o restante Deixe somente a foto dessa célula composta circular, sem alterar tamanho, layout ou os outros itens Deixe a foto circular... não, cancela essa parte: quero quadrada com cantos arredondados\",\"scope\":\"column\",\"target\":{\"kind\":\"renderer\",\"resolver\":\"renderer-in-column\",\"required\":true},\"inputContract\":{\"required\":[\"itemType\",\"item\"],\"properties\":[\"itemType\",\"itemField\",\"item\"],\"semanticTerms\":[\"itemType\",\"itemField\",\"item\",\"value\",\"icon\",\"image\",\"badge\",\"link\",\"button\",\"chip\",\"progress\",\"avatar\",\"toggle\",\"menu\",\"rating\",\"html\",\"item.type\",\"item.field\",\"item.textField\",\"item.valueField\",\"item.text\",\"item.emphasis\",\"item.button\",\"item.menu\",\"item.link\",\"item.progress\",\"item.badge\",\"item.chip\",\"item.icon\",\"item.image\",\"item.avatar\",\"item.toggle\",\"item.rating\",\"item.microVisualization\",\"item.html\",\"microVisualization\",\"strong\",\"subtle\",\"item.button.label\",\"item.button.labelField\",\"item.button.icon\",\"item.button.color\",\"item.button.variant\",\"item.button.size\",\"item.button.ariaLabel\",\"item.button.disabledCondition\",\"item.button.action\",\"item.menu.itemsExpr\",\"item.menu.ariaLabel\",\"item.link.text\",\"item.link.textField\",\"item.link.href\",\"item.link.hrefField\",\"item.link.target\",\"item.link.rel\",\"item.progress.valueExpr\",\"item.progress.color\",\"item.progress.showLabel\",\"item.badge.text\",\"item.badge.textField\",\"item.badge.color\",\"item.badge.variant\",\"item.badge.icon\",\"item.badge.tooltip\",\"item.chip.text\",\"item.chip.textField\",\"item.chip.color\",\"item.chip.variant\",\"item.chip.icon\",\"item.chip.tooltip\",\"item.icon.name\",\"item.icon.nameField\",\"item.icon.text\",\"item.icon.textField\",\"item.icon.prefix\",\"item.icon.suffix\",\"item.icon.color\",\"item.icon.size\",\"item.icon.ariaLabel\",\"item.image.src\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"columns[].renderer.compose.items[]\"],\"validators\":[{\"validatorId\":\"target-column-exists\",\"level\":\"error\",\"code\":\"TB001\",\"description\":\"A coluna alvo deve existir na configuração.\"},{\"validatorId\":\"renderer-compose-item-exists\",\"level\":\"error\",\"code\":\"TB021\",\"description\":\"O renderer alvo deve ser compose e conter exatamente um item compatível com itemType e itemField.\"},{\"validatorId\":\"renderer-type-supported\",\"level\":\"error\",\"code\":\"TB003\",\"description\":\"O tipo de renderizador deve ser suportado pelo componente.\"},{\"validatorId\":\"renderer-config-match\",\"level\":\"error\",\"code\":\"TB004\",\"description\":\"A configuração do renderizador deve corresponder ao tipo selecionado.\"},{\"validatorId\":\"renderer-fields-exist\",\"level\":\"error\",\"code\":\"TB023\",\"description\":\"Todos os campos referenciados pelo renderizador devem existir na configuração atual da tabela.\"},{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"grow-photo-inside-existing-compose\",\"request\":\"Aumente um pouco somente a foto dessa célula composta, sem mudar os outros itens\",\"operationId\":\"column.renderer.composeItem.set\",\"target\":\"codigo\",\"params\":{\"itemType\":\"avatar\",\"item\":{\"type\":\"avatar\",\"avatar\":{\"srcField\":\"foto\",\"initialsField\":\"nome\",\"shape\":\"rounded\",\"size\":40}}},\"isPositive\":true},{\"id\":\"shrink-photo-inside-existing-compose\",\"request\":\"Diminua só essa foto; ela está grande demais, e preserve o restante\",\"operationId\":\"column.renderer.composeItem.set\",\"target\":\"codigo\",\"params\":{\"itemType\":\"avatar\",\"item\":{\"type\":\"avatar\",\"avatar\":{\"srcField\":\"foto\",\"initialsField\":\"nome\",\"shape\":\"rounded\",\"size\":24}}},\"isPositive\":true},{\"id\":\"make-photo-circular-inside-existing-compose\",\"request\":\"Deixe somente a foto dessa célula composta circular, sem alterar tamanho, layout ou os outros itens\",\"operationId\":\"column.renderer.composeItem.set\",\"target\":\"codigo\",\"params\":{\"itemType\":\"avatar\",\"item\":{\"type\":\"avatar\",\"avatar\":{\"srcField\":\"foto\",\"initialsField\":\"nome\",\"shape\":\"circle\",\"size\":24}}},\"isPositive\":true},{\"id\":\"set-composed-photo-rounded-square-after-correction\",\"request\":\"Deixe a foto circular... não, cancela essa parte: quero quadrada com cantos arredondados\",\"operationId\":\"column.renderer.composeItem.set\",\"target\":\"codigo\",\"params\":{\"itemType\":\"avatar\",\"item\":{\"type\":\"avatar\",\"avatar\":{\"srcField\":\"foto\",\"initialsField\":\"nome\",\"shape\":\"rounded\",\"size\":24}}},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "fec8ebd0d0565979bffc2514ce5297efe0a64dfee47bee72d6e92ad97d224de5",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 34,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"column.conditionalRenderer.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Adicionar renderizador condicional Effects: append-unique. Mostrar badge vermelho na coluna status se o valor for \\\"atrasado\\\" Na coluna Status, use chip verde quando ativo e chip vermelho quando inativo sem alterar as outras colunas\",\"scope\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"required\":true},\"inputContract\":{\"required\":[\"id\",\"condition\"],\"properties\":[\"id\",\"condition\",\"renderer\",\"tooltip\",\"animation\",\"effects\",\"enabled\",\"description\"],\"semanticTerms\":[\"id\",\"condition\",\"renderer\",\"tooltip\",\"animation\",\"effects\",\"enabled\",\"description\",\"renderer.type\",\"renderer.typeExpr\",\"renderer.button\",\"renderer.menu\",\"renderer.link\",\"renderer.progress\",\"renderer.badge\",\"renderer.chip\",\"renderer.icon\",\"renderer.image\",\"renderer.avatar\",\"renderer.toggle\",\"renderer.rating\",\"renderer.microVisualization\",\"renderer.html\",\"renderer.compose\",\"tooltip.text\",\"tooltip.position\",\"tooltip.bgColor\",\"tooltip.delayMs\",\"animation.enabled\",\"animation.preset\",\"animation.type\",\"animation.durationMs\",\"animation.trigger\",\"animation.repeat\",\"animation.delayMs\",\"animation.intensity\",\"icon\",\"image\",\"badge\",\"link\",\"button\",\"chip\",\"progress\",\"avatar\",\"toggle\",\"menu\",\"rating\",\"microVisualization\",\"html\",\"compose\",\"renderer.button.label\",\"renderer.button.labelField\",\"renderer.button.icon\",\"renderer.button.color\",\"renderer.button.variant\",\"renderer.button.size\",\"renderer.button.ariaLabel\",\"renderer.button.disabledCondition\",\"renderer.button.action\",\"renderer.menu.itemsExpr\",\"renderer.menu.ariaLabel\",\"renderer.link.text\",\"renderer.link.textField\",\"renderer.link.href\",\"renderer.link.hrefField\",\"renderer.link.target\",\"renderer.link.rel\",\"renderer.progress.valueExpr\",\"renderer.progress.color\",\"renderer.progress.showLabel\",\"renderer.badge.text\",\"renderer.badge.textField\",\"renderer.badge.color\",\"renderer.badge.variant\",\"renderer.badge.icon\",\"renderer.badge.tooltip\",\"renderer.chip.text\",\"renderer.chip.textField\",\"renderer.chip.color\",\"renderer.chip.variant\"]},\"effects\":[\"append-unique\"],\"affectedPaths\":[\"columns[].conditionalRenderers[]\",\"columns[].conditionalRenderers[].tooltip\",\"columns[].conditionalRenderers[].animation\",\"columns[].conditionalRenderers[].effects\"],\"validators\":[{\"validatorId\":\"target-column-exists\",\"level\":\"error\",\"code\":\"TB001\",\"description\":\"A coluna alvo deve existir na configuração.\"},{\"validatorId\":\"computed-expression-valid\",\"level\":\"error\",\"code\":\"TB007\",\"description\":\"A expressão de cálculo deve ser um AST Json Logic válido.\"},{\"validatorId\":\"renderer-config-match\",\"level\":\"error\",\"code\":\"TB004\",\"description\":\"A configuração do renderizador deve corresponder ao tipo selecionado.\"},{\"validatorId\":\"renderer-fields-exist\",\"level\":\"error\",\"code\":\"TB023\",\"description\":\"Todos os campos referenciados pelo renderizador devem existir na configuração atual da tabela.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[{\"id\":\"table.conditional-surface.cell\",\"targetKind\":\"column\",\"category\":\"surface-preset\",\"description\":\"Versioned semantic cell surfaces materialized privately by the table runtime.\",\"options\":[\"success\",\"warning\",\"danger\",\"highlight\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.text-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Text transforms and masks for textual table columns.\",\"options\":[\"none\",\"uppercase\",\"lowercase\",\"titlecase\",\"capitalize\",\"uppercase|truncate|50|...\",\"000.000.000-00\"],\"appliesToTypes\":[\"string\",\"text\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.numeric-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Decimal, currency and percentage formats for numeric table columns.\",\"options\":[\"1.0-0\",\"1.1-1\",\"1.2-2\",\"1.0-3\",\"1.0-0|nosep\",\"BRL|symbol|2\",\"USD|symbol|2\",\"EUR|symbol|2\",\"BRL|code|2\",\"USD|code|0\",\"BRL|symbol|2|nosep\",\"EUR|symbol|2|nosep\",\"1.0-0|x100\",\"1.1-1|x100\",\"1.2-2|x100\"],\"appliesToTypes\":[\"number\",\"currency\",\"percentage\"],\"unknownCompatible\":false},{\"id\":\"table.column.date-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Date and time formats for date-like table columns.\",\"options\":[\"shortDate\",\"mediumDate\",\"longDate\",\"fullDate\",\"MMM/yyyy\",\"shortTime\",\"short\",\"yyyy-MM-dd\",\"dd/MM/yyyy\",\"yyyy-MM-dd HH:mm\"],\"appliesToTypes\":[\"date\",\"datetime\",\"time\"],\"unknownCompatible\":false},{\"id\":\"table.column.boolean-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Boolean label formats for true/false table columns.\",\"options\":[\"true-false\",\"yes-no\",\"active-inactive\",\"on-off\",\"enabled-disabled\",\"custom|Sim|Nao\"],\"appliesToTypes\":[\"boolean\"],\"unknownCompatible\":false},{\"id\":\"table.column.semantic-renderers\",\"targetKind\":\"column\",\"category\":\"renderer\",\"description\":\"Visual renderers for categorical, status or action-oriented table columns.\",\"options\":[\"badge\",\"chip\",\"icon\",\"link\",\"button\",\"progress\",\"avatar\",\"toggle\",\"menu\",\"rating\",\"compose\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.alignment-layout\",\"targetKind\":\"column\",\"category\":\"layout\",\"description\":\"Column alignment and composed cell layout options.\",\"options\":[\"align:start\",\"align:center\",\"align:end\",\"compose:row\",\"compose:column\",\"secondary-line\",\"prefix\",\"suffix\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true}],\"positiveExamples\":[{\"id\":\"add-conditional-badge\",\"request\":\"Mostrar badge vermelho na coluna status se o valor for \\\"atrasado\\\"\",\"operationId\":\"column.conditionalRenderer.add\",\"target\":\"status\",\"params\":{\"id\":\"badge-atrasado\",\"condition\":{\"==\":[{\"var\":\"status\"},\"atrasado\"]},\"renderer\":{\"type\":\"badge\",\"badge\":{\"color\":\"warn\",\"variant\":\"filled\"}}},\"isPositive\":true},{\"id\":\"add-inactive-conditional-chip\",\"request\":\"Na coluna Status, use chip verde quando ativo e chip vermelho quando inativo sem alterar as outras colunas\",\"operationId\":\"column.conditionalRenderer.add\",\"target\":\"ativo\",\"params\":{\"id\":\"chip-inativo\",\"condition\":{\"==\":[{\"var\":\"ativo\"},false]},\"renderer\":{\"type\":\"chip\",\"chip\":{\"text\":\"Inativo\",\"color\":\"warn\",\"variant\":\"filled\"}}},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "af2f24f496d393dac415719dd4601b608939bed56b1848e3672f98266ab82198",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 35,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"column.conditionalStyle.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Adicionar regra de estilo condicional na coluna Effects: append-unique. Destacar a coluna status quando o valor estiver bloqueado Para salários menores que 30000, use fundo laranja claro\",\"scope\":\"column\",\"target\":{\"kind\":\"rule\",\"resolver\":\"style-rule-in-column-or-row\",\"required\":true},\"inputContract\":{\"required\":[\"id\",\"condition\"],\"properties\":[\"id\",\"condition\",\"surfacePresetRef\",\"cssClass\",\"style\",\"tooltip\",\"effects\",\"description\"],\"semanticTerms\":[\"id\",\"condition\",\"surfacePresetRef\",\"cssClass\",\"style\",\"tooltip\",\"effects\",\"description\",\"surfacePresetRef.id\",\"surfacePresetRef.catalogVersion\",\"style.background\",\"style.backgroundColor\",\"style.background-color\",\"style.color\",\"style.fontWeight\",\"style.font-weight\",\"style.fontStyle\",\"style.font-style\",\"style.textDecoration\",\"style.text-decoration\",\"style.textTransform\",\"style.text-transform\",\"style.opacity\",\"style.border\",\"style.borderLeft\",\"style.border-left\",\"style.borderRight\",\"style.border-right\",\"style.borderTop\",\"style.border-top\",\"style.borderBottom\",\"style.border-bottom\",\"success\",\"warning\",\"danger\",\"highlight\",\"0.2.0\",\"effects.id\",\"effects.scope\",\"effects.description\",\"effects.estilo\",\"effects.layout\",\"effects.iconBadge\",\"effects.background\",\"effects.animation\",\"effects.tooltip\",\"effects.cssClass\",\"effects.inlineStyle\",\"cell\",\"row\",\"column\",\"table\",\"effects.estilo.color\",\"effects.estilo.bgColor\",\"effects.estilo.bold\",\"effects.estilo.italic\",\"effects.estilo.underline\",\"effects.estilo.transform\",\"effects.estilo.opacity\",\"effects.estilo.fontScale\",\"effects.layout.border\",\"effects.layout.borderColor\",\"effects.layout.borderWidth\",\"effects.layout.padding\",\"effects.layout.align\",\"effects.layout.elevation\",\"effects.iconBadge.icon\",\"effects.iconBadge.iconColor\",\"effects.iconBadge.iconPos\",\"effects.iconBadge.badgeText\",\"effects.iconBadge.badgeStyle\",\"effects.iconBadge.badgeColor\",\"effects.background.color\",\"effects.background.gradient\",\"effects.background.alpha\",\"effects.background.blur\",\"effects.animation.enabled\",\"effects.animation.preset\",\"effects.animation.type\",\"effects.animation.durationMs\"]},\"effects\":[\"append-unique\"],\"affectedPaths\":[\"columns[].conditionalStyles[]\",\"columns[].conditionalStyles[].effects\",\"columns[].conditionalStyles[].tooltip\"],\"validators\":[{\"validatorId\":\"target-column-exists\",\"level\":\"error\",\"code\":\"TB001\",\"description\":\"A coluna alvo deve existir na configuração.\"},{\"validatorId\":\"computed-expression-valid\",\"level\":\"error\",\"code\":\"TB007\",\"description\":\"A expressão de cálculo deve ser um AST Json Logic válido.\"},{\"validatorId\":\"conditional-style-valid\",\"level\":\"error\",\"code\":\"TB016\",\"description\":\"Regras condicionais devem ter id estavel, condition Json Logic e ao menos cssClass, style ou effects.\"},{\"validatorId\":\"conditional-surface-accessible\",\"level\":\"error\",\"code\":\"TB020\",\"description\":\"Foreground explícito deve atingir contraste AA em fundo sólido; fundo sem foreground é derivado pelo runtime e composições não determinísticas exigem diagnóstico.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"add-column-conditional-style\",\"request\":\"Destacar a coluna status quando o valor estiver bloqueado\",\"operationId\":\"column.conditionalStyle.add\",\"target\":\"status\",\"params\":{\"id\":\"status-bloqueado\",\"condition\":{\"==\":[{\"var\":\"status\"},\"bloqueado\"]},\"cssClass\":\"status-bloqueado\"},\"isPositive\":true},{\"id\":\"style-low-salary-cell\",\"request\":\"Para salários menores que 30000, use fundo laranja claro\",\"operationId\":\"column.conditionalStyle.add\",\"target\":\"salario\",\"params\":{\"id\":\"salario-baixo-laranja\",\"condition\":{\"<\":[{\"var\":\"salario\"},30000]},\"style\":{\"backgroundColor\":\"#FFF3E0\",\"color\":\"#8A4B00\"},\"tooltip\":{\"text\":\"Salário abaixo do recorte configurado\",\"position\":\"top\"}},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "dd66f0d9074589c493260f430096258ce4b3b1ab910ddfc992a5935bbbfbfaea",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 36,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"row.styleRule.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Adicionar destaque visual condicional à linha Effects: append-unique. Destaque de vermelho as linhas com salário acima de 30 mil\",\"scope\":\"global\",\"target\":{\"kind\":\"rule\",\"resolver\":\"style-rule-in-column-or-row\",\"required\":false},\"inputContract\":{\"required\":[\"id\",\"condition\"],\"properties\":[\"id\",\"condition\",\"surfacePresetRef\",\"style\",\"cssClass\",\"effects\",\"description\"],\"semanticTerms\":[\"id\",\"condition\",\"surfacePresetRef\",\"style\",\"cssClass\",\"effects\",\"description\",\"surfacePresetRef.id\",\"surfacePresetRef.catalogVersion\",\"success\",\"warning\",\"danger\",\"highlight\",\"0.2.0\",\"effects.id\",\"effects.scope\",\"effects.description\",\"effects.estilo\",\"effects.layout\",\"effects.iconBadge\",\"effects.background\",\"effects.animation\",\"effects.tooltip\",\"effects.cssClass\",\"effects.inlineStyle\",\"cell\",\"row\",\"column\",\"table\",\"effects.estilo.color\",\"effects.estilo.bgColor\",\"effects.estilo.bold\",\"effects.estilo.italic\",\"effects.estilo.underline\",\"effects.estilo.transform\",\"effects.estilo.opacity\",\"effects.estilo.fontScale\",\"effects.layout.border\",\"effects.layout.borderColor\",\"effects.layout.borderWidth\",\"effects.layout.padding\",\"effects.layout.align\",\"effects.layout.elevation\",\"effects.iconBadge.icon\",\"effects.iconBadge.iconColor\",\"effects.iconBadge.iconPos\",\"effects.iconBadge.badgeText\",\"effects.iconBadge.badgeStyle\",\"effects.iconBadge.badgeColor\",\"effects.background.color\",\"effects.background.gradient\",\"effects.background.alpha\",\"effects.background.blur\",\"effects.animation.enabled\",\"effects.animation.preset\",\"effects.animation.type\",\"effects.animation.durationMs\",\"effects.animation.trigger\",\"effects.animation.repeat\",\"effects.animation.delayMs\",\"effects.animation.intensity\",\"effects.tooltip.text\",\"effects.tooltip.position\",\"effects.tooltip.bgColor\",\"effects.tooltip.delayMs\",\"uppercase\",\"lowercase\",\"capitalize\",\"none\",\"left\",\"right\",\"top\",\"bottom\",\"all\",\"start\",\"center\",\"end\",\"before\",\"after\",\"overlay\"]},\"effects\":[\"append-unique\"],\"affectedPaths\":[\"rowConditionalStyles[]\",\"rowConditionalStyles[].effects\"],\"validators\":[{\"validatorId\":\"computed-expression-valid\",\"level\":\"error\",\"code\":\"TB007\",\"description\":\"A expressão de cálculo deve ser um AST Json Logic válido.\"},{\"validatorId\":\"conditional-surface-accessible\",\"level\":\"error\",\"code\":\"TB020\",\"description\":\"Foreground explícito deve atingir contraste AA em fundo sólido; fundo sem foreground é derivado pelo runtime e composições não determinísticas exigem diagnóstico.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"highlight-high-salary-row-red\",\"request\":\"Destaque de vermelho as linhas com salário acima de 30 mil\",\"operationId\":\"row.styleRule.add\",\"params\":{\"id\":\"salario-acima-30000\",\"condition\":{\">\":[{\"var\":\"salario\"},30000]},\"effects\":[{\"id\":\"salario-alto-destaque\",\"scope\":\"row\",\"description\":\"Destaque visual para salários acima de R$ 30.000.\",\"estilo\":{\"color\":\"#B42318\",\"bold\":true},\"background\":{\"color\":\"#FDECEC\"},\"layout\":{\"border\":\"left\",\"borderColor\":\"#D92D20\",\"borderWidth\":4}}],\"description\":\"Destaca a linha inteira sem alterar dados, filtros ou paginação.\"},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "811caf7dd4e960644e6ede75a35c06d372075577dd0174c5a84f4bde39e6f96f",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 37,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"row.styleRule.update\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Atualizar destaque visual condicional existente da linha Effects: merge-by-key. Agora troque vermelho por laranja\",\"scope\":\"rule\",\"target\":{\"kind\":\"rule\",\"resolver\":\"style-rule-in-column-or-row\",\"required\":true},\"inputContract\":{\"required\":[],\"properties\":[\"condition\",\"surfacePresetRef\",\"style\",\"cssClass\",\"effects\",\"description\"],\"semanticTerms\":[\"condition\",\"surfacePresetRef\",\"style\",\"cssClass\",\"effects\",\"description\",\"surfacePresetRef.id\",\"surfacePresetRef.catalogVersion\",\"success\",\"warning\",\"danger\",\"highlight\",\"0.2.0\",\"effects.id\",\"effects.scope\",\"effects.description\",\"effects.estilo\",\"effects.layout\",\"effects.iconBadge\",\"effects.background\",\"effects.animation\",\"effects.tooltip\",\"effects.cssClass\",\"effects.inlineStyle\",\"cell\",\"row\",\"column\",\"table\",\"effects.estilo.color\",\"effects.estilo.bgColor\",\"effects.estilo.bold\",\"effects.estilo.italic\",\"effects.estilo.underline\",\"effects.estilo.transform\",\"effects.estilo.opacity\",\"effects.estilo.fontScale\",\"effects.layout.border\",\"effects.layout.borderColor\",\"effects.layout.borderWidth\",\"effects.layout.padding\",\"effects.layout.align\",\"effects.layout.elevation\",\"effects.iconBadge.icon\",\"effects.iconBadge.iconColor\",\"effects.iconBadge.iconPos\",\"effects.iconBadge.badgeText\",\"effects.iconBadge.badgeStyle\",\"effects.iconBadge.badgeColor\",\"effects.background.color\",\"effects.background.gradient\",\"effects.background.alpha\",\"effects.background.blur\",\"effects.animation.enabled\",\"effects.animation.preset\",\"effects.animation.type\",\"effects.animation.durationMs\",\"effects.animation.trigger\",\"effects.animation.repeat\",\"effects.animation.delayMs\",\"effects.animation.intensity\",\"effects.tooltip.text\",\"effects.tooltip.position\",\"effects.tooltip.bgColor\",\"effects.tooltip.delayMs\",\"uppercase\",\"lowercase\",\"capitalize\",\"none\",\"left\",\"right\",\"top\",\"bottom\",\"all\",\"start\",\"center\",\"end\",\"before\",\"after\",\"overlay\",\"solid\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"rowConditionalStyles[]\",\"rowConditionalStyles[].condition\",\"rowConditionalStyles[].surfacePresetRef\",\"rowConditionalStyles[].style\",\"rowConditionalStyles[].cssClass\",\"rowConditionalStyles[].effects\",\"rowConditionalStyles[].description\"],\"validators\":[{\"validatorId\":\"computed-expression-valid\",\"level\":\"error\",\"code\":\"TB007\",\"description\":\"A expressão de cálculo deve ser um AST Json Logic válido.\"},{\"validatorId\":\"conditional-surface-accessible\",\"level\":\"error\",\"code\":\"TB020\",\"description\":\"Foreground explícito deve atingir contraste AA em fundo sólido; fundo sem foreground é derivado pelo runtime e composições não determinísticas exigem diagnóstico.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"change-high-salary-row-highlight-to-orange\",\"request\":\"Agora troque vermelho por laranja\",\"operationId\":\"row.styleRule.update\",\"target\":\"salario-acima-30000\",\"params\":{\"description\":\"Destaca em laranja a linha inteira para salários acima de R$ 30.000.\",\"effects\":[{\"id\":\"salario-alto-destaque\",\"scope\":\"row\",\"description\":\"Destaque visual laranja para salários acima de R$ 30.000.\",\"estilo\":{\"color\":\"#9A3412\",\"bold\":true},\"background\":{\"color\":\"#FFEDD5\"},\"layout\":{\"border\":\"left\",\"borderColor\":\"#F97316\",\"borderWidth\":4}}]},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "a217af52110b4481365667edb90c08f12b4c4e9792b2f0edb6d4efc0b53364ce",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 38,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"row.conditionalRenderer.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Adicionar renderizador condicional de linha Effects: append-unique. Anime suavemente as linhas com salário acima de 30000\",\"scope\":\"global\",\"target\":{\"kind\":\"conditionalRenderer\",\"resolver\":\"conditional-renderer-in-row\",\"required\":false},\"inputContract\":{\"required\":[\"id\",\"condition\"],\"properties\":[\"id\",\"condition\",\"tooltip\",\"animation\",\"effects\",\"enabled\",\"description\"],\"semanticTerms\":[\"id\",\"condition\",\"tooltip\",\"animation\",\"effects\",\"enabled\",\"description\",\"animation.enabled\",\"animation.preset\",\"animation.type\",\"animation.durationMs\",\"animation.trigger\",\"animation.repeat\",\"animation.delayMs\",\"animation.intensity\",\"info-soft\",\"success-confirm\",\"warning-attention\",\"critical-alert\",\"audit-review\",\"sync-pending\",\"pulse-soft\",\"fade-soft\",\"sla-warning\",\"sla-breach\",\"risk-elevated\",\"risk-critical\",\"audit-warning\",\"sync-warning\",\"pulse\",\"blink\",\"grow\",\"fade\",\"slide-in\",\"border-pulse\",\"onChange\",\"onAppear\",\"onHover\",\"onConditionEnter\",\"onConditionExit\",\"onDataRefresh\",\"subtle\",\"normal\",\"strong\",\"effects.id\",\"effects.scope\",\"effects.description\",\"effects.estilo\",\"effects.layout\",\"effects.iconBadge\",\"effects.background\",\"effects.animation\",\"effects.tooltip\",\"effects.cssClass\",\"effects.inlineStyle\",\"cell\",\"row\",\"column\",\"table\",\"effects.estilo.color\",\"effects.estilo.bgColor\",\"effects.estilo.bold\",\"effects.estilo.italic\",\"effects.estilo.underline\",\"effects.estilo.transform\",\"effects.estilo.opacity\",\"effects.estilo.fontScale\",\"effects.layout.border\",\"effects.layout.borderColor\",\"effects.layout.borderWidth\",\"effects.layout.padding\",\"effects.layout.align\",\"effects.layout.elevation\",\"effects.iconBadge.icon\",\"effects.iconBadge.iconColor\",\"effects.iconBadge.iconPos\",\"effects.iconBadge.badgeText\",\"effects.iconBadge.badgeStyle\",\"effects.iconBadge.badgeColor\",\"effects.background.color\"]},\"effects\":[\"append-unique\"],\"affectedPaths\":[\"rowConditionalRenderers[]\",\"rowConditionalRenderers[].condition\",\"rowConditionalRenderers[].tooltip\",\"rowConditionalRenderers[].animation\",\"rowConditionalRenderers[].effects\"],\"validators\":[{\"validatorId\":\"computed-expression-valid\",\"level\":\"error\",\"code\":\"TB007\",\"description\":\"A expressão de cálculo deve ser um AST Json Logic válido.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"animate-high-salary-row\",\"request\":\"Anime suavemente as linhas com salário acima de 30000\",\"operationId\":\"row.conditionalRenderer.add\",\"params\":{\"id\":\"salario-alto-pulse\",\"condition\":{\">\":[{\"var\":\"salario\"},30000]},\"animation\":{\"preset\":\"pulse-soft\",\"trigger\":\"onAppear\",\"intensity\":\"subtle\",\"repeat\":\"once\",\"durationMs\":1200},\"description\":\"Destaca linhas de salário alto sem alterar os dados.\"},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "1a89c828d8cdd90d055d9aba1520bddf21c0df4d37934eaab6726638c235a4be",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 39,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"toolbar.visibility.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Definir visibilidade da toolbar Effects: merge-object.\",\"scope\":\"global\",\"target\":{\"kind\":\"toolbar\",\"resolver\":\"toolbar-config\",\"required\":false},\"inputContract\":{\"required\":[\"visible\"],\"properties\":[\"visible\"],\"semanticTerms\":[\"visible\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"toolbar.visible\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "ae3da026c5f320230af9d17ed05e1572275b4c00ed7586a2a27faf623be47e77",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 40,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"toolbar.action.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Adicionar ação na toolbar Effects: append-unique.\",\"scope\":\"global\",\"target\":{\"kind\":\"toolbarAction\",\"resolver\":\"action-in-toolbar-config\",\"required\":false},\"inputContract\":{\"required\":[\"id\",\"label\",\"action\"],\"properties\":[\"id\",\"label\",\"action\",\"icon\",\"type\",\"visibleWhen\",\"globalAction\",\"effects\"],\"semanticTerms\":[\"id\",\"label\",\"action\",\"icon\",\"type\",\"visibleWhen\",\"globalAction\",\"effects\",\"button\",\"menu\",\"globalAction.actionId\",\"globalAction.payload\",\"globalAction.payloadExpr\",\"toast.success\",\"toast.error\",\"dialog.alert\",\"dialog.open\",\"navigation.openExternal\",\"navigation.openRoute\",\"api.post\",\"api.patch\",\"effects.kind\",\"effects.globalAction\",\"global-action\",\"effects.globalAction.actionId\",\"effects.globalAction.payload\",\"effects.globalAction.payloadExpr\"]},\"effects\":[\"append-unique\"],\"affectedPaths\":[\"toolbar.actions[]\",\"toolbar.actions[].visibleWhen\",\"toolbar.actions[].effects\"],\"validators\":[{\"validatorId\":\"toolbar-action-id-unique\",\"level\":\"error\",\"code\":\"TB010\",\"description\":\"O id da ação de toolbar deve ser único em toolbar.actions[]. O efeito append-unique usa este id como chave de deduplicação.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "86230327e71ca1f6b5a9868c9fef99c815965f01f796da24b86dec6bcf11199d",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 41,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"rowAction.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Adicionar ação de linha Effects: append-unique. Adicionar botão de excluir na linha Adicionar botão de linha para abrir detalhe com navegação interna\",\"scope\":\"global\",\"target\":{\"kind\":\"rowAction\",\"resolver\":\"action-in-row-config\",\"required\":false},\"inputContract\":{\"required\":[\"id\",\"label\",\"action\"],\"properties\":[\"id\",\"label\",\"action\",\"icon\",\"color\",\"visibleWhen\",\"disabledWhen\",\"recordSurface\",\"globalAction\",\"effects\"],\"semanticTerms\":[\"id\",\"label\",\"action\",\"icon\",\"color\",\"visibleWhen\",\"disabledWhen\",\"recordSurface\",\"globalAction\",\"effects\",\"globalAction.actionId\",\"globalAction.payload\",\"globalAction.payloadExpr\",\"toast.success\",\"toast.error\",\"dialog.alert\",\"dialog.open\",\"navigation.openExternal\",\"navigation.openRoute\",\"api.post\",\"api.patch\",\"effects.kind\",\"effects.globalAction\",\"global-action\",\"effects.globalAction.actionId\",\"effects.globalAction.payload\",\"effects.globalAction.payloadExpr\"]},\"effects\":[\"append-unique\"],\"affectedPaths\":[\"actions.row.actions[]\",\"actions.row.actions[].visibleWhen\",\"actions.row.actions[].disabledWhen\",\"actions.row.actions[].effects\"],\"validators\":[{\"validatorId\":\"row-action-id-unique\",\"level\":\"error\",\"code\":\"TB011\",\"description\":\"O id da row action deve ser único em actions.row.actions[]. O efeito append-unique usa este id como chave de deduplicação.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"add-row-action\",\"request\":\"Adicionar botão de excluir na linha\",\"operationId\":\"rowAction.add\",\"params\":{\"id\":\"delete\",\"label\":\"Excluir\",\"action\":\"delete\",\"icon\":\"delete\",\"color\":\"warn\"},\"isPositive\":true},{\"id\":\"add-row-action-open-route\",\"request\":\"Adicionar botão de linha para abrir detalhe com navegação interna\",\"operationId\":\"rowAction.add\",\"params\":{\"id\":\"details\",\"label\":\"Detalhes\",\"action\":\"navigation.openRoute\",\"icon\":\"open_in_new\",\"globalAction\":{\"actionId\":\"navigation.openRoute\",\"payload\":{\"path\":\"/clientes/detalhe\",\"query\":{\"id\":\"${row.id}\"}}}},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "19195196df23f22c5106e77b2fd28d2bdaea1864a2cfaaf6665e8ba225b7daae",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 42,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"bulkAction.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Adicionar ação em lote Effects: append-unique.\",\"scope\":\"global\",\"target\":{\"kind\":\"bulkAction\",\"resolver\":\"action-in-bulk-config\",\"required\":false},\"inputContract\":{\"required\":[\"id\",\"label\",\"action\"],\"properties\":[\"id\",\"label\",\"action\",\"icon\",\"color\",\"globalAction\",\"effects\"],\"semanticTerms\":[\"id\",\"label\",\"action\",\"icon\",\"color\",\"globalAction\",\"effects\",\"globalAction.actionId\",\"globalAction.payload\",\"globalAction.payloadExpr\",\"toast.success\",\"toast.error\",\"dialog.alert\",\"dialog.open\",\"navigation.openExternal\",\"navigation.openRoute\",\"api.post\",\"api.patch\",\"effects.kind\",\"effects.globalAction\",\"global-action\",\"effects.globalAction.actionId\",\"effects.globalAction.payload\",\"effects.globalAction.payloadExpr\"]},\"effects\":[\"append-unique\"],\"affectedPaths\":[\"actions.bulk.actions[]\",\"actions.bulk.actions[].effects\"],\"validators\":[{\"validatorId\":\"bulk-action-id-unique\",\"level\":\"error\",\"code\":\"TB017\",\"description\":\"O id da ação em lote deve ser único em actions.bulk.actions[]. O efeito append-unique usa este id como chave de deduplicação.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "e9d56ab1daa814a5c0c0e4fb0eb1704c64b22b7b61e3cb65f9a9c2ed85eb9115",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 43,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"export.enabled.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Habilitar exportação Effects: merge-object. Habilitar exportação para Excel e PDF\",\"scope\":\"global\",\"target\":{\"kind\":\"export\",\"resolver\":\"export-config\",\"required\":false},\"inputContract\":{\"required\":[\"enabled\"],\"properties\":[\"enabled\",\"formats\"],\"semanticTerms\":[\"enabled\",\"formats\",\"excel\",\"pdf\",\"csv\",\"json\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"export.enabled\",\"export.formats\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"enable-export\",\"request\":\"Habilitar exportação para Excel e PDF\",\"operationId\":\"export.enabled.set\",\"params\":{\"enabled\":true,\"formats\":[\"excel\",\"pdf\"]},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "eeeaddc215cefa02921ab1026a59aa6275b2bb200b59b7d8c8841e2d61ac34c5",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 44,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"filter.advanced.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar filtros avançados Effects: set-value, merge-object. Ative filtros avançados e deixe CPF e departamento sempre visíveis\",\"scope\":\"global\",\"target\":{\"kind\":\"filter\",\"resolver\":\"filter-config\",\"required\":false},\"inputContract\":{\"required\":[\"enabled\"],\"properties\":[\"enabled\",\"queryBuilder\",\"savePresets\",\"settings\"],\"semanticTerms\":[\"enabled\",\"queryBuilder\",\"savePresets\",\"settings\",\"settings.mode\",\"settings.showAdvanced\",\"settings.allowSaveTags\",\"settings.tags\",\"settings.alwaysVisibleFields\",\"settings.selectedFieldIds\",\"settings.alwaysVisibleFieldMetadataOverrides\",\"settings.changeDebounceMs\",\"settings.useInlineSearchableSelectVariant\",\"settings.useInlineRangeVariant\",\"settings.useInlineDateVariant\",\"settings.useInlineDateRangeVariant\",\"filter\",\"settings.tags.id\",\"settings.tags.label\",\"settings.tags.patch\"]},\"effects\":[\"set-value\",\"merge-object\"],\"affectedPaths\":[\"behavior.filtering.enabled\",\"behavior.filtering.advancedFilters.enabled\",\"behavior.filtering.advancedFilters.settings\"],\"validators\":[{\"validatorId\":\"filter-fields-exist\",\"level\":\"error\",\"code\":\"TB018\",\"description\":\"Os campos de filtro avançado devem existir no schema request do filtro governado.\"},{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"enable-advanced-filters-human\",\"request\":\"Ative filtros avançados e deixe CPF e departamento sempre visíveis\",\"operationId\":\"filter.advanced.configure\",\"params\":{\"enabled\":true,\"queryBuilder\":true,\"savePresets\":true,\"settings\":{\"mode\":\"filter\",\"showAdvanced\":true,\"alwaysVisibleFields\":[\"cpf\",\"departamento\"]}},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "7768880a036ea13bb80ea8e1dfe3a27b1d7ec2997d368616fe187470fe736682",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 45,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"filter.advanced.fields.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Adicionar campos aos filtros avançados Effects: set-value, merge-object. Inclua também Salário nesses filtros\",\"scope\":\"global\",\"target\":{\"kind\":\"filter\",\"resolver\":\"filter-config\",\"required\":false},\"inputContract\":{\"required\":[\"fields\"],\"properties\":[\"fields\",\"selected\",\"alwaysVisible\"],\"semanticTerms\":[\"fields\",\"selected\",\"alwaysVisible\"]},\"effects\":[\"set-value\",\"merge-object\"],\"affectedPaths\":[\"behavior.filtering.enabled\",\"behavior.filtering.advancedFilters.enabled\",\"behavior.filtering.advancedFilters.settings\"],\"validators\":[{\"validatorId\":\"filter-fields-exist\",\"level\":\"error\",\"code\":\"TB018\",\"description\":\"Os campos de filtro avançado devem existir no schema request do filtro governado.\"},{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"add-salary-to-advanced-filters-human\",\"request\":\"Inclua também Salário nesses filtros\",\"operationId\":\"filter.advanced.fields.add\",\"params\":{\"fields\":[\"salario\"],\"selected\":true,\"alwaysVisible\":true},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "cfe060f182b01c08d217a54b50d62b874c53aded1ee76436d56f85e531ee87cd",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 46,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"filter.advanced.fields.remove\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Remover campos dos filtros avançados Effects: set-value, merge-object. Agora remova Ativo desses filtros\",\"scope\":\"global\",\"target\":{\"kind\":\"filter\",\"resolver\":\"filter-config\",\"required\":false},\"inputContract\":{\"required\":[\"fields\"],\"properties\":[\"fields\",\"selected\",\"alwaysVisible\"],\"semanticTerms\":[\"fields\",\"selected\",\"alwaysVisible\"]},\"effects\":[\"set-value\",\"merge-object\"],\"affectedPaths\":[\"behavior.filtering.enabled\",\"behavior.filtering.advancedFilters.enabled\",\"behavior.filtering.advancedFilters.settings\"],\"validators\":[{\"validatorId\":\"filter-fields-exist\",\"level\":\"error\",\"code\":\"TB018\",\"description\":\"Os campos de filtro avançado devem existir no schema request do filtro governado.\"},{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"remove-active-from-advanced-filters-human\",\"request\":\"Agora remova Ativo desses filtros\",\"operationId\":\"filter.advanced.fields.remove\",\"params\":{\"fields\":[\"ativo\"],\"selected\":true,\"alwaysVisible\":true},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "a43c5e127b427ee9d1dfc317254e3b698d1277af053d29d14c41dbe07ca93398",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 47,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"grouping.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Definir agrupamento Effects: merge-object. Agrupar a tabela por departamento\",\"scope\":\"global\",\"target\":{\"kind\":\"grouping\",\"resolver\":\"grouping-config\",\"required\":false},\"inputContract\":{\"required\":[\"enabled\"],\"properties\":[\"enabled\",\"fields\",\"expanded\"],\"semanticTerms\":[\"enabled\",\"fields\",\"expanded\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"behavior.grouping\"],\"validators\":[{\"validatorId\":\"grouping-fields-exist\",\"level\":\"error\",\"code\":\"TB005\",\"description\":\"Os campos de agrupamento devem existir na definição de colunas.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"group-by-field\",\"request\":\"Agrupar a tabela por departamento\",\"operationId\":\"grouping.set\",\"params\":{\"enabled\":true,\"fields\":[\"departamento\"]},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "2a35dfcf63488c99e0c7bec1447925d581fd7631e20df11a93908c7b474174ef",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 48,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"selection.mode.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Definir modo de seleção Effects: merge-object.\",\"scope\":\"global\",\"target\":{\"kind\":\"selection\",\"resolver\":\"selection-config\",\"required\":false},\"inputContract\":{\"required\":[\"enabled\",\"type\"],\"properties\":[\"enabled\",\"type\",\"mode\"],\"semanticTerms\":[\"enabled\",\"type\",\"mode\",\"single\",\"multiple\",\"checkbox\",\"row\",\"both\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"behavior.selection.enabled\",\"behavior.selection.type\",\"behavior.selection.mode\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "55d820aeb3a9b8032c88043d52cf4f0f0797ba9dca94d277d16b32db0a49e000",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 49,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"appearance.density.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Definir densidade Effects: merge-object. Deixe a tabela mais compacta\",\"scope\":\"global\",\"target\":{\"kind\":\"appearance\",\"resolver\":\"appearance-config\",\"required\":false},\"inputContract\":{\"required\":[\"density\"],\"properties\":[\"density\"],\"semanticTerms\":[\"density\",\"compact\",\"comfortable\",\"spacious\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"appearance.density\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"compact-density-human\",\"request\":\"Deixe a tabela mais compacta\",\"operationId\":\"appearance.density.set\",\"params\":{\"density\":\"compact\"},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "8b969313175a5fc4173bfe2d563b9d750ab6ee950f40fc9f9a2f40c89683f9c3",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 50,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"appearance.borders.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Definir bordas Effects: merge-object.\",\"scope\":\"global\",\"target\":{\"kind\":\"appearance\",\"resolver\":\"appearance-config\",\"required\":false},\"inputContract\":{\"required\":[\"showRowBorders\",\"showColumnBorders\"],\"properties\":[\"showRowBorders\",\"showColumnBorders\",\"showOuterBorder\"],\"semanticTerms\":[\"showRowBorders\",\"showColumnBorders\",\"showOuterBorder\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"appearance.borders.showRowBorders\",\"appearance.borders.showColumnBorders\",\"appearance.borders.showOuterBorder\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "9c0c531490fc14c78c68cb5d7b1578f40cf14267c1c8929fce239141a94019b3",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 51,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"virtualization.enabled.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Habilitar virtualização Effects: merge-object, merge-object.\",\"scope\":\"global\",\"target\":{\"kind\":\"appearance\",\"resolver\":\"appearance-config\",\"required\":false},\"inputContract\":{\"required\":[\"enabled\"],\"properties\":[\"enabled\",\"itemHeight\"],\"semanticTerms\":[\"enabled\",\"itemHeight\"]},\"effects\":[\"merge-object\",\"merge-object\"],\"affectedPaths\":[\"behavior.virtualization\",\"performance.virtualization\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "c331bd58de117178593aa52263e438111122c6d0e9b05d2699d6ae972e5988c4",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 52,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"expansion.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar expansão de linha Effects: merge-object.\",\"scope\":\"global\",\"target\":{\"kind\":\"expansion\",\"resolver\":\"expansion-config\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"enabled\",\"contractVersion\",\"state\",\"interaction\",\"limits\",\"collapseOn\",\"virtualization\",\"persistence\",\"security\",\"deepLink\"],\"semanticTerms\":[\"enabled\",\"contractVersion\",\"state\",\"interaction\",\"limits\",\"collapseOn\",\"virtualization\",\"persistence\",\"security\",\"deepLink\",\"state.mode\",\"interaction.trigger\",\"interaction.toggleIcon\",\"interaction.motion\",\"interaction.keyboard\",\"limits.allowMultiple\",\"limits.maxExpandedRows\",\"limits.onOverflow\",\"collapseOn.sortChange\",\"collapseOn.pageChange\",\"collapseOn.filterChange\",\"collapseOn.dataRefresh\",\"virtualization.policy\",\"persistence.enabled\",\"persistence.storageKeyStrategy\",\"security.eventExposureDefault\",\"deepLink.enabled\",\"deepLink.encoding\",\"deepLink.parsing\",\"deepLink.integrity\",\"deepLink.privacy\",\"controlled\",\"uncontrolled\",\"icon\",\"row\",\"both\",\"interaction.toggleIcon.collapsed\",\"interaction.toggleIcon.expanded\",\"interaction.toggleIcon.ariaLabelCollapsed\",\"interaction.toggleIcon.ariaLabelExpanded\",\"interaction.motion.preset\",\"interaction.motion.durationMs\",\"interaction.motion.easing\",\"interaction.keyboard.profile\",\"collapseOldest\",\"denyNew\",\"collapseAll\",\"fixed-height-only\",\"allow-dynamic-under-flag\",\"persistence.storageKeyStrategy.namespace\",\"security.eventExposureDefault.rowId\",\"security.eventExposureDefault.expandedKeys\",\"csv\",\"deepLink.parsing.duplicateParams\",\"deepLink.integrity.mode\",\"deepLink.privacy.mode\",\"none\",\"subtle-slide\",\"accordion\",\"fade-scale\",\"standard\",\"emphasized\",\"decelerate\",\"disclosure\",\"grid\",\"redacted\",\"hashed\",\"raw\",\"firstWins\",\"reject\",\"opaqueToken\",\"denyByDefault\",\"allowByDefault\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"behavior.expansion\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "b45b125097385c3cdba0d0dd99bc8b5f084f45be42605fc249f43c59cf5c8640",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 53,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"expansion.detailSource.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar fonte remota do detalhe expansivel Effects: merge-object.\",\"scope\":\"global\",\"target\":{\"kind\":\"expansion\",\"resolver\":\"expansion-config\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"mode\",\"inlineSchema\",\"resource\",\"resourcePath\",\"resourceAllowList\",\"hypermedia\"],\"semanticTerms\":[\"mode\",\"inlineSchema\",\"resource\",\"resourcePath\",\"resourceAllowList\",\"hypermedia\",\"inline\",\"resource.kind\",\"resource.id\",\"resource.version\",\"resourcePath.path\",\"resourcePath.method\",\"resourcePath.paramsMap\",\"ui-composition\",\"form-schema\",\"table-schema\",\"dashboard-schema\",\"GET\",\"POST\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"behavior.expansion.detail.source\",\"behavior.expansion.detail.source.mode\",\"behavior.expansion.detail.source.resourcePath\",\"behavior.expansion.detail.source.resourceAllowList\",\"behavior.expansion.detail.source.hypermedia\"],\"validators\":[{\"validatorId\":\"remote-resource-binding-safe\",\"level\":\"error\",\"code\":\"TB008\",\"description\":\"A ligação com recurso remoto não deve conter URLs absolutas não permitidas.\"},{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"affects-remote-binding\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "389be6f97545393cec6e76d2304431d4d61f57310da2073ee14f1a5e932dfd8d",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 54,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"expansion.detailPresentation.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar apresentacao do detalhe expansivel Effects: merge-object.\",\"scope\":\"global\",\"target\":{\"kind\":\"expansion\",\"resolver\":\"expansion-config\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"schemaContract\",\"rendering\",\"height\"],\"semanticTerms\":[\"schemaContract\",\"rendering\",\"height\",\"schemaContract.kind\",\"schemaContract.version\",\"rendering.strategy\",\"rendering.registryId\",\"rendering.hostLayout\",\"rendering.fallbackNodePolicy\",\"height.mode\",\"height.px\",\"registry\",\"auto\",\"stack\",\"tabs\",\"failClosed\",\"renderPlaceholder\",\"fixed\",\"dynamic\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"behavior.expansion.detail\",\"behavior.expansion.detail.schemaContract\",\"behavior.expansion.detail.rendering\",\"behavior.expansion.detail.height\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "d9e94f37836bf23e64303e9a1af4ee55bc2cb40ab037d0df06a375a74acaf198",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 55,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"meta.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar metadados Effects: merge-object.\",\"scope\":\"global\",\"target\":{\"kind\":\"meta\",\"resolver\":\"table-meta-config\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"name\",\"description\",\"tags\",\"schemaId\"],\"semanticTerms\":[\"name\",\"description\",\"tags\",\"schemaId\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"meta\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "934bd0080f477ba356cde2ed6739cb1a9d539df574c31da6a3bb5be97aadf158",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 56,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"meta.idField.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Definir campo de identidade Effects: set-value.\",\"scope\":\"global\",\"target\":{\"kind\":\"meta\",\"resolver\":\"table-meta-config\",\"required\":false},\"inputContract\":{\"required\":[\"idField\"],\"properties\":[\"idField\"],\"semanticTerms\":[\"idField\"]},\"effects\":[\"set-value\"],\"affectedPaths\":[\"meta.idField\"],\"validators\":[{\"validatorId\":\"target-column-exists\",\"level\":\"error\",\"code\":\"TB001\",\"description\":\"A coluna alvo deve existir na configuração.\"},{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"affects-schema-backed-data\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "b2173e24d07791b1b59d8cf499ae2f37cb084cfc4b6de09230bb97d32c7270b9",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 57,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"column.resizable.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Definir redimensionamento da coluna Effects: merge-by-key.\",\"scope\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"required\":true},\"inputContract\":{\"required\":[\"resizable\"],\"properties\":[\"resizable\"],\"semanticTerms\":[\"resizable\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"columns[].resizable\"],\"validators\":[{\"validatorId\":\"target-column-exists\",\"level\":\"error\",\"code\":\"TB001\",\"description\":\"A coluna alvo deve existir na configuração.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[{\"id\":\"table.conditional-surface.cell\",\"targetKind\":\"column\",\"category\":\"surface-preset\",\"description\":\"Versioned semantic cell surfaces materialized privately by the table runtime.\",\"options\":[\"success\",\"warning\",\"danger\",\"highlight\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.text-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Text transforms and masks for textual table columns.\",\"options\":[\"none\",\"uppercase\",\"lowercase\",\"titlecase\",\"capitalize\",\"uppercase|truncate|50|...\",\"000.000.000-00\"],\"appliesToTypes\":[\"string\",\"text\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.numeric-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Decimal, currency and percentage formats for numeric table columns.\",\"options\":[\"1.0-0\",\"1.1-1\",\"1.2-2\",\"1.0-3\",\"1.0-0|nosep\",\"BRL|symbol|2\",\"USD|symbol|2\",\"EUR|symbol|2\",\"BRL|code|2\",\"USD|code|0\",\"BRL|symbol|2|nosep\",\"EUR|symbol|2|nosep\",\"1.0-0|x100\",\"1.1-1|x100\",\"1.2-2|x100\"],\"appliesToTypes\":[\"number\",\"currency\",\"percentage\"],\"unknownCompatible\":false},{\"id\":\"table.column.date-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Date and time formats for date-like table columns.\",\"options\":[\"shortDate\",\"mediumDate\",\"longDate\",\"fullDate\",\"MMM/yyyy\",\"shortTime\",\"short\",\"yyyy-MM-dd\",\"dd/MM/yyyy\",\"yyyy-MM-dd HH:mm\"],\"appliesToTypes\":[\"date\",\"datetime\",\"time\"],\"unknownCompatible\":false},{\"id\":\"table.column.boolean-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Boolean label formats for true/false table columns.\",\"options\":[\"true-false\",\"yes-no\",\"active-inactive\",\"on-off\",\"enabled-disabled\",\"custom|Sim|Nao\"],\"appliesToTypes\":[\"boolean\"],\"unknownCompatible\":false},{\"id\":\"table.column.semantic-renderers\",\"targetKind\":\"column\",\"category\":\"renderer\",\"description\":\"Visual renderers for categorical, status or action-oriented table columns.\",\"options\":[\"badge\",\"chip\",\"icon\",\"link\",\"button\",\"progress\",\"avatar\",\"toggle\",\"menu\",\"rating\",\"compose\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.alignment-layout\",\"targetKind\":\"column\",\"category\":\"layout\",\"description\":\"Column alignment and composed cell layout options.\",\"options\":[\"align:start\",\"align:center\",\"align:end\",\"compose:row\",\"compose:column\",\"secondary-line\",\"prefix\",\"suffix\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true}],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "ecf95bd45a150cf3396ae7e2eee90503922de309c2c48744ec1ff3cf771efb92",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 58,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"column.sortField.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Definir campo de ordenacao da coluna Effects: merge-by-key.\",\"scope\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"required\":true},\"inputContract\":{\"required\":[\"sortField\"],\"properties\":[\"sortField\"],\"semanticTerms\":[\"sortField\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"columns[].sortField\"],\"validators\":[{\"validatorId\":\"target-column-exists\",\"level\":\"error\",\"code\":\"TB001\",\"description\":\"A coluna alvo deve existir na configuração.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[{\"id\":\"table.conditional-surface.cell\",\"targetKind\":\"column\",\"category\":\"surface-preset\",\"description\":\"Versioned semantic cell surfaces materialized privately by the table runtime.\",\"options\":[\"success\",\"warning\",\"danger\",\"highlight\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.text-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Text transforms and masks for textual table columns.\",\"options\":[\"none\",\"uppercase\",\"lowercase\",\"titlecase\",\"capitalize\",\"uppercase|truncate|50|...\",\"000.000.000-00\"],\"appliesToTypes\":[\"string\",\"text\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.numeric-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Decimal, currency and percentage formats for numeric table columns.\",\"options\":[\"1.0-0\",\"1.1-1\",\"1.2-2\",\"1.0-3\",\"1.0-0|nosep\",\"BRL|symbol|2\",\"USD|symbol|2\",\"EUR|symbol|2\",\"BRL|code|2\",\"USD|code|0\",\"BRL|symbol|2|nosep\",\"EUR|symbol|2|nosep\",\"1.0-0|x100\",\"1.1-1|x100\",\"1.2-2|x100\"],\"appliesToTypes\":[\"number\",\"currency\",\"percentage\"],\"unknownCompatible\":false},{\"id\":\"table.column.date-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Date and time formats for date-like table columns.\",\"options\":[\"shortDate\",\"mediumDate\",\"longDate\",\"fullDate\",\"MMM/yyyy\",\"shortTime\",\"short\",\"yyyy-MM-dd\",\"dd/MM/yyyy\",\"yyyy-MM-dd HH:mm\"],\"appliesToTypes\":[\"date\",\"datetime\",\"time\"],\"unknownCompatible\":false},{\"id\":\"table.column.boolean-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Boolean label formats for true/false table columns.\",\"options\":[\"true-false\",\"yes-no\",\"active-inactive\",\"on-off\",\"enabled-disabled\",\"custom|Sim|Nao\"],\"appliesToTypes\":[\"boolean\"],\"unknownCompatible\":false},{\"id\":\"table.column.semantic-renderers\",\"targetKind\":\"column\",\"category\":\"renderer\",\"description\":\"Visual renderers for categorical, status or action-oriented table columns.\",\"options\":[\"badge\",\"chip\",\"icon\",\"link\",\"button\",\"progress\",\"avatar\",\"toggle\",\"menu\",\"rating\",\"compose\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.alignment-layout\",\"targetKind\":\"column\",\"category\":\"layout\",\"description\":\"Column alignment and composed cell layout options.\",\"options\":[\"align:start\",\"align:center\",\"align:end\",\"compose:row\",\"compose:column\",\"secondary-line\",\"prefix\",\"suffix\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true}],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "7ff9b4e0ded6a3cb4c3311b38c59777d4b3d2e082e6c86f5ecd0061b2438caa4",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 59,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"column.computed.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar coluna calculada Effects: merge-by-key.\",\"scope\":\"column\",\"target\":{\"kind\":\"computedColumn\",\"resolver\":\"column-by-field\",\"required\":true},\"inputContract\":{\"required\":[\"expression\"],\"properties\":[\"expression\",\"outputType\",\"format\",\"dependencies\"],\"semanticTerms\":[\"expression\",\"outputType\",\"format\",\"dependencies\",\"string\",\"number\",\"date\",\"boolean\",\"currency\",\"percentage\",\"custom\",\"shortDate\",\"mediumDate\",\"longDate\",\"fullDate\",\"MMM/yyyy\",\"shortTime\",\"short\",\"yyyy-MM-dd\",\"dd/MM/yyyy\",\"yyyy-MM-dd HH:mm\",\"1.0-0\",\"1.1-1\",\"1.2-2\",\"1.0-3\",\"1.0-0|nosep\",\"BRL|symbol|2\",\"USD|symbol|2\",\"EUR|symbol|2\",\"BRL|code|2\",\"USD|code|0\",\"BRL|symbol|2|nosep\",\"EUR|symbol|2|nosep\",\"1.0-0|x100\",\"1.1-1|x100\",\"1.2-2|x100\",\"none\",\"uppercase\",\"lowercase\",\"titlecase\",\"capitalize\",\"uppercase|truncate|50|...\",\"000.000.000-00\",\"true-false\",\"yes-no\",\"active-inactive\",\"on-off\",\"enabled-disabled\",\"custom|Sim|Nao\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"columns[].computed\"],\"validators\":[{\"validatorId\":\"target-column-exists\",\"level\":\"error\",\"code\":\"TB001\",\"description\":\"A coluna alvo deve existir na configuração.\"},{\"validatorId\":\"computed-expression-valid\",\"level\":\"error\",\"code\":\"TB007\",\"description\":\"A expressão de cálculo deve ser um AST Json Logic válido.\"},{\"validatorId\":\"format-preset-supported\",\"level\":\"error\",\"code\":\"TB012\",\"description\":\"O formato deve usar um preset canonico publicado em table-ai-capabilities.ts.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"affects-schema-backed-data\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "7ade17ef62445bff0f9824a52325b53e30b2f39936a001485db7697ccaa81267",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 60,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"behavior.pagination.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar paginacao Effects: merge-object. Usar paginacao no servidor com 50 linhas por pagina\",\"scope\":\"global\",\"target\":{\"kind\":\"pagination\",\"resolver\":\"pagination-config\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"enabled\",\"strategy\",\"pageSize\",\"pageSizeOptions\",\"position\",\"style\",\"advanced\"],\"semanticTerms\":[\"enabled\",\"strategy\",\"pageSize\",\"pageSizeOptions\",\"position\",\"style\",\"advanced\",\"client\",\"server\",\"top\",\"bottom\",\"both\",\"default\",\"simple\",\"compact\",\"advanced.maxPageSize\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"behavior.pagination\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"configure-server-pagination\",\"request\":\"Usar paginacao no servidor com 50 linhas por pagina\",\"operationId\":\"behavior.pagination.configure\",\"params\":{\"enabled\":true,\"strategy\":\"server\",\"pageSize\":50,\"position\":\"bottom\"},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "02108540b43bcf00126234df984edd893f28ff282c70a639ace3d7dad53f0870",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 61,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"behavior.sorting.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar ordenacao Effects: merge-object. Ordenar inicialmente por data de criacao decrescente\",\"scope\":\"global\",\"target\":{\"kind\":\"sorting\",\"resolver\":\"sorting-config\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"enabled\",\"strategy\",\"defaultSort\",\"allowClearSort\"],\"semanticTerms\":[\"enabled\",\"strategy\",\"defaultSort\",\"allowClearSort\",\"client\",\"server\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"behavior.sorting\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"configure-default-sorting\",\"request\":\"Ordenar inicialmente por data de criacao decrescente\",\"operationId\":\"behavior.sorting.configure\",\"params\":{\"enabled\":true,\"strategy\":\"server\",\"defaultSort\":{\"column\":\"createdAt\",\"direction\":\"desc\"}},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "3cfddc9010fd73426d8398528c0fcbe183f427676e04199c98bb8faa47d23709",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 62,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"behavior.filtering.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar filtragem Effects: merge-object. Habilite os filtros dinâmicos da tabela\",\"scope\":\"global\",\"target\":{\"kind\":\"filter\",\"resolver\":\"filter-config\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"enabled\",\"strategy\",\"columnFilters\",\"advancedFilters\",\"debounceTime\"],\"semanticTerms\":[\"enabled\",\"strategy\",\"columnFilters\",\"advancedFilters\",\"debounceTime\",\"client\",\"server\",\"columnFilters.enabled\",\"columnFilters.defaultType\",\"columnFilters.position\",\"advancedFilters.enabled\",\"advancedFilters.settings\",\"text\",\"select\",\"date\",\"number\",\"boolean\",\"header\",\"subheader\",\"sidebar\",\"advancedFilters.settings.mode\",\"advancedFilters.settings.showAdvanced\",\"advancedFilters.settings.allowSaveTags\",\"advancedFilters.settings.tags\",\"advancedFilters.settings.alwaysVisibleFields\",\"advancedFilters.settings.selectedFieldIds\",\"advancedFilters.settings.alwaysVisibleFieldMetadataOverrides\",\"advancedFilters.settings.changeDebounceMs\",\"advancedFilters.settings.useInlineSearchableSelectVariant\",\"advancedFilters.settings.useInlineRangeVariant\",\"advancedFilters.settings.useInlineDateVariant\",\"advancedFilters.settings.useInlineDateRangeVariant\",\"filter\",\"advancedFilters.settings.tags.id\",\"advancedFilters.settings.tags.label\",\"advancedFilters.settings.tags.patch\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"behavior.filtering\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"enable-table-filters-human\",\"request\":\"Habilite os filtros dinâmicos da tabela\",\"operationId\":\"behavior.filtering.configure\",\"params\":{\"enabled\":true,\"strategy\":\"client\",\"debounceMs\":250},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "0fbcd54400439384812218109dca07a1ff62f1b5bd2fbfc3b9007b6b02e94adb",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 63,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"behavior.selection.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar selecao Effects: merge-object.\",\"scope\":\"global\",\"target\":{\"kind\":\"selection\",\"resolver\":\"selection-config\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"enabled\",\"type\",\"mode\",\"allowSelectAll\",\"persistSelection\",\"maxSelections\"],\"semanticTerms\":[\"enabled\",\"type\",\"mode\",\"allowSelectAll\",\"persistSelection\",\"maxSelections\",\"single\",\"multiple\",\"checkbox\",\"row\",\"both\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"behavior.selection\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "5be6525a306676e18dd4910dcdff28915aefb11ed357b49f48024fd8d20d590d",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 64,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"behavior.interaction.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar interacao Effects: merge-object.\",\"scope\":\"global\",\"target\":{\"kind\":\"interaction\",\"resolver\":\"interaction-config\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"rowClick\",\"keyboard\",\"hover\"],\"semanticTerms\":[\"rowClick\",\"keyboard\",\"hover\",\"rowClick.enabled\",\"rowClick.action\",\"keyboard.enabled\",\"hover.enabled\",\"hover.highlightRow\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"behavior.interaction\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "d80073ba683aeeb183109c8e6b92193b9518b6f538182c3a5cc3ff24421b0926",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 65,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"behavior.loading.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar loading Effects: merge-object.\",\"scope\":\"global\",\"target\":{\"kind\":\"loading\",\"resolver\":\"loading-config\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"type\",\"position\",\"text\",\"delay\",\"showForQuickOperations\",\"requestTimeoutMs\",\"allowCancel\",\"skeleton\"],\"semanticTerms\":[\"type\",\"position\",\"text\",\"delay\",\"showForQuickOperations\",\"requestTimeoutMs\",\"allowCancel\",\"skeleton\",\"spinner\",\"progress\",\"overlay\",\"inline\",\"replace\",\"skeleton.rows\",\"skeleton.animated\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"behavior.loading\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "8b1bf13bd890c3c554cd98002000bf8562e71b89fdeb9bfebafb14a743c4d887",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 66,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"behavior.emptyState.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar estado vazio Configura copy, apresentação e ações contextuais explícitas do estado vazio. Não duplica CREATE capability-governado, que permanece como ação primária estável da toolbar. Effects: merge-object.\",\"scope\":\"global\",\"target\":{\"kind\":\"emptyState\",\"resolver\":\"empty-state-config\",\"required\":false},\"inputContract\":{\"required\":[\"message\"],\"properties\":[\"title\",\"message\",\"description\",\"icon\",\"tone\",\"variant\",\"alignment\",\"density\",\"iconContainer\",\"actions\",\"contexts\"],\"semanticTerms\":[\"title\",\"message\",\"description\",\"icon\",\"tone\",\"variant\",\"alignment\",\"density\",\"iconContainer\",\"actions\",\"contexts\",\"neutral\",\"primary\",\"secondary\",\"card\",\"inline\",\"panel\",\"transparent\",\"start\",\"center\",\"compact\",\"comfortable\",\"none\",\"circle\",\"soft\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"behavior.emptyState\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "99f3fc7f8afcf7e05859ec3c76276be92f164b22de1dd77e077847590e51dcfd",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 67,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"behavior.resizing.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar redimensionamento Effects: merge-object.\",\"scope\":\"global\",\"target\":{\"kind\":\"resizing\",\"resolver\":\"resizing-config\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"enabled\",\"minColumnWidth\",\"maxColumnWidth\",\"autoFit\",\"persistWidths\"],\"semanticTerms\":[\"enabled\",\"minColumnWidth\",\"maxColumnWidth\",\"autoFit\",\"persistWidths\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"behavior.resizing\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "86af2ba271799e9b3001353c0e0595cc4e2c96f29d212c5f2556a72753c73808",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 68,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"behavior.dragging.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar drag and drop Effects: merge-object.\",\"scope\":\"global\",\"target\":{\"kind\":\"dragging\",\"resolver\":\"dragging-config\",\"required\":false},\"inputContract\":{\"required\":[\"columns\"],\"properties\":[\"columns\"],\"semanticTerms\":[\"columns\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"behavior.dragging\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "9da5073039df16423781222caf28473c2ba0cd4fd1cce3bdeb572087c97ed5be",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 69,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"behavior.editing.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar edicao Effects: merge-object.\",\"scope\":\"global\",\"target\":{\"kind\":\"editing\",\"resolver\":\"editing-config\",\"required\":false},\"inputContract\":{\"required\":[\"mode\"],\"properties\":[\"mode\"],\"semanticTerms\":[\"mode\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"behavior.editing\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "8a426997aa58d5f323e5c9877d4e1856181fb4d5b4cd42e870e7ec5545875765",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 70,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"toolbar.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar barra e título global da tabela Configura a barra da tabela, incluindo o título global em toolbar.title. Não use para renomear o cabeçalho de uma coluna; nesse caso use column.header.set. Effects: merge-object. Mostre busca e botão de atualizar na toolbar Altere o titulo da tabela para Folha operacional revisada Altere o título da coluna Salário Líquido para Valor líquido Habilite um botão para exportar apenas as linhas selecionadas\",\"scope\":\"global\",\"target\":{\"kind\":\"toolbar\",\"resolver\":\"toolbar-config\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"visible\",\"position\",\"actionsPosition\",\"actionsBackgroundColor\",\"appearance\",\"title\",\"subtitle\",\"icon\",\"textAlign\",\"layout\",\"filters\",\"settingsMenu\",\"columnsVisibility\",\"densityToggle\"],\"semanticTerms\":[\"visible\",\"position\",\"actionsPosition\",\"actionsBackgroundColor\",\"appearance\",\"title\",\"subtitle\",\"icon\",\"textAlign\",\"layout\",\"filters\",\"settingsMenu\",\"columnsVisibility\",\"densityToggle\",\"top\",\"bottom\",\"both\",\"appearance.preset\",\"appearance.variant\",\"appearance.density\",\"appearance.shape\",\"appearance.divider\",\"appearance.tokens\",\"start\",\"center\",\"end\",\"layout.alignment\",\"filters.enabled\",\"filters.showAdvancedButton\",\"filters.quickFilters\",\"settingsMenu.enabled\",\"columnsVisibility.enabled\",\"densityToggle.enabled\",\"densityToggle.values\",\"flat\",\"outlined\",\"elevated\",\"integrated\",\"compact\",\"comfortable\",\"spacious\",\"square\",\"rounded\",\"pill\",\"none\",\"between-groups\",\"appearance.tokens.titleFg\",\"appearance.tokens.subtitleFg\",\"appearance.tokens.iconFg\",\"appearance.tokens.titleFontSize\",\"appearance.tokens.subtitleFontSize\",\"appearance.tokens.titleFontWeight\",\"appearance.tokens.identityGap\",\"appearance.tokens.identityFilterGap\",\"appearance.tokens.identityMinHeight\",\"appearance.tokens.identityMarginBottom\",\"appearance.tokens.identityIconSize\",\"appearance.tokens.identityIconRadius\",\"space-between\",\"filters.quickFilters.id\",\"filters.quickFilters.label\",\"filters.quickFilters.icon\",\"filters.quickFilters.filter\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"toolbar\",\"toolbar.title\",\"toolbar.subtitle\",\"toolbar.icon\",\"toolbar.textAlign\",\"toolbar.appearance\",\"toolbar.appearance.tokens\"],\"validators\":[{\"validatorId\":\"css-style-safe\",\"level\":\"error\",\"code\":\"TB014\",\"description\":\"Estilos inline devem permanecer em CSS simples e seguro, sem scripts, URLs perigosas ou expressoes dinamicas.\"},{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"toolbar-search-refresh-human\",\"request\":\"Mostre busca e botão de atualizar na toolbar\",\"operationId\":\"toolbar.configure\",\"params\":{\"visible\":true,\"showSearch\":true,\"showRefresh\":true},\"isPositive\":true},{\"id\":\"rename-global-table-title-human\",\"request\":\"Altere o titulo da tabela para Folha operacional revisada\",\"operationId\":\"toolbar.configure\",\"params\":{\"title\":\"Folha operacional revisada\"},\"isPositive\":true}],\"negativeExamples\":[{\"id\":\"column-title-is-not-global-table-title-human\",\"request\":\"Altere o título da coluna Salário Líquido para Valor líquido\",\"operationId\":\"toolbar.configure\",\"target\":\"salarioLiquido\",\"isPositive\":false},{\"id\":\"selected-rows-export-is-not-toolbar-presentation\",\"request\":\"Habilite um botão para exportar apenas as linhas selecionadas\",\"operationId\":\"toolbar.configure\",\"isPositive\":false}]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "a1497ac862d4ead7306fd8d4bb025dee15915cc60878438f96e8968b37d4f5b0",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 71,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"actions.collection.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar descoberta de acoes da colecao Effects: merge-object.\",\"scope\":\"global\",\"target\":{\"kind\":\"toolbar\",\"resolver\":\"toolbar-config\",\"required\":false},\"inputContract\":{\"required\":[\"discovery\"],\"properties\":[\"discovery\"],\"semanticTerms\":[\"discovery\",\"discovery.enabled\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"actions.collection\",\"actions.collection.discovery.enabled\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "7e1472ade74d99dbf87da1f41dfacb050a2fabcbc400451f77e9c58b6c7c33f6",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 72,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"actions.row.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar acoes de linha Effects: merge-object.\",\"scope\":\"global\",\"target\":{\"kind\":\"rowAction\",\"resolver\":\"action-in-row-config\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"enabled\",\"display\",\"trigger\",\"discovery\"],\"semanticTerms\":[\"enabled\",\"display\",\"trigger\",\"discovery\",\"menu\",\"buttons\",\"icons\",\"hover\",\"always\",\"click\",\"discovery.enabled\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"actions.row\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "37bf93e5d7e823e895bd4e67746d16119c7d792464b39e82beed66cc48b5ff08",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 73,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"actions.bulk.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar acoes em lote Effects: merge-object. Habilitar acoes em lote na toolbar\",\"scope\":\"global\",\"target\":{\"kind\":\"bulkAction\",\"resolver\":\"action-in-bulk-config\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"enabled\",\"position\"],\"semanticTerms\":[\"enabled\",\"position\",\"toolbar\",\"floating\",\"both\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"actions.bulk\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"configure-bulk-actions\",\"request\":\"Habilitar acoes em lote na toolbar\",\"operationId\":\"actions.bulk.configure\",\"params\":{\"enabled\":true,\"position\":\"toolbar\"},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "98a86d94cabd41ee36fb0f2c99f968b25d488045454382448716b56e6858066c",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 74,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"actions.context.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar menu contextual Effects: merge-object.\",\"scope\":\"global\",\"target\":{\"kind\":\"contextAction\",\"resolver\":\"action-in-context-config\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"enabled\",\"trigger\"],\"semanticTerms\":[\"enabled\",\"trigger\",\"right-click\",\"long-press\",\"both\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"actions.context\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "ab12353491e1e8705e7c641c77ec3e3b7be8f1b573439f67f882488d5d489833",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 75,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"actions.confirmations.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar confirmacoes Effects: merge-object.\",\"scope\":\"global\",\"target\":{\"kind\":\"contextAction\",\"resolver\":\"action-in-context-config\",\"required\":false},\"inputContract\":{\"required\":[\"default\"],\"properties\":[\"default\"],\"semanticTerms\":[\"default\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"actions.confirmations.default\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "4c219d339a0ef126fc991232402fac242e5ca887583c86bf7515a3811c446c17",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 76,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"export.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar exportacao Configura a exportação governada da tabela, inclusive formatos e escopo. Para exportar apenas as linhas selecionadas, a decisão precisa manter a exportação habilitada, permitir seleção e executar a exportação usando apenas as linhas marcadas. Effects: merge-object. Habilite em uma tabela o botão para exportar apenas as linhas selecionadas\",\"scope\":\"global\",\"target\":{\"kind\":\"export\",\"resolver\":\"export-config\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"enabled\",\"formats\",\"general\",\"excel\",\"pdf\",\"csv\"],\"semanticTerms\":[\"enabled\",\"formats\",\"general\",\"excel\",\"pdf\",\"csv\",\"general.includeHeaders\",\"general.scope\",\"general.maxRows\",\"excel.autoFitColumns\",\"excel.visibleCurrentPage\",\"pdf.orientation\",\"pdf.pageSize\",\"csv.delimiter\",\"json\",\"print\",\"auto\",\"selected\",\"filtered\",\"currentPage\",\"all\",\"portrait\",\"landscape\",\"A4\",\"A3\",\"Letter\",\"Legal\",\",\",\";\",\"|\",\"\\\\t\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"export\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"configure-selected-rows-export\",\"request\":\"Habilite em uma tabela o botão para exportar apenas as linhas selecionadas\",\"operationId\":\"export.configure\",\"params\":{\"enabled\":true,\"general\":{\"scope\":\"selected\"}},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "7bd99820cb5af9b1e5138fdcc9f14873c14924a0d79ad60ed2cb834168ef541f",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 77,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"tableRuntimeOperations.plan\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Planejar operacoes runtime da tabela Effects: set-value.\",\"scope\":\"global\",\"target\":{\"kind\":\"runtimeOperation\",\"resolver\":\"table-runtime-operation-contract\",\"required\":false},\"inputContract\":{\"required\":[\"operations\"],\"properties\":[\"operations\"],\"semanticTerms\":[\"operations\",\"operations.operationId\",\"operations.input\",\"operations.description\",\"table.filter.apply\",\"table.export.run\",\"operations.input.criteria\",\"operations.input.format\",\"operations.input.scope\",\"excel\",\"pdf\",\"csv\",\"json\",\"print\",\"auto\",\"selected\",\"filtered\",\"currentPage\",\"all\"]},\"effects\":[\"set-value\"],\"affectedPaths\":[\"tableRuntimeOperations\"],\"validators\":[{\"validatorId\":\"runtime-operation-declared\",\"level\":\"error\",\"code\":\"TB019\",\"description\":\"Operacoes runtime devem usar operationId e input declarados em tableRuntimeOperations sem alterar a configuracao persistida.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"none\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "9ced745dd52dddbe2c71e66c1ff669c4cabcaa2cf9f3bf0bd5b6583dcf58ba72",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 78,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"appearance.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar aparencia Effects: merge-object.\",\"scope\":\"global\",\"target\":{\"kind\":\"appearance\",\"resolver\":\"appearance-config\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"density\",\"borders\",\"colors\",\"typography\",\"spacing\",\"responsive\",\"animations\",\"elevation\"],\"semanticTerms\":[\"density\",\"borders\",\"colors\",\"typography\",\"spacing\",\"responsive\",\"animations\",\"elevation\",\"compact\",\"comfortable\",\"spacious\",\"borders.showRowBorders\",\"borders.showColumnBorders\",\"borders.showOuterBorder\",\"borders.style\",\"colors.alternateRowBackground\",\"colors.hoverBackground\",\"typography.fontSize\",\"typography.headerFontWeight\",\"spacing.cellPadding\",\"responsive.mobile\",\"responsive.breakpoints\",\"animations.enabled\",\"elevation.level\",\"solid\",\"dashed\",\"dotted\",\"responsive.mobile.horizontalScroll\",\"responsive.mobile.cardMode\",\"responsive.mobile.priorityColumns\",\"responsive.breakpoints.mobile\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"appearance\"],\"validators\":[{\"validatorId\":\"css-style-safe\",\"level\":\"error\",\"code\":\"TB014\",\"description\":\"Estilos inline devem permanecer em CSS simples e seguro, sem scripts, URLs perigosas ou expressoes dinamicas.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "0aa044b7d87374498f8adbef4f48892d12a2a430666a25006faa2bf4732e391c",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 79,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"messages.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar mensagens Effects: merge-object.\",\"scope\":\"global\",\"target\":{\"kind\":\"messages\",\"resolver\":\"messages-config\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"states\",\"actions\"],\"semanticTerms\":[\"states\",\"actions\",\"states.empty\",\"states.loading\",\"actions.confirmations\",\"actions.confirmations.delete\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"messages\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "2aa734fa1663b8e5e5d4d24cdfd786dbdf48387cd70ab632e1db937874ea9a78",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 80,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"localization.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar localizacao Effects: merge-object. Configurar a tabela para portugues do Brasil\",\"scope\":\"global\",\"target\":{\"kind\":\"localization\",\"resolver\":\"localization-config\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"locale\",\"direction\",\"dateTime\",\"number\",\"currency\",\"formatting\"],\"semanticTerms\":[\"locale\",\"direction\",\"dateTime\",\"number\",\"currency\",\"formatting\",\"ltr\",\"rtl\",\"dateTime.dateFormat\",\"dateTime.timeFormat\",\"dateTime.dateTimeFormat\",\"dateTime.firstDayOfWeek\",\"dateTime.relativeTime\",\"dateTime.monthNames\",\"dateTime.dayNames\",\"number.decimalSeparator\",\"number.thousandsSeparator\",\"number.defaultPrecision\",\"number.negativeSign\",\"number.negativeSignPosition\",\"currency.code\",\"currency.symbol\",\"currency.position\",\"currency.spacing\",\"currency.precision\",\"formatting.percentageFormat\",\"formatting.fileSizeFormat\",\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"before\",\"after\",\"binary\",\"decimal\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"localization\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"configure-localization\",\"request\":\"Configurar a tabela para portugues do Brasil\",\"operationId\":\"localization.configure\",\"params\":{\"locale\":\"pt-BR\",\"direction\":\"ltr\",\"dateTime\":{\"dateFormat\":\"dd/MM/yyyy\"}},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "49bee1ac37035cb675250d1cdf78767f85dac1e69bb4061b2dfd51f950f37b71",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 81,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"performance.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar performance Effects: merge-object.\",\"scope\":\"global\",\"target\":{\"kind\":\"performance\",\"resolver\":\"performance-config\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"virtualization\",\"debounce\",\"lazyLoading\"],\"semanticTerms\":[\"virtualization\",\"debounce\",\"lazyLoading\",\"virtualization.enabled\",\"virtualization.itemHeight\",\"debounce.search\",\"debounce.filter\",\"lazyLoading.images\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"performance\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "56fe6331942d75d3a95d8b4e14c1d275a3ba7162c7679d3bb9a8b4a0057a3ced",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 82,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"data.loadingStrategy.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Definir estrategia de carregamento Effects: set-value.\",\"scope\":\"global\",\"target\":{\"kind\":\"data\",\"resolver\":\"data-config\",\"required\":false},\"inputContract\":{\"required\":[\"loadingStrategy\"],\"properties\":[\"loadingStrategy\"],\"semanticTerms\":[\"loadingStrategy\",\"eager\",\"lazy\",\"on-demand\"]},\"effects\":[\"set-value\"],\"affectedPaths\":[\"data.loadingStrategy\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "ba1a19868bacc851fbe1cd05d2f52d98cc5ffb40f8942ce5cdf225f0cf5aca4e",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 83,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"accessibility.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar acessibilidade Effects: merge-object. Ativar alto contraste e reduzir animacoes\",\"scope\":\"global\",\"target\":{\"kind\":\"accessibility\",\"resolver\":\"accessibility-config\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"enabled\",\"highContrast\",\"reduceMotion\",\"announcements\",\"keyboard\"],\"semanticTerms\":[\"enabled\",\"highContrast\",\"reduceMotion\",\"announcements\",\"keyboard\",\"announcements.liveRegion\",\"keyboard.shortcuts\",\"polite\",\"assertive\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"accessibility\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"configure-accessibility\",\"request\":\"Ativar alto contraste e reduzir animacoes\",\"operationId\":\"accessibility.configure\",\"params\":{\"enabled\":true,\"highContrast\":true,\"reduceMotion\":true,\"announcements\":{\"liveRegion\":\"polite\"}},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "4457232804dc8034564d7da08d0171090f1eb05875cf64f3938293684f7c82fb",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 84,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"identity\"}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "50fc1f56e2aca5dda24b2b004f0f10015ab7245adb2d5e298a5c89e261086c08",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 85,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"runtimeInputs\",\"runtimeInputs\":[{\"name\":\"config\",\"type\":\"TableConfig\",\"description\":\"Configuração completa da tabela\"},{\"name\":\"data\",\"type\":\"any[]\",\"description\":\"Dados a serem exibidos (modo client-side)\"},{\"name\":\"resourcePath\",\"type\":\"string\",\"description\":\"Caminho do recurso (API base)\"},{\"name\":\"queryContext\",\"type\":\"PraxisDataQueryContext\",\"description\":\"Contexto de consulta declarativo\"},{\"name\":\"title\",\"type\":\"string\",\"description\":\"Título da tabela\"},{\"name\":\"subtitle\",\"type\":\"string\",\"description\":\"Subtítulo da tabela\"},{\"name\":\"enableCustomization\",\"type\":\"boolean\",\"description\":\"Habilita modo de edição\"},{\"name\":\"authoringCapability\",\"type\":\"string\",\"description\":\"Capability pública do contexto corporativo exigida para materializar authoring governado.\"}]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "97aca9fc1daacc2d5b1d4c21f1addee0889bf3a74b3ed3ee68ab50a05c29d3c4",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 86,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"editableTargets\",\"editableTargets\":[{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"description\":\"Colunas base da tabela\"},{\"kind\":\"columnProjection\",\"resolver\":\"schema-column-projection\",\"description\":\"Projecao de colunas derivada do schema com overrides editoriais\"},{\"kind\":\"computedColumn\",\"resolver\":\"column-by-field\",\"description\":\"Colunas calculadas\"},{\"kind\":\"renderer\",\"resolver\":\"renderer-in-column\",\"description\":\"Renderizador de célula\"},{\"kind\":\"conditionalRenderer\",\"resolver\":\"conditional-renderer-in-column\",\"description\":\"Renderizadores condicionais\"},{\"kind\":\"rowAction\",\"resolver\":\"action-in-row-config\",\"description\":\"Ações por linha\"},{\"kind\":\"toolbarAction\",\"resolver\":\"action-in-toolbar-config\",\"description\":\"Ações na barra de ferramentas\"},{\"kind\":\"toolbar\",\"resolver\":\"toolbar-config\",\"description\":\"Configuração da barra de ferramentas\"},{\"kind\":\"filter\",\"resolver\":\"filter-config\",\"description\":\"Configuração de filtragem\"},{\"kind\":\"grouping\",\"resolver\":\"grouping-config\",\"description\":\"Configuração de agrupamento\"},{\"kind\":\"selection\",\"resolver\":\"selection-config\",\"description\":\"Configuração de seleção\"},{\"kind\":\"export\",\"resolver\":\"export-config\",\"description\":\"Configuração de exportação\"},{\"kind\":\"appearance\",\"resolver\":\"appearance-config\",\"description\":\"Configurações visuais\"},{\"kind\":\"expansion\",\"resolver\":\"expansion-config\",\"description\":\"Configuração de detalhe/expansão\"},{\"kind\":\"rule\",\"resolver\":\"style-rule-in-column-or-row\",\"description\":\"Regras de estilo ou comportamento\"},{\"kind\":\"meta\",\"resolver\":\"table-meta-config\",\"description\":\"Metadados da configuracao\"},{\"kind\":\"bulkAction\",\"resolver\":\"action-in-bulk-config\",\"description\":\"Acoes em lote\"},{\"kind\":\"contextAction\",\"resolver\":\"action-in-context-config\",\"description\":\"Acoes de menu contextual\"},{\"kind\":\"pagination\",\"resolver\":\"pagination-config\",\"description\":\"Configuracao de paginacao\"},{\"kind\":\"sorting\",\"resolver\":\"sorting-config\",\"description\":\"Configuracao de ordenacao\"},{\"kind\":\"interaction\",\"resolver\":\"interaction-config\",\"description\":\"Configuracao de interacao\"},{\"kind\":\"loading\",\"resolver\":\"loading-config\",\"description\":\"Estados de carregamento\"},{\"kind\":\"emptyState\",\"resolver\":\"empty-state-config\",\"description\":\"Estado vazio\"},{\"kind\":\"aiAssistant\",\"resolver\":\"ai-assistant-config\",\"description\":\"Config path ai.assistant.enabled controlling the embedded table AI assistant entrypoint and session.\"},{\"kind\":\"resizing\",\"resolver\":\"resizing-config\",\"description\":\"Redimensionamento de colunas\"},{\"kind\":\"dragging\",\"resolver\":\"dragging-config\",\"description\":\"Reorganizacao por drag and drop\"},{\"kind\":\"editing\",\"resolver\":\"editing-config\",\"description\":\"Modo de edicao\"},{\"kind\":\"messages\",\"resolver\":\"messages-config\",\"description\":\"Mensagens da tabela\"},{\"kind\":\"localization\",\"resolver\":\"localization-config\",\"description\":\"Localizacao e formatos regionais\"},{\"kind\":\"performance\",\"resolver\":\"performance-config\",\"description\":\"Configuracoes de performance\"},{\"kind\":\"data\",\"resolver\":\"data-config\",\"description\":\"Configuracoes de dados\"},{\"kind\":\"runtimeOperation\",\"resolver\":\"table-runtime-operation-contract\",\"description\":\"Operacoes runtime revisaveis sem mutar a configuracao persistida\"},{\"kind\":\"accessibility\",\"resolver\":\"accessibility-config\",\"description\":\"Acessibilidade\"}]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "9d5f9427d87fbedf02de4585be468fc174efdd81b33be1a56ec7ce35c635b297",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 87,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"column.projection.configure\",\"title\":\"Usar colunas governadas pelo schema\",\"description\":\"Mantem /schemas/filtered como fonte estrutural das colunas e registra somente diferencas editoriais por nome canonico de campo. Nao use para inventar campos ou contornar metadata ausente.\",\"scope\":\"global\",\"targetKind\":\"columnProjection\",\"target\":{\"kind\":\"columnProjection\",\"resolver\":\"schema-column-projection\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"source\"],\"additionalProperties\":false,\"properties\":{\"source\":{\"const\":\"schema\"},\"include\":{\"type\":\"array\",\"uniqueItems\":true,\"items\":{\"type\":\"string\",\"minLength\":1},\"description\":\"Allowlist ordenada de campos canonicos. Recomendada para dados sensiveis ou quando a pagina precisa de uma projecao focada.\"},\"overrides\":{\"type\":\"object\",\"description\":\"Mapa indexado pelo nome canonico do campo. O objeto de override nao pode conter field.\",\"additionalProperties\":{\"type\":\"object\",\"not\":{\"required\":[\"field\"]}}},\"additions\":{\"type\":\"array\",\"description\":\"Colunas editoriais sem correspondente no schema, normalmente derivadas pelo round-trip de colunas computadas. Uma adicao nunca substitui um campo canonico.\",\"items\":{\"type\":\"object\",\"required\":[\"field\"],\"properties\":{\"field\":{\"type\":\"string\",\"minLength\":1},\"header\":{\"type\":[\"string\",\"object\"]},\"type\":{\"enum\":[\"string\",\"number\",\"date\",\"boolean\",\"currency\",\"percentage\",\"custom\"]}}}}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"columnProjection\"}],\"validators\":[\"schema-column-override-field-immutable\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"columnProjection\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"column.add\",\"title\":\"Adicionar coluna\",\"scope\":\"global\",\"targetKind\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"field\",\"header\"],\"properties\":{\"field\":{\"type\":\"string\"},\"header\":{\"type\":\"string\"},\"type\":{\"enum\":[\"string\",\"number\",\"date\",\"boolean\",\"currency\",\"percentage\",\"custom\"],\"default\":\"string\"}}},\"effects\":[{\"kind\":\"append-unique\",\"path\":\"columns[]\",\"key\":\"field\"}],\"validators\":[\"column-field-unique\"],\"affectedPaths\":[\"columns[]\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"column.remove\",\"title\":\"Remover coluna\",\"scope\":\"column\",\"targetKind\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"properties\":{}},\"effects\":[{\"kind\":\"remove-by-key\",\"path\":\"columns[]\",\"key\":\"field\"}],\"destructive\":true,\"requiresConfirmation\":true,\"validators\":[\"destructive-removal-confirmation\"],\"affectedPaths\":[\"columns[]\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"column.header.set\",\"title\":\"Renomear o título da coluna sem alterar valores das células\",\"scope\":\"column\",\"targetKind\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"header\"],\"properties\":{\"header\":{\"type\":\"string\",\"minLength\":1}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"columns[]\",\"key\":\"field\"}],\"validators\":[\"target-column-exists\"],\"affectedPaths\":[\"columns[].header\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"column.type.set\",\"title\":\"Definir tipo de dado\",\"scope\":\"column\",\"targetKind\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"type\"],\"properties\":{\"type\":{\"enum\":[\"string\",\"number\",\"date\",\"boolean\",\"currency\",\"percentage\",\"custom\"]}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"columns[]\",\"key\":\"field\"}],\"validators\":[\"target-column-exists\"],\"affectedPaths\":[\"columns[].type\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"column.format.set\",\"title\":\"Definir formato\",\"description\":\"Define o preset de apresentação e materializa o tipo visual compatível quando o formato é moeda, percentual, data ou booleano, preservando os demais atributos da coluna.\",\"scope\":\"column\",\"targetKind\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"format\"],\"properties\":{\"format\":{\"type\":\"string\",\"enum\":[\"shortDate\",\"mediumDate\",\"longDate\",\"fullDate\",\"MMM/yyyy\",\"shortTime\",\"short\",\"yyyy-MM-dd\",\"dd/MM/yyyy\",\"yyyy-MM-dd HH:mm\",\"1.0-0\",\"1.1-1\",\"1.2-2\",\"1.0-3\",\"1.0-0|nosep\",\"BRL|symbol|2\",\"USD|symbol|2\",\"EUR|symbol|2\",\"BRL|code|2\",\"USD|code|0\",\"BRL|symbol|2|nosep\",\"EUR|symbol|2|nosep\",\"1.0-0|x100\",\"1.1-1|x100\",\"1.2-2|x100\",\"none\",\"uppercase\",\"lowercase\",\"titlecase\",\"capitalize\",\"uppercase|truncate|50|...\",\"000.000.000-00\",\"true-false\",\"yes-no\",\"active-inactive\",\"on-off\",\"enabled-disabled\",\"custom|Sim|Nao\"],\"description\":\"Preset canÃ´nico do DataFormattingService.\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"table-column-format-set\",\"path\":\"columns[]\"}],\"validators\":[\"target-column-exists\",\"format-preset-supported\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"columns[].format\",\"columns[].type\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"column.width.set\",\"title\":\"Definir largura da coluna\",\"scope\":\"column\",\"targetKind\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"width\"],\"properties\":{\"width\":{\"type\":\"string\",\"pattern\":\"^(auto|\\\\d+(px|%|rem|em))$\"}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"columns[]\",\"key\":\"field\"}],\"validators\":[\"target-column-exists\",\"column-width-valid\"],\"affectedPaths\":[\"columns[].width\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"column.align.set\",\"title\":\"Definir alinhamento da coluna\",\"scope\":\"column\",\"targetKind\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"align\"],\"properties\":{\"align\":{\"enum\":[\"left\",\"center\",\"right\"]}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"columns[]\",\"key\":\"field\"}],\"validators\":[\"target-column-exists\"],\"affectedPaths\":[\"columns[].align\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"column.sticky.set\",\"title\":\"Fixar coluna durante a rolagem sem reordená-la\",\"description\":\"Mantém a coluna visível em uma extremidade durante a rolagem horizontal. Não altera sua posição na sequência de colunas; pedidos para mover, reordenar ou colocar uma coluna no início pertencem a column.order.set.\",\"scope\":\"column\",\"targetKind\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"sticky\"],\"properties\":{\"sticky\":{\"enum\":[\"start\",\"end\",true,false]}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"columns[]\",\"key\":\"field\"}],\"validators\":[\"target-column-exists\"],\"affectedPaths\":[\"columns[].sticky\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]}]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "1de6bba3bdb432316aa4e3ae3b7000c9a22295fdf577459ddae30762a1522914",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 88,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"column.sortable.set\",\"title\":\"Definir ordenação da coluna\",\"scope\":\"column\",\"targetKind\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"sortable\"],\"properties\":{\"sortable\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"columns[]\",\"key\":\"field\"}],\"validators\":[\"target-column-exists\"],\"affectedPaths\":[\"columns[].sortable\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"column.filterable.set\",\"title\":\"Definir filtro da coluna\",\"scope\":\"column\",\"targetKind\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"filterable\"],\"properties\":{\"filterable\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"columns[]\",\"key\":\"field\"}],\"validators\":[\"target-column-exists\"],\"affectedPaths\":[\"columns[].filterable\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"column.style.set\",\"title\":\"Definir estilo da célula\",\"scope\":\"column\",\"targetKind\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"style\"],\"properties\":{\"style\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"columns[]\",\"key\":\"field\"}],\"validators\":[\"target-column-exists\",\"css-style-safe\"],\"affectedPaths\":[\"columns[].style\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"column.headerStyle.set\",\"title\":\"Definir estilo do cabeçalho\",\"scope\":\"column\",\"targetKind\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"headerStyle\"],\"properties\":{\"headerStyle\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"columns[]\",\"key\":\"field\"}],\"validators\":[\"target-column-exists\",\"css-style-safe\"],\"affectedPaths\":[\"columns[].headerStyle\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"column.valueMapping.set\",\"title\":\"Mapear valores exibidos nas células sem renomear a coluna\",\"scope\":\"column\",\"targetKind\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"valueMapping\"],\"properties\":{\"valueMapping\":{\"type\":\"object\",\"minProperties\":1}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"columns[]\",\"key\":\"field\"}],\"validators\":[\"target-column-exists\",\"value-mapping-valid\"],\"affectedPaths\":[\"columns[].valueMapping\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"column.order.set\",\"title\":\"Mover coluna inteira sem alterar o conteúdo da célula\",\"description\":\"Altera a posição visual da coluna na sequência. Use order 0 para colocá-la no início; use esta operação para mover ou reordenar ao início, ao fim, antes ou depois de outra coluna. Não fixa a coluna durante a rolagem; essa é a responsabilidade de column.sticky.set.\",\"scope\":\"column\",\"targetKind\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"order\"],\"properties\":{\"order\":{\"type\":\"integer\",\"minimum\":0,\"description\":\"Índice visual absoluto da coluna; 0 representa a primeira posição.\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"table-column-order-set\",\"path\":\"columns[]\"}],\"validators\":[\"target-column-exists\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"columns[].order\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"column.visibility.set\",\"title\":\"Mostrar ou ocultar coluna independente sem excluí-la\",\"description\":\"Altera somente a visibilidade da coluna-alvo. Quando um pedido incorpora o conteúdo de uma coluna em outra célula e também diz que a coluna de origem não deve continuar separada, esta operação complementa a composição do renderer.\",\"scope\":\"column\",\"targetKind\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"visible\"],\"properties\":{\"visible\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"columns[]\",\"key\":\"field\"}],\"validators\":[\"target-column-exists\"],\"affectedPaths\":[\"columns[].visible\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"column.computed.add\",\"title\":\"Adicionar coluna calculada\",\"scope\":\"global\",\"targetKind\":\"computedColumn\",\"target\":{\"kind\":\"computedColumn\",\"resolver\":\"column-by-field\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"field\",\"header\",\"expression\"],\"properties\":{\"field\":{\"type\":\"string\",\"description\":\"Stable camelCase field id for the new computed column. When the user supplies a header/name, derive this id from that header instead of asking for clarification.\"},\"header\":{\"type\":\"string\",\"description\":\"User-facing label for the computed column.\"},\"expression\":{\"type\":\"object\",\"description\":\"AST Json Logic\"},\"outputType\":{\"enum\":[\"string\",\"number\",\"date\",\"boolean\",\"currency\",\"percentage\",\"custom\"]}}},\"effects\":[{\"kind\":\"append-unique\",\"path\":\"columns[]\",\"key\":\"field\"}],\"validators\":[\"column-field-unique\",\"computed-expression-valid\"],\"affectedPaths\":[\"columns[]\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"config-initialized\"]}]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "a8833c0656dfdb464128daefed0249adb10a1bab84161b49c4d71e7e68262d28",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 89,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations[17]\",\"fragmentPath\":\"operations[17]\",\"fragmentIdentity\":{\"operationId\":\"column.renderer.set\"},\"fragment\":{\"operationId\":\"column.renderer.set\",\"title\":\"Compor ou definir o conteúdo visual dentro da célula\",\"description\":\"Define ou substitui o renderer raiz da célula. Para mudar somente direção, alinhamento, espaçamento ou quebra de um compose existente, use column.renderer.composeLayout.set. Para mudar somente tamanho, forma ou outra propriedade de um item existente, use column.renderer.composeItem.set. Esta operação não oculta uma coluna de origem; quando o mesmo pedido exige que essa origem deixe de aparecer separadamente, combine-a com column.visibility.set.\",\"scope\":\"column\",\"targetKind\":\"renderer\",\"target\":{\"kind\":\"renderer\",\"resolver\":\"renderer-in-column\",\"ambiguityPolicy\":\"fail\",\"required\":true}}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "980931e029e8a3a97909a3c0afff0b15c59ba5ccf3987d91628b91d7a09c9251",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 90,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations[17].inputSchema\",\"fragmentPath\":\"operations[17].inputSchema\",\"fragmentIdentity\":{\"operationId\":\"column.renderer.set\",\"type\":\"object\"},\"fragment\":{\"type\":\"object\",\"description\":\"Renderizador visual. Quando a intencao pedir chip, use type \\\"chip\\\" e configure chip; efeitos iconBadge materializam badge, nao chip. Ao refinar um compose existente, copie seus itens atuais e altere somente tamanho, forma, direção ou outra propriedade explicitamente solicitada.\",\"required\":[\"type\"]}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "f35e9096449722cd53d5658633864322a3d12eb7b3fbc363dbd25a4c7075284a",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 91,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations[17].inputSchema.properties\",\"fragmentPath\":\"operations[17].inputSchema.properties\",\"fragmentIdentity\":{\"operationId\":\"column.renderer.set\",\"type\":\"object\"},\"fragment\":{\"type\":{\"enum\":[\"icon\",\"image\",\"badge\",\"link\",\"button\",\"chip\",\"progress\",\"avatar\",\"toggle\",\"menu\",\"rating\",\"microVisualization\",\"html\",\"compose\"]},\"typeExpr\":{\"type\":\"string\"},\"button\":{\"type\":\"object\",\"required\":[\"action\"],\"properties\":{\"label\":{\"type\":\"string\"},\"labelField\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"color\":{\"enum\":[\"primary\",\"accent\",\"warn\"]},\"variant\":{\"enum\":[\"filled\",\"outlined\",\"text\"]},\"size\":{\"enum\":[\"sm\",\"md\",\"lg\"]},\"ariaLabel\":{\"type\":\"string\"},\"disabledCondition\":{\"type\":\"object\",\"description\":\"AST Json Logic\"},\"action\":{\"type\":\"object\",\"required\":[\"id\"],\"properties\":{\"id\":{\"type\":\"string\"},\"payloadExpr\":{\"type\":\"string\"}}}}},\"menu\":{\"type\":\"object\",\"required\":[\"itemsExpr\"],\"properties\":{\"itemsExpr\":{\"type\":\"string\"},\"ariaLabel\":{\"type\":\"string\"}}},\"link\":{\"type\":\"object\",\"anyOf\":[{\"required\":[\"href\"]},{\"required\":[\"hrefField\"]}],\"properties\":{\"text\":{\"type\":\"string\"},\"textField\":{\"type\":\"string\"},\"href\":{\"type\":\"string\"},\"hrefField\":{\"type\":\"string\"},\"target\":{\"enum\":[\"_blank\",\"_self\",\"_parent\",\"_top\"]},\"rel\":{\"type\":\"string\"}}},\"progress\":{\"type\":\"object\",\"required\":[\"valueExpr\"],\"properties\":{\"valueExpr\":{\"type\":\"string\"},\"color\":{\"type\":\"string\"},\"showLabel\":{\"type\":\"boolean\"}}},\"badge\":{\"type\":\"object\",\"anyOf\":[{\"required\":[\"text\"]},{\"required\":[\"textField\"]}],\"properties\":{\"text\":{\"type\":\"string\"},\"textField\":{\"type\":\"string\"},\"color\":{\"enum\":[\"primary\",\"accent\",\"warn\",\"danger\",\"success\",\"info\",\"basic\"]},\"variant\":{\"enum\":[\"filled\",\"outlined\",\"soft\",\"plain\"]},\"icon\":{\"type\":\"string\"},\"tooltip\":{\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\"},\"position\":{\"enum\":[\"top\",\"right\",\"bottom\",\"left\"]},\"bgColor\":{\"type\":\"string\"},\"delayMs\":{\"type\":\"number\"}}}}},\"chip\":{\"type\":\"object\",\"anyOf\":[{\"required\":[\"text\"]},{\"required\":[\"textField\"]}],\"properties\":{\"text\":{\"type\":\"string\"},\"textField\":{\"type\":\"string\"},\"color\":{\"enum\":[\"primary\",\"accent\",\"warn\",\"danger\",\"success\",\"info\",\"basic\"]},\"variant\":{\"enum\":[\"filled\",\"outlined\"]},\"icon\":{\"type\":\"string\"},\"tooltip\":{\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\"},\"position\":{\"enum\":[\"top\",\"right\",\"bottom\",\"left\"]},\"bgColor\":{\"type\":\"string\"},\"delayMs\":{\"type\":\"number\"}}}}},\"icon\":{\"type\":\"object\",\"anyOf\":[{\"required\":[\"name\"]},{\"required\":[\"nameField\"]}],\"properties\":{\"name\":{\"type\":\"string\"},\"nameField\":{\"type\":\"string\"},\"text\":{\"type\":\"string\"},\"textField\":{\"type\":\"string\"},\"prefix\":{\"type\":\"string\"},\"suffix\":{\"type\":\"string\"},\"color\":{\"type\":\"string\"},\"size\":{\"type\":\"number\"},\"ariaLabel\":{\"type\":\"string\"}}},\"image\":{\"type\":\"object\",\"anyOf\":[{\"required\":[\"src\"]},{\"required\":[\"srcField\"]}],\"properties\":{\"src\":{\"type\":\"string\"},\"srcField\":{\"type\":\"string\"},\"alt\":{\"type\":\"string\"},\"altField\":{\"type\":\"string\"},\"width\":{\"type\":\"number\",\"description\":\"Largura visual em pixels; altere apenas quando o pedido mudar o tamanho da imagem.\"},\"height\":{\"type\":\"number\",\"description\":\"Altura visual em pixels; para imagem quadrada, mantenha igual a width.\"},\"shape\":{\"enum\":[\"square\",\"rounded\",\"circle\"],\"description\":\"square não arredonda, rounded usa cantos arredondados e circle materializa um círculo.\"},\"fit\":{\"enum\":[\"cover\",\"contain\"]},\"lazy\":{\"type\":\"boolean\"}}},\"avatar\":{\"type\":\"object\",\"anyOf\":[{\"required\":[\"src\"]},{\"required\":[\"srcField\"]},{\"required\":[\"initialsField\"]},{\"required\":[\"initialsExpr\"]}],\"properties\":{\"src\":{\"type\":\"string\"},\"srcField\":{\"type\":\"string\"},\"alt\":{\"type\":\"string\"},\"altField\":{\"type\":\"string\"},\"initialsField\":{\"type\":\"string\"},\"initialsExpr\":{\"type\":\"string\"},\"shape\":{\"enum\":[\"circle\",\"square\",\"rounded\"],\"description\":\"circle é circular, square é quadrado e rounded é quadrado com cantos arredondados.\"},\"size\":{\"type\":\"number\",\"description\":\"Tamanho visual do avatar em pixels; preserve os demais campos e itens do compose ao mudar apenas o tamanho.\"},\"backgroundColor\":{\"type\":\"string\"},\"textColor\":{\"type\":\"string\"}}},\"toggle\":{\"type\":\"object\",\"required\":[\"stateExpr\",\"action\"],\"properties\":{\"stateExpr\":{\"type\":\"string\"},\"disabledCondition\":{\"type\":\"object\",\"description\":\"AST Json Logic\"},\"ariaLabel\":{\"type\":\"string\"},\"action\":{\"type\":\"object\",\"required\":[\"id\"],\"properties\":{\"id\":{\"type\":\"string\"},\"payloadExpr\":{\"type\":\"string\"}}}}},\"rating\":{\"type\":\"object\",\"required\":[\"valueExpr\"],\"properties\":{\"valueExpr\":{\"type\":\"string\"},\"max\":{\"type\":\"number\"},\"color\":{\"type\":\"string\"},\"outlineColor\":{\"type\":\"string\"},\"size\":{\"enum\":[\"small\",\"medium\",\"large\"]},\"ariaLabel\":{\"type\":\"string\"}}},\"microVisualization\":{\"type\":\"object\",\"required\":[\"visualization\"],\"properties\":{\"visualization\":{\"type\":\"object\",\"description\":\"Expression properties accept a row path such as row.sla or a controlled formula prefixed with =, such as = row.sla.\",\"required\":[\"kind\",\"fallbackText\"],\"properties\":{\"kind\":{\"enum\":[\"line\",\"area\",\"column\",\"comparison\",\"stackedBar\",\"radial\",\"harveyBall\",\"bullet\",\"delta\",\"processFlow\"],\"description\":\"Table-cell guidance: recommended for rapid scanning: delta, bullet, radial, harveyBall, stackedBar. Conditional: line, area and column require horizontal space; comparison increases row height; processFlow needs recognizable steps.\"},\"surface\":{\"const\":\"table-cell\"},\"size\":{\"enum\":[\"xs\",\"sm\",\"md\",\"lg\",\"responsive\"]},\"value\":{},\"valueExpr\":{\"type\":\"string\"},\"valueSuffix\":{\"type\":\"string\"},\"valueSuffixExpr\":{\"type\":\"string\"},\"total\":{\"type\":\"number\"},\"totalExpr\":{\"type\":\"string\"},\"target\":{\"type\":\"number\"},\"targetExpr\":{\"type\":\"string\"},\"baseline\":{\"type\":\"number\"},\"baselineExpr\":{\"type\":\"string\"},\"segments\":{\"type\":\"array\"},\"segmentsExpr\":{\"type\":\"string\"},\"points\":{\"type\":\"array\"},\"pointsExpr\":{\"type\":\"string\"},\"thresholds\":{\"type\":\"array\"},\"thresholdsExpr\":{\"type\":\"string\"},\"items\":{\"type\":\"array\"},\"itemsExpr\":{\"type\":\"string\"},\"tone\":{\"enum\":[\"neutral\",\"info\",\"success\",\"warning\",\"danger\",\"critical\"]},\"toneExpr\":{\"type\":\"string\"},\"ariaLabel\":{\"type\":\"string\"},\"ariaLabelExpr\":{\"type\":\"string\"},\"fallbackText\":{\"type\":\"string\"},\"fallbackTextExpr\":{\"type\":\"string\"}},\"allOf\":[{\"if\":{\"properties\":{\"kind\":{\"enum\":[\"delta\",\"bullet\",\"radial\",\"harveyBall\"]}}},\"then\":{\"anyOf\":[{\"required\":[\"value\"]},{\"required\":[\"valueExpr\"]}]}},{\"if\":{\"properties\":{\"kind\":{\"enum\":[\"line\",\"area\",\"column\",\"comparison\"]}}},\"then\":{\"anyOf\":[{\"required\":[\"points\"]},{\"required\":[\"pointsExpr\"]}]}},{\"if\":{\"properties\":{\"kind\":{\"const\":\"stackedBar\"}}},\"then\":{\"anyOf\":[{\"required\":[\"segments\"]},{\"required\":[\"segmentsExpr\"]}]}},{\"if\":{\"properties\":{\"kind\":{\"const\":\"processFlow\"}}},\"then\":{\"anyOf\":[{\"required\":[\"items\"]},{\"required\":[\"itemsExpr\"]}]}}]}}},\"html\":{\"type\":\"object\",\"required\":[\"template\"],\"properties\":{\"template\":{\"type\":\"string\"},\"sanitize\":{\"enum\":[\"strict\",\"basic\"]},\"emptyFallback\":{\"type\":\"string\"}}}}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "4336a2c18ff823a44572f4a39a8d521696817054c3d62d6b226be68c0067d2ed",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 92,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations[17].inputSchema.properties.compose\",\"fragmentPath\":\"operations[17].inputSchema.properties.compose\",\"fragmentIdentity\":{\"operationId\":\"column.renderer.set\",\"type\":\"object\"},\"fragment\":{\"type\":\"object\",\"description\":\"Composição de vários itens dentro da mesma célula. Em refinamentos, preserve os itens atuais e altere somente o atributo solicitado.\",\"required\":[\"items\"]}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "f77b113999b125951bc059cf8146f4e2379c006e824d400603b9d4e6fadb4109",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 93,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations[17].inputSchema.properties.compose.properties.items\",\"fragmentPath\":\"operations[17].inputSchema.properties.compose.properties.items\",\"fragmentIdentity\":{\"operationId\":\"column.renderer.set\",\"type\":\"array\"},\"fragment\":{\"type\":\"array\",\"minItems\":1}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "b35ee128162bc4b22e05eade6034aae42911f94123e1295ecbfe8355d90217d1",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 94,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations[17].inputSchema.properties.compose.properties.items.items\",\"fragmentPath\":\"operations[17].inputSchema.properties.compose.properties.items.items\",\"fragmentIdentity\":{\"operationId\":\"column.renderer.set\",\"type\":\"object\"},\"fragment\":{\"type\":\"object\",\"description\":\"Item de uma célula composta. value mostra um campo da linha; os demais tipos exigem seu bloco de configuração homônimo.\",\"required\":[\"type\"],\"properties\":{\"type\":{\"enum\":[\"value\",\"icon\",\"image\",\"badge\",\"link\",\"button\",\"chip\",\"progress\",\"avatar\",\"toggle\",\"menu\",\"rating\",\"microVisualization\",\"html\"]},\"field\":{\"type\":\"string\"},\"textField\":{\"type\":\"string\"},\"valueField\":{\"type\":\"string\"},\"text\":{\"type\":\"string\"},\"emphasis\":{\"enum\":[\"strong\",\"subtle\"],\"description\":\"Semantic hierarchy for a value item. Use strong for the primary value and subtle for supporting context; arbitrary CSS is not part of the compose contract.\"},\"button\":{\"type\":\"object\",\"required\":[\"action\"],\"properties\":{\"label\":{\"type\":\"string\"},\"labelField\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"color\":{\"enum\":[\"primary\",\"accent\",\"warn\"]},\"variant\":{\"enum\":[\"filled\",\"outlined\",\"text\"]},\"size\":{\"enum\":[\"sm\",\"md\",\"lg\"]},\"ariaLabel\":{\"type\":\"string\"},\"disabledCondition\":{\"type\":\"object\",\"description\":\"AST Json Logic\"},\"action\":{\"type\":\"object\",\"required\":[\"id\"],\"properties\":{\"id\":{\"type\":\"string\"},\"payloadExpr\":{\"type\":\"string\"}}}}},\"menu\":{\"type\":\"object\",\"required\":[\"itemsExpr\"],\"properties\":{\"itemsExpr\":{\"type\":\"string\"},\"ariaLabel\":{\"type\":\"string\"}}},\"link\":{\"type\":\"object\",\"anyOf\":[{\"required\":[\"href\"]},{\"required\":[\"hrefField\"]}],\"properties\":{\"text\":{\"type\":\"string\"},\"textField\":{\"type\":\"string\"},\"href\":{\"type\":\"string\"},\"hrefField\":{\"type\":\"string\"},\"target\":{\"enum\":[\"_blank\",\"_self\",\"_parent\",\"_top\"]},\"rel\":{\"type\":\"string\"}}},\"progress\":{\"type\":\"object\",\"required\":[\"valueExpr\"],\"properties\":{\"valueExpr\":{\"type\":\"string\"},\"color\":{\"type\":\"string\"},\"showLabel\":{\"type\":\"boolean\"}}},\"badge\":{\"type\":\"object\",\"anyOf\":[{\"required\":[\"text\"]},{\"required\":[\"textField\"]}],\"properties\":{\"text\":{\"type\":\"string\"},\"textField\":{\"type\":\"string\"},\"color\":{\"enum\":[\"primary\",\"accent\",\"warn\",\"danger\",\"success\",\"info\",\"basic\"]},\"variant\":{\"enum\":[\"filled\",\"outlined\",\"soft\",\"plain\"]},\"icon\":{\"type\":\"string\"},\"tooltip\":{\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\"},\"position\":{\"enum\":[\"top\",\"right\",\"bottom\",\"left\"]},\"bgColor\":{\"type\":\"string\"},\"delayMs\":{\"type\":\"number\"}}}}},\"chip\":{\"type\":\"object\",\"anyOf\":[{\"required\":[\"text\"]},{\"required\":[\"textField\"]}],\"properties\":{\"text\":{\"type\":\"string\"},\"textField\":{\"type\":\"string\"},\"color\":{\"enum\":[\"primary\",\"accent\",\"warn\",\"danger\",\"success\",\"info\",\"basic\"]},\"variant\":{\"enum\":[\"filled\",\"outlined\"]},\"icon\":{\"type\":\"string\"},\"tooltip\":{\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\"},\"position\":{\"enum\":[\"top\",\"right\",\"bottom\",\"left\"]},\"bgColor\":{\"type\":\"string\"},\"delayMs\":{\"type\":\"number\"}}}}},\"icon\":{\"type\":\"object\",\"anyOf\":[{\"required\":[\"name\"]},{\"required\":[\"nameField\"]}],\"properties\":{\"name\":{\"type\":\"string\"},\"nameField\":{\"type\":\"string\"},\"text\":{\"type\":\"string\"},\"textField\":{\"type\":\"string\"},\"prefix\":{\"type\":\"string\"},\"suffix\":{\"type\":\"string\"},\"color\":{\"type\":\"string\"},\"size\":{\"type\":\"number\"},\"ariaLabel\":{\"type\":\"string\"}}},\"image\":{\"type\":\"object\",\"anyOf\":[{\"required\":[\"src\"]},{\"required\":[\"srcField\"]}],\"properties\":{\"src\":{\"type\":\"string\"},\"srcField\":{\"type\":\"string\"},\"alt\":{\"type\":\"string\"},\"altField\":{\"type\":\"string\"},\"width\":{\"type\":\"number\",\"description\":\"Largura visual em pixels; altere apenas quando o pedido mudar o tamanho da imagem.\"},\"height\":{\"type\":\"number\",\"description\":\"Altura visual em pixels; para imagem quadrada, mantenha igual a width.\"},\"shape\":{\"enum\":[\"square\",\"rounded\",\"circle\"],\"description\":\"square não arredonda, rounded usa cantos arredondados e circle materializa um círculo.\"},\"fit\":{\"enum\":[\"cover\",\"contain\"]},\"lazy\":{\"type\":\"boolean\"}}},\"avatar\":{\"type\":\"object\",\"anyOf\":[{\"required\":[\"src\"]},{\"required\":[\"srcField\"]},{\"required\":[\"initialsField\"]},{\"required\":[\"initialsExpr\"]}],\"properties\":{\"src\":{\"type\":\"string\"},\"srcField\":{\"type\":\"string\"},\"alt\":{\"type\":\"string\"},\"altField\":{\"type\":\"string\"},\"initialsField\":{\"type\":\"string\"},\"initialsExpr\":{\"type\":\"string\"},\"shape\":{\"enum\":[\"circle\",\"square\",\"rounded\"],\"description\":\"circle é circular, square é quadrado e rounded é quadrado com cantos arredondados.\"},\"size\":{\"type\":\"number\",\"description\":\"Tamanho visual do avatar em pixels; preserve os demais campos e itens do compose ao mudar apenas o tamanho.\"},\"backgroundColor\":{\"type\":\"string\"},\"textColor\":{\"type\":\"string\"}}},\"toggle\":{\"type\":\"object\",\"required\":[\"stateExpr\",\"action\"],\"properties\":{\"stateExpr\":{\"type\":\"string\"},\"disabledCondition\":{\"type\":\"object\",\"description\":\"AST Json Logic\"},\"ariaLabel\":{\"type\":\"string\"},\"action\":{\"type\":\"object\",\"required\":[\"id\"],\"properties\":{\"id\":{\"type\":\"string\"},\"payloadExpr\":{\"type\":\"string\"}}}}},\"rating\":{\"type\":\"object\",\"required\":[\"valueExpr\"],\"properties\":{\"valueExpr\":{\"type\":\"string\"},\"max\":{\"type\":\"number\"},\"color\":{\"type\":\"string\"},\"outlineColor\":{\"type\":\"string\"},\"size\":{\"enum\":[\"small\",\"medium\",\"large\"]},\"ariaLabel\":{\"type\":\"string\"}}},\"microVisualization\":{\"type\":\"object\",\"required\":[\"visualization\"],\"properties\":{\"visualization\":{\"type\":\"object\",\"description\":\"Expression properties accept a row path such as row.sla or a controlled formula prefixed with =, such as = row.sla.\",\"required\":[\"kind\",\"fallbackText\"],\"properties\":{\"kind\":{\"enum\":[\"line\",\"area\",\"column\",\"comparison\",\"stackedBar\",\"radial\",\"harveyBall\",\"bullet\",\"delta\",\"processFlow\"],\"description\":\"Table-cell guidance: recommended for rapid scanning: delta, bullet, radial, harveyBall, stackedBar. Conditional: line, area and column require horizontal space; comparison increases row height; processFlow needs recognizable steps.\"},\"surface\":{\"const\":\"table-cell\"},\"size\":{\"enum\":[\"xs\",\"sm\",\"md\",\"lg\",\"responsive\"]},\"value\":{},\"valueExpr\":{\"type\":\"string\"},\"valueSuffix\":{\"type\":\"string\"},\"valueSuffixExpr\":{\"type\":\"string\"},\"total\":{\"type\":\"number\"},\"totalExpr\":{\"type\":\"string\"},\"target\":{\"type\":\"number\"},\"targetExpr\":{\"type\":\"string\"},\"baseline\":{\"type\":\"number\"},\"baselineExpr\":{\"type\":\"string\"},\"segments\":{\"type\":\"array\"},\"segmentsExpr\":{\"type\":\"string\"},\"points\":{\"type\":\"array\"},\"pointsExpr\":{\"type\":\"string\"},\"thresholds\":{\"type\":\"array\"},\"thresholdsExpr\":{\"type\":\"string\"},\"items\":{\"type\":\"array\"},\"itemsExpr\":{\"type\":\"string\"},\"tone\":{\"enum\":[\"neutral\",\"info\",\"success\",\"warning\",\"danger\",\"critical\"]},\"toneExpr\":{\"type\":\"string\"},\"ariaLabel\":{\"type\":\"string\"},\"ariaLabelExpr\":{\"type\":\"string\"},\"fallbackText\":{\"type\":\"string\"},\"fallbackTextExpr\":{\"type\":\"string\"}},\"allOf\":[{\"if\":{\"properties\":{\"kind\":{\"enum\":[\"delta\",\"bullet\",\"radial\",\"harveyBall\"]}}},\"then\":{\"anyOf\":[{\"required\":[\"value\"]},{\"required\":[\"valueExpr\"]}]}},{\"if\":{\"properties\":{\"kind\":{\"enum\":[\"line\",\"area\",\"column\",\"comparison\"]}}},\"then\":{\"anyOf\":[{\"required\":[\"points\"]},{\"required\":[\"pointsExpr\"]}]}},{\"if\":{\"properties\":{\"kind\":{\"const\":\"stackedBar\"}}},\"then\":{\"anyOf\":[{\"required\":[\"segments\"]},{\"required\":[\"segmentsExpr\"]}]}},{\"if\":{\"properties\":{\"kind\":{\"const\":\"processFlow\"}}},\"then\":{\"anyOf\":[{\"required\":[\"items\"]},{\"required\":[\"itemsExpr\"]}]}}]}}},\"html\":{\"type\":\"object\",\"required\":[\"template\"],\"properties\":{\"template\":{\"type\":\"string\"},\"sanitize\":{\"enum\":[\"strict\",\"basic\"]},\"emptyFallback\":{\"type\":\"string\"}}}}}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "8f61ee700727648fd2296ef3146d02fd82d4f1be63d63e59e2b1ccfa5cc08637",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 95,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations[17].inputSchema.properties.compose.properties.items.items\",\"fragmentPath\":\"operations[17].inputSchema.properties.compose.properties.items.items\",\"fragmentIdentity\":{\"operationId\":\"column.renderer.set\",\"type\":\"object\"},\"fragment\":{\"allOf\":[{\"if\":{\"properties\":{\"type\":{\"const\":\"button\"}}},\"then\":{\"required\":[\"button\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"menu\"}}},\"then\":{\"required\":[\"menu\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"link\"}}},\"then\":{\"required\":[\"link\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"progress\"}}},\"then\":{\"required\":[\"progress\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"badge\"}}},\"then\":{\"required\":[\"badge\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"chip\"}}},\"then\":{\"required\":[\"chip\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"icon\"}}},\"then\":{\"required\":[\"icon\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"image\"}}},\"then\":{\"required\":[\"image\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"avatar\"}}},\"then\":{\"required\":[\"avatar\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"toggle\"}}},\"then\":{\"required\":[\"toggle\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"rating\"}}},\"then\":{\"required\":[\"rating\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"microVisualization\"}}},\"then\":{\"required\":[\"microVisualization\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"html\"}}},\"then\":{\"required\":[\"html\"]}}]}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "05aa70bc6012ad5a11a15159542348d6318da57140cc12dc6f96c36da4416725",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 96,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations[17].inputSchema.properties.compose.properties\",\"fragmentPath\":\"operations[17].inputSchema.properties.compose.properties\",\"fragmentIdentity\":{\"operationId\":\"column.renderer.set\",\"type\":\"object\"},\"fragment\":{\"layout\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"gap\":{\"type\":\"number\"},\"direction\":{\"enum\":[\"row\",\"column\"],\"description\":\"row coloca os itens lado a lado na mesma linha; column empilha verticalmente, por exemplo foto em cima e código embaixo.\"},\"align\":{\"enum\":[\"start\",\"center\",\"end\"]},\"wrap\":{\"type\":\"boolean\"},\"ellipsis\":{\"type\":\"boolean\"}}}}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "2488631d8f2b4efbdb98fcab95af41891d0a9bd1389b13a0fd446265073a3c5d",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 97,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations[17].inputSchema\",\"fragmentPath\":\"operations[17].inputSchema\",\"fragmentIdentity\":{\"operationId\":\"column.renderer.set\",\"type\":\"object\"},\"fragment\":{\"allOf\":[{\"if\":{\"properties\":{\"type\":{\"const\":\"button\"}}},\"then\":{\"required\":[\"button\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"menu\"}}},\"then\":{\"required\":[\"menu\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"link\"}}},\"then\":{\"required\":[\"link\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"progress\"}}},\"then\":{\"required\":[\"progress\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"badge\"}}},\"then\":{\"required\":[\"badge\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"chip\"}}},\"then\":{\"required\":[\"chip\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"icon\"}}},\"then\":{\"required\":[\"icon\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"image\"}}},\"then\":{\"required\":[\"image\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"avatar\"}}},\"then\":{\"required\":[\"avatar\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"toggle\"}}},\"then\":{\"required\":[\"toggle\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"rating\"}}},\"then\":{\"required\":[\"rating\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"microVisualization\"}}},\"then\":{\"required\":[\"microVisualization\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"html\"}}},\"then\":{\"required\":[\"html\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"compose\"}}},\"then\":{\"required\":[\"compose\"]}}]}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "700ffc3a575c53410e8aa6203412e647d3c1241851dc84827ad843fb007c5783",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 98,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations[17]\",\"fragmentPath\":\"operations[17]\",\"fragmentIdentity\":{\"operationId\":\"column.renderer.set\"},\"fragment\":{\"effects\":[{\"kind\":\"merge-object\",\"path\":\"columns[].renderer\"}],\"validators\":[\"target-column-exists\",\"renderer-type-supported\",\"renderer-config-match\",\"renderer-fields-exist\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"columns[].renderer\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "a3fa3dad6eb1b6b699037df0fbf4294889909d00cb16677098b9f083119e25ad",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 99,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"column.renderer.composeLayout.set\",\"title\":\"Refinar somente o layout de uma célula composta\",\"description\":\"Altera direção, alinhamento, espaçamento, quebra ou ellipsis do layout de renderer.type compose já existente. Preserva o discriminator compose, a ordem, a configuração e todos os itens atuais; não reconstrua os itens para uma mudança somente de layout.\",\"scope\":\"column\",\"targetKind\":\"renderer\",\"target\":{\"kind\":\"renderer\",\"resolver\":\"renderer-in-column\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"gap\":{\"type\":\"number\"},\"direction\":{\"enum\":[\"row\",\"column\"],\"description\":\"row coloca os itens lado a lado na mesma linha; column empilha verticalmente, por exemplo foto em cima e código embaixo.\"},\"align\":{\"enum\":[\"start\",\"center\",\"end\"]},\"wrap\":{\"type\":\"boolean\"},\"ellipsis\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"table-renderer-compose-layout-merge\",\"path\":\"columns[].renderer.compose.layout\"}],\"validators\":[\"target-column-exists\",\"renderer-compose-exists\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"columns[].renderer.compose.layout\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]}]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "60469106965263ec2bda1f04bc43d5a6b2814fef5b5d5bcf66692388d300879a",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 100,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations[19]\",\"fragmentPath\":\"operations[19]\",\"fragmentIdentity\":{\"operationId\":\"column.renderer.composeItem.set\"},\"fragment\":{\"operationId\":\"column.renderer.composeItem.set\",\"title\":\"Refinar somente um item existente da célula composta\",\"description\":\"Altera um único item já materializado em renderer.type compose, preservando o discriminator compose, o layout, a ordem e todos os itens irmãos. Use itemType para resolver o item; quando houver mais de um item do mesmo tipo, informe itemField para desambiguar.\",\"scope\":\"column\",\"targetKind\":\"renderer\",\"target\":{\"kind\":\"renderer\",\"resolver\":\"renderer-in-column\",\"ambiguityPolicy\":\"fail\",\"required\":true}}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "bf6ecdf803f6bccd02df5affe1b0f7921b32a5e8c13facca88afab1756fd492b",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 101,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations[19].inputSchema\",\"fragmentPath\":\"operations[19].inputSchema\",\"fragmentIdentity\":{\"operationId\":\"column.renderer.composeItem.set\",\"type\":\"object\"},\"fragment\":{\"type\":\"object\",\"required\":[\"itemType\",\"item\"]}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "137c86926436b988c356166abef28a3b5b51add2c2f832e473f30af8e523c687",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 102,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations[19].inputSchema.properties\",\"fragmentPath\":\"operations[19].inputSchema.properties\",\"fragmentIdentity\":{\"operationId\":\"column.renderer.composeItem.set\",\"type\":\"object\"},\"fragment\":{\"itemType\":{\"enum\":[\"value\",\"icon\",\"image\",\"badge\",\"link\",\"button\",\"chip\",\"progress\",\"avatar\",\"toggle\",\"menu\",\"rating\",\"html\"],\"description\":\"Discriminator canônico do item existente que será refinado.\"},\"itemField\":{\"type\":\"string\",\"description\":\"Campo estável do item quando itemType sozinho não o identifica de forma única.\"}}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "e0608e6db2d8b5fe3867ce9b9f44daf34602ff437764b7cf434fb44b97a24139",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 103,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations[19].inputSchema.properties.item\",\"fragmentPath\":\"operations[19].inputSchema.properties.item\",\"fragmentIdentity\":{\"operationId\":\"column.renderer.composeItem.set\",\"type\":\"object\"},\"fragment\":{\"type\":\"object\",\"description\":\"Item de uma célula composta. value mostra um campo da linha; os demais tipos exigem seu bloco de configuração homônimo.\",\"required\":[\"type\"],\"properties\":{\"type\":{\"enum\":[\"value\",\"icon\",\"image\",\"badge\",\"link\",\"button\",\"chip\",\"progress\",\"avatar\",\"toggle\",\"menu\",\"rating\",\"microVisualization\",\"html\"]},\"field\":{\"type\":\"string\"},\"textField\":{\"type\":\"string\"},\"valueField\":{\"type\":\"string\"},\"text\":{\"type\":\"string\"},\"emphasis\":{\"enum\":[\"strong\",\"subtle\"],\"description\":\"Semantic hierarchy for a value item. Use strong for the primary value and subtle for supporting context; arbitrary CSS is not part of the compose contract.\"},\"button\":{\"type\":\"object\",\"required\":[\"action\"],\"properties\":{\"label\":{\"type\":\"string\"},\"labelField\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"color\":{\"enum\":[\"primary\",\"accent\",\"warn\"]},\"variant\":{\"enum\":[\"filled\",\"outlined\",\"text\"]},\"size\":{\"enum\":[\"sm\",\"md\",\"lg\"]},\"ariaLabel\":{\"type\":\"string\"},\"disabledCondition\":{\"type\":\"object\",\"description\":\"AST Json Logic\"},\"action\":{\"type\":\"object\",\"required\":[\"id\"],\"properties\":{\"id\":{\"type\":\"string\"},\"payloadExpr\":{\"type\":\"string\"}}}}},\"menu\":{\"type\":\"object\",\"required\":[\"itemsExpr\"],\"properties\":{\"itemsExpr\":{\"type\":\"string\"},\"ariaLabel\":{\"type\":\"string\"}}},\"link\":{\"type\":\"object\",\"anyOf\":[{\"required\":[\"href\"]},{\"required\":[\"hrefField\"]}],\"properties\":{\"text\":{\"type\":\"string\"},\"textField\":{\"type\":\"string\"},\"href\":{\"type\":\"string\"},\"hrefField\":{\"type\":\"string\"},\"target\":{\"enum\":[\"_blank\",\"_self\",\"_parent\",\"_top\"]},\"rel\":{\"type\":\"string\"}}},\"progress\":{\"type\":\"object\",\"required\":[\"valueExpr\"],\"properties\":{\"valueExpr\":{\"type\":\"string\"},\"color\":{\"type\":\"string\"},\"showLabel\":{\"type\":\"boolean\"}}},\"badge\":{\"type\":\"object\",\"anyOf\":[{\"required\":[\"text\"]},{\"required\":[\"textField\"]}],\"properties\":{\"text\":{\"type\":\"string\"},\"textField\":{\"type\":\"string\"},\"color\":{\"enum\":[\"primary\",\"accent\",\"warn\",\"danger\",\"success\",\"info\",\"basic\"]},\"variant\":{\"enum\":[\"filled\",\"outlined\",\"soft\",\"plain\"]},\"icon\":{\"type\":\"string\"},\"tooltip\":{\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\"},\"position\":{\"enum\":[\"top\",\"right\",\"bottom\",\"left\"]},\"bgColor\":{\"type\":\"string\"},\"delayMs\":{\"type\":\"number\"}}}}},\"chip\":{\"type\":\"object\",\"anyOf\":[{\"required\":[\"text\"]},{\"required\":[\"textField\"]}],\"properties\":{\"text\":{\"type\":\"string\"},\"textField\":{\"type\":\"string\"},\"color\":{\"enum\":[\"primary\",\"accent\",\"warn\",\"danger\",\"success\",\"info\",\"basic\"]},\"variant\":{\"enum\":[\"filled\",\"outlined\"]},\"icon\":{\"type\":\"string\"},\"tooltip\":{\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\"},\"position\":{\"enum\":[\"top\",\"right\",\"bottom\",\"left\"]},\"bgColor\":{\"type\":\"string\"},\"delayMs\":{\"type\":\"number\"}}}}},\"icon\":{\"type\":\"object\",\"anyOf\":[{\"required\":[\"name\"]},{\"required\":[\"nameField\"]}],\"properties\":{\"name\":{\"type\":\"string\"},\"nameField\":{\"type\":\"string\"},\"text\":{\"type\":\"string\"},\"textField\":{\"type\":\"string\"},\"prefix\":{\"type\":\"string\"},\"suffix\":{\"type\":\"string\"},\"color\":{\"type\":\"string\"},\"size\":{\"type\":\"number\"},\"ariaLabel\":{\"type\":\"string\"}}},\"image\":{\"type\":\"object\",\"anyOf\":[{\"required\":[\"src\"]},{\"required\":[\"srcField\"]}],\"properties\":{\"src\":{\"type\":\"string\"},\"srcField\":{\"type\":\"string\"},\"alt\":{\"type\":\"string\"},\"altField\":{\"type\":\"string\"},\"width\":{\"type\":\"number\",\"description\":\"Largura visual em pixels; altere apenas quando o pedido mudar o tamanho da imagem.\"},\"height\":{\"type\":\"number\",\"description\":\"Altura visual em pixels; para imagem quadrada, mantenha igual a width.\"},\"shape\":{\"enum\":[\"square\",\"rounded\",\"circle\"],\"description\":\"square não arredonda, rounded usa cantos arredondados e circle materializa um círculo.\"},\"fit\":{\"enum\":[\"cover\",\"contain\"]},\"lazy\":{\"type\":\"boolean\"}}},\"avatar\":{\"type\":\"object\",\"anyOf\":[{\"required\":[\"src\"]},{\"required\":[\"srcField\"]},{\"required\":[\"initialsField\"]},{\"required\":[\"initialsExpr\"]}],\"properties\":{\"src\":{\"type\":\"string\"},\"srcField\":{\"type\":\"string\"},\"alt\":{\"type\":\"string\"},\"altField\":{\"type\":\"string\"},\"initialsField\":{\"type\":\"string\"},\"initialsExpr\":{\"type\":\"string\"},\"shape\":{\"enum\":[\"circle\",\"square\",\"rounded\"],\"description\":\"circle é circular, square é quadrado e rounded é quadrado com cantos arredondados.\"},\"size\":{\"type\":\"number\",\"description\":\"Tamanho visual do avatar em pixels; preserve os demais campos e itens do compose ao mudar apenas o tamanho.\"},\"backgroundColor\":{\"type\":\"string\"},\"textColor\":{\"type\":\"string\"}}},\"toggle\":{\"type\":\"object\",\"required\":[\"stateExpr\",\"action\"],\"properties\":{\"stateExpr\":{\"type\":\"string\"},\"disabledCondition\":{\"type\":\"object\",\"description\":\"AST Json Logic\"},\"ariaLabel\":{\"type\":\"string\"},\"action\":{\"type\":\"object\",\"required\":[\"id\"],\"properties\":{\"id\":{\"type\":\"string\"},\"payloadExpr\":{\"type\":\"string\"}}}}},\"rating\":{\"type\":\"object\",\"required\":[\"valueExpr\"],\"properties\":{\"valueExpr\":{\"type\":\"string\"},\"max\":{\"type\":\"number\"},\"color\":{\"type\":\"string\"},\"outlineColor\":{\"type\":\"string\"},\"size\":{\"enum\":[\"small\",\"medium\",\"large\"]},\"ariaLabel\":{\"type\":\"string\"}}},\"microVisualization\":{\"type\":\"object\",\"required\":[\"visualization\"],\"properties\":{\"visualization\":{\"type\":\"object\",\"description\":\"Expression properties accept a row path such as row.sla or a controlled formula prefixed with =, such as = row.sla.\",\"required\":[\"kind\",\"fallbackText\"],\"properties\":{\"kind\":{\"enum\":[\"line\",\"area\",\"column\",\"comparison\",\"stackedBar\",\"radial\",\"harveyBall\",\"bullet\",\"delta\",\"processFlow\"],\"description\":\"Table-cell guidance: recommended for rapid scanning: delta, bullet, radial, harveyBall, stackedBar. Conditional: line, area and column require horizontal space; comparison increases row height; processFlow needs recognizable steps.\"},\"surface\":{\"const\":\"table-cell\"},\"size\":{\"enum\":[\"xs\",\"sm\",\"md\",\"lg\",\"responsive\"]},\"value\":{},\"valueExpr\":{\"type\":\"string\"},\"valueSuffix\":{\"type\":\"string\"},\"valueSuffixExpr\":{\"type\":\"string\"},\"total\":{\"type\":\"number\"},\"totalExpr\":{\"type\":\"string\"},\"target\":{\"type\":\"number\"},\"targetExpr\":{\"type\":\"string\"},\"baseline\":{\"type\":\"number\"},\"baselineExpr\":{\"type\":\"string\"},\"segments\":{\"type\":\"array\"},\"segmentsExpr\":{\"type\":\"string\"},\"points\":{\"type\":\"array\"},\"pointsExpr\":{\"type\":\"string\"},\"thresholds\":{\"type\":\"array\"},\"thresholdsExpr\":{\"type\":\"string\"},\"items\":{\"type\":\"array\"},\"itemsExpr\":{\"type\":\"string\"},\"tone\":{\"enum\":[\"neutral\",\"info\",\"success\",\"warning\",\"danger\",\"critical\"]},\"toneExpr\":{\"type\":\"string\"},\"ariaLabel\":{\"type\":\"string\"},\"ariaLabelExpr\":{\"type\":\"string\"},\"fallbackText\":{\"type\":\"string\"},\"fallbackTextExpr\":{\"type\":\"string\"}},\"allOf\":[{\"if\":{\"properties\":{\"kind\":{\"enum\":[\"delta\",\"bullet\",\"radial\",\"harveyBall\"]}}},\"then\":{\"anyOf\":[{\"required\":[\"value\"]},{\"required\":[\"valueExpr\"]}]}},{\"if\":{\"properties\":{\"kind\":{\"enum\":[\"line\",\"area\",\"column\",\"comparison\"]}}},\"then\":{\"anyOf\":[{\"required\":[\"points\"]},{\"required\":[\"pointsExpr\"]}]}},{\"if\":{\"properties\":{\"kind\":{\"const\":\"stackedBar\"}}},\"then\":{\"anyOf\":[{\"required\":[\"segments\"]},{\"required\":[\"segmentsExpr\"]}]}},{\"if\":{\"properties\":{\"kind\":{\"const\":\"processFlow\"}}},\"then\":{\"anyOf\":[{\"required\":[\"items\"]},{\"required\":[\"itemsExpr\"]}]}}]}}},\"html\":{\"type\":\"object\",\"required\":[\"template\"],\"properties\":{\"template\":{\"type\":\"string\"},\"sanitize\":{\"enum\":[\"strict\",\"basic\"]},\"emptyFallback\":{\"type\":\"string\"}}}}}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "08dea3e28e8eaaf3e616ff1f546ffc42581c97b14bb56ce2860aa916d66b7593",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 104,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations[19].inputSchema.properties.item\",\"fragmentPath\":\"operations[19].inputSchema.properties.item\",\"fragmentIdentity\":{\"operationId\":\"column.renderer.composeItem.set\",\"type\":\"object\"},\"fragment\":{\"allOf\":[{\"if\":{\"properties\":{\"type\":{\"const\":\"button\"}}},\"then\":{\"required\":[\"button\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"menu\"}}},\"then\":{\"required\":[\"menu\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"link\"}}},\"then\":{\"required\":[\"link\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"progress\"}}},\"then\":{\"required\":[\"progress\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"badge\"}}},\"then\":{\"required\":[\"badge\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"chip\"}}},\"then\":{\"required\":[\"chip\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"icon\"}}},\"then\":{\"required\":[\"icon\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"image\"}}},\"then\":{\"required\":[\"image\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"avatar\"}}},\"then\":{\"required\":[\"avatar\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"toggle\"}}},\"then\":{\"required\":[\"toggle\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"rating\"}}},\"then\":{\"required\":[\"rating\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"microVisualization\"}}},\"then\":{\"required\":[\"microVisualization\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"html\"}}},\"then\":{\"required\":[\"html\"]}}]}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "9774b5ee452d2ec6f3b110198601e4723737cdb937157c3b3af5e9f7d49cbe9d",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 105,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations[19]\",\"fragmentPath\":\"operations[19]\",\"fragmentIdentity\":{\"operationId\":\"column.renderer.composeItem.set\"},\"fragment\":{\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"table-renderer-compose-item-merge\",\"path\":\"columns[].renderer.compose.items[]\"}],\"validators\":[\"target-column-exists\",\"renderer-compose-item-exists\",\"renderer-type-supported\",\"renderer-config-match\",\"renderer-fields-exist\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"columns[].renderer.compose.items[]\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "0e1264ef631bebcb32b86dfbaa6ed2092a5c95dbc4af88d79acc809f559a06fc",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 106,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations[20]\",\"fragmentPath\":\"operations[20]\",\"fragmentIdentity\":{\"operationId\":\"column.conditionalRenderer.add\"},\"fragment\":{\"operationId\":\"column.conditionalRenderer.add\",\"title\":\"Adicionar renderizador condicional\",\"scope\":\"column\",\"targetKind\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"ambiguityPolicy\":\"fail\",\"required\":true}}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "923e48c85b75fef189c640239f4794bdb7886b9f31c4c379838c63ca92d92da7",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 107,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations[20].inputSchema\",\"fragmentPath\":\"operations[20].inputSchema\",\"fragmentIdentity\":{\"operationId\":\"column.conditionalRenderer.add\",\"type\":\"object\"},\"fragment\":{\"type\":\"object\",\"required\":[\"id\",\"condition\"]}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "84bed81cc987fd3940a0f2e6ccc37524e3c17c8fcaf4f6e6bcfcb74a6855bb83",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 108,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations[20].inputSchema.properties\",\"fragmentPath\":\"operations[20].inputSchema.properties\",\"fragmentIdentity\":{\"operationId\":\"column.conditionalRenderer.add\",\"type\":\"object\"},\"fragment\":{\"id\":{\"type\":\"string\",\"description\":\"Identificador estável do renderer condicional (usado para deduplicação)\"},\"condition\":{\"type\":\"object\",\"description\":\"AST Json Logic\"}}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "d1c74dd3efdb6e3eee7ab16369483fdfe99518bad213b4b40769a209d3abf055",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 109,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations[20].inputSchema.properties.renderer\",\"fragmentPath\":\"operations[20].inputSchema.properties.renderer\",\"fragmentIdentity\":{\"operationId\":\"column.conditionalRenderer.add\",\"type\":\"object\"},\"fragment\":{\"type\":\"object\",\"description\":\"Renderizador visual. Quando a intencao pedir chip, use type \\\"chip\\\" e configure chip; efeitos iconBadge materializam badge, nao chip. Ao refinar um compose existente, copie seus itens atuais e altere somente tamanho, forma, direção ou outra propriedade explicitamente solicitada.\",\"required\":[\"type\"]}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "1ae76c0ce0b014d199a36e516d50843c236b8b5d45adf54d67b4fa77d660d276",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 110,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations[20].inputSchema.properties.renderer.properties\",\"fragmentPath\":\"operations[20].inputSchema.properties.renderer.properties\",\"fragmentIdentity\":{\"operationId\":\"column.conditionalRenderer.add\",\"type\":\"object\"},\"fragment\":{\"type\":{\"enum\":[\"icon\",\"image\",\"badge\",\"link\",\"button\",\"chip\",\"progress\",\"avatar\",\"toggle\",\"menu\",\"rating\",\"microVisualization\",\"html\",\"compose\"]},\"typeExpr\":{\"type\":\"string\"},\"button\":{\"type\":\"object\",\"required\":[\"action\"],\"properties\":{\"label\":{\"type\":\"string\"},\"labelField\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"color\":{\"enum\":[\"primary\",\"accent\",\"warn\"]},\"variant\":{\"enum\":[\"filled\",\"outlined\",\"text\"]},\"size\":{\"enum\":[\"sm\",\"md\",\"lg\"]},\"ariaLabel\":{\"type\":\"string\"},\"disabledCondition\":{\"type\":\"object\",\"description\":\"AST Json Logic\"},\"action\":{\"type\":\"object\",\"required\":[\"id\"],\"properties\":{\"id\":{\"type\":\"string\"},\"payloadExpr\":{\"type\":\"string\"}}}}},\"menu\":{\"type\":\"object\",\"required\":[\"itemsExpr\"],\"properties\":{\"itemsExpr\":{\"type\":\"string\"},\"ariaLabel\":{\"type\":\"string\"}}},\"link\":{\"type\":\"object\",\"anyOf\":[{\"required\":[\"href\"]},{\"required\":[\"hrefField\"]}],\"properties\":{\"text\":{\"type\":\"string\"},\"textField\":{\"type\":\"string\"},\"href\":{\"type\":\"string\"},\"hrefField\":{\"type\":\"string\"},\"target\":{\"enum\":[\"_blank\",\"_self\",\"_parent\",\"_top\"]},\"rel\":{\"type\":\"string\"}}},\"progress\":{\"type\":\"object\",\"required\":[\"valueExpr\"],\"properties\":{\"valueExpr\":{\"type\":\"string\"},\"color\":{\"type\":\"string\"},\"showLabel\":{\"type\":\"boolean\"}}},\"badge\":{\"type\":\"object\",\"anyOf\":[{\"required\":[\"text\"]},{\"required\":[\"textField\"]}],\"properties\":{\"text\":{\"type\":\"string\"},\"textField\":{\"type\":\"string\"},\"color\":{\"enum\":[\"primary\",\"accent\",\"warn\",\"danger\",\"success\",\"info\",\"basic\"]},\"variant\":{\"enum\":[\"filled\",\"outlined\",\"soft\",\"plain\"]},\"icon\":{\"type\":\"string\"},\"tooltip\":{\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\"},\"position\":{\"enum\":[\"top\",\"right\",\"bottom\",\"left\"]},\"bgColor\":{\"type\":\"string\"},\"delayMs\":{\"type\":\"number\"}}}}},\"chip\":{\"type\":\"object\",\"anyOf\":[{\"required\":[\"text\"]},{\"required\":[\"textField\"]}],\"properties\":{\"text\":{\"type\":\"string\"},\"textField\":{\"type\":\"string\"},\"color\":{\"enum\":[\"primary\",\"accent\",\"warn\",\"danger\",\"success\",\"info\",\"basic\"]},\"variant\":{\"enum\":[\"filled\",\"outlined\"]},\"icon\":{\"type\":\"string\"},\"tooltip\":{\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\"},\"position\":{\"enum\":[\"top\",\"right\",\"bottom\",\"left\"]},\"bgColor\":{\"type\":\"string\"},\"delayMs\":{\"type\":\"number\"}}}}},\"icon\":{\"type\":\"object\",\"anyOf\":[{\"required\":[\"name\"]},{\"required\":[\"nameField\"]}],\"properties\":{\"name\":{\"type\":\"string\"},\"nameField\":{\"type\":\"string\"},\"text\":{\"type\":\"string\"},\"textField\":{\"type\":\"string\"},\"prefix\":{\"type\":\"string\"},\"suffix\":{\"type\":\"string\"},\"color\":{\"type\":\"string\"},\"size\":{\"type\":\"number\"},\"ariaLabel\":{\"type\":\"string\"}}},\"image\":{\"type\":\"object\",\"anyOf\":[{\"required\":[\"src\"]},{\"required\":[\"srcField\"]}],\"properties\":{\"src\":{\"type\":\"string\"},\"srcField\":{\"type\":\"string\"},\"alt\":{\"type\":\"string\"},\"altField\":{\"type\":\"string\"},\"width\":{\"type\":\"number\",\"description\":\"Largura visual em pixels; altere apenas quando o pedido mudar o tamanho da imagem.\"},\"height\":{\"type\":\"number\",\"description\":\"Altura visual em pixels; para imagem quadrada, mantenha igual a width.\"},\"shape\":{\"enum\":[\"square\",\"rounded\",\"circle\"],\"description\":\"square não arredonda, rounded usa cantos arredondados e circle materializa um círculo.\"},\"fit\":{\"enum\":[\"cover\",\"contain\"]},\"lazy\":{\"type\":\"boolean\"}}},\"avatar\":{\"type\":\"object\",\"anyOf\":[{\"required\":[\"src\"]},{\"required\":[\"srcField\"]},{\"required\":[\"initialsField\"]},{\"required\":[\"initialsExpr\"]}],\"properties\":{\"src\":{\"type\":\"string\"},\"srcField\":{\"type\":\"string\"},\"alt\":{\"type\":\"string\"},\"altField\":{\"type\":\"string\"},\"initialsField\":{\"type\":\"string\"},\"initialsExpr\":{\"type\":\"string\"},\"shape\":{\"enum\":[\"circle\",\"square\",\"rounded\"],\"description\":\"circle é circular, square é quadrado e rounded é quadrado com cantos arredondados.\"},\"size\":{\"type\":\"number\",\"description\":\"Tamanho visual do avatar em pixels; preserve os demais campos e itens do compose ao mudar apenas o tamanho.\"},\"backgroundColor\":{\"type\":\"string\"},\"textColor\":{\"type\":\"string\"}}},\"toggle\":{\"type\":\"object\",\"required\":[\"stateExpr\",\"action\"],\"properties\":{\"stateExpr\":{\"type\":\"string\"},\"disabledCondition\":{\"type\":\"object\",\"description\":\"AST Json Logic\"},\"ariaLabel\":{\"type\":\"string\"},\"action\":{\"type\":\"object\",\"required\":[\"id\"],\"properties\":{\"id\":{\"type\":\"string\"},\"payloadExpr\":{\"type\":\"string\"}}}}},\"rating\":{\"type\":\"object\",\"required\":[\"valueExpr\"],\"properties\":{\"valueExpr\":{\"type\":\"string\"},\"max\":{\"type\":\"number\"},\"color\":{\"type\":\"string\"},\"outlineColor\":{\"type\":\"string\"},\"size\":{\"enum\":[\"small\",\"medium\",\"large\"]},\"ariaLabel\":{\"type\":\"string\"}}},\"microVisualization\":{\"type\":\"object\",\"required\":[\"visualization\"],\"properties\":{\"visualization\":{\"type\":\"object\",\"description\":\"Expression properties accept a row path such as row.sla or a controlled formula prefixed with =, such as = row.sla.\",\"required\":[\"kind\",\"fallbackText\"],\"properties\":{\"kind\":{\"enum\":[\"line\",\"area\",\"column\",\"comparison\",\"stackedBar\",\"radial\",\"harveyBall\",\"bullet\",\"delta\",\"processFlow\"],\"description\":\"Table-cell guidance: recommended for rapid scanning: delta, bullet, radial, harveyBall, stackedBar. Conditional: line, area and column require horizontal space; comparison increases row height; processFlow needs recognizable steps.\"},\"surface\":{\"const\":\"table-cell\"},\"size\":{\"enum\":[\"xs\",\"sm\",\"md\",\"lg\",\"responsive\"]},\"value\":{},\"valueExpr\":{\"type\":\"string\"},\"valueSuffix\":{\"type\":\"string\"},\"valueSuffixExpr\":{\"type\":\"string\"},\"total\":{\"type\":\"number\"},\"totalExpr\":{\"type\":\"string\"},\"target\":{\"type\":\"number\"},\"targetExpr\":{\"type\":\"string\"},\"baseline\":{\"type\":\"number\"},\"baselineExpr\":{\"type\":\"string\"},\"segments\":{\"type\":\"array\"},\"segmentsExpr\":{\"type\":\"string\"},\"points\":{\"type\":\"array\"},\"pointsExpr\":{\"type\":\"string\"},\"thresholds\":{\"type\":\"array\"},\"thresholdsExpr\":{\"type\":\"string\"},\"items\":{\"type\":\"array\"},\"itemsExpr\":{\"type\":\"string\"},\"tone\":{\"enum\":[\"neutral\",\"info\",\"success\",\"warning\",\"danger\",\"critical\"]},\"toneExpr\":{\"type\":\"string\"},\"ariaLabel\":{\"type\":\"string\"},\"ariaLabelExpr\":{\"type\":\"string\"},\"fallbackText\":{\"type\":\"string\"},\"fallbackTextExpr\":{\"type\":\"string\"}},\"allOf\":[{\"if\":{\"properties\":{\"kind\":{\"enum\":[\"delta\",\"bullet\",\"radial\",\"harveyBall\"]}}},\"then\":{\"anyOf\":[{\"required\":[\"value\"]},{\"required\":[\"valueExpr\"]}]}},{\"if\":{\"properties\":{\"kind\":{\"enum\":[\"line\",\"area\",\"column\",\"comparison\"]}}},\"then\":{\"anyOf\":[{\"required\":[\"points\"]},{\"required\":[\"pointsExpr\"]}]}},{\"if\":{\"properties\":{\"kind\":{\"const\":\"stackedBar\"}}},\"then\":{\"anyOf\":[{\"required\":[\"segments\"]},{\"required\":[\"segmentsExpr\"]}]}},{\"if\":{\"properties\":{\"kind\":{\"const\":\"processFlow\"}}},\"then\":{\"anyOf\":[{\"required\":[\"items\"]},{\"required\":[\"itemsExpr\"]}]}}]}}},\"html\":{\"type\":\"object\",\"required\":[\"template\"],\"properties\":{\"template\":{\"type\":\"string\"},\"sanitize\":{\"enum\":[\"strict\",\"basic\"]},\"emptyFallback\":{\"type\":\"string\"}}}}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "2ff3e1950e1d5d757c121c3b032fa3301d9f3fd7645010842e7648cf6dcd3b73",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 111,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations[20].inputSchema.properties.renderer.properties.compose\",\"fragmentPath\":\"operations[20].inputSchema.properties.renderer.properties.compose\",\"fragmentIdentity\":{\"operationId\":\"column.conditionalRenderer.add\",\"type\":\"object\"},\"fragment\":{\"type\":\"object\",\"description\":\"Composição de vários itens dentro da mesma célula. Em refinamentos, preserve os itens atuais e altere somente o atributo solicitado.\",\"required\":[\"items\"]}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "235dd72b74a1babee1bc71386b8b8c3e606b453a11a63cd737226a0adfd73328",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 112,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations[20].inputSchema.properties.renderer.properties.compose.properties.items\",\"fragmentPath\":\"operations[20].inputSchema.properties.renderer.properties.compose.properties.items\",\"fragmentIdentity\":{\"operationId\":\"column.conditionalRenderer.add\",\"type\":\"array\"},\"fragment\":{\"type\":\"array\",\"minItems\":1}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "5f345c67fa207d19580417f50d2cedbb776f288440103aef358fc20580e62df8",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 113,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations[20].inputSchema.properties.renderer.properties.compose.properties.items.items\",\"fragmentPath\":\"operations[20].inputSchema.properties.renderer.properties.compose.properties.items.items\",\"fragmentIdentity\":{\"operationId\":\"column.conditionalRenderer.add\",\"type\":\"object\"},\"fragment\":{\"type\":\"object\",\"description\":\"Item de uma célula composta. value mostra um campo da linha; os demais tipos exigem seu bloco de configuração homônimo.\",\"required\":[\"type\"],\"properties\":{\"type\":{\"enum\":[\"value\",\"icon\",\"image\",\"badge\",\"link\",\"button\",\"chip\",\"progress\",\"avatar\",\"toggle\",\"menu\",\"rating\",\"microVisualization\",\"html\"]},\"field\":{\"type\":\"string\"},\"textField\":{\"type\":\"string\"},\"valueField\":{\"type\":\"string\"},\"text\":{\"type\":\"string\"},\"emphasis\":{\"enum\":[\"strong\",\"subtle\"],\"description\":\"Semantic hierarchy for a value item. Use strong for the primary value and subtle for supporting context; arbitrary CSS is not part of the compose contract.\"},\"button\":{\"type\":\"object\",\"required\":[\"action\"],\"properties\":{\"label\":{\"type\":\"string\"},\"labelField\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"color\":{\"enum\":[\"primary\",\"accent\",\"warn\"]},\"variant\":{\"enum\":[\"filled\",\"outlined\",\"text\"]},\"size\":{\"enum\":[\"sm\",\"md\",\"lg\"]},\"ariaLabel\":{\"type\":\"string\"},\"disabledCondition\":{\"type\":\"object\",\"description\":\"AST Json Logic\"},\"action\":{\"type\":\"object\",\"required\":[\"id\"],\"properties\":{\"id\":{\"type\":\"string\"},\"payloadExpr\":{\"type\":\"string\"}}}}},\"menu\":{\"type\":\"object\",\"required\":[\"itemsExpr\"],\"properties\":{\"itemsExpr\":{\"type\":\"string\"},\"ariaLabel\":{\"type\":\"string\"}}},\"link\":{\"type\":\"object\",\"anyOf\":[{\"required\":[\"href\"]},{\"required\":[\"hrefField\"]}],\"properties\":{\"text\":{\"type\":\"string\"},\"textField\":{\"type\":\"string\"},\"href\":{\"type\":\"string\"},\"hrefField\":{\"type\":\"string\"},\"target\":{\"enum\":[\"_blank\",\"_self\",\"_parent\",\"_top\"]},\"rel\":{\"type\":\"string\"}}},\"progress\":{\"type\":\"object\",\"required\":[\"valueExpr\"],\"properties\":{\"valueExpr\":{\"type\":\"string\"},\"color\":{\"type\":\"string\"},\"showLabel\":{\"type\":\"boolean\"}}},\"badge\":{\"type\":\"object\",\"anyOf\":[{\"required\":[\"text\"]},{\"required\":[\"textField\"]}],\"properties\":{\"text\":{\"type\":\"string\"},\"textField\":{\"type\":\"string\"},\"color\":{\"enum\":[\"primary\",\"accent\",\"warn\",\"danger\",\"success\",\"info\",\"basic\"]},\"variant\":{\"enum\":[\"filled\",\"outlined\",\"soft\",\"plain\"]},\"icon\":{\"type\":\"string\"},\"tooltip\":{\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\"},\"position\":{\"enum\":[\"top\",\"right\",\"bottom\",\"left\"]},\"bgColor\":{\"type\":\"string\"},\"delayMs\":{\"type\":\"number\"}}}}},\"chip\":{\"type\":\"object\",\"anyOf\":[{\"required\":[\"text\"]},{\"required\":[\"textField\"]}],\"properties\":{\"text\":{\"type\":\"string\"},\"textField\":{\"type\":\"string\"},\"color\":{\"enum\":[\"primary\",\"accent\",\"warn\",\"danger\",\"success\",\"info\",\"basic\"]},\"variant\":{\"enum\":[\"filled\",\"outlined\"]},\"icon\":{\"type\":\"string\"},\"tooltip\":{\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\"},\"position\":{\"enum\":[\"top\",\"right\",\"bottom\",\"left\"]},\"bgColor\":{\"type\":\"string\"},\"delayMs\":{\"type\":\"number\"}}}}},\"icon\":{\"type\":\"object\",\"anyOf\":[{\"required\":[\"name\"]},{\"required\":[\"nameField\"]}],\"properties\":{\"name\":{\"type\":\"string\"},\"nameField\":{\"type\":\"string\"},\"text\":{\"type\":\"string\"},\"textField\":{\"type\":\"string\"},\"prefix\":{\"type\":\"string\"},\"suffix\":{\"type\":\"string\"},\"color\":{\"type\":\"string\"},\"size\":{\"type\":\"number\"},\"ariaLabel\":{\"type\":\"string\"}}},\"image\":{\"type\":\"object\",\"anyOf\":[{\"required\":[\"src\"]},{\"required\":[\"srcField\"]}],\"properties\":{\"src\":{\"type\":\"string\"},\"srcField\":{\"type\":\"string\"},\"alt\":{\"type\":\"string\"},\"altField\":{\"type\":\"string\"},\"width\":{\"type\":\"number\",\"description\":\"Largura visual em pixels; altere apenas quando o pedido mudar o tamanho da imagem.\"},\"height\":{\"type\":\"number\",\"description\":\"Altura visual em pixels; para imagem quadrada, mantenha igual a width.\"},\"shape\":{\"enum\":[\"square\",\"rounded\",\"circle\"],\"description\":\"square não arredonda, rounded usa cantos arredondados e circle materializa um círculo.\"},\"fit\":{\"enum\":[\"cover\",\"contain\"]},\"lazy\":{\"type\":\"boolean\"}}},\"avatar\":{\"type\":\"object\",\"anyOf\":[{\"required\":[\"src\"]},{\"required\":[\"srcField\"]},{\"required\":[\"initialsField\"]},{\"required\":[\"initialsExpr\"]}],\"properties\":{\"src\":{\"type\":\"string\"},\"srcField\":{\"type\":\"string\"},\"alt\":{\"type\":\"string\"},\"altField\":{\"type\":\"string\"},\"initialsField\":{\"type\":\"string\"},\"initialsExpr\":{\"type\":\"string\"},\"shape\":{\"enum\":[\"circle\",\"square\",\"rounded\"],\"description\":\"circle é circular, square é quadrado e rounded é quadrado com cantos arredondados.\"},\"size\":{\"type\":\"number\",\"description\":\"Tamanho visual do avatar em pixels; preserve os demais campos e itens do compose ao mudar apenas o tamanho.\"},\"backgroundColor\":{\"type\":\"string\"},\"textColor\":{\"type\":\"string\"}}},\"toggle\":{\"type\":\"object\",\"required\":[\"stateExpr\",\"action\"],\"properties\":{\"stateExpr\":{\"type\":\"string\"},\"disabledCondition\":{\"type\":\"object\",\"description\":\"AST Json Logic\"},\"ariaLabel\":{\"type\":\"string\"},\"action\":{\"type\":\"object\",\"required\":[\"id\"],\"properties\":{\"id\":{\"type\":\"string\"},\"payloadExpr\":{\"type\":\"string\"}}}}},\"rating\":{\"type\":\"object\",\"required\":[\"valueExpr\"],\"properties\":{\"valueExpr\":{\"type\":\"string\"},\"max\":{\"type\":\"number\"},\"color\":{\"type\":\"string\"},\"outlineColor\":{\"type\":\"string\"},\"size\":{\"enum\":[\"small\",\"medium\",\"large\"]},\"ariaLabel\":{\"type\":\"string\"}}},\"microVisualization\":{\"type\":\"object\",\"required\":[\"visualization\"],\"properties\":{\"visualization\":{\"type\":\"object\",\"description\":\"Expression properties accept a row path such as row.sla or a controlled formula prefixed with =, such as = row.sla.\",\"required\":[\"kind\",\"fallbackText\"],\"properties\":{\"kind\":{\"enum\":[\"line\",\"area\",\"column\",\"comparison\",\"stackedBar\",\"radial\",\"harveyBall\",\"bullet\",\"delta\",\"processFlow\"],\"description\":\"Table-cell guidance: recommended for rapid scanning: delta, bullet, radial, harveyBall, stackedBar. Conditional: line, area and column require horizontal space; comparison increases row height; processFlow needs recognizable steps.\"},\"surface\":{\"const\":\"table-cell\"},\"size\":{\"enum\":[\"xs\",\"sm\",\"md\",\"lg\",\"responsive\"]},\"value\":{},\"valueExpr\":{\"type\":\"string\"},\"valueSuffix\":{\"type\":\"string\"},\"valueSuffixExpr\":{\"type\":\"string\"},\"total\":{\"type\":\"number\"},\"totalExpr\":{\"type\":\"string\"},\"target\":{\"type\":\"number\"},\"targetExpr\":{\"type\":\"string\"},\"baseline\":{\"type\":\"number\"},\"baselineExpr\":{\"type\":\"string\"},\"segments\":{\"type\":\"array\"},\"segmentsExpr\":{\"type\":\"string\"},\"points\":{\"type\":\"array\"},\"pointsExpr\":{\"type\":\"string\"},\"thresholds\":{\"type\":\"array\"},\"thresholdsExpr\":{\"type\":\"string\"},\"items\":{\"type\":\"array\"},\"itemsExpr\":{\"type\":\"string\"},\"tone\":{\"enum\":[\"neutral\",\"info\",\"success\",\"warning\",\"danger\",\"critical\"]},\"toneExpr\":{\"type\":\"string\"},\"ariaLabel\":{\"type\":\"string\"},\"ariaLabelExpr\":{\"type\":\"string\"},\"fallbackText\":{\"type\":\"string\"},\"fallbackTextExpr\":{\"type\":\"string\"}},\"allOf\":[{\"if\":{\"properties\":{\"kind\":{\"enum\":[\"delta\",\"bullet\",\"radial\",\"harveyBall\"]}}},\"then\":{\"anyOf\":[{\"required\":[\"value\"]},{\"required\":[\"valueExpr\"]}]}},{\"if\":{\"properties\":{\"kind\":{\"enum\":[\"line\",\"area\",\"column\",\"comparison\"]}}},\"then\":{\"anyOf\":[{\"required\":[\"points\"]},{\"required\":[\"pointsExpr\"]}]}},{\"if\":{\"properties\":{\"kind\":{\"const\":\"stackedBar\"}}},\"then\":{\"anyOf\":[{\"required\":[\"segments\"]},{\"required\":[\"segmentsExpr\"]}]}},{\"if\":{\"properties\":{\"kind\":{\"const\":\"processFlow\"}}},\"then\":{\"anyOf\":[{\"required\":[\"items\"]},{\"required\":[\"itemsExpr\"]}]}}]}}},\"html\":{\"type\":\"object\",\"required\":[\"template\"],\"properties\":{\"template\":{\"type\":\"string\"},\"sanitize\":{\"enum\":[\"strict\",\"basic\"]},\"emptyFallback\":{\"type\":\"string\"}}}}}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "49aa19663808b335c0b5eb1805593d33b408448a377129e1b06335ae7283f416",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 114,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations[20].inputSchema.properties.renderer.properties.compose.properties.items.items\",\"fragmentPath\":\"operations[20].inputSchema.properties.renderer.properties.compose.properties.items.items\",\"fragmentIdentity\":{\"operationId\":\"column.conditionalRenderer.add\",\"type\":\"object\"},\"fragment\":{\"allOf\":[{\"if\":{\"properties\":{\"type\":{\"const\":\"button\"}}},\"then\":{\"required\":[\"button\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"menu\"}}},\"then\":{\"required\":[\"menu\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"link\"}}},\"then\":{\"required\":[\"link\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"progress\"}}},\"then\":{\"required\":[\"progress\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"badge\"}}},\"then\":{\"required\":[\"badge\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"chip\"}}},\"then\":{\"required\":[\"chip\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"icon\"}}},\"then\":{\"required\":[\"icon\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"image\"}}},\"then\":{\"required\":[\"image\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"avatar\"}}},\"then\":{\"required\":[\"avatar\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"toggle\"}}},\"then\":{\"required\":[\"toggle\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"rating\"}}},\"then\":{\"required\":[\"rating\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"microVisualization\"}}},\"then\":{\"required\":[\"microVisualization\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"html\"}}},\"then\":{\"required\":[\"html\"]}}]}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "eed622e48bae90d63dbc54a81a604aa290eaba940bc2f96698682c1eaee19df7",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 115,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations[20].inputSchema.properties.renderer.properties.compose.properties\",\"fragmentPath\":\"operations[20].inputSchema.properties.renderer.properties.compose.properties\",\"fragmentIdentity\":{\"operationId\":\"column.conditionalRenderer.add\",\"type\":\"object\"},\"fragment\":{\"layout\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"gap\":{\"type\":\"number\"},\"direction\":{\"enum\":[\"row\",\"column\"],\"description\":\"row coloca os itens lado a lado na mesma linha; column empilha verticalmente, por exemplo foto em cima e código embaixo.\"},\"align\":{\"enum\":[\"start\",\"center\",\"end\"]},\"wrap\":{\"type\":\"boolean\"},\"ellipsis\":{\"type\":\"boolean\"}}}}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "e27ccde0f3f9461ae48cbb0e313d84e1523cd1ad1c8aa68ea0504bde0b874194",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 116,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations[20].inputSchema.properties.renderer\",\"fragmentPath\":\"operations[20].inputSchema.properties.renderer\",\"fragmentIdentity\":{\"operationId\":\"column.conditionalRenderer.add\",\"type\":\"object\"},\"fragment\":{\"allOf\":[{\"if\":{\"properties\":{\"type\":{\"const\":\"button\"}}},\"then\":{\"required\":[\"button\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"menu\"}}},\"then\":{\"required\":[\"menu\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"link\"}}},\"then\":{\"required\":[\"link\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"progress\"}}},\"then\":{\"required\":[\"progress\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"badge\"}}},\"then\":{\"required\":[\"badge\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"chip\"}}},\"then\":{\"required\":[\"chip\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"icon\"}}},\"then\":{\"required\":[\"icon\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"image\"}}},\"then\":{\"required\":[\"image\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"avatar\"}}},\"then\":{\"required\":[\"avatar\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"toggle\"}}},\"then\":{\"required\":[\"toggle\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"rating\"}}},\"then\":{\"required\":[\"rating\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"microVisualization\"}}},\"then\":{\"required\":[\"microVisualization\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"html\"}}},\"then\":{\"required\":[\"html\"]}},{\"if\":{\"properties\":{\"type\":{\"const\":\"compose\"}}},\"then\":{\"required\":[\"compose\"]}}]}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "d9216c59796faa3474ca38eb17425e57a51b12abb15ff43b3963c9ded5ea6089",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 117,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations[20].inputSchema.properties\",\"fragmentPath\":\"operations[20].inputSchema.properties\",\"fragmentIdentity\":{\"operationId\":\"column.conditionalRenderer.add\",\"type\":\"object\"},\"fragment\":{\"tooltip\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"text\":{\"type\":\"string\"},\"position\":{\"enum\":[\"top\",\"right\",\"bottom\",\"left\"]},\"bgColor\":{\"type\":\"string\"},\"delayMs\":{\"type\":\"number\"}}},\"animation\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"enabled\":{\"type\":\"boolean\",\"description\":\"false desativa a animacao sem remover a regra.\"},\"preset\":{\"enum\":[\"info-soft\",\"success-confirm\",\"warning-attention\",\"critical-alert\",\"audit-review\",\"sync-pending\",\"pulse-soft\",\"fade-soft\",\"sla-warning\",\"sla-breach\",\"risk-elevated\",\"risk-critical\",\"audit-warning\",\"sync-warning\"],\"description\":\"Preset semantico recomendado. Preferir preset antes de type bruto.\"},\"type\":{\"enum\":[\"pulse\",\"blink\",\"grow\",\"fade\",\"slide-in\",\"border-pulse\"]},\"durationMs\":{\"type\":\"number\"},\"trigger\":{\"enum\":[\"onChange\",\"onAppear\",\"onHover\",\"onConditionEnter\",\"onConditionExit\",\"onDataRefresh\"]},\"repeat\":{\"oneOf\":[{\"enum\":[\"once\",\"loop\",\"infinite\"]},{\"type\":\"number\"}]},\"delayMs\":{\"type\":\"number\"},\"intensity\":{\"enum\":[\"subtle\",\"normal\",\"strong\"]}}},\"effects\":{\"type\":\"array\",\"description\":\"Efeitos complementares de estilo, layout, icone ou badge. Nao substituem renderer quando a intencao exige um tipo visual especifico como chip.\",\"items\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"id\":{\"type\":\"string\"},\"scope\":{\"enum\":[\"cell\",\"row\",\"column\",\"table\"]},\"description\":{\"type\":\"string\"},\"estilo\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"color\":{\"type\":\"string\"},\"bgColor\":{\"type\":\"string\"},\"bold\":{\"type\":\"boolean\"},\"italic\":{\"type\":\"boolean\"},\"underline\":{\"type\":\"boolean\"},\"transform\":{\"enum\":[\"uppercase\",\"lowercase\",\"capitalize\",null]},\"opacity\":{\"type\":\"number\"},\"fontScale\":{\"type\":\"number\"}}},\"layout\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"border\":{\"enum\":[\"none\",\"left\",\"right\",\"top\",\"bottom\",\"all\"]},\"borderColor\":{\"type\":\"string\"},\"borderWidth\":{\"type\":\"number\"},\"padding\":{\"type\":\"number\"},\"align\":{\"enum\":[\"start\",\"center\",\"end\"]},\"elevation\":{\"type\":\"number\"}}},\"iconBadge\":{\"type\":\"object\",\"description\":\"Adiciona icone e/ou badge ao valor materializado. Nao representa chip; para chip use renderer.type \\\"chip\\\" e renderer.chip.\",\"additionalProperties\":false,\"properties\":{\"icon\":{\"type\":\"string\"},\"iconColor\":{\"type\":\"string\"},\"iconPos\":{\"enum\":[\"before\",\"after\",\"overlay\"]},\"badgeText\":{\"type\":\"string\"},\"badgeStyle\":{\"enum\":[\"solid\",\"soft\",\"outline\"]},\"badgeColor\":{\"type\":\"string\"}}},\"background\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"color\":{\"type\":\"string\"},\"gradient\":{\"type\":\"string\"},\"alpha\":{\"type\":\"number\"},\"blur\":{\"type\":\"number\"}}},\"animation\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"enabled\":{\"type\":\"boolean\",\"description\":\"false desativa a animacao sem remover a regra.\"},\"preset\":{\"enum\":[\"info-soft\",\"success-confirm\",\"warning-attention\",\"critical-alert\",\"audit-review\",\"sync-pending\",\"pulse-soft\",\"fade-soft\",\"sla-warning\",\"sla-breach\",\"risk-elevated\",\"risk-critical\",\"audit-warning\",\"sync-warning\"],\"description\":\"Preset semantico recomendado. Preferir preset antes de type bruto.\"},\"type\":{\"enum\":[\"pulse\",\"blink\",\"grow\",\"fade\",\"slide-in\",\"border-pulse\"]},\"durationMs\":{\"type\":\"number\"},\"trigger\":{\"enum\":[\"onChange\",\"onAppear\",\"onHover\",\"onConditionEnter\",\"onConditionExit\",\"onDataRefresh\"]},\"repeat\":{\"oneOf\":[{\"enum\":[\"once\",\"loop\",\"infinite\"]},{\"type\":\"number\"}]},\"delayMs\":{\"type\":\"number\"},\"intensity\":{\"enum\":[\"subtle\",\"normal\",\"strong\"]}}},\"tooltip\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"text\":{\"type\":\"string\"},\"position\":{\"enum\":[\"top\",\"right\",\"bottom\",\"left\"]},\"bgColor\":{\"type\":\"string\"},\"delayMs\":{\"type\":\"number\"}}},\"cssClass\":{\"type\":\"string\"},\"inlineStyle\":{\"type\":\"string\"}}}},\"enabled\":{\"type\":\"boolean\"},\"description\":{\"type\":\"string\"}}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "0a2cdd50c1dc9f729f62186aaa24edc53153cc5fba3740c749d4ff2e2f6f47f4",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 118,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations[20].inputSchema\",\"fragmentPath\":\"operations[20].inputSchema\",\"fragmentIdentity\":{\"operationId\":\"column.conditionalRenderer.add\",\"type\":\"object\"},\"fragment\":{\"anyOf\":[{\"required\":[\"renderer\"]},{\"required\":[\"tooltip\"]},{\"required\":[\"animation\"]},{\"required\":[\"effects\"]}]}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "0c08f91e07786b82deeff72217a88c199f54c5979667bd9e0064de63275b0eba",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 119,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations[20]\",\"fragmentPath\":\"operations[20]\",\"fragmentIdentity\":{\"operationId\":\"column.conditionalRenderer.add\"},\"fragment\":{\"effects\":[{\"kind\":\"append-unique\",\"path\":\"columns[].conditionalRenderers[]\",\"key\":\"id\"}],\"validators\":[\"target-column-exists\",\"computed-expression-valid\",\"renderer-config-match\",\"renderer-fields-exist\"],\"affectedPaths\":[\"columns[].conditionalRenderers[]\",\"columns[].conditionalRenderers[].tooltip\",\"columns[].conditionalRenderers[].animation\",\"columns[].conditionalRenderers[].effects\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "9afc9707ea467c7cf4b8f9e0a00daf8ab36e25e06e00c6bb3af7354928fd81a5",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 120,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"column.conditionalStyle.add\",\"title\":\"Adicionar regra de estilo condicional na coluna\",\"scope\":\"column\",\"targetKind\":\"rule\",\"target\":{\"kind\":\"rule\",\"resolver\":\"style-rule-in-column-or-row\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"id\",\"condition\"],\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Identificador estÃ¡vel da regra de estilo da coluna\"},\"condition\":{\"type\":\"object\",\"description\":\"AST Json Logic\"},\"surfacePresetRef\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"id\",\"catalogVersion\"],\"properties\":{\"id\":{\"enum\":[\"success\",\"warning\",\"danger\",\"highlight\"]},\"catalogVersion\":{\"const\":\"0.2.0\"}}},\"cssClass\":{\"type\":\"string\"},\"style\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"background\":{\"type\":\"string\"},\"backgroundColor\":{\"type\":\"string\"},\"background-color\":{\"type\":\"string\"},\"color\":{\"type\":\"string\"},\"fontWeight\":{\"type\":\"string\"},\"font-weight\":{\"type\":\"string\"},\"fontStyle\":{\"type\":\"string\"},\"font-style\":{\"type\":\"string\"},\"textDecoration\":{\"type\":\"string\"},\"text-decoration\":{\"type\":\"string\"},\"textTransform\":{\"type\":\"string\"},\"text-transform\":{\"type\":\"string\"},\"opacity\":{\"oneOf\":[{\"type\":\"string\"},{\"type\":\"number\"}]},\"border\":{\"type\":\"string\"},\"borderLeft\":{\"type\":\"string\"},\"border-left\":{\"type\":\"string\"},\"borderRight\":{\"type\":\"string\"},\"border-right\":{\"type\":\"string\"},\"borderTop\":{\"type\":\"string\"},\"border-top\":{\"type\":\"string\"},\"borderBottom\":{\"type\":\"string\"},\"border-bottom\":{\"type\":\"string\"}}},\"tooltip\":{\"type\":\"object\"},\"effects\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"id\":{\"type\":\"string\"},\"scope\":{\"enum\":[\"cell\",\"row\",\"column\",\"table\"]},\"description\":{\"type\":\"string\"},\"estilo\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"color\":{\"type\":\"string\"},\"bgColor\":{\"type\":\"string\"},\"bold\":{\"type\":\"boolean\"},\"italic\":{\"type\":\"boolean\"},\"underline\":{\"type\":\"boolean\"},\"transform\":{\"enum\":[\"uppercase\",\"lowercase\",\"capitalize\",null]},\"opacity\":{\"type\":\"number\"},\"fontScale\":{\"type\":\"number\"}}},\"layout\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"border\":{\"enum\":[\"none\",\"left\",\"right\",\"top\",\"bottom\",\"all\"]},\"borderColor\":{\"type\":\"string\"},\"borderWidth\":{\"type\":\"number\"},\"padding\":{\"type\":\"number\"},\"align\":{\"enum\":[\"start\",\"center\",\"end\"]},\"elevation\":{\"type\":\"number\"}}},\"iconBadge\":{\"type\":\"object\",\"description\":\"Adiciona icone e/ou badge ao valor materializado. Nao representa chip; para chip use renderer.type \\\"chip\\\" e renderer.chip.\",\"additionalProperties\":false,\"properties\":{\"icon\":{\"type\":\"string\"},\"iconColor\":{\"type\":\"string\"},\"iconPos\":{\"enum\":[\"before\",\"after\",\"overlay\"]},\"badgeText\":{\"type\":\"string\"},\"badgeStyle\":{\"enum\":[\"solid\",\"soft\",\"outline\"]},\"badgeColor\":{\"type\":\"string\"}}},\"background\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"color\":{\"type\":\"string\"},\"gradient\":{\"type\":\"string\"},\"alpha\":{\"type\":\"number\"},\"blur\":{\"type\":\"number\"}}},\"animation\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"enabled\":{\"type\":\"boolean\",\"description\":\"false desativa a animacao sem remover a regra.\"},\"preset\":{\"enum\":[\"info-soft\",\"success-confirm\",\"warning-attention\",\"critical-alert\",\"audit-review\",\"sync-pending\",\"pulse-soft\",\"fade-soft\",\"sla-warning\",\"sla-breach\",\"risk-elevated\",\"risk-critical\",\"audit-warning\",\"sync-warning\"],\"description\":\"Preset semantico recomendado. Preferir preset antes de type bruto.\"},\"type\":{\"enum\":[\"pulse\",\"blink\",\"grow\",\"fade\",\"slide-in\",\"border-pulse\"]},\"durationMs\":{\"type\":\"number\"},\"trigger\":{\"enum\":[\"onChange\",\"onAppear\",\"onHover\",\"onConditionEnter\",\"onConditionExit\",\"onDataRefresh\"]},\"repeat\":{\"oneOf\":[{\"enum\":[\"once\",\"loop\",\"infinite\"]},{\"type\":\"number\"}]},\"delayMs\":{\"type\":\"number\"},\"intensity\":{\"enum\":[\"subtle\",\"normal\",\"strong\"]}}},\"tooltip\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"text\":{\"type\":\"string\"},\"position\":{\"enum\":[\"top\",\"right\",\"bottom\",\"left\"]},\"bgColor\":{\"type\":\"string\"},\"delayMs\":{\"type\":\"number\"}}},\"cssClass\":{\"type\":\"string\"},\"inlineStyle\":{\"type\":\"string\"}}}},\"description\":{\"type\":\"string\"}},\"anyOf\":[{\"required\":[\"surfacePresetRef\"]},{\"required\":[\"cssClass\"]},{\"required\":[\"style\"]},{\"required\":[\"tooltip\"]},{\"required\":[\"effects\"]}]},\"effects\":[{\"kind\":\"append-unique\",\"path\":\"columns[].conditionalStyles[]\",\"key\":\"id\"}],\"validators\":[\"target-column-exists\",\"computed-expression-valid\",\"conditional-style-valid\",\"conditional-surface-accessible\"],\"affectedPaths\":[\"columns[].conditionalStyles[]\",\"columns[].conditionalStyles[].effects\",\"columns[].conditionalStyles[].tooltip\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]}]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "618eac6d5c904df8fd9ca8af6c49e0c5d793fd255a1a9ed289f716559fa88c06",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 121,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"row.styleRule.add\",\"title\":\"Adicionar destaque visual condicional à linha\",\"scope\":\"global\",\"targetKind\":\"rule\",\"target\":{\"kind\":\"rule\",\"resolver\":\"style-rule-in-column-or-row\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"id\",\"condition\"],\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Identificador estável da regra (usado para deduplicação via append-unique)\"},\"condition\":{\"type\":\"object\",\"description\":\"AST Json Logic\"},\"surfacePresetRef\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"id\",\"catalogVersion\"],\"properties\":{\"id\":{\"enum\":[\"success\",\"warning\",\"danger\",\"highlight\"]},\"catalogVersion\":{\"const\":\"0.2.0\"}}},\"style\":{\"description\":\"Estilo CSS seguro; fundo sem color usa foreground automático governado no runtime\"},\"cssClass\":{\"type\":\"string\"},\"effects\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"id\":{\"type\":\"string\"},\"scope\":{\"enum\":[\"cell\",\"row\",\"column\",\"table\"]},\"description\":{\"type\":\"string\"},\"estilo\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"color\":{\"type\":\"string\"},\"bgColor\":{\"type\":\"string\"},\"bold\":{\"type\":\"boolean\"},\"italic\":{\"type\":\"boolean\"},\"underline\":{\"type\":\"boolean\"},\"transform\":{\"enum\":[\"uppercase\",\"lowercase\",\"capitalize\",null]},\"opacity\":{\"type\":\"number\"},\"fontScale\":{\"type\":\"number\"}}},\"layout\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"border\":{\"enum\":[\"none\",\"left\",\"right\",\"top\",\"bottom\",\"all\"]},\"borderColor\":{\"type\":\"string\"},\"borderWidth\":{\"type\":\"number\"},\"padding\":{\"type\":\"number\"},\"align\":{\"enum\":[\"start\",\"center\",\"end\"]},\"elevation\":{\"type\":\"number\"}}},\"iconBadge\":{\"type\":\"object\",\"description\":\"Adiciona icone e/ou badge ao valor materializado. Nao representa chip; para chip use renderer.type \\\"chip\\\" e renderer.chip.\",\"additionalProperties\":false,\"properties\":{\"icon\":{\"type\":\"string\"},\"iconColor\":{\"type\":\"string\"},\"iconPos\":{\"enum\":[\"before\",\"after\",\"overlay\"]},\"badgeText\":{\"type\":\"string\"},\"badgeStyle\":{\"enum\":[\"solid\",\"soft\",\"outline\"]},\"badgeColor\":{\"type\":\"string\"}}},\"background\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"color\":{\"type\":\"string\"},\"gradient\":{\"type\":\"string\"},\"alpha\":{\"type\":\"number\"},\"blur\":{\"type\":\"number\"}}},\"animation\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"enabled\":{\"type\":\"boolean\",\"description\":\"false desativa a animacao sem remover a regra.\"},\"preset\":{\"enum\":[\"info-soft\",\"success-confirm\",\"warning-attention\",\"critical-alert\",\"audit-review\",\"sync-pending\",\"pulse-soft\",\"fade-soft\",\"sla-warning\",\"sla-breach\",\"risk-elevated\",\"risk-critical\",\"audit-warning\",\"sync-warning\"],\"description\":\"Preset semantico recomendado. Preferir preset antes de type bruto.\"},\"type\":{\"enum\":[\"pulse\",\"blink\",\"grow\",\"fade\",\"slide-in\",\"border-pulse\"]},\"durationMs\":{\"type\":\"number\"},\"trigger\":{\"enum\":[\"onChange\",\"onAppear\",\"onHover\",\"onConditionEnter\",\"onConditionExit\",\"onDataRefresh\"]},\"repeat\":{\"oneOf\":[{\"enum\":[\"once\",\"loop\",\"infinite\"]},{\"type\":\"number\"}]},\"delayMs\":{\"type\":\"number\"},\"intensity\":{\"enum\":[\"subtle\",\"normal\",\"strong\"]}}},\"tooltip\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"text\":{\"type\":\"string\"},\"position\":{\"enum\":[\"top\",\"right\",\"bottom\",\"left\"]},\"bgColor\":{\"type\":\"string\"},\"delayMs\":{\"type\":\"number\"}}},\"cssClass\":{\"type\":\"string\"},\"inlineStyle\":{\"type\":\"string\"}}}},\"description\":{\"type\":\"string\"}},\"anyOf\":[{\"required\":[\"surfacePresetRef\"]},{\"required\":[\"cssClass\"]},{\"required\":[\"style\"]},{\"required\":[\"effects\"]}]},\"effects\":[{\"kind\":\"append-unique\",\"path\":\"rowConditionalStyles[]\",\"key\":\"id\"}],\"validators\":[\"computed-expression-valid\",\"conditional-surface-accessible\"],\"affectedPaths\":[\"rowConditionalStyles[]\",\"rowConditionalStyles[].effects\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\"]}]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "97885235d63c143a717b8854a8781463da133e1d118b0c371230e9dcbc34a71b",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 122,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"row.styleRule.update\",\"title\":\"Atualizar destaque visual condicional existente da linha\",\"scope\":\"rule\",\"targetKind\":\"rule\",\"target\":{\"kind\":\"rule\",\"resolver\":\"style-rule-in-column-or-row\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"condition\":{\"type\":\"object\",\"description\":\"Nova AST Json Logic; omita para preservar a condição atual\"},\"surfacePresetRef\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"id\",\"catalogVersion\"],\"properties\":{\"id\":{\"enum\":[\"success\",\"warning\",\"danger\",\"highlight\"]},\"catalogVersion\":{\"const\":\"0.2.0\"}}},\"style\":{\"description\":\"Novo estilo CSS seguro; omitir color mantém foreground automático\"},\"cssClass\":{\"type\":\"string\"},\"effects\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"id\":{\"type\":\"string\"},\"scope\":{\"enum\":[\"cell\",\"row\",\"column\",\"table\"]},\"description\":{\"type\":\"string\"},\"estilo\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"color\":{\"type\":\"string\"},\"bgColor\":{\"type\":\"string\"},\"bold\":{\"type\":\"boolean\"},\"italic\":{\"type\":\"boolean\"},\"underline\":{\"type\":\"boolean\"},\"transform\":{\"enum\":[\"uppercase\",\"lowercase\",\"capitalize\",null]},\"opacity\":{\"type\":\"number\"},\"fontScale\":{\"type\":\"number\"}}},\"layout\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"border\":{\"enum\":[\"none\",\"left\",\"right\",\"top\",\"bottom\",\"all\"]},\"borderColor\":{\"type\":\"string\"},\"borderWidth\":{\"type\":\"number\"},\"padding\":{\"type\":\"number\"},\"align\":{\"enum\":[\"start\",\"center\",\"end\"]},\"elevation\":{\"type\":\"number\"}}},\"iconBadge\":{\"type\":\"object\",\"description\":\"Adiciona icone e/ou badge ao valor materializado. Nao representa chip; para chip use renderer.type \\\"chip\\\" e renderer.chip.\",\"additionalProperties\":false,\"properties\":{\"icon\":{\"type\":\"string\"},\"iconColor\":{\"type\":\"string\"},\"iconPos\":{\"enum\":[\"before\",\"after\",\"overlay\"]},\"badgeText\":{\"type\":\"string\"},\"badgeStyle\":{\"enum\":[\"solid\",\"soft\",\"outline\"]},\"badgeColor\":{\"type\":\"string\"}}},\"background\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"color\":{\"type\":\"string\"},\"gradient\":{\"type\":\"string\"},\"alpha\":{\"type\":\"number\"},\"blur\":{\"type\":\"number\"}}},\"animation\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"enabled\":{\"type\":\"boolean\",\"description\":\"false desativa a animacao sem remover a regra.\"},\"preset\":{\"enum\":[\"info-soft\",\"success-confirm\",\"warning-attention\",\"critical-alert\",\"audit-review\",\"sync-pending\",\"pulse-soft\",\"fade-soft\",\"sla-warning\",\"sla-breach\",\"risk-elevated\",\"risk-critical\",\"audit-warning\",\"sync-warning\"],\"description\":\"Preset semantico recomendado. Preferir preset antes de type bruto.\"},\"type\":{\"enum\":[\"pulse\",\"blink\",\"grow\",\"fade\",\"slide-in\",\"border-pulse\"]},\"durationMs\":{\"type\":\"number\"},\"trigger\":{\"enum\":[\"onChange\",\"onAppear\",\"onHover\",\"onConditionEnter\",\"onConditionExit\",\"onDataRefresh\"]},\"repeat\":{\"oneOf\":[{\"enum\":[\"once\",\"loop\",\"infinite\"]},{\"type\":\"number\"}]},\"delayMs\":{\"type\":\"number\"},\"intensity\":{\"enum\":[\"subtle\",\"normal\",\"strong\"]}}},\"tooltip\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"text\":{\"type\":\"string\"},\"position\":{\"enum\":[\"top\",\"right\",\"bottom\",\"left\"]},\"bgColor\":{\"type\":\"string\"},\"delayMs\":{\"type\":\"number\"}}},\"cssClass\":{\"type\":\"string\"},\"inlineStyle\":{\"type\":\"string\"}}}},\"description\":{\"type\":\"string\",\"description\":\"Descrição semântica atualizada da regra visual\"}},\"anyOf\":[{\"required\":[\"condition\"]},{\"required\":[\"surfacePresetRef\"]},{\"required\":[\"cssClass\"]},{\"required\":[\"style\"]},{\"required\":[\"effects\"]},{\"required\":[\"description\"]}]},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"rowConditionalStyles[]\",\"key\":\"id\"}],\"validators\":[\"computed-expression-valid\",\"conditional-surface-accessible\"],\"affectedPaths\":[\"rowConditionalStyles[]\",\"rowConditionalStyles[].condition\",\"rowConditionalStyles[].surfacePresetRef\",\"rowConditionalStyles[].style\",\"rowConditionalStyles[].cssClass\",\"rowConditionalStyles[].effects\",\"rowConditionalStyles[].description\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]}]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "69e12317914e2a197313aa84f80a1a228d68b5fd1395d5cc62aa76944f08735b",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 123,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"row.conditionalRenderer.add\",\"title\":\"Adicionar renderizador condicional de linha\",\"scope\":\"global\",\"targetKind\":\"conditionalRenderer\",\"target\":{\"kind\":\"conditionalRenderer\",\"resolver\":\"conditional-renderer-in-row\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"id\",\"condition\"],\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Identificador estavel da regra de renderer de linha\"},\"condition\":{\"type\":\"object\",\"description\":\"AST Json Logic\"},\"tooltip\":{\"type\":\"object\",\"description\":\"Tooltip de linha\"},\"animation\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"enabled\":{\"type\":\"boolean\",\"description\":\"false desativa a animacao sem remover a regra.\"},\"preset\":{\"enum\":[\"info-soft\",\"success-confirm\",\"warning-attention\",\"critical-alert\",\"audit-review\",\"sync-pending\",\"pulse-soft\",\"fade-soft\",\"sla-warning\",\"sla-breach\",\"risk-elevated\",\"risk-critical\",\"audit-warning\",\"sync-warning\"],\"description\":\"Preset semantico recomendado. Preferir preset antes de type bruto.\"},\"type\":{\"enum\":[\"pulse\",\"blink\",\"grow\",\"fade\",\"slide-in\",\"border-pulse\"]},\"durationMs\":{\"type\":\"number\"},\"trigger\":{\"enum\":[\"onChange\",\"onAppear\",\"onHover\",\"onConditionEnter\",\"onConditionExit\",\"onDataRefresh\"]},\"repeat\":{\"oneOf\":[{\"enum\":[\"once\",\"loop\",\"infinite\"]},{\"type\":\"number\"}]},\"delayMs\":{\"type\":\"number\"},\"intensity\":{\"enum\":[\"subtle\",\"normal\",\"strong\"]}}},\"effects\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"id\":{\"type\":\"string\"},\"scope\":{\"enum\":[\"cell\",\"row\",\"column\",\"table\"]},\"description\":{\"type\":\"string\"},\"estilo\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"color\":{\"type\":\"string\"},\"bgColor\":{\"type\":\"string\"},\"bold\":{\"type\":\"boolean\"},\"italic\":{\"type\":\"boolean\"},\"underline\":{\"type\":\"boolean\"},\"transform\":{\"enum\":[\"uppercase\",\"lowercase\",\"capitalize\",null]},\"opacity\":{\"type\":\"number\"},\"fontScale\":{\"type\":\"number\"}}},\"layout\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"border\":{\"enum\":[\"none\",\"left\",\"right\",\"top\",\"bottom\",\"all\"]},\"borderColor\":{\"type\":\"string\"},\"borderWidth\":{\"type\":\"number\"},\"padding\":{\"type\":\"number\"},\"align\":{\"enum\":[\"start\",\"center\",\"end\"]},\"elevation\":{\"type\":\"number\"}}},\"iconBadge\":{\"type\":\"object\",\"description\":\"Adiciona icone e/ou badge ao valor materializado. Nao representa chip; para chip use renderer.type \\\"chip\\\" e renderer.chip.\",\"additionalProperties\":false,\"properties\":{\"icon\":{\"type\":\"string\"},\"iconColor\":{\"type\":\"string\"},\"iconPos\":{\"enum\":[\"before\",\"after\",\"overlay\"]},\"badgeText\":{\"type\":\"string\"},\"badgeStyle\":{\"enum\":[\"solid\",\"soft\",\"outline\"]},\"badgeColor\":{\"type\":\"string\"}}},\"background\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"color\":{\"type\":\"string\"},\"gradient\":{\"type\":\"string\"},\"alpha\":{\"type\":\"number\"},\"blur\":{\"type\":\"number\"}}},\"animation\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"enabled\":{\"type\":\"boolean\",\"description\":\"false desativa a animacao sem remover a regra.\"},\"preset\":{\"enum\":[\"info-soft\",\"success-confirm\",\"warning-attention\",\"critical-alert\",\"audit-review\",\"sync-pending\",\"pulse-soft\",\"fade-soft\",\"sla-warning\",\"sla-breach\",\"risk-elevated\",\"risk-critical\",\"audit-warning\",\"sync-warning\"],\"description\":\"Preset semantico recomendado. Preferir preset antes de type bruto.\"},\"type\":{\"enum\":[\"pulse\",\"blink\",\"grow\",\"fade\",\"slide-in\",\"border-pulse\"]},\"durationMs\":{\"type\":\"number\"},\"trigger\":{\"enum\":[\"onChange\",\"onAppear\",\"onHover\",\"onConditionEnter\",\"onConditionExit\",\"onDataRefresh\"]},\"repeat\":{\"oneOf\":[{\"enum\":[\"once\",\"loop\",\"infinite\"]},{\"type\":\"number\"}]},\"delayMs\":{\"type\":\"number\"},\"intensity\":{\"enum\":[\"subtle\",\"normal\",\"strong\"]}}},\"tooltip\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"text\":{\"type\":\"string\"},\"position\":{\"enum\":[\"top\",\"right\",\"bottom\",\"left\"]},\"bgColor\":{\"type\":\"string\"},\"delayMs\":{\"type\":\"number\"}}},\"cssClass\":{\"type\":\"string\"},\"inlineStyle\":{\"type\":\"string\"}}}},\"enabled\":{\"type\":\"boolean\"},\"description\":{\"type\":\"string\"}},\"anyOf\":[{\"required\":[\"tooltip\"]},{\"required\":[\"animation\"]},{\"required\":[\"effects\"]}]},\"effects\":[{\"kind\":\"append-unique\",\"path\":\"rowConditionalRenderers[]\",\"key\":\"id\"}],\"validators\":[\"computed-expression-valid\"],\"affectedPaths\":[\"rowConditionalRenderers[]\",\"rowConditionalRenderers[].condition\",\"rowConditionalRenderers[].tooltip\",\"rowConditionalRenderers[].animation\",\"rowConditionalRenderers[].effects\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"toolbar.visibility.set\",\"title\":\"Definir visibilidade da toolbar\",\"scope\":\"global\",\"targetKind\":\"toolbar\",\"target\":{\"kind\":\"toolbar\",\"resolver\":\"toolbar-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"visible\"],\"properties\":{\"visible\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"toolbar\"}],\"affectedPaths\":[\"toolbar.visible\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"toolbar.action.add\",\"title\":\"Adicionar ação na toolbar\",\"scope\":\"global\",\"targetKind\":\"toolbarAction\",\"target\":{\"kind\":\"toolbarAction\",\"resolver\":\"action-in-toolbar-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"id\",\"label\",\"action\"],\"properties\":{\"id\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"action\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"type\":{\"enum\":[\"button\",\"icon\",\"menu\"],\"default\":\"button\"},\"visibleWhen\":{\"type\":\"object\",\"description\":\"AST Json Logic\"},\"globalAction\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"actionId\":{\"type\":\"string\",\"enum\":[\"toast.success\",\"toast.error\",\"dialog.alert\",\"dialog.open\",\"navigation.openExternal\",\"navigation.openRoute\",\"api.post\",\"api.patch\"]},\"payload\":{\"type\":\"object\"},\"payloadExpr\":{\"type\":\"string\"}}},\"effects\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"kind\",\"globalAction\"],\"additionalProperties\":false,\"properties\":{\"kind\":{\"enum\":[\"global-action\"]},\"globalAction\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"actionId\":{\"type\":\"string\",\"enum\":[\"toast.success\",\"toast.error\",\"dialog.alert\",\"dialog.open\",\"navigation.openExternal\",\"navigation.openRoute\",\"api.post\",\"api.patch\"]},\"payload\":{\"type\":\"object\"},\"payloadExpr\":{\"type\":\"string\"}}}}}}}},\"effects\":[{\"kind\":\"append-unique\",\"path\":\"toolbar.actions[]\",\"key\":\"id\"}],\"validators\":[\"toolbar-action-id-unique\"],\"affectedPaths\":[\"toolbar.actions[]\",\"toolbar.actions[].visibleWhen\",\"toolbar.actions[].effects\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]}]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "e5609525d6aa1db9caedf20f5800ddf8812992a4cdfe9d858dca3e9dcc718a4d",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 124,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"rowAction.add\",\"title\":\"Adicionar ação de linha\",\"scope\":\"global\",\"targetKind\":\"rowAction\",\"target\":{\"kind\":\"rowAction\",\"resolver\":\"action-in-row-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"id\",\"label\",\"action\"],\"properties\":{\"id\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"action\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"color\":{\"type\":\"string\"},\"visibleWhen\":{\"type\":\"object\",\"description\":\"AST Json Logic\"},\"disabledWhen\":{\"type\":\"object\",\"description\":\"AST Json Logic\"},\"recordSurface\":{\"type\":\"object\",\"description\":\"ResourceSurfaceCatalogItem canonico preservado para abrir uma superficie relacionada ao registro da linha clicada.\"},\"globalAction\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"actionId\":{\"type\":\"string\",\"enum\":[\"toast.success\",\"toast.error\",\"dialog.alert\",\"dialog.open\",\"navigation.openExternal\",\"navigation.openRoute\",\"api.post\",\"api.patch\"]},\"payload\":{\"type\":\"object\"},\"payloadExpr\":{\"type\":\"string\"}}},\"effects\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"kind\",\"globalAction\"],\"additionalProperties\":false,\"properties\":{\"kind\":{\"enum\":[\"global-action\"]},\"globalAction\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"actionId\":{\"type\":\"string\",\"enum\":[\"toast.success\",\"toast.error\",\"dialog.alert\",\"dialog.open\",\"navigation.openExternal\",\"navigation.openRoute\",\"api.post\",\"api.patch\"]},\"payload\":{\"type\":\"object\"},\"payloadExpr\":{\"type\":\"string\"}}}}}}}},\"effects\":[{\"kind\":\"append-unique\",\"path\":\"actions.row.actions[]\",\"key\":\"id\"}],\"validators\":[\"row-action-id-unique\"],\"affectedPaths\":[\"actions.row.actions[]\",\"actions.row.actions[].visibleWhen\",\"actions.row.actions[].disabledWhen\",\"actions.row.actions[].effects\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"bulkAction.add\",\"title\":\"Adicionar ação em lote\",\"scope\":\"global\",\"targetKind\":\"bulkAction\",\"target\":{\"kind\":\"bulkAction\",\"resolver\":\"action-in-bulk-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"id\",\"label\",\"action\"],\"properties\":{\"id\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"action\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"color\":{\"type\":\"string\"},\"globalAction\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"actionId\":{\"type\":\"string\",\"enum\":[\"toast.success\",\"toast.error\",\"dialog.alert\",\"dialog.open\",\"navigation.openExternal\",\"navigation.openRoute\",\"api.post\",\"api.patch\"]},\"payload\":{\"type\":\"object\"},\"payloadExpr\":{\"type\":\"string\"}}},\"effects\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"kind\",\"globalAction\"],\"additionalProperties\":false,\"properties\":{\"kind\":{\"enum\":[\"global-action\"]},\"globalAction\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"actionId\":{\"type\":\"string\",\"enum\":[\"toast.success\",\"toast.error\",\"dialog.alert\",\"dialog.open\",\"navigation.openExternal\",\"navigation.openRoute\",\"api.post\",\"api.patch\"]},\"payload\":{\"type\":\"object\"},\"payloadExpr\":{\"type\":\"string\"}}}}}}}},\"effects\":[{\"kind\":\"append-unique\",\"path\":\"actions.bulk.actions[]\",\"key\":\"id\"}],\"validators\":[\"bulk-action-id-unique\"],\"affectedPaths\":[\"actions.bulk.actions[]\",\"actions.bulk.actions[].effects\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"export.enabled.set\",\"title\":\"Habilitar exportação\",\"scope\":\"global\",\"targetKind\":\"export\",\"target\":{\"kind\":\"export\",\"resolver\":\"export-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"enabled\"],\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"formats\":{\"type\":\"array\",\"items\":{\"enum\":[\"excel\",\"pdf\",\"csv\",\"json\"]}}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"export\"}],\"affectedPaths\":[\"export.enabled\",\"export.formats\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"filter.advanced.configure\",\"title\":\"Configurar filtros avançados\",\"scope\":\"global\",\"targetKind\":\"filter\",\"target\":{\"kind\":\"filter\",\"resolver\":\"filter-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"enabled\"],\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"queryBuilder\":{\"type\":\"boolean\"},\"savePresets\":{\"type\":\"boolean\"},\"settings\":{\"type\":\"object\",\"properties\":{\"mode\":{\"enum\":[\"filter\"]},\"showAdvanced\":{\"type\":\"boolean\"},\"allowSaveTags\":{\"type\":\"boolean\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"id\",\"label\",\"patch\"],\"properties\":{\"id\":{\"type\":\"string\",\"minLength\":1},\"label\":{\"type\":\"string\",\"minLength\":1},\"patch\":{\"type\":\"object\"}}}},\"alwaysVisibleFields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"selectedFieldIds\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"alwaysVisibleFieldMetadataOverrides\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\"}},\"changeDebounceMs\":{\"type\":\"number\",\"minimum\":0},\"useInlineSearchableSelectVariant\":{\"type\":\"boolean\"},\"useInlineRangeVariant\":{\"type\":\"boolean\"},\"useInlineDateVariant\":{\"type\":\"boolean\"},\"useInlineDateRangeVariant\":{\"type\":\"boolean\"}}}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"behavior.filtering.enabled\",\"value\":true},{\"kind\":\"merge-object\",\"path\":\"behavior.filtering.advancedFilters\"}],\"affectedPaths\":[\"behavior.filtering.enabled\",\"behavior.filtering.advancedFilters.enabled\",\"behavior.filtering.advancedFilters.settings\"],\"validators\":[\"filter-fields-exist\",\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"filter.advanced.fields.add\",\"title\":\"Adicionar campos aos filtros avançados\",\"scope\":\"global\",\"targetKind\":\"filter\",\"target\":{\"kind\":\"filter\",\"resolver\":\"filter-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"fields\"],\"properties\":{\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"minItems\":1},\"selected\":{\"type\":\"boolean\"},\"alwaysVisible\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"behavior.filtering.enabled\",\"value\":true},{\"kind\":\"merge-object\",\"path\":\"behavior.filtering.advancedFilters\"}],\"affectedPaths\":[\"behavior.filtering.enabled\",\"behavior.filtering.advancedFilters.enabled\",\"behavior.filtering.advancedFilters.settings\"],\"validators\":[\"filter-fields-exist\",\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"filter.advanced.fields.remove\",\"title\":\"Remover campos dos filtros avançados\",\"scope\":\"global\",\"targetKind\":\"filter\",\"target\":{\"kind\":\"filter\",\"resolver\":\"filter-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"fields\"],\"properties\":{\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"minItems\":1},\"selected\":{\"type\":\"boolean\"},\"alwaysVisible\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"behavior.filtering.enabled\",\"value\":true},{\"kind\":\"merge-object\",\"path\":\"behavior.filtering.advancedFilters\"}],\"affectedPaths\":[\"behavior.filtering.enabled\",\"behavior.filtering.advancedFilters.enabled\",\"behavior.filtering.advancedFilters.settings\"],\"validators\":[\"filter-fields-exist\",\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]}]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "a29dec17d2a7abafabe9081ce8477999cb6d04936920c2d979892446d62b19ac",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 125,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"grouping.set\",\"title\":\"Definir agrupamento\",\"scope\":\"global\",\"targetKind\":\"grouping\",\"target\":{\"kind\":\"grouping\",\"resolver\":\"grouping-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"enabled\"],\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"expanded\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.grouping\"}],\"validators\":[\"grouping-fields-exist\"],\"affectedPaths\":[\"behavior.grouping\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"selection.mode.set\",\"title\":\"Definir modo de seleção\",\"scope\":\"global\",\"targetKind\":\"selection\",\"target\":{\"kind\":\"selection\",\"resolver\":\"selection-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"enabled\",\"type\"],\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"type\":{\"enum\":[\"single\",\"multiple\"]},\"mode\":{\"enum\":[\"checkbox\",\"row\",\"both\"]}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.selection\"}],\"affectedPaths\":[\"behavior.selection.enabled\",\"behavior.selection.type\",\"behavior.selection.mode\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"appearance.density.set\",\"title\":\"Definir densidade\",\"scope\":\"global\",\"targetKind\":\"appearance\",\"target\":{\"kind\":\"appearance\",\"resolver\":\"appearance-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"density\"],\"properties\":{\"density\":{\"enum\":[\"compact\",\"comfortable\",\"spacious\"]}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"appearance\"}],\"affectedPaths\":[\"appearance.density\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"appearance.borders.set\",\"title\":\"Definir bordas\",\"scope\":\"global\",\"targetKind\":\"appearance\",\"target\":{\"kind\":\"appearance\",\"resolver\":\"appearance-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"showRowBorders\",\"showColumnBorders\"],\"properties\":{\"showRowBorders\":{\"type\":\"boolean\"},\"showColumnBorders\":{\"type\":\"boolean\"},\"showOuterBorder\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"appearance.borders\"}],\"affectedPaths\":[\"appearance.borders.showRowBorders\",\"appearance.borders.showColumnBorders\",\"appearance.borders.showOuterBorder\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"virtualization.enabled.set\",\"title\":\"Habilitar virtualização\",\"scope\":\"global\",\"targetKind\":\"appearance\",\"target\":{\"kind\":\"appearance\",\"resolver\":\"appearance-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"enabled\"],\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"itemHeight\":{\"type\":\"number\",\"default\":48}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.virtualization\"},{\"kind\":\"merge-object\",\"path\":\"performance.virtualization\"}],\"affectedPaths\":[\"behavior.virtualization\",\"performance.virtualization\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"expansion.configure\",\"title\":\"Configurar expansão de linha\",\"scope\":\"global\",\"targetKind\":\"expansion\",\"target\":{\"kind\":\"expansion\",\"resolver\":\"expansion-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"contractVersion\":{\"type\":\"string\"},\"state\":{\"type\":\"object\",\"properties\":{\"mode\":{\"enum\":[\"controlled\",\"uncontrolled\"]}}},\"interaction\":{\"type\":\"object\",\"properties\":{\"trigger\":{\"enum\":[\"icon\",\"row\",\"both\"]},\"toggleIcon\":{\"type\":\"object\",\"properties\":{\"collapsed\":{\"type\":\"string\"},\"expanded\":{\"type\":\"string\"},\"ariaLabelCollapsed\":{\"type\":\"string\"},\"ariaLabelExpanded\":{\"type\":\"string\"}}},\"motion\":{\"type\":\"object\",\"properties\":{\"preset\":{\"enum\":[\"none\",\"subtle-slide\",\"accordion\",\"fade-scale\"]},\"durationMs\":{\"type\":\"number\",\"minimum\":0},\"easing\":{\"enum\":[\"standard\",\"emphasized\",\"decelerate\"]}}},\"keyboard\":{\"type\":\"object\",\"properties\":{\"profile\":{\"enum\":[\"disclosure\",\"grid\"]}}}}},\"limits\":{\"type\":\"object\",\"properties\":{\"allowMultiple\":{\"type\":\"boolean\"},\"maxExpandedRows\":{\"type\":\"number\",\"minimum\":1},\"onOverflow\":{\"enum\":[\"collapseOldest\",\"denyNew\",\"collapseAll\"]}}},\"collapseOn\":{\"type\":\"object\",\"properties\":{\"sortChange\":{\"type\":\"boolean\"},\"pageChange\":{\"type\":\"boolean\"},\"filterChange\":{\"type\":\"boolean\"},\"dataRefresh\":{\"type\":\"boolean\"}}},\"virtualization\":{\"type\":\"object\",\"properties\":{\"policy\":{\"enum\":[\"fixed-height-only\",\"allow-dynamic-under-flag\"]}}},\"persistence\":{\"type\":\"object\",\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"storageKeyStrategy\":{\"type\":\"object\",\"properties\":{\"namespace\":{\"type\":\"string\"}}}}},\"security\":{\"type\":\"object\",\"properties\":{\"eventExposureDefault\":{\"type\":\"object\",\"properties\":{\"rowId\":{\"enum\":[\"redacted\",\"hashed\",\"raw\"]},\"expandedKeys\":{\"enum\":[\"none\",\"hashed\",\"raw\"]}}}}},\"deepLink\":{\"type\":\"object\",\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"encoding\":{\"enum\":[\"csv\"]},\"parsing\":{\"type\":\"object\",\"properties\":{\"duplicateParams\":{\"enum\":[\"firstWins\",\"reject\"]}}},\"integrity\":{\"type\":\"object\",\"properties\":{\"mode\":{\"enum\":[\"opaqueToken\"]}}},\"privacy\":{\"type\":\"object\",\"properties\":{\"mode\":{\"enum\":[\"denyByDefault\",\"allowByDefault\"]}}}}}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.expansion\"}],\"validators\":[\"editor-round-trip-preserve\"],\"affectedPaths\":[\"behavior.expansion\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"expansion.detailSource.configure\",\"title\":\"Configurar fonte remota do detalhe expansivel\",\"scope\":\"global\",\"targetKind\":\"expansion\",\"target\":{\"kind\":\"expansion\",\"resolver\":\"expansion-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"mode\":{\"enum\":[\"inline\",\"resource\",\"resourcePath\",\"hypermedia\"]},\"inlineSchema\":{\"type\":\"object\"},\"resource\":{\"type\":\"object\",\"properties\":{\"kind\":{\"enum\":[\"ui-composition\",\"form-schema\",\"table-schema\",\"dashboard-schema\"]},\"id\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"}}},\"resourcePath\":{\"type\":\"object\",\"properties\":{\"path\":{\"type\":\"string\"},\"method\":{\"enum\":[\"GET\",\"POST\"]},\"paramsMap\":{\"type\":\"object\"}}},\"resourceAllowList\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"hypermedia\":{\"type\":\"object\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.expansion.detail.source\"}],\"validators\":[\"remote-resource-binding-safe\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"behavior.expansion.detail.source\",\"behavior.expansion.detail.source.mode\",\"behavior.expansion.detail.source.resourcePath\",\"behavior.expansion.detail.source.resourceAllowList\",\"behavior.expansion.detail.source.hypermedia\"],\"submissionImpact\":\"affects-remote-binding\",\"preconditions\":[\"config-initialized\"]}]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "d0981de96f8e1f532b81c0f71c73c255e07f09bee9bdc692dec4a3ed9bd4defa",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 126,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"expansion.detailPresentation.configure\",\"title\":\"Configurar apresentacao do detalhe expansivel\",\"scope\":\"global\",\"targetKind\":\"expansion\",\"target\":{\"kind\":\"expansion\",\"resolver\":\"expansion-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"schemaContract\":{\"type\":\"object\",\"properties\":{\"kind\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"}}},\"rendering\":{\"type\":\"object\",\"properties\":{\"strategy\":{\"enum\":[\"registry\"]},\"registryId\":{\"type\":\"string\"},\"hostLayout\":{\"enum\":[\"auto\",\"stack\",\"tabs\"]},\"fallbackNodePolicy\":{\"enum\":[\"failClosed\",\"renderPlaceholder\"]}}},\"height\":{\"type\":\"object\",\"properties\":{\"mode\":{\"enum\":[\"fixed\",\"dynamic\"]},\"px\":{\"type\":\"number\",\"minimum\":0}}}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.expansion.detail\"}],\"validators\":[\"editor-round-trip-preserve\"],\"affectedPaths\":[\"behavior.expansion.detail\",\"behavior.expansion.detail.schemaContract\",\"behavior.expansion.detail.rendering\",\"behavior.expansion.detail.height\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"meta.configure\",\"title\":\"Configurar metadados\",\"scope\":\"global\",\"targetKind\":\"meta\",\"target\":{\"kind\":\"meta\",\"resolver\":\"table-meta-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"schemaId\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"meta\"}],\"affectedPaths\":[\"meta\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"meta.idField.set\",\"title\":\"Definir campo de identidade\",\"scope\":\"global\",\"targetKind\":\"meta\",\"target\":{\"kind\":\"meta\",\"resolver\":\"table-meta-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"idField\"],\"properties\":{\"idField\":{\"type\":\"string\",\"minLength\":1}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"meta.idField\"}],\"requiresConfirmation\":true,\"affectedPaths\":[\"meta.idField\"],\"validators\":[\"target-column-exists\",\"editor-round-trip-preserve\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"column.resizable.set\",\"title\":\"Definir redimensionamento da coluna\",\"scope\":\"column\",\"targetKind\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"resizable\"],\"properties\":{\"resizable\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"columns[]\",\"key\":\"field\"}],\"validators\":[\"target-column-exists\"],\"affectedPaths\":[\"columns[].resizable\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"column.sortField.set\",\"title\":\"Definir campo de ordenacao da coluna\",\"scope\":\"column\",\"targetKind\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-field\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"sortField\"],\"properties\":{\"sortField\":{\"type\":\"string\",\"minLength\":1}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"columns[]\",\"key\":\"field\"}],\"validators\":[\"target-column-exists\"],\"affectedPaths\":[\"columns[].sortField\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"column.computed.configure\",\"title\":\"Configurar coluna calculada\",\"scope\":\"column\",\"targetKind\":\"computedColumn\",\"target\":{\"kind\":\"computedColumn\",\"resolver\":\"column-by-field\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"expression\"],\"properties\":{\"expression\":{\"type\":\"object\",\"description\":\"AST Json Logic\"},\"outputType\":{\"enum\":[\"string\",\"number\",\"date\",\"boolean\",\"currency\",\"percentage\",\"custom\"]},\"format\":{\"type\":\"string\",\"enum\":[\"shortDate\",\"mediumDate\",\"longDate\",\"fullDate\",\"MMM/yyyy\",\"shortTime\",\"short\",\"yyyy-MM-dd\",\"dd/MM/yyyy\",\"yyyy-MM-dd HH:mm\",\"1.0-0\",\"1.1-1\",\"1.2-2\",\"1.0-3\",\"1.0-0|nosep\",\"BRL|symbol|2\",\"USD|symbol|2\",\"EUR|symbol|2\",\"BRL|code|2\",\"USD|code|0\",\"BRL|symbol|2|nosep\",\"EUR|symbol|2|nosep\",\"1.0-0|x100\",\"1.1-1|x100\",\"1.2-2|x100\",\"none\",\"uppercase\",\"lowercase\",\"titlecase\",\"capitalize\",\"uppercase|truncate|50|...\",\"000.000.000-00\",\"true-false\",\"yes-no\",\"active-inactive\",\"on-off\",\"enabled-disabled\",\"custom|Sim|Nao\"]},\"dependencies\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"columns[]\",\"key\":\"field\"}],\"validators\":[\"target-column-exists\",\"computed-expression-valid\",\"format-preset-supported\"],\"affectedPaths\":[\"columns[].computed\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"behavior.pagination.configure\",\"title\":\"Configurar paginacao\",\"scope\":\"global\",\"targetKind\":\"pagination\",\"target\":{\"kind\":\"pagination\",\"resolver\":\"pagination-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"strategy\":{\"enum\":[\"client\",\"server\"]},\"pageSize\":{\"type\":\"number\",\"minimum\":1},\"pageSizeOptions\":{\"type\":\"array\",\"items\":{\"type\":\"number\",\"minimum\":1}},\"position\":{\"enum\":[\"top\",\"bottom\",\"both\"]},\"style\":{\"enum\":[\"default\",\"simple\",\"advanced\",\"compact\"]},\"advanced\":{\"type\":\"object\",\"properties\":{\"maxPageSize\":{\"type\":\"number\",\"minimum\":1}}}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.pagination\"}],\"affectedPaths\":[\"behavior.pagination\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"behavior.sorting.configure\",\"title\":\"Configurar ordenacao\",\"scope\":\"global\",\"targetKind\":\"sorting\",\"target\":{\"kind\":\"sorting\",\"resolver\":\"sorting-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"strategy\":{\"enum\":[\"client\",\"server\"]},\"defaultSort\":{\"type\":\"object\"},\"allowClearSort\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.sorting\"}],\"affectedPaths\":[\"behavior.sorting\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]}]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "7191f7900b817e57c658a47fd8baf9bd0b0867257486edea6be11524b0dd9d09",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 127,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"behavior.filtering.configure\",\"title\":\"Configurar filtragem\",\"scope\":\"global\",\"targetKind\":\"filter\",\"target\":{\"kind\":\"filter\",\"resolver\":\"filter-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"strategy\":{\"enum\":[\"client\",\"server\"]},\"columnFilters\":{\"type\":\"object\",\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"defaultType\":{\"enum\":[\"text\",\"select\",\"date\",\"number\",\"boolean\"]},\"position\":{\"enum\":[\"header\",\"subheader\",\"sidebar\"]}}},\"advancedFilters\":{\"type\":\"object\",\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"settings\":{\"type\":\"object\",\"properties\":{\"mode\":{\"enum\":[\"filter\"]},\"showAdvanced\":{\"type\":\"boolean\"},\"allowSaveTags\":{\"type\":\"boolean\"},\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"id\",\"label\",\"patch\"],\"properties\":{\"id\":{\"type\":\"string\",\"minLength\":1},\"label\":{\"type\":\"string\",\"minLength\":1},\"patch\":{\"type\":\"object\"}}}},\"alwaysVisibleFields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"selectedFieldIds\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"alwaysVisibleFieldMetadataOverrides\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\"}},\"changeDebounceMs\":{\"type\":\"number\",\"minimum\":0},\"useInlineSearchableSelectVariant\":{\"type\":\"boolean\"},\"useInlineRangeVariant\":{\"type\":\"boolean\"},\"useInlineDateVariant\":{\"type\":\"boolean\"},\"useInlineDateRangeVariant\":{\"type\":\"boolean\"}}}}},\"debounceTime\":{\"type\":\"number\",\"minimum\":0}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.filtering\"}],\"affectedPaths\":[\"behavior.filtering\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"behavior.selection.configure\",\"title\":\"Configurar selecao\",\"scope\":\"global\",\"targetKind\":\"selection\",\"target\":{\"kind\":\"selection\",\"resolver\":\"selection-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"type\":{\"enum\":[\"single\",\"multiple\"]},\"mode\":{\"enum\":[\"checkbox\",\"row\",\"both\"]},\"allowSelectAll\":{\"type\":\"boolean\"},\"persistSelection\":{\"type\":\"boolean\"},\"maxSelections\":{\"type\":\"number\",\"minimum\":1}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.selection\"}],\"affectedPaths\":[\"behavior.selection\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"behavior.interaction.configure\",\"title\":\"Configurar interacao\",\"scope\":\"global\",\"targetKind\":\"interaction\",\"target\":{\"kind\":\"interaction\",\"resolver\":\"interaction-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"rowClick\":{\"type\":\"object\",\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"action\":{\"type\":\"string\"}}},\"keyboard\":{\"type\":\"object\",\"properties\":{\"enabled\":{\"type\":\"boolean\"}}},\"hover\":{\"type\":\"object\",\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"highlightRow\":{\"type\":\"boolean\"}}}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.interaction\"}],\"affectedPaths\":[\"behavior.interaction\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"behavior.loading.configure\",\"title\":\"Configurar loading\",\"scope\":\"global\",\"targetKind\":\"loading\",\"target\":{\"kind\":\"loading\",\"resolver\":\"loading-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"type\":{\"enum\":[\"spinner\",\"skeleton\",\"progress\"]},\"position\":{\"enum\":[\"overlay\",\"inline\",\"replace\"]},\"text\":{\"type\":\"string\"},\"delay\":{\"type\":\"number\",\"minimum\":0},\"showForQuickOperations\":{\"type\":\"boolean\"},\"requestTimeoutMs\":{\"type\":\"number\",\"minimum\":0},\"allowCancel\":{\"type\":\"boolean\"},\"skeleton\":{\"type\":\"object\",\"properties\":{\"rows\":{\"type\":\"number\",\"minimum\":1,\"maximum\":12},\"animated\":{\"type\":\"boolean\"}}}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.loading\"}],\"affectedPaths\":[\"behavior.loading\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"behavior.emptyState.configure\",\"title\":\"Configurar estado vazio\",\"description\":\"Configura copy, apresentação e ações contextuais explícitas do estado vazio. Não duplica CREATE capability-governado, que permanece como ação primária estável da toolbar.\",\"scope\":\"global\",\"targetKind\":\"emptyState\",\"target\":{\"kind\":\"emptyState\",\"resolver\":\"empty-state-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"message\"],\"properties\":{\"title\":{\"type\":\"string\"},\"message\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"tone\":{\"enum\":[\"neutral\",\"primary\",\"secondary\"]},\"variant\":{\"enum\":[\"card\",\"inline\",\"panel\",\"transparent\"]},\"alignment\":{\"enum\":[\"start\",\"center\"]},\"density\":{\"enum\":[\"compact\",\"comfortable\"]},\"iconContainer\":{\"enum\":[\"none\",\"circle\",\"soft\"]},\"actions\":{\"type\":\"array\"},\"contexts\":{\"type\":\"object\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.emptyState\"}],\"affectedPaths\":[\"behavior.emptyState\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"behavior.resizing.configure\",\"title\":\"Configurar redimensionamento\",\"scope\":\"global\",\"targetKind\":\"resizing\",\"target\":{\"kind\":\"resizing\",\"resolver\":\"resizing-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"minColumnWidth\":{\"type\":\"number\",\"minimum\":1},\"maxColumnWidth\":{\"type\":\"number\",\"minimum\":1},\"autoFit\":{\"type\":\"boolean\"},\"persistWidths\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.resizing\"}],\"affectedPaths\":[\"behavior.resizing\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"behavior.dragging.configure\",\"title\":\"Configurar drag and drop\",\"scope\":\"global\",\"targetKind\":\"dragging\",\"target\":{\"kind\":\"dragging\",\"resolver\":\"dragging-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"columns\"],\"properties\":{\"columns\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.dragging\"}],\"affectedPaths\":[\"behavior.dragging\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"behavior.editing.configure\",\"title\":\"Configurar edicao\",\"scope\":\"global\",\"targetKind\":\"editing\",\"target\":{\"kind\":\"editing\",\"resolver\":\"editing-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"mode\"],\"properties\":{\"mode\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"behavior.editing\"}],\"affectedPaths\":[\"behavior.editing\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]}]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "acd09e320c1b64b286f89df64f7be352f4658c9e6d33b60728e466f6ab09e379",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 128,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"toolbar.configure\",\"title\":\"Configurar barra e título global da tabela\",\"description\":\"Configura a barra da tabela, incluindo o título global em toolbar.title. Não use para renomear o cabeçalho de uma coluna; nesse caso use column.header.set.\",\"scope\":\"global\",\"targetKind\":\"toolbar\",\"target\":{\"kind\":\"toolbar\",\"resolver\":\"toolbar-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"visible\":{\"type\":\"boolean\"},\"position\":{\"enum\":[\"top\",\"bottom\",\"both\"]},\"actionsPosition\":{\"enum\":[\"top\",\"bottom\",\"both\"]},\"actionsBackgroundColor\":{\"type\":\"string\"},\"appearance\":{\"type\":\"object\",\"properties\":{\"preset\":{\"type\":\"string\"},\"variant\":{\"enum\":[\"flat\",\"outlined\",\"elevated\",\"integrated\"]},\"density\":{\"enum\":[\"compact\",\"comfortable\",\"spacious\"]},\"shape\":{\"enum\":[\"square\",\"rounded\",\"pill\"]},\"divider\":{\"enum\":[\"none\",\"start\",\"between-groups\"]},\"tokens\":{\"type\":\"object\",\"properties\":{\"titleFg\":{\"type\":\"string\"},\"subtitleFg\":{\"type\":\"string\"},\"iconFg\":{\"type\":\"string\"},\"titleFontSize\":{\"type\":\"string\"},\"subtitleFontSize\":{\"type\":\"string\"},\"titleFontWeight\":{\"type\":\"string\"},\"identityGap\":{\"type\":\"string\"},\"identityFilterGap\":{\"type\":\"string\"},\"identityMinHeight\":{\"type\":\"string\"},\"identityMarginBottom\":{\"type\":\"string\"},\"identityIconSize\":{\"type\":\"string\"},\"identityIconRadius\":{\"type\":\"string\"}},\"additionalProperties\":{\"type\":\"string\"}}}},\"title\":{\"type\":\"string\"},\"subtitle\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"textAlign\":{\"enum\":[\"start\",\"center\",\"end\"]},\"layout\":{\"type\":\"object\",\"properties\":{\"alignment\":{\"enum\":[\"start\",\"center\",\"end\",\"space-between\"]}}},\"filters\":{\"type\":\"object\",\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"showAdvancedButton\":{\"type\":\"boolean\"},\"quickFilters\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"id\",\"label\",\"filter\"],\"properties\":{\"id\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"filter\":{\"type\":\"object\"}}}}}},\"settingsMenu\":{\"type\":\"object\",\"properties\":{\"enabled\":{\"type\":\"boolean\"}}},\"columnsVisibility\":{\"type\":\"object\",\"properties\":{\"enabled\":{\"type\":\"boolean\"}}},\"densityToggle\":{\"type\":\"object\",\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"values\":{\"type\":\"array\",\"items\":{\"enum\":[\"compact\",\"comfortable\",\"spacious\"]},\"uniqueItems\":true}}}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"toolbar\"}],\"validators\":[\"css-style-safe\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"toolbar\",\"toolbar.title\",\"toolbar.subtitle\",\"toolbar.icon\",\"toolbar.textAlign\",\"toolbar.appearance\",\"toolbar.appearance.tokens\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"actions.collection.configure\",\"title\":\"Configurar descoberta de acoes da colecao\",\"scope\":\"global\",\"targetKind\":\"toolbar\",\"target\":{\"kind\":\"toolbar\",\"resolver\":\"toolbar-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"discovery\"],\"properties\":{\"discovery\":{\"type\":\"object\",\"required\":[\"enabled\"],\"properties\":{\"enabled\":{\"type\":\"boolean\"}}}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"actions.collection\"}],\"affectedPaths\":[\"actions.collection\",\"actions.collection.discovery.enabled\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"actions.row.configure\",\"title\":\"Configurar acoes de linha\",\"scope\":\"global\",\"targetKind\":\"rowAction\",\"target\":{\"kind\":\"rowAction\",\"resolver\":\"action-in-row-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"display\":{\"enum\":[\"menu\",\"buttons\",\"icons\"]},\"trigger\":{\"enum\":[\"hover\",\"always\",\"click\"]},\"discovery\":{\"type\":\"object\",\"properties\":{\"enabled\":{\"type\":\"boolean\"}}}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"actions.row\"}],\"affectedPaths\":[\"actions.row\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"actions.bulk.configure\",\"title\":\"Configurar acoes em lote\",\"scope\":\"global\",\"targetKind\":\"bulkAction\",\"target\":{\"kind\":\"bulkAction\",\"resolver\":\"action-in-bulk-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"position\":{\"enum\":[\"toolbar\",\"floating\",\"both\"]}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"actions.bulk\"}],\"requiresConfirmation\":true,\"affectedPaths\":[\"actions.bulk\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"actions.context.configure\",\"title\":\"Configurar menu contextual\",\"scope\":\"global\",\"targetKind\":\"contextAction\",\"target\":{\"kind\":\"contextAction\",\"resolver\":\"action-in-context-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"trigger\":{\"enum\":[\"right-click\",\"long-press\",\"both\"]}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"actions.context\"}],\"requiresConfirmation\":true,\"affectedPaths\":[\"actions.context\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"actions.confirmations.configure\",\"title\":\"Configurar confirmacoes\",\"scope\":\"global\",\"targetKind\":\"contextAction\",\"target\":{\"kind\":\"contextAction\",\"resolver\":\"action-in-context-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"default\"],\"properties\":{\"default\":{\"type\":\"object\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"actions.confirmations\"}],\"requiresConfirmation\":true,\"affectedPaths\":[\"actions.confirmations.default\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"export.configure\",\"title\":\"Configurar exportacao\",\"description\":\"Configura a exportação governada da tabela, inclusive formatos e escopo. Para exportar apenas as linhas selecionadas, a decisão precisa manter a exportação habilitada, permitir seleção e executar a exportação usando apenas as linhas marcadas.\",\"scope\":\"global\",\"targetKind\":\"export\",\"target\":{\"kind\":\"export\",\"resolver\":\"export-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"formats\":{\"type\":\"array\",\"items\":{\"enum\":[\"excel\",\"pdf\",\"csv\",\"json\",\"print\"]}},\"general\":{\"type\":\"object\",\"properties\":{\"includeHeaders\":{\"type\":\"boolean\"},\"scope\":{\"enum\":[\"auto\",\"selected\",\"filtered\",\"currentPage\",\"all\"]},\"maxRows\":{\"type\":\"number\",\"minimum\":1}}},\"excel\":{\"type\":\"object\",\"properties\":{\"autoFitColumns\":{\"type\":\"boolean\"},\"visibleCurrentPage\":{\"type\":\"boolean\"}}},\"pdf\":{\"type\":\"object\",\"properties\":{\"orientation\":{\"enum\":[\"portrait\",\"landscape\"]},\"pageSize\":{\"enum\":[\"A4\",\"A3\",\"Letter\",\"Legal\"]}}},\"csv\":{\"type\":\"object\",\"properties\":{\"delimiter\":{\"enum\":[\",\",\";\",\"|\",\"\\\\t\"]}}}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"export\"}],\"requiresConfirmation\":true,\"affectedPaths\":[\"export\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]}]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "29b24826ee3e04035ca01dd8a145c70b60ee96ea4cbf0cd034a476d21c1edf75",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 129,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"tableRuntimeOperations.plan\",\"title\":\"Planejar operacoes runtime da tabela\",\"scope\":\"global\",\"targetKind\":\"runtimeOperation\",\"target\":{\"kind\":\"runtimeOperation\",\"resolver\":\"table-runtime-operation-contract\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"operations\"],\"properties\":{\"operations\":{\"type\":\"array\",\"minItems\":1,\"items\":{\"type\":\"object\",\"required\":[\"operationId\",\"input\"],\"properties\":{\"operationId\":{\"enum\":[\"table.filter.apply\",\"table.export.run\"]},\"input\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"criteria\":{\"type\":\"object\"},\"format\":{\"enum\":[\"excel\",\"pdf\",\"csv\",\"json\",\"print\"]},\"scope\":{\"enum\":[\"auto\",\"selected\",\"filtered\",\"currentPage\",\"all\"]}}},\"description\":{\"type\":\"string\"}}}}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"tableRuntimeOperations\"}],\"affectedPaths\":[\"tableRuntimeOperations\"],\"validators\":[\"runtime-operation-declared\"],\"submissionImpact\":\"none\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"appearance.configure\",\"title\":\"Configurar aparencia\",\"scope\":\"global\",\"targetKind\":\"appearance\",\"target\":{\"kind\":\"appearance\",\"resolver\":\"appearance-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"density\":{\"enum\":[\"compact\",\"comfortable\",\"spacious\"]},\"borders\":{\"type\":\"object\",\"properties\":{\"showRowBorders\":{\"type\":\"boolean\"},\"showColumnBorders\":{\"type\":\"boolean\"},\"showOuterBorder\":{\"type\":\"boolean\"},\"style\":{\"enum\":[\"solid\",\"dashed\",\"dotted\"]}}},\"colors\":{\"type\":\"object\",\"properties\":{\"alternateRowBackground\":{\"type\":\"string\"},\"hoverBackground\":{\"type\":\"string\"}}},\"typography\":{\"type\":\"object\",\"properties\":{\"fontSize\":{\"type\":\"string\"},\"headerFontWeight\":{\"type\":\"string\"}}},\"spacing\":{\"type\":\"object\",\"properties\":{\"cellPadding\":{\"type\":\"string\"}}},\"responsive\":{\"type\":\"object\",\"properties\":{\"mobile\":{\"type\":\"object\",\"properties\":{\"horizontalScroll\":{\"type\":\"boolean\"},\"cardMode\":{\"type\":\"boolean\"},\"priorityColumns\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}},\"breakpoints\":{\"type\":\"object\",\"properties\":{\"mobile\":{\"type\":\"number\",\"minimum\":0}}}}},\"animations\":{\"type\":\"object\",\"properties\":{\"enabled\":{\"type\":\"boolean\"}}},\"elevation\":{\"type\":\"object\",\"properties\":{\"level\":{\"type\":\"number\",\"minimum\":0}}}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"appearance\"}],\"validators\":[\"css-style-safe\"],\"affectedPaths\":[\"appearance\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"messages.configure\",\"title\":\"Configurar mensagens\",\"scope\":\"global\",\"targetKind\":\"messages\",\"target\":{\"kind\":\"messages\",\"resolver\":\"messages-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"states\":{\"type\":\"object\",\"properties\":{\"empty\":{\"type\":\"string\"},\"loading\":{\"type\":\"string\"}}},\"actions\":{\"type\":\"object\",\"properties\":{\"confirmations\":{\"type\":\"object\",\"properties\":{\"delete\":{\"type\":\"string\"}}}}}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"messages\"}],\"affectedPaths\":[\"messages\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"localization.configure\",\"title\":\"Configurar localizacao\",\"scope\":\"global\",\"targetKind\":\"localization\",\"target\":{\"kind\":\"localization\",\"resolver\":\"localization-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"locale\":{\"type\":\"string\"},\"direction\":{\"enum\":[\"ltr\",\"rtl\"]},\"dateTime\":{\"type\":\"object\",\"properties\":{\"dateFormat\":{\"type\":\"string\"},\"timeFormat\":{\"type\":\"string\"},\"dateTimeFormat\":{\"type\":\"string\"},\"firstDayOfWeek\":{\"enum\":[0,1,2,3,4,5,6]},\"relativeTime\":{\"type\":\"boolean\"},\"monthNames\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"dayNames\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}},\"number\":{\"type\":\"object\",\"properties\":{\"decimalSeparator\":{\"type\":\"string\"},\"thousandsSeparator\":{\"type\":\"string\"},\"defaultPrecision\":{\"type\":\"number\",\"minimum\":0},\"negativeSign\":{\"type\":\"string\"},\"negativeSignPosition\":{\"enum\":[\"before\",\"after\"]}}},\"currency\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"string\"},\"symbol\":{\"type\":\"string\"},\"position\":{\"enum\":[\"before\",\"after\"]},\"spacing\":{\"type\":\"boolean\"},\"precision\":{\"type\":\"number\",\"minimum\":0}}},\"formatting\":{\"type\":\"object\",\"properties\":{\"percentageFormat\":{\"type\":\"string\"},\"fileSizeFormat\":{\"enum\":[\"binary\",\"decimal\"]}}}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"localization\"}],\"affectedPaths\":[\"localization\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"performance.configure\",\"title\":\"Configurar performance\",\"scope\":\"global\",\"targetKind\":\"performance\",\"target\":{\"kind\":\"performance\",\"resolver\":\"performance-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"virtualization\":{\"type\":\"object\",\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"itemHeight\":{\"type\":\"number\",\"minimum\":1}}},\"debounce\":{\"type\":\"object\",\"properties\":{\"search\":{\"type\":\"number\",\"minimum\":0},\"filter\":{\"type\":\"number\",\"minimum\":0}}},\"lazyLoading\":{\"type\":\"object\",\"properties\":{\"images\":{\"type\":\"boolean\"}}}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"performance\"}],\"affectedPaths\":[\"performance\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"data.loadingStrategy.set\",\"title\":\"Definir estrategia de carregamento\",\"scope\":\"global\",\"targetKind\":\"data\",\"target\":{\"kind\":\"data\",\"resolver\":\"data-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"loadingStrategy\"],\"properties\":{\"loadingStrategy\":{\"enum\":[\"eager\",\"lazy\",\"on-demand\"]}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"data.loadingStrategy\"}],\"affectedPaths\":[\"data.loadingStrategy\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"accessibility.configure\",\"title\":\"Configurar acessibilidade\",\"scope\":\"global\",\"targetKind\":\"accessibility\",\"target\":{\"kind\":\"accessibility\",\"resolver\":\"accessibility-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"highContrast\":{\"type\":\"boolean\"},\"reduceMotion\":{\"type\":\"boolean\"},\"announcements\":{\"type\":\"object\",\"properties\":{\"liveRegion\":{\"enum\":[\"polite\",\"assertive\"]}}},\"keyboard\":{\"type\":\"object\",\"properties\":{\"shortcuts\":{\"type\":\"boolean\"}}}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"accessibility\"}],\"requiresConfirmation\":true,\"affectedPaths\":[\"accessibility\"],\"validators\":[\"editor-round-trip-preserve\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\"]}]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "577ac681696f1e91f494ba641a074e2b8cd31285a07314825914508836704373",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 130,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"validators\",\"validators\":[{\"validatorId\":\"target-column-exists\",\"level\":\"error\",\"code\":\"TB001\",\"description\":\"A coluna alvo deve existir na configuração.\"},{\"validatorId\":\"column-field-unique\",\"level\":\"error\",\"code\":\"TB002\",\"description\":\"O identificador técnico da coluna (field) deve ser único.\"},{\"validatorId\":\"renderer-type-supported\",\"level\":\"error\",\"code\":\"TB003\",\"description\":\"O tipo de renderizador deve ser suportado pelo componente.\"},{\"validatorId\":\"renderer-config-match\",\"level\":\"error\",\"code\":\"TB004\",\"description\":\"A configuração do renderizador deve corresponder ao tipo selecionado.\"},{\"validatorId\":\"renderer-fields-exist\",\"level\":\"error\",\"code\":\"TB023\",\"description\":\"Todos os campos referenciados pelo renderizador devem existir na configuração atual da tabela.\"},{\"validatorId\":\"renderer-compose-exists\",\"level\":\"error\",\"code\":\"TB022\",\"description\":\"O renderer alvo deve ser uma composição existente e conter ao menos um item antes de refinar seu layout.\"},{\"validatorId\":\"renderer-compose-item-exists\",\"level\":\"error\",\"code\":\"TB021\",\"description\":\"O renderer alvo deve ser compose e conter exatamente um item compatível com itemType e itemField.\"},{\"validatorId\":\"grouping-fields-exist\",\"level\":\"error\",\"code\":\"TB005\",\"description\":\"Os campos de agrupamento devem existir na definição de colunas.\"},{\"validatorId\":\"filter-fields-exist\",\"level\":\"error\",\"code\":\"TB018\",\"description\":\"Os campos de filtro avançado devem existir no schema request do filtro governado.\"},{\"validatorId\":\"destructive-removal-confirmation\",\"level\":\"error\",\"code\":\"TB006\",\"description\":\"Remoções destrutivas de colunas ou ações exigem confirmação explícita.\"},{\"validatorId\":\"computed-expression-valid\",\"level\":\"error\",\"code\":\"TB007\",\"description\":\"A expressão de cálculo deve ser um AST Json Logic válido.\"},{\"validatorId\":\"remote-resource-binding-safe\",\"level\":\"error\",\"code\":\"TB008\",\"description\":\"A ligação com recurso remoto não deve conter URLs absolutas não permitidas.\"},{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"TB009\",\"description\":\"A edição não deve corromper propriedades críticas necessárias para o round-trip do editor.\"},{\"validatorId\":\"toolbar-action-id-unique\",\"level\":\"error\",\"code\":\"TB010\",\"description\":\"O id da ação de toolbar deve ser único em toolbar.actions[]. O efeito append-unique usa este id como chave de deduplicação.\"},{\"validatorId\":\"row-action-id-unique\",\"level\":\"error\",\"code\":\"TB011\",\"description\":\"O id da row action deve ser único em actions.row.actions[]. O efeito append-unique usa este id como chave de deduplicação.\"},{\"validatorId\":\"bulk-action-id-unique\",\"level\":\"error\",\"code\":\"TB017\",\"description\":\"O id da ação em lote deve ser único em actions.bulk.actions[]. O efeito append-unique usa este id como chave de deduplicação.\"},{\"validatorId\":\"format-preset-supported\",\"level\":\"error\",\"code\":\"TB012\",\"description\":\"O formato deve usar um preset canonico publicado em table-ai-capabilities.ts.\"},{\"validatorId\":\"column-width-valid\",\"level\":\"error\",\"code\":\"TB013\",\"description\":\"A largura deve ser auto ou uma medida simples em px, %, rem ou em.\"},{\"validatorId\":\"css-style-safe\",\"level\":\"error\",\"code\":\"TB014\",\"description\":\"Estilos inline devem permanecer em CSS simples e seguro, sem scripts, URLs perigosas ou expressoes dinamicas.\"},{\"validatorId\":\"value-mapping-valid\",\"level\":\"error\",\"code\":\"TB015\",\"description\":\"O mapeamento de valores deve ser um objeto simples com chaves estaveis e labels serializaveis.\"},{\"validatorId\":\"conditional-style-valid\",\"level\":\"error\",\"code\":\"TB016\",\"description\":\"Regras condicionais devem ter id estavel, condition Json Logic e ao menos cssClass, style ou effects.\"},{\"validatorId\":\"conditional-surface-accessible\",\"level\":\"error\",\"code\":\"TB020\",\"description\":\"Foreground explícito deve atingir contraste AA em fundo sólido; fundo sem foreground é derivado pelo runtime e composições não determinísticas exigem diagnóstico.\"},{\"validatorId\":\"runtime-operation-declared\",\"level\":\"error\",\"code\":\"TB019\",\"description\":\"Operacoes runtime devem usar operationId e input declarados em tableRuntimeOperations sem alterar a configuracao persistida.\"},{\"validatorId\":\"schema-column-override-field-immutable\",\"level\":\"error\",\"code\":\"TB024\",\"description\":\"Overrides de projecao podem alterar apresentacao e comportamento, mas nunca a identidade canonica field.\"}]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "a8673822383ebf69b950282883e1103c4829e7a80f5a288aafa8e21799ab6ea4",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 131,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"roundTripRequirements\",\"roundTripRequirements\":[\"preserve-column-order\",\"normalize-enum-values\",\"maintain-renderer-precedence\",\"preserve-meta-ids\"]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "1f39f394e2035f0657b31087767849a4dc525e1b31673358dbb90605a075c596",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 132,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"presentationAffordances\",\"presentationAffordances\":{\"version\":\"0.2.0\",\"componentId\":\"praxis-table\",\"defaultTargetKind\":\"column\",\"sourceRef\":\"praxis-ui-angular:projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts#presentationAffordances\",\"affordances\":[{\"id\":\"table.conditional-surface.row\",\"targetKind\":\"row\",\"category\":\"surface-preset\",\"description\":\"Versioned semantic row surfaces materialized privately by the table runtime.\",\"options\":[\"success\",\"warning\",\"danger\",\"highlight\"],\"appliesToTypes\":[\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.conditional-surface.cell\",\"targetKind\":\"column\",\"category\":\"surface-preset\",\"description\":\"Versioned semantic cell surfaces materialized privately by the table runtime.\",\"options\":[\"success\",\"warning\",\"danger\",\"highlight\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.text-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Text transforms and masks for textual table columns.\",\"options\":[\"none\",\"uppercase\",\"lowercase\",\"titlecase\",\"capitalize\",\"uppercase|truncate|50|...\",\"000.000.000-00\"],\"appliesToTypes\":[\"string\",\"text\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.numeric-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Decimal, currency and percentage formats for numeric table columns.\",\"options\":[\"1.0-0\",\"1.1-1\",\"1.2-2\",\"1.0-3\",\"1.0-0|nosep\",\"BRL|symbol|2\",\"USD|symbol|2\",\"EUR|symbol|2\",\"BRL|code|2\",\"USD|code|0\",\"BRL|symbol|2|nosep\",\"EUR|symbol|2|nosep\",\"1.0-0|x100\",\"1.1-1|x100\",\"1.2-2|x100\"],\"appliesToTypes\":[\"number\",\"currency\",\"percentage\"],\"unknownCompatible\":false},{\"id\":\"table.column.date-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Date and time formats for date-like table columns.\",\"options\":[\"shortDate\",\"mediumDate\",\"longDate\",\"fullDate\",\"MMM/yyyy\",\"shortTime\",\"short\",\"yyyy-MM-dd\",\"dd/MM/yyyy\",\"yyyy-MM-dd HH:mm\"],\"appliesToTypes\":[\"date\",\"datetime\",\"time\"],\"unknownCompatible\":false},{\"id\":\"table.column.boolean-formatting\",\"targetKind\":\"column\",\"category\":\"format\",\"description\":\"Boolean label formats for true/false table columns.\",\"options\":[\"true-false\",\"yes-no\",\"active-inactive\",\"on-off\",\"enabled-disabled\",\"custom|Sim|Nao\"],\"appliesToTypes\":[\"boolean\"],\"unknownCompatible\":false},{\"id\":\"table.column.semantic-renderers\",\"targetKind\":\"column\",\"category\":\"renderer\",\"description\":\"Visual renderers for categorical, status or action-oriented table columns.\",\"options\":[\"badge\",\"chip\",\"icon\",\"link\",\"button\",\"progress\",\"avatar\",\"toggle\",\"menu\",\"rating\",\"compose\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true},{\"id\":\"table.column.alignment-layout\",\"targetKind\":\"column\",\"category\":\"layout\",\"description\":\"Column alignment and composed cell layout options.\",\"options\":[\"align:start\",\"align:center\",\"align:end\",\"compose:row\",\"compose:column\",\"secondary-line\",\"prefix\",\"suffix\"],\"appliesToTypes\":[\"string\",\"text\",\"boolean\",\"number\",\"currency\",\"percentage\",\"date\",\"datetime\",\"unknown\"],\"unknownCompatible\":true}]}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "83601d222f4db5011951929006a6ce61e925dac3f11d15886aae653b6eeaa27e",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 133,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"examples\",\"examples\":[{\"id\":\"add-schema-column\",\"request\":\"Adicionar coluna para o campo email com o título Contato\",\"operationId\":\"column.add\",\"params\":{\"field\":\"email\",\"header\":\"Contato\",\"type\":\"string\"},\"isPositive\":true},{\"id\":\"add-email-column-imperative\",\"request\":\"Adicione a coluna e-mail à tabela de funcionários e mantenha as demais colunas\",\"operationId\":\"column.add\",\"params\":{\"field\":\"email\",\"header\":\"E-mail\",\"type\":\"string\"},\"isPositive\":true},{\"id\":\"rename-active-column-to-status\",\"request\":\"Ativo vira Status.\",\"operationId\":\"column.header.set\",\"target\":\"ativo\",\"params\":{\"header\":\"Status\"},\"isPositive\":true},{\"id\":\"rename-column-title-without-changing-cell-values\",\"request\":\"Troque somente o título da coluna Ativo para Status, sem alterar os valores das células\",\"operationId\":\"column.header.set\",\"target\":\"ativo\",\"params\":{\"header\":\"Status\"},\"isPositive\":true},{\"id\":\"cell-value-mapping-is-not-header-renaming\",\"request\":\"Sem mudar o título da coluna Ativo, mostre Sim e Não no lugar dos valores das células\",\"operationId\":\"column.header.set\",\"target\":\"ativo\",\"isPositive\":false},{\"id\":\"current-column-label-is-not-a-rename-request\",\"request\":\"Na coluna chamada Status, mostre um chip vermelho quando o valor estiver inativo\",\"operationId\":\"column.header.set\",\"target\":\"ativo\",\"isPositive\":false},{\"id\":\"add-computed-column\",\"request\":\"Criar coluna de idade baseada na data de nascimento\",\"operationId\":\"column.computed.add\",\"params\":{\"field\":\"idade\",\"header\":\"Idade\",\"expression\":{\"yearsSince\":[{\"var\":\"dataNascimento\"}]},\"outputType\":\"number\"},\"isPositive\":true},{\"id\":\"add-conditional-badge\",\"request\":\"Mostrar badge vermelho na coluna status se o valor for \\\"atrasado\\\"\",\"operationId\":\"column.conditionalRenderer.add\",\"target\":\"status\",\"params\":{\"id\":\"badge-atrasado\",\"condition\":{\"==\":[{\"var\":\"status\"},\"atrasado\"]},\"renderer\":{\"type\":\"badge\",\"badge\":{\"color\":\"warn\",\"variant\":\"filled\"}}},\"isPositive\":true},{\"id\":\"set-active-base-chip-for-status-pair\",\"request\":\"Na coluna Status, use chip verde quando ativo e chip vermelho quando inativo sem alterar as outras colunas\",\"operationId\":\"column.renderer.set\",\"target\":\"ativo\",\"params\":{\"type\":\"chip\",\"chip\":{\"textField\":\"ativo\",\"color\":\"success\",\"variant\":\"filled\"}},\"isPositive\":true},{\"id\":\"add-inactive-conditional-chip\",\"request\":\"Na coluna Status, use chip verde quando ativo e chip vermelho quando inativo sem alterar as outras colunas\",\"operationId\":\"column.conditionalRenderer.add\",\"target\":\"ativo\",\"params\":{\"id\":\"chip-inativo\",\"condition\":{\"==\":[{\"var\":\"ativo\"},false]},\"renderer\":{\"type\":\"chip\",\"chip\":{\"text\":\"Inativo\",\"color\":\"warn\",\"variant\":\"filled\"}}},\"isPositive\":true},{\"id\":\"enable-export\",\"request\":\"Habilitar exportação para Excel e PDF\",\"operationId\":\"export.enabled.set\",\"params\":{\"enabled\":true,\"formats\":[\"excel\",\"pdf\"]},\"isPositive\":true},{\"id\":\"add-row-action\",\"request\":\"Adicionar botão de excluir na linha\",\"operationId\":\"rowAction.add\",\"params\":{\"id\":\"delete\",\"label\":\"Excluir\",\"action\":\"delete\",\"icon\":\"delete\",\"color\":\"warn\"},\"isPositive\":true},{\"id\":\"add-row-action-open-route\",\"request\":\"Adicionar botão de linha para abrir detalhe com navegação interna\",\"operationId\":\"rowAction.add\",\"params\":{\"id\":\"details\",\"label\":\"Detalhes\",\"action\":\"navigation.openRoute\",\"icon\":\"open_in_new\",\"globalAction\":{\"actionId\":\"navigation.openRoute\",\"payload\":{\"path\":\"/clientes/detalhe\",\"query\":{\"id\":\"${row.id}\"}}}},\"isPositive\":true},{\"id\":\"group-by-field\",\"request\":\"Agrupar a tabela por departamento\",\"operationId\":\"grouping.set\",\"params\":{\"enabled\":true,\"fields\":[\"departamento\"]},\"isPositive\":true},{\"id\":\"reject-invalid-renderer\",\"request\":\"Configurar imagem para um renderizador do tipo ícone\",\"operationId\":\"column.renderer.set\",\"target\":\"avatar\",\"params\":{\"type\":\"icon\",\"image\":{\"src\":\"...\"}},\"isPositive\":false},{\"id\":\"compose-photo-and-code-in-code-cell\",\"request\":\"Na coluna Código, mostrar primeiro a foto e depois o código na mesma célula, sem manter Foto como coluna separada\",\"operationId\":\"column.renderer.set\",\"target\":\"codigo\",\"params\":{\"type\":\"compose\",\"compose\":{\"items\":[{\"type\":\"avatar\",\"avatar\":{\"srcField\":\"foto\",\"altField\":\"nome\",\"initialsField\":\"nome\",\"shape\":\"rounded\",\"size\":32}},{\"type\":\"value\",\"field\":\"codigo\"}],\"layout\":{\"direction\":\"row\",\"align\":\"center\",\"gap\":8}}},\"isPositive\":true},{\"id\":\"stack-existing-photo-and-code-vertically\",\"request\":\"No composto anterior, deixe em duas linhas: foto em cima e código embaixo\",\"operationId\":\"column.renderer.composeLayout.set\",\"target\":\"codigo\",\"params\":{\"direction\":\"column\"},\"isPositive\":true},{\"id\":\"grow-photo-inside-existing-compose\",\"request\":\"Aumente um pouco somente a foto dessa célula composta, sem mudar os outros itens\",\"operationId\":\"column.renderer.composeItem.set\",\"target\":\"codigo\",\"params\":{\"itemType\":\"avatar\",\"item\":{\"type\":\"avatar\",\"avatar\":{\"srcField\":\"foto\",\"initialsField\":\"nome\",\"shape\":\"rounded\",\"size\":40}}},\"isPositive\":true},{\"id\":\"shrink-photo-inside-existing-compose\",\"request\":\"Diminua só essa foto; ela está grande demais, e preserve o restante\",\"operationId\":\"column.renderer.composeItem.set\",\"target\":\"codigo\",\"params\":{\"itemType\":\"avatar\",\"item\":{\"type\":\"avatar\",\"avatar\":{\"srcField\":\"foto\",\"initialsField\":\"nome\",\"shape\":\"rounded\",\"size\":24}}},\"isPositive\":true},{\"id\":\"make-photo-circular-inside-existing-compose\",\"request\":\"Deixe somente a foto dessa célula composta circular, sem alterar tamanho, layout ou os outros itens\",\"operationId\":\"column.renderer.composeItem.set\",\"target\":\"codigo\",\"params\":{\"itemType\":\"avatar\",\"item\":{\"type\":\"avatar\",\"avatar\":{\"srcField\":\"foto\",\"initialsField\":\"nome\",\"shape\":\"circle\",\"size\":24}}},\"isPositive\":true},{\"id\":\"set-composed-photo-rounded-square-after-correction\",\"request\":\"Deixe a foto circular... não, cancela essa parte: quero quadrada com cantos arredondados\",\"operationId\":\"column.renderer.composeItem.set\",\"target\":\"codigo\",\"params\":{\"itemType\":\"avatar\",\"item\":{\"type\":\"avatar\",\"avatar\":{\"srcField\":\"foto\",\"initialsField\":\"nome\",\"shape\":\"rounded\",\"size\":24}}},\"isPositive\":true},{\"id\":\"set-button-renderer\",\"request\":\"Transformar a coluna acoes em botao que executa abrir-detalhe\",\"operationId\":\"column.renderer.set\",\"target\":\"acoes\",\"params\":{\"type\":\"button\",\"button\":{\"label\":\"Abrir\",\"action\":{\"id\":\"abrir-detalhe\"}}},\"isPositive\":true},{\"id\":\"add-column-conditional-style\",\"request\":\"Destacar a coluna status quando o valor estiver bloqueado\",\"operationId\":\"column.conditionalStyle.add\",\"target\":\"status\",\"params\":{\"id\":\"status-bloqueado\",\"condition\":{\"==\":[{\"var\":\"status\"},\"bloqueado\"]},\"cssClass\":\"status-bloqueado\"},\"isPositive\":true},{\"id\":\"set-currency-format-preset\",\"request\":\"Formatar a coluna total como moeda brasileira\",\"operationId\":\"column.format.set\",\"target\":\"total\",\"params\":{\"format\":\"BRL|symbol|2\"},\"isPositive\":true},{\"id\":\"set-cpf-format-preset\",\"request\":\"Formate a coluna CPF\",\"operationId\":\"column.format.set\",\"target\":\"cpf\",\"params\":{\"format\":\"000.000.000-00\"},\"isPositive\":true},{\"id\":\"set-long-date-format-preset\",\"request\":\"Mostre a data de admissão por extenso\",\"operationId\":\"column.format.set\",\"target\":\"dataAdmissao\",\"params\":{\"format\":\"longDate\"},\"isPositive\":true},{\"id\":\"set-basic-column-width\",\"request\":\"Definir a largura da coluna nome para 240px\",\"operationId\":\"column.width.set\",\"target\":\"nome\",\"params\":{\"width\":\"240px\"},\"isPositive\":true},{\"id\":\"set-salary-align-right\",\"request\":\"Alinhe o salário à direita\",\"operationId\":\"column.align.set\",\"target\":\"salario\",\"params\":{\"align\":\"right\"},\"isPositive\":true},{\"id\":\"make-name-sticky-start\",\"request\":\"Fixe a coluna funcionário no início da tabela\",\"operationId\":\"column.sticky.set\",\"target\":\"funcionario\",\"params\":{\"sticky\":\"start\"},\"isPositive\":true}]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "2cbbd221269454b1593b1dd1c6cd13aed55f3ce3375349220dd418b9a6b17c79",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 134,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"examples\",\"examples\":[{\"id\":\"moving-column-to-start-is-not-sticky\",\"request\":\"Mova a coluna salário líquido da tabela para o início\",\"operationId\":\"column.sticky.set\",\"target\":\"salarioLiquido\",\"isPositive\":false},{\"id\":\"disable-cpf-sorting\",\"request\":\"Não permita ordenar pela coluna CPF\",\"operationId\":\"column.sortable.set\",\"target\":\"cpf\",\"params\":{\"sortable\":false},\"isPositive\":true},{\"id\":\"enable-department-filter\",\"request\":\"Deixe o departamento disponível nos filtros\",\"operationId\":\"column.filterable.set\",\"target\":\"departamento\",\"params\":{\"filterable\":true},\"isPositive\":true},{\"id\":\"hide-internal-id-column\",\"request\":\"Oculte o ID interno da tabela\",\"operationId\":\"column.visibility.set\",\"target\":\"id\",\"params\":{\"visible\":false},\"isPositive\":true},{\"id\":\"hide-source-column-after-cell-composition\",\"request\":\"Na coluna Código, mostrar primeiro a foto e depois o código na mesma célula, sem manter Foto como coluna separada\",\"operationId\":\"column.visibility.set\",\"target\":\"foto\",\"params\":{\"visible\":false},\"isPositive\":true},{\"id\":\"move-whole-photo-column-before-code\",\"request\":\"Mover a coluna Foto inteira para antes da coluna Código, mantendo as duas colunas separadas e sem alterar suas células\",\"operationId\":\"column.order.set\",\"target\":\"foto\",\"params\":{\"order\":0},\"isPositive\":true},{\"id\":\"move-net-salary-column-to-start\",\"request\":\"Mova a coluna salário líquido da tabela para o início\",\"operationId\":\"column.order.set\",\"target\":\"salarioLiquido\",\"params\":{\"order\":0},\"isPositive\":true},{\"id\":\"pinning-column-is-not-reordering\",\"request\":\"Fixe a coluna funcionário no início durante a rolagem horizontal\",\"operationId\":\"column.order.set\",\"target\":\"funcionario\",\"isPositive\":false},{\"id\":\"map-active-status-labels\",\"request\":\"Sem mudar o título da coluna Ativo, mostre Sim e Não no lugar dos valores das células\",\"operationId\":\"column.valueMapping.set\",\"target\":\"ativo\",\"params\":{\"valueMapping\":{\"true\":\"Sim\",\"false\":\"Não\"}},\"isPositive\":true},{\"id\":\"column-header-renaming-is-not-value-mapping\",\"request\":\"Ativo vira Status.\",\"operationId\":\"column.valueMapping.set\",\"target\":\"ativo\",\"isPositive\":false},{\"id\":\"set-avatar-chip-renderer\",\"request\":\"Corrija o avatar do funcionário e mantenha o nome como chip\",\"operationId\":\"column.renderer.set\",\"target\":\"funcionario\",\"params\":{\"type\":\"compose\",\"compose\":{\"items\":[{\"type\":\"avatar\",\"avatar\":{\"srcField\":\"avatarUrl\",\"initialsField\":\"funcionario\",\"shape\":\"circle\",\"backgroundColor\":\"#E3F2FD\",\"textColor\":\"#0D47A1\"}},{\"type\":\"chip\",\"chip\":{\"textField\":\"funcionario\",\"variant\":\"soft\"}}]}},\"isPositive\":true},{\"id\":\"highlight-high-salary-row-red\",\"request\":\"Destaque de vermelho as linhas com salário acima de 30 mil\",\"operationId\":\"row.styleRule.add\",\"params\":{\"id\":\"salario-acima-30000\",\"condition\":{\">\":[{\"var\":\"salario\"},30000]},\"effects\":[{\"id\":\"salario-alto-destaque\",\"scope\":\"row\",\"description\":\"Destaque visual para salários acima de R$ 30.000.\",\"estilo\":{\"color\":\"#B42318\",\"bold\":true},\"background\":{\"color\":\"#FDECEC\"},\"layout\":{\"border\":\"left\",\"borderColor\":\"#D92D20\",\"borderWidth\":4}}],\"description\":\"Destaca a linha inteira sem alterar dados, filtros ou paginação.\"},\"isPositive\":true},{\"id\":\"change-high-salary-row-highlight-to-orange\",\"request\":\"Agora troque vermelho por laranja\",\"operationId\":\"row.styleRule.update\",\"target\":\"salario-acima-30000\",\"params\":{\"description\":\"Destaca em laranja a linha inteira para salários acima de R$ 30.000.\",\"effects\":[{\"id\":\"salario-alto-destaque\",\"scope\":\"row\",\"description\":\"Destaque visual laranja para salários acima de R$ 30.000.\",\"estilo\":{\"color\":\"#9A3412\",\"bold\":true},\"background\":{\"color\":\"#FFEDD5\"},\"layout\":{\"border\":\"left\",\"borderColor\":\"#F97316\",\"borderWidth\":4}}]},\"isPositive\":true},{\"id\":\"animate-high-salary-row\",\"request\":\"Anime suavemente as linhas com salário acima de 30000\",\"operationId\":\"row.conditionalRenderer.add\",\"params\":{\"id\":\"salario-alto-pulse\",\"condition\":{\">\":[{\"var\":\"salario\"},30000]},\"animation\":{\"preset\":\"pulse-soft\",\"trigger\":\"onAppear\",\"intensity\":\"subtle\",\"repeat\":\"once\",\"durationMs\":1200},\"description\":\"Destaca linhas de salário alto sem alterar os dados.\"},\"isPositive\":true},{\"id\":\"style-low-salary-cell\",\"request\":\"Para salários menores que 30000, use fundo laranja claro\",\"operationId\":\"column.conditionalStyle.add\",\"target\":\"salario\",\"params\":{\"id\":\"salario-baixo-laranja\",\"condition\":{\"<\":[{\"var\":\"salario\"},30000]},\"style\":{\"backgroundColor\":\"#FFF3E0\",\"color\":\"#8A4B00\"},\"tooltip\":{\"text\":\"Salário abaixo do recorte configurado\",\"position\":\"top\"}},\"isPositive\":true},{\"id\":\"enable-advanced-filters-human\",\"request\":\"Ative filtros avançados e deixe CPF e departamento sempre visíveis\",\"operationId\":\"filter.advanced.configure\",\"params\":{\"enabled\":true,\"queryBuilder\":true,\"savePresets\":true,\"settings\":{\"mode\":\"filter\",\"showAdvanced\":true,\"alwaysVisibleFields\":[\"cpf\",\"departamento\"]}},\"isPositive\":true},{\"id\":\"add-salary-to-advanced-filters-human\",\"request\":\"Inclua também Salário nesses filtros\",\"operationId\":\"filter.advanced.fields.add\",\"params\":{\"fields\":[\"salario\"],\"selected\":true,\"alwaysVisible\":true},\"isPositive\":true},{\"id\":\"remove-active-from-advanced-filters-human\",\"request\":\"Agora remova Ativo desses filtros\",\"operationId\":\"filter.advanced.fields.remove\",\"params\":{\"fields\":[\"ativo\"],\"selected\":true,\"alwaysVisible\":true},\"isPositive\":true},{\"id\":\"enable-table-filters-human\",\"request\":\"Habilite os filtros dinâmicos da tabela\",\"operationId\":\"behavior.filtering.configure\",\"params\":{\"enabled\":true,\"strategy\":\"client\",\"debounceMs\":250},\"isPositive\":true},{\"id\":\"compact-density-human\",\"request\":\"Deixe a tabela mais compacta\",\"operationId\":\"appearance.density.set\",\"params\":{\"density\":\"compact\"},\"isPositive\":true},{\"id\":\"toolbar-search-refresh-human\",\"request\":\"Mostre busca e botão de atualizar na toolbar\",\"operationId\":\"toolbar.configure\",\"params\":{\"visible\":true,\"showSearch\":true,\"showRefresh\":true},\"isPositive\":true},{\"id\":\"rename-global-table-title-human\",\"request\":\"Altere o titulo da tabela para Folha operacional revisada\",\"operationId\":\"toolbar.configure\",\"params\":{\"title\":\"Folha operacional revisada\"},\"isPositive\":true},{\"id\":\"column-title-is-not-global-table-title-human\",\"request\":\"Altere o título da coluna Salário Líquido para Valor líquido\",\"operationId\":\"toolbar.configure\",\"target\":\"salarioLiquido\",\"isPositive\":false},{\"id\":\"selected-rows-export-is-not-toolbar-presentation\",\"request\":\"Habilite um botão para exportar apenas as linhas selecionadas\",\"operationId\":\"toolbar.configure\",\"isPositive\":false},{\"id\":\"configure-selected-rows-export\",\"request\":\"Habilite em uma tabela o botão para exportar apenas as linhas selecionadas\",\"operationId\":\"export.configure\",\"params\":{\"enabled\":true,\"general\":{\"scope\":\"selected\"}},\"isPositive\":true},{\"id\":\"configure-server-pagination\",\"request\":\"Usar paginacao no servidor com 50 linhas por pagina\",\"operationId\":\"behavior.pagination.configure\",\"params\":{\"enabled\":true,\"strategy\":\"server\",\"pageSize\":50,\"position\":\"bottom\"},\"isPositive\":true},{\"id\":\"configure-default-sorting\",\"request\":\"Ordenar inicialmente por data de criacao decrescente\",\"operationId\":\"behavior.sorting.configure\",\"params\":{\"enabled\":true,\"strategy\":\"server\",\"defaultSort\":{\"column\":\"createdAt\",\"direction\":\"desc\"}},\"isPositive\":true},{\"id\":\"configure-bulk-actions\",\"request\":\"Habilitar acoes em lote na toolbar\",\"operationId\":\"actions.bulk.configure\",\"params\":{\"enabled\":true,\"position\":\"toolbar\"},\"isPositive\":true},{\"id\":\"configure-localization\",\"request\":\"Configurar a tabela para portugues do Brasil\",\"operationId\":\"localization.configure\",\"params\":{\"locale\":\"pt-BR\",\"direction\":\"ltr\",\"dateTime\":{\"dateFormat\":\"dd/MM/yyyy\"}},\"isPositive\":true}]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "e0f594fdfdfaa6ec852b96b3f7bcef1cde95dfc5c784246cd0b7afd6b684c46f",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 135,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"2.2.5\",\"componentId\":\"praxis-table\",\"ownerPackage\":\"@praxisui/table\",\"configSchemaId\":\"TableConfig\",\"chunkSection\":\"examples\",\"examples\":[{\"id\":\"configure-accessibility\",\"request\":\"Ativar alto contraste e reduzir animacoes\",\"operationId\":\"accessibility.configure\",\"params\":{\"enabled\":true,\"highContrast\":true,\"reduceMotion\":true,\"announcements\":{\"liveRegion\":\"polite\"}},\"isPositive\":true},{\"id\":\"require-removal-confirmation\",\"request\":\"Remover a coluna nome\",\"operationId\":\"column.remove\",\"target\":\"nome\",\"isPositive\":true}]}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/praxis-table-authoring-manifest.ts",
          "contentHash": "58862209d5c17b31804e1646bb8f47241ece99c11531104f0a46875cad218eac",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 136,
          "chunkKind": "context_pack",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"componentContext\",\"componentContext\":{\"version\":\"v1\"}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/table-context-pack.ts",
          "contentHash": "d19bcd8e51b0beb9f76f96a02777444387bbcd12982a8846db34eb67ee9b0795",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 137,
          "chunkKind": "context_pack",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"componentContext.optionsByPath\",\"componentContext\":{\"optionsByPath\":{\"appearance.density\":{\"mode\":\"enum\",\"options\":[{\"value\":\"compact\",\"label\":\"Compact\"},{\"value\":\"comfortable\",\"label\":\"Comfortable\"},{\"value\":\"spacious\",\"label\":\"Spacious\"}]},\"export.formats\":{\"mode\":\"enum\",\"options\":[{\"value\":\"excel\",\"label\":\"Excel\"},{\"value\":\"pdf\",\"label\":\"PDF\"},{\"value\":\"csv\",\"label\":\"CSV\"},{\"value\":\"json\",\"label\":\"JSON\"},{\"value\":\"print\",\"label\":\"Print\"}]},\"columns[].type\":{\"mode\":\"enum\",\"options\":[{\"value\":\"string\",\"label\":\"String\"},{\"value\":\"number\",\"label\":\"Number\"},{\"value\":\"currency\",\"label\":\"Currency\"},{\"value\":\"percentage\",\"label\":\"Percentage\"},{\"value\":\"date\",\"label\":\"Date\"},{\"value\":\"boolean\",\"label\":\"Boolean\"},{\"value\":\"custom\",\"label\":\"Custom\"}]},\"columns[].format\":{\"mode\":\"suggested\",\"options\":[{\"value\":\"shortDate\",\"label\":\"Date short\",\"example\":\"01/12/2023\"},{\"value\":\"mediumDate\",\"label\":\"Date medium\",\"example\":\"01 Dec 2023\"},{\"value\":\"longDate\",\"label\":\"Date long\",\"example\":\"01 December 2023\"},{\"value\":\"fullDate\",\"label\":\"Date full\",\"example\":\"Friday, 01 December 2023\"},{\"value\":\"MMM/yyyy\",\"label\":\"Month/Year\",\"example\":\"Dec/2023\"},{\"value\":\"shortTime\",\"label\":\"Time short\",\"example\":\"14:30\"},{\"value\":\"short\",\"label\":\"Date+Time short\",\"example\":\"01/12/2023 14:30\"},{\"value\":\"yyyy-MM-dd\",\"label\":\"ISO 8601\",\"example\":\"2023-12-01\"},{\"value\":\"dd/MM/yyyy\",\"label\":\"Date dd/MM/yyyy\",\"example\":\"01/12/2023\"},{\"value\":\"yyyy-MM-dd HH:mm\",\"label\":\"DateTime yyyy-MM-dd HH:mm\",\"example\":\"2023-12-01 14:30\"},{\"value\":\"1.0-0\",\"label\":\"Number integer\",\"example\":\"1,234\"},{\"value\":\"1.1-1\",\"label\":\"Number 1 decimal\",\"example\":\"1,234.5\"},{\"value\":\"1.2-2\",\"label\":\"Number 2 decimals\",\"example\":\"1,234.56\"},{\"value\":\"1.0-3\",\"label\":\"Number up to 3 decimals\",\"example\":\"1,234.567\"},{\"value\":\"1.0-0|nosep\",\"label\":\"Number no grouping\",\"example\":\"1234\"},{\"value\":\"BRL|symbol|2\",\"label\":\"Currency BRL symbol\",\"example\":\"R$ 1.234,56\"},{\"value\":\"BRL|symbol|2|nosep\",\"label\":\"Currency BRL symbol (no grouping)\",\"example\":\"R$ 1234,56\"},{\"value\":\"USD|symbol|2\",\"label\":\"Currency USD symbol\",\"example\":\"US$ 1,234.56\"},{\"value\":\"EUR|symbol|2\",\"label\":\"Currency EUR symbol\",\"example\":\"EUR 1,234.56\"},{\"value\":\"BRL|code|2\",\"label\":\"Currency code\",\"example\":\"1,234.56 BRL\"},{\"value\":\"USD|code|0\",\"label\":\"Currency USD code (0 decimals)\",\"example\":\"1234 USD\"},{\"value\":\"EUR|symbol|2|nosep\",\"label\":\"Currency EUR symbol (no grouping)\",\"example\":\"EUR 1234,56\"},{\"value\":\"1.0-0\",\"label\":\"Percent 0 decimals\",\"example\":\"12%\"},{\"value\":\"1.1-1\",\"label\":\"Percent 1 decimal\",\"example\":\"12.3%\"},{\"value\":\"1.2-2\",\"label\":\"Percent 2 decimals\",\"example\":\"12.34%\"},{\"value\":\"1.0-0|x100\",\"label\":\"Percent 0 decimals (x100)\",\"example\":\"12%\"},{\"value\":\"1.1-1|x100\",\"label\":\"Percent 1 decimal (x100)\",\"example\":\"12.3%\"},{\"value\":\"1.2-2|x100\",\"label\":\"Percent 2 decimals (x100)\",\"example\":\"12.34%\"},{\"value\":\"none\",\"label\":\"String none\",\"example\":\"Sample\"},{\"value\":\"uppercase\",\"label\":\"String uppercase\",\"example\":\"SAMPLE\"},{\"value\":\"lowercase\",\"label\":\"String lowercase\",\"example\":\"sample\"},{\"value\":\"titlecase\",\"label\":\"String titlecase\",\"example\":\"Sample Text\"},{\"value\":\"capitalize\",\"label\":\"String capitalize\",\"example\":\"Sample\"},{\"value\":\"uppercase|truncate|50|...\",\"label\":\"String uppercase + truncate 50\",\"example\":\"SAMPLE...\"},{\"value\":\"true-false\",\"label\":\"Boolean true/false\",\"example\":\"True / False\"},{\"value\":\"yes-no\",\"label\":\"Boolean yes/no\",\"example\":\"Yes / No\"},{\"value\":\"active-inactive\",\"label\":\"Boolean active/inactive\",\"example\":\"Active / Inactive\"},{\"value\":\"on-off\",\"label\":\"Boolean on/off\",\"example\":\"On / Off\"},{\"value\":\"enabled-disabled\",\"label\":\"Boolean enabled/disabled\",\"example\":\"Enabled / Disabled\"},{\"value\":\"custom|Sim|Nao\",\"label\":\"Boolean custom (Sim/Nao)\",\"example\":\"Sim / Nao\"}]},\"columns[].computed.outputType\":{\"mode\":\"enum\",\"options\":[{\"value\":\"string\",\"label\":\"String\"},{\"value\":\"number\",\"label\":\"Number\"},{\"value\":\"currency\",\"label\":\"Currency\"},{\"value\":\"percentage\",\"label\":\"Percentage\"},{\"value\":\"date\",\"label\":\"Date\"},{\"value\":\"boolean\",\"label\":\"Boolean\"},{\"value\":\"custom\",\"label\":\"Custom\"}]},\"columns[].computed.format\":{\"mode\":\"suggested\",\"options\":[{\"value\":\"shortDate\",\"label\":\"Date short\",\"example\":\"01/12/2023\"},{\"value\":\"mediumDate\",\"label\":\"Date medium\",\"example\":\"01 Dec 2023\"},{\"value\":\"longDate\",\"label\":\"Date long\",\"example\":\"01 December 2023\"},{\"value\":\"fullDate\",\"label\":\"Date full\",\"example\":\"Friday, 01 December 2023\"},{\"value\":\"MMM/yyyy\",\"label\":\"Month/Year\",\"example\":\"Dec/2023\"},{\"value\":\"shortTime\",\"label\":\"Time short\",\"example\":\"14:30\"},{\"value\":\"short\",\"label\":\"Date+Time short\",\"example\":\"01/12/2023 14:30\"},{\"value\":\"yyyy-MM-dd\",\"label\":\"ISO 8601\",\"example\":\"2023-12-01\"},{\"value\":\"dd/MM/yyyy\",\"label\":\"Date dd/MM/yyyy\",\"example\":\"01/12/2023\"},{\"value\":\"yyyy-MM-dd HH:mm\",\"label\":\"DateTime yyyy-MM-dd HH:mm\",\"example\":\"2023-12-01 14:30\"},{\"value\":\"1.0-0\",\"label\":\"Number integer\",\"example\":\"1,234\"},{\"value\":\"1.1-1\",\"label\":\"Number 1 decimal\",\"example\":\"1,234.5\"},{\"value\":\"1.2-2\",\"label\":\"Number 2 decimals\",\"example\":\"1,234.56\"},{\"value\":\"1.0-3\",\"label\":\"Number up to 3 decimals\",\"example\":\"1,234.567\"},{\"value\":\"1.0-0|nosep\",\"label\":\"Number no grouping\",\"example\":\"1234\"},{\"value\":\"BRL|symbol|2\",\"label\":\"Currency BRL symbol\",\"example\":\"R$ 1.234,56\"},{\"value\":\"BRL|symbol|2|nosep\",\"label\":\"Currency BRL symbol (no grouping)\",\"example\":\"R$ 1234,56\"},{\"value\":\"USD|symbol|2\",\"label\":\"Currency USD symbol\",\"example\":\"US$ 1,234.56\"},{\"value\":\"EUR|symbol|2\",\"label\":\"Currency EUR symbol\",\"example\":\"EUR 1,234.56\"},{\"value\":\"BRL|code|2\",\"label\":\"Currency code\",\"example\":\"1,234.56 BRL\"},{\"value\":\"USD|code|0\",\"label\":\"Currency USD code (0 decimals)\",\"example\":\"1234 USD\"},{\"value\":\"EUR|symbol|2|nosep\",\"label\":\"Currency EUR symbol (no grouping)\",\"example\":\"EUR 1234,56\"},{\"value\":\"1.0-0\",\"label\":\"Percent 0 decimals\",\"example\":\"12%\"},{\"value\":\"1.1-1\",\"label\":\"Percent 1 decimal\",\"example\":\"12.3%\"},{\"value\":\"1.2-2\",\"label\":\"Percent 2 decimals\",\"example\":\"12.34%\"},{\"value\":\"1.0-0|x100\",\"label\":\"Percent 0 decimals (x100)\",\"example\":\"12%\"},{\"value\":\"1.1-1|x100\",\"label\":\"Percent 1 decimal (x100)\",\"example\":\"12.3%\"},{\"value\":\"1.2-2|x100\",\"label\":\"Percent 2 decimals (x100)\",\"example\":\"12.34%\"},{\"value\":\"none\",\"label\":\"String none\",\"example\":\"Sample\"},{\"value\":\"uppercase\",\"label\":\"String uppercase\",\"example\":\"SAMPLE\"},{\"value\":\"lowercase\",\"label\":\"String lowercase\",\"example\":\"sample\"},{\"value\":\"titlecase\",\"label\":\"String titlecase\",\"example\":\"Sample Text\"},{\"value\":\"capitalize\",\"label\":\"String capitalize\",\"example\":\"Sample\"},{\"value\":\"uppercase|truncate|50|...\",\"label\":\"String uppercase + truncate 50\",\"example\":\"SAMPLE...\"},{\"value\":\"true-false\",\"label\":\"Boolean true/false\",\"example\":\"True / False\"},{\"value\":\"yes-no\",\"label\":\"Boolean yes/no\",\"example\":\"Yes / No\"},{\"value\":\"active-inactive\",\"label\":\"Boolean active/inactive\",\"example\":\"Active / Inactive\"},{\"value\":\"on-off\",\"label\":\"Boolean on/off\",\"example\":\"On / Off\"},{\"value\":\"enabled-disabled\",\"label\":\"Boolean enabled/disabled\",\"example\":\"Enabled / Disabled\"},{\"value\":\"custom|Sim|Nao\",\"label\":\"Boolean custom (Sim/Nao)\",\"example\":\"Sim / Nao\"}]},\"behavior.filtering.advancedFilters.settings.mode\":{\"mode\":\"enum\",\"options\":[{\"value\":\"filter\",\"label\":\"Filter\"}]},\"behavior.expansion.state.mode\":{\"mode\":\"enum\",\"options\":[{\"value\":\"controlled\",\"label\":\"Controlled\"},{\"value\":\"uncontrolled\",\"label\":\"Uncontrolled\"}]},\"behavior.expansion.interaction.trigger\":{\"mode\":\"enum\",\"options\":[{\"value\":\"icon\",\"label\":\"Icon\"},{\"value\":\"row\",\"label\":\"Row\"},{\"value\":\"both\",\"label\":\"Both\"}]},\"behavior.expansion.interaction.keyboard.profile\":{\"mode\":\"enum\",\"options\":[{\"value\":\"disclosure\",\"label\":\"Disclosure\"},{\"value\":\"grid\",\"label\":\"Grid\"}]},\"behavior.expansion.limits.onOverflow\":{\"mode\":\"enum\",\"options\":[{\"value\":\"collapseOldest\",\"label\":\"Collapse Oldest\"},{\"value\":\"denyNew\",\"label\":\"Deny New\"},{\"value\":\"collapseAll\",\"label\":\"Collapse All\"}]}}}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/table-context-pack.ts",
          "contentHash": "9b02cc7b114e51e26a1998f74db5d2e9566a255f6a94e6a81b708bb9f6749c80",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 138,
          "chunkKind": "context_pack",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"componentContext.optionsByPath\",\"componentContext\":{\"optionsByPath\":{\"behavior.expansion.collapseOn.sortChange\":{\"mode\":\"enum\",\"options\":[{\"value\":\"true\",\"label\":\"Enabled\"},{\"value\":\"false\",\"label\":\"Disabled\"}]},\"behavior.expansion.collapseOn.pageChange\":{\"mode\":\"enum\",\"options\":[{\"value\":\"true\",\"label\":\"Enabled\"},{\"value\":\"false\",\"label\":\"Disabled\"}]},\"behavior.expansion.collapseOn.filterChange\":{\"mode\":\"enum\",\"options\":[{\"value\":\"true\",\"label\":\"Enabled\"},{\"value\":\"false\",\"label\":\"Disabled\"}]},\"behavior.expansion.collapseOn.dataRefresh\":{\"mode\":\"enum\",\"options\":[{\"value\":\"true\",\"label\":\"Enabled\"},{\"value\":\"false\",\"label\":\"Disabled\"}]},\"behavior.expansion.detail.source.mode\":{\"mode\":\"enum\",\"options\":[{\"value\":\"inline\",\"label\":\"Inline\"},{\"value\":\"resource\",\"label\":\"Resource\"},{\"value\":\"resourcePath\",\"label\":\"Resource Path\"}]},\"behavior.expansion.detail.source.resource.kind\":{\"mode\":\"enum\",\"options\":[{\"value\":\"ui-composition\",\"label\":\"UI Composition\"},{\"value\":\"form-schema\",\"label\":\"Form Schema\"},{\"value\":\"table-schema\",\"label\":\"Table Schema\"},{\"value\":\"dashboard-schema\",\"label\":\"Dashboard Schema\"}]},\"behavior.expansion.detail.source.resourcePath.method\":{\"mode\":\"enum\",\"options\":[{\"value\":\"GET\",\"label\":\"GET\"},{\"value\":\"POST\",\"label\":\"POST\"}]},\"behavior.expansion.detail.source.resourcePath.paramsMap\":{\"mode\":\"suggested\",\"options\":[{\"value\":\"{\\\"id\\\":\\\"$row.id\\\"}\",\"label\":\"Row ID\"},{\"value\":\"{\\\"id\\\":\\\"$row.id\\\",\\\"table\\\":\\\"$ctx.tableId\\\"}\",\"label\":\"Row + Table\"}]},\"behavior.expansion.detail.source.resourceAllowList[]\":{\"mode\":\"suggested\",\"options\":[{\"value\":\"api/orders/*/detail-schema\",\"label\":\"Orders detail schema\"},{\"value\":\"api/customers/*/detail-schema\",\"label\":\"Customers detail schema\"}]},\"behavior.expansion.detail.rendering.strategy\":{\"mode\":\"enum\",\"options\":[{\"value\":\"registry\",\"label\":\"Registry\"}]},\"behavior.expansion.detail.rendering.hostLayout\":{\"mode\":\"enum\",\"options\":[{\"value\":\"auto\",\"label\":\"Auto\"},{\"value\":\"stack\",\"label\":\"Stack\"},{\"value\":\"tabs\",\"label\":\"Tabs\"}]},\"behavior.expansion.detail.rendering.fallbackNodePolicy\":{\"mode\":\"enum\",\"options\":[{\"value\":\"failClosed\",\"label\":\"Fail Closed\"},{\"value\":\"renderPlaceholder\",\"label\":\"Render Placeholder\"}]},\"behavior.expansion.detail.height.mode\":{\"mode\":\"enum\",\"options\":[{\"value\":\"fixed\",\"label\":\"Fixed\"},{\"value\":\"dynamic\",\"label\":\"Dynamic\"}]},\"behavior.expansion.virtualization.policy\":{\"mode\":\"enum\",\"options\":[{\"value\":\"fixed-height-only\",\"label\":\"Fixed Height Only\"},{\"value\":\"allow-dynamic-under-flag\",\"label\":\"Allow Dynamic Under Flag\"}]},\"behavior.expansion.security.eventExposureDefault.rowId\":{\"mode\":\"enum\",\"options\":[{\"value\":\"redacted\",\"label\":\"Redacted\"},{\"value\":\"hashed\",\"label\":\"Hashed\"},{\"value\":\"raw\",\"label\":\"Raw\"}]},\"behavior.expansion.security.eventExposureDefault.expandedKeys\":{\"mode\":\"enum\",\"options\":[{\"value\":\"none\",\"label\":\"None\"},{\"value\":\"hashed\",\"label\":\"Hashed\"},{\"value\":\"raw\",\"label\":\"Raw\"}]},\"behavior.expansion.deepLink.encoding\":{\"mode\":\"enum\",\"options\":[{\"value\":\"csv\",\"label\":\"CSV\"}]},\"behavior.expansion.deepLink.parsing.duplicateParams\":{\"mode\":\"enum\",\"options\":[{\"value\":\"firstWins\",\"label\":\"First Wins\"},{\"value\":\"reject\",\"label\":\"Reject\"}]},\"behavior.expansion.deepLink.integrity.mode\":{\"mode\":\"enum\",\"options\":[{\"value\":\"opaqueToken\",\"label\":\"Opaque Token\"}]},\"behavior.expansion.deepLink.privacy.mode\":{\"mode\":\"enum\",\"options\":[{\"value\":\"denyByDefault\",\"label\":\"Deny By Default\"},{\"value\":\"allowByDefault\",\"label\":\"Allow By Default\"}]},\"columns[].renderer.type\":{\"mode\":\"enum\",\"options\":[{\"value\":\"icon\",\"label\":\"Icon\"},{\"value\":\"image\",\"label\":\"Image\"},{\"value\":\"badge\",\"label\":\"Badge\"},{\"value\":\"link\",\"label\":\"Link\"},{\"value\":\"button\",\"label\":\"Button\"},{\"value\":\"chip\",\"label\":\"Chip\"},{\"value\":\"progress\",\"label\":\"Progress\"},{\"value\":\"avatar\",\"label\":\"Avatar\"},{\"value\":\"toggle\",\"label\":\"Toggle\"},{\"value\":\"menu\",\"label\":\"Menu\"},{\"value\":\"rating\",\"label\":\"Rating\"},{\"value\":\"html\",\"label\":\"HTML\"},{\"value\":\"microVisualization\",\"label\":\"Micro visualization\"},{\"value\":\"compose\",\"label\":\"Compose\"}]},\"columns[].renderer.image.shape\":{\"mode\":\"enum\",\"options\":[{\"value\":\"square\",\"label\":\"Square\"},{\"value\":\"rounded\",\"label\":\"Rounded\"},{\"value\":\"circle\",\"label\":\"Circle\"}]},\"columns[].renderer.image.fit\":{\"mode\":\"enum\",\"options\":[{\"value\":\"cover\",\"label\":\"Cover\"},{\"value\":\"contain\",\"label\":\"Contain\"}]},\"columns[].renderer.link.target\":{\"mode\":\"enum\",\"options\":[{\"value\":\"_blank\",\"label\":\"New tab\"},{\"value\":\"_self\",\"label\":\"Same tab\"},{\"value\":\"_parent\",\"label\":\"Parent frame\"},{\"value\":\"_top\",\"label\":\"Top frame\"}]},\"columns[].renderer.button.variant\":{\"mode\":\"enum\",\"options\":[{\"value\":\"filled\",\"label\":\"Filled\"},{\"value\":\"outlined\",\"label\":\"Outlined\"},{\"value\":\"text\",\"label\":\"Text\"}]},\"columns[].renderer.button.color\":{\"mode\":\"enum\",\"options\":[{\"value\":\"primary\",\"label\":\"Primary\"},{\"value\":\"accent\",\"label\":\"Accent\"},{\"value\":\"warn\",\"label\":\"Warn\"}]},\"columns[].renderer.button.size\":{\"mode\":\"enum\",\"options\":[{\"value\":\"sm\",\"label\":\"Small\"},{\"value\":\"md\",\"label\":\"Medium\"},{\"value\":\"lg\",\"label\":\"Large\"}]},\"columns[].renderer.badge.variant\":{\"mode\":\"enum\",\"options\":[{\"value\":\"filled\",\"label\":\"Filled\"},{\"value\":\"outlined\",\"label\":\"Outlined\"},{\"value\":\"soft\",\"label\":\"Soft\"},{\"value\":\"plain\",\"label\":\"Plain\"}]},\"columns[].renderer.chip.variant\":{\"mode\":\"enum\",\"options\":[{\"value\":\"filled\",\"label\":\"Filled\"},{\"value\":\"outlined\",\"label\":\"Outlined\"},{\"value\":\"soft\",\"label\":\"Soft\"},{\"value\":\"plain\",\"label\":\"Plain\"}]},\"columns[].renderer.rating.size\":{\"mode\":\"enum\",\"options\":[{\"value\":\"small\",\"label\":\"Small\"},{\"value\":\"medium\",\"label\":\"Medium\"},{\"value\":\"large\",\"label\":\"Large\"}]},\"columns[].renderer.compose.items[].type\":{\"mode\":\"enum\",\"options\":[{\"value\":\"value\",\"label\":\"Value\"},{\"value\":\"icon\",\"label\":\"Icon\"},{\"value\":\"image\",\"label\":\"Image\"},{\"value\":\"badge\",\"label\":\"Badge\"},{\"value\":\"link\",\"label\":\"Link\"},{\"value\":\"button\",\"label\":\"Button\"},{\"value\":\"chip\",\"label\":\"Chip\"},{\"value\":\"progress\",\"label\":\"Progress\"},{\"value\":\"avatar\",\"label\":\"Avatar\"},{\"value\":\"toggle\",\"label\":\"Toggle\"},{\"value\":\"menu\",\"label\":\"Menu\"},{\"value\":\"rating\",\"label\":\"Rating\"},{\"value\":\"html\",\"label\":\"HTML\"},{\"value\":\"microVisualization\",\"label\":\"Micro visualization\"}]},\"columns[].renderer.microVisualization.visualization.valueExpr\":{},\"columns[].renderer.microVisualization.visualization.valueSuffixExpr\":{},\"columns[].renderer.microVisualization.visualization.totalExpr\":{},\"columns[].renderer.microVisualization.visualization.targetExpr\":{},\"columns[].renderer.microVisualization.visualization.baselineExpr\":{},\"columns[].renderer.microVisualization.visualization.segmentsExpr\":{},\"columns[].renderer.microVisualization.visualization.pointsExpr\":{},\"columns[].renderer.microVisualization.visualization.thresholdsExpr\":{},\"columns[].renderer.microVisualization.visualization.itemsExpr\":{},\"columns[].renderer.microVisualization.visualization.toneExpr\":{},\"columns[].renderer.microVisualization.visualization.ariaLabelExpr\":{},\"columns[].renderer.microVisualization.visualization.fallbackTextExpr\":{},\"columns[].conditionalRenderers[].renderer.type\":{\"mode\":\"enum\",\"options\":[{\"value\":\"icon\",\"label\":\"Icon\"},{\"value\":\"image\",\"label\":\"Image\"},{\"value\":\"badge\",\"label\":\"Badge\"},{\"value\":\"link\",\"label\":\"Link\"},{\"value\":\"button\",\"label\":\"Button\"},{\"value\":\"chip\",\"label\":\"Chip\"},{\"value\":\"progress\",\"label\":\"Progress\"},{\"value\":\"avatar\",\"label\":\"Avatar\"},{\"value\":\"toggle\",\"label\":\"Toggle\"},{\"value\":\"menu\",\"label\":\"Menu\"},{\"value\":\"rating\",\"label\":\"Rating\"},{\"value\":\"html\",\"label\":\"HTML\"},{\"value\":\"microVisualization\",\"label\":\"Micro visualization\"},{\"value\":\"compose\",\"label\":\"Compose\"}]},\"columns[].conditionalRenderers[].renderer.image.shape\":{\"mode\":\"enum\",\"options\":[{\"value\":\"square\",\"label\":\"Square\"},{\"value\":\"rounded\",\"label\":\"Rounded\"},{\"value\":\"circle\",\"label\":\"Circle\"}]}}}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/table-context-pack.ts",
          "contentHash": "f10e576568919a4a0ad0254690780bbcdcb6256aafff7e48a53f49404afff872",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 139,
          "chunkKind": "context_pack",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"componentContext.optionsByPath\",\"componentContext\":{\"optionsByPath\":{\"columns[].conditionalRenderers[].renderer.image.fit\":{\"mode\":\"enum\",\"options\":[{\"value\":\"cover\",\"label\":\"Cover\"},{\"value\":\"contain\",\"label\":\"Contain\"}]},\"columns[].conditionalRenderers[].renderer.link.target\":{\"mode\":\"enum\",\"options\":[{\"value\":\"_blank\",\"label\":\"New tab\"},{\"value\":\"_self\",\"label\":\"Same tab\"},{\"value\":\"_parent\",\"label\":\"Parent frame\"},{\"value\":\"_top\",\"label\":\"Top frame\"}]},\"columns[].conditionalRenderers[].renderer.button.variant\":{\"mode\":\"enum\",\"options\":[{\"value\":\"filled\",\"label\":\"Filled\"},{\"value\":\"outlined\",\"label\":\"Outlined\"},{\"value\":\"text\",\"label\":\"Text\"}]},\"columns[].conditionalRenderers[].renderer.button.color\":{\"mode\":\"enum\",\"options\":[{\"value\":\"primary\",\"label\":\"Primary\"},{\"value\":\"accent\",\"label\":\"Accent\"},{\"value\":\"warn\",\"label\":\"Warn\"}]},\"columns[].conditionalRenderers[].renderer.button.size\":{\"mode\":\"enum\",\"options\":[{\"value\":\"sm\",\"label\":\"Small\"},{\"value\":\"md\",\"label\":\"Medium\"},{\"value\":\"lg\",\"label\":\"Large\"}]},\"columns[].conditionalRenderers[].renderer.badge.variant\":{\"mode\":\"enum\",\"options\":[{\"value\":\"filled\",\"label\":\"Filled\"},{\"value\":\"outlined\",\"label\":\"Outlined\"},{\"value\":\"soft\",\"label\":\"Soft\"}]},\"columns[].conditionalRenderers[].renderer.chip.variant\":{\"mode\":\"enum\",\"options\":[{\"value\":\"filled\",\"label\":\"Filled\"},{\"value\":\"outlined\",\"label\":\"Outlined\"},{\"value\":\"soft\",\"label\":\"Soft\"}]},\"columns[].conditionalRenderers[].renderer.rating.size\":{\"mode\":\"enum\",\"options\":[{\"value\":\"small\",\"label\":\"Small\"},{\"value\":\"medium\",\"label\":\"Medium\"},{\"value\":\"large\",\"label\":\"Large\"}]},\"columns[].conditionalRenderers[].renderer.compose.items[].type\":{\"mode\":\"enum\",\"options\":[{\"value\":\"value\",\"label\":\"Value\"},{\"value\":\"icon\",\"label\":\"Icon\"},{\"value\":\"image\",\"label\":\"Image\"},{\"value\":\"badge\",\"label\":\"Badge\"},{\"value\":\"link\",\"label\":\"Link\"},{\"value\":\"button\",\"label\":\"Button\"},{\"value\":\"chip\",\"label\":\"Chip\"},{\"value\":\"progress\",\"label\":\"Progress\"},{\"value\":\"avatar\",\"label\":\"Avatar\"},{\"value\":\"toggle\",\"label\":\"Toggle\"},{\"value\":\"menu\",\"label\":\"Menu\"},{\"value\":\"rating\",\"label\":\"Rating\"},{\"value\":\"html\",\"label\":\"HTML\"},{\"value\":\"microVisualization\",\"label\":\"Micro visualization\"}]},\"actions.row.actions[].color\":{\"mode\":\"enum\",\"options\":[{\"value\":\"primary\",\"label\":\"Primary\"},{\"value\":\"accent\",\"label\":\"Accent\"},{\"value\":\"warn\",\"label\":\"Warn\"}]},\"actions.row.actions[].icon\":{\"mode\":\"suggested\",\"options\":[{\"value\":\"edit\",\"label\":\"Edit\"},{\"value\":\"delete\",\"label\":\"Delete\"},{\"value\":\"visibility\",\"label\":\"View\"},{\"value\":\"more_vert\",\"label\":\"More\"},{\"value\":\"check\",\"label\":\"Approve\"},{\"value\":\"close\",\"label\":\"Reject\"},{\"value\":\"download\",\"label\":\"Download\"}]},\"actions.row.actions[].globalAction.[actionId]\":{\"mode\":\"suggested\",\"options\":[{\"value\":\"toast.success\",\"label\":\"Toast success\"},{\"value\":\"toast.error\",\"label\":\"Toast error\"},{\"value\":\"dialog.alert\",\"label\":\"Dialog alert\"},{\"value\":\"dialog.open\",\"label\":\"Dialog open\"},{\"value\":\"navigation.openExternal\",\"label\":\"Open external URL\"},{\"value\":\"navigation.openRoute\",\"label\":\"Open internal route\"},{\"value\":\"api.post\",\"label\":\"API POST\"},{\"value\":\"api.patch\",\"label\":\"API PATCH\"}]},\"rowConditionalStyles[].condition\":{\"mode\":\"suggested\",\"options\":[{\"value\":\"status == \\\"active\\\"\",\"label\":\"Status Active\"},{\"value\":\"amount < 0\",\"label\":\"Negative Amount\"},{\"value\":\"priority == \\\"high\\\"\",\"label\":\"High Priority\"}]}}}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/table-context-pack.ts",
          "contentHash": "bcb420a42fee12175c00f1e231e4e93a2d7df5f7b3bb2c01109850b24d6c1fc0",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 140,
          "chunkKind": "context_pack",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"componentContext.actionCatalog\",\"componentContext\":{\"actionCatalog\":[{\"id\":\"ADD_COLUMN\",\"intentExamples\":[\"add column\",\"nova coluna\",\"criar coluna\",\"insert column\"],\"scope\":\"GLOBAL\",\"valueType\":\"OBJECT\",\"operation\":\"create\",\"requiresExistingTarget\":false,\"params\":[{\"name\":\"field\",\"type\":\"STRING\",\"description\":\"Nome técnico da nova coluna\"},{\"name\":\"header\",\"type\":\"STRING\",\"description\":\"Título da coluna\"}],\"patchTemplate\":{\"columns\":[{\"field\":\"{{params.field}}\",\"header\":\"{{params.header}}\",\"visible\":true}]}},{\"id\":\"ADD_COLUMN_COMPUTED\",\"intentExamples\":[\"calculated column\",\"coluna calculada\",\"compute\",\"formula\",\"expression\"],\"scope\":\"GLOBAL\",\"valueType\":\"OBJECT\",\"operation\":\"create\",\"requiresExistingTarget\":false,\"params\":[{\"name\":\"field\",\"type\":\"STRING\",\"description\":\"Nome técnico da nova coluna (ex: total)\"},{\"name\":\"header\",\"type\":\"STRING\",\"description\":\"Título da coluna\"},{\"name\":\"expression\",\"type\":\"STRING\",\"description\":\"AST Json Logic canônico serializado em JSON para derived values (ex: { \\\"*\\\": [{ \\\"var\\\": \\\"quantity\\\" }, { \\\"var\\\": \\\"price\\\" }] })\"},{\"name\":\"type\",\"type\":\"ENUM\",\"options\":[\"number\",\"currency\",\"percentage\",\"string\",\"boolean\"],\"description\":\"Tipo de dado resultante\"}],\"relatedConcepts\":[\"computed-logic\"],\"patchTemplate\":{\"columns\":[{\"field\":\"{{params.field}}\",\"header\":\"{{params.header}}\",\"visible\":true,\"computed\":{\"expression\":\"{{params.expression}}\",\"outputType\":\"{{params.type}}\"}}]}},{\"id\":\"HIDE_COLUMN\",\"intentExamples\":[\"hide column\",\"ocultar coluna\",\"esconder coluna\",\"invisible\"],\"scope\":\"COLUMN\",\"valueType\":\"BOOLEAN\",\"operation\":\"update\",\"requiresExistingTarget\":true,\"defaultValue\":false,\"patchTemplate\":{\"columns\":[{\"field\":\"{{target}}\",\"visible\":false}]}},{\"id\":\"SHOW_COLUMN\",\"intentExamples\":[\"show column\",\"mostrar coluna\",\"exibir coluna\",\"visible\"],\"scope\":\"COLUMN\",\"valueType\":\"BOOLEAN\",\"operation\":\"update\",\"requiresExistingTarget\":true,\"defaultValue\":true,\"patchTemplate\":{\"columns\":[{\"field\":\"{{target}}\",\"visible\":true}]}},{\"id\":\"RENAME_COLUMN\",\"intentExamples\":[\"rename column\",\"renomear coluna\",\"titulo\",\"cabecalho\"],\"scope\":\"COLUMN\",\"valueType\":\"STRING\",\"operation\":\"update\",\"requiresExistingTarget\":true,\"patchTemplate\":{\"columns\":[{\"field\":\"{{target}}\",\"header\":\"{{value}}\"}]}},{\"id\":\"column.format.set\",\"intentExamples\":[\"format\",\"formatar\",\"date format\",\"number format\"],\"scope\":\"COLUMN\",\"valueType\":\"ENUM\",\"operation\":\"update\",\"requiresExistingTarget\":true,\"patchTemplate\":{\"columns\":[{\"field\":\"{{target}}\",\"format\":\"{{value}}\"}]}},{\"id\":\"column.type.set\",\"intentExamples\":[\"type\",\"tipo\",\"data type\"],\"scope\":\"COLUMN\",\"valueType\":\"ENUM\",\"operation\":\"update\",\"requiresExistingTarget\":true,\"patchTemplate\":{\"columns\":[{\"field\":\"{{target}}\",\"type\":\"{{value}}\"}]}},{\"id\":\"DISABLE_SORT\",\"intentExamples\":[\"disable sort\",\"desativar ordenacao\",\"sem ordenacao\"],\"scope\":\"COLUMN\",\"valueType\":\"BOOLEAN\",\"operation\":\"update\",\"requiresExistingTarget\":true,\"defaultValue\":false,\"patchTemplate\":{\"columns\":[{\"field\":\"{{target}}\",\"sortable\":false}]}},{\"id\":\"ENABLE_SORT\",\"intentExamples\":[\"enable sort\",\"ativar ordenacao\"],\"scope\":\"COLUMN\",\"valueType\":\"BOOLEAN\",\"operation\":\"update\",\"requiresExistingTarget\":true,\"defaultValue\":true,\"patchTemplate\":{\"columns\":[{\"field\":\"{{target}}\",\"sortable\":true}]}},{\"id\":\"column.width.set\",\"intentExamples\":[\"width\",\"largura\",\"col width\"],\"scope\":\"COLUMN\",\"valueType\":\"STRING\",\"operation\":\"update\",\"requiresExistingTarget\":true,\"patchTemplate\":{\"columns\":[{\"field\":\"{{target}}\",\"width\":\"{{value}}\"}]}},{\"id\":\"column.order.set\",\"intentExamples\":[\"ordem visual\",\"mover coluna\",\"colocar depois de\",\"colocar antes de\"],\"scope\":\"COLUMN\",\"valueType\":\"NUMBER\",\"operation\":\"update\",\"requiresExistingTarget\":true,\"patchTemplate\":{\"columns\":[{\"field\":\"{{target}}\",\"order\":\"{{value}}\"}]}},{\"id\":\"column.align.set\",\"intentExamples\":[\"align\",\"alinhamento\",\"left\",\"center\",\"right\"],\"scope\":\"COLUMN\",\"valueType\":\"ENUM\",\"operation\":\"update\",\"requiresExistingTarget\":true,\"patchTemplate\":{\"columns\":[{\"field\":\"{{target}}\",\"align\":\"{{value}}\"}]}},{\"id\":\"column.sticky.set\",\"intentExamples\":[\"sticky\",\"fixar coluna\",\"pin column\"],\"scope\":\"COLUMN\",\"valueType\":\"ENUM\",\"operation\":\"update\",\"requiresExistingTarget\":true,\"patchTemplate\":{\"columns\":[{\"field\":\"{{target}}\",\"sticky\":\"{{value}}\"}]}},{\"id\":\"column.renderer.type.set\",\"intentExamples\":[\"renderer\",\"render\",\"cell type\"],\"scope\":\"COLUMN\",\"valueType\":\"ENUM\",\"operation\":\"update\",\"requiresExistingTarget\":true,\"patchTemplate\":{\"columns\":[{\"field\":\"{{target}}\",\"renderer\":{\"type\":\"{{value}}\"}}]}},{\"id\":\"column.renderer.image.shape.set\",\"intentExamples\":[\"image shape\",\"avatar shape\",\"imagem recorte\"],\"scope\":\"COLUMN\",\"valueType\":\"ENUM\",\"operation\":\"update\",\"requiresExistingTarget\":true,\"patchTemplate\":{\"columns\":[{\"field\":\"{{target}}\",\"renderer\":{\"type\":\"image\",\"image\":{\"shape\":\"{{value}}\"}}}]}},{\"id\":\"column.renderer.link.target.set\",\"intentExamples\":[\"link target\",\"abrir em nova aba\",\"target blank\"],\"scope\":\"COLUMN\",\"valueType\":\"ENUM\",\"operation\":\"update\",\"requiresExistingTarget\":true,\"patchTemplate\":{\"columns\":[{\"field\":\"{{target}}\",\"renderer\":{\"type\":\"link\",\"link\":{\"target\":\"{{value}}\"}}}]}},{\"id\":\"column.renderer.button.style.set\",\"intentExamples\":[\"button style\",\"botao estilo\",\"variant\",\"color\"],\"scope\":\"COLUMN\",\"valueType\":\"OBJECT\",\"operation\":\"update\",\"requiresExistingTarget\":true,\"patchTemplate\":{\"columns\":[{\"field\":\"{{target}}\",\"renderer\":{\"type\":\"button\",\"button\":{\"variant\":\"{{params.variant}}\",\"color\":\"{{params.color}}\"}}}]}},{\"id\":\"SET_RENDERER_BADGE\",\"intentExamples\":[\"render badge\",\"exibir como badge\",\"status badge\",\"etiqueta\",\"tag\"],\"scope\":\"COLUMN\",\"valueType\":\"OBJECT\",\"operation\":\"update\",\"requiresExistingTarget\":true,\"params\":[{\"name\":\"variant\",\"type\":\"ENUM\",\"options\":[\"filled\",\"outlined\",\"soft\",\"plain\"],\"description\":\"Estilo visual do badge\"},{\"name\":\"color\",\"type\":\"ENUM\",\"options\":[\"primary\",\"accent\",\"warn\",\"success\",\"info\"],\"description\":\"Cor semântica do badge\"}],\"patchTemplate\":{\"columns\":[{\"field\":\"{{target}}\",\"renderer\":{\"type\":\"badge\",\"badge\":{\"text\":\"{{target}}\",\"textField\":\"{{target}}\",\"color\":\"{{params.color}}\",\"variant\":\"{{params.variant}}\"}}}]}},{\"id\":\"SET_RENDERER_CHIP\",\"intentExamples\":[\"render chip\",\"exibir como chip\",\"chip\",\"pilula\"],\"scope\":\"COLUMN\",\"valueType\":\"OBJECT\",\"operation\":\"update\",\"requiresExistingTarget\":true,\"patchTemplate\":{\"columns\":[{\"field\":\"{{target}}\",\"renderer\":{\"type\":\"chip\",\"chip\":{\"textField\":\"{{target}}\",\"color\":\"{{params.color}}\",\"variant\":\"{{params.variant}}\"}}}]}},{\"id\":\"SET_RENDERER_ICON\",\"intentExamples\":[\"render icon\",\"exibir como icone\",\"icone\",\"icon\"],\"scope\":\"COLUMN\",\"valueType\":\"OBJECT\",\"operation\":\"update\",\"requiresExistingTarget\":true,\"patchTemplate\":{\"columns\":[{\"field\":\"{{target}}\",\"renderer\":{\"type\":\"icon\",\"icon\":{\"name\":\"{{value}}\",\"color\":\"{{params.color}}\",\"size\":18}}}]}},{\"id\":\"SET_RENDERER_COMPOSE_TITLE_SUBTITLE\",\"intentExamples\":[\"compose title subtitle\",\"titulo e subtitulo\",\"two lines\",\"duas linhas\"],\"scope\":\"COLUMN\",\"valueType\":\"OBJECT\",\"operation\":\"update\",\"requiresExistingTarget\":true,\"patchTemplate\":{\"columns\":[{\"field\":\"{{target}}\",\"renderer\":{\"type\":\"compose\",\"compose\":{\"layout\":{\"direction\":\"column\",\"gap\":4},\"items\":[{\"type\":\"value\",\"emphasis\":\"strong\"},{\"type\":\"value\",\"textField\":\"{{params.subtitleField}}\",\"emphasis\":\"subtle\"}]}}}]}},{\"id\":\"SET_RENDERER_COMPOSE_AVATAR_TEXT\",\"intentExamples\":[\"compose avatar text\",\"avatar e texto\",\"user card\"],\"scope\":\"COLUMN\",\"valueType\":\"OBJECT\",\"operation\":\"update\",\"requiresExistingTarget\":true,\"patchTemplate\":{\"columns\":[{\"field\":\"{{target}}\",\"renderer\":{\"type\":\"compose\",\"compose\":{\"layout\":{\"direction\":\"row\",\"gap\":12,\"align\":\"center\",\"ellipsis\":true},\"items\":[{\"type\":\"avatar\",\"avatar\":{\"srcField\":\"{{params.imageField}}\",\"initialsField\":\"{{target}}\",\"shape\":\"circle\"}},{\"type\":\"value\",\"emphasis\":\"strong\"}]}}}]}}]}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/table-context-pack.ts",
          "contentHash": "ef6b64d8e07793f1b349cbd45e3a4522ccb755b3aa606e7d1b45f703b228a81a",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 141,
          "chunkKind": "context_pack",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"componentContext.actionCatalog\",\"componentContext\":{\"actionCatalog\":[{\"id\":\"ENABLE_PAGINATION\",\"intentExamples\":[\"enable pagination\",\"paginar\",\"paginação\",\"pagination\"],\"scope\":\"GLOBAL\",\"valueType\":\"BOOLEAN\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"defaultValue\":true,\"patchTemplate\":{\"behavior\":{\"pagination\":{\"enabled\":true,\"pageSize\":\"{{params.pageSize}}\"}}}},{\"id\":\"DISABLE_PAGINATION\",\"intentExamples\":[\"disable pagination\",\"remover paginacao\",\"lista infinita\",\"no pagination\"],\"scope\":\"GLOBAL\",\"valueType\":\"BOOLEAN\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"defaultValue\":false,\"patchTemplate\":{\"behavior\":{\"pagination\":{\"enabled\":false}}}},{\"id\":\"ENABLE_FILTERING\",\"intentExamples\":[\"enable filtering\",\"ligar filtros\",\"filtrar\",\"searchable\"],\"scope\":\"GLOBAL\",\"valueType\":\"BOOLEAN\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"defaultValue\":true,\"patchTemplate\":{\"behavior\":{\"filtering\":{\"enabled\":true}}}},{\"id\":\"DISABLE_FILTERING\",\"intentExamples\":[\"disable filtering\",\"desligar filtros\",\"no filter\"],\"scope\":\"GLOBAL\",\"valueType\":\"BOOLEAN\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"defaultValue\":false,\"patchTemplate\":{\"behavior\":{\"filtering\":{\"enabled\":false}}}},{\"id\":\"ENABLE_ADVANCED_FILTERS\",\"intentExamples\":[\"advanced filters\",\"filtros avancados\",\"filtro complexo\"],\"scope\":\"GLOBAL\",\"valueType\":\"BOOLEAN\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"defaultValue\":true,\"patchTemplate\":{\"behavior\":{\"filtering\":{\"advancedFilters\":{\"enabled\":true}}}}},{\"id\":\"SET_FILTER_MODE\",\"intentExamples\":[\"filter mode\",\"modo de filtro\",\"modo unico do filtro\",\"painel de filtro\"],\"scope\":\"GLOBAL\",\"valueType\":\"ENUM\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"patchTemplate\":{\"behavior\":{\"filtering\":{\"advancedFilters\":{\"settings\":{\"mode\":\"{{value}}\"}}}}}},{\"id\":\"SET_ALWAYS_VISIBLE_FILTERS\",\"intentExamples\":[\"always visible filter\",\"filtro fixo\",\"fixar filtro\",\"pin filter\"],\"scope\":\"GLOBAL\",\"valueType\":\"STRING\",\"operation\":\"update\",\"requiresExistingTarget\":true,\"patchTemplate\":{\"behavior\":{\"filtering\":{\"advancedFilters\":{\"settings\":{\"alwaysVisibleFields\":[\"{{target}}\"]}}}}}},{\"id\":\"ENABLE_FILTER_SAVING\",\"intentExamples\":[\"save filters\",\"salvar filtros\",\"filter tags\"],\"scope\":\"GLOBAL\",\"valueType\":\"BOOLEAN\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"defaultValue\":true,\"patchTemplate\":{\"behavior\":{\"filtering\":{\"advancedFilters\":{\"settings\":{\"allowSaveTags\":true}}}}}},{\"id\":\"ENABLE_SORTING\",\"intentExamples\":[\"enable sorting\",\"ligar ordenacao\",\"ordenar\"],\"scope\":\"GLOBAL\",\"valueType\":\"BOOLEAN\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"defaultValue\":true,\"patchTemplate\":{\"behavior\":{\"sorting\":{\"enabled\":true}}}},{\"id\":\"DISABLE_SORTING\",\"intentExamples\":[\"disable sorting\",\"desligar ordenacao\",\"no sort\"],\"scope\":\"GLOBAL\",\"valueType\":\"BOOLEAN\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"defaultValue\":false,\"patchTemplate\":{\"behavior\":{\"sorting\":{\"enabled\":false}}}},{\"id\":\"ENABLE_SELECTION\",\"intentExamples\":[\"enable selection\",\"ativar selecao\",\"selecionavel\",\"selectable\"],\"scope\":\"GLOBAL\",\"valueType\":\"BOOLEAN\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"defaultValue\":true,\"patchTemplate\":{\"behavior\":{\"selection\":{\"enabled\":true}}}},{\"id\":\"DISABLE_SELECTION\",\"intentExamples\":[\"disable selection\",\"remover selecao\",\"not selectable\"],\"scope\":\"GLOBAL\",\"valueType\":\"BOOLEAN\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"defaultValue\":false,\"patchTemplate\":{\"behavior\":{\"selection\":{\"enabled\":false}}}},{\"id\":\"SET_SELECTION_SINGLE\",\"intentExamples\":[\"single selection\",\"selecao unica\",\"selecionar um\"],\"scope\":\"GLOBAL\",\"valueType\":\"ENUM\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"defaultValue\":\"single\",\"patchTemplate\":{\"behavior\":{\"selection\":{\"type\":\"single\"}}}},{\"id\":\"SET_SELECTION_MULTIPLE\",\"intentExamples\":[\"multiple selection\",\"selecao multipla\",\"selecionar varios\"],\"scope\":\"GLOBAL\",\"valueType\":\"ENUM\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"defaultValue\":\"multiple\",\"patchTemplate\":{\"behavior\":{\"selection\":{\"type\":\"multiple\"}}}},{\"id\":\"ENABLE_EXPORT\",\"intentExamples\":[\"enable export\",\"ativar exportacao\",\"botão exportar\",\"excel\",\"pdf\"],\"scope\":\"GLOBAL\",\"valueType\":\"BOOLEAN\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"defaultValue\":true,\"patchTemplate\":{\"export\":{\"enabled\":true},\"toolbar\":{\"visible\":true}}},{\"id\":\"DISABLE_EXPORT\",\"intentExamples\":[\"disable export\",\"remover exportacao\",\"esconder exportar\"],\"scope\":\"GLOBAL\",\"valueType\":\"BOOLEAN\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"defaultValue\":false,\"patchTemplate\":{\"export\":{\"enabled\":false}}},{\"id\":\"SET_DENSITY\",\"intentExamples\":[\"set density\",\"mudar densidade\",\"compacto\",\"confortavel\",\"espacoso\"],\"scope\":\"GLOBAL\",\"valueType\":\"ENUM\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"patchTemplate\":{\"appearance\":{\"density\":\"{{value}}\"}}},{\"id\":\"SHOW_BORDERS\",\"intentExamples\":[\"show borders\",\"mostrar bordas\",\"com bordas\",\"grid lines\"],\"scope\":\"GLOBAL\",\"valueType\":\"BOOLEAN\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"defaultValue\":true,\"patchTemplate\":{\"appearance\":{\"borders\":{\"showRowBorders\":true,\"showColumnBorders\":true}}}},{\"id\":\"HIDE_BORDERS\",\"intentExamples\":[\"hide borders\",\"ocultar bordas\",\"sem bordas\",\"clean look\"],\"scope\":\"GLOBAL\",\"valueType\":\"BOOLEAN\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"defaultValue\":false,\"patchTemplate\":{\"appearance\":{\"borders\":{\"showRowBorders\":false,\"showColumnBorders\":false,\"showOuterBorder\":false}}}},{\"id\":\"ENABLE_STRIPED_ROWS\",\"intentExamples\":[\"striped rows\",\"zebrado\",\"linhas alternadas\",\"zebra\"],\"scope\":\"GLOBAL\",\"valueType\":\"BOOLEAN\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"defaultValue\":true,\"patchTemplate\":{\"appearance\":{\"colors\":{\"alternateRowBackground\":\"#f7f9fc\"}}}},{\"id\":\"DISABLE_STRIPED_ROWS\",\"intentExamples\":[\"disable striped\",\"remover zebrado\",\"fundo solido\"],\"scope\":\"GLOBAL\",\"valueType\":\"BOOLEAN\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"defaultValue\":false,\"patchTemplate\":{\"appearance\":{\"colors\":{}}}},{\"id\":\"SHOW_TOOLBAR\",\"intentExamples\":[\"show toolbar\",\"mostrar toolbar\",\"barra de ferramentas\",\"titulo da tabela\"],\"scope\":\"GLOBAL\",\"valueType\":\"BOOLEAN\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"defaultValue\":true,\"patchTemplate\":{\"toolbar\":{\"visible\":true}}},{\"id\":\"HIDE_TOOLBAR\",\"intentExamples\":[\"hide toolbar\",\"esconder toolbar\",\"remover titulo\"],\"scope\":\"GLOBAL\",\"valueType\":\"BOOLEAN\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"defaultValue\":false,\"patchTemplate\":{\"toolbar\":{\"visible\":false}}},{\"id\":\"SET_TOOLBAR_POSITION\",\"intentExamples\":[\"toolbar position\",\"posicao da toolbar\",\"toolbar no topo\",\"toolbar embaixo\",\"toolbar em cima\",\"toolbar ambos\"],\"scope\":\"GLOBAL\",\"valueType\":\"ENUM\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"patchTemplate\":{\"toolbar\":{\"position\":\"{{value}}\"}}},{\"id\":\"SET_TOOLBAR_ACTIONS_POSITION\",\"intentExamples\":[\"acoes da toolbar\",\"barra de acoes\",\"acoes no topo\",\"acoes embaixo\",\"acoes em cima\",\"acoes em ambos\"],\"scope\":\"GLOBAL\",\"valueType\":\"ENUM\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"patchTemplate\":{\"toolbar\":{\"actionsPosition\":\"{{value}}\"}}},{\"id\":\"SET_TOOLBAR_ACTIONS_BG\",\"intentExamples\":[\"cor barra de acoes\",\"fundo da barra de acoes\",\"background acoes\",\"acoes com cor\"],\"scope\":\"GLOBAL\",\"valueType\":\"STRING\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"patchTemplate\":{\"toolbar\":{\"actionsBackgroundColor\":\"{{value}}\"}}},{\"id\":\"ENABLE_VIRTUALIZATION\",\"intentExamples\":[\"enable virtualization\",\"virtualizar\",\"scroll infinito\",\"performance\",\"large dataset\"],\"scope\":\"GLOBAL\",\"valueType\":\"BOOLEAN\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"defaultValue\":true,\"patchTemplate\":{\"behavior\":{\"virtualization\":{\"enabled\":true,\"itemHeight\":48}},\"performance\":{\"virtualization\":{\"enabled\":true,\"itemHeight\":48}}}}]}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/table-context-pack.ts",
          "contentHash": "040558e780f90dcd0b0488f1066778974ff5022bc20f0d66d7674c9d2196be5a",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 142,
          "chunkKind": "context_pack",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"componentContext.actionCatalog\",\"componentContext\":{\"actionCatalog\":[{\"id\":\"DISABLE_VIRTUALIZATION\",\"intentExamples\":[\"disable virtualization\",\"desativar virtualizacao\"],\"scope\":\"GLOBAL\",\"valueType\":\"BOOLEAN\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"defaultValue\":false,\"patchTemplate\":{\"behavior\":{\"virtualization\":{\"enabled\":false}},\"performance\":{\"virtualization\":{\"enabled\":false}}}},{\"id\":\"ENABLE_ROW_EXPANSION\",\"intentExamples\":[\"expand row\",\"expandir linha\",\"detalhe expansivel\",\"row details\",\"master detail\"],\"scope\":\"GLOBAL\",\"valueType\":\"BOOLEAN\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"defaultValue\":true,\"patchTemplate\":{\"behavior\":{\"expansion\":{\"enabled\":true,\"contractVersion\":\"1.0.0\",\"interaction\":{\"trigger\":\"icon\",\"keyboard\":{\"profile\":\"disclosure\"}},\"limits\":{\"allowMultiple\":false,\"maxExpandedRows\":1,\"onOverflow\":\"collapseOldest\"},\"detail\":{\"schemaContract\":{\"kind\":\"praxis.detail.schema\",\"version\":\"1.0.0\"},\"source\":{\"mode\":\"inline\",\"inlineSchema\":{\"layout\":\"stack\",\"items\":[]}},\"rendering\":{\"strategy\":\"registry\",\"registryId\":\"praxis.detail.default\"}}}}}},{\"id\":\"SET_EXPANSION_SOURCE_MODE\",\"intentExamples\":[\"expansion source\",\"detail source\",\"schema source\",\"resource detail\",\"resourcePath detail\"],\"scope\":\"GLOBAL\",\"valueType\":\"ENUM\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"patchTemplate\":{\"behavior\":{\"expansion\":{\"detail\":{\"source\":{\"mode\":\"{{value}}\"}}}}}},{\"id\":\"SET_EXPANSION_RESOURCE\",\"intentExamples\":[\"detail resource id\",\"resource detail id\",\"ui composition detail\",\"schema detail resource\"],\"scope\":\"GLOBAL\",\"valueType\":\"OBJECT\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"patchTemplate\":{\"behavior\":{\"expansion\":{\"detail\":{\"source\":{\"mode\":\"resource\",\"resource\":{\"kind\":\"{{params.kind}}\",\"id\":\"{{params.id}}\",\"version\":\"{{params.version}}\"}}}}}}},{\"id\":\"SET_COLUMN_BOLD\",\"intentExamples\":[\"column bold\",\"coluna negrito\",\"destacar coluna\",\"bold text\"],\"scope\":\"COLUMN\",\"valueType\":\"STRING\",\"operation\":\"update\",\"requiresExistingTarget\":true,\"patchTemplate\":{\"columns\":[{\"field\":\"{{target}}\",\"style\":\"font-weight: 600;\"}]}},{\"id\":\"SET_COLUMN_COLOR\",\"intentExamples\":[\"column color\",\"cor da coluna\",\"pintar coluna\",\"text color\"],\"scope\":\"COLUMN\",\"valueType\":\"STRING\",\"operation\":\"update\",\"requiresExistingTarget\":true,\"patchTemplate\":{\"columns\":[{\"field\":\"{{target}}\",\"style\":\"color: {{value}};\"}]}},{\"id\":\"SET_HEADER_UPPERCASE\",\"intentExamples\":[\"header uppercase\",\"cabecalho maiuscula\",\"titulo caixa alta\"],\"scope\":\"COLUMN\",\"valueType\":\"STRING\",\"operation\":\"update\",\"requiresExistingTarget\":true,\"patchTemplate\":{\"columns\":[{\"field\":\"{{target}}\",\"headerStyle\":\"text-transform: uppercase;\"}]}},{\"id\":\"SET_HEADER_BOLD\",\"intentExamples\":[\"header bold\",\"cabecalho negrito\",\"titulo forte\"],\"scope\":\"COLUMN\",\"valueType\":\"STRING\",\"operation\":\"update\",\"requiresExistingTarget\":true,\"patchTemplate\":{\"columns\":[{\"field\":\"{{target}}\",\"headerStyle\":\"font-weight: 600;\"}]}},{\"id\":\"SET_HEADER_BG_COLOR\",\"intentExamples\":[\"header background\",\"fundo cabecalho\",\"cor titulo\"],\"scope\":\"COLUMN\",\"valueType\":\"STRING\",\"operation\":\"update\",\"requiresExistingTarget\":true,\"patchTemplate\":{\"columns\":[{\"field\":\"{{target}}\",\"headerStyle\":\"background-color: {{value}};\"}]}},{\"id\":\"SET_HEADER_TEXT_COLOR\",\"intentExamples\":[\"header text color\",\"cor texto cabecalho\"],\"scope\":\"COLUMN\",\"valueType\":\"STRING\",\"operation\":\"update\",\"requiresExistingTarget\":true,\"patchTemplate\":{\"columns\":[{\"field\":\"{{target}}\",\"headerStyle\":\"color: {{value}};\"}]}},{\"id\":\"SET_TOOLBAR_ALIGNMENT\",\"intentExamples\":[\"toolbar align\",\"alinhar toolbar\",\"alinhamento barra\",\"space-between\",\"start\",\"end\"],\"scope\":\"GLOBAL\",\"valueType\":\"ENUM\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"patchTemplate\":{\"toolbar\":{\"layout\":{\"alignment\":\"{{value}}\"}}}},{\"id\":\"ENABLE_GROUPING\",\"intentExamples\":[\"group by\",\"agrupar por\",\"agrupamento\"],\"scope\":\"GLOBAL\",\"valueType\":\"STRING\",\"operation\":\"update\",\"requiresExistingTarget\":true,\"patchTemplate\":{\"behavior\":{\"grouping\":{\"enabled\":true,\"fields\":[\"{{target}}\"],\"expanded\":true}}}},{\"id\":\"CLEAR_GROUPING\",\"intentExamples\":[\"ungroup\",\"desagrupar\",\"remover agrupamento\"],\"scope\":\"GLOBAL\",\"valueType\":\"BOOLEAN\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"defaultValue\":true,\"patchTemplate\":{\"behavior\":{\"grouping\":{\"enabled\":false,\"fields\":[]}}}},{\"id\":\"ENABLE_ROW_ACTIONS\",\"intentExamples\":[\"enable row actions\",\"acoes de linha\",\"botoes na linha\"],\"scope\":\"GLOBAL\",\"valueType\":\"BOOLEAN\",\"operation\":\"update\",\"requiresExistingTarget\":false,\"defaultValue\":true,\"patchTemplate\":{\"actions\":{\"row\":{\"enabled\":true,\"sticky\":\"end\"}}}},{\"id\":\"ADD_ROW_ACTION_ICON\",\"intentExamples\":[\"add row action\",\"botao de acao\",\"adicionar botao\"],\"scope\":\"GLOBAL\",\"valueType\":\"OBJECT\",\"operation\":\"create\",\"requiresExistingTarget\":false,\"patchTemplate\":{\"actions\":{\"row\":{\"actions\":[{\"id\":\"{{id}}\",\"icon\":\"{{icon}}\",\"label\":\"{{label}}\",\"color\":\"{{params.color}}\",\"overflow\":false}]}}}},{\"id\":\"ADD_ROW_ACTION_MENU\",\"intentExamples\":[\"add row menu\",\"acao no menu\",\"item de menu\"],\"scope\":\"GLOBAL\",\"valueType\":\"OBJECT\",\"operation\":\"create\",\"requiresExistingTarget\":false,\"patchTemplate\":{\"actions\":{\"row\":{\"actions\":[{\"id\":\"{{id}}\",\"icon\":\"{{icon}}\",\"label\":\"{{label}}\",\"overflow\":true}]}}}},{\"id\":\"ADD_ROW_STYLE_BG\",\"intentExamples\":[\"row background condition\",\"pintar linha se\",\"cor de fundo condicional\"],\"scope\":\"GLOBAL\",\"valueType\":\"OBJECT\",\"operation\":\"create\",\"requiresExistingTarget\":false,\"patchTemplate\":{\"rowConditionalStyles\":[{\"condition\":\"{{condition}}\",\"style\":{\"background-color\":\"{{value}}\"}}]}},{\"id\":\"ADD_ROW_STYLE_COLOR\",\"intentExamples\":[\"row text color condition\",\"cor texto linha se\"],\"scope\":\"GLOBAL\",\"valueType\":\"OBJECT\",\"operation\":\"create\",\"requiresExistingTarget\":false,\"patchTemplate\":{\"rowConditionalStyles\":[{\"condition\":\"{{condition}}\",\"style\":{\"color\":\"{{value}}\"}}]}},{\"id\":\"ADD_CONDITIONAL_RENDERER\",\"intentExamples\":[\"conditional renderer\",\"renderer condicional\",\"badge condicional\",\"chip condicional\",\"badge se\",\"chip se\",\"conditional badge\",\"conditional chip\"],\"scope\":\"COLUMN\",\"valueType\":\"OBJECT\",\"operation\":\"create\",\"requiresExistingTarget\":true,\"params\":[{\"name\":\"condition\",\"type\":\"STRING\",\"description\":\"Objeto JSON Logic canonico serializado, nunca DSL textual (ex: { \\\">\\\": [{ \\\"var\\\": \\\"recompensa\\\" }, 500000] })\"},{\"name\":\"renderer\",\"type\":\"STRING\",\"description\":\"Renderer completo com type e config (ex: { type: \\\"badge\\\", badge: { textField: \\\"recompensa\\\", color: \\\"#ff69b4\\\", variant: \\\"filled\\\" } })\"}],\"patchTemplate\":{\"columns\":[{\"field\":\"{{target}}\",\"conditionalRenderers\":[{\"condition\":\"{{params.condition}}\",\"renderer\":\"{{params.renderer}}\"}]}]}},{\"id\":\"ADD_CONDITIONAL_ICON\",\"intentExamples\":[\"conditional icon\",\"icone condicional\",\"icone se\"],\"scope\":\"COLUMN\",\"valueType\":\"OBJECT\",\"operation\":\"create\",\"requiresExistingTarget\":true,\"patchTemplate\":{\"columns\":[{\"field\":\"{{target}}\",\"conditionalRenderers\":[{\"condition\":\"{{condition}}\",\"renderer\":{\"type\":\"icon\",\"icon\":{\"name\":\"{{value}}\",\"color\":\"{{params.color}}\"}}}]}]}}]}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/table-context-pack.ts",
          "contentHash": "9236eb3216eabc89aafda89008adbdafc27f377a531f69cd9e61f9a02991d751",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 143,
          "chunkKind": "context_pack",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"componentContext\",\"componentContext\":{\"fieldResolvers\":{\"columns[].field\":[\"field\",\"header\"],\"actions.row.actions[].id\":[\"id\",\"label\"],\"rowConditionalStyles[].condition\":[\"condition\"]},\"hints\":[\"Use semantic patches with columns[] and field, not JSON Patch or column indexes.\",\"Set columns[].type before choosing columns[].format presets to avoid mismatched formatting.\",\"Renderer config overrides format/valueMapping; avoid mixing unless required.\",\"Use ADD_CONDITIONAL_RENDERER with renderer.type + renderer.<type> config for conditional badges/chips.\",\"When the table already shows a status/boolean column as valueMapping or chip/badge and the user refines colors, variants, icons, animation or tooltip, preserve the target column and create conditionalRenderers per semantic value instead of repeating the same valueMapping.\",\"For boolean chips/badges, model true/false branches explicitly: condition {\\\"==\\\":[{\\\"var\\\":\\\"<field>\\\"},true]} for the positive label and {\\\"==\\\":[{\\\"var\\\":\\\"<field>\\\"},false]} for the negative label; use renderer.type \\\"chip\\\" or \\\"badge\\\" with text, color and variant.\",\"DOC: Widget purpose: data table with sorting, filtering, pagination, and actions.\",\"DOC: Host inputs: tableId (required), resourcePath (optional), config (optional).\",\"DOC: config defaults to createDefaultTableConfig(); columns may start empty.\",\"DOC: behavior.expansion.detail é schema-driven; altere source.mode (inline/resource/resourcePath), não use detail.type.\",\"DOC: Para detail.source.mode=resource, sempre informar resource.kind + resource.id + resource.version.\",\"DOC: Para detail.source.mode=resourcePath, sempre informar resourcePath.paramsMap + resourceAllowList[]; URL absoluta/scheme (http:, https:, data:, javascript:) é bloqueada e o runtime aplica fail-closed.\",\"DOC: collapseOn ativo no runtime P0A: sortChange, pageChange, filterChange e dataRefresh.\",\"DOC: When resourcePath is available, the table can load schema and data; ask the user to pick an API resource when missing.\",\"DOC: resourcePath must be the base resource path only (no /filter, /all, /{id}). CRUD endpoints are handled internally.\",\"DOC: columns[].computed.expression agora usa AST Json Logic canônico para derived values; não use fórmulas string.\",\"DOC: Para microVisualization em table-cell, recomende delta, bullet, radial, harveyBall ou stackedBar para leitura rápida. line, area e column são condicionais à largura horizontal; comparison aumenta a altura da linha; processFlow exige etapas reconhecíveis. Quando esses trade-offs não servirem à decisão, prefira detalhe expandido ou superfície relacionada.\",\"DOC: Expressões de microVisualization aceitam caminho da linha (row.sla) ou fórmula controlada com prefixo = (= row.sla), com a mesma semântica do editor visual.\",\"DOC: Operadores/funções canônicos úteis: +, -, *, /, %, min, max, cat, substr, round, ceil, floor, abs, coalesce, now, date, yearsSince, monthsSince, daysSince, len, toNumber e stringify.\",\"DOC: Examples: {\\\"yearsSince\\\":[{\\\"var\\\":\\\"dataNascimento\\\"}]} → idade; {\\\"yearsSince\\\":[{\\\"var\\\":\\\"dataAdmissao\\\"}]} → tempoEmpresa (anos); {\\\"monthsSince\\\":[{\\\"var\\\":\\\"dataAdmissao\\\"}]} → tempoEmpresa (meses); {\\\"daysSince\\\":[{\\\"var\\\":\\\"dataCadastro\\\"}]} → dias desde cadastro; {\\\"+\\\":[{\\\"coalesce\\\":[{\\\"var\\\":\\\"bonus\\\"},0]},{\\\"var\\\":\\\"salario\\\"}]} → total com fallback.\",\"### DATA ARCHETYPE TO VISUAL STRATEGY\",\"Apply these patterns based on the SEMANTIC NATURE of the column data:\",\"- STATUS/STATE (e.g., phase, stage, is_active, priority):\",\"  -> Use \\\"badge\\\" or \\\"chip\\\" with conditional colors (success/warn/error/info).\",\"  -> Use \\\"valueMapping\\\" to convert codes (1, \\\"A\\\") to labels (\\\"Active\\\", \\\"Approved\\\").\",\"- METRICS/KPI (e.g., progress, score, rating, completion):\",\"  -> Use \\\"progress\\\" (bars), \\\"rating\\\" (stars), or \\\"percentage\\\" type.\",\"  -> Align \\\"right\\\".\",\"- FINANCIAL (e.g., price, cost, balance, total):\",\"  -> Use type \\\"currency\\\" and format \\\"BRL|symbol|2\\\" (or per locale).\",\"  -> Align \\\"right\\\". Style: \\\"font-variant-numeric: tabular-nums\\\".\",\"- ENTITIES (e.g., user, product, thumb):\",\"  -> Use \\\"avatar\\\" (for people/users) or \\\"image\\\" (for products/files).\",\"  -> Combine with \\\"link\\\" or \\\"compose\\\" for title+subtitle layouts.\",\"- INTERACTIVE/NAV (e.g., details, website, download):\",\"  -> Use \\\"button\\\" (actions), \\\"link\\\" (navigation) or \\\"icon\\\" (simple triggers).\",\"- BOOLEAN (e.g., has_tax, is_valid):\",\"  -> Use \\\"toggle\\\" (if editable) or \\\"icon\\\" (check/close) or \\\"badge\\\" (Yes/No).\",\"- IDENTIFIERS (e.g., uuid, sku, order_id, cpf):\",\"  -> Style: \\\"font-family: monospace\\\".\",\"  -> CRITICAL: Do NOT use numeric formatting (like \\\"1.0-0\\\") for IDs. Treat them as strings.\",\"  -> Consider adding a \\\"copy\\\" context action.\",\"- GROUPING (e.g., category, department):\",\"  -> If the user asks to \\\"group by X\\\", use the ENABLE_GROUPING action with target=X.\",\"- TEMPORAL (e.g., created_at, deadline):\",\"  -> Use type \\\"date\\\". Prefer \\\"short\\\" or \\\"shortDate\\\" for compact views.\",\"  -> Use standard format (dd/MM/yyyy) for strict records.\"]}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/table-context-pack.ts",
          "contentHash": "a99d911e360ea62c7095aaedd661ec1287cf145df5a1bf728504071920bd7cf3",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 144,
          "chunkKind": "context_pack",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"aiConcepts\",\"aiConcepts\":{\"authoring-envelope\":{\"id\":\"authoring-envelope\",\"title\":\"Envelope de Autoria\",\"description\":\"Contrato primário de autoria usado por editor visual, editor JSON, playground e IA.\",\"rules\":[\"O JSON primário de autoria é TableAuthoringDocument com kind \\\"praxis.table.editor\\\".\",\"bindings.resourcePath e bindings.horizontalScroll não devem ser embutidos diretamente no TableConfig.\",\"meta.idField pertence ao TableConfig canônico e deve ser editado como metadado da configuração.\",\"TableConfig representa a projeção canônica de runtime, não o envelope completo de autoria.\",\"meta.schemaId e meta.serverHash são snapshots persistidos de reconciliação, não fonte primária do runtime.\"],\"examples\":[\"{ kind: \\\"praxis.table.editor\\\", version: 1, config: { meta: { idField: \\\"employeeId\\\" }, columns: [{ field: \\\"name\\\", header: \\\"Nome\\\" }] }, bindings: { resourcePath: \\\"employees\\\", horizontalScroll: \\\"auto\\\" } }\"],\"antiPatterns\":[\"{ columns: [{ field: \\\"name\\\", header: \\\"Nome\\\" }], __resourcePath__: \\\"employees\\\" }\",\"{ config: { columns: [] }, bindings: { idField: \\\"employeeId\\\" } }\"]},\"meta-identity\":{\"id\":\"meta-identity\",\"title\":\"Identidade e Metadados\",\"description\":\"Regras para meta.* persistível (nome, descrição, tags, schemaId).\",\"rules\":[\"meta.idField deve apontar para o campo único das linhas quando configurado.\",\"Alterar meta.idField exige confirmação pois impacta seleção e ações por linha.\",\"meta.tags deve ser uma lista de strings curtas e sem espaços extras.\",\"meta.schemaId é referência de origem; use apenas valores conhecidos.\"],\"examples\":[\"meta.name = \\\"Funcionários ativos\\\"\",\"meta.description = \\\"Visão de colaboradores ativos com filtros por status.\\\"\",\"meta.tags = [\\\"financeiro\\\", \\\"demo\\\"]\",\"meta.idField = \\\"employeeId\\\"\"],\"antiPatterns\":[\"meta.idField = \\\"id\\\" (sem validar se existe no dataset)\",\"meta.tags = \\\"financeiro\\\"\"]},\"columns-core\":{\"id\":\"columns-core\",\"title\":\"Colunas Básicas\",\"description\":\"Definições essenciais de colunas (field, header, visible, order, width).\",\"rules\":[\"columns[].field deve ser único e existir no dataset.\",\"Não reutilize o mesmo field em duas colunas.\",\"Use order para posicionar colunas; menor valor = mais à esquerda.\",\"width aceita valores CSS (ex.: \\\"120px\\\", \\\"10%\\\", \\\"auto\\\").\"],\"examples\":[\"{ field: \\\"status\\\", header: \\\"Status\\\", visible: true, order: 2 }\",\"{ field: \\\"createdAt\\\", header: \\\"Criado em\\\", width: \\\"140px\\\" }\"],\"antiPatterns\":[\"{ field: \\\"status\\\", header: \\\"Status\\\" } e outra coluna com field \\\"status\\\"\",\"{ field: \\\"price\\\", width: 120 }\"]},\"columns-behavior\":{\"id\":\"columns-behavior\",\"title\":\"Comportamento de Coluna\",\"description\":\"Configura sortable, filterable, resizable, align e sticky.\",\"rules\":[\"sortable e filterable devem refletir o comportamento real do backend.\",\"resizable depende de behavior.resizing.enabled quando disponível.\",\"align deve ser left/center/right.\",\"sticky aceita true, \\\"start\\\" ou \\\"end\\\".\"],\"examples\":[\"{ field: \\\"amount\\\", sortable: true, filterable: true, align: \\\"right\\\" }\",\"{ field: \\\"id\\\", sticky: \\\"start\\\" }\"],\"antiPatterns\":[\"{ align: \\\"middle\\\" }\",\"{ sticky: \\\"left\\\" }\"]},\"columns-styles\":{\"id\":\"columns-styles\",\"title\":\"Estilos de Coluna\",\"description\":\"CSS inline e classes para células e cabeçalho.\",\"rules\":[\"cssClass/headerCssClass devem ser nomes de classe válidos.\",\"style/headerStyle são CSS inline curtos e seguros.\",\"Evite !important e regras muito longas.\"],\"examples\":[\"{ field: \\\"status\\\", cssClass: \\\"col-status\\\" }\",\"{ field: \\\"name\\\", headerStyle: \\\"text-transform: uppercase;\\\" }\"],\"antiPatterns\":[\"{ headerCssClass: \\\"header title\\\" }\",\"{ style: \\\"background: url(javascript:...)\\\" }\"]},\"columns-types\":{\"id\":\"columns-types\",\"title\":\"Tipos e Formatos de Coluna\",\"description\":\"Regras de type/format por tipo de dado.\",\"rules\":[\"type deve ser um dos tipos suportados (string/number/date/boolean/currency/percentage/custom).\",\"format deve ser compatível com type e presets do sistema.\",\"Para currency, use formato \\\"BRL|symbol|2\\\" ou semelhante.\",\"Para date, use DatePipe ou presets existentes.\"],\"examples\":[\"{ field: \\\"createdAt\\\", type: \\\"date\\\", format: \\\"dd/MM/yyyy\\\" }\",\"{ field: \\\"amount\\\", type: \\\"currency\\\", format: \\\"BRL|symbol|2\\\" }\"],\"antiPatterns\":[\"{ type: \\\"money\\\" }\",\"{ format: \\\"money()\\\" }\"]},\"columns-formatting\":{\"id\":\"columns-formatting\",\"title\":\"Mapeamento e Formatação Avançada\",\"description\":\"valueMapping, format e estilos adicionais.\",\"rules\":[\"valueMapping deve usar chaves de string para mapear valores crus.\",\"Use format presets quando disponíveis; evite formatos inventados.\"],\"syntax\":\"format: \\\"BRL|symbol|2\\\"\",\"examples\":[\"{ field: \\\"active\\\", valueMapping: { \\\"1\\\": \\\"Ativo\\\", \\\"0\\\": \\\"Inativo\\\" } }\"],\"antiPatterns\":[\"{ valueMapping: { 1: \\\"Ativo\\\" } }\"]},\"columns-internals\":{\"id\":\"columns-internals\",\"title\":\"Campos Internos de Coluna\",\"description\":\"Campos reservados usados por fluxos internos e importação.\",\"rules\":[\"Evite setar _styleRulesState, _generatedValueGetter, _originalApiType e _isApiField manualmente.\",\"Use apenas em fluxos de migração ou importação controlada.\"],\"examples\":[\"(_isApiField true só quando coluna veio da API)\"],\"antiPatterns\":[\"{ _generatedValueGetter: \\\"row => row.value\\\" }\"]},\"computed-logic\":{\"id\":\"computed-logic\",\"title\":\"Lógica de Colunas Calculadas\",\"description\":\"Regras matemáticas e de sintaxe para colunas computed.\",\"rules\":[\"Use AST Json Logic canônico em columns[].computed.expression.\",\"Acesse campos da linha com {\\\"var\\\":\\\"field\\\"} e dependências anteriores com {\\\"var\\\":\\\"computed.total\\\"}.\",\"Operadores/funções disponíveis incluem +, -, *, /, %, min, max, cat, substr, round, floor, ceil, abs, coalesce, now, date, yearsSince, monthsSince, daysSince, len, toNumber e stringify.\",\"NÃO use prefixos como \\\"row.\\\", \\\"this.\\\" ou \\\"item.\\\", nem strings DSL.\",\"O resultado deve ser compatível com o outputType (number, currency, percentage, string).\"],\"syntax\":\"{\\\"*\\\":[{\\\"var\\\":\\\"fieldA\\\"},{\\\"var\\\":\\\"fieldB\\\"}]}\",\"examples\":[\"{\\\"*\\\":[{\\\"var\\\":\\\"quantity\\\"},{\\\"var\\\":\\\"unitPrice\\\"}]}\",\"{\\\"/\\\":[{\\\"-\\\":[{\\\"var\\\":\\\"total\\\"},{\\\"var\\\":\\\"cost\\\"}]},{\\\"var\\\":\\\"total\\\"}]}\",\"{\\\"min\\\":[{\\\"var\\\":\\\"stock\\\"},100]}\",\"{\\\"abs\\\":[{\\\"var\\\":\\\"balance\\\"}]}\"],\"antiPatterns\":[\"\\\"quantity * price\\\"\",\"row.quantity * row.price\",\"Math.max(price, 0)\",\"return quantity * price;\"]},\"renderers-core\":{\"id\":\"renderers-core\",\"title\":\"Renderers de Coluna\",\"description\":\"Regras para columns[].renderer.* e tipos suportados.\",\"rules\":[\"Defina columns[].renderer.type antes de configurar detalhes.\",\"Para renderers interativos (button, toggle, menu), configure action.\",\"renderer.html deve usar template com placeholders [[field]].\",\"renderer.link deve preferir hrefField/textField quando o valor vem do dataset.\"],\"examples\":[\"{ renderer: { type: \\\"badge\\\", badge: { textField: \\\"status\\\", color: \\\"success\\\" } } }\",\"{ renderer: { type: \\\"button\\\", button: { label: \\\"Editar\\\", action: { id: \\\"edit-row\\\" } } } }\"],\"antiPatterns\":[\"{ renderer: { badge: { text: \\\"Ativo\\\" } } }\",\"{ renderer: { type: \\\"button\\\", button: { label: \\\"Editar\\\" } } }\"]},\"renderer-icon\":{\"id\":\"renderer-icon\",\"title\":\"Renderer Icon\",\"description\":\"Configuração de renderer.icon.*\",\"rules\":[\"Use icon.name para ícone fixo ou icon.nameField para dinâmico.\",\"icon.size é em px.\",\"ariaLabel deve ser descritivo.\"],\"examples\":[\"{ renderer: { type: \\\"icon\\\", icon: { name: \\\"check_circle\\\", color: \\\"success\\\", size: 18 } } }\"],\"antiPatterns\":[\"{ icon: { name: \\\"check\\\" } } sem renderer.type\"]}}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/table-context-pack.ts",
          "contentHash": "a19ba8f81c394d00c6e89d88117299aea607fe37ebef816752935dc1eecce817",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 145,
          "chunkKind": "context_pack",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"aiConcepts\",\"aiConcepts\":{\"renderer-image\":{\"id\":\"renderer-image\",\"title\":\"Renderer Image\",\"description\":\"Configuração de renderer.image.*\",\"rules\":[\"Use srcField quando a URL vem do dataset.\",\"Defina alt/altField para acessibilidade.\",\"width/height são em px.\",\"shape deve ser square/rounded/circle.\"],\"examples\":[\"{ renderer: { type: \\\"image\\\", image: { srcField: \\\"avatarUrl\\\", shape: \\\"circle\\\", width: 32, height: 32 } } }\"],\"antiPatterns\":[\"{ renderer: { type: \\\"image\\\", image: { src: \\\"\\\" } } }\"]},\"renderer-badge\":{\"id\":\"renderer-badge\",\"title\":\"Renderer Badge\",\"description\":\"Configuração de renderer.badge.*\",\"rules\":[\"Badge requer text ou textField.\",\"variant deve ser filled/outlined/soft/plain.\"],\"examples\":[\"{ renderer: { type: \\\"badge\\\", badge: { textField: \\\"status\\\", variant: \\\"filled\\\" } } }\"],\"antiPatterns\":[\"{ badge: {} }\"]},\"renderer-link\":{\"id\":\"renderer-link\",\"title\":\"Renderer Link\",\"description\":\"Configuração de renderer.link.*\",\"rules\":[\"Use hrefField quando URL vem do dataset.\",\"target deve ser _blank/_self/_parent/_top.\",\"rel deve ser usado com target _blank (ex.: noopener).\"],\"examples\":[\"{ renderer: { type: \\\"link\\\", link: { textField: \\\"name\\\", hrefField: \\\"profileUrl\\\", target: \\\"_blank\\\", rel: \\\"noopener\\\" } } }\"],\"antiPatterns\":[\"{ link: { href: \\\"javascript:alert(1)\\\" } }\"]},\"renderer-button\":{\"id\":\"renderer-button\",\"title\":\"Renderer Button\",\"description\":\"Configuração de renderer.button.*\",\"rules\":[\"button.action.id é obrigatório para ações interativas.\",\"disabledCondition usa expressao condicional canonica em JSON Logic.\",\"variant deve ser filled/outlined/text.\"],\"examples\":[\"{ renderer: { type: \\\"button\\\", button: { label: \\\"Editar\\\", action: { id: \\\"edit-row\\\" } } } }\"],\"antiPatterns\":[\"{ button: { label: \\\"Editar\\\" } }\"]},\"renderer-chip\":{\"id\":\"renderer-chip\",\"title\":\"Renderer Chip\",\"description\":\"Configuração de renderer.chip.*\",\"rules\":[\"Chip requer text ou textField.\",\"variant deve ser filled/outlined/soft/plain.\"],\"examples\":[\"{ renderer: { type: \\\"chip\\\", chip: { text: \\\"Ativo\\\", variant: \\\"filled\\\" } } }\"],\"antiPatterns\":[\"{ chip: { variant: \\\"ghost\\\" } }\"]},\"renderer-progress\":{\"id\":\"renderer-progress\",\"title\":\"Renderer Progress\",\"description\":\"Configuração de renderer.progress.*\",\"rules\":[\"valueExpr deve retornar 0-100.\",\"showLabel controla exibição do valor.\"],\"examples\":[\"{ renderer: { type: \\\"progress\\\", progress: { valueExpr: \\\"progress\\\", showLabel: true } } }\"],\"antiPatterns\":[\"{ progress: { valueExpr: \\\"progress/100\\\" } } sem garantir 0-100\"]},\"renderer-avatar\":{\"id\":\"renderer-avatar\",\"title\":\"Renderer Avatar\",\"description\":\"Configuração de renderer.avatar.*\",\"rules\":[\"Use srcField para imagem dinâmica.\",\"initialsField deriva iniciais automaticamente a partir de um campo textual.\",\"initialsExpr é fallback quando não há imagem e deve retornar as iniciais prontas; não use JS arbitrário para split/map/trim.\",\"Use backgroundColor e textColor para colorir o círculo do avatar; para variar por linha, aplique esses campos em conditionalRenderers.\",\"shape deve ser circle/square/rounded.\"],\"examples\":[\"{ renderer: { type: \\\"avatar\\\", avatar: { srcField: \\\"avatarUrl\\\", initialsField: \\\"name\\\" } } }\",\"{ renderer: { type: \\\"avatar\\\", avatar: { initialsExpr: \\\"initials\\\" } } }\",\"{ conditionalRenderers: [{ condition: { \\\">\\\": [{ \\\"var\\\": \\\"salary\\\" }, 30000] }, renderer: { type: \\\"avatar\\\", avatar: { initialsField: \\\"name\\\", backgroundColor: \\\"#D32F2F\\\", textColor: \\\"#FFFFFF\\\" } } }] }\"],\"antiPatterns\":[\"{ avatar: { initialsExpr: \\\"name\\\" } }\",\"{ avatar: { shape: \\\"round\\\" } }\"]},\"renderer-toggle\":{\"id\":\"renderer-toggle\",\"title\":\"Renderer Toggle\",\"description\":\"Configuração de renderer.toggle.*\",\"rules\":[\"toggle.action.id é obrigatório para persistir mudança.\",\"disabledCondition usa expressao condicional canonica em JSON Logic.\"],\"examples\":[\"{ renderer: { type: \\\"toggle\\\", toggle: { stateExpr: \\\"active\\\", action: { id: \\\"toggle-active\\\" } } } }\"],\"antiPatterns\":[\"{ toggle: { stateExpr: \\\"active\\\" } } sem action\"]},\"renderer-menu\":{\"id\":\"renderer-menu\",\"title\":\"Renderer Menu\",\"description\":\"Configuração de renderer.menu.*\",\"rules\":[\"itemsExpr deve produzir lista de ações válidas.\",\"ariaLabel deve descrever o menu.\"],\"examples\":[\"{ renderer: { type: \\\"menu\\\", menu: { itemsExpr: \\\"row.menuItems\\\", ariaLabel: \\\"Ações\\\" } } }\"],\"antiPatterns\":[\"{ menu: { itemsExpr: \\\"row => row.items\\\" } }\"]},\"renderer-rating\":{\"id\":\"renderer-rating\",\"title\":\"Renderer Rating\",\"description\":\"Configuração de renderer.rating.*\",\"rules\":[\"valueExpr deve retornar numero dentro do max.\",\"O renderer é somente leitura por padrão; não use readonly no schema funcional.\"],\"examples\":[\"{ renderer: { type: \\\"rating\\\", rating: { valueExpr: \\\"score\\\", max: 5, ariaLabel: \\\"Nota {value} de {max}\\\" } } }\"],\"antiPatterns\":[\"{ rating: { max: 0 } }\"]},\"renderer-html\":{\"id\":\"renderer-html\",\"title\":\"Renderer HTML\",\"description\":\"Configuração de renderer.html.*\",\"rules\":[\"template deve usar placeholders [[field]].\",\"sanitize deve ser strict ou basic, preferindo strict.\"],\"examples\":[\"{ renderer: { type: \\\"html\\\", html: { template: \\\"<strong>[[name]]</strong>\\\", sanitize: \\\"strict\\\" } } }\"],\"antiPatterns\":[\"{ html: { template: \\\"<script>alert(1)</script>\\\" } }\"]},\"renderer-compose\":{\"id\":\"renderer-compose\",\"title\":\"Renderer Compose\",\"description\":\"Composição de múltiplos renderers na mesma célula.\",\"rules\":[\"columns[].renderer.compose.items deve ser uma lista de renderers válidos.\",\"Defina layout (direction, gap, align) para evitar overflow.\",\"Evite mixar elementos interativos sem espaço suficiente.\"],\"examples\":[\"{ renderer: { type: \\\"compose\\\", compose: { items: [{ type: \\\"icon\\\", icon: { name: \\\"check\\\" } }, { type: \\\"text\\\", textField: \\\"status\\\" }], layout: { direction: \\\"row\\\", gap: 8 } } } }\"],\"antiPatterns\":[\"{ renderer: { type: \\\"compose\\\", compose: { items: [] } } }\"]},\"conditional-json-logic\":{\"id\":\"conditional-json-logic\",\"title\":\"Expressoes Condicionais\",\"description\":\"Sintaxe de condições para conditionalRenderers e filtros de estilo.\",\"rules\":[\"Use objetos JSON Logic com referencias var (ex: { \\\"===\\\": [{ \\\"var\\\": \\\"status\\\" }, \\\"Ativo\\\"] }).\",\"Operadores suportados: ===, !==, >, <, >=, <=, and, or, !.\",\"Funcoes comuns: { \\\"contains\\\": [{ \\\"var\\\": \\\"name\\\" }, \\\"Silva\\\"] }.\",\"Pode referenciar computed.<field> quando existir.\",\"NAO use DSL textual, JavaScript (row., this., Math., ternario, eval) nem strings de expressao.\"],\"syntax\":\"{\\\"and\\\":[{\\\"contains\\\":[{\\\"var\\\":\\\"status\\\"},\\\"Ativo\\\"]},{\\\">=\\\":[{\\\"var\\\":\\\"price\\\"},100]}]}\",\"examples\":[\"{\\\"===\\\":[{\\\"var\\\":\\\"status\\\"},\\\"Ativo\\\"]}\",\"{\\\"contains\\\":[{\\\"var\\\":\\\"name\\\"},\\\"Silva\\\"]}\",\"{\\\">\\\":[{\\\"var\\\":\\\"computed.total\\\"},1000]}\"],\"antiPatterns\":[\"row.status == \\\"Ativo\\\"\",\"Math.max(price, 0) > 10\",\"status ? \\\"A\\\" : \\\"B\\\"\"]},\"conditional-renderers\":{\"id\":\"conditional-renderers\",\"title\":\"Renderers Condicionais\",\"description\":\"Configura conditionalRenderers por coluna.\",\"rules\":[\"condition usa expressao condicional canonica em JSON Logic.\",\"renderer interno segue as mesmas regras dos renderers padrão.\",\"Para animar apenas uma célula/coluna quando a condição for verdadeira, use columns[].conditionalRenderers[].animation.\",\"enabled controla ativacao da regra.\"],\"examples\":[\"{ conditionalRenderers: [{ condition: { \\\"===\\\": [{ \\\"var\\\": \\\"status\\\" }, \\\"Ativo\\\"] }, renderer: { type: \\\"badge\\\", badge: { text: \\\"Ativo\\\" } } }] }\",\"{ conditionalRenderers: [{ condition: { \\\">\\\": [{ \\\"var\\\": \\\"salario\\\" }, 30000] }, animation: { preset: \\\"pulse-soft\\\", trigger: \\\"onAppear\\\", intensity: \\\"subtle\\\", repeat: \\\"once\\\" } }] }\"],\"antiPatterns\":[\"{ conditionalRenderers: [{ condition: \\\"row.status == \\\"Ativo\\\"\\\" }] }\",\"{ conditionalStyles: [{ style: { animation: \\\"pulse 1s infinite\\\" } }] }\"]}}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/table-context-pack.ts",
          "contentHash": "b2d4b07f3a2e44788e0a577ccdde15c553e41f10ecf5452bc56a5d163496ff8c",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 146,
          "chunkKind": "context_pack",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"aiConcepts\",\"aiConcepts\":{\"conditional-animations\":{\"id\":\"conditional-animations\",\"title\":\"Animações Condicionais\",\"description\":\"Animações condicionais de linha e célula na tabela.\",\"rules\":[\"Use rowConditionalRenderers[].animation para animar a linha inteira.\",\"Use columns[].conditionalRenderers[].animation para animar somente o conteúdo de uma célula/coluna.\",\"Prefira preset semântico antes de type bruto: info-soft, success-confirm, warning-attention, critical-alert, audit-review, sync-pending, pulse-soft, fade-soft, sla-warning, sla-breach, risk-elevated, risk-critical, audit-warning ou sync-warning.\",\"condition sempre usa JSON Logic; não use JS, row.status ou strings de expressão.\",\"appearance.animations.enabled=false desativa animações; appearance.animations.specific.row/cell=false desativa o escopo correspondente.\",\"onConditionEnter, onConditionExit e onDataRefresh são aceitos no contrato de autoria e normalizados para gatilho de mudança no runtime.\"],\"examples\":[\"{ rowConditionalRenderers: [{ id: \\\"salary-high-pulse\\\", condition: { \\\">\\\": [{ \\\"var\\\": \\\"salario\\\" }, 30000] }, animation: { preset: \\\"pulse-soft\\\", trigger: \\\"onAppear\\\", intensity: \\\"subtle\\\", repeat: \\\"once\\\", durationMs: 1200 }, enabled: true }] }\",\"{ columns: [{ field: \\\"status\\\", conditionalRenderers: [{ id: \\\"status-critical-alert\\\", condition: { \\\"===\\\": [{ \\\"var\\\": \\\"status\\\" }, \\\"Critico\\\"] }, animation: { preset: \\\"critical-alert\\\", trigger: \\\"onChange\\\", repeat: \\\"loop\\\", intensity: \\\"strong\\\" }, enabled: true }] }] }\"],\"antiPatterns\":[\"{ rowConditionalStyles: [{ style: { animation: \\\"pulse 1s infinite\\\" } }] }\",\"{ rowConditionalRenderers: [{ condition: \\\"row.salario > 30000\\\", animation: { name: \\\"pulse\\\" } }] }\",\"{ columns: [{ conditionalStyles: [{ condition: { \\\">\\\": [{ \\\"var\\\": \\\"salario\\\" }, 30000] }, style: { animationName: \\\"pulse\\\" } }] }] }\"]},\"conditional-styles\":{\"id\":\"conditional-styles\",\"title\":\"Estilos Condicionais por Coluna\",\"description\":\"Configura conditionalStyles.*\",\"rules\":[\"condition usa expressao condicional canonica em JSON Logic.\",\"cssClass define classe e style aplica inline.\",\"description deve ser texto curto.\"],\"examples\":[\"{ conditionalStyles: [{ condition: { \\\"<\\\": [{ \\\"var\\\": \\\"amount\\\" }, 0] }, cssClass: \\\"col-negative\\\" }] }\"],\"antiPatterns\":[\"{ conditionalStyles: [{ condition: \\\"row.amount < 0\\\" }] }\"]},\"row-conditional-styles\":{\"id\":\"row-conditional-styles\",\"title\":\"Estilos Condicionais de Linha\",\"description\":\"Configura rowConditionalStyles.*\",\"rules\":[\"condition usa expressao condicional canonica em JSON Logic.\",\"cssClass define classe e style aplica inline.\",\"description deve ser texto curto.\"],\"examples\":[\"{ rowConditionalStyles: [{ condition: { \\\"<\\\": [{ \\\"var\\\": \\\"amount\\\" }, 0] }, cssClass: \\\"row-negative\\\" }] }\"],\"antiPatterns\":[\"{ rowConditionalStyles: [{ condition: \\\"row.amount < 0\\\" }] }\"]},\"behavior-pagination\":{\"id\":\"behavior-pagination\",\"title\":\"Paginação (Behavior)\",\"description\":\"Configuração de behavior.pagination.*\",\"rules\":[\"strategy deve ser client ou server.\",\"pageSizeOptions deve incluir pageSize.\",\"advanced.maxPageSize limita pageSize customizado.\"],\"examples\":[\"{ behavior: { pagination: { enabled: true, strategy: \\\"server\\\", pageSize: 25, pageSizeOptions: [10, 25, 50] } } }\"],\"antiPatterns\":[\"{ behavior: { pagination: { strategy: \\\"server\\\" } } } sem totalItems\"]},\"behavior-sorting\":{\"id\":\"behavior-sorting\",\"title\":\"Ordenação (Behavior)\",\"description\":\"Configuração de behavior.sorting.*\",\"rules\":[\"defaultSort pode ser objeto unico ou lista.\",\"multiSort true permite multiplos campos.\",\"allowClearSort habilita terceiro clique.\"],\"examples\":[\"{ behavior: { sorting: { enabled: true, strategy: \\\"client\\\", defaultSort: { column: \\\"createdAt\\\", direction: \\\"desc\\\" } } } }\"],\"antiPatterns\":[\"{ behavior: { sorting: { defaultSort: { column: \\\"\\\", direction: \\\"asc\\\" } } } }\"]},\"behavior-filtering\":{\"id\":\"behavior-filtering\",\"title\":\"Filtros (Behavior)\",\"description\":\"Configuração de behavior.filtering.*\",\"rules\":[\"columnFilters.position deve ser header/subheader/sidebar.\",\"advancedFilters.settings controla o painel avançado.\",\"strategy deve refletir suporte do backend.\"],\"examples\":[\"{ behavior: { filtering: { enabled: true, columnFilters: { enabled: true, position: \\\"header\\\" } } } }\"],\"antiPatterns\":[\"{ behavior: { filtering: { enabled: true } } } sem strategy\"]},\"behavior-selection\":{\"id\":\"behavior-selection\",\"title\":\"Selecao (Behavior)\",\"description\":\"Configuração de behavior.selection.*\",\"rules\":[\"type define single/multiple e mode define checkbox/row/both.\",\"persistSelection mantem selecao entre paginas.\",\"visual.highlightSelected define destaque da linha.\"],\"examples\":[\"{ behavior: { selection: { enabled: true, type: \\\"multiple\\\", mode: \\\"checkbox\\\", persistSelection: true } } }\"],\"antiPatterns\":[\"{ behavior: { selection: { type: \\\"multi\\\" } } }\"]},\"behavior-interaction\":{\"id\":\"behavior-interaction\",\"title\":\"Interacao (Behavior)\",\"description\":\"Configuração de behavior.interaction.*\",\"rules\":[\"rowClick/rowDoubleClick.action devem ser ids conhecidos.\",\"customAction deve referenciar handler registrado.\",\"keyboard.customShortcuts mapeia teclas para ações.\"],\"examples\":[\"{ behavior: { interaction: { rowClick: { enabled: true, action: \\\"view\\\" } } } }\"],\"antiPatterns\":[\"{ behavior: { interaction: { rowClick: { customAction: \\\"row => fn(row)\\\" } } } }\"]},\"behavior-loading\":{\"id\":\"behavior-loading\",\"title\":\"Loading (Behavior)\",\"description\":\"Configuração de behavior.loading.*\",\"rules\":[\"type deve ser spinner/skeleton/progress; custom nao possui renderer canonico no runtime.\",\"position deve ser overlay/inline/replace e e materializada pelo runtime.\",\"delay evita flicker; showForQuickOperations=true ignora o delay visual.\",\"requestTimeoutMs evita espera indefinida e materializa erro recuperavel.\",\"allowCancel aborta o request remoto sem descartar dados estaveis ja renderizados.\",\"skeleton.rows deve ser numero positivo.\"],\"examples\":[\"{ behavior: { loading: { type: \\\"skeleton\\\", position: \\\"replace\\\", delay: 200, showForQuickOperations: false, requestTimeoutMs: 30000, allowCancel: true, skeleton: { rows: 6, animated: true } } } }\"],\"antiPatterns\":[\"{ behavior: { loading: { delay: 0 } } }\"]},\"behavior-empty-state\":{\"id\":\"behavior-empty-state\",\"title\":\"Estado Vazio (Behavior)\",\"description\":\"Configuração de behavior.emptyState.*\",\"rules\":[\"message deve ser texto curto.\",\"actions[].action deve ser string de acao.\",\"actions deve representar uma intencao contextual distinta; CREATE capability-governado permanece na toolbar e nao deve ser duplicado.\",\"contexts permite variações por cenário.\"],\"examples\":[\"{ behavior: { emptyState: { message: \\\"Sem dados\\\", actions: [{ label: \\\"Importar arquivo\\\", action: \\\"import\\\", primary: true }] } } }\"],\"antiPatterns\":[\"{ behavior: { emptyState: { message: \\\"\\\" } } }\",\"{ toolbar: { actions: [{ action: \\\"create\\\" }] }, behavior: { emptyState: { actions: [{ action: \\\"create\\\" }] } } }\"]},\"behavior-virtualization\":{\"id\":\"behavior-virtualization\",\"title\":\"Virtualizacao (Behavior)\",\"description\":\"Configuração de behavior.virtualization.*\",\"rules\":[\"itemHeight deve ser informado quando enabled.\",\"strategy deve ser fixed ou dynamic.\"],\"examples\":[\"{ behavior: { virtualization: { enabled: true, itemHeight: 48, strategy: \\\"fixed\\\" } } }\"],\"antiPatterns\":[\"{ behavior: { virtualization: { enabled: true } } }\"]}}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/table-context-pack.ts",
          "contentHash": "bf2460afddb5e086818fb76a08bc339b0f698d201ef3f48b24ac9e2ebc884a2e",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 147,
          "chunkKind": "context_pack",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"aiConcepts\",\"aiConcepts\":{\"behavior-resizing\":{\"id\":\"behavior-resizing\",\"title\":\"Resize (Behavior)\",\"description\":\"Configuração de behavior.resizing.*\",\"rules\":[\"minColumnWidth deve ser positivo.\",\"maxColumnWidth deve ser maior que minColumnWidth quando informado.\",\"autoFit habilita duplo clique no separador para ajustar a coluna ao conteúdo renderizado.\",\"persistWidths salva ajustes do usuario.\"],\"examples\":[\"{ behavior: { resizing: { enabled: true, minColumnWidth: 80, maxColumnWidth: 520, autoFit: true, persistWidths: true } } }\"],\"antiPatterns\":[\"{ behavior: { resizing: { minColumnWidth: 0 } } }\"]},\"behavior-dragging\":{\"id\":\"behavior-dragging\",\"title\":\"Drag & Drop (Behavior)\",\"description\":\"Configuração de behavior.dragging.*\",\"rules\":[\"columns/rows controla reordenacao.\",\"columnDropZones deve listar zonas validas.\"],\"examples\":[\"{ behavior: { dragging: { columns: true, rows: false, showDragIndicator: true } } }\"],\"antiPatterns\":[\"{ behavior: { dragging: { columns: \\\"yes\\\" } } }\"]},\"behavior-expansion\":{\"id\":\"behavior-expansion\",\"title\":\"Expansion (Behavior)\",\"description\":\"Configuração de behavior.expansion.* para detail rows schema-driven.\",\"rules\":[\"detail é sempre schema-driven; varie source.mode (inline/resource/resourcePath), não detail.type.\",\"detail.schemaContract.kind/version deve ser informado para validação e migração.\",\"Em virtualização, prefira detail.height.mode=fixed com virtualization.policy=fixed-height-only.\",\"Use eventExposureDefault hashed/redacted por padrão em ambiente corporativo.\"],\"examples\":[\"{ behavior: { expansion: { enabled: true, state: { mode: \\\"controlled\\\" }, detail: { schemaContract: { kind: \\\"praxis.detail.schema\\\", version: \\\"1.0.0\\\" }, source: { mode: \\\"resource\\\", resource: { kind: \\\"ui-composition\\\", id: \\\"customer-detail-v2\\\", version: \\\"2.1.0\\\" } }, rendering: { strategy: \\\"registry\\\", registryId: \\\"praxis.detail.default\\\" } } } } }\"],\"antiPatterns\":[\"{ behavior: { expansion: { detail: { type: \\\"template\\\", templateId: \\\"legacy-id\\\" } } } }\"]},\"appearance\":{\"id\":\"appearance\",\"title\":\"Aparência e Layout\",\"description\":\"Densidade, bordas, cores, tipografia, espaçamento e responsividade.\",\"rules\":[\"appearance.density deve usar valores compact/comfortable/spacious.\",\"Cores devem usar tokens do tema ou hex válido.\",\"responsive.mobile.cardMode deve ser combinado com colunas prioritárias.\",\"Se animations.enabled for true, respeite reduceMotion.\",\"appearance.animations.specific.row e appearance.animations.specific.cell controlam animações condicionais por escopo.\"],\"examples\":[\"{ appearance: { density: \\\"compact\\\", borders: { showRowBorders: true } } }\",\"{ appearance: { typography: { fontSize: \\\"14px\\\" }, spacing: { cellPadding: \\\"8px 16px\\\" } } }\"],\"antiPatterns\":[\"{ appearance: { density: \\\"tiny\\\" } }\"]},\"appearance-details\":{\"id\":\"appearance-details\",\"title\":\"Detalhes de Aparência\",\"description\":\"Bordas, cores, tipografia, spacing, elevation e responsive autoAdjust.\",\"rules\":[\"borders.style deve ser solid/dashed/dotted quando aplicável.\",\"typography.headerFontWeight deve ser string numerica ou token.\",\"responsive.autoAdjust controla ajustes automáticos em telas menores.\"],\"examples\":[\"{ appearance: { borders: { showOuterBorder: true, style: \\\"solid\\\" }, colors: { alternateRowBackground: \\\"#f7f9fc\\\" } } }\",\"{ appearance: { responsive: { mobile: { cardMode: true, priorityColumns: [\\\"name\\\", \\\"status\\\"] } } } }\"],\"antiPatterns\":[\"{ appearance: { borders: { style: \\\"double\\\" } } }\"]},\"toolbar\":{\"id\":\"toolbar\",\"title\":\"Toolbar\",\"description\":\"Configurações gerais da toolbar.\",\"rules\":[\"toolbar.visible controla exibição global da barra.\",\"Use toolbar.layout.alignment para ajustar distribuição.\",\"toolbar.filters.enabled depende de filtering.enabled.\",\"settingsMenu.enabled expõe opções de densidade e colunas.\"],\"examples\":[\"{ toolbar: { visible: true, position: \\\"top\\\", title: \\\"Pedidos\\\" } }\"],\"antiPatterns\":[\"{ toolbar: { position: \\\"left\\\" } }\"]},\"toolbar-layout\":{\"id\":\"toolbar-layout\",\"title\":\"Layout da Toolbar\",\"description\":\"Configuração de toolbar.layout.*\",\"rules\":[\"alignment deve ser start/center/end/space-between.\",\"height e padding devem ser coerentes com o tema.\"],\"examples\":[\"{ toolbar: { layout: { alignment: \\\"space-between\\\", height: 56, showSeparator: true } } }\"],\"antiPatterns\":[\"{ toolbar: { layout: { alignment: \\\"between\\\" } } }\"]},\"toolbar-actions\":{\"id\":\"toolbar-actions\",\"title\":\"Ações da Toolbar\",\"description\":\"Definições de toolbar.actions[].\",\"rules\":[\"toolbar.actions[].id deve ser único.\",\"action deve ser string, não função JS.\",\"type deve ser button/icon/fab/menu.\",\"visibleWhen usa expressao condicional canonica em JSON Logic.\"],\"examples\":[\"{ toolbar: { actions: [{ id: \\\"add\\\", label: \\\"Adicionar\\\", type: \\\"button\\\", action: \\\"create\\\", position: \\\"end\\\" }] } }\",\"{ toolbar: { actions: [{ id: \\\"more\\\", label: \\\"Mais\\\", type: \\\"menu\\\", action: \\\"noop\\\", children: [{ id: \\\"export\\\", label: \\\"Exportar\\\", type: \\\"button\\\", action: \\\"export\\\" }] }] } }\"],\"antiPatterns\":[\"{ actions: [{ action: \\\"() => doSomething()\\\" }] }\"]},\"toolbar-filters\":{\"id\":\"toolbar-filters\",\"title\":\"Filtros da Toolbar\",\"description\":\"Configuração de toolbar.filters.* e quickFilters.\",\"rules\":[\"quickFilters[].filter deve seguir a estrutura do filtro suportado.\",\"quickFilters representa um pequeno seletor de escopo exclusivo e removível; use filtros avançados para critérios combináveis.\",\"enabled depende de behavior.filtering.enabled.\"],\"examples\":[\"{ toolbar: { filters: { enabled: true, quickFilters: [{ id: \\\"active\\\", label: \\\"Ativos\\\", filter: { status: \\\"active\\\" } }] } } }\"],\"antiPatterns\":[\"{ toolbar: { filters: { quickFilters: [{ filter: \\\"status=active\\\" }] } } }\"]},\"toolbar-settings\":{\"id\":\"toolbar-settings\",\"title\":\"Menu de Configuracoes\",\"description\":\"Configuração de toolbar.settingsMenu.*\",\"rules\":[\"settingsMenu.options[].type deve ser toggle/select/action.\",\"options deve listar valores validos quando type for select.\"],\"examples\":[\"{ toolbar: { settingsMenu: { enabled: true, options: [{ id: \\\"density\\\", label: \\\"Densidade\\\", type: \\\"select\\\", options: [\\\"compact\\\", \\\"comfortable\\\", \\\"spacious\\\"] }] } } }\"],\"antiPatterns\":[\"{ settingsMenu: { options: [{ type: \\\"dropdown\\\" }] } }\"]},\"row-actions\":{\"id\":\"row-actions\",\"title\":\"Acoes por Linha\",\"description\":\"Configuração de actions.row.*\",\"rules\":[\"enabled deve estar true para mostrar coluna de ações.\",\"display deve ser menu/buttons/icons.\",\"trigger deve ser hover/always/click.\",\"actions[].action deve ser string.\"],\"examples\":[\"{ actions: { row: { enabled: true, display: \\\"menu\\\", trigger: \\\"hover\\\", actions: [{ id: \\\"edit\\\", label: \\\"Editar\\\", action: \\\"edit\\\" }] } } }\"],\"antiPatterns\":[\"{ actions: { row: { display: \\\"dropdown\\\" } } }\"]},\"row-actions-advanced\":{\"id\":\"row-actions-advanced\",\"title\":\"Acoes por Linha Avancadas\",\"description\":\"Header, overflow, menu e comportamento avançado.\",\"rules\":[\"header.align deve ser start/center/end.\",\"behavior.maxInline deve ser numero ou objeto de breakpoints.\",\"menuIcon e menuButtonColor devem ser valores suportados.\",\"discovery.enabled=false mantem apenas as actions configuradas e bloqueia a descoberta contextual por HATEOAS/capabilities.\"],\"examples\":[\"{ actions: { row: { header: { label: \\\"Ações\\\", align: \\\"end\\\" }, maxVisibleActions: 3, behavior: { enabled: true, maxInline: 2 } } } }\",\"{ actions: { row: { enabled: true, display: \\\"buttons\\\", discovery: { enabled: false }, actions: [{ id: \\\"briefing\\\", label: \\\"Briefing\\\", action: \\\"inspect-surfaces\\\" }] } } }\"],\"antiPatterns\":[\"{ row: { header: { align: \\\"middle\\\" } } }\"]}}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/table-context-pack.ts",
          "contentHash": "dbd296f8541af414efb0bc48f8b9d045eb10d8fa5a36ea4db8045c5a0644752f",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 148,
          "chunkKind": "context_pack",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"aiConcepts\",\"aiConcepts\":{\"bulk-actions\":{\"id\":\"bulk-actions\",\"title\":\"Acoes em Lote\",\"description\":\"Configuração de actions.bulk.*\",\"rules\":[\"bulk.enabled exige selection.enabled.\",\"floating.position deve ser bottom-right/bottom-left/top-right/top-left.\",\"hideWhenEmpty evita botão flutuante quando nada selecionado.\"],\"examples\":[\"{ actions: { bulk: { enabled: true, position: \\\"toolbar\\\", actions: [{ id: \\\"delete\\\", label: \\\"Excluir\\\", action: \\\"bulk-delete\\\", requiresConfirmation: true }], floating: { position: \\\"bottom-right\\\", hideWhenEmpty: true } } } }\"],\"antiPatterns\":[\"{ actions: { bulk: { enabled: true } } } sem selection.enabled\"]},\"context-actions\":{\"id\":\"context-actions\",\"title\":\"Menu de Contexto\",\"description\":\"Configuração de actions.context.*\",\"rules\":[\"trigger deve ser right-click/long-press/both.\",\"actions[].action deve ser string.\"],\"examples\":[\"{ actions: { context: { enabled: true, trigger: \\\"right-click\\\", actions: [{ id: \\\"copy\\\", label: \\\"Copiar\\\", action: \\\"copy\\\" }] } } }\"],\"antiPatterns\":[\"{ context: { trigger: \\\"click\\\" } }\"]},\"actions-confirmations\":{\"id\":\"actions-confirmations\",\"title\":\"Confirmacoes de Acoes\",\"description\":\"Configuração de actions.confirmations.*\",\"rules\":[\"default deve conter title, message, confirmText e cancelText.\",\"specific usa actionId como chave.\"],\"examples\":[\"{ actions: { confirmations: { default: { title: \\\"Confirmar\\\", message: \\\"Deseja continuar?\\\", confirmText: \\\"Sim\\\", cancelText: \\\"Nao\\\" }, specific: { \\\"delete\\\": { message: \\\"Excluir item?\\\" } } } } }\"],\"antiPatterns\":[\"{ actions: { confirmations: { default: { title: \\\"\\\" } } } }\"]},\"export-general\":{\"id\":\"export-general\",\"title\":\"Exportacao Geral\",\"description\":\"Configuração de export.general.*\",\"rules\":[\"includeHeaders deve ser boolean.\",\"scope deve ser auto, selected, filtered, currentPage ou all.\",\"maxRows deve limitar volume.\",\"includeColumns deve ser all/visible ou lista de fields.\"],\"examples\":[\"{ export: { enabled: true, formats: [\\\"csv\\\"], general: { includeHeaders: true, scope: \\\"auto\\\", maxRows: 5000, includeColumns: \\\"visible\\\" } } }\"],\"antiPatterns\":[\"{ export: { general: { maxRows: 0 } } }\"]},\"export-excel\":{\"id\":\"export-excel\",\"title\":\"Exportacao Excel\",\"description\":\"Configuração de export.excel.*\",\"rules\":[\"sheetName deve ser curto e sem caracteres invalidos.\",\"autoFitColumns melhora legibilidade.\",\"styling.headerStyle e cellStyle devem ser simples.\"],\"examples\":[\"{ export: { excel: { sheetName: \\\"Dados\\\", autoFitColumns: true, freezeHeaders: true, styling: { headerStyle: { fontWeight: \\\"bold\\\" } } } } }\"],\"antiPatterns\":[\"{ excel: { sheetName: \\\"\\\" } }\"]},\"export-pdf\":{\"id\":\"export-pdf\",\"title\":\"Exportacao PDF\",\"description\":\"Configuração de export.pdf.*\",\"rules\":[\"orientation deve ser portrait/landscape.\",\"pageSize deve ser A4/A3/Letter/Legal.\",\"margins devem conter top/right/bottom/left.\"],\"examples\":[\"{ export: { pdf: { orientation: \\\"landscape\\\", pageSize: \\\"A4\\\", margins: { top: 10, right: 10, bottom: 10, left: 10 }, autoPageBreak: true } } }\"],\"antiPatterns\":[\"{ pdf: { pageSize: \\\"A5\\\" } }\"]},\"export-csv\":{\"id\":\"export-csv\",\"title\":\"Exportacao CSV\",\"description\":\"Configuração de export.csv.*\",\"rules\":[\"delimiter deve ser \\\",\\\", \\\";\\\", \\\"|\\\" ou \\\"\\\\t\\\".\",\"encoding deve ser utf-8/utf-16/iso-8859-1.\",\"escapeChar deve ser um caractere.\"],\"examples\":[\"{ export: { csv: { delimiter: \\\";\\\", encoding: \\\"utf-8\\\", escapeChar: \\\"\\\\\\\" } } }\"],\"antiPatterns\":[\"{ csv: { delimiter: \\\":\\\" } }\"]},\"export-json\":{\"id\":\"export-json\",\"title\":\"Exportacao JSON\",\"description\":\"Configuração de export.json.*\",\"rules\":[\"format deve ser pretty ou compact.\",\"structure deve ser array ou object.\"],\"examples\":[\"{ export: { json: { format: \\\"pretty\\\", includeMetadata: true, structure: \\\"array\\\" } } }\"],\"antiPatterns\":[\"{ json: { format: \\\"full\\\" } }\"]},\"export-templates\":{\"id\":\"export-templates\",\"title\":\"Templates de Exportacao\",\"description\":\"Configuração de export.templates[]\",\"rules\":[\"templates devem ter id, name e format válidos.\",\"config deve seguir o formato correspondente.\"],\"examples\":[\"{ export: { templates: [{ id: \\\"resumo\\\", name: \\\"Resumo\\\", format: \\\"pdf\\\", config: {}, isDefault: false }] } }\"],\"antiPatterns\":[\"{ templates: [{ id: \\\"\\\", format: \\\"xls\\\" }] }\"]},\"messages\":{\"id\":\"messages\",\"title\":\"Mensagens\",\"description\":\"Mensagens de estados, ações, validação e exportação.\",\"rules\":[\"Mensagens devem ser curtas e claras.\",\"Não defina funções inline (use templates ou strings simples).\"],\"examples\":[\"{ messages: { states: { empty: \\\"Sem registros.\\\" }, actions: { confirmations: { delete: \\\"Excluir?\\\" } } } }\"],\"antiPatterns\":[\"{ messages: { states: { loadingWithCount: \\\"(n) => ...\\\" } } }\"]},\"messages-advanced\":{\"id\":\"messages-advanced\",\"title\":\"Mensagens Avancadas\",\"description\":\"custom, templates e formatos por tipo.\",\"rules\":[\"templates[].template deve usar placeholders simples.\",\"custom é um mapa chave -> mensagem.\",\"formats deve seguir excel/pdf/csv/json.\"],\"examples\":[\"{ messages: { export: { formats: { excel: \\\"Excel pronto\\\" } }, templates: [{ id: \\\"t1\\\", template: \\\"Exportado {count} itens\\\" }] } }\"],\"antiPatterns\":[\"{ messages: { templates: [{ id: \\\"t1\\\" }] } }\"]},\"localization-date-time\":{\"id\":\"localization-date-time\",\"title\":\"Localizacao de Datas\",\"description\":\"Configuração de localization.dateTime.*\",\"rules\":[\"dateFormat/timeFormat devem seguir DatePipe.\",\"firstDayOfWeek deve ser 0-6.\",\"monthNames e dayNames devem ter 12 e 7 entradas.\"],\"examples\":[\"{ localization: { dateTime: { dateFormat: \\\"dd/MM/yyyy\\\", timeFormat: \\\"HH:mm\\\", firstDayOfWeek: 0 } } }\"],\"antiPatterns\":[\"{ localization: { dateTime: { firstDayOfWeek: 7 } } }\"]},\"localization-number-currency\":{\"id\":\"localization-number-currency\",\"title\":\"Localizacao de Numeros e Moeda\",\"description\":\"Configuração de localization.number.* e localization.currency.*\",\"rules\":[\"decimalSeparator e thousandsSeparator devem ser 1 caractere.\",\"negativeSignPosition deve ser before/after.\",\"currency.code deve ser ISO 4217.\"],\"examples\":[\"{ localization: { number: { decimalSeparator: \\\",\\\", thousandsSeparator: \\\".\\\", negativeSign: \\\"-\\\", negativeSignPosition: \\\"before\\\" }, currency: { code: \\\"BRL\\\", symbol: \\\"R$\\\" } } }\"],\"antiPatterns\":[\"{ localization: { currency: { code: \\\"REAL\\\" } } }\"]},\"localization-formatting\":{\"id\":\"localization-formatting\",\"title\":\"Formatos Locais\",\"description\":\"Configuração de localization.formatting.*\",\"rules\":[\"percentageFormat e fileSizeFormat devem seguir padrao esperado.\",\"units deve mapear tipo -> unidade -> label.\"],\"examples\":[\"{ localization: { formatting: { percentageFormat: \\\"#0.00%\\\", fileSizeFormat: \\\"decimal\\\" } } }\"],\"antiPatterns\":[\"{ localization: { formatting: { percentageFormat: \\\"percent\\\" } } }\"]},\"localization-translations\":{\"id\":\"localization-translations\",\"title\":\"Traducoes\",\"description\":\"Configuração de localization.availableLocales e translations.*\",\"rules\":[\"availableLocales deve listar locales conhecidos.\",\"translations deve mapear locale -> chaves de texto.\"],\"examples\":[\"{ localization: { availableLocales: [\\\"pt-BR\\\", \\\"en-US\\\"], translations: { \\\"pt-BR\\\": { \\\"table.title\\\": \\\"Pedidos\\\" } } } }\"],\"antiPatterns\":[\"{ translations: \\\"pt-BR\\\" }\"]},\"data-cache\":{\"id\":\"data-cache\",\"title\":\"Cache de Dados\",\"description\":\"Configuração de data.cache.*\",\"rules\":[\"ttl e maxSize devem ser positivos.\",\"invalidationStrategy deve ser ttl/manual/on-update.\"],\"examples\":[\"{ data: { cache: { enabled: true, ttl: 600000, maxSize: 1000, invalidationStrategy: \\\"ttl\\\" } } }\"],\"antiPatterns\":[\"{ cache: { ttl: 0 } }\"]}}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/table-context-pack.ts",
          "contentHash": "18fc412dfd859c97b7b26637af96823702a63ac0ffdca7b775250f063c98f533",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 149,
          "chunkKind": "context_pack",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"aiConcepts\",\"aiConcepts\":{\"data-sync\":{\"id\":\"data-sync\",\"title\":\"Sincronizacao\",\"description\":\"Configuração de data.sync.*\",\"rules\":[\"interval deve ser em ms.\",\"deltaSync e autoSync devem ser boolean.\",\"conflictResolution deve ser client/server/manual.\"],\"examples\":[\"{ data: { sync: { autoSync: true, interval: 30000, deltaSync: true, conflictResolution: \\\"server\\\" } } }\"],\"antiPatterns\":[\"{ sync: { interval: -1 } }\"]},\"data-validation\":{\"id\":\"data-validation\",\"title\":\"Validacao de Dados\",\"description\":\"Configuração de data.validation.* e rules[]\",\"rules\":[\"rules[].type deve ser required/format/range/custom.\",\"params deve conter dados compatíveis com o tipo.\",\"showInlineErrors deve ser boolean.\"],\"examples\":[\"{ data: { validation: { clientSide: true, serverSide: false, showInlineErrors: true, rules: [{ field: \\\"email\\\", type: \\\"format\\\", params: { format: \\\"email\\\" }, message: \\\"Email invalido\\\" }] } } }\"],\"antiPatterns\":[\"{ validation: { rules: [{ type: \\\"regex\\\" }] } }\"]},\"data-transformations\":{\"id\":\"data-transformations\",\"title\":\"Transformacoes de Dados\",\"description\":\"Configuração de data.transformations[]\",\"rules\":[\"transform deve ser uma string suportada pelo sistema, não funcao JS.\",\"applyTo deve ser display/data/both.\"],\"examples\":[\"{ data: { transformations: [{ id: \\\"t1\\\", field: \\\"amount\\\", type: \\\"format\\\", transform: \\\"currency\\\", applyTo: \\\"display\\\" }] } }\"],\"antiPatterns\":[\"{ transformations: [{ transform: \\\"row => row.amount\\\" }] }\"]},\"data-polling\":{\"id\":\"data-polling\",\"title\":\"Polling\",\"description\":\"Configuração de data.polling.*\",\"rules\":[\"interval deve ser em ms e razoavel.\",\"exponentialBackoff deve ser boolean.\"],\"examples\":[\"{ data: { polling: { enabled: true, interval: 30000, onlyWhenActive: true, exponentialBackoff: true } } }\"],\"antiPatterns\":[\"{ polling: { interval: 100 } }\"]},\"performance-virtualization\":{\"id\":\"performance-virtualization\",\"title\":\"Performance Virtualization\",\"description\":\"Configuração de performance.virtualization.*\",\"rules\":[\"itemHeight deve ser informado quando enabled.\",\"strategy deve ser fixed/dynamic.\"],\"examples\":[\"{ performance: { virtualization: { enabled: true, itemHeight: 48 } } }\"],\"antiPatterns\":[\"{ performance: { virtualization: { enabled: true } } }\"]},\"performance-debounce\":{\"id\":\"performance-debounce\",\"title\":\"Performance Debounce\",\"description\":\"Configuração de performance.debounce.*\",\"rules\":[\"valores devem estar em ms (ex.: 200-500).\"],\"examples\":[\"{ performance: { debounce: { search: 300, filter: 300, resize: 200, scroll: 200 } } }\"],\"antiPatterns\":[\"{ debounce: { search: -1 } }\"]},\"performance-memory\":{\"id\":\"performance-memory\",\"title\":\"Performance Memory\",\"description\":\"Configuração de performance.memory.*\",\"rules\":[\"maxRows deve limitar o volume em memoria.\",\"cleanupInterval deve ser em ms.\"],\"examples\":[\"{ performance: { memory: { maxRows: 5000, autoCleanup: true, cleanupInterval: 60000 } } }\"],\"antiPatterns\":[\"{ memory: { maxRows: 0 } }\"]},\"performance-rendering\":{\"id\":\"performance-rendering\",\"title\":\"Performance Rendering\",\"description\":\"Configuração de performance.rendering.*\",\"rules\":[\"batchUpdates true requer batchSize coerente.\",\"optimizeReRenders melhora atualizações frequentes.\"],\"examples\":[\"{ performance: { rendering: { useRAF: true, batchUpdates: true, batchSize: 50, optimizeReRenders: true } } }\"],\"antiPatterns\":[\"{ rendering: { batchSize: 0 } }\"]},\"performance-lazy-loading\":{\"id\":\"performance-lazy-loading\",\"title\":\"Performance Lazy Loading\",\"description\":\"Configuração de performance.lazyLoading.*\",\"rules\":[\"threshold deve ser numero positivo.\",\"components e images devem ser boolean.\"],\"examples\":[\"{ performance: { lazyLoading: { images: true, components: true, threshold: 200 } } }\"],\"antiPatterns\":[\"{ lazyLoading: { threshold: -1 } }\"]},\"accessibility-core\":{\"id\":\"accessibility-core\",\"title\":\"Acessibilidade\",\"description\":\"Configuração base de accessibility.*\",\"rules\":[\"enabled deve ser true em apps com requisitos a11y.\",\"reduceMotion deve desativar animacoes nao essenciais.\"],\"examples\":[\"{ accessibility: { enabled: true, reduceMotion: true } }\"],\"antiPatterns\":[\"{ accessibility: { enabled: true, reduceMotion: \\\"yes\\\" } }\"]},\"accessibility-announcements\":{\"id\":\"accessibility-announcements\",\"title\":\"Acessibilidade Anuncios\",\"description\":\"Configuração de accessibility.announcements.*\",\"rules\":[\"dataChanges, userActions e loadingStates devem ser boolean.\",\"liveRegion deve ser polite ou assertive.\"],\"examples\":[\"{ accessibility: { announcements: { dataChanges: true, userActions: true, loadingStates: true, liveRegion: \\\"polite\\\" } } }\"],\"antiPatterns\":[\"{ announcements: { liveRegion: \\\"loud\\\" } }\"]},\"accessibility-keyboard\":{\"id\":\"accessibility-keyboard\",\"title\":\"Acessibilidade Teclado\",\"description\":\"Configuração de accessibility.keyboard.*\",\"rules\":[\"tabNavigation e arrowNavigation devem ser boolean.\",\"shortcuts e skipLinks devem ser boolean.\",\"focusTrap deve ser boolean.\"],\"examples\":[\"{ accessibility: { keyboard: { tabNavigation: true, arrowNavigation: true, shortcuts: true, skipLinks: true, focusTrap: false } } }\"],\"antiPatterns\":[\"{ keyboard: { tabNavigation: \\\"yes\\\" } }\"]},\"accessibility-aria-labels\":{\"id\":\"accessibility-aria-labels\",\"title\":\"Acessibilidade ARIA\",\"description\":\"Configuração de accessibility.ariaLabels.*\",\"rules\":[\"ariaLabels deve mapear chaves conhecidas para textos curtos.\"],\"examples\":[\"{ accessibility: { ariaLabels: { table: \\\"Tabela de pedidos\\\" } } }\"],\"antiPatterns\":[\"{ ariaLabels: { table: \\\"\\\" } }\"]},\"theme-core\":{\"id\":\"theme-core\",\"title\":\"Tema Base\",\"description\":\"Configuração de theme.primary/secondary/darkMode.\",\"rules\":[\"primary e secondary devem ser cores validas (hex ou token).\",\"darkMode deve ser boolean.\"],\"examples\":[\"{ theme: { primary: \\\"#1976d2\\\", secondary: \\\"#ff9800\\\" } }\"],\"antiPatterns\":[\"{ theme: { primary: \\\"blue\\\" } }\"]},\"theme-custom\":{\"id\":\"theme-custom\",\"title\":\"Tema Customizado\",\"description\":\"Configuração de theme.custom e theme.cssVariables.\",\"rules\":[\"cssVariables deve usar nomes CSS validos (ex.: --table-bg).\",\"custom deve ser mapa simples de tokens.\"],\"examples\":[\"{ theme: { custom: { headerBg: \\\"var(--md-sys-color-surface-container)\\\" }, cssVariables: { \\\"--table-bg\\\": \\\"var(--md-sys-color-surface)\\\" } } }\"],\"antiPatterns\":[\"{ theme: { cssVariables: { \\\"table-bg\\\": \\\"var(--md-sys-color-surface)\\\" } } }\"]},\"plugins\":{\"id\":\"plugins\",\"title\":\"Plugins\",\"description\":\"Configuração de plugins[].\",\"rules\":[\"plugins[].id, name e version sao obrigatorios.\",\"hooks deve mapear eventos para handlers conhecidos.\"],\"examples\":[\"{ plugins: [{ id: \\\"audit\\\", name: \\\"Audit Logger\\\", version: \\\"1.2.0\\\", enabled: true }] }\"],\"antiPatterns\":[\"{ plugins: [{ name: \\\"Audit\\\" }] }\"]},\"editor-extras\":{\"id\":\"editor-extras\",\"title\":\"Extras do Editor\",\"description\":\"Envelope de autoria usado pelo editor e pelo playground.\",\"rules\":[\"bindings.resourcePath deve ser path valido da API quando presente.\",\"config.meta.idField deve refletir a chave primaria quando configurado.\",\"bindings.horizontalScroll deve ser auto/wrap/none.\"],\"examples\":[\"{ kind: \\\"praxis.table.editor\\\", version: 1, config: { meta: { idField: \\\"employeeId\\\" }, columns: [] }, bindings: { resourcePath: \\\"/api/employees\\\", horizontalScroll: \\\"auto\\\" } }\"],\"antiPatterns\":[\"{ kind: \\\"praxis.table.editor\\\", version: 1, config: { columns: [] }, bindings: { horizontalScroll: \\\"left\\\" } }\"]}}}",
          "sourcePointer": "projects/praxis-table/src/lib/ai/table-context-pack.ts",
          "contentHash": "bfa5ac55c895bcf78657274b1e0c9528f69a5bcff077ce18c5e07ee12ca82793",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 150,
          "chunkKind": "recipe",
          "content": "{\"_comment\":\"Variant focused on row and bulk actions.\",\"templateMeta\":{\"variantId\":\"actions\",\"variantOf\":\"praxis-table\",\"registryKey\":\"praxis-table\",\"tags\":[\"actions\",\"bulk\"],\"useWhen\":\"user asks to add, remove, or adjust row/bulk actions\",\"examplePrompts\":[\"add a bulk delete action\",\"add a row action to open details\"]},\"meta\":{\"version\":\"2.0.0\",\"id\":\"table-recipe-full\",\"name\":\"Full Table Recipe\",\"description\":\"Kitchen sink config covering TableConfig v2\",\"tags\":[\"example\",\"full\",\"table\"],\"createdAt\":\"2024-01-01T00:00:00Z\",\"updatedAt\":\"2024-02-01T12:00:00Z\",\"author\":\"Praxis UI\",\"isTemplate\":true,\"derivedFrom\":\"base-template\",\"schemaId\":\"path:/api/orders#response\",\"serverHash\":\"hash-123\",\"idField\":\"id\",\"schemaContext\":{\"path\":\"/api/orders\",\"operation\":\"GET\",\"schemaType\":\"response\",\"internal\":false,\"tenant\":\"default\",\"locale\":\"en-US\"}},\"actions\":{\"row\":{\"enabled\":true,\"position\":\"end\",\"width\":\"64px\",\"sticky\":\"end\",\"actions\":[{\"id\":\"view\",\"label\":\"View\",\"icon\":\"visibility\",\"color\":\"primary\",\"disabled\":false,\"action\":\"viewItem\",\"tooltip\":\"View details\"},{\"id\":\"edit\",\"label\":\"Edit\",\"icon\":\"edit\",\"color\":\"accent\",\"action\":\"editItem\",\"tooltip\":\"Edit item\",\"visibleWhen\":\"canEdit\"},{\"id\":\"delete\",\"label\":\"Delete\",\"icon\":\"delete\",\"color\":\"warn\",\"action\":\"deleteItem\",\"tooltip\":\"Delete item\",\"requiresConfirmation\":true,\"separator\":true,\"autoDelete\":true,\"deleteEndpoint\":\"/api/orders/{id}\"}],\"display\":\"menu\",\"trigger\":\"click\",\"menuIcon\":\"more_vert\",\"menuButtonColor\":\"basic\",\"header\":{\"label\":\"Actions\",\"icon\":\"bolt\",\"tooltip\":\"Row actions\",\"align\":\"center\"},\"maxVisibleActions\":3,\"behavior\":{\"enabled\":true,\"maxInline\":{\"xs\":1,\"sm\":2,\"md\":3,\"lg\":4},\"autoStrategy\":\"breakpoints\"}},\"bulk\":{\"enabled\":true,\"position\":\"toolbar\",\"actions\":[{\"id\":\"bulk-delete\",\"label\":\"Delete\",\"icon\":\"delete\",\"color\":\"warn\",\"action\":\"bulkDelete\",\"requiresConfirmation\":true,\"minSelections\":2,\"maxSelections\":100,\"autoDelete\":true,\"deleteEndpoint\":\"/api/orders/bulk-delete\"}],\"floating\":{\"position\":\"bottom-right\",\"hideWhenEmpty\":true}},\"context\":{\"enabled\":true,\"actions\":[{\"id\":\"context-copy\",\"label\":\"Copy\",\"icon\":\"content_copy\",\"action\":\"copyCell\"},{\"id\":\"context-history\",\"label\":\"History\",\"icon\":\"history\",\"action\":\"openHistory\",\"separator\":true,\"visibleWhen\":\"canViewHistory\"}],\"trigger\":\"right-click\"},\"confirmations\":{\"default\":{\"title\":\"Confirm action\",\"message\":\"Are you sure you want to continue?\",\"confirmText\":\"Confirm\",\"cancelText\":\"Cancel\"},\"specific\":{\"deleteItem\":{\"title\":\"Delete order\",\"message\":\"This action cannot be undone.\",\"confirmText\":\"Delete\"}}}}}",
          "sourcePointer": "examples/ai-recipes/praxis-table.actions.json",
          "contentHash": "9f0371ce4e30a8f00b5567d2c3b05d1d99ffd293251911d240ab44afa222c158",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 151,
          "chunkKind": "recipe",
          "content": "{\"_comment\":\"Variant focused on behavior settings (pagination, sorting, filtering, selection).\",\"templateMeta\":{\"variantId\":\"behavior\",\"variantOf\":\"praxis-table\",\"registryKey\":\"praxis-table\",\"tags\":[\"behavior\",\"pagination\",\"sorting\",\"filtering\"],\"useWhen\":\"user asks about pagination, sorting, filtering, or selection behavior\",\"examplePrompts\":[\"enable server side pagination with page size 50\",\"turn on multi sort\"]},\"meta\":{\"version\":\"2.0.0\",\"id\":\"table-recipe-full\",\"name\":\"Full Table Recipe\",\"description\":\"Kitchen sink config covering TableConfig v2\",\"tags\":[\"example\",\"full\",\"table\"],\"createdAt\":\"2024-01-01T00:00:00Z\",\"updatedAt\":\"2024-02-01T12:00:00Z\",\"author\":\"Praxis UI\",\"isTemplate\":true,\"derivedFrom\":\"base-template\",\"schemaId\":\"path:/api/orders#response\",\"serverHash\":\"hash-123\",\"idField\":\"id\",\"schemaContext\":{\"path\":\"/api/orders\",\"operation\":\"GET\",\"schemaType\":\"response\",\"internal\":false,\"tenant\":\"default\",\"locale\":\"en-US\"}},\"behavior\":{\"pagination\":{\"enabled\":true,\"pageSize\":25,\"pageSizeOptions\":[10,25,50,100],\"showFirstLastButtons\":true,\"showPageNumbers\":true,\"showPageInfo\":true,\"position\":\"bottom\",\"style\":\"advanced\",\"totalItems\":1000,\"strategy\":\"server\",\"advanced\":{\"showJumpToPage\":true,\"allowCustomPageSize\":true,\"maxPageSize\":200}},\"sorting\":{\"enabled\":true,\"defaultSort\":{\"column\":\"createdAt\",\"direction\":\"desc\"},\"multiSort\":true,\"strategy\":\"server\",\"showSortIndicators\":true,\"indicatorPosition\":\"end\",\"allowClearSort\":true,\"advanced\":{\"_comment\":\"customComparators expects functions at runtime; JSON uses string placeholders.\",\"customComparators\":{\"amount\":\"(a: number, b: number) => a - b\"},\"preserveSort\":true}},\"filtering\":{\"enabled\":true,\"columnFilters\":{\"enabled\":true,\"defaultType\":\"text\",\"position\":\"subheader\"},\"advancedFilters\":{\"enabled\":true,\"queryBuilder\":true,\"savePresets\":true,\"settings\":{\"alwaysVisibleFields\":[\"status\",\"priority\"],\"showAdvanced\":true,\"allowSaveTags\":true,\"changeDebounceMs\":300,\"mode\":\"filter\"}},\"strategy\":\"server\",\"debounceTime\":300},\"selection\":{\"enabled\":true,\"type\":\"multiple\",\"mode\":\"checkbox\",\"allowSelectAll\":true,\"checkboxPosition\":\"start\",\"persistSelection\":true,\"persistOnDataUpdate\":true,\"maxSelections\":200,\"visual\":{\"highlightSelected\":true,\"highlightColor\":\"#e0f7fa\",\"showSelectionCount\":true}},\"interaction\":{\"rowClick\":{\"enabled\":true,\"action\":\"custom\",\"customAction\":\"openDetail\"},\"rowDoubleClick\":{\"enabled\":true,\"action\":\"edit\",\"customAction\":\"openEditor\"},\"hover\":{\"enabled\":true,\"highlightRow\":true,\"showActionsOnHover\":true},\"keyboard\":{\"enabled\":true,\"arrowNavigation\":true,\"spaceSelection\":true,\"customShortcuts\":{\"Ctrl+F\":\"focusFilter\",\"Ctrl+Shift+R\":\"refreshData\"}}},\"loading\":{\"type\":\"skeleton\",\"position\":\"replace\",\"text\":\"Loading data...\",\"showForQuickOperations\":false,\"delay\":150,\"skeleton\":{\"rows\":8,\"animated\":true,\"baseColor\":\"#eeeeee\",\"highlightColor\":\"#f5f5f5\"}},\"emptyState\":{\"message\":\"No records found\",\"icon\":\"inbox\",\"image\":\"https://example.com/empty.png\",\"actions\":[{\"label\":\"Create\",\"action\":\"createItem\",\"icon\":\"add\",\"primary\":true}],\"customTemplate\":\"empty-state-template\",\"contexts\":{\"initial\":{\"message\":\"Load data to get started\"},\"filtered\":{\"message\":\"No matches for current filters\"},\"searched\":{\"message\":\"No results for your search\"}}},\"virtualization\":{\"enabled\":true,\"itemHeight\":48,\"bufferSize\":10,\"minContainerHeight\":320,\"strategy\":\"fixed\"},\"resizing\":{\"enabled\":true,\"minColumnWidth\":80,\"maxColumnWidth\":360,\"autoFit\":false,\"persistWidths\":true},\"dragging\":{\"columns\":true,\"rows\":false,\"showDragIndicator\":true,\"columnDropZones\":[\"left\",\"right\"]}}}",
          "sourcePointer": "examples/ai-recipes/praxis-table.behavior.json",
          "contentHash": "213fa055fb2ee17f38bea0453e40614f9885fae066bd6827d87edfb7c7378fbe",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 152,
          "chunkKind": "recipe",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"_comment\",\"_comment\":\"Variant focused on columns and renderers for Praxis Table.\"}",
          "sourcePointer": "examples/ai-recipes/praxis-table.columns.json",
          "contentHash": "6c7fa83294e2ec771a601273d8471ca515025be8d1feecd6e80249898078f257",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 153,
          "chunkKind": "recipe",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"templateMeta\",\"templateMeta\":{\"variantId\":\"columns\",\"variantOf\":\"praxis-table\",\"registryKey\":\"praxis-table\",\"tags\":[\"columns\",\"renderers\"],\"useWhen\":\"user asks to add, remove, or adjust columns\",\"examplePrompts\":[\"add a status column with badge renderer\",\"hide the internal code column\"]}}",
          "sourcePointer": "examples/ai-recipes/praxis-table.columns.json",
          "contentHash": "5bc28d8a86f26c0420e78591c25b94547bd4e4e4e3ff445186e017160cd58cb7",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 154,
          "chunkKind": "recipe",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"meta\",\"meta\":{\"version\":\"2.0.0\",\"id\":\"table-recipe-full\",\"name\":\"Full Table Recipe\",\"description\":\"Kitchen sink config covering TableConfig v2\",\"tags\":[\"example\",\"full\",\"table\"],\"createdAt\":\"2024-01-01T00:00:00Z\",\"updatedAt\":\"2024-02-01T12:00:00Z\",\"author\":\"Praxis UI\",\"isTemplate\":true,\"derivedFrom\":\"base-template\",\"schemaId\":\"path:/api/orders#response\",\"serverHash\":\"hash-123\",\"idField\":\"id\",\"schemaContext\":{\"path\":\"/api/orders\",\"operation\":\"GET\",\"schemaType\":\"response\",\"internal\":false,\"tenant\":\"default\",\"locale\":\"en-US\"}}}",
          "sourcePointer": "examples/ai-recipes/praxis-table.columns.json",
          "contentHash": "4b4795e7a00553dbc9e9edae367a831d37cf58fbbf573819368d0f5db68649c5",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 155,
          "chunkKind": "recipe",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"columns\",\"columns\":[{\"field\":\"id\",\"header\":\"ID\",\"type\":\"string\",\"width\":\"80px\",\"visible\":true,\"sortable\":true,\"filterable\":true,\"resizable\":true,\"sticky\":\"start\",\"align\":\"left\",\"order\":0,\"sortField\":\"id\",\"style\":\"font-weight: 600;\",\"headerStyle\":\"text-transform: uppercase;\",\"cssClass\":\"col-id\",\"headerCssClass\":\"col-id-header\"},{\"field\":\"createdAt\",\"header\":\"Created At\",\"type\":\"date\",\"width\":\"160px\",\"sortable\":true,\"filterable\":true,\"align\":\"left\",\"order\":1,\"format\":\"yyyy-MM-dd HH:mm\"},{\"field\":\"status\",\"header\":\"Status\",\"type\":\"string\",\"sortable\":true,\"filterable\":true,\"valueMapping\":{\"ACTIVE\":\"Active\",\"INACTIVE\":\"Inactive\",\"PENDING\":\"Pending\"},\"renderer\":{\"typeExpr\":{\"expr\":\"statusRenderer\"},\"type\":\"badge\",\"badge\":{\"text\":\"Status\",\"textField\":\"statusLabel\",\"color\":\"success\",\"variant\":\"filled\",\"icon\":\"check\"}},\"conditionalRenderers\":[{\"condition\":{\"==\":[{\"var\":\"status\"},\"PENDING\"]},\"renderer\":{\"type\":\"chip\",\"chip\":{\"text\":\"Pending\",\"textField\":\"statusLabel\",\"color\":\"accent\",\"variant\":\"outlined\",\"icon\":\"hourglass_empty\"}},\"description\":\"Pending state\",\"enabled\":true},{\"condition\":{\"==\":[{\"var\":\"status\"},\"INACTIVE\"]},\"renderer\":{\"type\":\"badge\",\"badge\":{\"text\":\"Inactive\",\"textField\":\"statusLabel\",\"color\":\"warn\",\"variant\":\"soft\",\"icon\":\"block\"}},\"description\":\"Inactive state\",\"enabled\":true},{\"condition\":{\"!!\":[{\"var\":\"avatarUrl\"}]},\"renderer\":{\"type\":\"avatar\",\"avatar\":{\"src\":\"https://example.com/avatar-conditional.png\",\"srcField\":\"avatarUrl\",\"alt\":\"Avatar\",\"altField\":\"name\",\"initialsField\":\"name\",\"shape\":\"circle\",\"size\":28,\"backgroundColor\":\"#D32F2F\",\"textColor\":\"#FFFFFF\"}},\"description\":\"Avatar override\",\"enabled\":true},{\"condition\":{\"!=\":[{\"var\":\"progressPercent\"},null]},\"renderer\":{\"type\":\"progress\",\"progress\":{\"valueExpr\":\"progressPercent\",\"color\":\"accent\",\"showLabel\":false}},\"description\":\"Progress override\",\"enabled\":true},{\"condition\":{\"!=\":[{\"var\":\"rating\"},null]},\"renderer\":{\"type\":\"rating\",\"rating\":{\"valueExpr\":\"rating\",\"max\":5,\"size\":\"small\",\"readonly\":true,\"ariaLabel\":\"Status rating\",\"color\":\"gold\",\"outlineColor\":\"#bdbdbd\"}},\"description\":\"Rating override\",\"enabled\":true},{\"condition\":{\"!=\":[{\"var\":\"isActive\"},null]},\"renderer\":{\"type\":\"toggle\",\"toggle\":{\"stateExpr\":\"isActive\",\"disabledCondition\":\"locked == true\",\"ariaLabel\":\"Toggle status\",\"action\":{\"id\":\"toggle-status\",\"payloadExpr\":\"{ id: id, active: !isActive }\"}}},\"description\":\"Toggle override\",\"enabled\":true},{\"condition\":{\"==\":[{\"var\":\"status\"},\"COMPOSED\"]},\"renderer\":{\"type\":\"compose\",\"compose\":{\"items\":[{\"type\":\"icon\",\"icon\":{\"name\":\"info\"}},{\"type\":\"chip\",\"chip\":{\"textField\":\"statusLabel\",\"color\":\"accent\"}}],\"layout\":{\"direction\":\"row\",\"gap\":6}}},\"description\":\"Compose override\",\"enabled\":true}],\"conditionalStyles\":[{\"condition\":{\"==\":[{\"var\":\"status\"},\"INACTIVE\"]},\"cssClass\":\"status-inactive\",\"style\":{\"color\":\"#d32f2f\",\"fontWeight\":\"600\"},\"description\":\"Inactive style\"}],\"_styleRulesState\":{\"version\":1,\"rules\":[\"status\"]},\"_originalApiType\":\"string\",\"_isApiField\":true},{\"field\":\"priority\",\"header\":\"Priority\",\"type\":\"string\",\"renderer\":{\"type\":\"chip\",\"chip\":{\"text\":\"Priority\",\"textField\":\"priorityLabel\",\"color\":\"warn\",\"icon\":\"priority_high\",\"variant\":\"filled\"}}},{\"field\":\"amount\",\"header\":\"Amount\",\"type\":\"currency\",\"width\":\"120px\",\"align\":\"right\",\"sortable\":true,\"filterable\":true,\"format\":\"USD|symbol|2\"},{\"field\":\"discountRate\",\"header\":\"Discount\",\"type\":\"percentage\",\"width\":\"110px\",\"align\":\"right\",\"format\":\"1.2-2\"},{\"field\":\"score\",\"header\":\"Score\",\"type\":\"number\",\"align\":\"right\",\"format\":\"1.0-0\",\"_generatedValueGetter\":\"score = weight * value\",\"_originalApiType\":\"decimal\",\"_isApiField\":false},{\"field\":\"profile\",\"header\":\"Profile\",\"type\":\"custom\",\"renderer\":{\"type\":\"avatar\",\"avatar\":{\"src\":\"https://example.com/avatar.png\",\"srcField\":\"avatarUrl\",\"alt\":\"Avatar\",\"altField\":\"name\",\"initialsField\":\"name\",\"shape\":\"circle\",\"size\":32,\"backgroundColor\":\"#E3F2FD\",\"textColor\":\"#0D47A1\"}}},{\"field\":\"progress\",\"header\":\"Progress\",\"type\":\"number\",\"renderer\":{\"type\":\"progress\",\"progress\":{\"valueExpr\":\"progressPercent\",\"color\":\"primary\",\"showLabel\":true}}},{\"field\":\"rating\",\"header\":\"Rating\",\"type\":\"number\",\"renderer\":{\"type\":\"rating\",\"rating\":{\"valueExpr\":\"rating\",\"max\":5,\"color\":\"gold\",\"outlineColor\":\"#bdbdbd\",\"size\":\"small\",\"ariaLabel\":\"Rating\",\"readonly\":true}}},{\"field\":\"active\",\"header\":\"Active\",\"type\":\"boolean\",\"renderer\":{\"type\":\"toggle\",\"toggle\":{\"stateExpr\":\"active\",\"disabledCondition\":\"locked == true\",\"ariaLabel\":\"Toggle active\",\"action\":{\"id\":\"toggle-active\",\"payloadExpr\":\"{ id: id, active: !active }\"}}}},{\"field\":\"profileLink\",\"header\":\"Profile Link\",\"type\":\"string\",\"renderer\":{\"type\":\"link\",\"link\":{\"text\":\"View profile\",\"textField\":\"name\",\"href\":\"https://example.com/profile\",\"hrefField\":\"profileUrl\",\"target\":\"_blank\",\"rel\":\"noopener\"}}},{\"field\":\"thumbnail\",\"header\":\"Thumb\",\"type\":\"custom\",\"renderer\":{\"type\":\"image\",\"image\":{\"src\":\"https://example.com/thumb.png\",\"srcField\":\"thumbnailUrl\",\"alt\":\"Thumbnail\",\"altField\":\"name\",\"width\":32,\"height\":32,\"shape\":\"rounded\",\"fit\":\"cover\",\"lazy\":true}}},{\"field\":\"statusIcon\",\"header\":\"Status Icon\",\"type\":\"custom\",\"renderer\":{\"type\":\"icon\",\"icon\":{\"name\":\"check_circle\",\"nameField\":\"statusIcon\",\"color\":\"success\",\"size\":18,\"ariaLabel\":\"Status icon\"}}},{\"field\":\"actionButton\",\"header\":\"Action\",\"type\":\"custom\",\"renderer\":{\"type\":\"button\",\"button\":{\"label\":\"Edit\",\"labelField\":\"editLabel\",\"icon\":\"edit\",\"color\":\"primary\",\"variant\":\"outlined\",\"size\":\"sm\",\"ariaLabel\":\"Edit row\",\"disabledCondition\":\"locked == true\",\"action\":{\"id\":\"edit-row\",\"payloadExpr\":\"{ id: id }\"}}}},{\"field\":\"menuActions\",\"header\":\"Menu\",\"type\":\"custom\",\"renderer\":{\"type\":\"menu\",\"menu\":{\"itemsExpr\":\"menuItems\",\"ariaLabel\":\"Row menu\"}}},{\"field\":\"notes\",\"header\":\"Notes\",\"type\":\"string\",\"renderer\":{\"type\":\"html\",\"html\":{\"template\":\"<strong>[[notes]]</strong>\",\"sanitize\":\"strict\",\"emptyFallback\":\"None\"}}},{\"field\":\"composed\",\"header\":\"Composed\",\"type\":\"custom\",\"renderer\":{\"type\":\"compose\",\"compose\":{\"items\":[{\"type\":\"icon\",\"icon\":{\"name\":\"info\",\"nameField\":\"iconName\",\"color\":\"primary\",\"size\":16,\"ariaLabel\":\"Info\"}},{\"type\":\"image\",\"image\":{\"src\":\"https://example.com/thumb.png\",\"srcField\":\"thumbnailUrl\",\"alt\":\"Thumbnail\",\"altField\":\"name\",\"width\":20,\"height\":20,\"shape\":\"circle\",\"fit\":\"cover\",\"lazy\":true}},{\"type\":\"badge\",\"badge\":{\"text\":\"Status\",\"textField\":\"status\",\"color\":\"info\",\"variant\":\"soft\",\"icon\":\"info\"}},{\"type\":\"link\",\"link\":{\"text\":\"Details\",\"textField\":\"detailLabel\",\"href\":\"https://example.com/orders\",\"hrefField\":\"detailUrl\",\"target\":\"_self\",\"rel\":\"noopener\"}},{\"type\":\"button\",\"button\":{\"label\":\"Open\",\"labelField\":\"actionLabel\",\"icon\":\"open_in_new\",\"color\":\"primary\",\"variant\":\"text\",\"size\":\"sm\",\"disabledCondition\":\"locked == true\",\"action\":{\"id\":\"open-detail\",\"payloadExpr\":\"{ id: id }\"}}},{\"type\":\"chip\",\"chip\":{\"text\":\"Tag\",\"textField\":\"tagLabel\",\"color\":\"accent\",\"variant\":\"outlined\",\"icon\":\"label\"}},{\"type\":\"progress\",\"progress\":{\"valueExpr\":\"progressPercent\",\"color\":\"accent\",\"showLabel\":false}},{\"type\":\"avatar\",\"avatar\":{\"src\":\"https://example.com/avatar-mini.png\",\"srcField\":\"avatarUrl\",\"alt\":\"Avatar\",\"altField\":\"name\",\"initialsField\":\"name\",\"shape\":\"circle\",\"size\":24,\"backgroundColor\":\"#E3F2FD\",\"textColor\":\"#0D47A1\"}},{\"type\":\"toggle\",\"toggle\":{\"stateExpr\":\"active\",\"disabledCondition\":\"locked == true\",\"action\":{\"id\":\"toggle-active\",\"payloadExpr\":\"{ id: id, active: !active }\"}}},{\"type\":\"menu\",\"menu\":{\"itemsExpr\":\"menuItems\",\"ariaLabel\":\"Inline menu\"}},{\"type\":\"rating\",\"rating\":{\"valueExpr\":\"rating\",\"max\":5,\"color\":\"gold\",\"outlineColor\":\"#bdbdbd\",\"size\":\"small\",\"readonly\":true,\"ariaLabel\":\"Rating\"}},{\"type\":\"html\",\"html\":{\"template\":\"<em>[[tagline]]</em>\",\"sanitize\":\"basic\",\"emptyFallback\":\"-\"}}],\"layout\":{\"direction\":\"row\",\"gap\":8,\"align\":\"center\",\"wrap\":true,\"ellipsis\":true}}}},{\"field\":\"internalCode\",\"header\":\"Internal Code\",\"type\":\"string\",\"visible\":false}]}",
          "sourcePointer": "examples/ai-recipes/praxis-table.columns.json",
          "contentHash": "8c08552310a5473de35b73f99aaa565203adbb44748edc44db90872846dbb584",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 156,
          "chunkKind": "recipe",
          "content": "{\"_comment\":\"Variant focused on computed columns and conditional styling.\",\"templateMeta\":{\"variantId\":\"computed-columns\",\"variantOf\":\"praxis-table\",\"registryKey\":\"praxis-table\",\"tags\":[\"computed\",\"columns\",\"kpi\",\"finance\"],\"useWhen\":\"user asks to add calculated columns, totals, or KPI columns\",\"examplePrompts\":[\"add a total column = quantity * price\",\"create a margin % column\",\"highlight rows when computed delay is greater than zero\"]},\"meta\":{\"version\":\"2.0.0\",\"id\":\"table-recipe-computed-columns\",\"name\":\"Computed Columns Recipe\",\"description\":\"Focused template with calculated columns and conditional styles\",\"tags\":[\"computed\",\"columns\",\"template\"],\"createdAt\":\"2024-03-01T00:00:00Z\",\"updatedAt\":\"2024-03-01T00:00:00Z\",\"author\":\"Praxis UI\",\"isTemplate\":true},\"columns\":[{\"field\":\"quantity\",\"header\":\"Quantity\",\"type\":\"number\",\"align\":\"right\",\"sortable\":true,\"filterable\":true},{\"field\":\"price\",\"header\":\"Price\",\"type\":\"currency\",\"align\":\"right\",\"format\":\"BRL|symbol|2\",\"sortable\":true,\"filterable\":true},{\"field\":\"total\",\"header\":\"Total\",\"type\":\"currency\",\"align\":\"right\",\"computed\":{\"expression\":{\"*\":[{\"var\":\"quantity\"},{\"var\":\"price\"}]},\"outputType\":\"currency\",\"format\":\"BRL|symbol|2\",\"dependencies\":[\"quantity\",\"price\"]},\"conditionalStyles\":[{\"condition\":{\">\":[{\"var\":\"computed.total\"},1000]},\"style\":{\"color\":\"#2e7d32\",\"fontWeight\":\"600\"}}]},{\"field\":\"revenue\",\"header\":\"Revenue\",\"type\":\"number\",\"align\":\"right\",\"sortable\":true},{\"field\":\"cost\",\"header\":\"Cost\",\"type\":\"number\",\"align\":\"right\",\"sortable\":true},{\"field\":\"score\",\"header\":\"Score %\",\"type\":\"percentage\",\"align\":\"right\",\"computed\":{\"expression\":{\"/\":[{\"-\":[{\"var\":\"revenue\"},{\"var\":\"cost\"}]},{\"var\":\"cost\"}]},\"outputType\":\"percentage\",\"format\":\"1.1-1\",\"dependencies\":[\"revenue\",\"cost\"]}},{\"field\":\"delayDays\",\"header\":\"Delay (days)\",\"type\":\"number\",\"align\":\"right\",\"computed\":{\"expression\":{\"max\":[0,{\"var\":\"daysLate\"}]},\"outputType\":\"number\",\"format\":\"1.0-0\",\"dependencies\":[\"daysLate\"]},\"conditionalStyles\":[{\"condition\":{\">\":[{\"var\":\"computed.delayDays\"},0]},\"style\":{\"color\":\"#d32f2f\",\"fontWeight\":\"600\"}}]}],\"rowConditionalStyles\":[{\"condition\":{\">\":[{\"var\":\"computed.delayDays\"},0]},\"cssClass\":\"row--late\"}]}",
          "sourcePointer": "examples/ai-recipes/praxis-table.computed.json",
          "contentHash": "8bb13ed704772a09824d77f817b8b2f585a740b369efcb6d119106377fc39198",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 157,
          "chunkKind": "recipe",
          "content": "{\"_comment\":\"Template to format existing columns as currency without changing their type.\",\"templateMeta\":{\"variantId\":\"format-currency\",\"variantOf\":\"praxis-table\",\"registryKey\":\"praxis-table\",\"tags\":[\"format\",\"column\",\"currency\",\"money\",\"finance\"],\"useWhen\":\"user asks to format an existing column as currency, money, or specific monetary unit\",\"examplePrompts\":[\"format the price column as BRL\",\"show amount in USD with symbol\",\"display total as currency\"]},\"columns\":[{\"field\":\"price\",\"format\":\"BRL|symbol|2\",\"align\":\"right\"}]}",
          "sourcePointer": "examples/ai-recipes/praxis-table.format-currency.json",
          "contentHash": "7f7fb1149495b3e7a961a2f2b9f7f7658484dcf5cb2139f245f9bf212b352ff1",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 158,
          "chunkKind": "recipe",
          "content": "{\"_comment\":\"Template to format existing columns as date/time without changing their type.\",\"templateMeta\":{\"variantId\":\"format-date\",\"variantOf\":\"praxis-table\",\"registryKey\":\"praxis-table\",\"tags\":[\"format\",\"column\",\"date\",\"time\",\"datetime\"],\"useWhen\":\"user asks to format an existing column as date or time\",\"examplePrompts\":[\"format createdAt as dd/MM/yyyy\",\"show date with time\",\"display short date\"]},\"columns\":[{\"field\":\"createdAt\",\"format\":\"yyyy-MM-dd HH:mm\",\"align\":\"left\"}]}",
          "sourcePointer": "examples/ai-recipes/praxis-table.format-date.json",
          "contentHash": "06230a4b782e3fd456c2d5d32cb3b31161858f4a8c637e4e0a22f7d241b51303",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 159,
          "chunkKind": "recipe",
          "content": "{\"_comment\":\"Template to format existing columns as number/integer without changing their type.\",\"templateMeta\":{\"variantId\":\"format-number\",\"variantOf\":\"praxis-table\",\"registryKey\":\"praxis-table\",\"tags\":[\"format\",\"column\",\"number\",\"integer\",\"decimal\"],\"useWhen\":\"user asks to format an existing column as number, integer, or specific decimal places\",\"examplePrompts\":[\"format quantity as integer\",\"show weight with 3 decimal places\",\"display count without decimals\"]},\"columns\":[{\"field\":\"quantity\",\"format\":\"1.0-0\",\"align\":\"right\"}]}",
          "sourcePointer": "examples/ai-recipes/praxis-table.format-number.json",
          "contentHash": "0231ac96196c130a0c304f975207033e2304f7421e5b1821f473f2bbc1a859e2",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 160,
          "chunkKind": "recipe",
          "content": "{\"_comment\":\"Template to format existing columns as percentages without changing their type.\",\"templateMeta\":{\"variantId\":\"format-percentage\",\"variantOf\":\"praxis-table\",\"registryKey\":\"praxis-table\",\"tags\":[\"format\",\"column\",\"percentage\",\"ratio\"],\"useWhen\":\"user asks to format an existing column as percentage\",\"examplePrompts\":[\"format discount as percentage\",\"show rate with 2 decimal places %\"]},\"columns\":[{\"field\":\"rate\",\"format\":\"1.2-2\",\"align\":\"right\"}]}",
          "sourcePointer": "examples/ai-recipes/praxis-table.format-percentage.json",
          "contentHash": "ac8c2e7c5d9ca792c8421649cbebae0bbf66fefbf17f4d4ff207f548404adf97",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 161,
          "chunkKind": "recipe",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"templateMeta\",\"templateMeta\":{\"registryKey\":\"praxis-table\",\"defaultVariantId\":\"columns\",\"variants\":[{\"id\":\"columns\",\"registryKey\":\"praxis-table\",\"variantId\":\"columns\",\"aiDescription\":\"Columns and renderers focus.\",\"tags\":[\"columns\",\"renderers\"],\"useWhen\":\"user asks to add, remove, or adjust columns\",\"examplePrompts\":[\"add a status column with badge renderer\",\"hide the internal code column\"]},{\"id\":\"computed-columns\",\"registryKey\":\"praxis-table\",\"variantId\":\"computed-columns\",\"aiDescription\":\"Calculated columns, KPIs, and conditional styling based on computed values.\",\"tags\":[\"computed\",\"columns\",\"kpi\"],\"useWhen\":\"user asks to add calculated columns, totals, or KPI metrics\",\"examplePrompts\":[\"create a total column = quantity * price\",\"highlight rows when computed delay > 0\"]},{\"id\":\"behavior\",\"registryKey\":\"praxis-table\",\"variantId\":\"behavior\",\"aiDescription\":\"Pagination, sorting, filtering, selection.\",\"tags\":[\"behavior\",\"pagination\",\"sorting\",\"filtering\"],\"useWhen\":\"user asks about pagination, sorting, filtering, or selection behavior\",\"examplePrompts\":[\"enable server side pagination with page size 50\",\"turn on multi sort\"]},{\"id\":\"toolbar\",\"registryKey\":\"praxis-table\",\"variantId\":\"toolbar\",\"aiDescription\":\"Toolbar actions and quick commands.\",\"tags\":[\"toolbar\",\"actions\"],\"useWhen\":\"user asks to change toolbar, buttons, or quick actions\",\"examplePrompts\":[\"add export buttons to the toolbar\",\"change the toolbar title\"]},{\"id\":\"table-pagination\",\"registryKey\":\"praxis-table\",\"variantId\":\"table-pagination\",\"aiDescription\":\"Focused pagination settings to reduce context size.\",\"tags\":[\"pagination\",\"performance\"],\"useWhen\":\"user asks to configure pagination only\",\"examplePrompts\":[\"enable pagination\",\"set page size to 20\"]},{\"id\":\"table-actions\",\"registryKey\":\"praxis-table\",\"variantId\":\"table-actions\",\"aiDescription\":\"Focused row and bulk actions settings.\",\"tags\":[\"actions\",\"bulk\",\"row\"],\"useWhen\":\"user asks to configure table actions only\",\"examplePrompts\":[\"add delete action\",\"enable bulk actions\"]},{\"id\":\"table-export\",\"registryKey\":\"praxis-table\",\"variantId\":\"table-export\",\"aiDescription\":\"Configuration for data export (Excel, PDF, CSV).\",\"tags\":[\"export\",\"download\",\"excel\",\"pdf\"],\"useWhen\":\"user asks about export settings\",\"examplePrompts\":[\"enable excel export\",\"configure pdf landscape\"]},{\"id\":\"table-appearance\",\"registryKey\":\"praxis-table\",\"variantId\":\"table-appearance\",\"aiDescription\":\"Visual settings: density, borders, colors, striping.\",\"tags\":[\"appearance\",\"theme\",\"style\",\"density\"],\"useWhen\":\"user asks to change look and feel\",\"examplePrompts\":[\"make it compact\",\"add zebra striping\",\"hide borders\"]}]}}",
          "sourcePointer": "examples/ai-recipes/praxis-table.json",
          "contentHash": "2f36e4da119efa2d0994f9b6a701b3bde8a2bfbc732027cc5cb1cd290ddd83f5",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 162,
          "chunkKind": "recipe",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"meta\",\"meta\":{\"version\":\"2.0.0\",\"id\":\"table-recipe-full\",\"name\":\"Full Table Recipe\",\"description\":\"Kitchen sink config covering TableConfig v2\",\"tags\":[\"example\",\"full\",\"table\"],\"createdAt\":\"2024-01-01T00:00:00Z\",\"updatedAt\":\"2024-02-01T12:00:00Z\",\"author\":\"Praxis UI\",\"isTemplate\":true,\"derivedFrom\":\"base-template\",\"schemaId\":\"path:/api/orders#response\",\"serverHash\":\"hash-123\",\"idField\":\"id\",\"schemaContext\":{\"path\":\"/api/orders\",\"operation\":\"GET\",\"schemaType\":\"response\",\"internal\":false,\"tenant\":\"default\",\"locale\":\"en-US\"}}}",
          "sourcePointer": "examples/ai-recipes/praxis-table.json",
          "contentHash": "4b4795e7a00553dbc9e9edae367a831d37cf58fbbf573819368d0f5db68649c5",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 163,
          "chunkKind": "recipe",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"columns\",\"columns\":[{\"field\":\"id\",\"header\":\"ID\",\"type\":\"string\",\"width\":\"80px\",\"visible\":true,\"sortable\":true,\"filterable\":true,\"resizable\":true,\"sticky\":\"start\",\"align\":\"left\",\"order\":0,\"sortField\":\"id\",\"style\":\"font-weight: 600;\",\"headerStyle\":\"text-transform: uppercase;\",\"cssClass\":\"col-id\",\"headerCssClass\":\"col-id-header\"},{\"field\":\"createdAt\",\"header\":\"Created At\",\"type\":\"date\",\"width\":\"160px\",\"sortable\":true,\"filterable\":true,\"align\":\"left\",\"order\":1,\"format\":\"yyyy-MM-dd HH:mm\"},{\"field\":\"status\",\"header\":\"Status\",\"type\":\"string\",\"sortable\":true,\"filterable\":true,\"valueMapping\":{\"ACTIVE\":\"Active\",\"INACTIVE\":\"Inactive\",\"PENDING\":\"Pending\"},\"renderer\":{\"typeExpr\":{\"expr\":\"statusRenderer\"},\"type\":\"badge\",\"badge\":{\"text\":\"Status\",\"textField\":\"statusLabel\",\"color\":\"success\",\"variant\":\"filled\",\"icon\":\"check\"}},\"conditionalRenderers\":[{\"condition\":{\"==\":[{\"var\":\"status\"},\"PENDING\"]},\"renderer\":{\"type\":\"chip\",\"chip\":{\"text\":\"Pending\",\"textField\":\"statusLabel\",\"color\":\"accent\",\"variant\":\"outlined\",\"icon\":\"hourglass_empty\"}},\"description\":\"Pending state\",\"enabled\":true},{\"condition\":{\"==\":[{\"var\":\"status\"},\"INACTIVE\"]},\"renderer\":{\"type\":\"badge\",\"badge\":{\"text\":\"Inactive\",\"textField\":\"statusLabel\",\"color\":\"warn\",\"variant\":\"soft\",\"icon\":\"block\"}},\"description\":\"Inactive state\",\"enabled\":true},{\"condition\":{\"!!\":[{\"var\":\"avatarUrl\"}]},\"renderer\":{\"type\":\"avatar\",\"avatar\":{\"src\":\"https://example.com/avatar-conditional.png\",\"srcField\":\"avatarUrl\",\"alt\":\"Avatar\",\"altField\":\"name\",\"initialsField\":\"name\",\"shape\":\"circle\",\"size\":28,\"backgroundColor\":\"#D32F2F\",\"textColor\":\"#FFFFFF\"}},\"description\":\"Avatar override\",\"enabled\":true},{\"condition\":{\"!=\":[{\"var\":\"progressPercent\"},null]},\"renderer\":{\"type\":\"progress\",\"progress\":{\"valueExpr\":\"progressPercent\",\"color\":\"accent\",\"showLabel\":false}},\"description\":\"Progress override\",\"enabled\":true},{\"condition\":{\"!=\":[{\"var\":\"rating\"},null]},\"renderer\":{\"type\":\"rating\",\"rating\":{\"valueExpr\":\"rating\",\"max\":5,\"size\":\"small\",\"readonly\":true,\"ariaLabel\":\"Status rating\",\"color\":\"gold\",\"outlineColor\":\"#bdbdbd\"}},\"description\":\"Rating override\",\"enabled\":true},{\"condition\":{\"!=\":[{\"var\":\"isActive\"},null]},\"renderer\":{\"type\":\"toggle\",\"toggle\":{\"stateExpr\":\"isActive\",\"disabledCondition\":\"locked == true\",\"ariaLabel\":\"Toggle status\",\"action\":{\"id\":\"toggle-status\",\"payloadExpr\":\"{ id: id, active: !isActive }\"}}},\"description\":\"Toggle override\",\"enabled\":true},{\"condition\":{\"==\":[{\"var\":\"status\"},\"COMPOSED\"]},\"renderer\":{\"type\":\"compose\",\"compose\":{\"items\":[{\"type\":\"icon\",\"icon\":{\"name\":\"info\"}},{\"type\":\"chip\",\"chip\":{\"textField\":\"statusLabel\",\"color\":\"accent\"}}],\"layout\":{\"direction\":\"row\",\"gap\":6}}},\"description\":\"Compose override\",\"enabled\":true}],\"conditionalStyles\":[{\"condition\":{\"==\":[{\"var\":\"status\"},\"INACTIVE\"]},\"cssClass\":\"status-inactive\",\"style\":{\"color\":\"#d32f2f\",\"fontWeight\":\"600\"},\"description\":\"Inactive style\"}],\"_styleRulesState\":{\"version\":1,\"rules\":[\"status\"]},\"_originalApiType\":\"string\",\"_isApiField\":true},{\"field\":\"priority\",\"header\":\"Priority\",\"type\":\"string\",\"renderer\":{\"type\":\"chip\",\"chip\":{\"text\":\"Priority\",\"textField\":\"priorityLabel\",\"color\":\"warn\",\"icon\":\"priority_high\",\"variant\":\"filled\"}}},{\"field\":\"amount\",\"header\":\"Amount\",\"type\":\"currency\",\"width\":\"120px\",\"align\":\"right\",\"sortable\":true,\"filterable\":true,\"format\":\"USD|symbol|2\"},{\"field\":\"total\",\"header\":\"Total\",\"type\":\"currency\",\"align\":\"right\",\"computed\":{\"expression\":\"quantity * price\",\"outputType\":\"currency\",\"format\":\"BRL|symbol|2\",\"dependencies\":[\"quantity\",\"price\"]}},{\"field\":\"delayDays\",\"header\":\"Atraso (dias)\",\"type\":\"number\",\"align\":\"right\",\"computed\":{\"expression\":\"max(0, daysLate)\",\"outputType\":\"number\",\"format\":\"1.0-0\",\"dependencies\":[\"daysLate\"]}},{\"field\":\"discountRate\",\"header\":\"Discount\",\"type\":\"percentage\",\"width\":\"110px\",\"align\":\"right\",\"format\":\"1.2-2\"},{\"field\":\"score\",\"header\":\"Score\",\"type\":\"number\",\"align\":\"right\",\"format\":\"1.0-0\",\"_generatedValueGetter\":\"weight * value\",\"_originalApiType\":\"decimal\",\"_isApiField\":false},{\"field\":\"profile\",\"header\":\"Profile\",\"type\":\"custom\",\"renderer\":{\"type\":\"avatar\",\"avatar\":{\"src\":\"https://example.com/avatar.png\",\"srcField\":\"avatarUrl\",\"alt\":\"Avatar\",\"altField\":\"name\",\"initialsField\":\"name\",\"shape\":\"circle\",\"size\":32,\"backgroundColor\":\"#E3F2FD\",\"textColor\":\"#0D47A1\"}}},{\"field\":\"progress\",\"header\":\"Progress\",\"type\":\"number\",\"renderer\":{\"type\":\"progress\",\"progress\":{\"valueExpr\":\"progressPercent\",\"color\":\"primary\",\"showLabel\":true}}},{\"field\":\"rating\",\"header\":\"Rating\",\"type\":\"number\",\"renderer\":{\"type\":\"rating\",\"rating\":{\"valueExpr\":\"rating\",\"max\":5,\"color\":\"gold\",\"outlineColor\":\"#bdbdbd\",\"size\":\"small\",\"ariaLabel\":\"Rating\",\"readonly\":true}}},{\"field\":\"active\",\"header\":\"Active\",\"type\":\"boolean\",\"renderer\":{\"type\":\"toggle\",\"toggle\":{\"stateExpr\":\"active\",\"disabledCondition\":\"locked == true\",\"ariaLabel\":\"Toggle active\",\"action\":{\"id\":\"toggle-active\",\"payloadExpr\":\"{ id: id, active: !active }\"}}}},{\"field\":\"profileLink\",\"header\":\"Profile Link\",\"type\":\"string\",\"renderer\":{\"type\":\"link\",\"link\":{\"text\":\"View profile\",\"textField\":\"name\",\"href\":\"https://example.com/profile\",\"hrefField\":\"profileUrl\",\"target\":\"_blank\",\"rel\":\"noopener\"}}},{\"field\":\"thumbnail\",\"header\":\"Thumb\",\"type\":\"custom\",\"renderer\":{\"type\":\"image\",\"image\":{\"src\":\"https://example.com/thumb.png\",\"srcField\":\"thumbnailUrl\",\"alt\":\"Thumbnail\",\"altField\":\"name\",\"width\":32,\"height\":32,\"shape\":\"rounded\",\"fit\":\"cover\",\"lazy\":true}}},{\"field\":\"statusIcon\",\"header\":\"Status Icon\",\"type\":\"custom\",\"renderer\":{\"type\":\"icon\",\"icon\":{\"name\":\"check_circle\",\"nameField\":\"statusIcon\",\"color\":\"success\",\"size\":18,\"ariaLabel\":\"Status icon\"}}},{\"field\":\"actionButton\",\"header\":\"Action\",\"type\":\"custom\",\"renderer\":{\"type\":\"button\",\"button\":{\"label\":\"Edit\",\"labelField\":\"editLabel\",\"icon\":\"edit\",\"color\":\"primary\",\"variant\":\"outlined\",\"size\":\"sm\",\"ariaLabel\":\"Edit row\",\"disabledCondition\":\"locked == true\",\"action\":{\"id\":\"edit-row\",\"payloadExpr\":\"{ id: id }\"}}}},{\"field\":\"menuActions\",\"header\":\"Menu\",\"type\":\"custom\",\"renderer\":{\"type\":\"menu\",\"menu\":{\"itemsExpr\":\"menuItems\",\"ariaLabel\":\"Row menu\"}}},{\"field\":\"notes\",\"header\":\"Notes\",\"type\":\"string\",\"renderer\":{\"type\":\"html\",\"html\":{\"template\":\"<strong>[[notes]]</strong>\",\"sanitize\":\"strict\",\"emptyFallback\":\"None\"}}}]}",
          "sourcePointer": "examples/ai-recipes/praxis-table.json",
          "contentHash": "a6a00a624ff7c2de45dcc4cda43222b0cc59c6aadceb9a108e3edd174f8eca4e",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 164,
          "chunkKind": "recipe",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"columns\",\"columns\":[{\"field\":\"composed\",\"header\":\"Composed\",\"type\":\"custom\",\"renderer\":{\"type\":\"compose\",\"compose\":{\"items\":[{\"type\":\"icon\",\"icon\":{\"name\":\"info\",\"nameField\":\"iconName\",\"color\":\"primary\",\"size\":16,\"ariaLabel\":\"Info\"}},{\"type\":\"image\",\"image\":{\"src\":\"https://example.com/thumb.png\",\"srcField\":\"thumbnailUrl\",\"alt\":\"Thumbnail\",\"altField\":\"name\",\"width\":20,\"height\":20,\"shape\":\"circle\",\"fit\":\"cover\",\"lazy\":true}},{\"type\":\"badge\",\"badge\":{\"text\":\"Status\",\"textField\":\"status\",\"color\":\"info\",\"variant\":\"soft\",\"icon\":\"info\"}},{\"type\":\"link\",\"link\":{\"text\":\"Details\",\"textField\":\"detailLabel\",\"href\":\"https://example.com/orders\",\"hrefField\":\"detailUrl\",\"target\":\"_self\",\"rel\":\"noopener\"}},{\"type\":\"button\",\"button\":{\"label\":\"Open\",\"labelField\":\"actionLabel\",\"icon\":\"open_in_new\",\"color\":\"primary\",\"variant\":\"text\",\"size\":\"sm\",\"disabledCondition\":\"locked == true\",\"action\":{\"id\":\"open-detail\",\"payloadExpr\":\"{ id: id }\"}}},{\"type\":\"chip\",\"chip\":{\"text\":\"Tag\",\"textField\":\"tagLabel\",\"color\":\"accent\",\"variant\":\"outlined\",\"icon\":\"label\"}},{\"type\":\"progress\",\"progress\":{\"valueExpr\":\"progressPercent\",\"color\":\"accent\",\"showLabel\":false}},{\"type\":\"avatar\",\"avatar\":{\"src\":\"https://example.com/avatar-mini.png\",\"srcField\":\"avatarUrl\",\"alt\":\"Avatar\",\"altField\":\"name\",\"initialsField\":\"name\",\"shape\":\"circle\",\"size\":24,\"backgroundColor\":\"#E3F2FD\",\"textColor\":\"#0D47A1\"}},{\"type\":\"toggle\",\"toggle\":{\"stateExpr\":\"active\",\"disabledCondition\":\"locked == true\",\"action\":{\"id\":\"toggle-active\",\"payloadExpr\":\"{ id: id, active: !active }\"}}},{\"type\":\"menu\",\"menu\":{\"itemsExpr\":\"menuItems\",\"ariaLabel\":\"Inline menu\"}},{\"type\":\"rating\",\"rating\":{\"valueExpr\":\"rating\",\"max\":5,\"color\":\"gold\",\"outlineColor\":\"#bdbdbd\",\"size\":\"small\",\"readonly\":true,\"ariaLabel\":\"Rating\"}},{\"type\":\"html\",\"html\":{\"template\":\"<em>[[tagline]]</em>\",\"sanitize\":\"basic\",\"emptyFallback\":\"-\"}}],\"layout\":{\"direction\":\"row\",\"gap\":8,\"align\":\"center\",\"wrap\":true,\"ellipsis\":true}}}},{\"field\":\"internalCode\",\"header\":\"Internal Code\",\"type\":\"string\",\"visible\":false}]}",
          "sourcePointer": "examples/ai-recipes/praxis-table.json",
          "contentHash": "fdf3c2e78b3dcde53c30d0eef99e9de394cc0d15e701f4545c1c53d013f7930a",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 165,
          "chunkKind": "recipe",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"behavior\",\"behavior\":{\"pagination\":{\"enabled\":true,\"pageSize\":25,\"pageSizeOptions\":[10,25,50,100],\"showFirstLastButtons\":true,\"showPageNumbers\":true,\"showPageInfo\":true,\"position\":\"bottom\",\"style\":\"advanced\",\"totalItems\":1000,\"strategy\":\"server\",\"advanced\":{\"showJumpToPage\":true,\"allowCustomPageSize\":true,\"maxPageSize\":200}},\"sorting\":{\"enabled\":true,\"defaultSort\":{\"column\":\"createdAt\",\"direction\":\"desc\"},\"multiSort\":true,\"strategy\":\"server\",\"showSortIndicators\":true,\"indicatorPosition\":\"end\",\"allowClearSort\":true,\"advanced\":{\"_comment\":\"customComparators expects functions at runtime; JSON uses string placeholders.\",\"customComparators\":{\"amount\":\"(a: number, b: number) => a - b\"},\"preserveSort\":true}},\"filtering\":{\"enabled\":true,\"columnFilters\":{\"enabled\":true,\"defaultType\":\"text\",\"position\":\"subheader\"},\"advancedFilters\":{\"enabled\":true,\"queryBuilder\":true,\"savePresets\":true,\"settings\":{\"alwaysVisibleFields\":[\"status\",\"priority\"],\"showAdvanced\":true,\"allowSaveTags\":true,\"changeDebounceMs\":300,\"mode\":\"filter\"}},\"strategy\":\"server\",\"debounceTime\":300},\"selection\":{\"enabled\":true,\"type\":\"multiple\",\"mode\":\"checkbox\",\"allowSelectAll\":true,\"checkboxPosition\":\"start\",\"persistSelection\":true,\"persistOnDataUpdate\":true,\"maxSelections\":200,\"visual\":{\"highlightSelected\":true,\"highlightColor\":\"#e0f7fa\",\"showSelectionCount\":true}},\"interaction\":{\"rowClick\":{\"enabled\":true,\"action\":\"custom\",\"customAction\":\"openDetail\"},\"rowDoubleClick\":{\"enabled\":true,\"action\":\"edit\",\"customAction\":\"openEditor\"},\"hover\":{\"enabled\":true,\"highlightRow\":true,\"showActionsOnHover\":true},\"keyboard\":{\"enabled\":true,\"arrowNavigation\":true,\"spaceSelection\":true,\"customShortcuts\":{\"Ctrl+F\":\"focusFilter\",\"Ctrl+Shift+R\":\"refreshData\"}}},\"loading\":{\"type\":\"skeleton\",\"position\":\"replace\",\"text\":\"Loading data...\",\"showForQuickOperations\":false,\"delay\":150,\"skeleton\":{\"rows\":8,\"animated\":true,\"baseColor\":\"#eeeeee\",\"highlightColor\":\"#f5f5f5\"}},\"emptyState\":{\"message\":\"No records found\",\"icon\":\"inbox\",\"image\":\"https://example.com/empty.png\",\"actions\":[{\"label\":\"Create\",\"action\":\"createItem\",\"icon\":\"add\",\"primary\":true}],\"customTemplate\":\"empty-state-template\",\"contexts\":{\"initial\":{\"message\":\"Load data to get started\"},\"filtered\":{\"message\":\"No matches for current filters\"},\"searched\":{\"message\":\"No results for your search\"}}},\"virtualization\":{\"enabled\":true,\"itemHeight\":48,\"bufferSize\":10,\"minContainerHeight\":320,\"strategy\":\"fixed\"},\"resizing\":{\"enabled\":true,\"minColumnWidth\":80,\"maxColumnWidth\":360,\"autoFit\":false,\"persistWidths\":true},\"dragging\":{\"columns\":true,\"rows\":false,\"showDragIndicator\":true,\"columnDropZones\":[\"left\",\"right\"]}}}",
          "sourcePointer": "examples/ai-recipes/praxis-table.json",
          "contentHash": "cbb11ff4cae7214bdecf154228b21afb0705af399d8c2296190f228335bc72fd",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 166,
          "chunkKind": "recipe",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"appearance\",\"appearance\":{\"density\":\"comfortable\",\"borders\":{\"showRowBorders\":true,\"showColumnBorders\":false,\"showOuterBorder\":true,\"style\":\"solid\",\"width\":1,\"color\":\"#e0e0e0\",\"specific\":{\"header\":{\"showRowBorders\":true,\"showColumnBorders\":true,\"showOuterBorder\":true,\"style\":\"dashed\",\"width\":1,\"color\":\"#bdbdbd\"},\"footer\":{\"showRowBorders\":true,\"showColumnBorders\":false,\"showOuterBorder\":true,\"style\":\"solid\",\"width\":1,\"color\":\"#e0e0e0\"},\"sticky\":{\"showRowBorders\":true,\"showColumnBorders\":true,\"showOuterBorder\":false,\"style\":\"solid\",\"width\":1,\"color\":\"#c0c0c0\"}}},\"colors\":{\"background\":\"#ffffff\",\"headerBackground\":\"#fafafa\",\"alternateRowBackground\":\"#f7f9fc\",\"hoverBackground\":\"#eef3ff\",\"selectedBackground\":\"#e3f2fd\",\"textColor\":\"#212121\",\"headerTextColor\":\"#424242\",\"states\":{\"error\":\"#d32f2f\",\"warning\":\"#f9a825\",\"success\":\"#2e7d32\",\"info\":\"#0288d1\"}},\"typography\":{\"fontFamily\":\"Segoe UI, Arial, sans-serif\",\"fontSize\":\"14px\",\"headerFontSize\":\"12px\",\"fontWeight\":400,\"headerFontWeight\":600,\"lineHeight\":\"1.4\",\"letterSpacing\":\"0.2px\",\"headerCase\":\"uppercase\"},\"spacing\":{\"cellPadding\":\"8px 12px\",\"headerPadding\":\"10px 12px\",\"rowHeight\":44,\"headerHeight\":48,\"containerSpacing\":\"8px\"},\"animations\":{\"enabled\":true,\"duration\":200,\"easing\":\"ease-in-out\",\"specific\":{\"loading\":true,\"hover\":true,\"selection\":true,\"sorting\":false}},\"responsive\":{\"breakpoints\":{\"mobile\":600,\"tablet\":960,\"desktop\":1280},\"mobile\":{\"horizontalScroll\":true,\"collapseColumns\":true,\"priorityColumns\":[\"id\",\"status\",\"amount\"],\"cardMode\":true},\"autoAdjust\":{\"hideColumns\":true,\"scaleFontSize\":true,\"adjustPadding\":true}},\"elevation\":{\"level\":2,\"shadowColor\":\"rgba(0,0,0,0.2)\",\"hoverElevation\":4}}}",
          "sourcePointer": "examples/ai-recipes/praxis-table.json",
          "contentHash": "d6fa78aec0fbe117886c4a842b3d811075b88906301cc806acac38832497abe9",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 167,
          "chunkKind": "recipe",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"toolbar\",\"toolbar\":{\"visible\":true,\"position\":\"top\",\"layout\":{\"alignment\":\"space-between\",\"height\":56,\"padding\":\"0 16px\",\"backgroundColor\":\"#fafafa\",\"showSeparator\":true},\"title\":\"Orders\",\"subtitle\":\"Last sync 5m ago\",\"actions\":[{\"id\":\"create\",\"label\":\"Create\",\"icon\":\"add\",\"type\":\"button\",\"color\":\"primary\",\"appearance\":\"filled\",\"disabled\":false,\"action\":\"createItem\",\"tooltip\":\"Create new item\",\"shortcut\":\"Ctrl+N\",\"position\":\"start\",\"order\":1},{\"id\":\"refresh\",\"label\":\"Refresh\",\"icon\":\"refresh\",\"type\":\"icon\",\"color\":\"accent\",\"appearance\":\"text\",\"action\":\"refreshData\",\"tooltip\":\"Reload data\",\"shortcut\":\"Ctrl+R\",\"position\":\"start\",\"order\":2},{\"id\":\"export\",\"label\":\"Export\",\"icon\":\"download\",\"type\":\"menu\",\"color\":\"primary\",\"appearance\":\"outlined\",\"action\":\"openExportMenu\",\"position\":\"end\",\"order\":1,\"children\":[{\"id\":\"export-csv\",\"label\":\"Export CSV\",\"type\":\"button\",\"action\":\"exportCsv\",\"position\":\"end\"},{\"id\":\"export-pdf\",\"label\":\"Export PDF\",\"type\":\"button\",\"action\":\"exportPdf\",\"position\":\"end\"}]},{\"id\":\"help\",\"label\":\"Help\",\"icon\":\"help\",\"type\":\"fab\",\"color\":\"warn\",\"appearance\":\"tonal\",\"action\":\"openHelp\",\"tooltip\":\"Open help\",\"position\":\"end\",\"order\":99,\"visibleWhen\":\"canHelp\"}],\"filters\":{\"enabled\":true,\"quickFilters\":[{\"id\":\"active\",\"label\":\"Active\",\"filter\":{\"status\":\"ACTIVE\"},\"icon\":\"check\"},{\"id\":\"pending\",\"label\":\"Pending\",\"filter\":{\"status\":\"PENDING\"},\"icon\":\"hourglass_empty\"}],\"showAdvancedButton\":true},\"settingsMenu\":{\"enabled\":true,\"options\":[{\"id\":\"density\",\"label\":\"Density\",\"type\":\"select\",\"value\":\"comfortable\",\"options\":[\"compact\",\"comfortable\",\"spacious\"]},{\"id\":\"wrap\",\"label\":\"Wrap columns\",\"type\":\"toggle\",\"value\":false},{\"id\":\"reset\",\"label\":\"Reset\",\"type\":\"action\"}]}}}",
          "sourcePointer": "examples/ai-recipes/praxis-table.json",
          "contentHash": "2de6cb12cf1975d398db730ffb71f5397ac7c7e20fcae765d438c9a0f2ac4095",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 168,
          "chunkKind": "recipe",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"actions\",\"actions\":{\"row\":{\"enabled\":true,\"position\":\"end\",\"width\":\"64px\",\"sticky\":\"end\",\"actions\":[{\"id\":\"view\",\"label\":\"View\",\"icon\":\"visibility\",\"color\":\"primary\",\"disabled\":false,\"action\":\"viewItem\",\"tooltip\":\"View details\"},{\"id\":\"edit\",\"label\":\"Edit\",\"icon\":\"edit\",\"color\":\"accent\",\"action\":\"editItem\",\"tooltip\":\"Edit item\",\"visibleWhen\":\"canEdit\"},{\"id\":\"delete\",\"label\":\"Delete\",\"icon\":\"delete\",\"color\":\"warn\",\"action\":\"deleteItem\",\"tooltip\":\"Delete item\",\"requiresConfirmation\":true,\"separator\":true,\"autoDelete\":true,\"deleteEndpoint\":\"/api/orders/{id}\"}],\"display\":\"menu\",\"trigger\":\"click\",\"menuIcon\":\"more_vert\",\"menuButtonColor\":\"basic\",\"header\":{\"label\":\"Actions\",\"icon\":\"bolt\",\"tooltip\":\"Row actions\",\"align\":\"center\"},\"maxVisibleActions\":3,\"behavior\":{\"enabled\":true,\"maxInline\":{\"xs\":1,\"sm\":2,\"md\":3,\"lg\":4},\"autoStrategy\":\"breakpoints\"}},\"bulk\":{\"enabled\":true,\"position\":\"toolbar\",\"actions\":[{\"id\":\"bulk-delete\",\"label\":\"Delete\",\"icon\":\"delete\",\"color\":\"warn\",\"action\":\"bulkDelete\",\"requiresConfirmation\":true,\"minSelections\":2,\"maxSelections\":100,\"autoDelete\":true,\"deleteEndpoint\":\"/api/orders/bulk-delete\"}],\"floating\":{\"position\":\"bottom-right\",\"hideWhenEmpty\":true}},\"context\":{\"enabled\":true,\"actions\":[{\"id\":\"context-copy\",\"label\":\"Copy\",\"icon\":\"content_copy\",\"action\":\"copyCell\"},{\"id\":\"context-history\",\"label\":\"History\",\"icon\":\"history\",\"action\":\"openHistory\",\"separator\":true,\"visibleWhen\":\"canViewHistory\"}],\"trigger\":\"right-click\"},\"confirmations\":{\"default\":{\"title\":\"Confirm action\",\"message\":\"Are you sure you want to continue?\",\"confirmText\":\"Confirm\",\"cancelText\":\"Cancel\"},\"specific\":{\"deleteItem\":{\"title\":\"Delete order\",\"message\":\"This action cannot be undone.\",\"confirmText\":\"Delete\"}}}}}",
          "sourcePointer": "examples/ai-recipes/praxis-table.json",
          "contentHash": "b0de33433b53bd5fc1544afbe900b483f09f612c8d7bac7a949d52e9198251ba",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 169,
          "chunkKind": "recipe",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"export\",\"export\":{\"enabled\":true,\"formats\":[\"excel\",\"pdf\",\"csv\",\"json\",\"print\"],\"general\":{\"includeHeaders\":true,\"respectFilters\":true,\"selectedRowsOnly\":false,\"maxRows\":5000,\"defaultFileName\":\"orders-export\",\"includeColumns\":[\"id\",\"status\",\"amount\"],\"applyFormatting\":true},\"excel\":{\"sheetName\":\"Orders\",\"includeFormulas\":false,\"freezeHeaders\":true,\"autoFitColumns\":true,\"multipleSheets\":false,\"styling\":{\"headerStyle\":{\"backgroundColor\":\"#1976d2\",\"fontColor\":\"#ffffff\",\"fontWeight\":\"bold\",\"fontSize\":12},\"cellStyle\":{\"fontSize\":11,\"borderStyle\":\"thin\"},\"alternateRows\":{\"enabled\":true,\"color\":\"#f7f9fc\"}}},\"pdf\":{\"orientation\":\"landscape\",\"pageSize\":\"A4\",\"margins\":{\"top\":12,\"right\":12,\"bottom\":12,\"left\":12},\"header\":\"Orders Report\",\"footer\":\"Generated by Praxis\",\"watermark\":\"CONFIDENTIAL\",\"font\":{\"family\":\"Helvetica\",\"size\":10},\"autoPageBreak\":true},\"csv\":{\"delimiter\":\";\",\"escapeChar\":\"\\\"\",\"encoding\":\"utf-8\",\"includeBOM\":true},\"json\":{\"format\":\"pretty\",\"includeMetadata\":true,\"structure\":\"array\"},\"templates\":[{\"id\":\"export-default\",\"name\":\"Default Export\",\"description\":\"Standard template\",\"format\":\"csv\",\"config\":{\"delimiter\":\",\",\"includeHeaders\":true},\"isDefault\":true}]}}",
          "sourcePointer": "examples/ai-recipes/praxis-table.json",
          "contentHash": "ebfff14f775768ff578d4bac79fe1d3bdd5a61f92c89f5277c3ce6c6365b40dc",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 170,
          "chunkKind": "recipe",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"messages\",\"messages\":{\"states\":{\"loading\":\"Loading records...\",\"empty\":\"No data available\",\"error\":\"Failed to load data\",\"noResults\":\"No results found\",\"loadingMore\":\"Loading more records...\",\"dynamic\":{\"_comment\":\"Functions are represented as strings in JSON examples. Replace with real functions at runtime.\",\"loadingWithCount\":\"(count: number) => `Loading ${count} records...`\",\"emptyWithFilter\":\"(filterCount: number) =>\\n          `No results for ${filterCount} active filters`\",\"searchResults\":\"(resultCount: number, searchTerm: string) =>\\n          `${resultCount} results for \\\"${searchTerm}\\\"`\"}},\"actions\":{\"confirmations\":{\"delete\":\"Delete this item?\",\"deleteMultiple\":\"Delete selected items?\",\"save\":\"Save changes?\",\"cancel\":\"Cancel changes?\",\"export\":\"Export data now?\"},\"success\":{\"save\":\"Saved successfully\",\"delete\":\"Deleted successfully\",\"export\":\"Export completed\",\"import\":\"Import completed\"},\"progress\":{\"delete\":\"Deleting item...\",\"deleteMultiple\":\"Deleting items...\"},\"canceled\":{\"delete\":\"Delete canceled\",\"deleteMultiple\":\"Bulk delete canceled\"},\"errors\":{\"save\":\"Save failed\",\"delete\":\"Delete failed\",\"export\":\"Export failed\",\"network\":\"Network error\",\"permission\":\"Permission denied\"}},\"validation\":{\"required\":\"Field is required\",\"invalid\":\"Invalid value\",\"tooLong\":\"Value is too long\",\"tooShort\":\"Value is too short\",\"types\":{\"email\":\"Invalid email\",\"url\":\"Invalid URL\",\"number\":\"Invalid number\",\"date\":\"Invalid date\"}},\"export\":{\"starting\":\"Starting export...\",\"processing\":\"Processing data...\",\"ready\":\"Export ready\",\"error\":\"Export error\",\"formats\":{\"excel\":\"Generating Excel file...\",\"pdf\":\"Generating PDF...\",\"csv\":\"Generating CSV...\",\"json\":\"Generating JSON...\"}},\"custom\":{\"customKey\":\"Custom message\"},\"templates\":[{\"id\":\"table.template.export\",\"template\":\"Exported {count} rows\",\"variables\":[\"count\"],\"_comment\":\"interpolate expects a function at runtime; JSON uses a string placeholder.\",\"interpolate\":\"(template: string, data: { count: number }) =>\\n          template.replace('{count}', String(data.count))\"}]}}",
          "sourcePointer": "examples/ai-recipes/praxis-table.json",
          "contentHash": "9fcba4e56706e0ce6bf5920bf0433df4be676031784eefab7eb9733c43a70d9f",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 171,
          "chunkKind": "recipe",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"localization\",\"localization\":{\"locale\":\"en-US\",\"availableLocales\":[\"en-US\",\"pt-BR\"],\"direction\":\"ltr\",\"dateTime\":{\"dateFormat\":\"yyyy-MM-dd\",\"timeFormat\":\"HH:mm\",\"dateTimeFormat\":\"yyyy-MM-dd HH:mm\",\"firstDayOfWeek\":0,\"monthNames\":[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],\"dayNames\":[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],\"relativeTime\":true},\"number\":{\"decimalSeparator\":\".\",\"thousandsSeparator\":\",\",\"defaultPrecision\":2,\"negativeSign\":\"-\",\"negativeSignPosition\":\"before\"},\"currency\":{\"code\":\"USD\",\"symbol\":\"$\",\"position\":\"before\",\"spacing\":false,\"precision\":2},\"translations\":{\"en-US\":{\"tableTitle\":\"Orders\"},\"pt-BR\":{\"tableTitle\":\"Pedidos\"}},\"formatting\":{\"percentageFormat\":\"0.00%\",\"fileSizeFormat\":\"decimal\",\"units\":{\"weight\":{\"kg\":\"kg\",\"lb\":\"lb\"}}}}}",
          "sourcePointer": "examples/ai-recipes/praxis-table.json",
          "contentHash": "818ac3bc0386b2095bfd0016232840f33d1de699458ada59eb41ae72194c6949",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 172,
          "chunkKind": "recipe",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"data\",\"data\":{\"loadingStrategy\":\"lazy\",\"cache\":{\"enabled\":true,\"ttl\":60000,\"maxSize\":1000,\"invalidationStrategy\":\"ttl\"},\"sync\":{\"autoSync\":true,\"interval\":300000,\"deltaSync\":true,\"conflictResolution\":\"server\"},\"validation\":{\"clientSide\":true,\"serverSide\":true,\"rules\":[{\"field\":\"email\",\"type\":\"format\",\"params\":{\"pattern\":\"^\\\\S+@\\\\S+\\\\.\\\\S+$\"},\"message\":\"Invalid email format\"},{\"field\":\"amount\",\"type\":\"range\",\"params\":{\"min\":0,\"max\":100000},\"message\":\"Amount out of range\"},{\"field\":\"status\",\"type\":\"required\",\"message\":\"Status is required\"},{\"field\":\"customField\",\"type\":\"custom\",\"params\":{\"fn\":\"validateCustomField\"},\"message\":\"Custom validation failed\"}],\"showInlineErrors\":true},\"transformations\":[{\"id\":\"format-date\",\"field\":\"createdAt\",\"type\":\"format\",\"transform\":\"formatDate\",\"applyTo\":\"display\"},{\"id\":\"calc-total\",\"field\":\"amount\",\"type\":\"calculate\",\"transform\":\"calculateTotal\",\"applyTo\":\"data\"},{\"id\":\"agg-status\",\"field\":\"status\",\"type\":\"aggregate\",\"transform\":\"groupByStatus\",\"applyTo\":\"both\"}],\"polling\":{\"enabled\":true,\"interval\":60000,\"onlyWhenActive\":true,\"exponentialBackoff\":true}}}",
          "sourcePointer": "examples/ai-recipes/praxis-table.json",
          "contentHash": "4cb4860e68c2317018be786c28ef35327de8c162724eb2876e3b7bfcd5a24082",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 173,
          "chunkKind": "recipe",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"theme\",\"theme\":{\"primary\":\"#1976d2\",\"secondary\":\"#ff9800\",\"darkMode\":false,\"custom\":{\"borderRadius\":\"8px\"},\"cssVariables\":{\"--table-row-hover\":\"#eef3ff\"}}}",
          "sourcePointer": "examples/ai-recipes/praxis-table.json",
          "contentHash": "8ed81a976812c74be71b78cbf195cf87242dede415539ad0693be3346d8ca37b",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 174,
          "chunkKind": "recipe",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"performance\",\"performance\":{\"virtualization\":{\"enabled\":true,\"itemHeight\":44,\"bufferSize\":8,\"minContainerHeight\":240,\"strategy\":\"dynamic\"},\"debounce\":{\"search\":300,\"filter\":250,\"resize\":200,\"scroll\":50},\"memory\":{\"maxRows\":10000,\"autoCleanup\":true,\"cleanupInterval\":600000},\"rendering\":{\"useRAF\":true,\"batchUpdates\":true,\"batchSize\":50,\"optimizeReRenders\":true},\"lazyLoading\":{\"images\":true,\"components\":true,\"threshold\":200}}}",
          "sourcePointer": "examples/ai-recipes/praxis-table.json",
          "contentHash": "b23d53e082f91f80aeb580b135bdf5a456736796f80c765b8179f0d9adc14b94",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 175,
          "chunkKind": "recipe",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"plugins\",\"plugins\":[{\"id\":\"audit\",\"name\":\"AuditPlugin\",\"version\":\"1.0.0\",\"enabled\":true,\"settings\":{\"logLevel\":\"info\"},\"hooks\":{\"onRowClick\":\"trackRowClick\",\"onExport\":\"trackExport\"}}]}",
          "sourcePointer": "examples/ai-recipes/praxis-table.json",
          "contentHash": "b47b7066ac825ed0b7ca862d3248e998931c60d3ac74b57a44c3cbd3b2aecf6d",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 176,
          "chunkKind": "recipe",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"accessibility\",\"accessibility\":{\"enabled\":true,\"announcements\":{\"dataChanges\":true,\"userActions\":true,\"loadingStates\":true,\"liveRegion\":\"polite\"},\"keyboard\":{\"tabNavigation\":true,\"arrowNavigation\":true,\"shortcuts\":true,\"skipLinks\":true,\"focusTrap\":false},\"highContrast\":false,\"reduceMotion\":false,\"ariaLabels\":{\"table\":\"Orders table\",\"pagination\":\"Pagination\"}}}",
          "sourcePointer": "examples/ai-recipes/praxis-table.json",
          "contentHash": "3d28cfba4a9c246b5b989876f1401c9d2f95f92a1de086ec487e06b1db800e5b",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 177,
          "chunkKind": "recipe",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"rowConditionalStyles\",\"rowConditionalStyles\":[{\"condition\":{\"==\":[{\"var\":\"priority\"},\"HIGH\"]},\"cssClass\":\"row-priority-high\",\"style\":{\"backgroundColor\":\"#fff8e1\"},\"description\":\"Highlight high priority rows\"}]}",
          "sourcePointer": "examples/ai-recipes/praxis-table.json",
          "contentHash": "b3daa48915d85dd39f46c686c1c60a45774af4a38515d08a7c9a7609d3d0ca83",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 178,
          "chunkKind": "recipe",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"_rowStyleRulesState\",\"_rowStyleRulesState\":{\"version\":1,\"rules\":[\"priority\"]}}",
          "sourcePointer": "examples/ai-recipes/praxis-table.json",
          "contentHash": "eb83723b4b076d744d9865a5981403e34c751a85e281b671234ce47c1e796590",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 179,
          "chunkKind": "recipe",
          "content": "{\"componentId\":\"praxis-table\",\"chunkSection\":\"_variants\",\"_variants\":[{\"id\":\"sorting-default-single\",\"description\":\"Use single defaultSort object instead of array.\",\"patch\":{\"behavior\":{\"sorting\":{\"defaultSort\":{\"column\":\"createdAt\",\"direction\":\"desc\"}}}}},{\"id\":\"pagination-client\",\"description\":\"Client-side pagination example.\",\"patch\":{\"behavior\":{\"pagination\":{\"strategy\":\"client\",\"totalItems\":250}}}},{\"id\":\"selection-single-row\",\"description\":\"Single selection with row mode.\",\"patch\":{\"behavior\":{\"selection\":{\"type\":\"single\",\"mode\":\"row\"}}}},{\"id\":\"sticky-boolean\",\"description\":\"Sticky as boolean for simple cases.\",\"patch\":{\"columns\":[{\"field\":\"id\",\"header\":\"ID\",\"sticky\":true}]}},{\"id\":\"typeexpr-string\",\"description\":\"Renderer typeExpr as string instead of object.\",\"patch\":{\"columns\":[{\"field\":\"status\",\"header\":\"Status\",\"renderer\":{\"typeExpr\":\"statusRenderer\"}}]}},{\"id\":\"row-actions-inline-number\",\"description\":\"Row actions maxInline as number.\",\"patch\":{\"actions\":{\"row\":{\"behavior\":{\"maxInline\":2}}}}},{\"id\":\"row-actions-inline-auto\",\"description\":\"Row actions maxInline as auto.\",\"patch\":{\"actions\":{\"row\":{\"behavior\":{\"maxInline\":\"auto\"}}}}},{\"id\":\"virtualization-min-height-string\",\"description\":\"minContainerHeight as CSS string.\",\"patch\":{\"behavior\":{\"virtualization\":{\"minContainerHeight\":\"50vh\"}}}},{\"id\":\"include-columns-list\",\"description\":\"Export includeColumns as explicit array.\",\"patch\":{\"export\":{\"general\":{\"includeColumns\":[\"id\",\"status\",\"amount\"]}}}}]}",
          "sourcePointer": "examples/ai-recipes/praxis-table.json",
          "contentHash": "8787c0a7fcbbf049a71897d4d4ce70c24ada808e995587c41224b9a9d4dc4242",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 180,
          "chunkKind": "recipe",
          "content": "{\"_comment\":\"Template to display column values as badges (tags/chips).\",\"templateMeta\":{\"variantId\":\"renderer-badge\",\"variantOf\":\"praxis-table\",\"registryKey\":\"praxis-table\",\"tags\":[\"renderer\",\"badge\",\"chip\",\"tag\",\"status\",\"appearance\"],\"useWhen\":\"user asks to show a column as a badge, tag, or chip, possibly with colors mapping to values\",\"examplePrompts\":[\"show status as a badge\",\"display priority as colored tags\",\"use badges for the category column\"]},\"columns\":[{\"field\":\"status\",\"renderer\":{\"type\":\"badge\",\"badge\":{\"text\":\"Status\",\"textField\":\"statusLabel\",\"color\":\"primary\",\"variant\":\"filled\"}},\"conditionalRenderers\":[{\"condition\":{\"==\":[{\"var\":\"status\"},\"ERROR\"]},\"renderer\":{\"type\":\"badge\",\"badge\":{\"text\":\"Error\",\"color\":\"warn\",\"icon\":\"error\"}},\"enabled\":true},{\"condition\":{\"==\":[{\"var\":\"status\"},\"SUCCESS\"]},\"renderer\":{\"type\":\"badge\",\"badge\":{\"text\":\"Success\",\"color\":\"success\",\"icon\":\"check\"}},\"enabled\":true}]}]}",
          "sourcePointer": "examples/ai-recipes/praxis-table.renderer-badge.json",
          "contentHash": "4dc3ff77d5b5dd5b7f68e8567142f3b917c0780596c48b36495f6a5565d890be",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 181,
          "chunkKind": "recipe",
          "content": "{\"_comment\":\"Template to display icons in a column, either static or conditional.\",\"templateMeta\":{\"variantId\":\"renderer-icon\",\"variantOf\":\"praxis-table\",\"registryKey\":\"praxis-table\",\"tags\":[\"renderer\",\"icon\",\"visual\",\"appearance\"],\"useWhen\":\"user asks to display an icon in a column, usually based on a condition\",\"examplePrompts\":[\"show a check icon if active\",\"display a warning icon for late items\",\"add an icon column for status\"]},\"columns\":[{\"field\":\"active\",\"renderer\":{\"type\":\"icon\",\"icon\":{\"name\":\"check_circle\",\"color\":\"success\"}},\"conditionalRenderers\":[{\"condition\":{\"==\":[{\"var\":\"active\"},false]},\"renderer\":{\"type\":\"icon\",\"icon\":{\"name\":\"cancel\",\"color\":\"warn\"}},\"enabled\":true}]}]}",
          "sourcePointer": "examples/ai-recipes/praxis-table.renderer-icon.json",
          "contentHash": "1b92616106b35c2a3f9efa7544bab6bdb097c8fb61041c021f5d5287fcdc38ff",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 182,
          "chunkKind": "recipe",
          "content": "{\"_comment\":\"Template to display a progress bar in a column.\",\"templateMeta\":{\"variantId\":\"renderer-progress\",\"variantOf\":\"praxis-table\",\"registryKey\":\"praxis-table\",\"tags\":[\"renderer\",\"progress\",\"bar\",\"visual\",\"percentage\"],\"useWhen\":\"user asks to show a progress bar or visual indicator of completion/percentage\",\"examplePrompts\":[\"show completion as a progress bar\",\"display usage with a bar\",\"visualize the percentage\"]},\"columns\":[{\"field\":\"completion\",\"renderer\":{\"type\":\"progress\",\"progress\":{\"valueExpr\":\"completion\",\"color\":\"primary\",\"showLabel\":true}}}]}",
          "sourcePointer": "examples/ai-recipes/praxis-table.renderer-progress.json",
          "contentHash": "3664942fb664f06e0b7e3047f96e31ce6f935114551dc9fc2b61fa47173621c4",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 183,
          "chunkKind": "recipe",
          "content": "{\"_comment\":\"Template to apply conditional styling (colors, fonts) to rows or columns based on data values.\",\"templateMeta\":{\"variantId\":\"style-conditional\",\"variantOf\":\"praxis-table\",\"registryKey\":\"praxis-table\",\"tags\":[\"style\",\"animation\",\"appearance\",\"conditional\",\"color\",\"background\",\"highlight\"],\"useWhen\":\"user asks to highlight, color, style, or animate rows/cells based on a condition (e.g., 'red if negative', 'highlight high priority', 'pulse critical rows')\",\"examplePrompts\":[\"highlight rows where status is urgent\",\"make the amount red if less than zero\",\"bold the text for active items\",\"animate salary rows above 30000\",\"pulse the status cell when it is critical\"]},\"columns\":[{\"field\":\"amount\",\"conditionalStyles\":[{\"condition\":{\"<\":[{\"var\":\"amount\"},0]},\"style\":{\"color\":\"#d32f2f\",\"fontWeight\":\"bold\"}}]},{\"field\":\"status\",\"conditionalRenderers\":[{\"id\":\"status-critical-alert\",\"condition\":{\"===\":[{\"var\":\"status\"},\"CRITICAL\"]},\"animation\":{\"preset\":\"critical-alert\",\"trigger\":\"onChange\",\"intensity\":\"strong\",\"repeat\":\"loop\"},\"description\":\"Animate only the status cell for critical rows\",\"enabled\":true}]}],\"rowConditionalStyles\":[{\"id\":\"priority-high-highlight\",\"condition\":{\"==\":[{\"var\":\"priority\"},\"HIGH\"]},\"surfacePresetRef\":{\"id\":\"warning\",\"catalogVersion\":\"0.2.0\"},\"style\":{\"borderLeft\":\"4px solid #f59e0b\"},\"description\":\"Destaca prioridade alta com superfície semântica acessível e marcador lateral visível.\"}],\"rowConditionalRenderers\":[{\"id\":\"priority-high-pulse\",\"condition\":{\"===\":[{\"var\":\"priority\"},\"HIGH\"]},\"animation\":{\"preset\":\"pulse-soft\",\"trigger\":\"onAppear\",\"intensity\":\"subtle\",\"repeat\":\"once\",\"durationMs\":1200},\"description\":\"Animate the full row for high priority records\",\"enabled\":true}]}",
          "sourcePointer": "examples/ai-recipes/praxis-table.style-conditional.json",
          "contentHash": "035d993ca13675799c81b48cc74ea9a797e0e42a854c4d81edded324b806d632",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 184,
          "chunkKind": "recipe",
          "content": "{\"_comment\":\"Variant focused on toolbar configuration and actions.\",\"templateMeta\":{\"variantId\":\"toolbar\",\"variantOf\":\"praxis-table\",\"registryKey\":\"praxis-table\",\"tags\":[\"toolbar\",\"actions\"],\"useWhen\":\"user asks to change toolbar, buttons, or quick actions\",\"examplePrompts\":[\"add export buttons to the toolbar\",\"change the toolbar title\"]},\"meta\":{\"version\":\"2.0.0\",\"id\":\"table-recipe-full\",\"name\":\"Full Table Recipe\",\"description\":\"Kitchen sink config covering TableConfig v2\",\"tags\":[\"example\",\"full\",\"table\"],\"createdAt\":\"2024-01-01T00:00:00Z\",\"updatedAt\":\"2024-02-01T12:00:00Z\",\"author\":\"Praxis UI\",\"isTemplate\":true,\"derivedFrom\":\"base-template\",\"schemaId\":\"path:/api/orders#response\",\"serverHash\":\"hash-123\",\"idField\":\"id\",\"schemaContext\":{\"path\":\"/api/orders\",\"operation\":\"GET\",\"schemaType\":\"response\",\"internal\":false,\"tenant\":\"default\",\"locale\":\"en-US\"}},\"toolbar\":{\"visible\":true,\"position\":\"top\",\"layout\":{\"alignment\":\"space-between\",\"height\":56,\"padding\":\"0 16px\",\"backgroundColor\":\"#fafafa\",\"showSeparator\":true},\"title\":\"Orders\",\"subtitle\":\"Last sync 5m ago\",\"actions\":[{\"id\":\"create\",\"label\":\"Create\",\"icon\":\"add\",\"type\":\"button\",\"color\":\"primary\",\"appearance\":\"filled\",\"disabled\":false,\"action\":\"createItem\",\"tooltip\":\"Create new item\",\"shortcut\":\"Ctrl+N\",\"position\":\"start\",\"order\":1},{\"id\":\"refresh\",\"label\":\"Refresh\",\"icon\":\"refresh\",\"type\":\"icon\",\"color\":\"accent\",\"appearance\":\"text\",\"action\":\"refreshData\",\"tooltip\":\"Reload data\",\"shortcut\":\"Ctrl+R\",\"position\":\"start\",\"order\":2},{\"id\":\"export\",\"label\":\"Export\",\"icon\":\"download\",\"type\":\"menu\",\"color\":\"primary\",\"appearance\":\"outlined\",\"action\":\"openExportMenu\",\"position\":\"end\",\"order\":1,\"children\":[{\"id\":\"export-csv\",\"label\":\"Export CSV\",\"type\":\"button\",\"action\":\"exportCsv\",\"position\":\"end\"},{\"id\":\"export-pdf\",\"label\":\"Export PDF\",\"type\":\"button\",\"action\":\"exportPdf\",\"position\":\"end\"}]},{\"id\":\"help\",\"label\":\"Help\",\"icon\":\"help\",\"type\":\"fab\",\"color\":\"warn\",\"appearance\":\"tonal\",\"action\":\"openHelp\",\"tooltip\":\"Open help\",\"position\":\"end\",\"order\":99,\"visibleWhen\":\"canHelp\"}],\"filters\":{\"enabled\":true,\"quickFilters\":[{\"id\":\"active\",\"label\":\"Active\",\"filter\":{\"status\":\"ACTIVE\"},\"icon\":\"check\"},{\"id\":\"pending\",\"label\":\"Pending\",\"filter\":{\"status\":\"PENDING\"},\"icon\":\"hourglass_empty\"}],\"showAdvancedButton\":true},\"settingsMenu\":{\"enabled\":true,\"options\":[{\"id\":\"density\",\"label\":\"Density\",\"type\":\"select\",\"value\":\"comfortable\",\"options\":[\"compact\",\"comfortable\",\"spacious\"]},{\"id\":\"wrap\",\"label\":\"Wrap columns\",\"type\":\"toggle\",\"value\":false},{\"id\":\"reset\",\"label\":\"Reset\",\"type\":\"action\"}]}}}",
          "sourcePointer": "examples/ai-recipes/praxis-table.toolbar.json",
          "contentHash": "e7a259f240d0c0a1379b2d10000faee53f06228f84eddfae48a4aaeb22b9ad5c",
          "sourceKind": "component_definition",
          "sourceId": "praxis-table",
          "corpusVersion": "1.0.0"
        }
      ]
    }
  },
  "note": "Package-scoped Praxis component registry for source-free agent discovery. Use the canonical ingestion registry for cross-package aggregate analysis."
}
