@praxisui/crud 9.0.0-beta.77 → 9.0.0-beta.78
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ai/component-registry.json +395 -25
- package/package.json +7 -7
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
|
-
"generatedAt": "2026-07-
|
|
3
|
+
"generatedAt": "2026-07-19T03:55:15.480Z",
|
|
4
4
|
"packageName": "@praxisui/crud",
|
|
5
|
-
"packageVersion": "9.0.0-beta.
|
|
5
|
+
"packageVersion": "9.0.0-beta.78",
|
|
6
6
|
"sourceRegistry": "praxis-component-registry-ingestion",
|
|
7
7
|
"sourceRegistryVersion": "1.0.0",
|
|
8
8
|
"componentCount": 2,
|
|
@@ -6471,69 +6471,329 @@
|
|
|
6471
6471
|
{
|
|
6472
6472
|
"chunkIndex": 1,
|
|
6473
6473
|
"chunkKind": "capabilities",
|
|
6474
|
-
"content": "Schema Capabilities:\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 - Path: metadata.source\n Category: metadata\n Kind: enum\n Description: Origem da configuração do formulário.\n - Path: metadata.lastUpdated\n Category: metadata\n Kind: string\n Description: Timestamp da última atualização da configuração (ISO-8601).\n - Path: metadata.schemaId\n Category: metadata\n Kind: string\n Description: ID do schema de origem para reconciliação no servidor.\n - Path: metadata.schemaContext\n Category: metadata\n Kind: object\n Description: Contexto do schema usado para compor o formulário.\n - Path: metadata.schemaContext.path\n Category: metadata\n Kind: string\n Description: Path do schema de origem.\n - Path: metadata.schemaContext.operation\n Category: metadata\n Kind: string\n Description: Operação do schema (ex.: \"get\", \"post\").\n - Path: metadata.schemaContext.schemaType\n Category: metadata\n Kind: enum\n Description: Tipo do schema (response/request).\n - Path: metadata.schemaContext.internal\n Category: metadata\n Kind: boolean\n Description: Indica se o schema é interno.\n - Path: metadata.schemaContext.tenant\n Category: metadata\n Kind: string\n Description: Tenant do schema (se aplicável).\n - Path: metadata.schemaContext.locale\n Category: metadata\n Kind: string\n Description: Locale do schema (se aplicável).\n - Path: metadata.serverHash\n Category: metadata\n Kind: string\n Description: Hash dos dados do servidor para detecção de mudanças.\n - Path: metadata.customizations\n Category: metadata\n Kind: array\n Description: Log de customizações manuais aplicadas ao formulário.\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 - Path: fieldMetadata[]\n Category: fields\n Kind: object\n Description: Item de metadados do campo (FieldMetadata).\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 - 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 - Path: helpPresentation.inlineMaxLength\n Category: appearance\n Kind: number\n Description: Tamanho maximo para manter ajuda inline quando display=\"auto\".\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 - Path: editorialContext\n Category: editorial\n Kind: object\n Description: Contexto editorial compartilhado entre os blocos hospedados antes/depois do formulario.\n - Path: editorialContext.[token]\n Category: editorial\n Kind: string\n Description: Valor simples exposto no contexto editorial.\n - Path: formBlocksBefore\n Category: editorial\n Kind: object\n Description: RichContentDocument renderizado antes do formulario.\n - Path: formBlocksBefore.kind\n Category: editorial\n Kind: string\n Description: Kind canonico do documento rich content.\n - Path: formBlocksBefore.version\n Category: editorial\n Kind: string\n Description: Versao do documento rich content editorial.\n - Path: formBlocksBefore.nodes\n Category: editorial\n Kind: array\n Description: Lista de RichBlockNode renderizados antes do formulario.\n - Path: formBlocksBefore.nodes[]\n Category: editorial\n Kind: object\n Description: RichBlockNode editorial hospedado antes do formulario.\n - Path: formBlocksBefore.context\n Category: editorial\n Kind: object\n Description: Contexto base opcional do documento rich content hospedado antes do formulario.\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 - Path: formBlocksBeforeActions.kind\n Category: editorial\n Kind: string\n Description: Kind canonico do documento rich content antes das ações.\n - Path: formBlocksBeforeActions.version\n Category: editorial\n Kind: string\n Description: Versao do documento rich content antes das ações.\n - Path: formBlocksBeforeActions.nodes\n Category: editorial\n Kind: array\n Description: Lista de RichBlockNode renderizados antes da área principal de ações.\n - Path: formBlocksBeforeActions.nodes[]\n Category: editorial\n Kind: object\n Description: RichBlockNode editorial hospedado antes da área principal de ações.\n - Path: formBlocksBeforeActions.context\n Category: editorial\n Kind: object\n Description: Contexto base opcional do documento rich content antes das ações.\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 - Path: formBlocksAfter.kind\n Category: editorial\n Kind: string\n Description: Kind canonico do documento rich content de fechamento.\n - Path: formBlocksAfter.version\n Category: editorial\n Kind: string\n Description: Versao do documento rich content de fechamento.\n - Path: formBlocksAfter.nodes\n Category: editorial\n Kind: array\n Description: Lista de RichBlockNode renderizados depois do formulario.\n - Path: formBlocksAfter.nodes[]\n Category: editorial\n Kind: object\n Description: RichBlockNode editorial hospedado depois do formulario.\n - Path: formBlocksAfter.context\n Category: editorial\n Kind: object\n Description: Contexto base opcional do documento rich content de fechamento.\n - Path: sections[].id\n Category: layout\n Kind: string\n Description: ID único da seção.\n - Path: sections[].title\n Category: layout\n Kind: string\n Description: TÃtulo exibido para cada seção do formulário.\n - Path: sections[].description\n Category: layout\n Kind: string\n Description: Descrição auxiliar exibida abaixo do tÃtulo da seção.\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 - 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 - Path: sections[].sectionHeader.mode\n Category: layout\n Kind: enum\n Description: Estratégia visual do header da seção.\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 - Path: sections[].sectionHeader.initialsSourceField\n Category: layout\n Kind: string\n Description: Campo textual usado para derivar iniciais do avatar.\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 - 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 - 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 - 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 - Path: sections[].sectionHeader.initialsMaxLength\n Category: layout\n Kind: number\n Description: Máximo de letras exibidas no avatar textual.\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 - Path: sections[].collapsed\n Category: layout\n Kind: boolean\n Description: Estado inicial da seção (colapsada/expandida) quando `collapsible` é true.\n - Path: sections[].gapBottom\n Category: layout\n Kind: number\n Description: Espaçamento vertical (em px) após a seção.\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 - Path: sections[].descriptionGapBottom\n Category: layout\n Kind: number\n Description: Espaçamento vertical (em px) abaixo da descrição da seção.\n - Path: sections[].appearance\n Category: appearance\n Kind: enum\n Description: Preset visual do container/cabeçalho da seção.\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 - Path: sections[].titleStyle\n Category: appearance\n Kind: enum\n Description: Preset de tipografia para o tÃtulo da seção.\n - Path: sections[].descriptionStyle\n Category: appearance\n Kind: enum\n Description: Preset de tipografia para a descrição da seção.\n - Path: sections[].titleColor\n Category: appearance\n Kind: string\n Description: Cor do tÃtulo da seção (CSS color ou token).\n - Path: sections[].descriptionColor\n Category: appearance\n Kind: string\n Description: Cor da descrição da seção (CSS color ou token).\n - Path: sections[].headerAlign\n Category: appearance\n Kind: enum\n Description: Alinhamento horizontal do conteúdo do cabeçalho da seção.\n - Path: sections[].headerTooltip\n Category: layout\n Kind: string\n Description: Texto de tooltip para o cabeçalho da seção.\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 - 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 - 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 - Path: sections[].headerActions[].icon\n Category: layout\n Kind: string\n Description: Ãcone renderizado na ação do cabeçalho da seção.\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 - 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 - Path: sections[].headerActions[].color\n Category: appearance\n Kind: enum\n Description: Tom visual da ação do cabeçalho da seção.\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 - 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 - Path: sections[].className\n Category: appearance\n Kind: string\n Description: Classe CSS aplicada ao container da seção.\n - Path: sections[].styles\n Category: appearance\n Kind: object\n Description: Estilos inline aplicados ao container da seção.\n - Path: sections[].rows[].id\n Category: layout\n Kind: string\n Description: ID único da linha dentro de uma seção.\n - Path: sections[].rows[].title\n Category: layout\n Kind: string\n Description: TÃtulo interno da linha (usado em editores e labels).\n - Path: sections[].rows[].gap\n Category: layout\n Kind: number\n Description: Espaçamento horizontal (em px) entre colunas nesta linha.\n - Path: sections[].rows[].rowGap\n Category: layout\n Kind: number\n Description: Espaçamento vertical (em px) após esta linha.\n - Path: sections[].rows[].columns[].id\n Category: layout\n Kind: string\n Description: ID único da coluna dentro de uma linha.\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 - Path: sections[].rows[].columns[].testId\n Category: layout\n Kind: string\n Description: Atributo data-testid aplicado ao container da coluna.\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 - 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 - 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 - Path: sections[].rows[].columns[].items[].kind\n Category: layout\n Kind: enum\n Description: Tipo do item de layout da coluna.\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 - Path: sections[].rows[].columns[].items[].fieldName\n Category: layout\n Kind: string\n Description: Nome do campo quando kind é \"field\".\n - Path: sections[].rows[].columns[].items[].document\n Category: editorial\n Kind: object\n Description: RichContentDocument do bloco visual quando kind é \"richContent\".\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 - Path: sections[].rows[].columns[].items[].rootClassName\n Category: appearance\n Kind: string\n Description: Classe CSS opcional aplicada ao bloco visual richContent.\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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - Path: sections[].rows[].columns[].order.xs\n Category: layout\n Kind: number\n Description: Ordem visual da coluna para telas extra pequenas (xs).\n - Path: sections[].rows[].columns[].order.sm\n Category: layout\n Kind: number\n Description: Ordem visual da coluna para telas pequenas (sm).\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 - Path: sections[].rows[].columns[].order.lg\n Category: layout\n Kind: number\n Description: Ordem visual da coluna para telas grandes (lg).\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 - Path: sections[].rows[].columns[].hidden.xs\n Category: layout\n Kind: boolean\n Description: Oculta a coluna para telas extra pequenas (xs).\n - Path: sections[].rows[].columns[].hidden.sm\n Category: layout\n Kind: boolean\n Description: Oculta a coluna para telas pequenas (sm).\n - Path: sections[].rows[].columns[].hidden.md\n Category: layout\n Kind: boolean\n Description: Oculta a coluna para telas médias (md).\n - Path: sections[].rows[].columns[].hidden.lg\n Category: layout\n Kind: boolean\n Description: Oculta a coluna para telas grandes (lg).\n - Path: sections[].rows[].columns[].hidden.xl\n Category: layout\n Kind: boolean\n Description: Oculta a coluna para telas extra grandes (xl).\n - Path: sections[].rows[].columns[].align\n Category: layout\n Kind: enum\n Description: Alinhamento vertical do conteúdo da coluna.\n - Path: sections[].rows[].columns[].padding\n Category: layout\n Kind: number\n Description: Padding (em px) interno da coluna.\n - Path: sections[].rows[].columns[].className\n Category: appearance\n Kind: string\n Description: Classe CSS aplicada à coluna.\n - Path: actions.submit.id\n Category: actions\n Kind: string\n Description: ID do botão de submissão.\n - Path: actions.submit.visible\n Category: actions\n Kind: boolean\n Description: Visibilidade do botão de submissão.\n - Path: actions.submit.label\n Category: actions\n Kind: string\n Description: Rótulo do botão de submissão.\n - Path: actions.submit.icon\n Category: actions\n Kind: string\n Description: Ãcone (Material Icons) para o botão de submissão.\n - Path: actions.submit.color\n Category: actions\n Kind: enum\n Description: Cor do botão de submissão.\n - Path: actions.submit.variant\n Category: actions\n Kind: enum\n Description: Variante visual do botão de submissão.\n - Path: actions.submit.size\n Category: actions\n Kind: enum\n Description: Tamanho do botão de submissão.\n - Path: actions.submit.className\n Category: actions\n Kind: string\n Description: Classe CSS aplicada ao botão de submissão.\n - Path: actions.submit.style\n Category: actions\n Kind: object\n Description: Estilos inline aplicados ao botão de submissão.\n - Path: actions.submit.disabled\n Category: actions\n Kind: boolean\n Description: Desabilita o botão de submissão.\n - Path: actions.submit.type\n Category: actions\n Kind: enum\n Description: Tipo do botão de submissão.\n - Path: actions.submit.action\n Category: actions\n Kind: string\n Description: Evento customizado disparado ao clicar.\n - Path: actions.submit.tooltip\n Category: actions\n Kind: string\n Description: Tooltip exibido no botão de submissão.\n - Path: actions.submit.loading\n Category: actions\n Kind: boolean\n Description: Exibe estado de carregamento no botão de submissão.\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 - Path: actions.cancel.id\n Category: actions\n Kind: string\n Description: ID do botão de cancelar.\n - Path: actions.cancel.visible\n Category: actions\n Kind: boolean\n Description: Visibilidade do botão de cancelar.\n - Path: actions.cancel.label\n Category: actions\n Kind: string\n Description: Rótulo do botão de cancelar.\n - Path: actions.cancel.icon\n Category: actions\n Kind: string\n Description: Ãcone (Material Icons) para o botão de cancelar.\n - Path: actions.cancel.color\n Category: actions\n Kind: enum\n Description: Cor do botão de cancelar.\n - Path: actions.cancel.variant\n Category: actions\n Kind: enum\n Description: Variante visual do botão de cancelar.\n - Path: actions.cancel.size\n Category: actions\n Kind: enum\n Description: Tamanho do botão de cancelar.\n - Path: actions.cancel.className\n Category: actions\n Kind: string\n Description: Classe CSS aplicada ao botão de cancelar.\n - Path: actions.cancel.style\n Category: actions\n Kind: object\n Description: Estilos inline aplicados ao botão de cancelar.\n - Path: actions.cancel.disabled\n Category: actions\n Kind: boolean\n Description: Desabilita o botão de cancelar.\n - Path: actions.cancel.type\n Category: actions\n Kind: enum\n Description: Tipo do botão de cancelar.\n - Path: actions.cancel.action\n Category: actions\n Kind: string\n Description: Evento customizado disparado ao clicar.\n - Path: actions.cancel.tooltip\n Category: actions\n Kind: string\n Description: Tooltip exibido no botão de cancelar.\n - Path: actions.cancel.loading\n Category: actions\n Kind: boolean\n Description: Exibe estado de carregamento no botão de cancelar.\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 - Path: actions.reset.id\n Category: actions\n Kind: string\n Description: ID do botão de reset.\n - Path: actions.reset.visible\n Category: actions\n Kind: boolean\n Description: Visibilidade do botão de reset.\n - Path: actions.reset.label\n Category: actions\n Kind: string\n Description: Rótulo do botão de reset.\n - Path: actions.reset.icon\n Category: actions\n Kind: string\n Description: Ãcone (Material Icons) para o botão de reset.\n - Path: actions.reset.color\n Category: actions\n Kind: enum\n Description: Cor do botão de reset.\n - Path: actions.reset.variant\n Category: actions\n Kind: enum\n Description: Variante visual do botão de reset.\n - Path: actions.reset.size\n Category: actions\n Kind: enum\n Description: Tamanho do botão de reset.\n - Path: actions.reset.className\n Category: actions\n Kind: string\n Description: Classe CSS aplicada ao botão de reset.\n - Path: actions.reset.style\n Category: actions\n Kind: object\n Description: Estilos inline aplicados ao botão de reset.\n - Path: actions.reset.disabled\n Category: actions\n Kind: boolean\n Description: Desabilita o botão de reset.\n - Path: actions.reset.type\n Category: actions\n Kind: enum\n Description: Tipo do botão de reset.\n - Path: actions.reset.action\n Category: actions\n Kind: string\n Description: Evento customizado disparado ao clicar.\n - Path: actions.reset.tooltip\n Category: actions\n Kind: string\n Description: Tooltip exibido no botão de reset.\n - Path: actions.reset.loading\n Category: actions\n Kind: boolean\n Description: Exibe estado de carregamento no botão de reset.\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 - Path: actions.custom\n Category: actions\n Kind: array\n Description: Lista de botões de ação customizados.\n - Path: actions.custom[]\n Category: actions\n Kind: object\n Description: Configuração de um botão de ação customizado.\n - Path: actions.custom[].id\n Category: actions\n Kind: string\n Description: ID da ação customizada.\n - Path: actions.custom[].visible\n Category: actions\n Kind: boolean\n Description: Visibilidade da ação customizada.\n - Path: actions.custom[].label\n Category: actions\n Kind: string\n Description: Rótulo da ação customizada.\n - Path: actions.custom[].icon\n Category: actions\n Kind: string\n Description: Ãcone (Material Icons) para a ação customizada.\n - Path: actions.custom[].color\n Category: actions\n Kind: enum\n Description: Cor da ação customizada.\n - Path: actions.custom[].variant\n Category: actions\n Kind: enum\n Description: Variante visual da ação customizada.\n - Path: actions.custom[].size\n Category: actions\n Kind: enum\n Description: Tamanho da ação customizada.\n - Path: actions.custom[].className\n Category: actions\n Kind: string\n Description: Classe CSS aplicada à ação customizada.\n - Path: actions.custom[].style\n Category: actions\n Kind: object\n Description: Estilos inline aplicados à ação customizada.\n - Path: actions.custom[].disabled\n Category: actions\n Kind: boolean\n Description: Desabilita a ação customizada.\n - Path: actions.custom[].type\n Category: actions\n Kind: enum\n Description: Tipo do botão da ação customizada.\n - Path: actions.custom[].action\n Category: actions\n Kind: string\n Description: Evento customizado disparado ao clicar.\n - Path: actions.custom[].tooltip\n Category: actions\n Kind: string\n Description: Tooltip exibido na ação customizada.\n - Path: actions.custom[].loading\n Category: actions\n Kind: boolean\n Description: Exibe estado de carregamento na ação customizada.\n - Path: actions.custom[].shortcut\n Category: actions\n Kind: string\n Description: Atalho de teclado para a ação customizada.\n - Path: actions.position\n Category: layout\n Kind: enum\n Description: Posicionamento horizontal da barra de ações.\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 - Path: actions.spacing\n Category: layout\n Kind: enum\n Description: Espaçamento entre os botões na barra de ações.\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 - Path: actions.divider\n Category: layout\n Kind: boolean\n Description: Exibe um divisor superior acima da barra de ações.\n - Path: actions.placement\n Category: layout\n Kind: enum\n Description: Localização estrutural da barra de ações no layout.\n - Path: actions.mobile.position\n Category: layout\n Kind: enum\n Description: Posicionamento da barra de ações em dispositivos móveis.\n - Path: actions.mobile.orientation\n Category: layout\n Kind: enum\n Description: Orientação dos botões em dispositivos móveis.\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 - Path: actions.containerClassName\n Category: appearance\n Kind: string\n Description: Classe CSS aplicada ao container da barra de ações.\n - Path: actions.containerStyles\n Category: appearance\n Kind: object\n Description: Estilos inline aplicados ao container da barra de ações.\n - Path: actions.showSaveButton\n Category: actions\n Kind: boolean\n Description: Legacy: controla visibilidade do botão de submit.\n - Path: actions.submitButtonLabel\n Category: actions\n Kind: string\n Description: Legacy: rótulo do botão de submit.\n - Path: actions.showCancelButton\n Category: actions\n Kind: boolean\n Description: Legacy: controla visibilidade do botão de cancel.\n - Path: actions.cancelButtonLabel\n Category: actions\n Kind: string\n Description: Legacy: rótulo do botão de cancel.\n - Path: actions.showResetButton\n Category: actions\n Kind: boolean\n Description: Legacy: controla visibilidade do botão de reset.\n - Path: actions.resetButtonLabel\n Category: actions\n Kind: string\n Description: Legacy: rótulo do botão de reset.\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 - Path: behavior.trackHistory\n Category: behavior\n Kind: boolean\n Description: Habilita rastreamento de histórico para desfazer/refazer (se suportado).\n - Path: behavior.focusFirstError\n Category: behavior\n Kind: boolean\n Description: Ao submeter, foca automaticamente no primeiro campo com erro.\n - Path: behavior.scrollToErrors\n Category: behavior\n Kind: boolean\n Description: Ao submeter, rola a página para exibir o primeiro erro.\n - Path: behavior.clearAfterSave\n Category: behavior\n Kind: boolean\n Description: Limpa o formulário após uma submissão bem-sucedida.\n - Path: behavior.redirectAfterSave\n Category: behavior\n Kind: string\n Description: URL para redirecionar após uma submissão bem-sucedida.\n - Path: behavior.reactiveValidation\n Category: validation\n Kind: boolean\n Description: Ativa validação reativa (em tempo real) em `valueChanges`.\n - Path: behavior.reactiveValidationDebounceMs\n Category: validation\n Kind: number\n Description: Debounce (em ms) para a validação reativa.\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 - Path: api.loadEndpoint\n Category: api\n Kind: string\n Description: URL para buscar dados para popular o formulário (GET).\n - Path: api.saveMethod\n Category: api\n Kind: enum\n Description: Método HTTP para a requisição de salvar.\n - Path: api.timeout\n Category: api\n Kind: number\n Description: Tempo limite (em ms) para as requisições API.\n - Path: api.headers\n Category: api\n Kind: object\n Description: Cabeçalhos HTTP personalizados para as requisições API.\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 - Path: api.beforeSave\n Category: hooks\n Kind: expression\n Description: Hook para pré-processamento de dados antes de enviar para a API.\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 - Path: messages.updateRegistrySuccess\n Category: messages\n Kind: string\n Description: Mensagem de sucesso após atualização de registro.\n - Path: messages.createRegistrySuccess\n Category: messages\n Kind: string\n Description: Mensagem de sucesso após criação de registro.\n - Path: messages.updateRegistryError\n Category: messages\n Kind: string\n Description: Mensagem de erro após atualização de registro.\n - Path: messages.createRegistryError\n Category: messages\n Kind: string\n Description: Mensagem de erro após criação de registro.\n - Path: messages.confirmations.submit\n Category: messages\n Kind: string\n Description: Mensagem de confirmação antes de submeter o formulário.\n - Path: messages.confirmations.cancel\n Category: messages\n Kind: string\n Description: Mensagem de confirmação antes de cancelar.\n - Path: messages.confirmations.reset\n Category: messages\n Kind: string\n Description: Mensagem de confirmação antes de resetar o formulário.\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 - 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 - Path: messages.customActions.[actionId].success\n Category: messages\n Kind: string\n Description: Mensagem de sucesso para a ação customizada.\n - Path: messages.customActions.[actionId].error\n Category: messages\n Kind: string\n Description: Mensagem de erro para a ação customizada.\n - Path: messages.customActions.[actionId].confirmation\n Category: messages\n Kind: string\n Description: Mensagem de confirmação para a ação customizada.\n - Path: messages.loading.submit\n Category: messages\n Kind: string\n Description: Mensagem exibida durante o envio do formulário.\n - Path: messages.loading.cancel\n Category: messages\n Kind: string\n Description: Mensagem exibida durante o cancelamento.\n - Path: messages.loading.reset\n Category: messages\n Kind: string\n Description: Mensagem exibida durante o reset do formulário.\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 - Path: formRules[].id\n Category: rules\n Kind: string\n Description: ID único da regra de layout.\n - Path: formRules[].name\n Category: rules\n Kind: string\n Description: Nome amigável da regra de layout.\n - Path: formRules[].description\n Category: rules\n Kind: string\n Description: Descrição da regra de layout para documentação.\n - Path: formRules[].metadata.origin\n Category: rules\n Kind: enum\n Description: Origem da regra sugerida pela IA.\n - Path: formRules[].metadata.reviewStatus\n Category: rules\n Kind: enum\n Description: Status de revisão humana da regra sugerida pela IA.\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 - Path: formRules[].context\n Category: rules\n Kind: enum\n Description: Contexto legado da regra (quando properties não forem informadas).\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`.\n - Path: formRules[].targets[]\n Category: rules\n Kind: string\n Description: ID do alvo da regra.\n - Path: formRules[].targetFields\n Category: rules\n Kind: array\n Description: Alias legado para alvos de campo.\n - Path: formRules[].targetFields[]\n Category: rules\n Kind: string\n Description: ID do campo alvo (alias legado).\n - Path: formRules[].effect.condition\n Category: rules\n Kind: expression\n Description: Condicao canonica da regra, expressa em Json Logic.\n - Path: formCommandRules\n Category: rules\n Kind: array\n Description: Regras condicionais de comando avaliadas depois que formRules estabilizam valores calculados.\n - Path: formCommandRules[].condition\n Category: rules\n Kind: expression\n Description: Condicao Json Logic avaliada sobre formData estabilizado, incluindo field values calculados.\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 - 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 - Path: formCommandRules[].policy\n Category: rules\n Kind: object\n Description: Politica operacional do comando: trigger, distinct, distinctBy, debounceMs, errorPolicy e runOnInitialEvaluation.\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 - 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 - Path: hooks.beforeInit[]\n Category: hooks\n Kind: array\n Description: Declarações de hooks para beforeInit.\n - Path: hooks.beforeInit[].id\n Category: hooks\n Kind: string\n Description: ID do hook (registrado no host).\n - Path: hooks.beforeInit[].priority\n Category: hooks\n Kind: number\n Description: Prioridade do hook (maior executa primeiro).\n - Path: hooks.beforeInit[].timeoutMs\n Category: hooks\n Kind: number\n Description: Timeout em ms para a execucao do hook.\n - Path: hooks.beforeInit[].args\n Category: hooks\n Kind: object\n Description: Argumentos adicionais passados ao hook.\n - Path: hooks.afterInit[]\n Category: hooks\n Kind: array\n Description: Declarações de hooks para afterInit.\n - Path: hooks.afterInit[].id\n Category: hooks\n Kind: string\n Description: ID do hook (registrado no host).\n - Path: hooks.afterInit[].priority\n Category: hooks\n Kind: number\n Description: Prioridade do hook (maior executa primeiro).\n - Path: hooks.afterInit[].timeoutMs\n Category: hooks\n Kind: number\n Description: Timeout em ms para a execucao do hook.\n - Path: hooks.afterInit[].args\n Category: hooks\n Kind: object\n Description: Argumentos adicionais passados ao hook.\n - Path: hooks.beforeValidate[]\n Category: hooks\n Kind: array\n Description: Declarações de hooks para beforeValidate.\n - Path: hooks.beforeValidate[].id\n Category: hooks\n Kind: string\n Description: ID do hook (registrado no host).\n - Path: hooks.beforeValidate[].priority\n Category: hooks\n Kind: number\n Description: Prioridade do hook (maior executa primeiro).\n - Path: hooks.beforeValidate[].timeoutMs\n Category: hooks\n Kind: number\n Description: Timeout em ms para a execucao do hook.\n - Path: hooks.beforeValidate[].args\n Category: hooks\n Kind: object\n Description: Argumentos adicionais passados ao hook.\n - Path: hooks.afterValidate[]\n Category: hooks\n Kind: array\n Description: Declarações de hooks para afterValidate.\n - Path: hooks.afterValidate[].id\n Category: hooks\n Kind: string\n Description: ID do hook (registrado no host).\n - Path: hooks.afterValidate[].priority\n Category: hooks\n Kind: number\n Description: Prioridade do hook (maior executa primeiro).\n - Path: hooks.afterValidate[].timeoutMs\n Category: hooks\n Kind: number\n Description: Timeout em ms para a execucao do hook.\n - Path: hooks.afterValidate[].args\n Category: hooks\n Kind: object\n Description: Argumentos adicionais passados ao hook.\n - Path: hooks.beforeSubmit[]\n Category: hooks\n Kind: array\n Description: Declarações de hooks para beforeSubmit.\n - Path: hooks.beforeSubmit[].id\n Category: hooks\n Kind: string\n Description: ID do hook (registrado no host).\n - Path: hooks.beforeSubmit[].priority\n Category: hooks\n Kind: number\n Description: Prioridade do hook (maior executa primeiro).\n - Path: hooks.beforeSubmit[].timeoutMs\n Category: hooks\n Kind: number\n Description: Timeout em ms para a execucao do hook.\n - Path: hooks.beforeSubmit[].args\n Category: hooks\n Kind: object\n Description: Argumentos adicionais passados ao hook.\n - Path: hooks.afterSubmit[]\n Category: hooks\n Kind: array\n Description: Declarações de hooks para afterSubmit.\n - Path: hooks.afterSubmit[].id\n Category: hooks\n Kind: string\n Description: ID do hook (registrado no host).\n - Path: hooks.afterSubmit[].priority\n Category: hooks\n Kind: number\n Description: Prioridade do hook (maior executa primeiro).\n - Path: hooks.afterSubmit[].timeoutMs\n Category: hooks\n Kind: number\n Description: Timeout em ms para a execucao do hook.\n - Path: hooks.afterSubmit[].args\n Category: hooks\n Kind: object\n Description: Argumentos adicionais passados ao hook.\n - Path: hooks.onError[]\n Category: hooks\n Kind: array\n Description: Declarações de hooks para onError.\n - Path: hooks.onError[].id\n Category: hooks\n Kind: string\n Description: ID do hook (registrado no host).\n - Path: hooks.onError[].priority\n Category: hooks\n Kind: number\n Description: Prioridade do hook (maior executa primeiro).\n - Path: hooks.onError[].timeoutMs\n Category: hooks\n Kind: number\n Description: Timeout em ms para a execucao do hook.\n - Path: hooks.onError[].args\n Category: hooks\n Kind: object\n Description: Argumentos adicionais passados ao hook.\n - Path: hints.dataModes.create\n Category: form_config\n Kind: string\n Description: Dica para o modo de criação de dados.\n - Path: hints.dataModes.edit\n Category: form_config\n Kind: string\n Description: Dica para o modo de edição de dados.\n - Path: hints.dataModes.view\n Category: form_config\n Kind: string\n Description: Dica para o modo de visualização de dados.\n - Path: hints.uiModes.presentation\n Category: form_config\n Kind: string\n Description: Dica para o modo de apresentação da UI.\n - Path: hints.uiModes.readonly\n Category: form_config\n Kind: string\n Description: Dica para o modo de somente leitura da UI.\n - Path: hints.uiModes.disabled\n Category: form_config\n Kind: string\n Description: Dica para o modo desabilitado da UI.\n - Path: hints.uiModes.visible\n Category: form_config\n Kind: string\n Description: Dica para o modo de visibilidade da UI.\n - Path: fieldMetadata[].id\n Category: identity\n Kind: string\n Description: Identificador unico da instancia do componente.\n - Path: fieldMetadata[].version\n Category: identity\n Kind: string\n Description: Versao do schema de metadata (migracao).\n - Path: fieldMetadata[].context\n Category: identity\n Kind: enum\n Description: Contexto de uso do componente (form/filter/table/dialog/standalone).\n - Path: fieldMetadata[].createdAt\n Category: misc\n Kind: string\n Description: Timestamp de criacao (ISO).\n - Path: fieldMetadata[].updatedAt\n Category: misc\n Kind: string\n Description: Timestamp de atualizacao (ISO).\n - Path: fieldMetadata[].tags\n Category: identity\n Kind: array\n Description: Tags para categorizacao e busca.\n - Path: fieldMetadata[].cssClass\n Category: appearance\n Kind: string\n Description: Classe CSS aplicada ao host do componente.\n - Path: fieldMetadata[].style\n Category: appearance\n Kind: object\n Description: Estilos inline (objeto CSS).\n - Path: fieldMetadata[].dataAttributes\n Category: data\n Kind: object\n Description: Data attributes para teste/analytics.\n - Path: fieldMetadata[].name\n Category: identity\n Kind: string\n Description: Identificador único do campo. Essencial para binding.\n - Path: fieldMetadata[].label\n Category: identity\n Kind: string\n Description: Rótulo principal exibido para o usuário.\n - Path: fieldMetadata[].placeholder\n Category: identity\n Kind: string\n Description: Texto temporário exibido quando vazio.\n - Path: fieldMetadata[].hint\n Category: identity\n Kind: string\n Description: Texto de ajuda exibido abaixo do campo.\n - Path: fieldMetadata[].helpText\n Category: identity\n Kind: string\n Description: Texto semântico de ajuda publicado pelo schema/DTO.\n - Path: fieldMetadata[].tooltip\n Category: identity\n Kind: string\n Description: Texto exibido ao passar o mouse.\n - Path: fieldMetadata[].tooltipOnHover\n Category: identity\n Kind: boolean\n Description: Habilita apresentação do tooltip no hover quando suportado pelo renderer.\n - Path: fieldMetadata[].description\n Category: identity\n Kind: string\n Description: Descrição detalhada (usada em documentação ou helps extensos).\n - Path: fieldMetadata[].selectionMode\n Category: behavior\n Kind: enum\n Description: Semântica de seleção explícita para controles de escolha.\n - Path: fieldMetadata[].variant\n Category: appearance\n Kind: string\n Description: Variante visual/semântica do controle.\n - Path: fieldMetadata[].density\n Category: appearance\n Kind: enum\n Description: Densidade visual do shell do controle.\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 - Path: fieldMetadata[].group\n Category: identity\n Kind: string\n Description: Agrupador lógico do campo.\n - Path: fieldMetadata[].order\n Category: layout\n Kind: number\n Description: Ordem de exibição do campo.\n - Path: fieldMetadata[].width\n Category: layout\n Kind: string\n Description: Largura do campo (ex: 50%, 100px).\n - Path: fieldMetadata[].isFlex\n Category: layout\n Kind: boolean\n Description: Se true, usa flex-grow para preencher espaço.\n - Path: fieldMetadata[].controlType\n Category: behavior\n Kind: enum\n Description: Tipo do componente de UI (input, select, datepicker, etc).\n - Path: fieldMetadata[].dataType\n Category: data\n Kind: enum\n Description: Tipo de dado do campo (text, number, date, etc).\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 - 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 - 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 - Path: fieldMetadata[].materialDesign.appearance\n Category: appearance\n Kind: enum\n Description: Aparência do campo Material (fill/outline).\n - Path: fieldMetadata[].materialDesign.color\n Category: appearance\n Kind: enum\n Description: Tema de cor Material (primary/accent/warn).\n - Path: fieldMetadata[].materialDesign.floatLabel\n Category: appearance\n Kind: enum\n Description: Comportamento do rótulo flutuante.\n - Path: fieldMetadata[].materialDesign.subscriptSizing\n Category: appearance\n Kind: enum\n Description: Estratégia de sizing do subscript (erros/hints).\n - Path: fieldMetadata[].materialDesign.hideRequiredMarker\n Category: appearance\n Kind: boolean\n Description: Oculta o asterisco de campo obrigatório.\n - Path: fieldMetadata[].materialDesign.density\n Category: appearance\n Kind: enum\n Description: Densidade do campo Material.\n - Path: fieldMetadata[].materialDesign.disableRipple\n Category: appearance\n Kind: boolean\n Description: Desativa ripple/ondulação em componentes Material.\n - Path: fieldMetadata[].materialDesign.customPalette\n Category: appearance\n Kind: object\n Description: Override de paleta (primary/accent/warn).\n - Path: fieldMetadata[].materialDesign.animations\n Category: appearance\n Kind: object\n Description: Configuração de animações (disable, duration, easing).\n - Path: fieldMetadata[].prefixIcon\n Category: appearance\n Kind: string\n Description: Ícone exibido antes do valor.\n - Path: fieldMetadata[].suffixIcon\n Category: appearance\n Kind: string\n Description: Ícone exibido depois do valor.\n - Path: fieldMetadata[].iconPosition\n Category: appearance\n Kind: enum\n Description: Posição preferencial do ícone principal.\n - Path: fieldMetadata[].iconSize\n Category: appearance\n Kind: enum\n Description: Tamanho do ícone.\n - Path: fieldMetadata[].iconColor\n Category: appearance\n Kind: string\n Description: Cor semântica ou token de cor aplicado ao ícone principal.\n - Path: fieldMetadata[].iconClass\n Category: appearance\n Kind: string\n Description: Classe CSS controlada pelo host para o ícone principal.\n - Path: fieldMetadata[].iconStyle\n Category: appearance\n Kind: string\n Description: Estilo visual semântico do ícone quando o renderer suportar variações.\n - Path: fieldMetadata[].iconFontSize\n Category: appearance\n Kind: string\n Description: Tamanho tipográfico do ícone principal.\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 - 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 - Path: fieldMetadata[].presentation.presenter\n Category: appearance\n Kind: enum\n Description: Tipo semantico de renderizacao em modo apresentacao.\n - Path: fieldMetadata[].presentation.tone\n Category: appearance\n Kind: enum\n Description: Tom semantico mapeado pelo consumidor para tokens de tema.\n - Path: fieldMetadata[].presentation.appearance\n Category: appearance\n Kind: enum\n Description: Nivel de enfase visual do apresentador.\n - Path: fieldMetadata[].presentation.icon\n Category: appearance\n Kind: string\n Description: Nome de icone Material Symbols usado pelo apresentador semantico.\n - Path: fieldMetadata[].presentation.label\n Category: identity\n Kind: string\n Description: Rotulo semantico exibido por apresentadores como status, badge ou chip.\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 - 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 - 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 - Path: fieldMetadata[].presentation.valuePresentation\n Category: appearance\n Kind: object\n Description: Override de formatacao aplicado apenas pela superficie de apresentacao.\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 - Path: fieldMetadata[].presentation.visualization.kind\n Category: appearance\n Kind: enum\n Description: Tipo semantico da micro visualizacao de apresentacao.\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 - Path: fieldMetadata[].presentation.visualization.size\n Category: layout\n Kind: enum\n Description: Tamanho semantico da micro visualizacao.\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 - 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 - Path: fieldMetadata[].presentationRules[].when\n Category: behavior\n Kind: object\n Description: Guarda Json Logic avaliada contra o contexto de apresentacao do campo.\n - Path: fieldMetadata[].presentationRules[].set\n Category: appearance\n Kind: object\n Description: Patch semantico aplicado sobre presentation quando a guarda for verdadeira.\n - Path: fieldMetadata[].mask\n Category: appearance\n Kind: string\n Description: Máscara de input (padrão do componente).\n - Path: fieldMetadata[].format\n Category: appearance\n Kind: string\n Description: Formato de exibição (ex: pipes).\n - Path: fieldMetadata[].validators\n Category: validation\n Kind: object\n Description: Objeto contendo todas as regras de validação.\n - Path: fieldMetadata[].validators.required\n Category: validation\n Kind: boolean\n Description: Campo obrigatório.\n - Path: fieldMetadata[].required\n Category: validation\n Kind: boolean\n Description: Campo obrigatório (alias rápido do validators.required).\n - Path: fieldMetadata[].validators.requiredMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para required.\n - Path: fieldMetadata[].validators.email\n Category: validation\n Kind: boolean\n Description: Validação de formato de e-mail.\n - Path: fieldMetadata[].validators.emailMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para validação de email.\n - Path: fieldMetadata[].validators.minLength\n Category: validation\n Kind: number\n Description: Comprimento mínimo do texto.\n - Path: fieldMetadata[].validators.minLengthMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para minLength.\n - Path: fieldMetadata[].validators.maxLength\n Category: validation\n Kind: number\n Description: Comprimento máximo do texto.\n - Path: fieldMetadata[].validators.maxLengthMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para maxLength.\n - Path: fieldMetadata[].validators.min\n Category: validation\n Kind: number\n Description: Valor numérico mínimo.\n - Path: fieldMetadata[].validators.minMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para min.\n - Path: fieldMetadata[].validators.max\n Category: validation\n Kind: number\n Description: Valor numérico máximo.\n - Path: fieldMetadata[].validators.maxMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para max.\n - Path: fieldMetadata[].validators.pattern\n Category: validation\n Kind: string\n Description: Regex para validação.\n - Path: fieldMetadata[].validators.patternMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para pattern.\n - Path: fieldMetadata[].validators.cpf\n Category: validation\n Kind: boolean\n Description: Validador de CPF (legado).\n - Path: fieldMetadata[].validators.cnpj\n Category: validation\n Kind: boolean\n Description: Validador de CNPJ (legado).\n - Path: fieldMetadata[].validators.cpfCnpj\n Category: validation\n Kind: boolean\n Description: Validador automatico CPF/CNPJ (legado).\n - Path: fieldMetadata[].validators.cnpjAlpha\n Category: validation\n Kind: boolean\n Description: Validador de CNPJ alfanumerico (legado).\n - Path: fieldMetadata[].validators.cpfMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para CPF.\n - Path: fieldMetadata[].validators.cnpjMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para CNPJ.\n - Path: fieldMetadata[].validators.cnpjAlphaMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para CNPJ alfanumerico.\n - Path: fieldMetadata[].validators.url\n Category: validation\n Kind: boolean\n Description: Validador de URL.\n - Path: fieldMetadata[].validators.urlMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para URL.\n - Path: fieldMetadata[].validators.minWords\n Category: validation\n Kind: number\n Description: Mínimo de palavras.\n - Path: fieldMetadata[].validators.requiredChecked\n Category: validation\n Kind: boolean\n Description: Exige checkbox marcado (ex: termos de uso).\n - Path: fieldMetadata[].validators.customValidator\n Category: validation\n Kind: expression\n Description: Validador customizado (função).\n - Path: fieldMetadata[].validators.asyncValidator\n Category: validation\n Kind: expression\n Description: Validador async customizado (função).\n - Path: fieldMetadata[].validators.matchField\n Category: validation\n Kind: string\n Description: Campo que deve coincidir (cross-field).\n - Path: fieldMetadata[].validators.matchFieldMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para matchField.\n - Path: fieldMetadata[].validators.uniqueValidator\n Category: validation\n Kind: expression\n Description: Validador de unicidade via API (função).\n - Path: fieldMetadata[].validators.uniqueMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para unicidade.\n - Path: fieldMetadata[].validators.conditionalValidation\n Category: validation\n Kind: array\n Description: Regras de validação condicional.\n - Path: fieldMetadata[].validators.conditionalValidation[].condition\n Category: validation\n Kind: expression\n Description: Condicao para aplicar validadores.\n - Path: fieldMetadata[].validators.conditionalValidation[].validators\n Category: validation\n Kind: object\n Description: Conjunto de validadores aplicados quando a condicao for verdadeira.\n - Path: fieldMetadata[].validators.validationTrigger\n Category: validation\n Kind: enum\n Description: Gatilho de validação no validator.\n - Path: fieldMetadata[].validators.validationDebounce\n Category: validation\n Kind: number\n Description: Debounce de validação no validator (ms).\n - Path: fieldMetadata[].validators.showInlineErrors\n Category: validation\n Kind: boolean\n Description: Exibe erros inline (validator).\n - Path: fieldMetadata[].validators.errorPosition\n Category: validation\n Kind: enum\n Description: Posicao do erro (validator).\n - Path: fieldMetadata[].validationMode\n Category: validation\n Kind: enum\n Description: Gatilho da validação (change/blur/submit).\n - Path: fieldMetadata[].debounceTime\n Category: validation\n Kind: number\n Description: Debounce para validação em ms.\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 - Path: fieldMetadata[].endpoint\n Category: data\n Kind: string\n Description: URL para carregar opções remotas.\n - Path: fieldMetadata[].valueField\n Category: data\n Kind: string\n Description: Nome da propriedade de valor nas opções.\n - Path: fieldMetadata[].displayField\n Category: data\n Kind: string\n Description: Nome da propriedade de texto nas opções.\n - Path: fieldMetadata[].filterField\n Category: data\n Kind: string\n Description: Campo para filtragem no backend.\n - Path: fieldMetadata[].queryParams\n Category: data\n Kind: object\n Description: Parâmetros fixos para a query do endpoint.\n - Path: fieldMetadata[].cacheDuration\n Category: data\n Kind: number\n Description: Duração do cache de dados em ms.\n - Path: fieldMetadata[].hidden\n Category: behavior\n Kind: boolean\n Description: Oculta o campo globalmente.\n - Path: fieldMetadata[].visibleIn\n Category: behavior\n Kind: array\n Description: Contextos onde o campo é visível.\n - Path: fieldMetadata[].formHidden\n Category: behavior\n Kind: boolean\n Description: Oculta apenas no formulário.\n - Path: fieldMetadata[].tableHidden\n Category: behavior\n Kind: boolean\n Description: Oculta apenas na tabela.\n - Path: fieldMetadata[].filterHidden\n Category: behavior\n Kind: boolean\n Description: Oculta apenas no filtro.\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 - 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 - 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 - Path: fieldMetadata[].fieldAccess.reason\n Category: misc\n Kind: string\n Description: Justificativa explicativa/auditavel da politica de acesso do campo.\n - Path: fieldMetadata[].dependencyFields\n Category: dependency\n Kind: array\n Description: Campos dos quais este campo depende.\n - Path: fieldMetadata[].conditionalRequired\n Category: dependency\n Kind: expression\n Description: Condição Json Logic para obrigatoriedade declarativa.\n - Path: fieldMetadata[].conditionalDisplay\n Category: dependency\n Kind: expression\n Description: Condição Json Logic para visibilidade declarativa.\n - Path: fieldMetadata[].dependencyFilterMap\n Category: dependency\n Kind: object\n Description: Mapeamento de filtro baseado na dependência.\n - Path: fieldMetadata[].dependencyValuePath\n Category: dependency\n Kind: string\n Description: Caminho no valor da dependência.\n - Path: fieldMetadata[].dependencyMergeStrategy\n Category: dependency\n Kind: enum\n Description: Estratégia de merge dos dados carregados.\n - Path: fieldMetadata[].dependencyLoadOnChange\n Category: dependency\n Kind: enum\n Description: Quando recarregar dependência.\n - Path: fieldMetadata[].resetOnDependentChange\n Category: dependency\n Kind: boolean\n Description: Zera valor se dependência mudar.\n - Path: fieldMetadata[].enableDependencyCascade\n Category: dependency\n Kind: boolean\n Description: Habilita/desabilita cascata nativa de dependências entre campos.\n - Path: fieldMetadata[].dependencyDebounceMs\n Category: dependency\n Kind: number\n Description: Delay para reagir à mudança de dependência.\n - Path: fieldMetadata[].suppressInlineErrorsOnCascade\n Category: dependency\n Kind: boolean\n Description: Suprime erros inline durante cascata.\n - Path: fieldMetadata[].transformDisplayValue\n Category: transform\n Kind: expression\n Description: Transforma valor para exibição.\n - Path: fieldMetadata[].transformSaveValue\n Category: transform\n Kind: expression\n Description: Transforma valor para salvar.\n - Path: fieldMetadata[].textTransformApply\n Category: transform\n Kind: enum\n Description: Quando aplicar transformação de texto.\n - Path: fieldMetadata[].inlineEditing\n Category: behavior\n Kind: boolean\n Description: Permite edição inline (tabelas).\n - Path: fieldMetadata[].unique\n Category: validation\n Kind: boolean\n Description: Valida unicidade no backend.\n - Path: fieldMetadata[].readOnly\n Category: behavior\n Kind: boolean\n Description: Campo somente leitura.\n - Path: fieldMetadata[].disabled\n Category: behavior\n Kind: boolean\n Description: Campo desabilitado.\n - Path: fieldMetadata[].defaultValue\n Category: data\n Kind: object\n Description: Valor inicial do campo.\n - Path: fieldMetadata[].ariaLabel\n Category: accessibility\n Kind: string\n Description: Label para leitores de tela.\n - Path: fieldMetadata[].ariaDescribedBy\n Category: accessibility\n Kind: string\n Description: IDs de descrição acessível.\n - Path: fieldMetadata[].tabIndex\n Category: accessibility\n Kind: number\n Description: Ordem de tabulacao para teclado.\n - Path: fieldMetadata[].accessKey\n Category: accessibility\n Kind: string\n Description: Atalho de teclado (accessKey).\nComponent Capabilities:\n - Path: component\n Category: meta\n Kind: enum\n Description: Identificador fixo do componente.\n - Path: resource\n Category: resource\n Kind: object\n Description: Recurso principal do CRUD.\n - Path: resource.path\n Category: resource\n Kind: string\n Description: Endpoint base do recurso.\n - Path: resource.idField\n Category: resource\n Kind: string\n Description: Campo identificador do recurso.\n - Path: resource.endpointKey\n Category: resource\n Kind: string\n Description: Chave de endpoint (ApiEndpoint).\n - Path: queryContext.meta.domainCatalog\n Category: resource\n Kind: object\n Description: Referencia leve para contexto semantico/governanca resolvido via Domain Catalog; nao materializa regras em FormConfig.\n - Path: queryContext.meta.domainCatalog.schemaVersion\n Category: resource\n Kind: string\n Description: Versao do contrato DomainCatalogContextHint usado em runtime e prompts.\n - Path: queryContext.meta.domainCatalog.resourceKey\n Category: resource\n Kind: string\n Description: ResourceKey semantico estavel usado para resolver vocabulario/governanca de dominio.\n - Path: queryContext.meta.domainCatalog.releaseId\n Category: resource\n Kind: string\n Description: Release opcional do Domain Catalog usada como fonte do contexto.\n - Path: queryContext.meta.domainCatalog.query\n Category: resource\n Kind: string\n Description: Probe de campo/conceito usado para buscar itens relevantes, como cpf, salario ou status.\n - Path: queryContext.meta.domainCatalog.intent\n Category: resource\n Kind: enum\n Description: Intencao de uso do contexto para orientar LLMs e validadores sem expor dados alem do necessario.\n - Path: table\n Category: table\n Kind: object\n Description: TableConfig completo (usar catalogo de tabela).\n - Path: form\n Category: form\n Kind: object\n Description: FormConfig completo (usar catalogo de formulario).\n - Path: defaults\n Category: defaults\n Kind: object\n Description: Defaults aplicados a acoes e UI.\n - Path: defaults.openMode\n Category: defaults\n Kind: enum\n Description: Modo padrao de abertura (route/modal/drawer).\n - Path: defaults.modal\n Category: defaults\n Kind: object\n Description: Config de dialog (DialogConfig).\n - Path: defaults.back\n Category: navigation\n Kind: object\n Description: Config de retorno (BackConfig).\n - Path: defaults.back.strategy\n Category: navigation\n Kind: enum\n Description: Estrategia de retorno.\n - Path: defaults.back.returnTo\n Category: navigation\n Kind: string\n Description: Rota de retorno quando strategy=navigate.\n - Path: defaults.back.confirmOnDirty\n Category: navigation\n Kind: boolean\n Description: Confirmar ao sair com alteracoes.\n - Path: defaults.header\n Category: defaults\n Kind: object\n Description: Config do header do CRUD.\n - Path: defaults.header.showBack\n Category: defaults\n Kind: boolean\n Description: Exibir botao voltar.\n - Path: defaults.header.backLabel\n Category: defaults\n Kind: string\n Description: Label do botao voltar.\n - Path: defaults.header.variant\n Category: defaults\n Kind: enum\n Description: Variante visual do header.\n - Path: defaults.header.sticky\n Category: defaults\n Kind: boolean\n Description: Header fixo.\n - Path: defaults.header.breadcrumbs\n Category: defaults\n Kind: boolean\n Description: Exibir breadcrumbs.\n - Path: defaults.header.divider\n Category: defaults\n Kind: boolean\n Description: Exibir divisor no header.\n - Path: actions\n Category: actions\n Kind: array\n Description: Acoes disponiveis no CRUD.\n - Path: actions[].id\n Category: actions\n Kind: string\n Description: ID da acao (RowAction/ToolbarAction).\n - Path: actions[].label\n Category: actions\n Kind: string\n Description: Label da acao.\n - Path: actions[].icon\n Category: actions\n Kind: string\n Description: Icone da acao.\n - Path: actions[].color\n Category: actions\n Kind: string\n Description: Cor da acao.\n - Path: actions[].disabled\n Category: actions\n Kind: boolean\n Description: Acao desabilitada.\n - Path: actions[].action\n Category: actions\n Kind: string\n Description: Nome da acao emitida.\n - Path: actions[].tooltip\n Category: actions\n Kind: string\n Description: Tooltip da acao.\n - Path: actions[].requiresConfirmation\n Category: actions\n Kind: boolean\n Description: Exige confirmacao.\n - Path: actions[].visibleWhen\n Category: actions\n Kind: expression\n Description: Condicao de visibilidade (RowAction/ToolbarAction).\n - Path: actions[].separator\n Category: actions\n Kind: boolean\n Description: Separador apos a acao (RowAction).\n - Path: actions[].autoDelete\n Category: actions\n Kind: boolean\n Description: Habilita auto delete (RowAction).\n - Path: actions[].deleteEndpoint\n Category: actions\n Kind: string\n Description: Endpoint custom para delete (RowAction).\n - Path: actions[].type\n Category: actions\n Kind: enum\n Description: Tipo de acao (ToolbarAction).\n - Path: actions[].appearance\n Category: actions\n Kind: enum\n Description: Aparencia do botao (ToolbarAction).\n - Path: actions[].position\n Category: actions\n Kind: enum\n Description: Posicao da acao (ToolbarAction).\n - Path: actions[].order\n Category: actions\n Kind: number\n Description: Ordem de exibicao (ToolbarAction).\n - Path: actions[].shortcut\n Category: actions\n Kind: string\n Description: Atalho de teclado (ToolbarAction).\n - Path: actions[].children\n Category: actions\n Kind: array\n Description: Sub-acoes (menu).\n - Path: actions[].openMode\n Category: actions\n Kind: enum\n Description: Modo de abertura da acao.\n - Path: actions[].route\n Category: actions\n Kind: string\n Description: Rota para openMode=route.\n - Path: actions[].formId\n Category: actions\n Kind: string\n Description: FormId canonico para modal/drawer; se ausente, o host precisa resolve-lo por override por acao antes da abertura.\n - Path: actions[].params\n Category: actions\n Kind: array\n Description: Mapeamento de parametros.\n - Path: actions[].params[].from\n Category: actions\n Kind: string\n Description: Origem do parametro.\n - Path: actions[].params[].to\n Category: actions\n Kind: enum\n Description: Destino do parametro.\n - Path: actions[].params[].name\n Category: actions\n Kind: string\n Description: Nome do parametro no destino.\n - Path: actions[].form.initialValue\n Category: actions\n Kind: object\n Description: Seed fixo do formulario injetado em inputs.initialValue antes da abertura.\n - Path: actions[].form.layoutPolicy\n Category: actions\n Kind: object\n Description: Politica schema-driven opt-in encaminhada ao Dynamic Form para materializar detalhe ou command form sem FormConfig.sections local; deve acompanhar schemaUrl compativel, especialmente schemaType=request para comandos.\n - Path: actions[].back\n Category: navigation\n Kind: object\n Description: BackConfig por acao.\n - Path: actions[].back.strategy\n Category: navigation\n Kind: enum\n Description: Estrategia de retorno da acao (auto, close, navigate).\n - Path: actions[].back.returnTo\n Category: navigation\n Kind: string\n Description: Rota ou destino usado quando a estrategia de retorno for navigate.\n - Path: actions[].back.confirmOnDirty\n Category: navigation\n Kind: boolean\n Description: Solicita confirmacao antes de sair com alteracoes nao salvas.\n - Path: i18n\n Category: i18n\n Kind: object\n Description: Mensagens i18n do CRUD.\n - Path: i18n.crudDialog\n Category: i18n\n Kind: object\n Description: Mapa de textos do dialog.\nCapability Notes:\n - CrudMetadata agrega TableConfig e FormConfig; use os catalogos de tabela e formulario para detalhes.\n - actions[] herda campos de RowAction e ToolbarAction; combine com openMode/route/formId quando aplicavel.\n",
|
|
6474
|
+
"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.",
|
|
6475
6475
|
"sourcePointer": "projects/praxis-crud/src/lib/ai/crud-ai-capabilities.ts",
|
|
6476
|
-
"contentHash": "
|
|
6476
|
+
"contentHash": "057e50c9848029496159e1fb7db4433e6d9f441e64f6f711fdd3e10eacef19fa",
|
|
6477
6477
|
"sourceKind": "component_definition",
|
|
6478
6478
|
"sourceId": "praxis-crud",
|
|
6479
6479
|
"corpusVersion": "1.0.0"
|
|
6480
6480
|
},
|
|
6481
6481
|
{
|
|
6482
6482
|
"chunkIndex": 2,
|
|
6483
|
+
"chunkKind": "capabilities",
|
|
6484
|
+
"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\".",
|
|
6485
|
+
"sourcePointer": "projects/praxis-crud/src/lib/ai/crud-ai-capabilities.ts",
|
|
6486
|
+
"contentHash": "7bd1ce34bf36df588bb3fae515d854a24b59a8fd48a9d58b2f8ecaae51ea105b",
|
|
6487
|
+
"sourceKind": "component_definition",
|
|
6488
|
+
"sourceId": "praxis-crud",
|
|
6489
|
+
"corpusVersion": "1.0.0"
|
|
6490
|
+
},
|
|
6491
|
+
{
|
|
6492
|
+
"chunkIndex": 3,
|
|
6493
|
+
"chunkKind": "capabilities",
|
|
6494
|
+
"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.",
|
|
6495
|
+
"sourcePointer": "projects/praxis-crud/src/lib/ai/crud-ai-capabilities.ts",
|
|
6496
|
+
"contentHash": "f34d296ee57e962539a19f213748c29fb83ce6cfa25db7beb9506f80822ca00e",
|
|
6497
|
+
"sourceKind": "component_definition",
|
|
6498
|
+
"sourceId": "praxis-crud",
|
|
6499
|
+
"corpusVersion": "1.0.0"
|
|
6500
|
+
},
|
|
6501
|
+
{
|
|
6502
|
+
"chunkIndex": 4,
|
|
6503
|
+
"chunkKind": "capabilities",
|
|
6504
|
+
"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.",
|
|
6505
|
+
"sourcePointer": "projects/praxis-crud/src/lib/ai/crud-ai-capabilities.ts",
|
|
6506
|
+
"contentHash": "9cfad48adaa90e88eb8231e6c56ea92199382bde6a062c94b11cc802f209516a",
|
|
6507
|
+
"sourceKind": "component_definition",
|
|
6508
|
+
"sourceId": "praxis-crud",
|
|
6509
|
+
"corpusVersion": "1.0.0"
|
|
6510
|
+
},
|
|
6511
|
+
{
|
|
6512
|
+
"chunkIndex": 5,
|
|
6513
|
+
"chunkKind": "capabilities",
|
|
6514
|
+
"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`.",
|
|
6515
|
+
"sourcePointer": "projects/praxis-crud/src/lib/ai/crud-ai-capabilities.ts",
|
|
6516
|
+
"contentHash": "b9d96b46a7eec674ad9cd481a6765bab68a58d01ecaf6114efa20d70502d0104",
|
|
6517
|
+
"sourceKind": "component_definition",
|
|
6518
|
+
"sourceId": "praxis-crud",
|
|
6519
|
+
"corpusVersion": "1.0.0"
|
|
6520
|
+
},
|
|
6521
|
+
{
|
|
6522
|
+
"chunkIndex": 6,
|
|
6523
|
+
"chunkKind": "capabilities",
|
|
6524
|
+
"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.",
|
|
6525
|
+
"sourcePointer": "projects/praxis-crud/src/lib/ai/crud-ai-capabilities.ts",
|
|
6526
|
+
"contentHash": "0d30c9ed381b5a69050e4922828ae287af246f0a927e7925cf1b0aa68e33fbb5",
|
|
6527
|
+
"sourceKind": "component_definition",
|
|
6528
|
+
"sourceId": "praxis-crud",
|
|
6529
|
+
"corpusVersion": "1.0.0"
|
|
6530
|
+
},
|
|
6531
|
+
{
|
|
6532
|
+
"chunkIndex": 7,
|
|
6533
|
+
"chunkKind": "capabilities",
|
|
6534
|
+
"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.",
|
|
6535
|
+
"sourcePointer": "projects/praxis-crud/src/lib/ai/crud-ai-capabilities.ts",
|
|
6536
|
+
"contentHash": "fd4b705c0e4b7d01233e4fe51a75532848dd9e3fd9ca5812f8faada5ee9f1fe0",
|
|
6537
|
+
"sourceKind": "component_definition",
|
|
6538
|
+
"sourceId": "praxis-crud",
|
|
6539
|
+
"corpusVersion": "1.0.0"
|
|
6540
|
+
},
|
|
6541
|
+
{
|
|
6542
|
+
"chunkIndex": 8,
|
|
6543
|
+
"chunkKind": "capabilities",
|
|
6544
|
+
"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.",
|
|
6545
|
+
"sourcePointer": "projects/praxis-crud/src/lib/ai/crud-ai-capabilities.ts",
|
|
6546
|
+
"contentHash": "680baee6a38106f22c4710309b6d65ef7e59d1ee08bb65cca97f004070a99d0c",
|
|
6547
|
+
"sourceKind": "component_definition",
|
|
6548
|
+
"sourceId": "praxis-crud",
|
|
6549
|
+
"corpusVersion": "1.0.0"
|
|
6550
|
+
},
|
|
6551
|
+
{
|
|
6552
|
+
"chunkIndex": 9,
|
|
6553
|
+
"chunkKind": "capabilities",
|
|
6554
|
+
"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.",
|
|
6555
|
+
"sourcePointer": "projects/praxis-crud/src/lib/ai/crud-ai-capabilities.ts",
|
|
6556
|
+
"contentHash": "02f3921c10fb0dd88775888b7143c2cad0a14ccd228d35ea95cdb587a28b3c3f",
|
|
6557
|
+
"sourceKind": "component_definition",
|
|
6558
|
+
"sourceId": "praxis-crud",
|
|
6559
|
+
"corpusVersion": "1.0.0"
|
|
6560
|
+
},
|
|
6561
|
+
{
|
|
6562
|
+
"chunkIndex": 10,
|
|
6563
|
+
"chunkKind": "capabilities",
|
|
6564
|
+
"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: component\n Category: meta\n Kind: enum\n Description: Identificador fixo do componente.\n\nComponent Capability:\n - Path: resource\n Category: resource\n Kind: object\n Description: Recurso principal do CRUD.\n\nComponent Capability:\n - Path: resource.path\n Category: resource\n Kind: string\n Description: Endpoint base do recurso.\n\nComponent Capability:\n - Path: resource.idField\n Category: resource\n Kind: string\n Description: Campo identificador do recurso.\n\nComponent Capability:\n - Path: resource.endpointKey\n Category: resource\n Kind: string\n Description: Chave de endpoint (ApiEndpoint).\n\nComponent Capability:\n - Path: queryContext.meta.domainCatalog\n Category: resource\n Kind: object\n Description: Referencia leve para contexto semantico/governanca resolvido via Domain Catalog; nao materializa regras em FormConfig.\n\nComponent Capability:\n - Path: queryContext.meta.domainCatalog.schemaVersion\n Category: resource\n Kind: string\n Description: Versao do contrato DomainCatalogContextHint usado em runtime e prompts.\n\nComponent Capability:\n - Path: queryContext.meta.domainCatalog.resourceKey\n Category: resource\n Kind: string\n Description: ResourceKey semantico estavel usado para resolver vocabulario/governanca de dominio.\n\nComponent Capability:\n - Path: queryContext.meta.domainCatalog.releaseId\n Category: resource\n Kind: string\n Description: Release opcional do Domain Catalog usada como fonte do contexto.\n\nComponent Capability:\n - Path: queryContext.meta.domainCatalog.query\n Category: resource\n Kind: string\n Description: Probe de campo/conceito usado para buscar itens relevantes, como cpf, salario ou status.\n\nComponent Capability:\n - Path: queryContext.meta.domainCatalog.intent\n Category: resource\n Kind: enum\n Description: Intencao de uso do contexto para orientar LLMs e validadores sem expor dados alem do necessario.\n\nComponent Capability:\n - Path: table\n Category: table\n Kind: object\n Description: TableConfig completo (usar catalogo de tabela).\n\nComponent Capability:\n - Path: form\n Category: form\n Kind: object\n Description: FormConfig completo (usar catalogo de formulario).\n\nComponent Capability:\n - Path: defaults\n Category: defaults\n Kind: object\n Description: Defaults aplicados a acoes e UI.\n\nComponent Capability:\n - Path: defaults.openMode\n Category: defaults\n Kind: enum\n Description: Modo padrao de abertura (route/modal/drawer).\n\nComponent Capability:\n - Path: defaults.modal\n Category: defaults\n Kind: object\n Description: Config de dialog (DialogConfig).\n\nComponent Capability:\n - Path: defaults.back\n Category: navigation\n Kind: object\n Description: Config de retorno (BackConfig).\n\nComponent Capability:\n - Path: defaults.back.strategy\n Category: navigation\n Kind: enum\n Description: Estrategia de retorno.\n\nComponent Capability:\n - Path: defaults.back.returnTo\n Category: navigation\n Kind: string\n Description: Rota de retorno quando strategy=navigate.\n\nComponent Capability:\n - Path: defaults.back.confirmOnDirty\n Category: navigation\n Kind: boolean\n Description: Confirmar ao sair com alteracoes.\n\nComponent Capability:\n - Path: defaults.header\n Category: defaults\n Kind: object\n Description: Config do header do CRUD.\n\nComponent Capability:\n - Path: defaults.header.showBack\n Category: defaults\n Kind: boolean\n Description: Exibir botao voltar.\n\nComponent Capability:\n - Path: defaults.header.backLabel\n Category: defaults\n Kind: string\n Description: Label do botao voltar.\n\nComponent Capability:\n - Path: defaults.header.variant\n Category: defaults\n Kind: enum\n Description: Variante visual do header.\n\nComponent Capability:\n - Path: defaults.header.sticky\n Category: defaults\n Kind: boolean\n Description: Header fixo.\n\nComponent Capability:\n - Path: defaults.header.breadcrumbs\n Category: defaults\n Kind: boolean\n Description: Exibir breadcrumbs.\n\nComponent Capability:\n - Path: defaults.header.divider\n Category: defaults\n Kind: boolean\n Description: Exibir divisor no header.\n\nComponent Capability:\n - Path: actions\n Category: actions\n Kind: array\n Description: Acoes disponiveis no CRUD.\n\nComponent Capability:\n - Path: actions[].id\n Category: actions\n Kind: string\n Description: ID da acao (RowAction/ToolbarAction).\n\nComponent Capability:\n - Path: actions[].label\n Category: actions\n Kind: string\n Description: Label da acao.\n\nComponent Capability:\n - Path: actions[].icon\n Category: actions\n Kind: string\n Description: Icone da acao.\n\nComponent Capability:\n - Path: actions[].color\n Category: actions\n Kind: string\n Description: Cor da acao.\n\nComponent Capability:\n - Path: actions[].disabled\n Category: actions\n Kind: boolean\n Description: Acao desabilitada.\n\nComponent Capability:\n - Path: actions[].action\n Category: actions\n Kind: string\n Description: Nome da acao emitida.\n\nComponent Capability:\n - Path: actions[].tooltip\n Category: actions\n Kind: string\n Description: Tooltip da acao.\n\nComponent Capability:\n - Path: actions[].requiresConfirmation\n Category: actions\n Kind: boolean\n Description: Exige confirmacao.\n\nComponent Capability:\n - Path: actions[].visibleWhen\n Category: actions\n Kind: expression\n Description: Condicao de visibilidade (RowAction/ToolbarAction).\n\nComponent Capability:\n - Path: actions[].separator\n Category: actions\n Kind: boolean\n Description: Separador apos a acao (RowAction).\n\nComponent Capability:\n - Path: actions[].autoDelete\n Category: actions\n Kind: boolean\n Description: Habilita auto delete (RowAction).\n\nComponent Capability:\n - Path: actions[].deleteEndpoint\n Category: actions\n Kind: string\n Description: Endpoint custom para delete (RowAction).\n\nComponent Capability:\n - Path: actions[].type\n Category: actions\n Kind: enum\n Description: Tipo de acao (ToolbarAction).",
|
|
6565
|
+
"sourcePointer": "projects/praxis-crud/src/lib/ai/crud-ai-capabilities.ts",
|
|
6566
|
+
"contentHash": "0e7eb503bdd20832cac2f21e32b2d1eae991aa90c2c2b58f9ec2bcc19de06a71",
|
|
6567
|
+
"sourceKind": "component_definition",
|
|
6568
|
+
"sourceId": "praxis-crud",
|
|
6569
|
+
"corpusVersion": "1.0.0"
|
|
6570
|
+
},
|
|
6571
|
+
{
|
|
6572
|
+
"chunkIndex": 11,
|
|
6573
|
+
"chunkKind": "capabilities",
|
|
6574
|
+
"content": "Component Capability:\n - Path: actions[].appearance\n Category: actions\n Kind: enum\n Description: Aparencia do botao (ToolbarAction).\n\nComponent Capability:\n - Path: actions[].position\n Category: actions\n Kind: enum\n Description: Posicao da acao (ToolbarAction).\n\nComponent Capability:\n - Path: actions[].order\n Category: actions\n Kind: number\n Description: Ordem de exibicao (ToolbarAction).\n\nComponent Capability:\n - Path: actions[].shortcut\n Category: actions\n Kind: string\n Description: Atalho de teclado (ToolbarAction).\n\nComponent Capability:\n - Path: actions[].children\n Category: actions\n Kind: array\n Description: Sub-acoes (menu).\n\nComponent Capability:\n - Path: actions[].openMode\n Category: actions\n Kind: enum\n Description: Modo de abertura da acao.\n\nComponent Capability:\n - Path: actions[].route\n Category: actions\n Kind: string\n Description: Rota para openMode=route.\n\nComponent Capability:\n - Path: actions[].formId\n Category: actions\n Kind: string\n Description: FormId canonico para modal/drawer; se ausente, o host precisa resolve-lo por override por acao antes da abertura.\n\nComponent Capability:\n - Path: actions[].params\n Category: actions\n Kind: array\n Description: Mapeamento de parametros.\n\nComponent Capability:\n - Path: actions[].params[].from\n Category: actions\n Kind: string\n Description: Origem do parametro.\n\nComponent Capability:\n - Path: actions[].params[].to\n Category: actions\n Kind: enum\n Description: Destino do parametro.\n\nComponent Capability:\n - Path: actions[].params[].name\n Category: actions\n Kind: string\n Description: Nome do parametro no destino.\n\nComponent Capability:\n - Path: actions[].form.initialValue\n Category: actions\n Kind: object\n Description: Seed fixo do formulario injetado em inputs.initialValue antes da abertura.\n\nComponent Capability:\n - Path: actions[].form.layoutPolicy\n Category: actions\n Kind: object\n Description: Politica schema-driven opt-in encaminhada ao Dynamic Form para materializar detalhe ou command form sem FormConfig.sections local; deve acompanhar schemaUrl compativel, especialmente schemaType=request para comandos.\n\nComponent Capability:\n - Path: actions[].back\n Category: navigation\n Kind: object\n Description: BackConfig por acao.\n\nComponent Capability:\n - Path: actions[].back.strategy\n Category: navigation\n Kind: enum\n Description: Estrategia de retorno da acao (auto, close, navigate).\n\nComponent Capability:\n - Path: actions[].back.returnTo\n Category: navigation\n Kind: string\n Description: Rota ou destino usado quando a estrategia de retorno for navigate.\n\nComponent Capability:\n - Path: actions[].back.confirmOnDirty\n Category: navigation\n Kind: boolean\n Description: Solicita confirmacao antes de sair com alteracoes nao salvas.\n\nComponent Capability:\n - Path: i18n\n Category: i18n\n Kind: object\n Description: Mensagens i18n do CRUD.\n\nComponent Capability:\n - Path: i18n.crudDialog\n Category: i18n\n Kind: object\n Description: Mapa de textos do dialog.\n\nCapability Note:\n - CrudMetadata agrega TableConfig e FormConfig; use os catalogos de tabela e formulario para detalhes.\n\nCapability Note:\n - actions[] herda campos de RowAction e ToolbarAction; combine com openMode/route/formId quando aplicavel.",
|
|
6575
|
+
"sourcePointer": "projects/praxis-crud/src/lib/ai/crud-ai-capabilities.ts",
|
|
6576
|
+
"contentHash": "c9480d5b125a289a3cccf03b035759e277292fbad0895fe783128d5ef9d80691",
|
|
6577
|
+
"sourceKind": "component_definition",
|
|
6578
|
+
"sourceId": "praxis-crud",
|
|
6579
|
+
"corpusVersion": "1.0.0"
|
|
6580
|
+
},
|
|
6581
|
+
{
|
|
6582
|
+
"chunkIndex": 12,
|
|
6483
6583
|
"chunkKind": "authoring_manifest",
|
|
6484
|
-
"content": "{\n \"schemaVersion\": \"1.0.0\",\n \"componentId\": \"praxis-crud\",\n \"ownerPackage\": \"@praxisui/crud\",\n \"configSchemaId\": \"CrudMetadata\",\n \"manifestVersion\": \"1.0.0\",\n \"runtimeInputs\": [\n {\n \"name\": \"metadata\",\n \"type\": \"CrudMetadata | string\",\n \"description\": \"Canonical CRUD metadata or serialized metadata document.\"\n },\n {\n \"name\": \"crudId\",\n \"type\": \"string\",\n \"description\": \"Stable CRUD instance id used for table/form identity and persistence.\"\n },\n {\n \"name\": \"componentInstanceId\",\n \"type\": \"string\",\n \"description\": \"Optional stable host instance id for multiple CRUD widgets on the same route.\"\n },\n {\n \"name\": \"context\",\n \"type\": \"Record<string, unknown>\",\n \"description\": \"Opaque host context used for authoring seeds and launcher inputs.\"\n },\n {\n \"name\": \"enableCustomization\",\n \"type\": \"boolean\",\n \"description\": \"Explicit host opt-in for CRUD authoring surfaces.\"\n },\n {\n \"name\": \"authoringCapability\",\n \"type\": \"string | null\",\n \"description\": \"Public runtime capability required before CRUD and delegated table authoring can open.\"\n },\n {\n \"name\": \"afterOpen\",\n \"type\": \"{ mode: FormOpenMode; action: string }\",\n \"description\": \"Emitted after a CRUD action opens.\"\n },\n {\n \"name\": \"afterSave\",\n \"type\": \"{ id: string | number; data: unknown }\",\n \"description\": \"Emitted after save; CRUD refetches the list.\"\n },\n {\n \"name\": \"afterDelete\",\n \"type\": \"{ id: string | number }\",\n \"description\": \"Emitted after delete; CRUD refetches the list.\"\n }\n ],\n \"editableTargets\": [\n {\n \"kind\": \"resourceBinding\",\n \"resolver\": \"crud-resource-by-path-or-key\",\n \"description\": \"Resource path/key, optional schema path template, id field, endpoint key and query context owned by CRUD orchestration.\"\n },\n {\n \"kind\": \"listSurface\",\n \"resolver\": \"crud-list-surface\",\n \"description\": \"CRUD-hosted list surface and table delegation boundary.\"\n },\n {\n \"kind\": \"createSurface\",\n \"resolver\": \"crud-action-by-id:create\",\n \"description\": \"Create action open mode, route/form binding and launcher inputs.\"\n },\n {\n \"kind\": \"editSurface\",\n \"resolver\": \"crud-action-by-id:edit\",\n \"description\": \"Edit action open mode, route/form binding and launcher inputs.\"\n },\n {\n \"kind\": \"viewSurface\",\n \"resolver\": \"crud-action-by-id:view\",\n \"description\": \"View action open mode, route/form binding and launcher inputs.\"\n },\n {\n \"kind\": \"deleteBehavior\",\n \"resolver\": \"crud-action-by-id:delete\",\n \"description\": \"Delete action enablement, confirmation, endpoint and capability policy.\"\n },\n {\n \"kind\": \"dialogHost\",\n \"resolver\": \"crud-dialog-host-defaults\",\n \"description\": \"Route/modal/drawer defaults consumed by CrudLauncherService and DynamicFormDialogHostComponent, including contextual shell titles derived from action label, form title or resource metadata.\"\n },\n {\n \"kind\": \"formBinding\",\n \"resolver\": \"crud-action-form-contract-by-action-id\",\n \"description\": \"CRUD-owned form binding fields: formId, schemaUrl, submitUrl, submitMethod, params and initialValue. Shared FormConfig remains owned by Dynamic Form and is forwarded through CrudMetadata.form when present.\"\n },\n {\n \"kind\": \"permissions\",\n \"resolver\": \"crud-resource-capabilities\",\n \"description\": \"CRUD action availability derived from resource capabilities and action permissions.\"\n },\n {\n \"kind\": \"domainGovernanceContext\",\n \"resolver\": \"domain-catalog-context-by-resource-key\",\n \"description\": \"Read-only semantic/governance context resolved from Domain Catalog and referenced from CRUD queryContext.meta.\"\n },\n {\n \"kind\": \"childOperation\",\n \"resolver\": \"child-authoring-manifest-operation\",\n \"description\": \"Delegated form/table/dialog/settings-panel operation owned by the child component manifest.\"\n }\n ],\n \"operations\": [\n {\n \"operationId\": \"resource.bind\",\n \"title\": \"Bind CRUD resource\",\n \"scope\": \"dataBinding\",\n \"targetKind\": \"resourceBinding\",\n \"target\": {\n \"kind\": \"resourceBinding\",\n \"resolver\": \"crud-resource-by-path-or-key\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"resourcePath\"\n ],\n \"properties\": {\n \"resourcePath\": {\n \"type\": \"string\"\n },\n \"resourceKey\": {\n \"type\": \"string\"\n },\n \"idField\": {\n \"type\": [\n \"string\",\n \"number\"\n ]\n },\n \"endpointKey\": {\n \"type\": \"string\"\n },\n \"queryContext\": {\n \"type\": \"object\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"compile-domain-patch\",\n \"handler\": \"crud-resource-bind\",\n \"handlerContract\": {\n \"reads\": [\n \"CrudMetadata.resource\",\n \"api_metadata\",\n \"ResourceDiscoveryService\",\n \"GET /{resource}/capabilities\"\n ],\n \"writes\": [\n \"CrudMetadata.resource\",\n \"CrudMetadata.queryContext\",\n \"PraxisCrudComponent.tableCrudContext\"\n ],\n \"identityKeys\": [\n \"resourcePath\",\n \"resourceKey\",\n \"schemaPath\"\n ],\n \"failureModes\": [\n \"resource-not-found\",\n \"schema-url-not-canonical\",\n \"capabilities-unavailable\",\n \"id-field-missing\"\n ],\n \"description\": \"Binds CRUD to a canonical resource and validates it against api_metadata/resource capabilities before runtime use. Use CrudMetadata.resource.schemaPath when schema discovery must use a templated path while resource.path targets a concrete nested collection.\"\n }\n }\n ],\n \"validators\": [\n \"resource-exists-in-api-metadata\",\n \"resource-path-canonical\",\n \"resource-key-stable\",\n \"id-field-known\",\n \"resource-capabilities-resolvable\"\n ],\n \"affectedPaths\": [\n \"resource.path\",\n \"resource.schemaPath\",\n \"resource.idField\",\n \"resource.endpointKey\",\n \"resource.apiUrlEntry\",\n \"queryContext\",\n \"filterCriteria\"\n ],\n \"submissionImpact\": \"affects-remote-binding\",\n \"preconditions\": [\n \"crud-metadata-loaded\",\n \"api-metadata-available\"\n ]\n },\n {\n \"operationId\": \"domain.governanceContext.attach\",\n \"title\": \"Attach Domain Catalog governance context\",\n \"scope\": \"dataBinding\",\n \"targetKind\": \"domainGovernanceContext\",\n \"target\": {\n \"kind\": \"domainGovernanceContext\",\n \"resolver\": \"domain-catalog-context-by-resource-key\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"resourceKey\",\n \"query\"\n ],\n \"properties\": {\n \"resourceKey\": {\n \"type\": \"string\"\n },\n \"releaseId\": {\n \"type\": \"string\"\n },\n \"query\": {\n \"type\": \"string\"\n },\n \"itemTypes\": {\n \"type\": \"array\",\n \"items\": {\n \"enum\": [\n \"governance\",\n \"vocabulary\",\n \"relationship\"\n ]\n }\n },\n \"intent\": {\n \"enum\": [\n \"authoring\",\n \"explain\",\n \"validate\",\n \"ai-access-control\"\n ]\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"compile-domain-patch\",\n \"handler\": \"crud-domain-governance-context-attach\",\n \"handlerContract\": {\n \"reads\": [\n \"CrudMetadata.resource\",\n \"CrudMetadata.queryContext\",\n \"DomainCatalogService.getGovernanceContext\",\n \"DOMAIN_CATALOG_COMPONENT_CONTEXT_PACK\",\n \"api_metadata\"\n ],\n \"writes\": [\n \"CrudMetadata.queryContext.meta.domainCatalog\"\n ],\n \"identityKeys\": [\n \"resourceKey\",\n \"releaseId\",\n \"query\"\n ],\n \"failureModes\": [\n \"resource-key-missing\",\n \"domain-catalog-release-not-found\",\n \"governance-context-empty\",\n \"ai-usage-forbidden\"\n ],\n \"description\": \"Resolves read-only domain vocabulary/governance context and stores only a lightweight reference/probe under queryContext.meta.domainCatalog.\"\n }\n }\n ],\n \"validators\": [\n \"resource-key-stable\",\n \"domain-catalog-context-resolvable\",\n \"domain-catalog-read-only\",\n \"ai-usage-visibility-respected\",\n \"no-form-config-rule-materialization\"\n ],\n \"affectedPaths\": [\n \"queryContext.meta.domainCatalog\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"crud-metadata-loaded\",\n \"api-metadata-available\",\n \"domain-catalog-service-available\"\n ]\n },\n {\n \"operationId\": \"list.surface.configure\",\n \"title\": \"Configure CRUD list surface\",\n \"scope\": \"interaction\",\n \"targetKind\": \"listSurface\",\n \"target\": {\n \"kind\": \"listSurface\",\n \"resolver\": \"crud-list-surface\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"properties\": {\n \"tablePatch\": {\n \"type\": \"object\"\n },\n \"queryContext\": {\n \"type\": \"object\"\n },\n \"filterCriteria\": {\n \"type\": \"object\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"compile-domain-patch\",\n \"handler\": \"crud-list-surface-configure\",\n \"handlerContract\": {\n \"reads\": [\n \"CrudMetadata.table\",\n \"CrudMetadata.queryContext\",\n \"PRAXIS_TABLE_AUTHORING_MANIFEST\",\n \"CRUD_AI_CAPABILITIES\"\n ],\n \"writes\": [\n \"CrudMetadata.table\",\n \"CrudMetadata.queryContext\",\n \"CrudMetadata.filterCriteria\"\n ],\n \"identityKeys\": [\n \"crudId\"\n ],\n \"failureModes\": [\n \"table-operation-not-delegated\",\n \"table-patch-not-supported\",\n \"query-context-invalid\"\n ],\n \"description\": \"Configures CRUD-owned list orchestration while routing table semantics to the praxis-table manifest.\"\n }\n }\n ],\n \"validators\": [\n \"table-child-operation-delegated\",\n \"query-context-valid\",\n \"filter-criteria-bridge-valid\",\n \"crud-context-stable\"\n ],\n \"affectedPaths\": [\n \"table\",\n \"queryContext\",\n \"filterCriteria\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"crud-metadata-loaded\",\n \"praxis-table-manifest-available\"\n ]\n },\n {\n \"operationId\": \"surface.create.configure\",\n \"title\": \"Configure create surface\",\n \"scope\": \"interaction\",\n \"targetKind\": \"createSurface\",\n \"target\": {\n \"kind\": \"createSurface\",\n \"resolver\": \"crud-action-by-id:create\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"actionId\",\n \"openMode\"\n ],\n \"properties\": {\n \"actionId\": {\n \"enum\": [\n \"create\",\n \"edit\",\n \"view\"\n ]\n },\n \"openMode\": {\n \"enum\": [\n \"route\",\n \"modal\",\n \"drawer\"\n ]\n },\n \"route\": {\n \"type\": \"string\"\n },\n \"formId\": {\n \"type\": \"string\"\n },\n \"form\": {\n \"type\": \"object\",\n \"properties\": {\n \"schemaUrl\": {\n \"type\": \"string\"\n },\n \"submitUrl\": {\n \"type\": \"string\"\n },\n \"submitMethod\": {\n \"enum\": [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\"\n ]\n },\n \"apiEndpointKey\": {\n \"type\": \"string\"\n },\n \"initialValue\": {\n \"type\": \"object\"\n },\n \"layoutPolicy\": {\n \"type\": \"object\"\n }\n }\n },\n \"params\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"required\": [\n \"from\",\n \"to\",\n \"name\"\n ],\n \"properties\": {\n \"from\": {\n \"type\": \"string\"\n },\n \"to\": {\n \"enum\": [\n \"routeParam\",\n \"query\",\n \"input\"\n ]\n },\n \"name\": {\n \"type\": \"string\"\n }\n }\n }\n },\n \"back\": {\n \"type\": \"object\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"compile-domain-patch\",\n \"handler\": \"crud-create-surface-configure\",\n \"handlerContract\": {\n \"reads\": [\n \"CrudMetadata.actions\",\n \"CrudLauncherService.resolveOpenMode\",\n \"DynamicFormDialogHostComponent\",\n \"api_metadata\"\n ],\n \"writes\": [\n \"CrudMetadata.actions[]\",\n \"CrudMetadata.actions[].form\",\n \"CrudMetadata.actions[].params\",\n \"CrudMetadata.actions[].back\"\n ],\n \"identityKeys\": [\n \"actionId\"\n ],\n \"failureModes\": [\n \"action-not-found\",\n \"open-mode-binding-incomplete\",\n \"schema-url-not-canonical\",\n \"submit-url-not-canonical\",\n \"resource-create-not-supported\"\n ],\n \"description\": \"Configures create action binding and launcher inputs without editing the child FormConfig.\"\n }\n }\n ],\n \"validators\": [\n \"action-exists\",\n \"open-mode-binding-complete\",\n \"schema-url-canonical\",\n \"submit-url-canonical\",\n \"resource-create-supported\",\n \"form-child-operation-delegated\"\n ],\n \"affectedPaths\": [\n \"actions[].openMode\",\n \"actions[].route\",\n \"actions[].formId\",\n \"actions[].form\",\n \"actions[].params\",\n \"actions[].back\"\n ],\n \"submissionImpact\": \"affects-schema-backed-data\",\n \"preconditions\": [\n \"crud-metadata-loaded\",\n \"resource-capabilities-resolved\"\n ]\n },\n {\n \"operationId\": \"surface.edit.configure\",\n \"title\": \"Configure edit surface\",\n \"scope\": \"interaction\",\n \"targetKind\": \"editSurface\",\n \"target\": {\n \"kind\": \"editSurface\",\n \"resolver\": \"crud-action-by-id:edit\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"effects\": [\n {\n \"kind\": \"compile-domain-patch\",\n \"handler\": \"crud-edit-surface-configure\",\n \"handlerContract\": {\n \"reads\": [\n \"CrudMetadata.actions\",\n \"CrudMetadata.resource.idField\",\n \"CrudLauncherService.resolveOpenMode\",\n \"api_metadata\"\n ],\n \"writes\": [\n \"CrudMetadata.actions[]\",\n \"CrudMetadata.actions[].form\",\n \"CrudMetadata.actions[].params\",\n \"CrudMetadata.actions[].back\"\n ],\n \"identityKeys\": [\n \"actionId\"\n ],\n \"failureModes\": [\n \"action-not-found\",\n \"id-param-missing\",\n \"open-mode-binding-incomplete\",\n \"resource-edit-not-supported\",\n \"submit-url-not-canonical\"\n ],\n \"description\": \"Configures edit action routing/form binding and ensures id parameter mapping is available to the launcher.\"\n }\n }\n ],\n \"validators\": [\n \"action-exists\",\n \"id-field-known\",\n \"id-param-mapping-valid\",\n \"open-mode-binding-complete\",\n \"schema-url-canonical\",\n \"submit-url-canonical\",\n \"resource-edit-supported\",\n \"form-child-operation-delegated\"\n ],\n \"affectedPaths\": [\n \"actions[].openMode\",\n \"actions[].route\",\n \"actions[].formId\",\n \"actions[].form\",\n \"actions[].params\",\n \"actions[].back\"\n ],\n \"submissionImpact\": \"affects-schema-backed-data\",\n \"preconditions\": [\n \"crud-metadata-loaded\",\n \"resource-capabilities-resolved\"\n ]\n },\n {\n \"operationId\": \"surface.view.configure\",\n \"title\": \"Configure view surface\",\n \"scope\": \"interaction\",\n \"targetKind\": \"viewSurface\",\n \"target\": {\n \"kind\": \"viewSurface\",\n \"resolver\": \"crud-action-by-id:view\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"effects\": [\n {\n \"kind\": \"compile-domain-patch\",\n \"handler\": \"crud-view-surface-configure\",\n \"handlerContract\": {\n \"reads\": [\n \"CrudMetadata.actions\",\n \"CrudLauncherService.resolveOpenMode\",\n \"DynamicFormDialogHostComponent\",\n \"api_metadata\"\n ],\n \"writes\": [\n \"CrudMetadata.actions[]\",\n \"CrudMetadata.actions[].form\",\n \"CrudMetadata.actions[].params\",\n \"CrudMetadata.actions[].back\"\n ],\n \"identityKeys\": [\n \"actionId\"\n ],\n \"failureModes\": [\n \"action-not-found\",\n \"open-mode-binding-incomplete\",\n \"resource-view-not-supported\",\n \"readonly-form-delegation-missing\"\n ],\n \"description\": \"Configures view action binding and delegates readonly form behavior to the dynamic-form manifest.\"\n }\n }\n ],\n \"validators\": [\n \"action-exists\",\n \"open-mode-binding-complete\",\n \"schema-url-canonical\",\n \"resource-view-supported\",\n \"form-child-operation-delegated\",\n \"readonly-form-delegation-valid\"\n ],\n \"affectedPaths\": [\n \"actions[].openMode\",\n \"actions[].route\",\n \"actions[].formId\",\n \"actions[].form\",\n \"actions[].params\",\n \"actions[].back\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"crud-metadata-loaded\",\n \"resource-capabilities-resolved\"\n ]\n },\n {\n \"operationId\": \"delete.enabled.set\",\n \"title\": \"Configure delete behavior\",\n \"scope\": \"interaction\",\n \"targetKind\": \"deleteBehavior\",\n \"target\": {\n \"kind\": \"deleteBehavior\",\n \"resolver\": \"crud-action-by-id:delete\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"enabled\"\n ],\n \"properties\": {\n \"enabled\": {\n \"type\": \"boolean\"\n },\n \"actionId\": {\n \"type\": \"string\"\n },\n \"requiresConfirmation\": {\n \"type\": \"boolean\"\n },\n \"autoDelete\": {\n \"type\": \"boolean\"\n },\n \"form\": {\n \"type\": \"object\",\n \"properties\": {\n \"submitUrl\": {\n \"type\": \"string\"\n },\n \"submitMethod\": {\n \"enum\": [\n \"delete\"\n ]\n },\n \"apiEndpointKey\": {\n \"type\": \"string\"\n }\n }\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"compile-domain-patch\",\n \"handler\": \"crud-delete-behavior-set\",\n \"handlerContract\": {\n \"reads\": [\n \"CrudMetadata.actions\",\n \"CrudMetadata.resource\",\n \"GET /{resource}/{id}/capabilities\"\n ],\n \"writes\": [\n \"CrudMetadata.actions[]\",\n \"CrudMetadata.actions[].requiresConfirmation\",\n \"CrudMetadata.actions[].autoDelete\",\n \"CrudMetadata.actions[].form\"\n ],\n \"identityKeys\": [\n \"actionId\"\n ],\n \"failureModes\": [\n \"delete-action-not-found\",\n \"resource-delete-not-supported\",\n \"destructive-delete-not-confirmed\",\n \"delete-submit-url-not-canonical\"\n ],\n \"description\": \"Enables or disables delete behavior with capability checks and explicit confirmation for destructive changes.\"\n }\n }\n ],\n \"destructive\": true,\n \"requiresConfirmation\": true,\n \"validators\": [\n \"delete-action-exists\",\n \"resource-delete-supported\",\n \"destructive-delete-confirmed\",\n \"submit-url-canonical\",\n \"permissions-delete-valid\"\n ],\n \"affectedPaths\": [\n \"actions[].disabled\",\n \"actions[].requiresConfirmation\",\n \"actions[].autoDelete\",\n \"actions[].form\",\n \"actions[].form.submitUrl\",\n \"actions[].form.submitMethod\",\n \"actions[].form.apiEndpointKey\"\n ],\n \"submissionImpact\": \"affects-schema-backed-data\",\n \"preconditions\": [\n \"crud-metadata-loaded\",\n \"resource-capabilities-resolved\",\n \"explicit-confirmation-provided\"\n ]\n },\n {\n \"operationId\": \"dialog.size.set\",\n \"title\": \"Configure CRUD dialog host defaults\",\n \"scope\": \"interaction\",\n \"targetKind\": \"dialogHost\",\n \"target\": {\n \"kind\": \"dialogHost\",\n \"resolver\": \"crud-dialog-host-defaults\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"properties\": {\n \"defaultOpenMode\": {\n \"enum\": [\n \"route\",\n \"modal\",\n \"drawer\"\n ]\n },\n \"modal\": {\n \"type\": \"object\",\n \"properties\": {\n \"width\": {\n \"type\": \"string\"\n },\n \"height\": {\n \"type\": \"string\"\n },\n \"minWidth\": {\n \"type\": \"string\"\n },\n \"maxWidth\": {\n \"type\": \"string\"\n },\n \"density\": {\n \"type\": \"string\"\n },\n \"canMaximize\": {\n \"type\": \"boolean\"\n },\n \"rememberLastState\": {\n \"type\": \"boolean\"\n },\n \"startMaximized\": {\n \"type\": \"boolean\"\n },\n \"disableCloseOnEsc\": {\n \"type\": \"boolean\"\n },\n \"disableCloseOnBackdrop\": {\n \"type\": \"boolean\"\n },\n \"fullscreenBreakpoint\": {\n \"type\": \"string\"\n }\n }\n },\n \"back\": {\n \"type\": \"object\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"compile-domain-patch\",\n \"handler\": \"crud-dialog-host-set\",\n \"handlerContract\": {\n \"reads\": [\n \"CrudMetadata.defaults\",\n \"CrudLauncherService.resolveOpenMode\",\n \"DialogService\",\n \"DynamicFormDialogHostComponent\",\n \"CRUD_DRAWER_ADAPTER\"\n ],\n \"writes\": [\n \"CrudMetadata.defaults.openMode\",\n \"CrudMetadata.defaults.modal\",\n \"CrudMetadata.defaults.back\"\n ],\n \"identityKeys\": [\n \"crudId\"\n ],\n \"failureModes\": [\n \"open-mode-unsupported\",\n \"drawer-runtime-unavailable\",\n \"modal-size-invalid\",\n \"back-policy-invalid\"\n ],\n \"description\": \"Configures CRUD-owned route/modal/drawer defaults consumed by the launcher, default dialog-backed drawer runtime and optional host drawer adapter.\"\n }\n }\n ],\n \"validators\": [\n \"open-mode-supported\",\n \"modal-size-valid\",\n \"drawer-runtime-available\",\n \"back-policy-valid\",\n \"settings-panel-shell-compatible\"\n ],\n \"affectedPaths\": [\n \"defaults.openMode\",\n \"defaults.modal\",\n \"defaults.back\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"crud-metadata-loaded\"\n ]\n },\n {\n \"operationId\": \"permissions.set\",\n \"title\": \"Configure CRUD permissions\",\n \"scope\": \"interaction\",\n \"targetKind\": \"permissions\",\n \"target\": {\n \"kind\": \"permissions\",\n \"resolver\": \"crud-resource-capabilities\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": true\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"properties\": {\n \"requiredCapabilities\": {\n \"type\": \"array\",\n \"items\": {\n \"enum\": [\n \"create\",\n \"view\",\n \"edit\",\n \"delete\"\n ]\n }\n },\n \"actionPermissions\": {\n \"type\": \"object\"\n },\n \"denyWhenMissingCapability\": {\n \"type\": \"boolean\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"compile-domain-patch\",\n \"handler\": \"crud-permissions-set\",\n \"handlerContract\": {\n \"reads\": [\n \"GET /{resource}/capabilities\",\n \"GET /{resource}/{id}/capabilities\",\n \"CrudMetadata.actions\"\n ],\n \"writes\": [\n \"CrudMetadata.actions[].disabled\",\n \"CrudMetadata.actions[].visibleWhen\",\n \"CrudMetadata.actions[].requiresConfirmation\"\n ],\n \"identityKeys\": [\n \"resourcePath\"\n ],\n \"failureModes\": [\n \"capability-not-found\",\n \"action-permission-conflict\",\n \"delete-permission-without-confirmation\"\n ],\n \"description\": \"Aligns CRUD action visibility/disablement with resource capabilities without inventing a second permission source.\"\n }\n }\n ],\n \"validators\": [\n \"resource-capabilities-resolvable\",\n \"action-permission-supported\",\n \"delete-permission-requires-confirmation\",\n \"permissions-do-not-shadow-backend\"\n ],\n \"affectedPaths\": [\n \"actions[].disabled\",\n \"actions[].visibleWhen\",\n \"actions[].requiresConfirmation\"\n ],\n \"submissionImpact\": \"config-only\",\n \"preconditions\": [\n \"crud-metadata-loaded\",\n \"resource-capabilities-resolved\"\n ]\n },\n {\n \"operationId\": \"form.childOperation.delegate\",\n \"title\": \"Delegate child form/table/dialog authoring operation\",\n \"scope\": \"global\",\n \"targetKind\": \"childOperation\",\n \"target\": {\n \"kind\": \"childOperation\",\n \"resolver\": \"child-authoring-manifest-operation\",\n \"ambiguityPolicy\": \"fail\",\n \"required\": false\n },\n \"inputSchema\": {\n \"type\": \"object\",\n \"required\": [\n \"childComponentId\",\n \"childOperationId\",\n \"reason\"\n ],\n \"properties\": {\n \"childComponentId\": {\n \"enum\": [\n \"praxis-dynamic-form\",\n \"praxis-table\",\n \"praxis-dialog\",\n \"praxis-settings-panel\"\n ]\n },\n \"childOperationId\": {\n \"type\": \"string\"\n },\n \"reason\": {\n \"type\": \"string\"\n },\n \"childTarget\": {\n \"type\": \"object\"\n },\n \"childParams\": {\n \"type\": \"object\"\n }\n }\n },\n \"effects\": [\n {\n \"kind\": \"compile-domain-patch\",\n \"handler\": \"crud-child-operation-delegate\",\n \"handlerContract\": {\n \"reads\": [\n \"PRAXIS_DYNAMIC_FORM_AUTHORING_MANIFEST\",\n \"PRAXIS_TABLE_AUTHORING_MANIFEST\",\n \"PRAXIS_DIALOG_AUTHORING_MANIFEST\",\n \"PRAXIS_SETTINGS_PANEL_AUTHORING_MANIFEST\"\n ],\n \"writes\": [\n \"delegatedAuthoringOperations[]\"\n ],\n \"identityKeys\": [\n \"childComponentId\",\n \"childOperationId\"\n ],\n \"failureModes\": [\n \"child-manifest-missing\",\n \"child-operation-not-found\",\n \"attempted-local-child-config-write\"\n ],\n \"description\": \"Records explicit delegation when requested edits belong to child manifests instead of CRUD orchestration.\"\n }\n }\n ],\n \"validators\": [\n \"child-manifest-available\",\n \"child-operation-known\",\n \"no-local-form-config-write\",\n \"no-local-table-config-write\",\n \"delegation-target-valid\"\n ],\n \"affectedPaths\": [\n \"delegatedAuthoringOperations\"\n ],\n \"submissionImpact\": \"none\",\n \"preconditions\": [\n \"child-manifest-available\"\n ]\n }\n ],\n \"validators\": [\n {\n \"validatorId\": \"resource-exists-in-api-metadata\",\n \"level\": \"error\",\n \"code\": \"CRUD_RESOURCE_EXISTS\",\n \"description\": \"Resource must exist in api_metadata or resource discovery.\"\n },\n {\n \"validatorId\": \"resource-path-canonical\",\n \"level\": \"error\",\n \"code\": \"CRUD_RESOURCE_PATH_CANONICAL\",\n \"description\": \"Resource path must be canonical and not a local alias.\"\n },\n {\n \"validatorId\": \"resource-key-stable\",\n \"level\": \"error\",\n \"code\": \"CRUD_RESOURCE_KEY_STABLE\",\n \"description\": \"Resource key must remain stable for surfaces/actions/capabilities.\"\n },\n {\n \"validatorId\": \"id-field-known\",\n \"level\": \"error\",\n \"code\": \"CRUD_ID_FIELD_KNOWN\",\n \"description\": \"CRUD id field must exist for edit/view/delete flows.\"\n },\n {\n \"validatorId\": \"resource-capabilities-resolvable\",\n \"level\": \"error\",\n \"code\": \"CRUD_CAPABILITIES_RESOLVABLE\",\n \"description\": \"Resource capabilities must be resolvable before action enablement is authored.\"\n },\n {\n \"validatorId\": \"domain-catalog-context-resolvable\",\n \"level\": \"error\",\n \"code\": \"CRUD_DOMAIN_CATALOG_CONTEXT_RESOLVABLE\",\n \"description\": \"Domain Catalog governance context must resolve for the resource key and requested probe before authoring uses it.\"\n },\n {\n \"validatorId\": \"domain-catalog-read-only\",\n \"level\": \"error\",\n \"code\": \"CRUD_DOMAIN_CATALOG_READ_ONLY\",\n \"description\": \"Domain Catalog is read-only semantic context; CRUD may reference a probe but must not persist copied catalog rules.\"\n },\n {\n \"validatorId\": \"ai-usage-visibility-respected\",\n \"level\": \"error\",\n \"code\": \"CRUD_AI_USAGE_VISIBILITY_RESPECTED\",\n \"description\": \"Authoring must respect Domain Catalog aiUsage.visibility before exposing field data, prompts or generated patches.\"\n },\n {\n \"validatorId\": \"no-form-config-rule-materialization\",\n \"level\": \"error\",\n \"code\": \"CRUD_NO_FORM_RULE_MATERIALIZATION\",\n \"description\": \"Shared domain governance must not be materialized into FormConfig rules unless a backend policy explicitly authorizes it.\"\n },\n {\n \"validatorId\": \"table-child-operation-delegated\",\n \"level\": \"error\",\n \"code\": \"CRUD_TABLE_CHILD_DELEGATED\",\n \"description\": \"Table semantics must be delegated to praxis-table.\"\n },\n {\n \"validatorId\": \"query-context-valid\",\n \"level\": \"error\",\n \"code\": \"CRUD_QUERY_CONTEXT_VALID\",\n \"description\": \"Query context must be valid for the bound resource.\"\n },\n {\n \"validatorId\": \"filter-criteria-bridge-valid\",\n \"level\": \"warning\",\n \"code\": \"CRUD_FILTER_CRITERIA_BRIDGE_VALID\",\n \"description\": \"filterCriteria is a bridge; prefer queryContext for new remote authoring.\"\n },\n {\n \"validatorId\": \"crud-context-stable\",\n \"level\": \"error\",\n \"code\": \"CRUD_CONTEXT_STABLE\",\n \"description\": \"Authoring must not break stable crudContext references.\"\n },\n {\n \"validatorId\": \"action-exists\",\n \"level\": \"error\",\n \"code\": \"CRUD_ACTION_EXISTS\",\n \"description\": \"Target action must exist or be created through CRUD action orchestration.\"\n },\n {\n \"validatorId\": \"open-mode-binding-complete\",\n \"level\": \"error\",\n \"code\": \"CRUD_OPEN_MODE_BINDING_COMPLETE\",\n \"description\": \"route requires route; modal/drawer require formId unless resolved by governed overrides.\"\n },\n {\n \"validatorId\": \"schema-url-canonical\",\n \"level\": \"error\",\n \"code\": \"CRUD_SCHEMA_URL_CANONICAL\",\n \"description\": \"Schema URLs must be canonical for the bound resource/action.\"\n },\n {\n \"validatorId\": \"submit-url-canonical\",\n \"level\": \"error\",\n \"code\": \"CRUD_SUBMIT_URL_CANONICAL\",\n \"description\": \"Submit URL and method must be canonical and declared together.\"\n },\n {\n \"validatorId\": \"resource-create-supported\",\n \"level\": \"error\",\n \"code\": \"CRUD_CREATE_SUPPORTED\",\n \"description\": \"Create surface requires resource create capability.\"\n },\n {\n \"validatorId\": \"resource-edit-supported\",\n \"level\": \"error\",\n \"code\": \"CRUD_EDIT_SUPPORTED\",\n \"description\": \"Edit surface requires resource edit capability.\"\n },\n {\n \"validatorId\": \"resource-view-supported\",\n \"level\": \"error\",\n \"code\": \"CRUD_VIEW_SUPPORTED\",\n \"description\": \"View surface requires resource view capability.\"\n },\n {\n \"validatorId\": \"form-child-operation-delegated\",\n \"level\": \"error\",\n \"code\": \"CRUD_FORM_CHILD_DELEGATED\",\n \"description\": \"FormConfig and FieldMetadata edits must delegate to dynamic-form/metadata-editor manifests.\"\n },\n {\n \"validatorId\": \"id-param-mapping-valid\",\n \"level\": \"error\",\n \"code\": \"CRUD_ID_PARAM_MAPPING_VALID\",\n \"description\": \"Edit/view actions must map resource id into route/query/input as required.\"\n },\n {\n \"validatorId\": \"readonly-form-delegation-valid\",\n \"level\": \"error\",\n \"code\": \"CRUD_READONLY_FORM_DELEGATED\",\n \"description\": \"Readonly form behavior belongs to the dynamic-form manifest.\"\n },\n {\n \"validatorId\": \"delete-action-exists\",\n \"level\": \"error\",\n \"code\": \"CRUD_DELETE_ACTION_EXISTS\",\n \"description\": \"Delete behavior requires a delete action target.\"\n },\n {\n \"validatorId\": \"resource-delete-supported\",\n \"level\": \"error\",\n \"code\": \"CRUD_DELETE_SUPPORTED\",\n \"description\": \"Delete behavior requires resource delete capability.\"\n },\n {\n \"validatorId\": \"destructive-delete-confirmed\",\n \"level\": \"error\",\n \"code\": \"CRUD_DELETE_CONFIRMED\",\n \"description\": \"Destructive delete behavior requires explicit confirmation.\"\n },\n {\n \"validatorId\": \"permissions-delete-valid\",\n \"level\": \"error\",\n \"code\": \"CRUD_DELETE_PERMISSION_VALID\",\n \"description\": \"Delete permission cannot bypass resource capabilities or confirmation policy.\"\n },\n {\n \"validatorId\": \"open-mode-supported\",\n \"level\": \"error\",\n \"code\": \"CRUD_OPEN_MODE_SUPPORTED\",\n \"description\": \"Open mode must be route, modal or drawer.\"\n },\n {\n \"validatorId\": \"modal-size-valid\",\n \"level\": \"error\",\n \"code\": \"CRUD_MODAL_SIZE_VALID\",\n \"description\": \"Modal sizing defaults must be valid DialogConfig values.\"\n },\n {\n \"validatorId\": \"drawer-runtime-available\",\n \"level\": \"error\",\n \"code\": \"CRUD_DRAWER_RUNTIME_AVAILABLE\",\n \"description\": \"Drawer open mode uses the default dialog-backed drawer runtime with CRUD-owned chrome, responsive right-panel sizing, Escape/backdrop handling and semantic close/save results; a host drawer adapter is optional only for shell-specific presentation.\"\n },\n {\n \"validatorId\": \"back-policy-valid\",\n \"level\": \"error\",\n \"code\": \"CRUD_BACK_POLICY_VALID\",\n \"description\": \"Back policy must be valid for route/modal/drawer behavior.\"\n },\n {\n \"validatorId\": \"settings-panel-shell-compatible\",\n \"level\": \"warning\",\n \"code\": \"CRUD_SETTINGS_PANEL_COMPATIBLE\",\n \"description\": \"Authoring shell must preserve apply/save/reset semantics.\"\n },\n {\n \"validatorId\": \"action-permission-supported\",\n \"level\": \"error\",\n \"code\": \"CRUD_ACTION_PERMISSION_SUPPORTED\",\n \"description\": \"Action permissions must map to supported resource capabilities.\"\n },\n {\n \"validatorId\": \"delete-permission-requires-confirmation\",\n \"level\": \"error\",\n \"code\": \"CRUD_DELETE_PERMISSION_CONFIRMATION\",\n \"description\": \"Delete permission enablement requires confirmation policy.\"\n },\n {\n \"validatorId\": \"permissions-do-not-shadow-backend\",\n \"level\": \"error\",\n \"code\": \"CRUD_PERMISSIONS_NO_BACKEND_SHADOW\",\n \"description\": \"UI permissions must not shadow backend capability denial.\"\n },\n {\n \"validatorId\": \"child-manifest-available\",\n \"level\": \"error\",\n \"code\": \"CRUD_CHILD_MANIFEST_AVAILABLE\",\n \"description\": \"Delegated child manifest must be available.\"\n },\n {\n \"validatorId\": \"child-operation-known\",\n \"level\": \"error\",\n \"code\": \"CRUD_CHILD_OPERATION_KNOWN\",\n \"description\": \"Delegated operation must exist in the child manifest.\"\n },\n {\n \"validatorId\": \"no-local-form-config-write\",\n \"level\": \"error\",\n \"code\": \"CRUD_NO_LOCAL_FORM_CONFIG_WRITE\",\n \"description\": \"CRUD must not locally redefine FormConfig semantics.\"\n },\n {\n \"validatorId\": \"no-local-table-config-write\",\n \"level\": \"error\",\n \"code\": \"CRUD_NO_LOCAL_TABLE_CONFIG_WRITE\",\n \"description\": \"CRUD must not locally redefine TableConfig semantics.\"\n },\n {\n \"validatorId\": \"delegation-target-valid\",\n \"level\": \"error\",\n \"code\": \"CRUD_DELEGATION_TARGET_VALID\",\n \"description\": \"Delegation target must be resolvable by the child manifest.\"\n }\n ],\n \"roundTripRequirements\": [\n \"CrudMetadata is the canonical CRUD document shape.\",\n \"CrudAuthoringDocument wraps CrudMetadata without introducing host-local aliases.\",\n \"Resource path and resource key have separate semantics: path is operational, key is discovery/capability identity.\",\n \"Domain Catalog context is referenced through resourceKey/release/probe and stays read-only; CRUD may attach queryContext.meta.domainCatalog but must not copy shared governance rules into FormConfig.\",\n \"Open mode round-trip must preserve route, formId, form contract, params, initialValue and back policy.\",\n \"FormConfig and FieldMetadata edits must delegate to dynamic-form or metadata-editor manifests.\",\n \"TableConfig edits must delegate to praxis-table; CRUD owns only shell orchestration and list surface binding.\",\n \"Delete behavior is destructive and requires explicit confirmation plus backend capability support.\",\n \"crudContext must remain reference-stable across change detection cycles.\"\n ],\n \"examples\": [\n {\n \"id\": \"crud-bind-funcionarios-resource\",\n \"request\": \"Bind this CRUD to funcionarios using id as the identifier.\",\n \"operationId\": \"resource.bind\",\n \"target\": \"resource:funcionarios\",\n \"params\": {\n \"resourcePath\": \"/funcionarios\",\n \"resourceKey\": \"funcionarios\",\n \"idField\": \"id\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"crud-attach-lgpd-cpf-context\",\n \"request\": \"Use the Domain Catalog LGPD context for cpf before changing the employee CRUD.\",\n \"operationId\": \"domain.governanceContext.attach\",\n \"target\": \"domainCatalog:human-resources.funcionarios:cpf\",\n \"params\": {\n \"resourceKey\": \"human-resources.funcionarios\",\n \"query\": \"cpf\",\n \"itemTypes\": [\n \"governance\"\n ],\n \"intent\": \"authoring\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"crud-list-query-context\",\n \"request\": \"Filter the list by active employees using the canonical query context.\",\n \"operationId\": \"list.surface.configure\",\n \"target\": \"listSurface\",\n \"params\": {\n \"queryContext\": {\n \"filters\": [\n {\n \"field\": \"active\",\n \"operator\": \"eq\",\n \"value\": true\n }\n ]\n }\n },\n \"isPositive\": true\n },\n {\n \"id\": \"crud-create-modal\",\n \"request\": \"Open create in a modal with the employee form.\",\n \"operationId\": \"surface.create.configure\",\n \"target\": \"action:create\",\n \"params\": {\n \"actionId\": \"create\",\n \"openMode\": \"modal\",\n \"formId\": \"employee-create\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"crud-edit-route-with-id\",\n \"request\": \"Edit should navigate to /employees/:id and map the row id.\",\n \"operationId\": \"surface.edit.configure\",\n \"target\": \"action:edit\",\n \"params\": {\n \"actionId\": \"edit\",\n \"openMode\": \"route\",\n \"route\": \"/employees/:id/edit\",\n \"params\": [\n {\n \"from\": \"id\",\n \"to\": \"routeParam\",\n \"name\": \"id\"\n }\n ]\n },\n \"isPositive\": true\n },\n {\n \"id\": \"crud-view-drawer-readonly\",\n \"request\": \"Open view in a drawer and keep the form readonly.\",\n \"operationId\": \"surface.view.configure\",\n \"target\": \"action:view\",\n \"params\": {\n \"actionId\": \"view\",\n \"openMode\": \"drawer\",\n \"formId\": \"employee-view\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"crud-delete-enable-confirmed\",\n \"request\": \"Enable delete but require confirmation.\",\n \"operationId\": \"delete.enabled.set\",\n \"target\": \"action:delete\",\n \"params\": {\n \"enabled\": true,\n \"actionId\": \"delete\",\n \"requiresConfirmation\": true,\n \"autoDelete\": true\n },\n \"isPositive\": true\n },\n {\n \"id\": \"crud-dialog-size-medium\",\n \"request\": \"Make CRUD modals 900px wide and remember their last state.\",\n \"operationId\": \"dialog.size.set\",\n \"target\": \"dialogHost\",\n \"params\": {\n \"defaultOpenMode\": \"modal\",\n \"modal\": {\n \"width\": \"900px\",\n \"rememberLastState\": true\n }\n },\n \"isPositive\": true\n },\n {\n \"id\": \"crud-permissions-no-delete\",\n \"request\": \"Hide delete when the resource capabilities do not allow it.\",\n \"operationId\": \"permissions.set\",\n \"target\": \"permissions:delete\",\n \"params\": {\n \"requiredCapabilities\": [\n \"delete\"\n ],\n \"denyWhenMissingCapability\": true\n },\n \"isPositive\": true\n },\n {\n \"id\": \"crud-delegate-form-layout\",\n \"request\": \"Add a new field to the create form.\",\n \"operationId\": \"form.childOperation.delegate\",\n \"target\": \"praxis-dynamic-form:field.add\",\n \"params\": {\n \"childComponentId\": \"praxis-dynamic-form\",\n \"childOperationId\": \"field.add\",\n \"reason\": \"Form field semantics belong to dynamic-form\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"crud-delegate-table-column\",\n \"request\": \"Add a salary column to the list table.\",\n \"operationId\": \"form.childOperation.delegate\",\n \"target\": \"praxis-table:column.add\",\n \"params\": {\n \"childComponentId\": \"praxis-table\",\n \"childOperationId\": \"column.add\",\n \"reason\": \"Table column semantics belong to praxis-table\"\n },\n \"isPositive\": true\n },\n {\n \"id\": \"crud-reject-local-form-rules\",\n \"request\": \"Put this dynamic-form validation rule directly inside CRUD.\",\n \"operationId\": \"form.childOperation.delegate\",\n \"target\": \"praxis-dynamic-form:rules.add\",\n \"params\": {\n \"childComponentId\": \"praxis-dynamic-form\",\n \"childOperationId\": \"rules.add\",\n \"reason\": \"CRUD must not redefine FormConfig rules\"\n },\n \"isPositive\": false\n },\n {\n \"id\": \"crud-reject-copy-domain-rule-to-formconfig\",\n \"request\": \"Copy the LGPD rule from Domain Catalog directly into the create form JSON.\",\n \"operationId\": \"domain.governanceContext.attach\",\n \"target\": \"domainCatalog:human-resources.funcionarios:cpf\",\n \"params\": {\n \"resourceKey\": \"human-resources.funcionarios\",\n \"query\": \"cpf\",\n \"itemTypes\": [\n \"governance\"\n ],\n \"intent\": \"authoring\"\n },\n \"isPositive\": false\n },\n {\n \"id\": \"crud-reject-delete-without-capability\",\n \"request\": \"Force delete even though the backend does not expose delete capability.\",\n \"operationId\": \"delete.enabled.set\",\n \"target\": \"action:delete\",\n \"params\": {\n \"enabled\": true,\n \"actionId\": \"delete\",\n \"requiresConfirmation\": false\n },\n \"isPositive\": false\n }\n ]\n}",
|
|
6584
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"identity\"}",
|
|
6485
6585
|
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
6486
|
-
"contentHash": "
|
|
6586
|
+
"contentHash": "6c351b81457af442a97b8906cf2054d855362d4dd8c4ee18c15b1c0dbddaeaa5",
|
|
6487
6587
|
"sourceKind": "component_definition",
|
|
6488
6588
|
"sourceId": "praxis-crud",
|
|
6489
6589
|
"corpusVersion": "1.0.0"
|
|
6490
6590
|
},
|
|
6491
6591
|
{
|
|
6492
|
-
"chunkIndex":
|
|
6592
|
+
"chunkIndex": 13,
|
|
6593
|
+
"chunkKind": "authoring_manifest",
|
|
6594
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"runtimeInputs\",\"runtimeInputs\":[{\"name\":\"metadata\",\"type\":\"CrudMetadata | string\",\"description\":\"Canonical CRUD metadata or serialized metadata document.\"},{\"name\":\"crudId\",\"type\":\"string\",\"description\":\"Stable CRUD instance id used for table/form identity and persistence.\"},{\"name\":\"componentInstanceId\",\"type\":\"string\",\"description\":\"Optional stable host instance id for multiple CRUD widgets on the same route.\"},{\"name\":\"context\",\"type\":\"Record<string, unknown>\",\"description\":\"Opaque host context used for authoring seeds and launcher inputs.\"},{\"name\":\"enableCustomization\",\"type\":\"boolean\",\"description\":\"Explicit host opt-in for CRUD authoring surfaces.\"},{\"name\":\"authoringCapability\",\"type\":\"string | null\",\"description\":\"Public runtime capability required before CRUD and delegated table authoring can open.\"},{\"name\":\"afterOpen\",\"type\":\"{ mode: FormOpenMode; action: string }\",\"description\":\"Emitted after a CRUD action opens.\"},{\"name\":\"afterSave\",\"type\":\"{ id: string | number; data: unknown }\",\"description\":\"Emitted after save; CRUD refetches the list.\"},{\"name\":\"afterDelete\",\"type\":\"{ id: string | number }\",\"description\":\"Emitted after delete; CRUD refetches the list.\"}]}",
|
|
6595
|
+
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
6596
|
+
"contentHash": "cce406615018b96872557b8ccfe54f7c64d1bd40f8528ac4d62b094fbc27858b",
|
|
6597
|
+
"sourceKind": "component_definition",
|
|
6598
|
+
"sourceId": "praxis-crud",
|
|
6599
|
+
"corpusVersion": "1.0.0"
|
|
6600
|
+
},
|
|
6601
|
+
{
|
|
6602
|
+
"chunkIndex": 14,
|
|
6603
|
+
"chunkKind": "authoring_manifest",
|
|
6604
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"editableTargets\",\"editableTargets\":[{\"kind\":\"resourceBinding\",\"resolver\":\"crud-resource-by-path-or-key\",\"description\":\"Resource path/key, optional schema path template, id field, endpoint key and query context owned by CRUD orchestration.\"},{\"kind\":\"listSurface\",\"resolver\":\"crud-list-surface\",\"description\":\"CRUD-hosted list surface and table delegation boundary.\"},{\"kind\":\"createSurface\",\"resolver\":\"crud-action-by-id:create\",\"description\":\"Create action open mode, route/form binding and launcher inputs.\"},{\"kind\":\"editSurface\",\"resolver\":\"crud-action-by-id:edit\",\"description\":\"Edit action open mode, route/form binding and launcher inputs.\"},{\"kind\":\"viewSurface\",\"resolver\":\"crud-action-by-id:view\",\"description\":\"View action open mode, route/form binding and launcher inputs.\"},{\"kind\":\"deleteBehavior\",\"resolver\":\"crud-action-by-id:delete\",\"description\":\"Delete action enablement, confirmation, endpoint and capability policy.\"},{\"kind\":\"dialogHost\",\"resolver\":\"crud-dialog-host-defaults\",\"description\":\"Route/modal/drawer defaults consumed by CrudLauncherService and DynamicFormDialogHostComponent, including contextual shell titles derived from action label, form title or resource metadata.\"},{\"kind\":\"formBinding\",\"resolver\":\"crud-action-form-contract-by-action-id\",\"description\":\"CRUD-owned form binding fields: formId, schemaUrl, submitUrl, submitMethod, params and initialValue. Shared FormConfig remains owned by Dynamic Form and is forwarded through CrudMetadata.form when present.\"},{\"kind\":\"permissions\",\"resolver\":\"crud-resource-capabilities\",\"description\":\"CRUD action availability derived from resource capabilities and action permissions.\"},{\"kind\":\"domainGovernanceContext\",\"resolver\":\"domain-catalog-context-by-resource-key\",\"description\":\"Read-only semantic/governance context resolved from Domain Catalog and referenced from CRUD queryContext.meta.\"},{\"kind\":\"childOperation\",\"resolver\":\"child-authoring-manifest-operation\",\"description\":\"Delegated form/table/dialog/settings-panel operation owned by the child component manifest.\"}]}",
|
|
6605
|
+
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
6606
|
+
"contentHash": "dc108626d494c3ffbe5917c3f7849e30084766cd5efd62b55aebfd21ff76a2d8",
|
|
6607
|
+
"sourceKind": "component_definition",
|
|
6608
|
+
"sourceId": "praxis-crud",
|
|
6609
|
+
"corpusVersion": "1.0.0"
|
|
6610
|
+
},
|
|
6611
|
+
{
|
|
6612
|
+
"chunkIndex": 15,
|
|
6613
|
+
"chunkKind": "authoring_manifest",
|
|
6614
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"resource.bind\",\"title\":\"Bind CRUD resource\",\"scope\":\"dataBinding\",\"targetKind\":\"resourceBinding\",\"target\":{\"kind\":\"resourceBinding\",\"resolver\":\"crud-resource-by-path-or-key\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"resourcePath\"],\"properties\":{\"resourcePath\":{\"type\":\"string\"},\"resourceKey\":{\"type\":\"string\"},\"idField\":{\"type\":[\"string\",\"number\"]},\"endpointKey\":{\"type\":\"string\"},\"queryContext\":{\"type\":\"object\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"crud-resource-bind\",\"handlerContract\":{\"reads\":[\"CrudMetadata.resource\",\"api_metadata\",\"ResourceDiscoveryService\",\"GET /{resource}/capabilities\"],\"writes\":[\"CrudMetadata.resource\",\"CrudMetadata.queryContext\",\"PraxisCrudComponent.tableCrudContext\"],\"identityKeys\":[\"resourcePath\",\"resourceKey\",\"schemaPath\"],\"failureModes\":[\"resource-not-found\",\"schema-url-not-canonical\",\"capabilities-unavailable\",\"id-field-missing\"],\"description\":\"Binds CRUD to a canonical resource and validates it against api_metadata/resource capabilities before runtime use. Use CrudMetadata.resource.schemaPath when schema discovery must use a templated path while resource.path targets a concrete nested collection.\"}}],\"validators\":[\"resource-exists-in-api-metadata\",\"resource-path-canonical\",\"resource-key-stable\",\"id-field-known\",\"resource-capabilities-resolvable\"],\"affectedPaths\":[\"resource.path\",\"resource.schemaPath\",\"resource.idField\",\"resource.endpointKey\",\"resource.apiUrlEntry\",\"queryContext\",\"filterCriteria\"],\"submissionImpact\":\"affects-remote-binding\",\"preconditions\":[\"crud-metadata-loaded\",\"api-metadata-available\"]},{\"operationId\":\"domain.governanceContext.attach\",\"title\":\"Attach Domain Catalog governance context\",\"scope\":\"dataBinding\",\"targetKind\":\"domainGovernanceContext\",\"target\":{\"kind\":\"domainGovernanceContext\",\"resolver\":\"domain-catalog-context-by-resource-key\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"resourceKey\",\"query\"],\"properties\":{\"resourceKey\":{\"type\":\"string\"},\"releaseId\":{\"type\":\"string\"},\"query\":{\"type\":\"string\"},\"itemTypes\":{\"type\":\"array\",\"items\":{\"enum\":[\"governance\",\"vocabulary\",\"relationship\"]}},\"intent\":{\"enum\":[\"authoring\",\"explain\",\"validate\",\"ai-access-control\"]}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"crud-domain-governance-context-attach\",\"handlerContract\":{\"reads\":[\"CrudMetadata.resource\",\"CrudMetadata.queryContext\",\"DomainCatalogService.getGovernanceContext\",\"DOMAIN_CATALOG_COMPONENT_CONTEXT_PACK\",\"api_metadata\"],\"writes\":[\"CrudMetadata.queryContext.meta.domainCatalog\"],\"identityKeys\":[\"resourceKey\",\"releaseId\",\"query\"],\"failureModes\":[\"resource-key-missing\",\"domain-catalog-release-not-found\",\"governance-context-empty\",\"ai-usage-forbidden\"],\"description\":\"Resolves read-only domain vocabulary/governance context and stores only a lightweight reference/probe under queryContext.meta.domainCatalog.\"}}],\"validators\":[\"resource-key-stable\",\"domain-catalog-context-resolvable\",\"domain-catalog-read-only\",\"ai-usage-visibility-respected\",\"no-form-config-rule-materialization\"],\"affectedPaths\":[\"queryContext.meta.domainCatalog\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"crud-metadata-loaded\",\"api-metadata-available\",\"domain-catalog-service-available\"]},{\"operationId\":\"list.surface.configure\",\"title\":\"Configure CRUD list surface\",\"scope\":\"interaction\",\"targetKind\":\"listSurface\",\"target\":{\"kind\":\"listSurface\",\"resolver\":\"crud-list-surface\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"properties\":{\"tablePatch\":{\"type\":\"object\"},\"queryContext\":{\"type\":\"object\"},\"filterCriteria\":{\"type\":\"object\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"crud-list-surface-configure\",\"handlerContract\":{\"reads\":[\"CrudMetadata.table\",\"CrudMetadata.queryContext\",\"PRAXIS_TABLE_AUTHORING_MANIFEST\",\"CRUD_AI_CAPABILITIES\"],\"writes\":[\"CrudMetadata.table\",\"CrudMetadata.queryContext\",\"CrudMetadata.filterCriteria\"],\"identityKeys\":[\"crudId\"],\"failureModes\":[\"table-operation-not-delegated\",\"table-patch-not-supported\",\"query-context-invalid\"],\"description\":\"Configures CRUD-owned list orchestration while routing table semantics to the praxis-table manifest.\"}}],\"validators\":[\"table-child-operation-delegated\",\"query-context-valid\",\"filter-criteria-bridge-valid\",\"crud-context-stable\"],\"affectedPaths\":[\"table\",\"queryContext\",\"filterCriteria\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"crud-metadata-loaded\",\"praxis-table-manifest-available\"]},{\"operationId\":\"surface.create.configure\",\"title\":\"Configure create surface\",\"scope\":\"interaction\",\"targetKind\":\"createSurface\",\"target\":{\"kind\":\"createSurface\",\"resolver\":\"crud-action-by-id:create\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"actionId\",\"openMode\"],\"properties\":{\"actionId\":{\"enum\":[\"create\",\"edit\",\"view\"]},\"openMode\":{\"enum\":[\"route\",\"modal\",\"drawer\"]},\"route\":{\"type\":\"string\"},\"formId\":{\"type\":\"string\"},\"form\":{\"type\":\"object\",\"properties\":{\"schemaUrl\":{\"type\":\"string\"},\"submitUrl\":{\"type\":\"string\"},\"submitMethod\":{\"enum\":[\"post\",\"put\",\"patch\",\"delete\"]},\"apiEndpointKey\":{\"type\":\"string\"},\"initialValue\":{\"type\":\"object\"},\"layoutPolicy\":{\"type\":\"object\"}}},\"params\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"from\",\"to\",\"name\"],\"properties\":{\"from\":{\"type\":\"string\"},\"to\":{\"enum\":[\"routeParam\",\"query\",\"input\"]},\"name\":{\"type\":\"string\"}}}},\"back\":{\"type\":\"object\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"crud-create-surface-configure\",\"handlerContract\":{\"reads\":[\"CrudMetadata.actions\",\"CrudLauncherService.resolveOpenMode\",\"DynamicFormDialogHostComponent\",\"api_metadata\"],\"writes\":[\"CrudMetadata.actions[]\",\"CrudMetadata.actions[].form\",\"CrudMetadata.actions[].params\",\"CrudMetadata.actions[].back\"],\"identityKeys\":[\"actionId\"],\"failureModes\":[\"action-not-found\",\"open-mode-binding-incomplete\",\"schema-url-not-canonical\",\"submit-url-not-canonical\",\"resource-create-not-supported\"],\"description\":\"Configures create action binding and launcher inputs without editing the child FormConfig.\"}}],\"validators\":[\"action-exists\",\"open-mode-binding-complete\",\"schema-url-canonical\",\"submit-url-canonical\",\"resource-create-supported\",\"form-child-operation-delegated\"],\"affectedPaths\":[\"actions[].openMode\",\"actions[].route\",\"actions[].formId\",\"actions[].form\",\"actions[].params\",\"actions[].back\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"crud-metadata-loaded\",\"resource-capabilities-resolved\"]}]}",
|
|
6615
|
+
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
6616
|
+
"contentHash": "ef75d740103a535f53c05035d886965a2e23ce995bef72a336a865ccadbd381d",
|
|
6617
|
+
"sourceKind": "component_definition",
|
|
6618
|
+
"sourceId": "praxis-crud",
|
|
6619
|
+
"corpusVersion": "1.0.0"
|
|
6620
|
+
},
|
|
6621
|
+
{
|
|
6622
|
+
"chunkIndex": 16,
|
|
6623
|
+
"chunkKind": "authoring_manifest",
|
|
6624
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"surface.edit.configure\",\"title\":\"Configure edit surface\",\"scope\":\"interaction\",\"targetKind\":\"editSurface\",\"target\":{\"kind\":\"editSurface\",\"resolver\":\"crud-action-by-id:edit\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"crud-edit-surface-configure\",\"handlerContract\":{\"reads\":[\"CrudMetadata.actions\",\"CrudMetadata.resource.idField\",\"CrudLauncherService.resolveOpenMode\",\"api_metadata\"],\"writes\":[\"CrudMetadata.actions[]\",\"CrudMetadata.actions[].form\",\"CrudMetadata.actions[].params\",\"CrudMetadata.actions[].back\"],\"identityKeys\":[\"actionId\"],\"failureModes\":[\"action-not-found\",\"id-param-missing\",\"open-mode-binding-incomplete\",\"resource-edit-not-supported\",\"submit-url-not-canonical\"],\"description\":\"Configures edit action routing/form binding and ensures id parameter mapping is available to the launcher.\"}}],\"validators\":[\"action-exists\",\"id-field-known\",\"id-param-mapping-valid\",\"open-mode-binding-complete\",\"schema-url-canonical\",\"submit-url-canonical\",\"resource-edit-supported\",\"form-child-operation-delegated\"],\"affectedPaths\":[\"actions[].openMode\",\"actions[].route\",\"actions[].formId\",\"actions[].form\",\"actions[].params\",\"actions[].back\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"crud-metadata-loaded\",\"resource-capabilities-resolved\"]},{\"operationId\":\"surface.view.configure\",\"title\":\"Configure view surface\",\"scope\":\"interaction\",\"targetKind\":\"viewSurface\",\"target\":{\"kind\":\"viewSurface\",\"resolver\":\"crud-action-by-id:view\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"crud-view-surface-configure\",\"handlerContract\":{\"reads\":[\"CrudMetadata.actions\",\"CrudLauncherService.resolveOpenMode\",\"DynamicFormDialogHostComponent\",\"api_metadata\"],\"writes\":[\"CrudMetadata.actions[]\",\"CrudMetadata.actions[].form\",\"CrudMetadata.actions[].params\",\"CrudMetadata.actions[].back\"],\"identityKeys\":[\"actionId\"],\"failureModes\":[\"action-not-found\",\"open-mode-binding-incomplete\",\"resource-view-not-supported\",\"readonly-form-delegation-missing\"],\"description\":\"Configures view action binding and delegates readonly form behavior to the dynamic-form manifest.\"}}],\"validators\":[\"action-exists\",\"open-mode-binding-complete\",\"schema-url-canonical\",\"resource-view-supported\",\"form-child-operation-delegated\",\"readonly-form-delegation-valid\"],\"affectedPaths\":[\"actions[].openMode\",\"actions[].route\",\"actions[].formId\",\"actions[].form\",\"actions[].params\",\"actions[].back\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"crud-metadata-loaded\",\"resource-capabilities-resolved\"]},{\"operationId\":\"delete.enabled.set\",\"title\":\"Configure delete behavior\",\"scope\":\"interaction\",\"targetKind\":\"deleteBehavior\",\"target\":{\"kind\":\"deleteBehavior\",\"resolver\":\"crud-action-by-id:delete\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"enabled\"],\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"actionId\":{\"type\":\"string\"},\"requiresConfirmation\":{\"type\":\"boolean\"},\"autoDelete\":{\"type\":\"boolean\"},\"form\":{\"type\":\"object\",\"properties\":{\"submitUrl\":{\"type\":\"string\"},\"submitMethod\":{\"enum\":[\"delete\"]},\"apiEndpointKey\":{\"type\":\"string\"}}}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"crud-delete-behavior-set\",\"handlerContract\":{\"reads\":[\"CrudMetadata.actions\",\"CrudMetadata.resource\",\"GET /{resource}/{id}/capabilities\"],\"writes\":[\"CrudMetadata.actions[]\",\"CrudMetadata.actions[].requiresConfirmation\",\"CrudMetadata.actions[].autoDelete\",\"CrudMetadata.actions[].form\"],\"identityKeys\":[\"actionId\"],\"failureModes\":[\"delete-action-not-found\",\"resource-delete-not-supported\",\"destructive-delete-not-confirmed\",\"delete-submit-url-not-canonical\"],\"description\":\"Enables or disables delete behavior with capability checks and explicit confirmation for destructive changes.\"}}],\"destructive\":true,\"requiresConfirmation\":true,\"validators\":[\"delete-action-exists\",\"resource-delete-supported\",\"destructive-delete-confirmed\",\"submit-url-canonical\",\"permissions-delete-valid\"],\"affectedPaths\":[\"actions[].disabled\",\"actions[].requiresConfirmation\",\"actions[].autoDelete\",\"actions[].form\",\"actions[].form.submitUrl\",\"actions[].form.submitMethod\",\"actions[].form.apiEndpointKey\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"crud-metadata-loaded\",\"resource-capabilities-resolved\",\"explicit-confirmation-provided\"]},{\"operationId\":\"dialog.size.set\",\"title\":\"Configure CRUD dialog host defaults\",\"scope\":\"interaction\",\"targetKind\":\"dialogHost\",\"target\":{\"kind\":\"dialogHost\",\"resolver\":\"crud-dialog-host-defaults\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"properties\":{\"defaultOpenMode\":{\"enum\":[\"route\",\"modal\",\"drawer\"]},\"modal\":{\"type\":\"object\",\"properties\":{\"width\":{\"type\":\"string\"},\"height\":{\"type\":\"string\"},\"minWidth\":{\"type\":\"string\"},\"maxWidth\":{\"type\":\"string\"},\"density\":{\"type\":\"string\"},\"canMaximize\":{\"type\":\"boolean\"},\"rememberLastState\":{\"type\":\"boolean\"},\"startMaximized\":{\"type\":\"boolean\"},\"disableCloseOnEsc\":{\"type\":\"boolean\"},\"disableCloseOnBackdrop\":{\"type\":\"boolean\"},\"fullscreenBreakpoint\":{\"type\":\"string\"}}},\"back\":{\"type\":\"object\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"crud-dialog-host-set\",\"handlerContract\":{\"reads\":[\"CrudMetadata.defaults\",\"CrudLauncherService.resolveOpenMode\",\"DialogService\",\"DynamicFormDialogHostComponent\",\"CRUD_DRAWER_ADAPTER\"],\"writes\":[\"CrudMetadata.defaults.openMode\",\"CrudMetadata.defaults.modal\",\"CrudMetadata.defaults.back\"],\"identityKeys\":[\"crudId\"],\"failureModes\":[\"open-mode-unsupported\",\"drawer-runtime-unavailable\",\"modal-size-invalid\",\"back-policy-invalid\"],\"description\":\"Configures CRUD-owned route/modal/drawer defaults consumed by the launcher, default dialog-backed drawer runtime and optional host drawer adapter.\"}}],\"validators\":[\"open-mode-supported\",\"modal-size-valid\",\"drawer-runtime-available\",\"back-policy-valid\",\"settings-panel-shell-compatible\"],\"affectedPaths\":[\"defaults.openMode\",\"defaults.modal\",\"defaults.back\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"crud-metadata-loaded\"]},{\"operationId\":\"permissions.set\",\"title\":\"Configure CRUD permissions\",\"scope\":\"interaction\",\"targetKind\":\"permissions\",\"target\":{\"kind\":\"permissions\",\"resolver\":\"crud-resource-capabilities\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"properties\":{\"requiredCapabilities\":{\"type\":\"array\",\"items\":{\"enum\":[\"create\",\"view\",\"edit\",\"delete\"]}},\"actionPermissions\":{\"type\":\"object\"},\"denyWhenMissingCapability\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"crud-permissions-set\",\"handlerContract\":{\"reads\":[\"GET /{resource}/capabilities\",\"GET /{resource}/{id}/capabilities\",\"CrudMetadata.actions\"],\"writes\":[\"CrudMetadata.actions[].disabled\",\"CrudMetadata.actions[].visibleWhen\",\"CrudMetadata.actions[].requiresConfirmation\"],\"identityKeys\":[\"resourcePath\"],\"failureModes\":[\"capability-not-found\",\"action-permission-conflict\",\"delete-permission-without-confirmation\"],\"description\":\"Aligns CRUD action visibility/disablement with resource capabilities without inventing a second permission source.\"}}],\"validators\":[\"resource-capabilities-resolvable\",\"action-permission-supported\",\"delete-permission-requires-confirmation\",\"permissions-do-not-shadow-backend\"],\"affectedPaths\":[\"actions[].disabled\",\"actions[].visibleWhen\",\"actions[].requiresConfirmation\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"crud-metadata-loaded\",\"resource-capabilities-resolved\"]}]}",
|
|
6625
|
+
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
6626
|
+
"contentHash": "92415d7558c36c1e3d4905f035f62038f0386f669470b8a70f834af9584462d3",
|
|
6627
|
+
"sourceKind": "component_definition",
|
|
6628
|
+
"sourceId": "praxis-crud",
|
|
6629
|
+
"corpusVersion": "1.0.0"
|
|
6630
|
+
},
|
|
6631
|
+
{
|
|
6632
|
+
"chunkIndex": 17,
|
|
6633
|
+
"chunkKind": "authoring_manifest",
|
|
6634
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"form.childOperation.delegate\",\"title\":\"Delegate child form/table/dialog authoring operation\",\"scope\":\"global\",\"targetKind\":\"childOperation\",\"target\":{\"kind\":\"childOperation\",\"resolver\":\"child-authoring-manifest-operation\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"childComponentId\",\"childOperationId\",\"reason\"],\"properties\":{\"childComponentId\":{\"enum\":[\"praxis-dynamic-form\",\"praxis-table\",\"praxis-dialog\",\"praxis-settings-panel\"]},\"childOperationId\":{\"type\":\"string\"},\"reason\":{\"type\":\"string\"},\"childTarget\":{\"type\":\"object\"},\"childParams\":{\"type\":\"object\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"crud-child-operation-delegate\",\"handlerContract\":{\"reads\":[\"PRAXIS_DYNAMIC_FORM_AUTHORING_MANIFEST\",\"PRAXIS_TABLE_AUTHORING_MANIFEST\",\"PRAXIS_DIALOG_AUTHORING_MANIFEST\",\"PRAXIS_SETTINGS_PANEL_AUTHORING_MANIFEST\"],\"writes\":[\"delegatedAuthoringOperations[]\"],\"identityKeys\":[\"childComponentId\",\"childOperationId\"],\"failureModes\":[\"child-manifest-missing\",\"child-operation-not-found\",\"attempted-local-child-config-write\"],\"description\":\"Records explicit delegation when requested edits belong to child manifests instead of CRUD orchestration.\"}}],\"validators\":[\"child-manifest-available\",\"child-operation-known\",\"no-local-form-config-write\",\"no-local-table-config-write\",\"delegation-target-valid\"],\"affectedPaths\":[\"delegatedAuthoringOperations\"],\"submissionImpact\":\"none\",\"preconditions\":[\"child-manifest-available\"]}]}",
|
|
6635
|
+
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
6636
|
+
"contentHash": "96031b3089d1be63af010cebdbf9b91b9cadd28b1b0350ca940a2e0b7727a008",
|
|
6637
|
+
"sourceKind": "component_definition",
|
|
6638
|
+
"sourceId": "praxis-crud",
|
|
6639
|
+
"corpusVersion": "1.0.0"
|
|
6640
|
+
},
|
|
6641
|
+
{
|
|
6642
|
+
"chunkIndex": 18,
|
|
6643
|
+
"chunkKind": "authoring_manifest",
|
|
6644
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"validators\",\"validators\":[{\"validatorId\":\"resource-exists-in-api-metadata\",\"level\":\"error\",\"code\":\"CRUD_RESOURCE_EXISTS\",\"description\":\"Resource must exist in api_metadata or resource discovery.\"},{\"validatorId\":\"resource-path-canonical\",\"level\":\"error\",\"code\":\"CRUD_RESOURCE_PATH_CANONICAL\",\"description\":\"Resource path must be canonical and not a local alias.\"},{\"validatorId\":\"resource-key-stable\",\"level\":\"error\",\"code\":\"CRUD_RESOURCE_KEY_STABLE\",\"description\":\"Resource key must remain stable for surfaces/actions/capabilities.\"},{\"validatorId\":\"id-field-known\",\"level\":\"error\",\"code\":\"CRUD_ID_FIELD_KNOWN\",\"description\":\"CRUD id field must exist for edit/view/delete flows.\"},{\"validatorId\":\"resource-capabilities-resolvable\",\"level\":\"error\",\"code\":\"CRUD_CAPABILITIES_RESOLVABLE\",\"description\":\"Resource capabilities must be resolvable before action enablement is authored.\"},{\"validatorId\":\"domain-catalog-context-resolvable\",\"level\":\"error\",\"code\":\"CRUD_DOMAIN_CATALOG_CONTEXT_RESOLVABLE\",\"description\":\"Domain Catalog governance context must resolve for the resource key and requested probe before authoring uses it.\"},{\"validatorId\":\"domain-catalog-read-only\",\"level\":\"error\",\"code\":\"CRUD_DOMAIN_CATALOG_READ_ONLY\",\"description\":\"Domain Catalog is read-only semantic context; CRUD may reference a probe but must not persist copied catalog rules.\"},{\"validatorId\":\"ai-usage-visibility-respected\",\"level\":\"error\",\"code\":\"CRUD_AI_USAGE_VISIBILITY_RESPECTED\",\"description\":\"Authoring must respect Domain Catalog aiUsage.visibility before exposing field data, prompts or generated patches.\"},{\"validatorId\":\"no-form-config-rule-materialization\",\"level\":\"error\",\"code\":\"CRUD_NO_FORM_RULE_MATERIALIZATION\",\"description\":\"Shared domain governance must not be materialized into FormConfig rules unless a backend policy explicitly authorizes it.\"},{\"validatorId\":\"table-child-operation-delegated\",\"level\":\"error\",\"code\":\"CRUD_TABLE_CHILD_DELEGATED\",\"description\":\"Table semantics must be delegated to praxis-table.\"},{\"validatorId\":\"query-context-valid\",\"level\":\"error\",\"code\":\"CRUD_QUERY_CONTEXT_VALID\",\"description\":\"Query context must be valid for the bound resource.\"},{\"validatorId\":\"filter-criteria-bridge-valid\",\"level\":\"warning\",\"code\":\"CRUD_FILTER_CRITERIA_BRIDGE_VALID\",\"description\":\"filterCriteria is a bridge; prefer queryContext for new remote authoring.\"},{\"validatorId\":\"crud-context-stable\",\"level\":\"error\",\"code\":\"CRUD_CONTEXT_STABLE\",\"description\":\"Authoring must not break stable crudContext references.\"},{\"validatorId\":\"action-exists\",\"level\":\"error\",\"code\":\"CRUD_ACTION_EXISTS\",\"description\":\"Target action must exist or be created through CRUD action orchestration.\"},{\"validatorId\":\"open-mode-binding-complete\",\"level\":\"error\",\"code\":\"CRUD_OPEN_MODE_BINDING_COMPLETE\",\"description\":\"route requires route; modal/drawer require formId unless resolved by governed overrides.\"},{\"validatorId\":\"schema-url-canonical\",\"level\":\"error\",\"code\":\"CRUD_SCHEMA_URL_CANONICAL\",\"description\":\"Schema URLs must be canonical for the bound resource/action.\"},{\"validatorId\":\"submit-url-canonical\",\"level\":\"error\",\"code\":\"CRUD_SUBMIT_URL_CANONICAL\",\"description\":\"Submit URL and method must be canonical and declared together.\"},{\"validatorId\":\"resource-create-supported\",\"level\":\"error\",\"code\":\"CRUD_CREATE_SUPPORTED\",\"description\":\"Create surface requires resource create capability.\"},{\"validatorId\":\"resource-edit-supported\",\"level\":\"error\",\"code\":\"CRUD_EDIT_SUPPORTED\",\"description\":\"Edit surface requires resource edit capability.\"},{\"validatorId\":\"resource-view-supported\",\"level\":\"error\",\"code\":\"CRUD_VIEW_SUPPORTED\",\"description\":\"View surface requires resource view capability.\"},{\"validatorId\":\"form-child-operation-delegated\",\"level\":\"error\",\"code\":\"CRUD_FORM_CHILD_DELEGATED\",\"description\":\"FormConfig and FieldMetadata edits must delegate to dynamic-form/metadata-editor manifests.\"},{\"validatorId\":\"id-param-mapping-valid\",\"level\":\"error\",\"code\":\"CRUD_ID_PARAM_MAPPING_VALID\",\"description\":\"Edit/view actions must map resource id into route/query/input as required.\"},{\"validatorId\":\"readonly-form-delegation-valid\",\"level\":\"error\",\"code\":\"CRUD_READONLY_FORM_DELEGATED\",\"description\":\"Readonly form behavior belongs to the dynamic-form manifest.\"},{\"validatorId\":\"delete-action-exists\",\"level\":\"error\",\"code\":\"CRUD_DELETE_ACTION_EXISTS\",\"description\":\"Delete behavior requires a delete action target.\"},{\"validatorId\":\"resource-delete-supported\",\"level\":\"error\",\"code\":\"CRUD_DELETE_SUPPORTED\",\"description\":\"Delete behavior requires resource delete capability.\"},{\"validatorId\":\"destructive-delete-confirmed\",\"level\":\"error\",\"code\":\"CRUD_DELETE_CONFIRMED\",\"description\":\"Destructive delete behavior requires explicit confirmation.\"},{\"validatorId\":\"permissions-delete-valid\",\"level\":\"error\",\"code\":\"CRUD_DELETE_PERMISSION_VALID\",\"description\":\"Delete permission cannot bypass resource capabilities or confirmation policy.\"},{\"validatorId\":\"open-mode-supported\",\"level\":\"error\",\"code\":\"CRUD_OPEN_MODE_SUPPORTED\",\"description\":\"Open mode must be route, modal or drawer.\"},{\"validatorId\":\"modal-size-valid\",\"level\":\"error\",\"code\":\"CRUD_MODAL_SIZE_VALID\",\"description\":\"Modal sizing defaults must be valid DialogConfig values.\"},{\"validatorId\":\"drawer-runtime-available\",\"level\":\"error\",\"code\":\"CRUD_DRAWER_RUNTIME_AVAILABLE\",\"description\":\"Drawer open mode uses the default dialog-backed drawer runtime with CRUD-owned chrome, responsive right-panel sizing, Escape/backdrop handling and semantic close/save results; a host drawer adapter is optional only for shell-specific presentation.\"},{\"validatorId\":\"back-policy-valid\",\"level\":\"error\",\"code\":\"CRUD_BACK_POLICY_VALID\",\"description\":\"Back policy must be valid for route/modal/drawer behavior.\"},{\"validatorId\":\"settings-panel-shell-compatible\",\"level\":\"warning\",\"code\":\"CRUD_SETTINGS_PANEL_COMPATIBLE\",\"description\":\"Authoring shell must preserve apply/save/reset semantics.\"},{\"validatorId\":\"action-permission-supported\",\"level\":\"error\",\"code\":\"CRUD_ACTION_PERMISSION_SUPPORTED\",\"description\":\"Action permissions must map to supported resource capabilities.\"},{\"validatorId\":\"delete-permission-requires-confirmation\",\"level\":\"error\",\"code\":\"CRUD_DELETE_PERMISSION_CONFIRMATION\",\"description\":\"Delete permission enablement requires confirmation policy.\"},{\"validatorId\":\"permissions-do-not-shadow-backend\",\"level\":\"error\",\"code\":\"CRUD_PERMISSIONS_NO_BACKEND_SHADOW\",\"description\":\"UI permissions must not shadow backend capability denial.\"},{\"validatorId\":\"child-manifest-available\",\"level\":\"error\",\"code\":\"CRUD_CHILD_MANIFEST_AVAILABLE\",\"description\":\"Delegated child manifest must be available.\"},{\"validatorId\":\"child-operation-known\",\"level\":\"error\",\"code\":\"CRUD_CHILD_OPERATION_KNOWN\",\"description\":\"Delegated operation must exist in the child manifest.\"},{\"validatorId\":\"no-local-form-config-write\",\"level\":\"error\",\"code\":\"CRUD_NO_LOCAL_FORM_CONFIG_WRITE\",\"description\":\"CRUD must not locally redefine FormConfig semantics.\"},{\"validatorId\":\"no-local-table-config-write\",\"level\":\"error\",\"code\":\"CRUD_NO_LOCAL_TABLE_CONFIG_WRITE\",\"description\":\"CRUD must not locally redefine TableConfig semantics.\"},{\"validatorId\":\"delegation-target-valid\",\"level\":\"error\",\"code\":\"CRUD_DELEGATION_TARGET_VALID\",\"description\":\"Delegation target must be resolvable by the child manifest.\"}]}",
|
|
6645
|
+
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
6646
|
+
"contentHash": "4ea5b5b005de837468ddc1c7f2adcb088cf3efa83efd8ce78a4081ccec6bcbf9",
|
|
6647
|
+
"sourceKind": "component_definition",
|
|
6648
|
+
"sourceId": "praxis-crud",
|
|
6649
|
+
"corpusVersion": "1.0.0"
|
|
6650
|
+
},
|
|
6651
|
+
{
|
|
6652
|
+
"chunkIndex": 19,
|
|
6653
|
+
"chunkKind": "authoring_manifest",
|
|
6654
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"roundTripRequirements\",\"roundTripRequirements\":[\"CrudMetadata is the canonical CRUD document shape.\",\"CrudAuthoringDocument wraps CrudMetadata without introducing host-local aliases.\",\"Resource path and resource key have separate semantics: path is operational, key is discovery/capability identity.\",\"Domain Catalog context is referenced through resourceKey/release/probe and stays read-only; CRUD may attach queryContext.meta.domainCatalog but must not copy shared governance rules into FormConfig.\",\"Open mode round-trip must preserve route, formId, form contract, params, initialValue and back policy.\",\"FormConfig and FieldMetadata edits must delegate to dynamic-form or metadata-editor manifests.\",\"TableConfig edits must delegate to praxis-table; CRUD owns only shell orchestration and list surface binding.\",\"Delete behavior is destructive and requires explicit confirmation plus backend capability support.\",\"crudContext must remain reference-stable across change detection cycles.\"]}",
|
|
6655
|
+
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
6656
|
+
"contentHash": "c0878459368b27710cd0bb3b1e8740f2083fc6c433de740798d8cdc31723e101",
|
|
6657
|
+
"sourceKind": "component_definition",
|
|
6658
|
+
"sourceId": "praxis-crud",
|
|
6659
|
+
"corpusVersion": "1.0.0"
|
|
6660
|
+
},
|
|
6661
|
+
{
|
|
6662
|
+
"chunkIndex": 20,
|
|
6663
|
+
"chunkKind": "authoring_manifest",
|
|
6664
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"examples\",\"examples\":[{\"id\":\"crud-bind-funcionarios-resource\",\"request\":\"Bind this CRUD to funcionarios using id as the identifier.\",\"operationId\":\"resource.bind\",\"target\":\"resource:funcionarios\",\"params\":{\"resourcePath\":\"/funcionarios\",\"resourceKey\":\"funcionarios\",\"idField\":\"id\"},\"isPositive\":true},{\"id\":\"crud-attach-lgpd-cpf-context\",\"request\":\"Use the Domain Catalog LGPD context for cpf before changing the employee CRUD.\",\"operationId\":\"domain.governanceContext.attach\",\"target\":\"domainCatalog:human-resources.funcionarios:cpf\",\"params\":{\"resourceKey\":\"human-resources.funcionarios\",\"query\":\"cpf\",\"itemTypes\":[\"governance\"],\"intent\":\"authoring\"},\"isPositive\":true},{\"id\":\"crud-list-query-context\",\"request\":\"Filter the list by active employees using the canonical query context.\",\"operationId\":\"list.surface.configure\",\"target\":\"listSurface\",\"params\":{\"queryContext\":{\"filters\":[{\"field\":\"active\",\"operator\":\"eq\",\"value\":true}]}},\"isPositive\":true},{\"id\":\"crud-create-modal\",\"request\":\"Open create in a modal with the employee form.\",\"operationId\":\"surface.create.configure\",\"target\":\"action:create\",\"params\":{\"actionId\":\"create\",\"openMode\":\"modal\",\"formId\":\"employee-create\"},\"isPositive\":true},{\"id\":\"crud-edit-route-with-id\",\"request\":\"Edit should navigate to /employees/:id and map the row id.\",\"operationId\":\"surface.edit.configure\",\"target\":\"action:edit\",\"params\":{\"actionId\":\"edit\",\"openMode\":\"route\",\"route\":\"/employees/:id/edit\",\"params\":[{\"from\":\"id\",\"to\":\"routeParam\",\"name\":\"id\"}]},\"isPositive\":true},{\"id\":\"crud-view-drawer-readonly\",\"request\":\"Open view in a drawer and keep the form readonly.\",\"operationId\":\"surface.view.configure\",\"target\":\"action:view\",\"params\":{\"actionId\":\"view\",\"openMode\":\"drawer\",\"formId\":\"employee-view\"},\"isPositive\":true},{\"id\":\"crud-delete-enable-confirmed\",\"request\":\"Enable delete but require confirmation.\",\"operationId\":\"delete.enabled.set\",\"target\":\"action:delete\",\"params\":{\"enabled\":true,\"actionId\":\"delete\",\"requiresConfirmation\":true,\"autoDelete\":true},\"isPositive\":true},{\"id\":\"crud-dialog-size-medium\",\"request\":\"Make CRUD modals 900px wide and remember their last state.\",\"operationId\":\"dialog.size.set\",\"target\":\"dialogHost\",\"params\":{\"defaultOpenMode\":\"modal\",\"modal\":{\"width\":\"900px\",\"rememberLastState\":true}},\"isPositive\":true},{\"id\":\"crud-permissions-no-delete\",\"request\":\"Hide delete when the resource capabilities do not allow it.\",\"operationId\":\"permissions.set\",\"target\":\"permissions:delete\",\"params\":{\"requiredCapabilities\":[\"delete\"],\"denyWhenMissingCapability\":true},\"isPositive\":true},{\"id\":\"crud-delegate-form-layout\",\"request\":\"Add a new field to the create form.\",\"operationId\":\"form.childOperation.delegate\",\"target\":\"praxis-dynamic-form:field.add\",\"params\":{\"childComponentId\":\"praxis-dynamic-form\",\"childOperationId\":\"field.add\",\"reason\":\"Form field semantics belong to dynamic-form\"},\"isPositive\":true},{\"id\":\"crud-delegate-table-column\",\"request\":\"Add a salary column to the list table.\",\"operationId\":\"form.childOperation.delegate\",\"target\":\"praxis-table:column.add\",\"params\":{\"childComponentId\":\"praxis-table\",\"childOperationId\":\"column.add\",\"reason\":\"Table column semantics belong to praxis-table\"},\"isPositive\":true},{\"id\":\"crud-reject-local-form-rules\",\"request\":\"Put this dynamic-form validation rule directly inside CRUD.\",\"operationId\":\"form.childOperation.delegate\",\"target\":\"praxis-dynamic-form:rules.add\",\"params\":{\"childComponentId\":\"praxis-dynamic-form\",\"childOperationId\":\"rules.add\",\"reason\":\"CRUD must not redefine FormConfig rules\"},\"isPositive\":false},{\"id\":\"crud-reject-copy-domain-rule-to-formconfig\",\"request\":\"Copy the LGPD rule from Domain Catalog directly into the create form JSON.\",\"operationId\":\"domain.governanceContext.attach\",\"target\":\"domainCatalog:human-resources.funcionarios:cpf\",\"params\":{\"resourceKey\":\"human-resources.funcionarios\",\"query\":\"cpf\",\"itemTypes\":[\"governance\"],\"intent\":\"authoring\"},\"isPositive\":false},{\"id\":\"crud-reject-delete-without-capability\",\"request\":\"Force delete even though the backend does not expose delete capability.\",\"operationId\":\"delete.enabled.set\",\"target\":\"action:delete\",\"params\":{\"enabled\":true,\"actionId\":\"delete\",\"requiresConfirmation\":false},\"isPositive\":false}]}",
|
|
6665
|
+
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
6666
|
+
"contentHash": "6508bda0ac250c6663ba9182bbb8a5af3a09cd5af3a939d1c2233fd27647cdc7",
|
|
6667
|
+
"sourceKind": "component_definition",
|
|
6668
|
+
"sourceId": "praxis-crud",
|
|
6669
|
+
"corpusVersion": "1.0.0"
|
|
6670
|
+
},
|
|
6671
|
+
{
|
|
6672
|
+
"chunkIndex": 21,
|
|
6493
6673
|
"chunkKind": "context_pack",
|
|
6494
|
-
"content": "{\n \"componentContext\": {\n \"version\": \"v1\",\n \"optionsByPath\": {\n \"defaults.openMode\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"route\",\n \"label\": \"Route\"\n },\n {\n \"value\": \"modal\",\n \"label\": \"Modal\"\n },\n {\n \"value\": \"drawer\",\n \"label\": \"Drawer\"\n }\n ]\n },\n \"actions[].openMode\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"route\",\n \"label\": \"Route\"\n },\n {\n \"value\": \"modal\",\n \"label\": \"Modal\"\n },\n {\n \"value\": \"drawer\",\n \"label\": \"Drawer\"\n }\n ]\n },\n \"actions[].params[].to\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"routeParam\",\n \"label\": \"Route param\"\n },\n {\n \"value\": \"query\",\n \"label\": \"Query param\"\n },\n {\n \"value\": \"input\",\n \"label\": \"Dialog input\"\n }\n ]\n },\n \"defaults.header.variant\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"ghost\",\n \"label\": \"Ghost\"\n },\n {\n \"value\": \"tonal\",\n \"label\": \"Tonal\"\n },\n {\n \"value\": \"outlined\",\n \"label\": \"Outlined\"\n }\n ]\n },\n \"actions[].type\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"button\",\n \"label\": \"Button\"\n },\n {\n \"value\": \"icon\",\n \"label\": \"Icon\"\n },\n {\n \"value\": \"fab\",\n \"label\": \"Fab\"\n },\n {\n \"value\": \"menu\",\n \"label\": \"Menu\"\n }\n ]\n },\n \"actions[].appearance\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"filled\",\n \"label\": \"Filled\"\n },\n {\n \"value\": \"outlined\",\n \"label\": \"Outlined\"\n },\n {\n \"value\": \"elevated\",\n \"label\": \"Elevated\"\n },\n {\n \"value\": \"text\",\n \"label\": \"Text\"\n },\n {\n \"value\": \"tonal\",\n \"label\": \"Tonal\"\n }\n ]\n },\n \"actions[].position\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"start\",\n \"label\": \"Start\"\n },\n {\n \"value\": \"end\",\n \"label\": \"End\"\n }\n ]\n },\n \"defaults.back.strategy\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"auto\",\n \"label\": \"Auto\"\n },\n {\n \"value\": \"close\",\n \"label\": \"Close\"\n },\n {\n \"value\": \"navigate\",\n \"label\": \"Navigate\"\n }\n ]\n },\n \"actions[].back.strategy\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"auto\",\n \"label\": \"Auto\"\n },\n {\n \"value\": \"close\",\n \"label\": \"Close\"\n },\n {\n \"value\": \"navigate\",\n \"label\": \"Navigate\"\n }\n ]\n },\n \"resource.endpointKey\": {\n \"mode\": \"enum\",\n \"options\": [\n {\n \"value\": \"default\",\n \"label\": \"Default\"\n },\n {\n \"value\": \"humanResources\",\n \"label\": \"Human resources\"\n },\n {\n \"value\": \"uiWrappersTest\",\n \"label\": \"UI wrappers test\"\n }\n ]\n }\n },\n \"actionCatalog\": [\n {\n \"id\": \"resource.path.set\",\n \"intentExamples\": [\n \"resource\",\n \"endpoint\",\n \"api\",\n \"path\",\n \"rota\"\n ],\n \"patchTemplate\": {\n \"resource\": {\n \"path\": \"{{value}}\"\n }\n }\n },\n {\n \"id\": \"resource.idField.set\",\n \"intentExamples\": [\n \"id field\",\n \"chave\",\n \"primary key\"\n ],\n \"patchTemplate\": {\n \"resource\": {\n \"idField\": \"{{value}}\"\n }\n }\n },\n {\n \"id\": \"defaults.openMode.set\",\n \"intentExamples\": [\n \"open mode\",\n \"open\",\n \"route\",\n \"modal\",\n \"drawer\"\n ],\n \"patchTemplate\": {\n \"defaults\": {\n \"openMode\": \"{{value}}\"\n }\n }\n },\n {\n \"id\": \"defaults.header.variant.set\",\n \"intentExamples\": [\n \"header\",\n \"variant\",\n \"style\",\n \"back button\"\n ],\n \"patchTemplate\": {\n \"defaults\": {\n \"header\": {\n \"variant\": \"{{value}}\"\n }\n }\n }\n },\n {\n \"id\": \"defaults.header.backLabel.set\",\n \"intentExamples\": [\n \"back label\",\n \"voltar\",\n \"header label\"\n ],\n \"patchTemplate\": {\n \"defaults\": {\n \"header\": {\n \"backLabel\": \"{{value}}\"\n }\n }\n }\n },\n {\n \"id\": \"defaults.header.showBack.enable\",\n \"intentExamples\": [\n \"show back\",\n \"back button\",\n \"enable back\"\n ],\n \"patchTemplate\": {\n \"defaults\": {\n \"header\": {\n \"showBack\": true\n }\n }\n }\n },\n {\n \"id\": \"defaults.header.showBack.disable\",\n \"intentExamples\": [\n \"hide back\",\n \"disable back\"\n ],\n \"patchTemplate\": {\n \"defaults\": {\n \"header\": {\n \"showBack\": false\n }\n }\n }\n },\n {\n \"id\": \"defaults.back.strategy.set\",\n \"intentExamples\": [\n \"back\",\n \"return\",\n \"navigation\"\n ],\n \"patchTemplate\": {\n \"defaults\": {\n \"back\": {\n \"strategy\": \"{{value}}\"\n }\n }\n }\n },\n {\n \"id\": \"defaults.back.returnTo.set\",\n \"intentExamples\": [\n \"return to\",\n \"back route\",\n \"navigate back\"\n ],\n \"patchTemplate\": {\n \"defaults\": {\n \"back\": {\n \"returnTo\": \"{{value}}\"\n }\n }\n }\n },\n {\n \"id\": \"defaults.back.confirmOnDirty.enable\",\n \"intentExamples\": [\n \"confirm\",\n \"dirty\",\n \"unsaved\",\n \"confirm exit\"\n ],\n \"patchTemplate\": {\n \"defaults\": {\n \"back\": {\n \"confirmOnDirty\": true\n }\n }\n }\n },\n {\n \"id\": \"defaults.back.confirmOnDirty.disable\",\n \"intentExamples\": [\n \"no confirm\",\n \"disable confirm\"\n ],\n \"patchTemplate\": {\n \"defaults\": {\n \"back\": {\n \"confirmOnDirty\": false\n }\n }\n }\n },\n {\n \"id\": \"action.add\",\n \"intentExamples\": [\n \"add action\",\n \"new action\",\n \"create action\"\n ],\n \"patchTemplate\": {\n \"actions\": [\n {\n \"id\": \"{{target}}\",\n \"action\": \"{{params.action}}\",\n \"label\": \"{{value}}\",\n \"icon\": \"{{params.icon}}\"\n }\n ]\n }\n },\n {\n \"id\": \"action.label.set\",\n \"intentExamples\": [\n \"label\",\n \"rename action\",\n \"titulo\"\n ],\n \"patchTemplate\": {\n \"actions\": [\n {\n \"id\": \"{{target}}\",\n \"label\": \"{{value}}\"\n }\n ]\n }\n },\n {\n \"id\": \"action.icon.set\",\n \"intentExamples\": [\n \"icon\",\n \"icone\"\n ],\n \"patchTemplate\": {\n \"actions\": [\n {\n \"id\": \"{{target}}\",\n \"icon\": \"{{value}}\"\n }\n ]\n }\n },\n {\n \"id\": \"action.openMode.set\",\n \"intentExamples\": [\n \"open mode\",\n \"route\",\n \"modal\",\n \"drawer\"\n ],\n \"patchTemplate\": {\n \"actions\": [\n {\n \"id\": \"{{target}}\",\n \"openMode\": \"{{value}}\"\n }\n ]\n }\n },\n {\n \"id\": \"action.route.set\",\n \"intentExamples\": [\n \"route\",\n \"url\",\n \"navigate\"\n ],\n \"patchTemplate\": {\n \"actions\": [\n {\n \"id\": \"{{target}}\",\n \"route\": \"{{value}}\"\n }\n ]\n }\n },\n {\n \"id\": \"action.formId.set\",\n \"intentExamples\": [\n \"form\",\n \"formId\",\n \"dialog\",\n \"drawer\"\n ],\n \"patchTemplate\": {\n \"actions\": [\n {\n \"id\": \"{{target}}\",\n \"formId\": \"{{value}}\"\n }\n ]\n }\n },\n {\n \"id\": \"action.params.add\",\n \"intentExamples\": [\n \"param\",\n \"params\",\n \"query\",\n \"route param\"\n ],\n \"patchTemplate\": {\n \"actions\": [\n {\n \"id\": \"{{target}}\",\n \"params\": [\n {\n \"from\": \"{{params.from}}\",\n \"to\": \"{{params.to}}\",\n \"name\": \"{{params.name}}\"\n }\n ]\n }\n ]\n }\n },\n {\n \"id\": \"action.initialValue.set\",\n \"intentExamples\": [\n \"initial value\",\n \"seed\",\n \"default form values\",\n \"prefill\"\n ],\n \"patchTemplate\": {\n \"actions\": [\n {\n \"id\": \"{{target}}\",\n \"form\": {\n \"initialValue\": \"{{value}}\"\n }\n }\n ]\n }\n },\n {\n \"id\": \"action.confirmation.enable\",\n \"intentExamples\": [\n \"confirm\",\n \"confirmation\",\n \"requires confirmation\"\n ],\n \"patchTemplate\": {\n \"actions\": [\n {\n \"id\": \"{{target}}\",\n \"requiresConfirmation\": true\n }\n ]\n }\n },\n {\n \"id\": \"action.confirmation.disable\",\n \"intentExamples\": [\n \"no confirm\",\n \"disable confirmation\"\n ],\n \"patchTemplate\": {\n \"actions\": [\n {\n \"id\": \"{{target}}\",\n \"requiresConfirmation\": false\n }\n ]\n }\n },\n {\n \"id\": \"action.visibleWhen.set\",\n \"intentExamples\": [\n \"visible when\",\n \"visibility\",\n \"show when\"\n ],\n \"patchTemplate\": {\n \"actions\": [\n {\n \"id\": \"{{target}}\",\n \"visibleWhen\": \"{{value}}\"\n }\n ]\n }\n },\n {\n \"id\": \"action.type.set\",\n \"intentExamples\": [\n \"type\",\n \"button type\",\n \"toolbar\"\n ],\n \"patchTemplate\": {\n \"actions\": [\n {\n \"id\": \"{{target}}\",\n \"type\": \"{{value}}\"\n }\n ]\n }\n },\n {\n \"id\": \"action.appearance.set\",\n \"intentExamples\": [\n \"appearance\",\n \"variant\",\n \"style\"\n ],\n \"patchTemplate\": {\n \"actions\": [\n {\n \"id\": \"{{target}}\",\n \"appearance\": \"{{value}}\"\n }\n ]\n }\n },\n {\n \"id\": \"action.position.set\",\n \"intentExamples\": [\n \"position\",\n \"start\",\n \"end\"\n ],\n \"patchTemplate\": {\n \"actions\": [\n {\n \"id\": \"{{target}}\",\n \"position\": \"{{value}}\"\n }\n ]\n }\n },\n {\n \"id\": \"action.back.strategy.set\",\n \"intentExamples\": [\n \"back\",\n \"return\",\n \"navigation\"\n ],\n \"patchTemplate\": {\n \"actions\": [\n {\n \"id\": \"{{target}}\",\n \"back\": {\n \"strategy\": \"{{value}}\"\n }\n }\n ]\n }\n },\n {\n \"id\": \"ADD_CONDITIONAL_RENDERER\",\n \"intentExamples\": [\n \"conditional renderer\",\n \"renderer condicional\",\n \"badge condicional\",\n \"chip condicional\",\n \"badge se\",\n \"chip se\",\n \"conditional badge\",\n \"conditional chip\"\n ],\n \"patchTemplate\": {\n \"table\": {\n \"columns\": [\n {\n \"field\": \"{{target}}\",\n \"conditionalRenderers\": [\n {\n \"condition\": \"{{params.condition}}\",\n \"renderer\": \"{{params.renderer}}\"\n }\n ]\n }\n ]\n }\n }\n }\n ],\n \"fieldResolvers\": {\n \"actions[]\": [\n \"id\",\n \"label\",\n \"action\"\n ],\n \"resource.path\": [],\n \"table.columns[].field\": [\n \"field\",\n \"header\"\n ]\n },\n \"hints\": [\n \"Use actions[].id as the canonical action key; avoid array indexes.\",\n \"When adding actions, include params.action to describe the underlying CRUD action.\",\n \"openMode route requires actions[].route; modal or drawer require actions[].formId unless the host completes bindings via per-action override before opening.\",\n \"Table and form are full configs; patch nested fields instead of replacing the whole object.\",\n \"Use ADD_CONDITIONAL_RENDERER for table conditional badges/chips (table.columns[].conditionalRenderers).\",\n \"CRUD agrega TableConfig e FormConfig; siga o contrato da tabela para columns/conditionalRenderers.\",\n \"DOC: Widget purpose: CRUD shell that composes a table + optional form from metadata.\",\n \"DOC: Host inputs: metadata (required) and crudId (required). componentInstanceId/context/enableCustomization are optional.\",\n \"DOC: CrudMetadata requires component='praxis-crud' and table (TableConfig).\",\n \"DOC: inner table renders with resource.path (remote) or metadata.data (local). If both are provided, resource.path takes precedence.\",\n \"DOC: If actions open modal/drawer, actions[].formId is required unless a per-action override resolves it before opening; for route mode, actions[].route is required unless override resolves it.\"\n ]\n }\n}",
|
|
6674
|
+
"content": "{\"componentContext\":{\"version\":\"v1\",\"optionsByPath\":{\"defaults.openMode\":{\"mode\":\"enum\",\"options\":[{\"value\":\"route\",\"label\":\"Route\"},{\"value\":\"modal\",\"label\":\"Modal\"},{\"value\":\"drawer\",\"label\":\"Drawer\"}]},\"actions[].openMode\":{\"mode\":\"enum\",\"options\":[{\"value\":\"route\",\"label\":\"Route\"},{\"value\":\"modal\",\"label\":\"Modal\"},{\"value\":\"drawer\",\"label\":\"Drawer\"}]},\"actions[].params[].to\":{\"mode\":\"enum\",\"options\":[{\"value\":\"routeParam\",\"label\":\"Route param\"},{\"value\":\"query\",\"label\":\"Query param\"},{\"value\":\"input\",\"label\":\"Dialog input\"}]},\"defaults.header.variant\":{\"mode\":\"enum\",\"options\":[{\"value\":\"ghost\",\"label\":\"Ghost\"},{\"value\":\"tonal\",\"label\":\"Tonal\"},{\"value\":\"outlined\",\"label\":\"Outlined\"}]},\"actions[].type\":{\"mode\":\"enum\",\"options\":[{\"value\":\"button\",\"label\":\"Button\"},{\"value\":\"icon\",\"label\":\"Icon\"},{\"value\":\"fab\",\"label\":\"Fab\"},{\"value\":\"menu\",\"label\":\"Menu\"}]},\"actions[].appearance\":{\"mode\":\"enum\",\"options\":[{\"value\":\"filled\",\"label\":\"Filled\"},{\"value\":\"outlined\",\"label\":\"Outlined\"},{\"value\":\"elevated\",\"label\":\"Elevated\"},{\"value\":\"text\",\"label\":\"Text\"},{\"value\":\"tonal\",\"label\":\"Tonal\"}]},\"actions[].position\":{\"mode\":\"enum\",\"options\":[{\"value\":\"start\",\"label\":\"Start\"},{\"value\":\"end\",\"label\":\"End\"}]},\"defaults.back.strategy\":{\"mode\":\"enum\",\"options\":[{\"value\":\"auto\",\"label\":\"Auto\"},{\"value\":\"close\",\"label\":\"Close\"},{\"value\":\"navigate\",\"label\":\"Navigate\"}]},\"actions[].back.strategy\":{\"mode\":\"enum\",\"options\":[{\"value\":\"auto\",\"label\":\"Auto\"},{\"value\":\"close\",\"label\":\"Close\"},{\"value\":\"navigate\",\"label\":\"Navigate\"}]},\"resource.endpointKey\":{\"mode\":\"enum\",\"options\":[{\"value\":\"default\",\"label\":\"Default\"},{\"value\":\"humanResources\",\"label\":\"Human resources\"},{\"value\":\"uiWrappersTest\",\"label\":\"UI wrappers test\"}]}},\"actionCatalog\":[{\"id\":\"resource.path.set\",\"intentExamples\":[\"resource\",\"endpoint\",\"api\",\"path\",\"rota\"],\"patchTemplate\":{\"resource\":{\"path\":\"{{value}}\"}}},{\"id\":\"resource.idField.set\",\"intentExamples\":[\"id field\",\"chave\",\"primary key\"],\"patchTemplate\":{\"resource\":{\"idField\":\"{{value}}\"}}},{\"id\":\"defaults.openMode.set\",\"intentExamples\":[\"open mode\",\"open\",\"route\",\"modal\",\"drawer\"],\"patchTemplate\":{\"defaults\":{\"openMode\":\"{{value}}\"}}},{\"id\":\"defaults.header.variant.set\",\"intentExamples\":[\"header\",\"variant\",\"style\",\"back button\"],\"patchTemplate\":{\"defaults\":{\"header\":{\"variant\":\"{{value}}\"}}}},{\"id\":\"defaults.header.backLabel.set\",\"intentExamples\":[\"back label\",\"voltar\",\"header label\"],\"patchTemplate\":{\"defaults\":{\"header\":{\"backLabel\":\"{{value}}\"}}}},{\"id\":\"defaults.header.showBack.enable\",\"intentExamples\":[\"show back\",\"back button\",\"enable back\"],\"patchTemplate\":{\"defaults\":{\"header\":{\"showBack\":true}}}},{\"id\":\"defaults.header.showBack.disable\",\"intentExamples\":[\"hide back\",\"disable back\"],\"patchTemplate\":{\"defaults\":{\"header\":{\"showBack\":false}}}},{\"id\":\"defaults.back.strategy.set\",\"intentExamples\":[\"back\",\"return\",\"navigation\"],\"patchTemplate\":{\"defaults\":{\"back\":{\"strategy\":\"{{value}}\"}}}},{\"id\":\"defaults.back.returnTo.set\",\"intentExamples\":[\"return to\",\"back route\",\"navigate back\"],\"patchTemplate\":{\"defaults\":{\"back\":{\"returnTo\":\"{{value}}\"}}}},{\"id\":\"defaults.back.confirmOnDirty.enable\",\"intentExamples\":[\"confirm\",\"dirty\",\"unsaved\",\"confirm exit\"],\"patchTemplate\":{\"defaults\":{\"back\":{\"confirmOnDirty\":true}}}},{\"id\":\"defaults.back.confirmOnDirty.disable\",\"intentExamples\":[\"no confirm\",\"disable confirm\"],\"patchTemplate\":{\"defaults\":{\"back\":{\"confirmOnDirty\":false}}}},{\"id\":\"action.add\",\"intentExamples\":[\"add action\",\"new action\",\"create action\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"action\":\"{{params.action}}\",\"label\":\"{{value}}\",\"icon\":\"{{params.icon}}\"}]}},{\"id\":\"action.label.set\",\"intentExamples\":[\"label\",\"rename action\",\"titulo\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"label\":\"{{value}}\"}]}},{\"id\":\"action.icon.set\",\"intentExamples\":[\"icon\",\"icone\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"icon\":\"{{value}}\"}]}},{\"id\":\"action.openMode.set\",\"intentExamples\":[\"open mode\",\"route\",\"modal\",\"drawer\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"openMode\":\"{{value}}\"}]}},{\"id\":\"action.route.set\",\"intentExamples\":[\"route\",\"url\",\"navigate\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"route\":\"{{value}}\"}]}},{\"id\":\"action.formId.set\",\"intentExamples\":[\"form\",\"formId\",\"dialog\",\"drawer\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"formId\":\"{{value}}\"}]}},{\"id\":\"action.params.add\",\"intentExamples\":[\"param\",\"params\",\"query\",\"route param\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"params\":[{\"from\":\"{{params.from}}\",\"to\":\"{{params.to}}\",\"name\":\"{{params.name}}\"}]}]}},{\"id\":\"action.initialValue.set\",\"intentExamples\":[\"initial value\",\"seed\",\"default form values\",\"prefill\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"form\":{\"initialValue\":\"{{value}}\"}}]}},{\"id\":\"action.confirmation.enable\",\"intentExamples\":[\"confirm\",\"confirmation\",\"requires confirmation\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"requiresConfirmation\":true}]}},{\"id\":\"action.confirmation.disable\",\"intentExamples\":[\"no confirm\",\"disable confirmation\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"requiresConfirmation\":false}]}},{\"id\":\"action.visibleWhen.set\",\"intentExamples\":[\"visible when\",\"visibility\",\"show when\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"visibleWhen\":\"{{value}}\"}]}},{\"id\":\"action.type.set\",\"intentExamples\":[\"type\",\"button type\",\"toolbar\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"type\":\"{{value}}\"}]}},{\"id\":\"action.appearance.set\",\"intentExamples\":[\"appearance\",\"variant\",\"style\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"appearance\":\"{{value}}\"}]}},{\"id\":\"action.position.set\",\"intentExamples\":[\"position\",\"start\",\"end\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"position\":\"{{value}}\"}]}},{\"id\":\"action.back.strategy.set\",\"intentExamples\":[\"back\",\"return\",\"navigation\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"back\":{\"strategy\":\"{{value}}\"}}]}},{\"id\":\"ADD_CONDITIONAL_RENDERER\",\"intentExamples\":[\"conditional renderer\",\"renderer condicional\",\"badge condicional\",\"chip condicional\",\"badge se\",\"chip se\",\"conditional badge\",\"conditional chip\"],\"patchTemplate\":{\"table\":{\"columns\":[{\"field\":\"{{target}}\",\"conditionalRenderers\":[{\"condition\":\"{{params.condition}}\",\"renderer\":\"{{params.renderer}}\"}]}]}}}],\"fieldResolvers\":{\"actions[]\":[\"id\",\"label\",\"action\"],\"resource.path\":[],\"table.columns[].field\":[\"field\",\"header\"]},\"hints\":[\"Use actions[].id as the canonical action key; avoid array indexes.\",\"When adding actions, include params.action to describe the underlying CRUD action.\",\"openMode route requires actions[].route; modal or drawer require actions[].formId unless the host completes bindings via per-action override before opening.\",\"Table and form are full configs; patch nested fields instead of replacing the whole object.\",\"Use ADD_CONDITIONAL_RENDERER for table conditional badges/chips (table.columns[].conditionalRenderers).\",\"CRUD agrega TableConfig e FormConfig; siga o contrato da tabela para columns/conditionalRenderers.\",\"DOC: Widget purpose: CRUD shell that composes a table + optional form from metadata.\",\"DOC: Host inputs: metadata (required) and crudId (required). componentInstanceId/context/enableCustomization are optional.\",\"DOC: CrudMetadata requires component='praxis-crud' and table (TableConfig).\",\"DOC: inner table renders with resource.path (remote) or metadata.data (local). If both are provided, resource.path takes precedence.\",\"DOC: If actions open modal/drawer, actions[].formId is required unless a per-action override resolves it before opening; for route mode, actions[].route is required unless override resolves it.\"]}}",
|
|
6495
6675
|
"sourcePointer": "projects/praxis-crud/src/lib/ai/crud-context-pack.ts",
|
|
6496
|
-
"contentHash": "
|
|
6676
|
+
"contentHash": "c33c6b5d3305fcacb2777515510d779fdef9f4ae5400458702c594c76d8986ab",
|
|
6497
6677
|
"sourceKind": "component_definition",
|
|
6498
6678
|
"sourceId": "praxis-crud",
|
|
6499
6679
|
"corpusVersion": "1.0.0"
|
|
6500
6680
|
},
|
|
6501
6681
|
{
|
|
6502
|
-
"chunkIndex":
|
|
6682
|
+
"chunkIndex": 22,
|
|
6503
6683
|
"chunkKind": "recipe",
|
|
6504
|
-
"content": "{\
|
|
6684
|
+
"content": "{\"_comment\":\"Variant focused on CRUD actions and launcher behavior, using inferred canonical actions as the baseline.\",\"templateMeta\":{\"variantId\":\"actions\",\"variantOf\":\"praxis-crud\",\"registryKey\":\"praxis-crud\",\"tags\":[\"actions\",\"crud\"],\"useWhen\":\"user asks to change CRUD actions or routes\",\"examplePrompts\":[\"add a custom action to archive records\",\"change the edit action to open a route\"]},\"resource\":{\"path\":\"/api/employees\",\"idField\":\"id\",\"endpointKey\":\"employees\"},\"defaults\":{\"openMode\":\"modal\",\"modal\":{\"width\":\"860px\",\"maxWidth\":\"95vw\",\"panelClass\":\"crud-dialog\",\"backdropStyle\":\"blur\",\"autoFocus\":true,\"restoreFocus\":true},\"back\":{\"strategy\":\"auto\",\"returnTo\":\"/employees\",\"confirmOnDirty\":true},\"header\":{\"showBack\":true,\"backLabel\":\"Voltar\",\"variant\":\"outlined\",\"sticky\":true,\"breadcrumbs\":true,\"divider\":true}},\"actions\":[{\"id\":\"create\",\"label\":\"Novo colaborador\",\"icon\":\"add\",\"action\":\"create\",\"openMode\":\"modal\"},{\"id\":\"view\",\"label\":\"Visualizar\",\"icon\":\"visibility\",\"action\":\"view\",\"openMode\":\"modal\"},{\"id\":\"edit\",\"label\":\"Editar\",\"icon\":\"edit\",\"action\":\"edit\",\"openMode\":\"modal\"},{\"id\":\"delete\",\"label\":\"Excluir\",\"icon\":\"delete\",\"action\":\"delete\"},{\"id\":\"edit-route\",\"label\":\"Editar na rota\",\"icon\":\"open_in_new\",\"action\":\"edit-route\",\"openMode\":\"route\",\"route\":\"/employees/:id/edit\",\"params\":[{\"from\":\"id\",\"to\":\"routeParam\",\"name\":\"id\"},{\"from\":\"name\",\"to\":\"query\",\"name\":\"name\"}],\"back\":{\"strategy\":\"navigate\",\"returnTo\":\"/employees\"}}]}",
|
|
6505
6685
|
"sourcePointer": "examples/ai-recipes/praxis-crud.actions.json",
|
|
6506
|
-
"contentHash": "
|
|
6686
|
+
"contentHash": "48716a3af410e54266517aa76c02bd1d3b3c0f7ffcd06133fdb442531824645b",
|
|
6507
6687
|
"sourceKind": "component_definition",
|
|
6508
6688
|
"sourceId": "praxis-crud",
|
|
6509
6689
|
"corpusVersion": "1.0.0"
|
|
6510
6690
|
},
|
|
6511
6691
|
{
|
|
6512
|
-
"chunkIndex":
|
|
6692
|
+
"chunkIndex": 23,
|
|
6513
6693
|
"chunkKind": "recipe",
|
|
6514
|
-
"content": "{\n \"_comment\": \"Variant focused on CRUD form configuration.\",\n \"templateMeta\": {\n \"variantId\": \"form\",\n \"variantOf\": \"praxis-crud\",\n \"registryKey\": \"praxis-crud\",\n \"tags\": [\n \"form\",\n \"crud\"\n ],\n \"useWhen\": \"user asks to change form layout or fields in CRUD\",\n \"examplePrompts\": [\n \"add a new field to the crud form\",\n \"update validation rules in the form\"\n ]\n },\n \"resource\": {\n \"path\": \"/api/employees\",\n \"idField\": \"id\",\n \"endpointKey\": \"employees\"\n },\n \"form\": {\n \"metadata\": {\n \"version\": \"2.0\",\n \"source\": \"local\",\n \"schemaId\": \"path:/api/employees#request\",\n \"schemaContext\": {\n \"path\": \"/api/employees\",\n \"operation\": \"POST\",\n \"schemaType\": \"request\",\n \"internal\": false,\n \"tenant\": \"default\",\n \"locale\": \"pt-BR\"\n }\n },\n \"api\": {\n \"saveEndpoint\": \"/api/employees\",\n \"loadEndpoint\": \"/api/employees/${id}\",\n \"saveMethod\": \"POST\",\n \"timeout\": 15000,\n \"headers\": {\n \"X-Module\": \"HR\"\n },\n \"idField\": \"id\",\n \"beforeSave\": \"sanitizeEmployee\",\n \"afterLoad\": \"mapEmployee\"\n },\n \"behavior\": {\n \"confirmOnUnsavedChanges\": true,\n \"trackHistory\": true,\n \"focusFirstError\": true,\n \"scrollToErrors\": true,\n \"clearAfterSave\": false,\n \"reactiveValidation\": true,\n \"reactiveValidationDebounceMs\": 200\n },\n \"messages\": {\n \"createRegistrySuccess\": \"Colaborador criado com sucesso.\",\n \"updateRegistrySuccess\": \"Colaborador atualizado com sucesso.\",\n \"createRegistryError\": \"Falha ao criar colaborador.\",\n \"updateRegistryError\": \"Falha ao atualizar colaborador.\",\n \"confirmations\": {\n \"submit\": \"Deseja salvar as alteracoes?\",\n \"cancel\": \"Descartar alteracoes?\",\n \"reset\": \"Limpar o formulario?\"\n },\n \"customActions\": {\n \"archive\": {\n \"confirmation\": \"Arquivar este colaborador?\"\n }\n },\n \"loading\": {\n \"submit\": \"Salvando...\",\n \"cancel\": \"Cancelando...\"\n }\n },\n \"hints\": {\n \"dataModes\": {\n \"create\": \"Preencha os dados para criar um novo colaborador.\",\n \"edit\": \"Atualize os dados e salve as alteracoes.\",\n \"view\": \"Visualize os dados do colaborador.\"\n },\n \"uiModes\": {\n \"presentation\": \"Modo apresentacao mostra somente leitura.\",\n \"readonly\": \"Modo leitura bloqueia edicao.\",\n \"disabled\": \"Campos desabilitados nao permitem interacao.\",\n \"visible\": \"Controle de visibilidade sem destruir controles.\"\n }\n },\n \"hooks\": {\n \"beforeSubmit\": [\n {\n \"id\": \"sanitize-employee\",\n \"priority\": 100,\n \"args\": {\n \"trimStrings\": true\n }\n }\n ],\n \"afterSubmit\": [\n {\n \"id\": \"notify-success\",\n \"args\": {\n \"messageKey\": \"employeeSaved\"\n }\n }\n ],\n \"onError\": [\n {\n \"id\": \"notify-error\",\n \"args\": {\n \"messageKey\": \"employeeSaveError\"\n }\n }\n ]\n },\n \"fieldMetadata\": [\n {\n \"name\": \"id\",\n \"label\": \"ID\",\n \"controlType\": \"numericTextBox\",\n \"dataType\": \"number\",\n \"hidden\": true,\n \"readOnly\": true,\n \"description\": \"Campo ID oculto, gerenciado pelo backend.\"\n },\n {\n \"name\": \"name\",\n \"label\": \"Nome completo\",\n \"controlType\": \"input\",\n \"dataType\": \"text\",\n \"placeholder\": \"Ex.: Ana Souza\",\n \"prefixIcon\": \"person\",\n \"validators\": {\n \"required\": true,\n \"minLength\": 3\n }\n },\n {\n \"name\": \"email\",\n \"label\": \"Email\",\n \"controlType\": \"email\",\n \"dataType\": \"email\",\n \"placeholder\": \"nome@empresa.com\",\n \"validators\": {\n \"required\": true,\n \"email\": true\n }\n },\n {\n \"name\": \"phone\",\n \"label\": \"Telefone\",\n \"controlType\": \"phone\",\n \"placeholder\": \"(11) 99999-0000\",\n \"mask\": \"(99) 99999-9999\"\n },\n {\n \"name\": \"status\",\n \"label\": \"Status\",\n \"controlType\": \"select\",\n \"options\": [\n {\n \"text\": \"Ativo\",\n \"value\": \"ACTIVE\"\n },\n {\n \"text\": \"Inativo\",\n \"value\": \"INACTIVE\"\n },\n {\n \"text\": \"Afastado\",\n \"value\": \"ON_LEAVE\"\n }\n ],\n \"defaultValue\": \"ACTIVE\",\n \"materialDesign\": {\n \"appearance\": \"outline\"\n }\n },\n {\n \"name\": \"hireDate\",\n \"label\": \"Data de admissao\",\n \"controlType\": \"date\",\n \"dataType\": \"date\"\n },\n {\n \"name\": \"terminationDate\",\n \"label\": \"Data de desligamento\",\n \"controlType\": \"date\",\n \"conditionalDisplay\": {\n \"==\": [\n {\n \"var\": \"status\"\n },\n \"INACTIVE\"\n ]\n },\n \"conditionalRequired\": {\n \"==\": [\n {\n \"var\": \"status\"\n },\n \"INACTIVE\"\n ]\n }\n },\n {\n \"name\": \"department\",\n \"label\": \"Departamento\",\n \"controlType\": \"select\",\n \"endpoint\": \"/api/departments\",\n \"valueField\": \"id\",\n \"displayField\": \"name\"\n },\n {\n \"name\": \"role\",\n \"label\": \"Cargo\",\n \"controlType\": \"select\",\n \"options\": [\n {\n \"text\": \"Analista\",\n \"value\": \"ANALYST\"\n },\n {\n \"text\": \"Coordenador\",\n \"value\": \"COORD\"\n },\n {\n \"text\": \"Gerente\",\n \"value\": \"MANAGER\"\n }\n ]\n },\n {\n \"name\": \"managerId\",\n \"label\": \"Gestor\",\n \"controlType\": \"autoComplete\",\n \"endpoint\": \"/api/employees?role=manager\",\n \"valueField\": \"id\",\n \"displayField\": \"name\",\n \"filterField\": \"name\"\n },\n {\n \"name\": \"salary\",\n \"label\": \"Salario\",\n \"controlType\": \"currency\",\n \"dataType\": \"number\",\n \"format\": \"BRL|symbol|2\",\n \"validators\": {\n \"min\": 0\n }\n },\n {\n \"name\": \"workMode\",\n \"label\": \"Regime\",\n \"controlType\": \"radio\",\n \"options\": [\n {\n \"text\": \"CLT\",\n \"value\": \"CLT\"\n },\n {\n \"text\": \"PJ\",\n \"value\": \"PJ\"\n },\n {\n \"text\": \"Estagio\",\n \"value\": \"INTERN\"\n }\n ],\n \"defaultValue\": \"CLT\"\n },\n {\n \"name\": \"notes\",\n \"label\": \"Observacoes\",\n \"controlType\": \"textarea\",\n \"validators\": {\n \"maxLength\": 500\n },\n \"hint\": \"Informacoes adicionais relevantes ao cadastro.\"\n },\n {\n \"name\": \"isActive\",\n \"label\": \"Ativo\",\n \"controlType\": \"toggle\",\n \"defaultValue\": true\n },\n {\n \"name\": \"avatar\",\n \"label\": \"Foto\",\n \"controlType\": \"upload\",\n \"accept\": \".png,.jpg,.jpeg\",\n \"multiple\": false,\n \"materialDesign\": {\n \"appearance\": \"outline\"\n }\n }\n ],\n \"sections\": [\n {\n \"id\": \"basic\",\n \"title\": \"Dados basicos\",\n \"description\": \"Informacoes pessoais e status.\",\n \"icon\": \"person\",\n \"collapsible\": true,\n \"collapsed\": false,\n \"titleStyle\": \"titleMedium\",\n \"descriptionStyle\": \"bodyMedium\",\n \"rows\": [\n {\n \"id\": \"row-basic-1\",\n \"columns\": [\n {\n \"id\": \"col-basic-1\",\n \"fields\": [\n \"name\",\n \"email\"\n ],\n \"span\": {\n \"md\": 6,\n \"lg\": 6\n },\n \"padding\": 8\n },\n {\n \"id\": \"col-basic-2\",\n \"fields\": [\n \"status\",\n \"hireDate\"\n ],\n \"span\": {\n \"md\": 6,\n \"lg\": 6\n }\n }\n ]\n },\n {\n \"id\": \"row-basic-2\",\n \"columns\": [\n {\n \"id\": \"col-basic-3\",\n \"fields\": [\n \"phone\",\n \"managerId\"\n ],\n \"span\": {\n \"md\": 6,\n \"lg\": 6\n }\n },\n {\n \"id\": \"col-basic-4\",\n \"fields\": [\n \"department\",\n \"role\"\n ],\n \"span\": {\n \"md\": 6,\n \"lg\": 6\n }\n }\n ]\n }\n ]\n },\n {\n \"id\": \"employment\",\n \"title\": \"Contrato\",\n \"icon\": \"badge\",\n \"rows\": [\n {\n \"id\": \"row-employment-1\",\n \"columns\": [\n {\n \"id\": \"col-employment-1\",\n \"fields\": [\n \"salary\",\n \"workMode\"\n ],\n \"span\": {\n \"md\": 6,\n \"lg\": 6\n }\n },\n {\n \"id\": \"col-employment-2\",\n \"fields\": [\n \"terminationDate\",\n \"notes\"\n ],\n \"span\": {\n \"md\": 6,\n \"lg\": 6\n }\n }\n ]\n }\n ]\n },\n {\n \"id\": \"attachments\",\n \"title\": \"Arquivos\",\n \"collapsible\": true,\n \"collapsed\": true,\n \"rows\": [\n {\n \"id\": \"row-attachments-1\",\n \"columns\": [\n {\n \"id\": \"col-attachments-1\",\n \"fields\": [\n \"avatar\"\n ],\n \"span\": {\n \"md\": 12,\n \"lg\": 12\n },\n \"align\": \"center\"\n }\n ]\n }\n ]\n }\n ],\n \"actions\": {\n \"submit\": {\n \"visible\": true,\n \"label\": \"Salvar\",\n \"color\": \"primary\",\n \"variant\": \"raised\",\n \"type\": \"submit\",\n \"shortcut\": \"Ctrl+S\"\n },\n \"cancel\": {\n \"visible\": true,\n \"label\": \"Cancelar\",\n \"type\": \"button\"\n },\n \"reset\": {\n \"visible\": true,\n \"label\": \"Limpar\",\n \"type\": \"reset\"\n },\n \"custom\": [\n {\n \"id\": \"archive\",\n \"visible\": true,\n \"label\": \"Arquivar\",\n \"icon\": \"archive\",\n \"color\": \"warn\",\n \"variant\": \"stroked\",\n \"action\": \"archive\"\n }\n ],\n \"position\": \"right\",\n \"orientation\": \"horizontal\",\n \"spacing\": \"normal\",\n \"sticky\": true,\n \"divider\": true,\n \"placement\": \"afterSections\",\n \"mobile\": {\n \"position\": \"center\",\n \"orientation\": \"vertical\",\n \"collapseToMenu\": true\n }\n },\n \"formRules\": [\n {\n \"id\": \"hide-salary-inactive\",\n \"name\": \"Ocultar salario para inativos\",\n \"targetType\": \"field\",\n \"targets\": [\n \"salary\"\n ],\n \"effect\": {\n \"condition\": {\n \"==\": [\n {\n \"var\": \"status\"\n },\n \"INACTIVE\"\n ]\n },\n \"properties\": {\n \"visible\": false\n }\n }\n },\n {\n \"id\": \"require-termination-date\",\n \"name\": \"Exigir data de desligamento\",\n \"targetType\": \"field\",\n \"targets\": [\n \"terminationDate\"\n ],\n \"effect\": {\n \"condition\": {\n \"==\": [\n {\n \"var\": \"status\"\n },\n \"INACTIVE\"\n ]\n },\n \"properties\": {\n \"required\": true,\n \"visible\": true\n }\n }\n }\n ]\n }\n}\n",
|
|
6694
|
+
"content": "{\"_comment\":\"Variant focused on CRUD form configuration.\",\"templateMeta\":{\"variantId\":\"form\",\"variantOf\":\"praxis-crud\",\"registryKey\":\"praxis-crud\",\"tags\":[\"form\",\"crud\"],\"useWhen\":\"user asks to change form layout or fields in CRUD\",\"examplePrompts\":[\"add a new field to the crud form\",\"update validation rules in the form\"]},\"resource\":{\"path\":\"/api/employees\",\"idField\":\"id\",\"endpointKey\":\"employees\"},\"form\":{\"metadata\":{\"version\":\"2.0\",\"source\":\"local\",\"schemaId\":\"path:/api/employees#request\",\"schemaContext\":{\"path\":\"/api/employees\",\"operation\":\"POST\",\"schemaType\":\"request\",\"internal\":false,\"tenant\":\"default\",\"locale\":\"pt-BR\"}},\"api\":{\"saveEndpoint\":\"/api/employees\",\"loadEndpoint\":\"/api/employees/${id}\",\"saveMethod\":\"POST\",\"timeout\":15000,\"headers\":{\"X-Module\":\"HR\"},\"idField\":\"id\",\"beforeSave\":\"sanitizeEmployee\",\"afterLoad\":\"mapEmployee\"},\"behavior\":{\"confirmOnUnsavedChanges\":true,\"trackHistory\":true,\"focusFirstError\":true,\"scrollToErrors\":true,\"clearAfterSave\":false,\"reactiveValidation\":true,\"reactiveValidationDebounceMs\":200},\"messages\":{\"createRegistrySuccess\":\"Colaborador criado com sucesso.\",\"updateRegistrySuccess\":\"Colaborador atualizado com sucesso.\",\"createRegistryError\":\"Falha ao criar colaborador.\",\"updateRegistryError\":\"Falha ao atualizar colaborador.\",\"confirmations\":{\"submit\":\"Deseja salvar as alteracoes?\",\"cancel\":\"Descartar alteracoes?\",\"reset\":\"Limpar o formulario?\"},\"customActions\":{\"archive\":{\"confirmation\":\"Arquivar este colaborador?\"}},\"loading\":{\"submit\":\"Salvando...\",\"cancel\":\"Cancelando...\"}},\"hints\":{\"dataModes\":{\"create\":\"Preencha os dados para criar um novo colaborador.\",\"edit\":\"Atualize os dados e salve as alteracoes.\",\"view\":\"Visualize os dados do colaborador.\"},\"uiModes\":{\"presentation\":\"Modo apresentacao mostra somente leitura.\",\"readonly\":\"Modo leitura bloqueia edicao.\",\"disabled\":\"Campos desabilitados nao permitem interacao.\",\"visible\":\"Controle de visibilidade sem destruir controles.\"}},\"hooks\":{\"beforeSubmit\":[{\"id\":\"sanitize-employee\",\"priority\":100,\"args\":{\"trimStrings\":true}}],\"afterSubmit\":[{\"id\":\"notify-success\",\"args\":{\"messageKey\":\"employeeSaved\"}}],\"onError\":[{\"id\":\"notify-error\",\"args\":{\"messageKey\":\"employeeSaveError\"}}]},\"fieldMetadata\":[{\"name\":\"id\",\"label\":\"ID\",\"controlType\":\"numericTextBox\",\"dataType\":\"number\",\"hidden\":true,\"readOnly\":true,\"description\":\"Campo ID oculto, gerenciado pelo backend.\"},{\"name\":\"name\",\"label\":\"Nome completo\",\"controlType\":\"input\",\"dataType\":\"text\",\"placeholder\":\"Ex.: Ana Souza\",\"prefixIcon\":\"person\",\"validators\":{\"required\":true,\"minLength\":3}},{\"name\":\"email\",\"label\":\"Email\",\"controlType\":\"email\",\"dataType\":\"email\",\"placeholder\":\"nome@empresa.com\",\"validators\":{\"required\":true,\"email\":true}},{\"name\":\"phone\",\"label\":\"Telefone\",\"controlType\":\"phone\",\"placeholder\":\"(11) 99999-0000\",\"mask\":\"(99) 99999-9999\"},{\"name\":\"status\",\"label\":\"Status\",\"controlType\":\"select\",\"options\":[{\"text\":\"Ativo\",\"value\":\"ACTIVE\"},{\"text\":\"Inativo\",\"value\":\"INACTIVE\"},{\"text\":\"Afastado\",\"value\":\"ON_LEAVE\"}],\"defaultValue\":\"ACTIVE\",\"materialDesign\":{\"appearance\":\"outline\"}},{\"name\":\"hireDate\",\"label\":\"Data de admissao\",\"controlType\":\"date\",\"dataType\":\"date\"},{\"name\":\"terminationDate\",\"label\":\"Data de desligamento\",\"controlType\":\"date\",\"conditionalDisplay\":{\"==\":[{\"var\":\"status\"},\"INACTIVE\"]},\"conditionalRequired\":{\"==\":[{\"var\":\"status\"},\"INACTIVE\"]}},{\"name\":\"department\",\"label\":\"Departamento\",\"controlType\":\"select\",\"endpoint\":\"/api/departments\",\"valueField\":\"id\",\"displayField\":\"name\"},{\"name\":\"role\",\"label\":\"Cargo\",\"controlType\":\"select\",\"options\":[{\"text\":\"Analista\",\"value\":\"ANALYST\"},{\"text\":\"Coordenador\",\"value\":\"COORD\"},{\"text\":\"Gerente\",\"value\":\"MANAGER\"}]},{\"name\":\"managerId\",\"label\":\"Gestor\",\"controlType\":\"autoComplete\",\"endpoint\":\"/api/employees?role=manager\",\"valueField\":\"id\",\"displayField\":\"name\",\"filterField\":\"name\"},{\"name\":\"salary\",\"label\":\"Salario\",\"controlType\":\"currency\",\"dataType\":\"number\",\"format\":\"BRL|symbol|2\",\"validators\":{\"min\":0}},{\"name\":\"workMode\",\"label\":\"Regime\",\"controlType\":\"radio\",\"options\":[{\"text\":\"CLT\",\"value\":\"CLT\"},{\"text\":\"PJ\",\"value\":\"PJ\"},{\"text\":\"Estagio\",\"value\":\"INTERN\"}],\"defaultValue\":\"CLT\"},{\"name\":\"notes\",\"label\":\"Observacoes\",\"controlType\":\"textarea\",\"validators\":{\"maxLength\":500},\"hint\":\"Informacoes adicionais relevantes ao cadastro.\"},{\"name\":\"isActive\",\"label\":\"Ativo\",\"controlType\":\"toggle\",\"defaultValue\":true},{\"name\":\"avatar\",\"label\":\"Foto\",\"controlType\":\"upload\",\"accept\":\".png,.jpg,.jpeg\",\"multiple\":false,\"materialDesign\":{\"appearance\":\"outline\"}}],\"sections\":[{\"id\":\"basic\",\"title\":\"Dados basicos\",\"description\":\"Informacoes pessoais e status.\",\"icon\":\"person\",\"collapsible\":true,\"collapsed\":false,\"titleStyle\":\"titleMedium\",\"descriptionStyle\":\"bodyMedium\",\"rows\":[{\"id\":\"row-basic-1\",\"columns\":[{\"id\":\"col-basic-1\",\"fields\":[\"name\",\"email\"],\"span\":{\"md\":6,\"lg\":6},\"padding\":8},{\"id\":\"col-basic-2\",\"fields\":[\"status\",\"hireDate\"],\"span\":{\"md\":6,\"lg\":6}}]},{\"id\":\"row-basic-2\",\"columns\":[{\"id\":\"col-basic-3\",\"fields\":[\"phone\",\"managerId\"],\"span\":{\"md\":6,\"lg\":6}},{\"id\":\"col-basic-4\",\"fields\":[\"department\",\"role\"],\"span\":{\"md\":6,\"lg\":6}}]}]},{\"id\":\"employment\",\"title\":\"Contrato\",\"icon\":\"badge\",\"rows\":[{\"id\":\"row-employment-1\",\"columns\":[{\"id\":\"col-employment-1\",\"fields\":[\"salary\",\"workMode\"],\"span\":{\"md\":6,\"lg\":6}},{\"id\":\"col-employment-2\",\"fields\":[\"terminationDate\",\"notes\"],\"span\":{\"md\":6,\"lg\":6}}]}]},{\"id\":\"attachments\",\"title\":\"Arquivos\",\"collapsible\":true,\"collapsed\":true,\"rows\":[{\"id\":\"row-attachments-1\",\"columns\":[{\"id\":\"col-attachments-1\",\"fields\":[\"avatar\"],\"span\":{\"md\":12,\"lg\":12},\"align\":\"center\"}]}]}],\"actions\":{\"submit\":{\"visible\":true,\"label\":\"Salvar\",\"color\":\"primary\",\"variant\":\"raised\",\"type\":\"submit\",\"shortcut\":\"Ctrl+S\"},\"cancel\":{\"visible\":true,\"label\":\"Cancelar\",\"type\":\"button\"},\"reset\":{\"visible\":true,\"label\":\"Limpar\",\"type\":\"reset\"},\"custom\":[{\"id\":\"archive\",\"visible\":true,\"label\":\"Arquivar\",\"icon\":\"archive\",\"color\":\"warn\",\"variant\":\"stroked\",\"action\":\"archive\"}],\"position\":\"right\",\"orientation\":\"horizontal\",\"spacing\":\"normal\",\"sticky\":true,\"divider\":true,\"placement\":\"afterSections\",\"mobile\":{\"position\":\"center\",\"orientation\":\"vertical\",\"collapseToMenu\":true}},\"formRules\":[{\"id\":\"hide-salary-inactive\",\"name\":\"Ocultar salario para inativos\",\"targetType\":\"field\",\"targets\":[\"salary\"],\"effect\":{\"condition\":{\"==\":[{\"var\":\"status\"},\"INACTIVE\"]},\"properties\":{\"visible\":false}}},{\"id\":\"require-termination-date\",\"name\":\"Exigir data de desligamento\",\"targetType\":\"field\",\"targets\":[\"terminationDate\"],\"effect\":{\"condition\":{\"==\":[{\"var\":\"status\"},\"INACTIVE\"]},\"properties\":{\"required\":true,\"visible\":true}}}]}}",
|
|
6515
6695
|
"sourcePointer": "examples/ai-recipes/praxis-crud.form.json",
|
|
6516
|
-
"contentHash": "
|
|
6696
|
+
"contentHash": "c4ceb2a63dcbd0ba9ce776bca0c8f53bdd27f911763f358333b4ff750f8582d6",
|
|
6517
6697
|
"sourceKind": "component_definition",
|
|
6518
6698
|
"sourceId": "praxis-crud",
|
|
6519
6699
|
"corpusVersion": "1.0.0"
|
|
6520
6700
|
},
|
|
6521
6701
|
{
|
|
6522
|
-
"chunkIndex":
|
|
6702
|
+
"chunkIndex": 24,
|
|
6523
6703
|
"chunkKind": "recipe",
|
|
6524
|
-
"content": "{\n \"_comment\": \"Receita de CRUD alinhada ao PraxisCrud, usando acoes canonicas inferidas como baseline.\",\n \"templateMeta\": {\n \"registryKey\": \"praxis-crud\",\n \"defaultVariantId\": \"table\",\n \"variants\": [\n {\n \"id\": \"table\",\n \"registryKey\": \"praxis-crud\",\n \"variantId\": \"table\",\n \"aiDescription\": \"CRUD table configuration only.\",\n \"tags\": [\n \"table\",\n \"crud\"\n ],\n \"useWhen\": \"user asks to change table columns or behavior inside CRUD\",\n \"examplePrompts\": [\n \"adjust the columns shown in the crud table\",\n \"enable selection in the crud table\"\n ]\n },\n {\n \"id\": \"form\",\n \"registryKey\": \"praxis-crud\",\n \"variantId\": \"form\",\n \"aiDescription\": \"CRUD form configuration only.\",\n \"tags\": [\n \"form\",\n \"crud\"\n ],\n \"useWhen\": \"user asks to change form layout or fields in CRUD\",\n \"examplePrompts\": [\n \"add a new field to the crud form\",\n \"update validation rules in the form\"\n ]\n },\n {\n \"id\": \"actions\",\n \"registryKey\": \"praxis-crud\",\n \"variantId\": \"actions\",\n \"aiDescription\": \"CRUD actions and modal behavior.\",\n \"tags\": [\n \"actions\",\n \"crud\"\n ],\n \"useWhen\": \"user asks to change CRUD actions or routes\",\n \"examplePrompts\": [\n \"add a custom action to archive records\",\n \"change the edit action to open a route\"\n ]\n }\n ]\n },\n \"component\": \"praxis-crud\",\n \"resource\": {\n \"path\": \"/api/employees\",\n \"idField\": \"id\",\n \"endpointKey\": \"employees\"\n },\n \"defaults\": {\n \"openMode\": \"modal\",\n \"modal\": {\n \"width\": \"860px\",\n \"maxWidth\": \"95vw\",\n \"panelClass\": \"crud-dialog\",\n \"backdropStyle\": \"blur\",\n \"autoFocus\": true,\n \"restoreFocus\": true\n },\n \"back\": {\n \"strategy\": \"auto\",\n \"returnTo\": \"/employees\",\n \"confirmOnDirty\": true\n },\n \"header\": {\n \"showBack\": true,\n \"backLabel\": \"Voltar\",\n \"variant\": \"outlined\",\n \"sticky\": true,\n \"breadcrumbs\": true,\n \"divider\": true\n }\n },\n \"actions\": [\n {\n \"id\": \"create\",\n \"label\": \"Novo colaborador\",\n \"icon\": \"add\",\n \"action\": \"create\",\n \"openMode\": \"modal\"\n },\n {\n \"id\": \"view\",\n \"label\": \"Visualizar\",\n \"icon\": \"visibility\",\n \"action\": \"view\",\n \"openMode\": \"modal\"\n },\n {\n \"id\": \"edit\",\n \"label\": \"Editar\",\n \"icon\": \"edit\",\n \"action\": \"edit\",\n \"openMode\": \"modal\"\n },\n {\n \"id\": \"delete\",\n \"label\": \"Excluir\",\n \"icon\": \"delete\",\n \"action\": \"delete\"\n },\n {\n \"id\": \"edit-route\",\n \"label\": \"Editar na rota\",\n \"icon\": \"open_in_new\",\n \"action\": \"edit-route\",\n \"openMode\": \"route\",\n \"route\": \"/employees/:id/edit\",\n \"params\": [\n {\n \"from\": \"id\",\n \"to\": \"routeParam\",\n \"name\": \"id\"\n },\n {\n \"from\": \"name\",\n \"to\": \"query\",\n \"name\": \"name\"\n }\n ],\n \"back\": {\n \"strategy\": \"navigate\",\n \"returnTo\": \"/employees\"\n }\n }\n ],\n \"table\": {\n \"meta\": {\n \"version\": \"2.0.0\",\n \"id\": \"employees-table\",\n \"name\": \"Colaboradores\",\n \"description\": \"Listagem de colaboradores ativos e inativos\",\n \"idField\": \"id\"\n },\n \"columns\": [\n {\n \"field\": \"id\",\n \"header\": \"ID\",\n \"type\": \"string\",\n \"width\": \"80px\",\n \"visible\": false\n },\n {\n \"field\": \"name\",\n \"header\": \"Nome\",\n \"type\": \"string\",\n \"sortable\": true,\n \"filterable\": true,\n \"resizable\": true,\n \"sticky\": \"start\"\n },\n {\n \"field\": \"email\",\n \"header\": \"Email\",\n \"type\": \"string\",\n \"sortable\": true,\n \"filterable\": true\n },\n {\n \"field\": \"status\",\n \"header\": \"Status\",\n \"type\": \"string\",\n \"sortable\": true,\n \"filterable\": true,\n \"valueMapping\": {\n \"ACTIVE\": \"Ativo\",\n \"INACTIVE\": \"Inativo\",\n \"ON_LEAVE\": \"Afastado\"\n },\n \"renderer\": {\n \"type\": \"badge\",\n \"badge\": {\n \"textField\": \"statusLabel\",\n \"color\": \"success\",\n \"variant\": \"filled\"\n }\n },\n \"conditionalRenderers\": [\n {\n \"condition\": {\n \"==\": [\n {\n \"var\": \"status\"\n },\n \"INACTIVE\"\n ]\n },\n \"renderer\": {\n \"type\": \"badge\",\n \"badge\": {\n \"text\": \"Inativo\",\n \"color\": \"warn\",\n \"variant\": \"filled\"\n }\n },\n \"description\": \"Status inativo\",\n \"enabled\": true\n },\n {\n \"condition\": {\n \"==\": [\n {\n \"var\": \"status\"\n },\n \"ON_LEAVE\"\n ]\n },\n \"renderer\": {\n \"type\": \"chip\",\n \"chip\": {\n \"text\": \"Afastado\",\n \"color\": \"accent\",\n \"variant\": \"outlined\"\n }\n },\n \"description\": \"Status afastado\",\n \"enabled\": true\n }\n ]\n },\n {\n \"field\": \"hireDate\",\n \"header\": \"Admissao\",\n \"type\": \"date\",\n \"format\": \"dd/MM/yyyy\",\n \"sortable\": true,\n \"filterable\": true\n },\n {\n \"field\": \"salary\",\n \"header\": \"Salario\",\n \"type\": \"currency\",\n \"format\": \"BRL|symbol|2\",\n \"align\": \"right\",\n \"sortable\": true,\n \"filterable\": true\n }\n ],\n \"toolbar\": {\n \"visible\": true,\n \"position\": \"top\",\n \"title\": \"Colaboradores\",\n \"subtitle\": \"Gerencie cadastro, status e remuneracao\",\n \"layout\": {\n \"alignment\": \"space-between\",\n \"showSeparator\": true\n },\n \"actions\": [\n {\n \"id\": \"create\",\n \"label\": \"Novo\",\n \"icon\": \"add\",\n \"type\": \"button\",\n \"color\": \"primary\",\n \"position\": \"end\",\n \"action\": \"create\"\n },\n {\n \"id\": \"export\",\n \"label\": \"Exportar\",\n \"icon\": \"download\",\n \"type\": \"menu\",\n \"position\": \"end\",\n \"action\": \"export\",\n \"children\": [\n {\n \"id\": \"export-csv\",\n \"label\": \"CSV\",\n \"icon\": \"table_view\",\n \"type\": \"button\",\n \"position\": \"end\",\n \"action\": \"exportCsv\"\n },\n {\n \"id\": \"export-excel\",\n \"label\": \"Excel\",\n \"icon\": \"grid_on\",\n \"type\": \"button\",\n \"position\": \"end\",\n \"action\": \"exportExcel\"\n }\n ]\n }\n ],\n \"filters\": {\n \"enabled\": true,\n \"showAdvancedButton\": true\n },\n \"settingsMenu\": {\n \"enabled\": true,\n \"options\": [\n {\n \"id\": \"density\",\n \"label\": \"Densidade\",\n \"type\": \"select\",\n \"options\": [\n \"compact\",\n \"comfortable\",\n \"spacious\"\n ]\n }\n ]\n }\n },\n \"behavior\": {\n \"pagination\": {\n \"enabled\": true,\n \"pageSize\": 20,\n \"pageSizeOptions\": [\n 10,\n 20,\n 50\n ],\n \"showFirstLastButtons\": true,\n \"showPageNumbers\": true,\n \"showPageInfo\": true,\n \"position\": \"bottom\",\n \"style\": \"default\",\n \"strategy\": \"server\"\n },\n \"sorting\": {\n \"enabled\": true,\n \"defaultSort\": {\n \"column\": \"name\",\n \"direction\": \"asc\"\n },\n \"multiSort\": false,\n \"strategy\": \"server\",\n \"showSortIndicators\": true,\n \"indicatorPosition\": \"end\",\n \"allowClearSort\": true\n },\n \"filtering\": {\n \"enabled\": true,\n \"columnFilters\": {\n \"enabled\": true,\n \"defaultType\": \"text\",\n \"position\": \"header\"\n },\n \"advancedFilters\": {\n \"enabled\": true,\n \"queryBuilder\": true,\n \"savePresets\": true\n },\n \"strategy\": \"server\",\n \"debounceTime\": 300\n },\n \"selection\": {\n \"enabled\": true,\n \"type\": \"multiple\",\n \"mode\": \"checkbox\",\n \"allowSelectAll\": true,\n \"checkboxPosition\": \"start\",\n \"persistSelection\": false,\n \"persistOnDataUpdate\": false\n },\n \"interaction\": {\n \"rowClick\": {\n \"enabled\": true,\n \"action\": \"view\"\n },\n \"rowDoubleClick\": {\n \"enabled\": true,\n \"action\": \"edit\"\n },\n \"hover\": {\n \"enabled\": true,\n \"highlightRow\": true,\n \"showActionsOnHover\": true\n },\n \"keyboard\": {\n \"enabled\": true\n }\n }\n },\n \"actions\": {\n \"row\": {\n \"enabled\": true,\n \"position\": \"end\",\n \"display\": \"icons\",\n \"trigger\": \"hover\",\n \"width\": \"140px\",\n \"actions\": [\n {\n \"id\": \"view\",\n \"label\": \"Ver\",\n \"icon\": \"visibility\",\n \"action\": \"view\"\n },\n {\n \"id\": \"edit\",\n \"label\": \"Editar\",\n \"icon\": \"edit\",\n \"action\": \"edit\"\n },\n {\n \"id\": \"delete\",\n \"label\": \"Excluir\",\n \"icon\": \"delete\",\n \"action\": \"delete\",\n \"requiresConfirmation\": true\n }\n ],\n \"header\": {\n \"label\": \"Acoes\",\n \"align\": \"center\"\n }\n },\n \"bulk\": {\n \"enabled\": true,\n \"position\": \"toolbar\",\n \"actions\": [\n {\n \"id\": \"bulk-delete\",\n \"label\": \"Excluir selecionados\",\n \"icon\": \"delete\",\n \"action\": \"deleteSelected\",\n \"requiresConfirmation\": true,\n \"minSelections\": 1\n }\n ],\n \"floating\": {\n \"position\": \"bottom-right\",\n \"hideWhenEmpty\": true\n }\n },\n \"confirmations\": {\n \"default\": {\n \"title\": \"Confirmar acao\",\n \"message\": \"Deseja continuar?\",\n \"confirmText\": \"Confirmar\",\n \"cancelText\": \"Cancelar\"\n },\n \"specific\": {\n \"delete\": {\n \"title\": \"Excluir colaborador\",\n \"message\": \"Esta acao nao pode ser desfeita.\",\n \"confirmText\": \"Excluir\",\n \"cancelText\": \"Cancelar\"\n }\n }\n }\n },\n \"export\": {\n \"enabled\": true,\n \"formats\": [\n \"csv\",\n \"excel\"\n ],\n \"general\": {\n \"includeHeaders\": true,\n \"respectFilters\": true,\n \"applyFormatting\": true,\n \"defaultFileName\": \"colaboradores\",\n \"includeColumns\": [\n \"id\",\n \"name\",\n \"email\",\n \"status\",\n \"hireDate\",\n \"salary\"\n ]\n },\n \"excel\": {\n \"sheetName\": \"Colaboradores\",\n \"includeFormulas\": false,\n \"freezeHeaders\": true,\n \"autoFitColumns\": true\n },\n \"csv\": {\n \"delimiter\": \";\",\n \"escapeChar\": \"\\\"\",\n \"encoding\": \"utf-8\",\n \"includeBOM\": true\n }\n },\n \"messages\": {\n \"states\": {\n \"loading\": \"Carregando colaboradores...\",\n \"empty\": \"Nenhum colaborador encontrado.\",\n \"error\": \"Erro ao carregar dados.\",\n \"noResults\": \"Sem resultados para o filtro atual.\",\n \"loadingMore\": \"Carregando mais registros...\"\n },\n \"actions\": {\n \"confirmations\": {\n \"delete\": \"Excluir este colaborador?\",\n \"deleteMultiple\": \"Excluir os colaboradores selecionados?\",\n \"save\": \"Salvar alteracoes?\",\n \"cancel\": \"Cancelar edicao?\",\n \"export\": \"Exportar dados agora?\"\n },\n \"success\": {\n \"save\": \"Colaborador salvo com sucesso.\",\n \"delete\": \"Colaborador excluido.\",\n \"export\": \"Exportacao concluida.\"\n },\n \"errors\": {\n \"save\": \"Falha ao salvar.\",\n \"delete\": \"Falha ao excluir.\",\n \"export\": \"Falha ao exportar.\"\n }\n }\n },\n \"localization\": {\n \"locale\": \"pt-BR\",\n \"direction\": \"ltr\",\n \"dateTime\": {\n \"dateFormat\": \"dd/MM/yyyy\",\n \"timeFormat\": \"HH:mm\",\n \"dateTimeFormat\": \"dd/MM/yyyy HH:mm\",\n \"firstDayOfWeek\": 1\n }\n },\n \"appearance\": {\n \"density\": \"comfortable\",\n \"borders\": {\n \"showRowBorders\": true,\n \"showColumnBorders\": false,\n \"showOuterBorder\": true,\n \"style\": \"solid\",\n \"width\": 1,\n \"color\": \"#e0e0e0\"\n }\n }\n },\n \"form\": {\n \"metadata\": {\n \"version\": \"2.0\",\n \"source\": \"local\",\n \"schemaId\": \"path:/api/employees#request\",\n \"schemaContext\": {\n \"path\": \"/api/employees\",\n \"operation\": \"POST\",\n \"schemaType\": \"request\",\n \"internal\": false,\n \"tenant\": \"default\",\n \"locale\": \"pt-BR\"\n }\n },\n \"api\": {\n \"saveEndpoint\": \"/api/employees\",\n \"loadEndpoint\": \"/api/employees/${id}\",\n \"saveMethod\": \"POST\",\n \"timeout\": 15000,\n \"headers\": {\n \"X-Module\": \"HR\"\n },\n \"idField\": \"id\",\n \"beforeSave\": \"sanitizeEmployee\",\n \"afterLoad\": \"mapEmployee\"\n },\n \"behavior\": {\n \"confirmOnUnsavedChanges\": true,\n \"trackHistory\": true,\n \"focusFirstError\": true,\n \"scrollToErrors\": true,\n \"clearAfterSave\": false,\n \"reactiveValidation\": true,\n \"reactiveValidationDebounceMs\": 200\n },\n \"messages\": {\n \"createRegistrySuccess\": \"Colaborador criado com sucesso.\",\n \"updateRegistrySuccess\": \"Colaborador atualizado com sucesso.\",\n \"createRegistryError\": \"Falha ao criar colaborador.\",\n \"updateRegistryError\": \"Falha ao atualizar colaborador.\",\n \"confirmations\": {\n \"submit\": \"Deseja salvar as alteracoes?\",\n \"cancel\": \"Descartar alteracoes?\",\n \"reset\": \"Limpar o formulario?\"\n },\n \"customActions\": {\n \"archive\": {\n \"confirmation\": \"Arquivar este colaborador?\"\n }\n },\n \"loading\": {\n \"submit\": \"Salvando...\",\n \"cancel\": \"Cancelando...\"\n }\n },\n \"hints\": {\n \"dataModes\": {\n \"create\": \"Preencha os dados para criar um novo colaborador.\",\n \"edit\": \"Atualize os dados e salve as alteracoes.\",\n \"view\": \"Visualize os dados do colaborador.\"\n },\n \"uiModes\": {\n \"presentation\": \"Modo apresentacao mostra somente leitura.\",\n \"readonly\": \"Modo leitura bloqueia edicao.\",\n \"disabled\": \"Campos desabilitados nao permitem interacao.\",\n \"visible\": \"Controle de visibilidade sem destruir controles.\"\n }\n },\n \"hooks\": {\n \"beforeSubmit\": [\n {\n \"id\": \"sanitize-employee\",\n \"priority\": 100,\n \"args\": {\n \"trimStrings\": true\n }\n }\n ],\n \"afterSubmit\": [\n {\n \"id\": \"notify-success\",\n \"args\": {\n \"messageKey\": \"employeeSaved\"\n }\n }\n ],\n \"onError\": [\n {\n \"id\": \"notify-error\",\n \"args\": {\n \"messageKey\": \"employeeSaveError\"\n }\n }\n ]\n },\n \"fieldMetadata\": [\n {\n \"name\": \"id\",\n \"label\": \"ID\",\n \"controlType\": \"numericTextBox\",\n \"dataType\": \"number\",\n \"hidden\": true,\n \"readOnly\": true,\n \"description\": \"Campo ID oculto, gerenciado pelo backend.\"\n },\n {\n \"name\": \"name\",\n \"label\": \"Nome completo\",\n \"controlType\": \"input\",\n \"dataType\": \"text\",\n \"placeholder\": \"Ex.: Ana Souza\",\n \"prefixIcon\": \"person\",\n \"validators\": {\n \"required\": true,\n \"minLength\": 3\n }\n },\n {\n \"name\": \"email\",\n \"label\": \"Email\",\n \"controlType\": \"email\",\n \"dataType\": \"email\",\n \"placeholder\": \"nome@empresa.com\",\n \"validators\": {\n \"required\": true,\n \"email\": true\n }\n },\n {\n \"name\": \"phone\",\n \"label\": \"Telefone\",\n \"controlType\": \"phone\",\n \"placeholder\": \"(11) 99999-0000\",\n \"mask\": \"(99) 99999-9999\"\n },\n {\n \"name\": \"status\",\n \"label\": \"Status\",\n \"controlType\": \"select\",\n \"options\": [\n {\n \"text\": \"Ativo\",\n \"value\": \"ACTIVE\"\n },\n {\n \"text\": \"Inativo\",\n \"value\": \"INACTIVE\"\n },\n {\n \"text\": \"Afastado\",\n \"value\": \"ON_LEAVE\"\n }\n ],\n \"defaultValue\": \"ACTIVE\",\n \"materialDesign\": {\n \"appearance\": \"outline\"\n }\n },\n {\n \"name\": \"hireDate\",\n \"label\": \"Data de admissao\",\n \"controlType\": \"date\",\n \"dataType\": \"date\"\n },\n {\n \"name\": \"terminationDate\",\n \"label\": \"Data de desligamento\",\n \"controlType\": \"date\",\n \"conditionalDisplay\": {\n \"==\": [\n {\n \"var\": \"status\"\n },\n \"INACTIVE\"\n ]\n },\n \"conditionalRequired\": {\n \"==\": [\n {\n \"var\": \"status\"\n },\n \"INACTIVE\"\n ]\n }\n },\n {\n \"name\": \"department\",\n \"label\": \"Departamento\",\n \"controlType\": \"select\",\n \"endpoint\": \"/api/departments\",\n \"valueField\": \"id\",\n \"displayField\": \"name\"\n },\n {\n \"name\": \"role\",\n \"label\": \"Cargo\",\n \"controlType\": \"select\",\n \"options\": [\n {\n \"text\": \"Analista\",\n \"value\": \"ANALYST\"\n },\n {\n \"text\": \"Coordenador\",\n \"value\": \"COORD\"\n },\n {\n \"text\": \"Gerente\",\n \"value\": \"MANAGER\"\n }\n ]\n },\n {\n \"name\": \"managerId\",\n \"label\": \"Gestor\",\n \"controlType\": \"autoComplete\",\n \"endpoint\": \"/api/employees?role=manager\",\n \"valueField\": \"id\",\n \"displayField\": \"name\",\n \"filterField\": \"name\"\n },\n {\n \"name\": \"salary\",\n \"label\": \"Salario\",\n \"controlType\": \"currency\",\n \"dataType\": \"number\",\n \"format\": \"BRL|symbol|2\",\n \"validators\": {\n \"min\": 0\n }\n },\n {\n \"name\": \"workMode\",\n \"label\": \"Regime\",\n \"controlType\": \"radio\",\n \"options\": [\n {\n \"text\": \"CLT\",\n \"value\": \"CLT\"\n },\n {\n \"text\": \"PJ\",\n \"value\": \"PJ\"\n },\n {\n \"text\": \"Estagio\",\n \"value\": \"INTERN\"\n }\n ],\n \"defaultValue\": \"CLT\"\n },\n {\n \"name\": \"notes\",\n \"label\": \"Observacoes\",\n \"controlType\": \"textarea\",\n \"validators\": {\n \"maxLength\": 500\n },\n \"hint\": \"Informacoes adicionais relevantes ao cadastro.\"\n },\n {\n \"name\": \"isActive\",\n \"label\": \"Ativo\",\n \"controlType\": \"toggle\",\n \"defaultValue\": true\n },\n {\n \"name\": \"avatar\",\n \"label\": \"Foto\",\n \"controlType\": \"upload\",\n \"accept\": \".png,.jpg,.jpeg\",\n \"multiple\": false,\n \"materialDesign\": {\n \"appearance\": \"outline\"\n }\n }\n ],\n \"sections\": [\n {\n \"id\": \"basic\",\n \"title\": \"Dados basicos\",\n \"description\": \"Informacoes pessoais e status.\",\n \"icon\": \"person\",\n \"collapsible\": true,\n \"collapsed\": false,\n \"titleStyle\": \"titleMedium\",\n \"descriptionStyle\": \"bodyMedium\",\n \"rows\": [\n {\n \"id\": \"row-basic-1\",\n \"columns\": [\n {\n \"id\": \"col-basic-1\",\n \"fields\": [\n \"name\",\n \"email\"\n ],\n \"span\": {\n \"md\": 6,\n \"lg\": 6\n },\n \"padding\": 8\n },\n {\n \"id\": \"col-basic-2\",\n \"fields\": [\n \"status\",\n \"hireDate\"\n ],\n \"span\": {\n \"md\": 6,\n \"lg\": 6\n }\n }\n ]\n },\n {\n \"id\": \"row-basic-2\",\n \"columns\": [\n {\n \"id\": \"col-basic-3\",\n \"fields\": [\n \"phone\",\n \"managerId\"\n ],\n \"span\": {\n \"md\": 6,\n \"lg\": 6\n }\n },\n {\n \"id\": \"col-basic-4\",\n \"fields\": [\n \"department\",\n \"role\"\n ],\n \"span\": {\n \"md\": 6,\n \"lg\": 6\n }\n }\n ]\n }\n ]\n },\n {\n \"id\": \"employment\",\n \"title\": \"Contrato\",\n \"icon\": \"badge\",\n \"rows\": [\n {\n \"id\": \"row-employment-1\",\n \"columns\": [\n {\n \"id\": \"col-employment-1\",\n \"fields\": [\n \"salary\",\n \"workMode\"\n ],\n \"span\": {\n \"md\": 6,\n \"lg\": 6\n }\n },\n {\n \"id\": \"col-employment-2\",\n \"fields\": [\n \"terminationDate\",\n \"notes\"\n ],\n \"span\": {\n \"md\": 6,\n \"lg\": 6\n }\n }\n ]\n }\n ]\n },\n {\n \"id\": \"attachments\",\n \"title\": \"Arquivos\",\n \"collapsible\": true,\n \"collapsed\": true,\n \"rows\": [\n {\n \"id\": \"row-attachments-1\",\n \"columns\": [\n {\n \"id\": \"col-attachments-1\",\n \"fields\": [\n \"avatar\"\n ],\n \"span\": {\n \"md\": 12,\n \"lg\": 12\n },\n \"align\": \"center\"\n }\n ]\n }\n ]\n }\n ],\n \"actions\": {\n \"submit\": {\n \"visible\": true,\n \"label\": \"Salvar\",\n \"color\": \"primary\",\n \"variant\": \"raised\",\n \"type\": \"submit\",\n \"shortcut\": \"Ctrl+S\"\n },\n \"cancel\": {\n \"visible\": true,\n \"label\": \"Cancelar\",\n \"type\": \"button\"\n },\n \"reset\": {\n \"visible\": true,\n \"label\": \"Limpar\",\n \"type\": \"reset\"\n },\n \"custom\": [\n {\n \"id\": \"archive\",\n \"visible\": true,\n \"label\": \"Arquivar\",\n \"icon\": \"archive\",\n \"color\": \"warn\",\n \"variant\": \"stroked\",\n \"action\": \"archive\"\n }\n ],\n \"position\": \"right\",\n \"orientation\": \"horizontal\",\n \"spacing\": \"normal\",\n \"sticky\": true,\n \"divider\": true,\n \"placement\": \"afterSections\",\n \"mobile\": {\n \"position\": \"center\",\n \"orientation\": \"vertical\",\n \"collapseToMenu\": true\n }\n },\n \"formRules\": [\n {\n \"id\": \"hide-salary-inactive\",\n \"name\": \"Ocultar salario para inativos\",\n \"targetType\": \"field\",\n \"targets\": [\n \"salary\"\n ],\n \"effect\": {\n \"condition\": {\n \"==\": [\n {\n \"var\": \"status\"\n },\n \"INACTIVE\"\n ]\n },\n \"properties\": {\n \"visible\": false\n }\n }\n },\n {\n \"id\": \"require-termination-date\",\n \"name\": \"Exigir data de desligamento\",\n \"targetType\": \"field\",\n \"targets\": [\n \"terminationDate\"\n ],\n \"effect\": {\n \"condition\": {\n \"==\": [\n {\n \"var\": \"status\"\n },\n \"INACTIVE\"\n ]\n },\n \"properties\": {\n \"required\": true,\n \"visible\": true\n }\n }\n }\n ]\n },\n \"i18n\": {\n \"crudDialog\": {\n \"createTitle\": \"Novo colaborador\",\n \"editTitle\": \"Editar colaborador\",\n \"viewTitle\": \"Detalhes do colaborador\",\n \"deleteTitle\": \"Confirmar exclusao\",\n \"deleteConfirm\": \"Tem certeza que deseja excluir este colaborador?\"\n }\n }\n}\n",
|
|
6704
|
+
"content": "{\"componentId\":\"praxis-crud\",\"chunkSection\":\"_comment\",\"_comment\":\"Receita de CRUD alinhada ao PraxisCrud, usando acoes canonicas inferidas como baseline.\"}",
|
|
6525
6705
|
"sourcePointer": "examples/ai-recipes/praxis-crud.json",
|
|
6526
|
-
"contentHash": "
|
|
6706
|
+
"contentHash": "fa1fcd7b8b9c5e9cdb3d446d692da27d53447c775bc0291d9784652411e75c72",
|
|
6527
6707
|
"sourceKind": "component_definition",
|
|
6528
6708
|
"sourceId": "praxis-crud",
|
|
6529
6709
|
"corpusVersion": "1.0.0"
|
|
6530
6710
|
},
|
|
6531
6711
|
{
|
|
6532
|
-
"chunkIndex":
|
|
6712
|
+
"chunkIndex": 25,
|
|
6713
|
+
"chunkKind": "recipe",
|
|
6714
|
+
"content": "{\"componentId\":\"praxis-crud\",\"chunkSection\":\"templateMeta\",\"templateMeta\":{\"registryKey\":\"praxis-crud\",\"defaultVariantId\":\"table\",\"variants\":[{\"id\":\"table\",\"registryKey\":\"praxis-crud\",\"variantId\":\"table\",\"aiDescription\":\"CRUD table configuration only.\",\"tags\":[\"table\",\"crud\"],\"useWhen\":\"user asks to change table columns or behavior inside CRUD\",\"examplePrompts\":[\"adjust the columns shown in the crud table\",\"enable selection in the crud table\"]},{\"id\":\"form\",\"registryKey\":\"praxis-crud\",\"variantId\":\"form\",\"aiDescription\":\"CRUD form configuration only.\",\"tags\":[\"form\",\"crud\"],\"useWhen\":\"user asks to change form layout or fields in CRUD\",\"examplePrompts\":[\"add a new field to the crud form\",\"update validation rules in the form\"]},{\"id\":\"actions\",\"registryKey\":\"praxis-crud\",\"variantId\":\"actions\",\"aiDescription\":\"CRUD actions and modal behavior.\",\"tags\":[\"actions\",\"crud\"],\"useWhen\":\"user asks to change CRUD actions or routes\",\"examplePrompts\":[\"add a custom action to archive records\",\"change the edit action to open a route\"]}]}}",
|
|
6715
|
+
"sourcePointer": "examples/ai-recipes/praxis-crud.json",
|
|
6716
|
+
"contentHash": "4c1471611d0cce80167506f9edd34b44877718b7f6a964bf18177dc3b49699ba",
|
|
6717
|
+
"sourceKind": "component_definition",
|
|
6718
|
+
"sourceId": "praxis-crud",
|
|
6719
|
+
"corpusVersion": "1.0.0"
|
|
6720
|
+
},
|
|
6721
|
+
{
|
|
6722
|
+
"chunkIndex": 26,
|
|
6723
|
+
"chunkKind": "recipe",
|
|
6724
|
+
"content": "{\"componentId\":\"praxis-crud\",\"chunkSection\":\"component\",\"component\":\"praxis-crud\"}",
|
|
6725
|
+
"sourcePointer": "examples/ai-recipes/praxis-crud.json",
|
|
6726
|
+
"contentHash": "22af9ce35b389412519d920cdeeba3a449c1286b4573a8215433e35d8ff09ff0",
|
|
6727
|
+
"sourceKind": "component_definition",
|
|
6728
|
+
"sourceId": "praxis-crud",
|
|
6729
|
+
"corpusVersion": "1.0.0"
|
|
6730
|
+
},
|
|
6731
|
+
{
|
|
6732
|
+
"chunkIndex": 27,
|
|
6533
6733
|
"chunkKind": "recipe",
|
|
6534
|
-
"content": "{\n \"_comment\": \"Variant focused on CRUD table configuration.\",\n \"templateMeta\": {\n \"variantId\": \"table\",\n \"variantOf\": \"praxis-crud\",\n \"registryKey\": \"praxis-crud\",\n \"tags\": [\n \"table\",\n \"crud\"\n ],\n \"useWhen\": \"user asks to change table columns or behavior inside CRUD\",\n \"examplePrompts\": [\n \"adjust the columns shown in the crud table\",\n \"enable selection in the crud table\"\n ]\n },\n \"resource\": {\n \"path\": \"/api/employees\",\n \"idField\": \"id\",\n \"endpointKey\": \"employees\"\n },\n \"table\": {\n \"meta\": {\n \"version\": \"2.0.0\",\n \"id\": \"employees-table\",\n \"name\": \"Colaboradores\",\n \"description\": \"Listagem de colaboradores ativos e inativos\",\n \"idField\": \"id\"\n },\n \"columns\": [\n {\n \"field\": \"id\",\n \"header\": \"ID\",\n \"type\": \"string\",\n \"width\": \"80px\",\n \"visible\": false\n },\n {\n \"field\": \"name\",\n \"header\": \"Nome\",\n \"type\": \"string\",\n \"sortable\": true,\n \"filterable\": true,\n \"resizable\": true,\n \"sticky\": \"start\"\n },\n {\n \"field\": \"email\",\n \"header\": \"Email\",\n \"type\": \"string\",\n \"sortable\": true,\n \"filterable\": true\n },\n {\n \"field\": \"status\",\n \"header\": \"Status\",\n \"type\": \"string\",\n \"sortable\": true,\n \"filterable\": true,\n \"valueMapping\": {\n \"ACTIVE\": \"Ativo\",\n \"INACTIVE\": \"Inativo\",\n \"ON_LEAVE\": \"Afastado\"\n },\n \"renderer\": {\n \"type\": \"badge\",\n \"badge\": {\n \"textField\": \"statusLabel\",\n \"color\": \"success\",\n \"variant\": \"filled\"\n }\n },\n \"conditionalRenderers\": [\n {\n \"condition\": {\n \"==\": [\n {\n \"var\": \"status\"\n },\n \"INACTIVE\"\n ]\n },\n \"renderer\": {\n \"type\": \"badge\",\n \"badge\": {\n \"text\": \"Inativo\",\n \"color\": \"warn\",\n \"variant\": \"filled\"\n }\n },\n \"description\": \"Status inativo\",\n \"enabled\": true\n },\n {\n \"condition\": {\n \"==\": [\n {\n \"var\": \"status\"\n },\n \"ON_LEAVE\"\n ]\n },\n \"renderer\": {\n \"type\": \"chip\",\n \"chip\": {\n \"text\": \"Afastado\",\n \"color\": \"accent\",\n \"variant\": \"outlined\"\n }\n },\n \"description\": \"Status afastado\",\n \"enabled\": true\n }\n ]\n },\n {\n \"field\": \"hireDate\",\n \"header\": \"Admissao\",\n \"type\": \"date\",\n \"format\": \"dd/MM/yyyy\",\n \"sortable\": true,\n \"filterable\": true\n },\n {\n \"field\": \"salary\",\n \"header\": \"Salario\",\n \"type\": \"currency\",\n \"format\": \"BRL|symbol|2\",\n \"align\": \"right\",\n \"sortable\": true,\n \"filterable\": true\n }\n ],\n \"toolbar\": {\n \"visible\": true,\n \"position\": \"top\",\n \"title\": \"Colaboradores\",\n \"subtitle\": \"Gerencie cadastro, status e remuneracao\",\n \"layout\": {\n \"alignment\": \"space-between\",\n \"showSeparator\": true\n },\n \"actions\": [\n {\n \"id\": \"create\",\n \"label\": \"Novo\",\n \"icon\": \"add\",\n \"type\": \"button\",\n \"color\": \"primary\",\n \"position\": \"end\",\n \"action\": \"create\"\n },\n {\n \"id\": \"export\",\n \"label\": \"Exportar\",\n \"icon\": \"download\",\n \"type\": \"menu\",\n \"position\": \"end\",\n \"action\": \"export\",\n \"children\": [\n {\n \"id\": \"export-csv\",\n \"label\": \"CSV\",\n \"icon\": \"table_view\",\n \"type\": \"button\",\n \"position\": \"end\",\n \"action\": \"exportCsv\"\n },\n {\n \"id\": \"export-excel\",\n \"label\": \"Excel\",\n \"icon\": \"grid_on\",\n \"type\": \"button\",\n \"position\": \"end\",\n \"action\": \"exportExcel\"\n }\n ]\n }\n ],\n \"filters\": {\n \"enabled\": true,\n \"showAdvancedButton\": true\n },\n \"settingsMenu\": {\n \"enabled\": true,\n \"options\": [\n {\n \"id\": \"density\",\n \"label\": \"Densidade\",\n \"type\": \"select\",\n \"options\": [\n \"compact\",\n \"comfortable\",\n \"spacious\"\n ]\n }\n ]\n }\n },\n \"behavior\": {\n \"pagination\": {\n \"enabled\": true,\n \"pageSize\": 20,\n \"pageSizeOptions\": [\n 10,\n 20,\n 50\n ],\n \"showFirstLastButtons\": true,\n \"showPageNumbers\": true,\n \"showPageInfo\": true,\n \"position\": \"bottom\",\n \"style\": \"default\",\n \"strategy\": \"server\"\n },\n \"sorting\": {\n \"enabled\": true,\n \"defaultSort\": {\n \"column\": \"name\",\n \"direction\": \"asc\"\n },\n \"multiSort\": false,\n \"strategy\": \"server\",\n \"showSortIndicators\": true,\n \"indicatorPosition\": \"end\",\n \"allowClearSort\": true\n },\n \"filtering\": {\n \"enabled\": true,\n \"columnFilters\": {\n \"enabled\": true,\n \"defaultType\": \"text\",\n \"position\": \"header\"\n },\n \"advancedFilters\": {\n \"enabled\": true,\n \"queryBuilder\": true,\n \"savePresets\": true\n },\n \"strategy\": \"server\",\n \"debounceTime\": 300\n },\n \"selection\": {\n \"enabled\": true,\n \"type\": \"multiple\",\n \"mode\": \"checkbox\",\n \"allowSelectAll\": true,\n \"checkboxPosition\": \"start\",\n \"persistSelection\": false,\n \"persistOnDataUpdate\": false\n },\n \"interaction\": {\n \"rowClick\": {\n \"enabled\": true,\n \"action\": \"view\"\n },\n \"rowDoubleClick\": {\n \"enabled\": true,\n \"action\": \"edit\"\n },\n \"hover\": {\n \"enabled\": true,\n \"highlightRow\": true,\n \"showActionsOnHover\": true\n },\n \"keyboard\": {\n \"enabled\": true\n }\n }\n },\n \"actions\": {\n \"row\": {\n \"enabled\": true,\n \"position\": \"end\",\n \"display\": \"icons\",\n \"trigger\": \"hover\",\n \"width\": \"140px\",\n \"actions\": [\n {\n \"id\": \"view\",\n \"label\": \"Ver\",\n \"icon\": \"visibility\",\n \"action\": \"view\"\n },\n {\n \"id\": \"edit\",\n \"label\": \"Editar\",\n \"icon\": \"edit\",\n \"action\": \"edit\"\n },\n {\n \"id\": \"delete\",\n \"label\": \"Excluir\",\n \"icon\": \"delete\",\n \"action\": \"delete\",\n \"requiresConfirmation\": true\n }\n ],\n \"header\": {\n \"label\": \"Acoes\",\n \"align\": \"center\"\n }\n },\n \"bulk\": {\n \"enabled\": true,\n \"position\": \"toolbar\",\n \"actions\": [\n {\n \"id\": \"bulk-delete\",\n \"label\": \"Excluir selecionados\",\n \"icon\": \"delete\",\n \"action\": \"deleteSelected\",\n \"requiresConfirmation\": true,\n \"minSelections\": 1\n }\n ],\n \"floating\": {\n \"position\": \"bottom-right\",\n \"hideWhenEmpty\": true\n }\n },\n \"confirmations\": {\n \"default\": {\n \"title\": \"Confirmar acao\",\n \"message\": \"Deseja continuar?\",\n \"confirmText\": \"Confirmar\",\n \"cancelText\": \"Cancelar\"\n },\n \"specific\": {\n \"delete\": {\n \"title\": \"Excluir colaborador\",\n \"message\": \"Esta acao nao pode ser desfeita.\",\n \"confirmText\": \"Excluir\",\n \"cancelText\": \"Cancelar\"\n }\n }\n }\n },\n \"export\": {\n \"enabled\": true,\n \"formats\": [\n \"csv\",\n \"excel\"\n ],\n \"general\": {\n \"includeHeaders\": true,\n \"respectFilters\": true,\n \"applyFormatting\": true,\n \"defaultFileName\": \"colaboradores\",\n \"includeColumns\": [\n \"id\",\n \"name\",\n \"email\",\n \"status\",\n \"hireDate\",\n \"salary\"\n ]\n },\n \"excel\": {\n \"sheetName\": \"Colaboradores\",\n \"includeFormulas\": false,\n \"freezeHeaders\": true,\n \"autoFitColumns\": true\n },\n \"csv\": {\n \"delimiter\": \";\",\n \"escapeChar\": \"\\\"\",\n \"encoding\": \"utf-8\",\n \"includeBOM\": true\n }\n },\n \"messages\": {\n \"states\": {\n \"loading\": \"Carregando colaboradores...\",\n \"empty\": \"Nenhum colaborador encontrado.\",\n \"error\": \"Erro ao carregar dados.\",\n \"noResults\": \"Sem resultados para o filtro atual.\",\n \"loadingMore\": \"Carregando mais registros...\"\n },\n \"actions\": {\n \"confirmations\": {\n \"delete\": \"Excluir este colaborador?\",\n \"deleteMultiple\": \"Excluir os colaboradores selecionados?\",\n \"save\": \"Salvar alteracoes?\",\n \"cancel\": \"Cancelar edicao?\",\n \"export\": \"Exportar dados agora?\"\n },\n \"success\": {\n \"save\": \"Colaborador salvo com sucesso.\",\n \"delete\": \"Colaborador excluido.\",\n \"export\": \"Exportacao concluida.\"\n },\n \"errors\": {\n \"save\": \"Falha ao salvar.\",\n \"delete\": \"Falha ao excluir.\",\n \"export\": \"Falha ao exportar.\"\n }\n }\n },\n \"localization\": {\n \"locale\": \"pt-BR\",\n \"direction\": \"ltr\",\n \"dateTime\": {\n \"dateFormat\": \"dd/MM/yyyy\",\n \"timeFormat\": \"HH:mm\",\n \"dateTimeFormat\": \"dd/MM/yyyy HH:mm\",\n \"firstDayOfWeek\": 1\n }\n },\n \"appearance\": {\n \"density\": \"comfortable\",\n \"borders\": {\n \"showRowBorders\": true,\n \"showColumnBorders\": false,\n \"showOuterBorder\": true,\n \"style\": \"solid\",\n \"width\": 1,\n \"color\": \"#e0e0e0\"\n }\n }\n }\n}\n",
|
|
6734
|
+
"content": "{\"componentId\":\"praxis-crud\",\"chunkSection\":\"resource\",\"resource\":{\"path\":\"/api/employees\",\"idField\":\"id\",\"endpointKey\":\"employees\"}}",
|
|
6735
|
+
"sourcePointer": "examples/ai-recipes/praxis-crud.json",
|
|
6736
|
+
"contentHash": "d7a30950c655ac6d93013a08ecff653c933278211f85270214ff97d30b4fde62",
|
|
6737
|
+
"sourceKind": "component_definition",
|
|
6738
|
+
"sourceId": "praxis-crud",
|
|
6739
|
+
"corpusVersion": "1.0.0"
|
|
6740
|
+
},
|
|
6741
|
+
{
|
|
6742
|
+
"chunkIndex": 28,
|
|
6743
|
+
"chunkKind": "recipe",
|
|
6744
|
+
"content": "{\"componentId\":\"praxis-crud\",\"chunkSection\":\"defaults\",\"defaults\":{\"openMode\":\"modal\",\"modal\":{\"width\":\"860px\",\"maxWidth\":\"95vw\",\"panelClass\":\"crud-dialog\",\"backdropStyle\":\"blur\",\"autoFocus\":true,\"restoreFocus\":true},\"back\":{\"strategy\":\"auto\",\"returnTo\":\"/employees\",\"confirmOnDirty\":true},\"header\":{\"showBack\":true,\"backLabel\":\"Voltar\",\"variant\":\"outlined\",\"sticky\":true,\"breadcrumbs\":true,\"divider\":true}}}",
|
|
6745
|
+
"sourcePointer": "examples/ai-recipes/praxis-crud.json",
|
|
6746
|
+
"contentHash": "058ccfdb4c1897b0a4af917f7ff296b4cb5c4fadba4c0c6bcd2ac3d39fe1d989",
|
|
6747
|
+
"sourceKind": "component_definition",
|
|
6748
|
+
"sourceId": "praxis-crud",
|
|
6749
|
+
"corpusVersion": "1.0.0"
|
|
6750
|
+
},
|
|
6751
|
+
{
|
|
6752
|
+
"chunkIndex": 29,
|
|
6753
|
+
"chunkKind": "recipe",
|
|
6754
|
+
"content": "{\"componentId\":\"praxis-crud\",\"chunkSection\":\"actions\",\"actions\":[{\"id\":\"create\",\"label\":\"Novo colaborador\",\"icon\":\"add\",\"action\":\"create\",\"openMode\":\"modal\"},{\"id\":\"view\",\"label\":\"Visualizar\",\"icon\":\"visibility\",\"action\":\"view\",\"openMode\":\"modal\"},{\"id\":\"edit\",\"label\":\"Editar\",\"icon\":\"edit\",\"action\":\"edit\",\"openMode\":\"modal\"},{\"id\":\"delete\",\"label\":\"Excluir\",\"icon\":\"delete\",\"action\":\"delete\"},{\"id\":\"edit-route\",\"label\":\"Editar na rota\",\"icon\":\"open_in_new\",\"action\":\"edit-route\",\"openMode\":\"route\",\"route\":\"/employees/:id/edit\",\"params\":[{\"from\":\"id\",\"to\":\"routeParam\",\"name\":\"id\"},{\"from\":\"name\",\"to\":\"query\",\"name\":\"name\"}],\"back\":{\"strategy\":\"navigate\",\"returnTo\":\"/employees\"}}]}",
|
|
6755
|
+
"sourcePointer": "examples/ai-recipes/praxis-crud.json",
|
|
6756
|
+
"contentHash": "25d9b629a1b664b546b022236df57c103c7f4c6a6927f8ddf522ec4e15886e88",
|
|
6757
|
+
"sourceKind": "component_definition",
|
|
6758
|
+
"sourceId": "praxis-crud",
|
|
6759
|
+
"corpusVersion": "1.0.0"
|
|
6760
|
+
},
|
|
6761
|
+
{
|
|
6762
|
+
"chunkIndex": 30,
|
|
6763
|
+
"chunkKind": "recipe",
|
|
6764
|
+
"content": "{\"componentId\":\"praxis-crud\",\"chunkSection\":\"table\",\"table\":{\"meta\":{\"version\":\"2.0.0\",\"id\":\"employees-table\",\"name\":\"Colaboradores\",\"description\":\"Listagem de colaboradores ativos e inativos\",\"idField\":\"id\"},\"columns\":[{\"field\":\"id\",\"header\":\"ID\",\"type\":\"string\",\"width\":\"80px\",\"visible\":false},{\"field\":\"name\",\"header\":\"Nome\",\"type\":\"string\",\"sortable\":true,\"filterable\":true,\"resizable\":true,\"sticky\":\"start\"},{\"field\":\"email\",\"header\":\"Email\",\"type\":\"string\",\"sortable\":true,\"filterable\":true},{\"field\":\"status\",\"header\":\"Status\",\"type\":\"string\",\"sortable\":true,\"filterable\":true,\"valueMapping\":{\"ACTIVE\":\"Ativo\",\"INACTIVE\":\"Inativo\",\"ON_LEAVE\":\"Afastado\"},\"renderer\":{\"type\":\"badge\",\"badge\":{\"textField\":\"statusLabel\",\"color\":\"success\",\"variant\":\"filled\"}},\"conditionalRenderers\":[{\"condition\":{\"==\":[{\"var\":\"status\"},\"INACTIVE\"]},\"renderer\":{\"type\":\"badge\",\"badge\":{\"text\":\"Inativo\",\"color\":\"warn\",\"variant\":\"filled\"}},\"description\":\"Status inativo\",\"enabled\":true},{\"condition\":{\"==\":[{\"var\":\"status\"},\"ON_LEAVE\"]},\"renderer\":{\"type\":\"chip\",\"chip\":{\"text\":\"Afastado\",\"color\":\"accent\",\"variant\":\"outlined\"}},\"description\":\"Status afastado\",\"enabled\":true}]},{\"field\":\"hireDate\",\"header\":\"Admissao\",\"type\":\"date\",\"format\":\"dd/MM/yyyy\",\"sortable\":true,\"filterable\":true},{\"field\":\"salary\",\"header\":\"Salario\",\"type\":\"currency\",\"format\":\"BRL|symbol|2\",\"align\":\"right\",\"sortable\":true,\"filterable\":true}],\"toolbar\":{\"visible\":true,\"position\":\"top\",\"title\":\"Colaboradores\",\"subtitle\":\"Gerencie cadastro, status e remuneracao\",\"layout\":{\"alignment\":\"space-between\",\"showSeparator\":true},\"actions\":[{\"id\":\"create\",\"label\":\"Novo\",\"icon\":\"add\",\"type\":\"button\",\"color\":\"primary\",\"position\":\"end\",\"action\":\"create\"},{\"id\":\"export\",\"label\":\"Exportar\",\"icon\":\"download\",\"type\":\"menu\",\"position\":\"end\",\"action\":\"export\",\"children\":[{\"id\":\"export-csv\",\"label\":\"CSV\",\"icon\":\"table_view\",\"type\":\"button\",\"position\":\"end\",\"action\":\"exportCsv\"},{\"id\":\"export-excel\",\"label\":\"Excel\",\"icon\":\"grid_on\",\"type\":\"button\",\"position\":\"end\",\"action\":\"exportExcel\"}]}],\"filters\":{\"enabled\":true,\"showAdvancedButton\":true},\"settingsMenu\":{\"enabled\":true,\"options\":[{\"id\":\"density\",\"label\":\"Densidade\",\"type\":\"select\",\"options\":[\"compact\",\"comfortable\",\"spacious\"]}]}},\"behavior\":{\"pagination\":{\"enabled\":true,\"pageSize\":20,\"pageSizeOptions\":[10,20,50],\"showFirstLastButtons\":true,\"showPageNumbers\":true,\"showPageInfo\":true,\"position\":\"bottom\",\"style\":\"default\",\"strategy\":\"server\"},\"sorting\":{\"enabled\":true,\"defaultSort\":{\"column\":\"name\",\"direction\":\"asc\"},\"multiSort\":false,\"strategy\":\"server\",\"showSortIndicators\":true,\"indicatorPosition\":\"end\",\"allowClearSort\":true},\"filtering\":{\"enabled\":true,\"columnFilters\":{\"enabled\":true,\"defaultType\":\"text\",\"position\":\"header\"},\"advancedFilters\":{\"enabled\":true,\"queryBuilder\":true,\"savePresets\":true},\"strategy\":\"server\",\"debounceTime\":300},\"selection\":{\"enabled\":true,\"type\":\"multiple\",\"mode\":\"checkbox\",\"allowSelectAll\":true,\"checkboxPosition\":\"start\",\"persistSelection\":false,\"persistOnDataUpdate\":false},\"interaction\":{\"rowClick\":{\"enabled\":true,\"action\":\"view\"},\"rowDoubleClick\":{\"enabled\":true,\"action\":\"edit\"},\"hover\":{\"enabled\":true,\"highlightRow\":true,\"showActionsOnHover\":true},\"keyboard\":{\"enabled\":true}}},\"actions\":{\"row\":{\"enabled\":true,\"position\":\"end\",\"display\":\"icons\",\"trigger\":\"hover\",\"width\":\"140px\",\"actions\":[{\"id\":\"view\",\"label\":\"Ver\",\"icon\":\"visibility\",\"action\":\"view\"},{\"id\":\"edit\",\"label\":\"Editar\",\"icon\":\"edit\",\"action\":\"edit\"},{\"id\":\"delete\",\"label\":\"Excluir\",\"icon\":\"delete\",\"action\":\"delete\",\"requiresConfirmation\":true}],\"header\":{\"label\":\"Acoes\",\"align\":\"center\"}},\"bulk\":{\"enabled\":true,\"position\":\"toolbar\",\"actions\":[{\"id\":\"bulk-delete\",\"label\":\"Excluir selecionados\",\"icon\":\"delete\",\"action\":\"deleteSelected\",\"requiresConfirmation\":true,\"minSelections\":1}],\"floating\":{\"position\":\"bottom-right\",\"hideWhenEmpty\":true}},\"confirmations\":{\"default\":{\"title\":\"Confirmar acao\",\"message\":\"Deseja continuar?\",\"confirmText\":\"Confirmar\",\"cancelText\":\"Cancelar\"},\"specific\":{\"delete\":{\"title\":\"Excluir colaborador\",\"message\":\"Esta acao nao pode ser desfeita.\",\"confirmText\":\"Excluir\",\"cancelText\":\"Cancelar\"}}}},\"export\":{\"enabled\":true,\"formats\":[\"csv\",\"excel\"],\"general\":{\"includeHeaders\":true,\"respectFilters\":true,\"applyFormatting\":true,\"defaultFileName\":\"colaboradores\",\"includeColumns\":[\"id\",\"name\",\"email\",\"status\",\"hireDate\",\"salary\"]},\"excel\":{\"sheetName\":\"Colaboradores\",\"includeFormulas\":false,\"freezeHeaders\":true,\"autoFitColumns\":true},\"csv\":{\"delimiter\":\";\",\"escapeChar\":\"\\\"\",\"encoding\":\"utf-8\",\"includeBOM\":true}},\"messages\":{\"states\":{\"loading\":\"Carregando colaboradores...\",\"empty\":\"Nenhum colaborador encontrado.\",\"error\":\"Erro ao carregar dados.\",\"noResults\":\"Sem resultados para o filtro atual.\",\"loadingMore\":\"Carregando mais registros...\"},\"actions\":{\"confirmations\":{\"delete\":\"Excluir este colaborador?\",\"deleteMultiple\":\"Excluir os colaboradores selecionados?\",\"save\":\"Salvar alteracoes?\",\"cancel\":\"Cancelar edicao?\",\"export\":\"Exportar dados agora?\"},\"success\":{\"save\":\"Colaborador salvo com sucesso.\",\"delete\":\"Colaborador excluido.\",\"export\":\"Exportacao concluida.\"},\"errors\":{\"save\":\"Falha ao salvar.\",\"delete\":\"Falha ao excluir.\",\"export\":\"Falha ao exportar.\"}}},\"localization\":{\"locale\":\"pt-BR\",\"direction\":\"ltr\",\"dateTime\":{\"dateFormat\":\"dd/MM/yyyy\",\"timeFormat\":\"HH:mm\",\"dateTimeFormat\":\"dd/MM/yyyy HH:mm\",\"firstDayOfWeek\":1}},\"appearance\":{\"density\":\"comfortable\",\"borders\":{\"showRowBorders\":true,\"showColumnBorders\":false,\"showOuterBorder\":true,\"style\":\"solid\",\"width\":1,\"color\":\"#e0e0e0\"}}}}",
|
|
6765
|
+
"sourcePointer": "examples/ai-recipes/praxis-crud.json",
|
|
6766
|
+
"contentHash": "dbce9a947e186d5118d8c0fb50ccaefe7e1c207fd4ebeff8645b5b710dd5c4c7",
|
|
6767
|
+
"sourceKind": "component_definition",
|
|
6768
|
+
"sourceId": "praxis-crud",
|
|
6769
|
+
"corpusVersion": "1.0.0"
|
|
6770
|
+
},
|
|
6771
|
+
{
|
|
6772
|
+
"chunkIndex": 31,
|
|
6773
|
+
"chunkKind": "recipe",
|
|
6774
|
+
"content": "{\"componentId\":\"praxis-crud\",\"chunkSection\":\"form\",\"form\":{\"metadata\":{\"version\":\"2.0\",\"source\":\"local\",\"schemaId\":\"path:/api/employees#request\",\"schemaContext\":{\"path\":\"/api/employees\",\"operation\":\"POST\",\"schemaType\":\"request\",\"internal\":false,\"tenant\":\"default\",\"locale\":\"pt-BR\"}},\"api\":{\"saveEndpoint\":\"/api/employees\",\"loadEndpoint\":\"/api/employees/${id}\",\"saveMethod\":\"POST\",\"timeout\":15000,\"headers\":{\"X-Module\":\"HR\"},\"idField\":\"id\",\"beforeSave\":\"sanitizeEmployee\",\"afterLoad\":\"mapEmployee\"},\"behavior\":{\"confirmOnUnsavedChanges\":true,\"trackHistory\":true,\"focusFirstError\":true,\"scrollToErrors\":true,\"clearAfterSave\":false,\"reactiveValidation\":true,\"reactiveValidationDebounceMs\":200},\"messages\":{\"createRegistrySuccess\":\"Colaborador criado com sucesso.\",\"updateRegistrySuccess\":\"Colaborador atualizado com sucesso.\",\"createRegistryError\":\"Falha ao criar colaborador.\",\"updateRegistryError\":\"Falha ao atualizar colaborador.\",\"confirmations\":{\"submit\":\"Deseja salvar as alteracoes?\",\"cancel\":\"Descartar alteracoes?\",\"reset\":\"Limpar o formulario?\"},\"customActions\":{\"archive\":{\"confirmation\":\"Arquivar este colaborador?\"}},\"loading\":{\"submit\":\"Salvando...\",\"cancel\":\"Cancelando...\"}},\"hints\":{\"dataModes\":{\"create\":\"Preencha os dados para criar um novo colaborador.\",\"edit\":\"Atualize os dados e salve as alteracoes.\",\"view\":\"Visualize os dados do colaborador.\"},\"uiModes\":{\"presentation\":\"Modo apresentacao mostra somente leitura.\",\"readonly\":\"Modo leitura bloqueia edicao.\",\"disabled\":\"Campos desabilitados nao permitem interacao.\",\"visible\":\"Controle de visibilidade sem destruir controles.\"}},\"hooks\":{\"beforeSubmit\":[{\"id\":\"sanitize-employee\",\"priority\":100,\"args\":{\"trimStrings\":true}}],\"afterSubmit\":[{\"id\":\"notify-success\",\"args\":{\"messageKey\":\"employeeSaved\"}}],\"onError\":[{\"id\":\"notify-error\",\"args\":{\"messageKey\":\"employeeSaveError\"}}]},\"fieldMetadata\":[{\"name\":\"id\",\"label\":\"ID\",\"controlType\":\"numericTextBox\",\"dataType\":\"number\",\"hidden\":true,\"readOnly\":true,\"description\":\"Campo ID oculto, gerenciado pelo backend.\"},{\"name\":\"name\",\"label\":\"Nome completo\",\"controlType\":\"input\",\"dataType\":\"text\",\"placeholder\":\"Ex.: Ana Souza\",\"prefixIcon\":\"person\",\"validators\":{\"required\":true,\"minLength\":3}},{\"name\":\"email\",\"label\":\"Email\",\"controlType\":\"email\",\"dataType\":\"email\",\"placeholder\":\"nome@empresa.com\",\"validators\":{\"required\":true,\"email\":true}},{\"name\":\"phone\",\"label\":\"Telefone\",\"controlType\":\"phone\",\"placeholder\":\"(11) 99999-0000\",\"mask\":\"(99) 99999-9999\"},{\"name\":\"status\",\"label\":\"Status\",\"controlType\":\"select\",\"options\":[{\"text\":\"Ativo\",\"value\":\"ACTIVE\"},{\"text\":\"Inativo\",\"value\":\"INACTIVE\"},{\"text\":\"Afastado\",\"value\":\"ON_LEAVE\"}],\"defaultValue\":\"ACTIVE\",\"materialDesign\":{\"appearance\":\"outline\"}},{\"name\":\"hireDate\",\"label\":\"Data de admissao\",\"controlType\":\"date\",\"dataType\":\"date\"},{\"name\":\"terminationDate\",\"label\":\"Data de desligamento\",\"controlType\":\"date\",\"conditionalDisplay\":{\"==\":[{\"var\":\"status\"},\"INACTIVE\"]},\"conditionalRequired\":{\"==\":[{\"var\":\"status\"},\"INACTIVE\"]}},{\"name\":\"department\",\"label\":\"Departamento\",\"controlType\":\"select\",\"endpoint\":\"/api/departments\",\"valueField\":\"id\",\"displayField\":\"name\"},{\"name\":\"role\",\"label\":\"Cargo\",\"controlType\":\"select\",\"options\":[{\"text\":\"Analista\",\"value\":\"ANALYST\"},{\"text\":\"Coordenador\",\"value\":\"COORD\"},{\"text\":\"Gerente\",\"value\":\"MANAGER\"}]},{\"name\":\"managerId\",\"label\":\"Gestor\",\"controlType\":\"autoComplete\",\"endpoint\":\"/api/employees?role=manager\",\"valueField\":\"id\",\"displayField\":\"name\",\"filterField\":\"name\"},{\"name\":\"salary\",\"label\":\"Salario\",\"controlType\":\"currency\",\"dataType\":\"number\",\"format\":\"BRL|symbol|2\",\"validators\":{\"min\":0}},{\"name\":\"workMode\",\"label\":\"Regime\",\"controlType\":\"radio\",\"options\":[{\"text\":\"CLT\",\"value\":\"CLT\"},{\"text\":\"PJ\",\"value\":\"PJ\"},{\"text\":\"Estagio\",\"value\":\"INTERN\"}],\"defaultValue\":\"CLT\"},{\"name\":\"notes\",\"label\":\"Observacoes\",\"controlType\":\"textarea\",\"validators\":{\"maxLength\":500},\"hint\":\"Informacoes adicionais relevantes ao cadastro.\"},{\"name\":\"isActive\",\"label\":\"Ativo\",\"controlType\":\"toggle\",\"defaultValue\":true},{\"name\":\"avatar\",\"label\":\"Foto\",\"controlType\":\"upload\",\"accept\":\".png,.jpg,.jpeg\",\"multiple\":false,\"materialDesign\":{\"appearance\":\"outline\"}}],\"sections\":[{\"id\":\"basic\",\"title\":\"Dados basicos\",\"description\":\"Informacoes pessoais e status.\",\"icon\":\"person\",\"collapsible\":true,\"collapsed\":false,\"titleStyle\":\"titleMedium\",\"descriptionStyle\":\"bodyMedium\",\"rows\":[{\"id\":\"row-basic-1\",\"columns\":[{\"id\":\"col-basic-1\",\"fields\":[\"name\",\"email\"],\"span\":{\"md\":6,\"lg\":6},\"padding\":8},{\"id\":\"col-basic-2\",\"fields\":[\"status\",\"hireDate\"],\"span\":{\"md\":6,\"lg\":6}}]},{\"id\":\"row-basic-2\",\"columns\":[{\"id\":\"col-basic-3\",\"fields\":[\"phone\",\"managerId\"],\"span\":{\"md\":6,\"lg\":6}},{\"id\":\"col-basic-4\",\"fields\":[\"department\",\"role\"],\"span\":{\"md\":6,\"lg\":6}}]}]},{\"id\":\"employment\",\"title\":\"Contrato\",\"icon\":\"badge\",\"rows\":[{\"id\":\"row-employment-1\",\"columns\":[{\"id\":\"col-employment-1\",\"fields\":[\"salary\",\"workMode\"],\"span\":{\"md\":6,\"lg\":6}},{\"id\":\"col-employment-2\",\"fields\":[\"terminationDate\",\"notes\"],\"span\":{\"md\":6,\"lg\":6}}]}]},{\"id\":\"attachments\",\"title\":\"Arquivos\",\"collapsible\":true,\"collapsed\":true,\"rows\":[{\"id\":\"row-attachments-1\",\"columns\":[{\"id\":\"col-attachments-1\",\"fields\":[\"avatar\"],\"span\":{\"md\":12,\"lg\":12},\"align\":\"center\"}]}]}],\"actions\":{\"submit\":{\"visible\":true,\"label\":\"Salvar\",\"color\":\"primary\",\"variant\":\"raised\",\"type\":\"submit\",\"shortcut\":\"Ctrl+S\"},\"cancel\":{\"visible\":true,\"label\":\"Cancelar\",\"type\":\"button\"},\"reset\":{\"visible\":true,\"label\":\"Limpar\",\"type\":\"reset\"},\"custom\":[{\"id\":\"archive\",\"visible\":true,\"label\":\"Arquivar\",\"icon\":\"archive\",\"color\":\"warn\",\"variant\":\"stroked\",\"action\":\"archive\"}],\"position\":\"right\",\"orientation\":\"horizontal\",\"spacing\":\"normal\",\"sticky\":true,\"divider\":true,\"placement\":\"afterSections\",\"mobile\":{\"position\":\"center\",\"orientation\":\"vertical\",\"collapseToMenu\":true}},\"formRules\":[{\"id\":\"hide-salary-inactive\",\"name\":\"Ocultar salario para inativos\",\"targetType\":\"field\",\"targets\":[\"salary\"],\"effect\":{\"condition\":{\"==\":[{\"var\":\"status\"},\"INACTIVE\"]},\"properties\":{\"visible\":false}}},{\"id\":\"require-termination-date\",\"name\":\"Exigir data de desligamento\",\"targetType\":\"field\",\"targets\":[\"terminationDate\"],\"effect\":{\"condition\":{\"==\":[{\"var\":\"status\"},\"INACTIVE\"]},\"properties\":{\"required\":true,\"visible\":true}}}]}}",
|
|
6775
|
+
"sourcePointer": "examples/ai-recipes/praxis-crud.json",
|
|
6776
|
+
"contentHash": "3e14eeccb30093e41e1988ee20a04173053524262dcfd7230f3fbe96083e51c4",
|
|
6777
|
+
"sourceKind": "component_definition",
|
|
6778
|
+
"sourceId": "praxis-crud",
|
|
6779
|
+
"corpusVersion": "1.0.0"
|
|
6780
|
+
},
|
|
6781
|
+
{
|
|
6782
|
+
"chunkIndex": 32,
|
|
6783
|
+
"chunkKind": "recipe",
|
|
6784
|
+
"content": "{\"componentId\":\"praxis-crud\",\"chunkSection\":\"i18n\",\"i18n\":{\"crudDialog\":{\"createTitle\":\"Novo colaborador\",\"editTitle\":\"Editar colaborador\",\"viewTitle\":\"Detalhes do colaborador\",\"deleteTitle\":\"Confirmar exclusao\",\"deleteConfirm\":\"Tem certeza que deseja excluir este colaborador?\"}}}",
|
|
6785
|
+
"sourcePointer": "examples/ai-recipes/praxis-crud.json",
|
|
6786
|
+
"contentHash": "c9744635f8be1b01671c3c306fb751586aa13752bece74ce53fd1f4630a42862",
|
|
6787
|
+
"sourceKind": "component_definition",
|
|
6788
|
+
"sourceId": "praxis-crud",
|
|
6789
|
+
"corpusVersion": "1.0.0"
|
|
6790
|
+
},
|
|
6791
|
+
{
|
|
6792
|
+
"chunkIndex": 33,
|
|
6793
|
+
"chunkKind": "recipe",
|
|
6794
|
+
"content": "{\"_comment\":\"Variant focused on CRUD table configuration.\",\"templateMeta\":{\"variantId\":\"table\",\"variantOf\":\"praxis-crud\",\"registryKey\":\"praxis-crud\",\"tags\":[\"table\",\"crud\"],\"useWhen\":\"user asks to change table columns or behavior inside CRUD\",\"examplePrompts\":[\"adjust the columns shown in the crud table\",\"enable selection in the crud table\"]},\"resource\":{\"path\":\"/api/employees\",\"idField\":\"id\",\"endpointKey\":\"employees\"},\"table\":{\"meta\":{\"version\":\"2.0.0\",\"id\":\"employees-table\",\"name\":\"Colaboradores\",\"description\":\"Listagem de colaboradores ativos e inativos\",\"idField\":\"id\"},\"columns\":[{\"field\":\"id\",\"header\":\"ID\",\"type\":\"string\",\"width\":\"80px\",\"visible\":false},{\"field\":\"name\",\"header\":\"Nome\",\"type\":\"string\",\"sortable\":true,\"filterable\":true,\"resizable\":true,\"sticky\":\"start\"},{\"field\":\"email\",\"header\":\"Email\",\"type\":\"string\",\"sortable\":true,\"filterable\":true},{\"field\":\"status\",\"header\":\"Status\",\"type\":\"string\",\"sortable\":true,\"filterable\":true,\"valueMapping\":{\"ACTIVE\":\"Ativo\",\"INACTIVE\":\"Inativo\",\"ON_LEAVE\":\"Afastado\"},\"renderer\":{\"type\":\"badge\",\"badge\":{\"textField\":\"statusLabel\",\"color\":\"success\",\"variant\":\"filled\"}},\"conditionalRenderers\":[{\"condition\":{\"==\":[{\"var\":\"status\"},\"INACTIVE\"]},\"renderer\":{\"type\":\"badge\",\"badge\":{\"text\":\"Inativo\",\"color\":\"warn\",\"variant\":\"filled\"}},\"description\":\"Status inativo\",\"enabled\":true},{\"condition\":{\"==\":[{\"var\":\"status\"},\"ON_LEAVE\"]},\"renderer\":{\"type\":\"chip\",\"chip\":{\"text\":\"Afastado\",\"color\":\"accent\",\"variant\":\"outlined\"}},\"description\":\"Status afastado\",\"enabled\":true}]},{\"field\":\"hireDate\",\"header\":\"Admissao\",\"type\":\"date\",\"format\":\"dd/MM/yyyy\",\"sortable\":true,\"filterable\":true},{\"field\":\"salary\",\"header\":\"Salario\",\"type\":\"currency\",\"format\":\"BRL|symbol|2\",\"align\":\"right\",\"sortable\":true,\"filterable\":true}],\"toolbar\":{\"visible\":true,\"position\":\"top\",\"title\":\"Colaboradores\",\"subtitle\":\"Gerencie cadastro, status e remuneracao\",\"layout\":{\"alignment\":\"space-between\",\"showSeparator\":true},\"actions\":[{\"id\":\"create\",\"label\":\"Novo\",\"icon\":\"add\",\"type\":\"button\",\"color\":\"primary\",\"position\":\"end\",\"action\":\"create\"},{\"id\":\"export\",\"label\":\"Exportar\",\"icon\":\"download\",\"type\":\"menu\",\"position\":\"end\",\"action\":\"export\",\"children\":[{\"id\":\"export-csv\",\"label\":\"CSV\",\"icon\":\"table_view\",\"type\":\"button\",\"position\":\"end\",\"action\":\"exportCsv\"},{\"id\":\"export-excel\",\"label\":\"Excel\",\"icon\":\"grid_on\",\"type\":\"button\",\"position\":\"end\",\"action\":\"exportExcel\"}]}],\"filters\":{\"enabled\":true,\"showAdvancedButton\":true},\"settingsMenu\":{\"enabled\":true,\"options\":[{\"id\":\"density\",\"label\":\"Densidade\",\"type\":\"select\",\"options\":[\"compact\",\"comfortable\",\"spacious\"]}]}},\"behavior\":{\"pagination\":{\"enabled\":true,\"pageSize\":20,\"pageSizeOptions\":[10,20,50],\"showFirstLastButtons\":true,\"showPageNumbers\":true,\"showPageInfo\":true,\"position\":\"bottom\",\"style\":\"default\",\"strategy\":\"server\"},\"sorting\":{\"enabled\":true,\"defaultSort\":{\"column\":\"name\",\"direction\":\"asc\"},\"multiSort\":false,\"strategy\":\"server\",\"showSortIndicators\":true,\"indicatorPosition\":\"end\",\"allowClearSort\":true},\"filtering\":{\"enabled\":true,\"columnFilters\":{\"enabled\":true,\"defaultType\":\"text\",\"position\":\"header\"},\"advancedFilters\":{\"enabled\":true,\"queryBuilder\":true,\"savePresets\":true},\"strategy\":\"server\",\"debounceTime\":300},\"selection\":{\"enabled\":true,\"type\":\"multiple\",\"mode\":\"checkbox\",\"allowSelectAll\":true,\"checkboxPosition\":\"start\",\"persistSelection\":false,\"persistOnDataUpdate\":false},\"interaction\":{\"rowClick\":{\"enabled\":true,\"action\":\"view\"},\"rowDoubleClick\":{\"enabled\":true,\"action\":\"edit\"},\"hover\":{\"enabled\":true,\"highlightRow\":true,\"showActionsOnHover\":true},\"keyboard\":{\"enabled\":true}}},\"actions\":{\"row\":{\"enabled\":true,\"position\":\"end\",\"display\":\"icons\",\"trigger\":\"hover\",\"width\":\"140px\",\"actions\":[{\"id\":\"view\",\"label\":\"Ver\",\"icon\":\"visibility\",\"action\":\"view\"},{\"id\":\"edit\",\"label\":\"Editar\",\"icon\":\"edit\",\"action\":\"edit\"},{\"id\":\"delete\",\"label\":\"Excluir\",\"icon\":\"delete\",\"action\":\"delete\",\"requiresConfirmation\":true}],\"header\":{\"label\":\"Acoes\",\"align\":\"center\"}},\"bulk\":{\"enabled\":true,\"position\":\"toolbar\",\"actions\":[{\"id\":\"bulk-delete\",\"label\":\"Excluir selecionados\",\"icon\":\"delete\",\"action\":\"deleteSelected\",\"requiresConfirmation\":true,\"minSelections\":1}],\"floating\":{\"position\":\"bottom-right\",\"hideWhenEmpty\":true}},\"confirmations\":{\"default\":{\"title\":\"Confirmar acao\",\"message\":\"Deseja continuar?\",\"confirmText\":\"Confirmar\",\"cancelText\":\"Cancelar\"},\"specific\":{\"delete\":{\"title\":\"Excluir colaborador\",\"message\":\"Esta acao nao pode ser desfeita.\",\"confirmText\":\"Excluir\",\"cancelText\":\"Cancelar\"}}}},\"export\":{\"enabled\":true,\"formats\":[\"csv\",\"excel\"],\"general\":{\"includeHeaders\":true,\"respectFilters\":true,\"applyFormatting\":true,\"defaultFileName\":\"colaboradores\",\"includeColumns\":[\"id\",\"name\",\"email\",\"status\",\"hireDate\",\"salary\"]},\"excel\":{\"sheetName\":\"Colaboradores\",\"includeFormulas\":false,\"freezeHeaders\":true,\"autoFitColumns\":true},\"csv\":{\"delimiter\":\";\",\"escapeChar\":\"\\\"\",\"encoding\":\"utf-8\",\"includeBOM\":true}},\"messages\":{\"states\":{\"loading\":\"Carregando colaboradores...\",\"empty\":\"Nenhum colaborador encontrado.\",\"error\":\"Erro ao carregar dados.\",\"noResults\":\"Sem resultados para o filtro atual.\",\"loadingMore\":\"Carregando mais registros...\"},\"actions\":{\"confirmations\":{\"delete\":\"Excluir este colaborador?\",\"deleteMultiple\":\"Excluir os colaboradores selecionados?\",\"save\":\"Salvar alteracoes?\",\"cancel\":\"Cancelar edicao?\",\"export\":\"Exportar dados agora?\"},\"success\":{\"save\":\"Colaborador salvo com sucesso.\",\"delete\":\"Colaborador excluido.\",\"export\":\"Exportacao concluida.\"},\"errors\":{\"save\":\"Falha ao salvar.\",\"delete\":\"Falha ao excluir.\",\"export\":\"Falha ao exportar.\"}}},\"localization\":{\"locale\":\"pt-BR\",\"direction\":\"ltr\",\"dateTime\":{\"dateFormat\":\"dd/MM/yyyy\",\"timeFormat\":\"HH:mm\",\"dateTimeFormat\":\"dd/MM/yyyy HH:mm\",\"firstDayOfWeek\":1}},\"appearance\":{\"density\":\"comfortable\",\"borders\":{\"showRowBorders\":true,\"showColumnBorders\":false,\"showOuterBorder\":true,\"style\":\"solid\",\"width\":1,\"color\":\"#e0e0e0\"}}}}",
|
|
6535
6795
|
"sourcePointer": "examples/ai-recipes/praxis-crud.table.json",
|
|
6536
|
-
"contentHash": "
|
|
6796
|
+
"contentHash": "1040c42ba8d6cd2a2ccf882e45b1337c726c752895d80d6d9d117425c8bdcde8",
|
|
6537
6797
|
"sourceKind": "component_definition",
|
|
6538
6798
|
"sourceId": "praxis-crud",
|
|
6539
6799
|
"corpusVersion": "1.0.0"
|
|
@@ -10966,19 +11226,129 @@
|
|
|
10966
11226
|
{
|
|
10967
11227
|
"chunkIndex": 1,
|
|
10968
11228
|
"chunkKind": "capabilities",
|
|
10969
|
-
"content": "Schema Capabilities:\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 - Path: metadata.source\n Category: metadata\n Kind: enum\n Description: Origem da configuração do formulário.\n - Path: metadata.lastUpdated\n Category: metadata\n Kind: string\n Description: Timestamp da última atualização da configuração (ISO-8601).\n - Path: metadata.schemaId\n Category: metadata\n Kind: string\n Description: ID do schema de origem para reconciliação no servidor.\n - Path: metadata.schemaContext\n Category: metadata\n Kind: object\n Description: Contexto do schema usado para compor o formulário.\n - Path: metadata.schemaContext.path\n Category: metadata\n Kind: string\n Description: Path do schema de origem.\n - Path: metadata.schemaContext.operation\n Category: metadata\n Kind: string\n Description: Operação do schema (ex.: \"get\", \"post\").\n - Path: metadata.schemaContext.schemaType\n Category: metadata\n Kind: enum\n Description: Tipo do schema (response/request).\n - Path: metadata.schemaContext.internal\n Category: metadata\n Kind: boolean\n Description: Indica se o schema é interno.\n - Path: metadata.schemaContext.tenant\n Category: metadata\n Kind: string\n Description: Tenant do schema (se aplicável).\n - Path: metadata.schemaContext.locale\n Category: metadata\n Kind: string\n Description: Locale do schema (se aplicável).\n - Path: metadata.serverHash\n Category: metadata\n Kind: string\n Description: Hash dos dados do servidor para detecção de mudanças.\n - Path: metadata.customizations\n Category: metadata\n Kind: array\n Description: Log de customizações manuais aplicadas ao formulário.\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 - Path: fieldMetadata[]\n Category: fields\n Kind: object\n Description: Item de metadados do campo (FieldMetadata).\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 - 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 - Path: helpPresentation.inlineMaxLength\n Category: appearance\n Kind: number\n Description: Tamanho maximo para manter ajuda inline quando display=\"auto\".\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 - Path: editorialContext\n Category: editorial\n Kind: object\n Description: Contexto editorial compartilhado entre os blocos hospedados antes/depois do formulario.\n - Path: editorialContext.[token]\n Category: editorial\n Kind: string\n Description: Valor simples exposto no contexto editorial.\n - Path: formBlocksBefore\n Category: editorial\n Kind: object\n Description: RichContentDocument renderizado antes do formulario.\n - Path: formBlocksBefore.kind\n Category: editorial\n Kind: string\n Description: Kind canonico do documento rich content.\n - Path: formBlocksBefore.version\n Category: editorial\n Kind: string\n Description: Versao do documento rich content editorial.\n - Path: formBlocksBefore.nodes\n Category: editorial\n Kind: array\n Description: Lista de RichBlockNode renderizados antes do formulario.\n - Path: formBlocksBefore.nodes[]\n Category: editorial\n Kind: object\n Description: RichBlockNode editorial hospedado antes do formulario.\n - Path: formBlocksBefore.context\n Category: editorial\n Kind: object\n Description: Contexto base opcional do documento rich content hospedado antes do formulario.\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 - Path: formBlocksBeforeActions.kind\n Category: editorial\n Kind: string\n Description: Kind canonico do documento rich content antes das ações.\n - Path: formBlocksBeforeActions.version\n Category: editorial\n Kind: string\n Description: Versao do documento rich content antes das ações.\n - Path: formBlocksBeforeActions.nodes\n Category: editorial\n Kind: array\n Description: Lista de RichBlockNode renderizados antes da área principal de ações.\n - Path: formBlocksBeforeActions.nodes[]\n Category: editorial\n Kind: object\n Description: RichBlockNode editorial hospedado antes da área principal de ações.\n - Path: formBlocksBeforeActions.context\n Category: editorial\n Kind: object\n Description: Contexto base opcional do documento rich content antes das ações.\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 - Path: formBlocksAfter.kind\n Category: editorial\n Kind: string\n Description: Kind canonico do documento rich content de fechamento.\n - Path: formBlocksAfter.version\n Category: editorial\n Kind: string\n Description: Versao do documento rich content de fechamento.\n - Path: formBlocksAfter.nodes\n Category: editorial\n Kind: array\n Description: Lista de RichBlockNode renderizados depois do formulario.\n - Path: formBlocksAfter.nodes[]\n Category: editorial\n Kind: object\n Description: RichBlockNode editorial hospedado depois do formulario.\n - Path: formBlocksAfter.context\n Category: editorial\n Kind: object\n Description: Contexto base opcional do documento rich content de fechamento.\n - Path: sections[].id\n Category: layout\n Kind: string\n Description: ID único da seção.\n - Path: sections[].title\n Category: layout\n Kind: string\n Description: TÃtulo exibido para cada seção do formulário.\n - Path: sections[].description\n Category: layout\n Kind: string\n Description: Descrição auxiliar exibida abaixo do tÃtulo da seção.\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 - 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 - Path: sections[].sectionHeader.mode\n Category: layout\n Kind: enum\n Description: Estratégia visual do header da seção.\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 - Path: sections[].sectionHeader.initialsSourceField\n Category: layout\n Kind: string\n Description: Campo textual usado para derivar iniciais do avatar.\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 - 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 - 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 - 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 - Path: sections[].sectionHeader.initialsMaxLength\n Category: layout\n Kind: number\n Description: Máximo de letras exibidas no avatar textual.\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 - Path: sections[].collapsed\n Category: layout\n Kind: boolean\n Description: Estado inicial da seção (colapsada/expandida) quando `collapsible` é true.\n - Path: sections[].gapBottom\n Category: layout\n Kind: number\n Description: Espaçamento vertical (em px) após a seção.\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 - Path: sections[].descriptionGapBottom\n Category: layout\n Kind: number\n Description: Espaçamento vertical (em px) abaixo da descrição da seção.\n - Path: sections[].appearance\n Category: appearance\n Kind: enum\n Description: Preset visual do container/cabeçalho da seção.\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 - Path: sections[].titleStyle\n Category: appearance\n Kind: enum\n Description: Preset de tipografia para o tÃtulo da seção.\n - Path: sections[].descriptionStyle\n Category: appearance\n Kind: enum\n Description: Preset de tipografia para a descrição da seção.\n - Path: sections[].titleColor\n Category: appearance\n Kind: string\n Description: Cor do tÃtulo da seção (CSS color ou token).\n - Path: sections[].descriptionColor\n Category: appearance\n Kind: string\n Description: Cor da descrição da seção (CSS color ou token).\n - Path: sections[].headerAlign\n Category: appearance\n Kind: enum\n Description: Alinhamento horizontal do conteúdo do cabeçalho da seção.\n - Path: sections[].headerTooltip\n Category: layout\n Kind: string\n Description: Texto de tooltip para o cabeçalho da seção.\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 - 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 - 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 - Path: sections[].headerActions[].icon\n Category: layout\n Kind: string\n Description: Ãcone renderizado na ação do cabeçalho da seção.\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 - 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 - Path: sections[].headerActions[].color\n Category: appearance\n Kind: enum\n Description: Tom visual da ação do cabeçalho da seção.\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 - 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 - Path: sections[].className\n Category: appearance\n Kind: string\n Description: Classe CSS aplicada ao container da seção.\n - Path: sections[].styles\n Category: appearance\n Kind: object\n Description: Estilos inline aplicados ao container da seção.\n - Path: sections[].rows[].id\n Category: layout\n Kind: string\n Description: ID único da linha dentro de uma seção.\n - Path: sections[].rows[].title\n Category: layout\n Kind: string\n Description: TÃtulo interno da linha (usado em editores e labels).\n - Path: sections[].rows[].gap\n Category: layout\n Kind: number\n Description: Espaçamento horizontal (em px) entre colunas nesta linha.\n - Path: sections[].rows[].rowGap\n Category: layout\n Kind: number\n Description: Espaçamento vertical (em px) após esta linha.\n - Path: sections[].rows[].columns[].id\n Category: layout\n Kind: string\n Description: ID único da coluna dentro de uma linha.\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 - Path: sections[].rows[].columns[].testId\n Category: layout\n Kind: string\n Description: Atributo data-testid aplicado ao container da coluna.\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 - 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 - 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 - Path: sections[].rows[].columns[].items[].kind\n Category: layout\n Kind: enum\n Description: Tipo do item de layout da coluna.\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 - Path: sections[].rows[].columns[].items[].fieldName\n Category: layout\n Kind: string\n Description: Nome do campo quando kind é \"field\".\n - Path: sections[].rows[].columns[].items[].document\n Category: editorial\n Kind: object\n Description: RichContentDocument do bloco visual quando kind é \"richContent\".\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 - Path: sections[].rows[].columns[].items[].rootClassName\n Category: appearance\n Kind: string\n Description: Classe CSS opcional aplicada ao bloco visual richContent.\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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - Path: sections[].rows[].columns[].order.xs\n Category: layout\n Kind: number\n Description: Ordem visual da coluna para telas extra pequenas (xs).\n - Path: sections[].rows[].columns[].order.sm\n Category: layout\n Kind: number\n Description: Ordem visual da coluna para telas pequenas (sm).\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 - Path: sections[].rows[].columns[].order.lg\n Category: layout\n Kind: number\n Description: Ordem visual da coluna para telas grandes (lg).\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 - Path: sections[].rows[].columns[].hidden.xs\n Category: layout\n Kind: boolean\n Description: Oculta a coluna para telas extra pequenas (xs).\n - Path: sections[].rows[].columns[].hidden.sm\n Category: layout\n Kind: boolean\n Description: Oculta a coluna para telas pequenas (sm).\n - Path: sections[].rows[].columns[].hidden.md\n Category: layout\n Kind: boolean\n Description: Oculta a coluna para telas médias (md).\n - Path: sections[].rows[].columns[].hidden.lg\n Category: layout\n Kind: boolean\n Description: Oculta a coluna para telas grandes (lg).\n - Path: sections[].rows[].columns[].hidden.xl\n Category: layout\n Kind: boolean\n Description: Oculta a coluna para telas extra grandes (xl).\n - Path: sections[].rows[].columns[].align\n Category: layout\n Kind: enum\n Description: Alinhamento vertical do conteúdo da coluna.\n - Path: sections[].rows[].columns[].padding\n Category: layout\n Kind: number\n Description: Padding (em px) interno da coluna.\n - Path: sections[].rows[].columns[].className\n Category: appearance\n Kind: string\n Description: Classe CSS aplicada à coluna.\n - Path: actions.submit.id\n Category: actions\n Kind: string\n Description: ID do botão de submissão.\n - Path: actions.submit.visible\n Category: actions\n Kind: boolean\n Description: Visibilidade do botão de submissão.\n - Path: actions.submit.label\n Category: actions\n Kind: string\n Description: Rótulo do botão de submissão.\n - Path: actions.submit.icon\n Category: actions\n Kind: string\n Description: Ãcone (Material Icons) para o botão de submissão.\n - Path: actions.submit.color\n Category: actions\n Kind: enum\n Description: Cor do botão de submissão.\n - Path: actions.submit.variant\n Category: actions\n Kind: enum\n Description: Variante visual do botão de submissão.\n - Path: actions.submit.size\n Category: actions\n Kind: enum\n Description: Tamanho do botão de submissão.\n - Path: actions.submit.className\n Category: actions\n Kind: string\n Description: Classe CSS aplicada ao botão de submissão.\n - Path: actions.submit.style\n Category: actions\n Kind: object\n Description: Estilos inline aplicados ao botão de submissão.\n - Path: actions.submit.disabled\n Category: actions\n Kind: boolean\n Description: Desabilita o botão de submissão.\n - Path: actions.submit.type\n Category: actions\n Kind: enum\n Description: Tipo do botão de submissão.\n - Path: actions.submit.action\n Category: actions\n Kind: string\n Description: Evento customizado disparado ao clicar.\n - Path: actions.submit.tooltip\n Category: actions\n Kind: string\n Description: Tooltip exibido no botão de submissão.\n - Path: actions.submit.loading\n Category: actions\n Kind: boolean\n Description: Exibe estado de carregamento no botão de submissão.\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 - Path: actions.cancel.id\n Category: actions\n Kind: string\n Description: ID do botão de cancelar.\n - Path: actions.cancel.visible\n Category: actions\n Kind: boolean\n Description: Visibilidade do botão de cancelar.\n - Path: actions.cancel.label\n Category: actions\n Kind: string\n Description: Rótulo do botão de cancelar.\n - Path: actions.cancel.icon\n Category: actions\n Kind: string\n Description: Ãcone (Material Icons) para o botão de cancelar.\n - Path: actions.cancel.color\n Category: actions\n Kind: enum\n Description: Cor do botão de cancelar.\n - Path: actions.cancel.variant\n Category: actions\n Kind: enum\n Description: Variante visual do botão de cancelar.\n - Path: actions.cancel.size\n Category: actions\n Kind: enum\n Description: Tamanho do botão de cancelar.\n - Path: actions.cancel.className\n Category: actions\n Kind: string\n Description: Classe CSS aplicada ao botão de cancelar.\n - Path: actions.cancel.style\n Category: actions\n Kind: object\n Description: Estilos inline aplicados ao botão de cancelar.\n - Path: actions.cancel.disabled\n Category: actions\n Kind: boolean\n Description: Desabilita o botão de cancelar.\n - Path: actions.cancel.type\n Category: actions\n Kind: enum\n Description: Tipo do botão de cancelar.\n - Path: actions.cancel.action\n Category: actions\n Kind: string\n Description: Evento customizado disparado ao clicar.\n - Path: actions.cancel.tooltip\n Category: actions\n Kind: string\n Description: Tooltip exibido no botão de cancelar.\n - Path: actions.cancel.loading\n Category: actions\n Kind: boolean\n Description: Exibe estado de carregamento no botão de cancelar.\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 - Path: actions.reset.id\n Category: actions\n Kind: string\n Description: ID do botão de reset.\n - Path: actions.reset.visible\n Category: actions\n Kind: boolean\n Description: Visibilidade do botão de reset.\n - Path: actions.reset.label\n Category: actions\n Kind: string\n Description: Rótulo do botão de reset.\n - Path: actions.reset.icon\n Category: actions\n Kind: string\n Description: Ãcone (Material Icons) para o botão de reset.\n - Path: actions.reset.color\n Category: actions\n Kind: enum\n Description: Cor do botão de reset.\n - Path: actions.reset.variant\n Category: actions\n Kind: enum\n Description: Variante visual do botão de reset.\n - Path: actions.reset.size\n Category: actions\n Kind: enum\n Description: Tamanho do botão de reset.\n - Path: actions.reset.className\n Category: actions\n Kind: string\n Description: Classe CSS aplicada ao botão de reset.\n - Path: actions.reset.style\n Category: actions\n Kind: object\n Description: Estilos inline aplicados ao botão de reset.\n - Path: actions.reset.disabled\n Category: actions\n Kind: boolean\n Description: Desabilita o botão de reset.\n - Path: actions.reset.type\n Category: actions\n Kind: enum\n Description: Tipo do botão de reset.\n - Path: actions.reset.action\n Category: actions\n Kind: string\n Description: Evento customizado disparado ao clicar.\n - Path: actions.reset.tooltip\n Category: actions\n Kind: string\n Description: Tooltip exibido no botão de reset.\n - Path: actions.reset.loading\n Category: actions\n Kind: boolean\n Description: Exibe estado de carregamento no botão de reset.\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 - Path: actions.custom\n Category: actions\n Kind: array\n Description: Lista de botões de ação customizados.\n - Path: actions.custom[]\n Category: actions\n Kind: object\n Description: Configuração de um botão de ação customizado.\n - Path: actions.custom[].id\n Category: actions\n Kind: string\n Description: ID da ação customizada.\n - Path: actions.custom[].visible\n Category: actions\n Kind: boolean\n Description: Visibilidade da ação customizada.\n - Path: actions.custom[].label\n Category: actions\n Kind: string\n Description: Rótulo da ação customizada.\n - Path: actions.custom[].icon\n Category: actions\n Kind: string\n Description: Ãcone (Material Icons) para a ação customizada.\n - Path: actions.custom[].color\n Category: actions\n Kind: enum\n Description: Cor da ação customizada.\n - Path: actions.custom[].variant\n Category: actions\n Kind: enum\n Description: Variante visual da ação customizada.\n - Path: actions.custom[].size\n Category: actions\n Kind: enum\n Description: Tamanho da ação customizada.\n - Path: actions.custom[].className\n Category: actions\n Kind: string\n Description: Classe CSS aplicada à ação customizada.\n - Path: actions.custom[].style\n Category: actions\n Kind: object\n Description: Estilos inline aplicados à ação customizada.\n - Path: actions.custom[].disabled\n Category: actions\n Kind: boolean\n Description: Desabilita a ação customizada.\n - Path: actions.custom[].type\n Category: actions\n Kind: enum\n Description: Tipo do botão da ação customizada.\n - Path: actions.custom[].action\n Category: actions\n Kind: string\n Description: Evento customizado disparado ao clicar.\n - Path: actions.custom[].tooltip\n Category: actions\n Kind: string\n Description: Tooltip exibido na ação customizada.\n - Path: actions.custom[].loading\n Category: actions\n Kind: boolean\n Description: Exibe estado de carregamento na ação customizada.\n - Path: actions.custom[].shortcut\n Category: actions\n Kind: string\n Description: Atalho de teclado para a ação customizada.\n - Path: actions.position\n Category: layout\n Kind: enum\n Description: Posicionamento horizontal da barra de ações.\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 - Path: actions.spacing\n Category: layout\n Kind: enum\n Description: Espaçamento entre os botões na barra de ações.\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 - Path: actions.divider\n Category: layout\n Kind: boolean\n Description: Exibe um divisor superior acima da barra de ações.\n - Path: actions.placement\n Category: layout\n Kind: enum\n Description: Localização estrutural da barra de ações no layout.\n - Path: actions.mobile.position\n Category: layout\n Kind: enum\n Description: Posicionamento da barra de ações em dispositivos móveis.\n - Path: actions.mobile.orientation\n Category: layout\n Kind: enum\n Description: Orientação dos botões em dispositivos móveis.\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 - Path: actions.containerClassName\n Category: appearance\n Kind: string\n Description: Classe CSS aplicada ao container da barra de ações.\n - Path: actions.containerStyles\n Category: appearance\n Kind: object\n Description: Estilos inline aplicados ao container da barra de ações.\n - Path: actions.showSaveButton\n Category: actions\n Kind: boolean\n Description: Legacy: controla visibilidade do botão de submit.\n - Path: actions.submitButtonLabel\n Category: actions\n Kind: string\n Description: Legacy: rótulo do botão de submit.\n - Path: actions.showCancelButton\n Category: actions\n Kind: boolean\n Description: Legacy: controla visibilidade do botão de cancel.\n - Path: actions.cancelButtonLabel\n Category: actions\n Kind: string\n Description: Legacy: rótulo do botão de cancel.\n - Path: actions.showResetButton\n Category: actions\n Kind: boolean\n Description: Legacy: controla visibilidade do botão de reset.\n - Path: actions.resetButtonLabel\n Category: actions\n Kind: string\n Description: Legacy: rótulo do botão de reset.\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 - Path: behavior.trackHistory\n Category: behavior\n Kind: boolean\n Description: Habilita rastreamento de histórico para desfazer/refazer (se suportado).\n - Path: behavior.focusFirstError\n Category: behavior\n Kind: boolean\n Description: Ao submeter, foca automaticamente no primeiro campo com erro.\n - Path: behavior.scrollToErrors\n Category: behavior\n Kind: boolean\n Description: Ao submeter, rola a página para exibir o primeiro erro.\n - Path: behavior.clearAfterSave\n Category: behavior\n Kind: boolean\n Description: Limpa o formulário após uma submissão bem-sucedida.\n - Path: behavior.redirectAfterSave\n Category: behavior\n Kind: string\n Description: URL para redirecionar após uma submissão bem-sucedida.\n - Path: behavior.reactiveValidation\n Category: validation\n Kind: boolean\n Description: Ativa validação reativa (em tempo real) em `valueChanges`.\n - Path: behavior.reactiveValidationDebounceMs\n Category: validation\n Kind: number\n Description: Debounce (em ms) para a validação reativa.\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 - Path: api.loadEndpoint\n Category: api\n Kind: string\n Description: URL para buscar dados para popular o formulário (GET).\n - Path: api.saveMethod\n Category: api\n Kind: enum\n Description: Método HTTP para a requisição de salvar.\n - Path: api.timeout\n Category: api\n Kind: number\n Description: Tempo limite (em ms) para as requisições API.\n - Path: api.headers\n Category: api\n Kind: object\n Description: Cabeçalhos HTTP personalizados para as requisições API.\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 - Path: api.beforeSave\n Category: hooks\n Kind: expression\n Description: Hook para pré-processamento de dados antes de enviar para a API.\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 - Path: messages.updateRegistrySuccess\n Category: messages\n Kind: string\n Description: Mensagem de sucesso após atualização de registro.\n - Path: messages.createRegistrySuccess\n Category: messages\n Kind: string\n Description: Mensagem de sucesso após criação de registro.\n - Path: messages.updateRegistryError\n Category: messages\n Kind: string\n Description: Mensagem de erro após atualização de registro.\n - Path: messages.createRegistryError\n Category: messages\n Kind: string\n Description: Mensagem de erro após criação de registro.\n - Path: messages.confirmations.submit\n Category: messages\n Kind: string\n Description: Mensagem de confirmação antes de submeter o formulário.\n - Path: messages.confirmations.cancel\n Category: messages\n Kind: string\n Description: Mensagem de confirmação antes de cancelar.\n - Path: messages.confirmations.reset\n Category: messages\n Kind: string\n Description: Mensagem de confirmação antes de resetar o formulário.\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 - 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 - Path: messages.customActions.[actionId].success\n Category: messages\n Kind: string\n Description: Mensagem de sucesso para a ação customizada.\n - Path: messages.customActions.[actionId].error\n Category: messages\n Kind: string\n Description: Mensagem de erro para a ação customizada.\n - Path: messages.customActions.[actionId].confirmation\n Category: messages\n Kind: string\n Description: Mensagem de confirmação para a ação customizada.\n - Path: messages.loading.submit\n Category: messages\n Kind: string\n Description: Mensagem exibida durante o envio do formulário.\n - Path: messages.loading.cancel\n Category: messages\n Kind: string\n Description: Mensagem exibida durante o cancelamento.\n - Path: messages.loading.reset\n Category: messages\n Kind: string\n Description: Mensagem exibida durante o reset do formulário.\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 - Path: formRules[].id\n Category: rules\n Kind: string\n Description: ID único da regra de layout.\n - Path: formRules[].name\n Category: rules\n Kind: string\n Description: Nome amigável da regra de layout.\n - Path: formRules[].description\n Category: rules\n Kind: string\n Description: Descrição da regra de layout para documentação.\n - Path: formRules[].metadata.origin\n Category: rules\n Kind: enum\n Description: Origem da regra sugerida pela IA.\n - Path: formRules[].metadata.reviewStatus\n Category: rules\n Kind: enum\n Description: Status de revisão humana da regra sugerida pela IA.\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 - Path: formRules[].context\n Category: rules\n Kind: enum\n Description: Contexto legado da regra (quando properties não forem informadas).\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`.\n - Path: formRules[].targets[]\n Category: rules\n Kind: string\n Description: ID do alvo da regra.\n - Path: formRules[].targetFields\n Category: rules\n Kind: array\n Description: Alias legado para alvos de campo.\n - Path: formRules[].targetFields[]\n Category: rules\n Kind: string\n Description: ID do campo alvo (alias legado).\n - Path: formRules[].effect.condition\n Category: rules\n Kind: expression\n Description: Condicao canonica da regra, expressa em Json Logic.\n - Path: formCommandRules\n Category: rules\n Kind: array\n Description: Regras condicionais de comando avaliadas depois que formRules estabilizam valores calculados.\n - Path: formCommandRules[].condition\n Category: rules\n Kind: expression\n Description: Condicao Json Logic avaliada sobre formData estabilizado, incluindo field values calculados.\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 - 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 - Path: formCommandRules[].policy\n Category: rules\n Kind: object\n Description: Politica operacional do comando: trigger, distinct, distinctBy, debounceMs, errorPolicy e runOnInitialEvaluation.\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 - 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 - Path: hooks.beforeInit[]\n Category: hooks\n Kind: array\n Description: Declarações de hooks para beforeInit.\n - Path: hooks.beforeInit[].id\n Category: hooks\n Kind: string\n Description: ID do hook (registrado no host).\n - Path: hooks.beforeInit[].priority\n Category: hooks\n Kind: number\n Description: Prioridade do hook (maior executa primeiro).\n - Path: hooks.beforeInit[].timeoutMs\n Category: hooks\n Kind: number\n Description: Timeout em ms para a execucao do hook.\n - Path: hooks.beforeInit[].args\n Category: hooks\n Kind: object\n Description: Argumentos adicionais passados ao hook.\n - Path: hooks.afterInit[]\n Category: hooks\n Kind: array\n Description: Declarações de hooks para afterInit.\n - Path: hooks.afterInit[].id\n Category: hooks\n Kind: string\n Description: ID do hook (registrado no host).\n - Path: hooks.afterInit[].priority\n Category: hooks\n Kind: number\n Description: Prioridade do hook (maior executa primeiro).\n - Path: hooks.afterInit[].timeoutMs\n Category: hooks\n Kind: number\n Description: Timeout em ms para a execucao do hook.\n - Path: hooks.afterInit[].args\n Category: hooks\n Kind: object\n Description: Argumentos adicionais passados ao hook.\n - Path: hooks.beforeValidate[]\n Category: hooks\n Kind: array\n Description: Declarações de hooks para beforeValidate.\n - Path: hooks.beforeValidate[].id\n Category: hooks\n Kind: string\n Description: ID do hook (registrado no host).\n - Path: hooks.beforeValidate[].priority\n Category: hooks\n Kind: number\n Description: Prioridade do hook (maior executa primeiro).\n - Path: hooks.beforeValidate[].timeoutMs\n Category: hooks\n Kind: number\n Description: Timeout em ms para a execucao do hook.\n - Path: hooks.beforeValidate[].args\n Category: hooks\n Kind: object\n Description: Argumentos adicionais passados ao hook.\n - Path: hooks.afterValidate[]\n Category: hooks\n Kind: array\n Description: Declarações de hooks para afterValidate.\n - Path: hooks.afterValidate[].id\n Category: hooks\n Kind: string\n Description: ID do hook (registrado no host).\n - Path: hooks.afterValidate[].priority\n Category: hooks\n Kind: number\n Description: Prioridade do hook (maior executa primeiro).\n - Path: hooks.afterValidate[].timeoutMs\n Category: hooks\n Kind: number\n Description: Timeout em ms para a execucao do hook.\n - Path: hooks.afterValidate[].args\n Category: hooks\n Kind: object\n Description: Argumentos adicionais passados ao hook.\n - Path: hooks.beforeSubmit[]\n Category: hooks\n Kind: array\n Description: Declarações de hooks para beforeSubmit.\n - Path: hooks.beforeSubmit[].id\n Category: hooks\n Kind: string\n Description: ID do hook (registrado no host).\n - Path: hooks.beforeSubmit[].priority\n Category: hooks\n Kind: number\n Description: Prioridade do hook (maior executa primeiro).\n - Path: hooks.beforeSubmit[].timeoutMs\n Category: hooks\n Kind: number\n Description: Timeout em ms para a execucao do hook.\n - Path: hooks.beforeSubmit[].args\n Category: hooks\n Kind: object\n Description: Argumentos adicionais passados ao hook.\n - Path: hooks.afterSubmit[]\n Category: hooks\n Kind: array\n Description: Declarações de hooks para afterSubmit.\n - Path: hooks.afterSubmit[].id\n Category: hooks\n Kind: string\n Description: ID do hook (registrado no host).\n - Path: hooks.afterSubmit[].priority\n Category: hooks\n Kind: number\n Description: Prioridade do hook (maior executa primeiro).\n - Path: hooks.afterSubmit[].timeoutMs\n Category: hooks\n Kind: number\n Description: Timeout em ms para a execucao do hook.\n - Path: hooks.afterSubmit[].args\n Category: hooks\n Kind: object\n Description: Argumentos adicionais passados ao hook.\n - Path: hooks.onError[]\n Category: hooks\n Kind: array\n Description: Declarações de hooks para onError.\n - Path: hooks.onError[].id\n Category: hooks\n Kind: string\n Description: ID do hook (registrado no host).\n - Path: hooks.onError[].priority\n Category: hooks\n Kind: number\n Description: Prioridade do hook (maior executa primeiro).\n - Path: hooks.onError[].timeoutMs\n Category: hooks\n Kind: number\n Description: Timeout em ms para a execucao do hook.\n - Path: hooks.onError[].args\n Category: hooks\n Kind: object\n Description: Argumentos adicionais passados ao hook.\n - Path: hints.dataModes.create\n Category: form_config\n Kind: string\n Description: Dica para o modo de criação de dados.\n - Path: hints.dataModes.edit\n Category: form_config\n Kind: string\n Description: Dica para o modo de edição de dados.\n - Path: hints.dataModes.view\n Category: form_config\n Kind: string\n Description: Dica para o modo de visualização de dados.\n - Path: hints.uiModes.presentation\n Category: form_config\n Kind: string\n Description: Dica para o modo de apresentação da UI.\n - Path: hints.uiModes.readonly\n Category: form_config\n Kind: string\n Description: Dica para o modo de somente leitura da UI.\n - Path: hints.uiModes.disabled\n Category: form_config\n Kind: string\n Description: Dica para o modo desabilitado da UI.\n - Path: hints.uiModes.visible\n Category: form_config\n Kind: string\n Description: Dica para o modo de visibilidade da UI.\n - Path: fieldMetadata[].id\n Category: identity\n Kind: string\n Description: Identificador unico da instancia do componente.\n - Path: fieldMetadata[].version\n Category: identity\n Kind: string\n Description: Versao do schema de metadata (migracao).\n - Path: fieldMetadata[].context\n Category: identity\n Kind: enum\n Description: Contexto de uso do componente (form/filter/table/dialog/standalone).\n - Path: fieldMetadata[].createdAt\n Category: misc\n Kind: string\n Description: Timestamp de criacao (ISO).\n - Path: fieldMetadata[].updatedAt\n Category: misc\n Kind: string\n Description: Timestamp de atualizacao (ISO).\n - Path: fieldMetadata[].tags\n Category: identity\n Kind: array\n Description: Tags para categorizacao e busca.\n - Path: fieldMetadata[].cssClass\n Category: appearance\n Kind: string\n Description: Classe CSS aplicada ao host do componente.\n - Path: fieldMetadata[].style\n Category: appearance\n Kind: object\n Description: Estilos inline (objeto CSS).\n - Path: fieldMetadata[].dataAttributes\n Category: data\n Kind: object\n Description: Data attributes para teste/analytics.\n - Path: fieldMetadata[].name\n Category: identity\n Kind: string\n Description: Identificador único do campo. Essencial para binding.\n - Path: fieldMetadata[].label\n Category: identity\n Kind: string\n Description: Rótulo principal exibido para o usuário.\n - Path: fieldMetadata[].placeholder\n Category: identity\n Kind: string\n Description: Texto temporário exibido quando vazio.\n - Path: fieldMetadata[].hint\n Category: identity\n Kind: string\n Description: Texto de ajuda exibido abaixo do campo.\n - Path: fieldMetadata[].helpText\n Category: identity\n Kind: string\n Description: Texto semântico de ajuda publicado pelo schema/DTO.\n - Path: fieldMetadata[].tooltip\n Category: identity\n Kind: string\n Description: Texto exibido ao passar o mouse.\n - Path: fieldMetadata[].tooltipOnHover\n Category: identity\n Kind: boolean\n Description: Habilita apresentação do tooltip no hover quando suportado pelo renderer.\n - Path: fieldMetadata[].description\n Category: identity\n Kind: string\n Description: Descrição detalhada (usada em documentação ou helps extensos).\n - Path: fieldMetadata[].selectionMode\n Category: behavior\n Kind: enum\n Description: Semântica de seleção explícita para controles de escolha.\n - Path: fieldMetadata[].variant\n Category: appearance\n Kind: string\n Description: Variante visual/semântica do controle.\n - Path: fieldMetadata[].density\n Category: appearance\n Kind: enum\n Description: Densidade visual do shell do controle.\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 - Path: fieldMetadata[].group\n Category: identity\n Kind: string\n Description: Agrupador lógico do campo.\n - Path: fieldMetadata[].order\n Category: layout\n Kind: number\n Description: Ordem de exibição do campo.\n - Path: fieldMetadata[].width\n Category: layout\n Kind: string\n Description: Largura do campo (ex: 50%, 100px).\n - Path: fieldMetadata[].isFlex\n Category: layout\n Kind: boolean\n Description: Se true, usa flex-grow para preencher espaço.\n - Path: fieldMetadata[].controlType\n Category: behavior\n Kind: enum\n Description: Tipo do componente de UI (input, select, datepicker, etc).\n - Path: fieldMetadata[].dataType\n Category: data\n Kind: enum\n Description: Tipo de dado do campo (text, number, date, etc).\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 - 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 - 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 - Path: fieldMetadata[].materialDesign.appearance\n Category: appearance\n Kind: enum\n Description: Aparência do campo Material (fill/outline).\n - Path: fieldMetadata[].materialDesign.color\n Category: appearance\n Kind: enum\n Description: Tema de cor Material (primary/accent/warn).\n - Path: fieldMetadata[].materialDesign.floatLabel\n Category: appearance\n Kind: enum\n Description: Comportamento do rótulo flutuante.\n - Path: fieldMetadata[].materialDesign.subscriptSizing\n Category: appearance\n Kind: enum\n Description: Estratégia de sizing do subscript (erros/hints).\n - Path: fieldMetadata[].materialDesign.hideRequiredMarker\n Category: appearance\n Kind: boolean\n Description: Oculta o asterisco de campo obrigatório.\n - Path: fieldMetadata[].materialDesign.density\n Category: appearance\n Kind: enum\n Description: Densidade do campo Material.\n - Path: fieldMetadata[].materialDesign.disableRipple\n Category: appearance\n Kind: boolean\n Description: Desativa ripple/ondulação em componentes Material.\n - Path: fieldMetadata[].materialDesign.customPalette\n Category: appearance\n Kind: object\n Description: Override de paleta (primary/accent/warn).\n - Path: fieldMetadata[].materialDesign.animations\n Category: appearance\n Kind: object\n Description: Configuração de animações (disable, duration, easing).\n - Path: fieldMetadata[].prefixIcon\n Category: appearance\n Kind: string\n Description: Ícone exibido antes do valor.\n - Path: fieldMetadata[].suffixIcon\n Category: appearance\n Kind: string\n Description: Ícone exibido depois do valor.\n - Path: fieldMetadata[].iconPosition\n Category: appearance\n Kind: enum\n Description: Posição preferencial do ícone principal.\n - Path: fieldMetadata[].iconSize\n Category: appearance\n Kind: enum\n Description: Tamanho do ícone.\n - Path: fieldMetadata[].iconColor\n Category: appearance\n Kind: string\n Description: Cor semântica ou token de cor aplicado ao ícone principal.\n - Path: fieldMetadata[].iconClass\n Category: appearance\n Kind: string\n Description: Classe CSS controlada pelo host para o ícone principal.\n - Path: fieldMetadata[].iconStyle\n Category: appearance\n Kind: string\n Description: Estilo visual semântico do ícone quando o renderer suportar variações.\n - Path: fieldMetadata[].iconFontSize\n Category: appearance\n Kind: string\n Description: Tamanho tipográfico do ícone principal.\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 - 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 - Path: fieldMetadata[].presentation.presenter\n Category: appearance\n Kind: enum\n Description: Tipo semantico de renderizacao em modo apresentacao.\n - Path: fieldMetadata[].presentation.tone\n Category: appearance\n Kind: enum\n Description: Tom semantico mapeado pelo consumidor para tokens de tema.\n - Path: fieldMetadata[].presentation.appearance\n Category: appearance\n Kind: enum\n Description: Nivel de enfase visual do apresentador.\n - Path: fieldMetadata[].presentation.icon\n Category: appearance\n Kind: string\n Description: Nome de icone Material Symbols usado pelo apresentador semantico.\n - Path: fieldMetadata[].presentation.label\n Category: identity\n Kind: string\n Description: Rotulo semantico exibido por apresentadores como status, badge ou chip.\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 - 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 - 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 - Path: fieldMetadata[].presentation.valuePresentation\n Category: appearance\n Kind: object\n Description: Override de formatacao aplicado apenas pela superficie de apresentacao.\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 - Path: fieldMetadata[].presentation.visualization.kind\n Category: appearance\n Kind: enum\n Description: Tipo semantico da micro visualizacao de apresentacao.\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 - Path: fieldMetadata[].presentation.visualization.size\n Category: layout\n Kind: enum\n Description: Tamanho semantico da micro visualizacao.\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 - 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 - Path: fieldMetadata[].presentationRules[].when\n Category: behavior\n Kind: object\n Description: Guarda Json Logic avaliada contra o contexto de apresentacao do campo.\n - Path: fieldMetadata[].presentationRules[].set\n Category: appearance\n Kind: object\n Description: Patch semantico aplicado sobre presentation quando a guarda for verdadeira.\n - Path: fieldMetadata[].mask\n Category: appearance\n Kind: string\n Description: Máscara de input (padrão do componente).\n - Path: fieldMetadata[].format\n Category: appearance\n Kind: string\n Description: Formato de exibição (ex: pipes).\n - Path: fieldMetadata[].validators\n Category: validation\n Kind: object\n Description: Objeto contendo todas as regras de validação.\n - Path: fieldMetadata[].validators.required\n Category: validation\n Kind: boolean\n Description: Campo obrigatório.\n - Path: fieldMetadata[].required\n Category: validation\n Kind: boolean\n Description: Campo obrigatório (alias rápido do validators.required).\n - Path: fieldMetadata[].validators.requiredMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para required.\n - Path: fieldMetadata[].validators.email\n Category: validation\n Kind: boolean\n Description: Validação de formato de e-mail.\n - Path: fieldMetadata[].validators.emailMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para validação de email.\n - Path: fieldMetadata[].validators.minLength\n Category: validation\n Kind: number\n Description: Comprimento mínimo do texto.\n - Path: fieldMetadata[].validators.minLengthMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para minLength.\n - Path: fieldMetadata[].validators.maxLength\n Category: validation\n Kind: number\n Description: Comprimento máximo do texto.\n - Path: fieldMetadata[].validators.maxLengthMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para maxLength.\n - Path: fieldMetadata[].validators.min\n Category: validation\n Kind: number\n Description: Valor numérico mínimo.\n - Path: fieldMetadata[].validators.minMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para min.\n - Path: fieldMetadata[].validators.max\n Category: validation\n Kind: number\n Description: Valor numérico máximo.\n - Path: fieldMetadata[].validators.maxMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para max.\n - Path: fieldMetadata[].validators.pattern\n Category: validation\n Kind: string\n Description: Regex para validação.\n - Path: fieldMetadata[].validators.patternMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para pattern.\n - Path: fieldMetadata[].validators.cpf\n Category: validation\n Kind: boolean\n Description: Validador de CPF (legado).\n - Path: fieldMetadata[].validators.cnpj\n Category: validation\n Kind: boolean\n Description: Validador de CNPJ (legado).\n - Path: fieldMetadata[].validators.cpfCnpj\n Category: validation\n Kind: boolean\n Description: Validador automatico CPF/CNPJ (legado).\n - Path: fieldMetadata[].validators.cnpjAlpha\n Category: validation\n Kind: boolean\n Description: Validador de CNPJ alfanumerico (legado).\n - Path: fieldMetadata[].validators.cpfMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para CPF.\n - Path: fieldMetadata[].validators.cnpjMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para CNPJ.\n - Path: fieldMetadata[].validators.cnpjAlphaMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para CNPJ alfanumerico.\n - Path: fieldMetadata[].validators.url\n Category: validation\n Kind: boolean\n Description: Validador de URL.\n - Path: fieldMetadata[].validators.urlMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para URL.\n - Path: fieldMetadata[].validators.minWords\n Category: validation\n Kind: number\n Description: Mínimo de palavras.\n - Path: fieldMetadata[].validators.requiredChecked\n Category: validation\n Kind: boolean\n Description: Exige checkbox marcado (ex: termos de uso).\n - Path: fieldMetadata[].validators.customValidator\n Category: validation\n Kind: expression\n Description: Validador customizado (função).\n - Path: fieldMetadata[].validators.asyncValidator\n Category: validation\n Kind: expression\n Description: Validador async customizado (função).\n - Path: fieldMetadata[].validators.matchField\n Category: validation\n Kind: string\n Description: Campo que deve coincidir (cross-field).\n - Path: fieldMetadata[].validators.matchFieldMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para matchField.\n - Path: fieldMetadata[].validators.uniqueValidator\n Category: validation\n Kind: expression\n Description: Validador de unicidade via API (função).\n - Path: fieldMetadata[].validators.uniqueMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para unicidade.\n - Path: fieldMetadata[].validators.conditionalValidation\n Category: validation\n Kind: array\n Description: Regras de validação condicional.\n - Path: fieldMetadata[].validators.conditionalValidation[].condition\n Category: validation\n Kind: expression\n Description: Condicao para aplicar validadores.\n - Path: fieldMetadata[].validators.conditionalValidation[].validators\n Category: validation\n Kind: object\n Description: Conjunto de validadores aplicados quando a condicao for verdadeira.\n - Path: fieldMetadata[].validators.validationTrigger\n Category: validation\n Kind: enum\n Description: Gatilho de validação no validator.\n - Path: fieldMetadata[].validators.validationDebounce\n Category: validation\n Kind: number\n Description: Debounce de validação no validator (ms).\n - Path: fieldMetadata[].validators.showInlineErrors\n Category: validation\n Kind: boolean\n Description: Exibe erros inline (validator).\n - Path: fieldMetadata[].validators.errorPosition\n Category: validation\n Kind: enum\n Description: Posicao do erro (validator).\n - Path: fieldMetadata[].validationMode\n Category: validation\n Kind: enum\n Description: Gatilho da validação (change/blur/submit).\n - Path: fieldMetadata[].debounceTime\n Category: validation\n Kind: number\n Description: Debounce para validação em ms.\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 - Path: fieldMetadata[].endpoint\n Category: data\n Kind: string\n Description: URL para carregar opções remotas.\n - Path: fieldMetadata[].valueField\n Category: data\n Kind: string\n Description: Nome da propriedade de valor nas opções.\n - Path: fieldMetadata[].displayField\n Category: data\n Kind: string\n Description: Nome da propriedade de texto nas opções.\n - Path: fieldMetadata[].filterField\n Category: data\n Kind: string\n Description: Campo para filtragem no backend.\n - Path: fieldMetadata[].queryParams\n Category: data\n Kind: object\n Description: Parâmetros fixos para a query do endpoint.\n - Path: fieldMetadata[].cacheDuration\n Category: data\n Kind: number\n Description: Duração do cache de dados em ms.\n - Path: fieldMetadata[].hidden\n Category: behavior\n Kind: boolean\n Description: Oculta o campo globalmente.\n - Path: fieldMetadata[].visibleIn\n Category: behavior\n Kind: array\n Description: Contextos onde o campo é visível.\n - Path: fieldMetadata[].formHidden\n Category: behavior\n Kind: boolean\n Description: Oculta apenas no formulário.\n - Path: fieldMetadata[].tableHidden\n Category: behavior\n Kind: boolean\n Description: Oculta apenas na tabela.\n - Path: fieldMetadata[].filterHidden\n Category: behavior\n Kind: boolean\n Description: Oculta apenas no filtro.\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 - 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 - 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 - Path: fieldMetadata[].fieldAccess.reason\n Category: misc\n Kind: string\n Description: Justificativa explicativa/auditavel da politica de acesso do campo.\n - Path: fieldMetadata[].dependencyFields\n Category: dependency\n Kind: array\n Description: Campos dos quais este campo depende.\n - Path: fieldMetadata[].conditionalRequired\n Category: dependency\n Kind: expression\n Description: Condição Json Logic para obrigatoriedade declarativa.\n - Path: fieldMetadata[].conditionalDisplay\n Category: dependency\n Kind: expression\n Description: Condição Json Logic para visibilidade declarativa.\n - Path: fieldMetadata[].dependencyFilterMap\n Category: dependency\n Kind: object\n Description: Mapeamento de filtro baseado na dependência.\n - Path: fieldMetadata[].dependencyValuePath\n Category: dependency\n Kind: string\n Description: Caminho no valor da dependência.\n - Path: fieldMetadata[].dependencyMergeStrategy\n Category: dependency\n Kind: enum\n Description: Estratégia de merge dos dados carregados.\n - Path: fieldMetadata[].dependencyLoadOnChange\n Category: dependency\n Kind: enum\n Description: Quando recarregar dependência.\n - Path: fieldMetadata[].resetOnDependentChange\n Category: dependency\n Kind: boolean\n Description: Zera valor se dependência mudar.\n - Path: fieldMetadata[].enableDependencyCascade\n Category: dependency\n Kind: boolean\n Description: Habilita/desabilita cascata nativa de dependências entre campos.\n - Path: fieldMetadata[].dependencyDebounceMs\n Category: dependency\n Kind: number\n Description: Delay para reagir à mudança de dependência.\n - Path: fieldMetadata[].suppressInlineErrorsOnCascade\n Category: dependency\n Kind: boolean\n Description: Suprime erros inline durante cascata.\n - Path: fieldMetadata[].transformDisplayValue\n Category: transform\n Kind: expression\n Description: Transforma valor para exibição.\n - Path: fieldMetadata[].transformSaveValue\n Category: transform\n Kind: expression\n Description: Transforma valor para salvar.\n - Path: fieldMetadata[].textTransformApply\n Category: transform\n Kind: enum\n Description: Quando aplicar transformação de texto.\n - Path: fieldMetadata[].inlineEditing\n Category: behavior\n Kind: boolean\n Description: Permite edição inline (tabelas).\n - Path: fieldMetadata[].unique\n Category: validation\n Kind: boolean\n Description: Valida unicidade no backend.\n - Path: fieldMetadata[].readOnly\n Category: behavior\n Kind: boolean\n Description: Campo somente leitura.\n - Path: fieldMetadata[].disabled\n Category: behavior\n Kind: boolean\n Description: Campo desabilitado.\n - Path: fieldMetadata[].defaultValue\n Category: data\n Kind: object\n Description: Valor inicial do campo.\n - Path: fieldMetadata[].ariaLabel\n Category: accessibility\n Kind: string\n Description: Label para leitores de tela.\n - Path: fieldMetadata[].ariaDescribedBy\n Category: accessibility\n Kind: string\n Description: IDs de descrição acessível.\n - Path: fieldMetadata[].tabIndex\n Category: accessibility\n Kind: number\n Description: Ordem de tabulacao para teclado.\n - Path: fieldMetadata[].accessKey\n Category: accessibility\n Kind: string\n Description: Atalho de teclado (accessKey).\nComponent Capabilities:\n - Path: inputs.resourcePath\n Category: inputs\n Kind: string\n Description: Caminho do recurso para carregar/salvar dados via CRUD.\n - Path: inputs.resourceId\n Category: inputs\n Kind: string\n Description: ID do registro atual (string ou number).\n - Path: inputs.initialValue\n Category: inputs\n Kind: object\n Description: Valores iniciais locais para campos host-authored ou complementares.\n - Path: inputs.mode\n Category: inputs\n Kind: enum\n Description: Modo do formulario (create/edit/view).\n - Path: inputs.config\n Category: inputs\n Kind: object\n Description: Configuracao completa do formulario (FormConfig).\n - Path: inputs.schemaSource\n Category: inputs\n Kind: enum\n Description: Fonte de schema para construcao automatica (resource/filter).\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 - 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 - 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 - Path: inputs.submitUrl\n Category: inputs\n Kind: string\n Description: Endpoint canonico de submit publicado por surface/action.\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 - 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 - Path: inputs.enableCustomization\n Category: inputs\n Kind: boolean\n Description: Habilita a edicao de layout/configuracao no editor.\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 - Path: inputs.formId\n Category: inputs\n Kind: string\n Description: ID persistente para salvar configuracoes e preferencias.\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 - Path: inputs.layout\n Category: inputs\n Kind: object\n Description: Layout legado (FormLayout). Preferir inputs.config + sections.\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 - 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 - Path: inputs.layoutPolicy.source\n Category: inputs\n Kind: enum\n Description: Define se o layout vem de configuracao authorada ou do schema.\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 - Path: inputs.layoutPolicy.intent\n Category: inputs\n Kind: enum\n Description: Intencao da surface: detalhe/apresentacao ou comando/editavel.\n - Path: inputs.layoutPolicy.lifecycle\n Category: inputs\n Kind: enum\n Description: Ciclo de materializacao do layout schema-driven.\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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - Path: inputs.layoutPolicy.detailSummary.maxFields\n Category: inputs\n Kind: number\n Description: Limite maximo de campos materializados no primeiro painel compacto.\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 - 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 - 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 - 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 - 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 - 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 - Path: inputs.backConfig\n Category: inputs\n Kind: object\n Description: Configuracao de navegacao/retorno (BackConfig).\n - Path: inputs.backConfig.strategy\n Category: inputs\n Kind: enum\n Description: Estrategia de retorno (auto/close/navigate).\n - Path: inputs.backConfig.returnTo\n Category: inputs\n Kind: string\n Description: Rota para retornar quando strategy=navigate.\n - Path: inputs.backConfig.confirmOnDirty\n Category: inputs\n Kind: boolean\n Description: Solicita confirmacao ao sair com mudancas nao salvas.\n - Path: inputs.hooks\n Category: inputs\n Kind: object\n Description: Declaracoes de hooks fornecidas diretamente ao componente.\n - Path: inputs.hooks.beforeInit[]\n Category: hooks\n Kind: array\n Description: Hooks executados antes da inicializacao.\n - Path: inputs.hooks.afterInit[]\n Category: hooks\n Kind: array\n Description: Hooks executados apos a inicializacao.\n - Path: inputs.hooks.beforeValidate[]\n Category: hooks\n Kind: array\n Description: Hooks executados antes da validacao.\n - Path: inputs.hooks.afterValidate[]\n Category: hooks\n Kind: array\n Description: Hooks executados apos a validacao.\n - Path: inputs.hooks.beforeSubmit[]\n Category: hooks\n Kind: array\n Description: Hooks executados antes do submit.\n - Path: inputs.hooks.afterSubmit[]\n Category: hooks\n Kind: array\n Description: Hooks executados apos o submit.\n - Path: inputs.hooks.onError[]\n Category: hooks\n Kind: array\n Description: Hooks executados em erros de submit/validacao.\n - Path: inputs.removeEmptyContainersOnSave\n Category: inputs\n Kind: boolean\n Description: Remove containers vazios ao salvar configuracao.\n - Path: inputs.reactiveValidation\n Category: inputs\n Kind: boolean\n Description: Ativa validacao reativa (afterValidate em valueChanges).\n - Path: inputs.reactiveValidationDebounceMs\n Category: inputs\n Kind: number\n Description: Debounce em ms para validacao reativa.\n - Path: inputs.notifyIfOutdated\n Category: inputs\n Kind: enum\n Description: Canal de notificacao para schema desatualizado.\n - Path: inputs.snoozeMs\n Category: inputs\n Kind: number\n Description: Duracao do snooze para alertas de schema.\n - Path: inputs.autoOpenSettingsOnOutdated\n Category: inputs\n Kind: boolean\n Description: Abre automaticamente o editor ao detectar schema desatualizado.\n - Path: inputs.readonlyModeGlobal\n Category: inputs\n Kind: boolean\n Description: Forca modo somente leitura global.\n - Path: inputs.disabledModeGlobal\n Category: inputs\n Kind: boolean\n Description: Forca modo desabilitado global.\n - Path: inputs.presentationModeGlobal\n Category: inputs\n Kind: boolean\n Description: Ativa modo de apresentacao global (somente view).\n - Path: inputs.visibleGlobal\n Category: inputs\n Kind: boolean\n Description: Forca visibilidade global dos campos.\n - Path: inputs.customEndpoints\n Category: inputs\n Kind: object\n Description: Override de endpoints CRUD (EndpointConfig).\n - Path: inputs.customEndpoints.getAll\n Category: inputs\n Kind: string\n Description: Endpoint customizado para listar registros.\n - Path: inputs.customEndpoints.getById\n Category: inputs\n Kind: string\n Description: Endpoint customizado para obter registro por ID.\n - Path: inputs.customEndpoints.create\n Category: inputs\n Kind: string\n Description: Endpoint customizado para criar registro.\n - Path: inputs.customEndpoints.update\n Category: inputs\n Kind: string\n Description: Endpoint customizado para atualizar registro.\n - Path: inputs.customEndpoints.delete\n Category: inputs\n Kind: string\n Description: Endpoint customizado para deletar registro.\n - Path: inputs.customEndpoints.filter\n Category: inputs\n Kind: string\n Description: Endpoint customizado para filtro.\n - Path: inputs.customEndpoints.schema\n Category: inputs\n Kind: string\n Description: Endpoint customizado para schemas.\n - Path: inputs.config.presentation\n Category: appearance\n Kind: object\n Description: Preferencias visuais persistidas no config.\n - Path: inputs.config.presentation.labelFontSize\n Category: appearance\n Kind: number\n Description: Tamanho da fonte do label (px).\n - Path: inputs.config.presentation.valueFontSize\n Category: appearance\n Kind: number\n Description: Tamanho da fonte do valor (px).\n - Path: inputs.config.presentation.labelPosition\n Category: appearance\n Kind: enum\n Description: Posicionamento do label (above/left).\n - Path: inputs.config.presentation.compact\n Category: appearance\n Kind: boolean\n Description: Modo compacto de apresentacao.\n - Path: inputs.config.presentation.density\n Category: appearance\n Kind: enum\n Description: Densidade visual global.\n - Path: inputs.config.presentation.labelWidth\n Category: appearance\n Kind: number\n Description: Largura do label (px).\n - Path: inputs.config.presentation.labelAlign\n Category: appearance\n Kind: enum\n Description: Alinhamento do label.\n - Path: inputs.config.presentation.valueAlign\n Category: appearance\n Kind: enum\n Description: Alinhamento do valor.\n - Path: outputs.formSubmit\n Category: outputs\n Kind: object\n Description: Evento emitido no submit do formulario.\n - Path: outputs.formCancel\n Category: outputs\n Kind: object\n Description: Evento emitido ao cancelar.\n - Path: outputs.formReset\n Category: outputs\n Kind: object\n Description: Evento emitido ao resetar o formulario.\n - Path: outputs.configChange\n Category: outputs\n Kind: object\n Description: Evento emitido quando a configuracao muda.\n - Path: outputs.formReady\n Category: outputs\n Kind: object\n Description: Evento emitido quando o formulario esta pronto.\n - Path: outputs.valueChange\n Category: outputs\n Kind: object\n Description: Evento emitido quando o valor do formulario muda.\n - Path: outputs.syncCompleted\n Category: outputs\n Kind: object\n Description: Evento emitido ao completar sincronizacao com schema.\n - Path: outputs.initializationError\n Category: outputs\n Kind: object\n Description: Evento emitido quando ocorre erro na inicializacao.\n - Path: outputs.enableCustomizationChange\n Category: outputs\n Kind: object\n Description: Evento emitido quando o modo de customizacao muda.\n - Path: outputs.customAction\n Category: outputs\n Kind: object\n Description: Evento emitido ao disparar acao customizada.\n - Path: outputs.actionConfirmation\n Category: outputs\n Kind: object\n Description: Evento emitido quando acao requer confirmacao.\n - Path: outputs.schemaStatusChange\n Category: outputs\n Kind: object\n Description: Evento emitido quando o status do schema muda.\nCapability Notes:\n - Este catalogo descreve inputs e outputs do componente.\n - O objeto inputs.config segue o schema de FormConfig (veja form-ai-capabilities).\n - inputs.config.presentation e uma extensao de runtime aplicada pelo componente.\n - Preferir FormConfig (sections/fieldMetadata) em vez do layout legado (fieldsets).\n - Use inputs.editorialContext apenas para override de contexto editorial do host; a precedencia final e runtime < config.editorialContext < host.\n - rich content editorial hospedado pelo form pode ser renderizado em tres slots semanticos: before, beforeActions e after.\n",
|
|
11229
|
+
"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.",
|
|
10970
11230
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
|
|
10971
|
-
"contentHash": "
|
|
11231
|
+
"contentHash": "057e50c9848029496159e1fb7db4433e6d9f441e64f6f711fdd3e10eacef19fa",
|
|
10972
11232
|
"sourceKind": "component_definition",
|
|
10973
11233
|
"sourceId": "praxis-dynamic-form-dialog-host",
|
|
10974
11234
|
"corpusVersion": "1.0.0"
|
|
10975
11235
|
},
|
|
10976
11236
|
{
|
|
10977
11237
|
"chunkIndex": 2,
|
|
11238
|
+
"chunkKind": "capabilities",
|
|
11239
|
+
"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\".",
|
|
11240
|
+
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
|
|
11241
|
+
"contentHash": "7bd1ce34bf36df588bb3fae515d854a24b59a8fd48a9d58b2f8ecaae51ea105b",
|
|
11242
|
+
"sourceKind": "component_definition",
|
|
11243
|
+
"sourceId": "praxis-dynamic-form-dialog-host",
|
|
11244
|
+
"corpusVersion": "1.0.0"
|
|
11245
|
+
},
|
|
11246
|
+
{
|
|
11247
|
+
"chunkIndex": 3,
|
|
11248
|
+
"chunkKind": "capabilities",
|
|
11249
|
+
"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.",
|
|
11250
|
+
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
|
|
11251
|
+
"contentHash": "f34d296ee57e962539a19f213748c29fb83ce6cfa25db7beb9506f80822ca00e",
|
|
11252
|
+
"sourceKind": "component_definition",
|
|
11253
|
+
"sourceId": "praxis-dynamic-form-dialog-host",
|
|
11254
|
+
"corpusVersion": "1.0.0"
|
|
11255
|
+
},
|
|
11256
|
+
{
|
|
11257
|
+
"chunkIndex": 4,
|
|
11258
|
+
"chunkKind": "capabilities",
|
|
11259
|
+
"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.",
|
|
11260
|
+
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
|
|
11261
|
+
"contentHash": "9cfad48adaa90e88eb8231e6c56ea92199382bde6a062c94b11cc802f209516a",
|
|
11262
|
+
"sourceKind": "component_definition",
|
|
11263
|
+
"sourceId": "praxis-dynamic-form-dialog-host",
|
|
11264
|
+
"corpusVersion": "1.0.0"
|
|
11265
|
+
},
|
|
11266
|
+
{
|
|
11267
|
+
"chunkIndex": 5,
|
|
11268
|
+
"chunkKind": "capabilities",
|
|
11269
|
+
"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`.",
|
|
11270
|
+
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
|
|
11271
|
+
"contentHash": "b9d96b46a7eec674ad9cd481a6765bab68a58d01ecaf6114efa20d70502d0104",
|
|
11272
|
+
"sourceKind": "component_definition",
|
|
11273
|
+
"sourceId": "praxis-dynamic-form-dialog-host",
|
|
11274
|
+
"corpusVersion": "1.0.0"
|
|
11275
|
+
},
|
|
11276
|
+
{
|
|
11277
|
+
"chunkIndex": 6,
|
|
11278
|
+
"chunkKind": "capabilities",
|
|
11279
|
+
"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.",
|
|
11280
|
+
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
|
|
11281
|
+
"contentHash": "0d30c9ed381b5a69050e4922828ae287af246f0a927e7925cf1b0aa68e33fbb5",
|
|
11282
|
+
"sourceKind": "component_definition",
|
|
11283
|
+
"sourceId": "praxis-dynamic-form-dialog-host",
|
|
11284
|
+
"corpusVersion": "1.0.0"
|
|
11285
|
+
},
|
|
11286
|
+
{
|
|
11287
|
+
"chunkIndex": 7,
|
|
11288
|
+
"chunkKind": "capabilities",
|
|
11289
|
+
"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.",
|
|
11290
|
+
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
|
|
11291
|
+
"contentHash": "fd4b705c0e4b7d01233e4fe51a75532848dd9e3fd9ca5812f8faada5ee9f1fe0",
|
|
11292
|
+
"sourceKind": "component_definition",
|
|
11293
|
+
"sourceId": "praxis-dynamic-form-dialog-host",
|
|
11294
|
+
"corpusVersion": "1.0.0"
|
|
11295
|
+
},
|
|
11296
|
+
{
|
|
11297
|
+
"chunkIndex": 8,
|
|
11298
|
+
"chunkKind": "capabilities",
|
|
11299
|
+
"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.",
|
|
11300
|
+
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
|
|
11301
|
+
"contentHash": "680baee6a38106f22c4710309b6d65ef7e59d1ee08bb65cca97f004070a99d0c",
|
|
11302
|
+
"sourceKind": "component_definition",
|
|
11303
|
+
"sourceId": "praxis-dynamic-form-dialog-host",
|
|
11304
|
+
"corpusVersion": "1.0.0"
|
|
11305
|
+
},
|
|
11306
|
+
{
|
|
11307
|
+
"chunkIndex": 9,
|
|
11308
|
+
"chunkKind": "capabilities",
|
|
11309
|
+
"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.",
|
|
11310
|
+
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
|
|
11311
|
+
"contentHash": "02f3921c10fb0dd88775888b7143c2cad0a14ccd228d35ea95cdb587a28b3c3f",
|
|
11312
|
+
"sourceKind": "component_definition",
|
|
11313
|
+
"sourceId": "praxis-dynamic-form-dialog-host",
|
|
11314
|
+
"corpusVersion": "1.0.0"
|
|
11315
|
+
},
|
|
11316
|
+
{
|
|
11317
|
+
"chunkIndex": 10,
|
|
11318
|
+
"chunkKind": "capabilities",
|
|
11319
|
+
"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.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.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.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.",
|
|
11320
|
+
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
|
|
11321
|
+
"contentHash": "418dd77e4d37bcf80ba1fe9c405b691cfc53416dc9364ce400449da2b4749731",
|
|
11322
|
+
"sourceKind": "component_definition",
|
|
11323
|
+
"sourceId": "praxis-dynamic-form-dialog-host",
|
|
11324
|
+
"corpusVersion": "1.0.0"
|
|
11325
|
+
},
|
|
11326
|
+
{
|
|
11327
|
+
"chunkIndex": 11,
|
|
11328
|
+
"chunkKind": "capabilities",
|
|
11329
|
+
"content": "Component 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.\n\nComponent 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.",
|
|
11330
|
+
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
|
|
11331
|
+
"contentHash": "a8b570c3523646026b9ed80c42c25ab891a056b77ece8f13aff58dd5469bae1e",
|
|
11332
|
+
"sourceKind": "component_definition",
|
|
11333
|
+
"sourceId": "praxis-dynamic-form-dialog-host",
|
|
11334
|
+
"corpusVersion": "1.0.0"
|
|
11335
|
+
},
|
|
11336
|
+
{
|
|
11337
|
+
"chunkIndex": 12,
|
|
11338
|
+
"chunkKind": "capabilities",
|
|
11339
|
+
"content": "Component 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.",
|
|
11340
|
+
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
|
|
11341
|
+
"contentHash": "f170eb134e370e2fe148ce677d5ff969edeb7db977c11b298cbefd6c393b4a27",
|
|
11342
|
+
"sourceKind": "component_definition",
|
|
11343
|
+
"sourceId": "praxis-dynamic-form-dialog-host",
|
|
11344
|
+
"corpusVersion": "1.0.0"
|
|
11345
|
+
},
|
|
11346
|
+
{
|
|
11347
|
+
"chunkIndex": 13,
|
|
10978
11348
|
"chunkKind": "context_pack",
|
|
10979
|
-
"content": "{\
|
|
11349
|
+
"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.mode.set\",\"intentExamples\":[\"modo\",\"mode\",\"create\",\"edit\",\"view\"],\"patchTemplate\":{\"inputs\":{\"mode\":\"{{value}}\"}}},{\"id\":\"inputs.schemaSource.set\",\"intentExamples\":[\"schema source\",\"schema\",\"resource\",\"filter\"],\"patchTemplate\":{\"inputs\":{\"schemaSource\":\"{{value}}\"}}},{\"id\":\"inputs.layoutPolicy.schemaDetail\",\"intentExamples\":[\"layout schema detail\",\"detalhe agrupado\",\"readonly agrupado\"],\"patchTemplate\":{\"inputs\":{\"layoutPolicy\":{\"source\":\"schema\",\"intent\":\"detail\",\"preset\":\"compactPresentation\",\"lifecycle\":\"live\",\"persistence\":\"transient\",\"schemaOperation\":\"detail\",\"schemaType\":\"response\"}}}},{\"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.*.\",\"Use mode=create|edit|view and schemaSource=resource|filter.\"]}}",
|
|
10980
11350
|
"sourcePointer": "projects/praxis-crud/src/lib/ai/dynamic-form-dialog-host-context-pack.ts",
|
|
10981
|
-
"contentHash": "
|
|
11351
|
+
"contentHash": "5eb83ce53e7f0264c0cf7689d5a2e885af6c99376421902ad181406223fb275a",
|
|
10982
11352
|
"sourceKind": "component_definition",
|
|
10983
11353
|
"sourceId": "praxis-dynamic-form-dialog-host",
|
|
10984
11354
|
"corpusVersion": "1.0.0"
|