@praxisui/dynamic-form 9.0.4-rc.9 → 9.0.4
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/README.md +20 -0
- package/ai/component-registry.json +162 -95
- package/docs/schema-driven-layout-materialization-rfc.md +19 -1
- package/fesm2022/praxisui-dynamic-form.mjs +142 -43
- package/package.json +8 -8
- package/src/lib/praxis-dynamic-form.json-api.md +11 -6
- package/types/praxisui-dynamic-form.d.ts +5 -3
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
|
-
"generatedAt": "2026-08-
|
|
3
|
+
"generatedAt": "2026-08-11T17:36:05.628Z",
|
|
4
4
|
"packageName": "@praxisui/dynamic-form",
|
|
5
|
-
"packageVersion": "9.0.4
|
|
5
|
+
"packageVersion": "9.0.4",
|
|
6
6
|
"sourceRegistry": "praxis-component-registry-ingestion",
|
|
7
7
|
"sourceRegistryVersion": "1.0.0",
|
|
8
8
|
"componentCount": 2,
|
|
@@ -152,7 +152,7 @@
|
|
|
152
152
|
"name": "configPersistenceStrategy",
|
|
153
153
|
"type": "'local-first' | 'input-first'",
|
|
154
154
|
"required": false,
|
|
155
|
-
"description": "Define se a configuracao local persistida ou
|
|
155
|
+
"description": "Define se a configuracao local persistida ou os inputs do host tem precedencia; input-first preserva inclusive o mode explicito contra preferencias persistidas.",
|
|
156
156
|
"default": "local-first"
|
|
157
157
|
},
|
|
158
158
|
{
|
|
@@ -4183,6 +4183,17 @@
|
|
|
4183
4183
|
"description": "Preset usado somente na criacao inicial de FormConfig a partir de schema/metadata.",
|
|
4184
4184
|
"safetyNotes": "Nao reprocessa layouts ja persistidos ou authorados."
|
|
4185
4185
|
},
|
|
4186
|
+
{
|
|
4187
|
+
"path": "inputs.configPersistenceStrategy",
|
|
4188
|
+
"category": "inputs",
|
|
4189
|
+
"valueKind": "enum",
|
|
4190
|
+
"allowedValues": [
|
|
4191
|
+
"local-first",
|
|
4192
|
+
"input-first"
|
|
4193
|
+
],
|
|
4194
|
+
"description": "Define se preferências locais persistidas ou o contrato explícito do host governam a materialização corrente.",
|
|
4195
|
+
"safetyNotes": "Use input-first em commands e surfaces transitórias; isso impede que mode e estados operacionais antigos sobrescrevam o schema atual."
|
|
4196
|
+
},
|
|
4186
4197
|
{
|
|
4187
4198
|
"path": "inputs.layoutPolicy",
|
|
4188
4199
|
"category": "inputs",
|
|
@@ -4253,6 +4264,24 @@
|
|
|
4253
4264
|
"description": "Define como uma linha groupedCommand com um unico campo usa o espaco restante. O default medium-and-wide expande spans 6 ou 8 e preserva campos compactos.",
|
|
4254
4265
|
"safetyNotes": "Use preserve quando o espaco vazio for intencional; use all apenas quando ate campos xs/sm devam ocupar a linha completa."
|
|
4255
4266
|
},
|
|
4267
|
+
{
|
|
4268
|
+
"path": "inputs.layoutPolicy.groupedCommand.contextFields",
|
|
4269
|
+
"category": "inputs",
|
|
4270
|
+
"valueKind": "array",
|
|
4271
|
+
"description": "Campos canônicos do request cujo valor vem do contexto da surface. Eles permanecem no FormGroup e no payload, sem renderizar controles redundantes.",
|
|
4272
|
+
"safetyNotes": "Use somente para campos realmente hidratados por initialValue ou leitura da entidade; nunca use para esconder dados que a pessoa ainda precisa informar."
|
|
4273
|
+
},
|
|
4274
|
+
{
|
|
4275
|
+
"path": "inputs.layoutPolicy.groupedCommand.partialRowStrategy",
|
|
4276
|
+
"category": "inputs",
|
|
4277
|
+
"valueKind": "enum",
|
|
4278
|
+
"allowedValues": [
|
|
4279
|
+
"preserve",
|
|
4280
|
+
"fill-compatible"
|
|
4281
|
+
],
|
|
4282
|
+
"description": "Define se linhas parciais com dois campos ou mais preservam os spans canônicos ou redistribuem apenas campos compatíveis para completar 12 colunas no breakpoint atual.",
|
|
4283
|
+
"safetyNotes": "fill-compatible é uma projeção transitória do runtime: não altera x-ui.width nem persiste sections. Controles compactos, uploads e tipos desconhecidos preservam a largura canônica."
|
|
4284
|
+
},
|
|
4256
4285
|
{
|
|
4257
4286
|
"path": "inputs.layoutPolicy.detailSummary",
|
|
4258
4287
|
"category": "inputs",
|
|
@@ -6141,7 +6170,7 @@
|
|
|
6141
6170
|
"componentId": "praxis-dynamic-form",
|
|
6142
6171
|
"ownerPackage": "@praxisui/dynamic-form",
|
|
6143
6172
|
"configSchemaId": "FormConfig",
|
|
6144
|
-
"manifestVersion": "1.5.
|
|
6173
|
+
"manifestVersion": "1.5.2",
|
|
6145
6174
|
"runtimeInputs": [
|
|
6146
6175
|
{
|
|
6147
6176
|
"name": "showAiAssistant",
|
|
@@ -6173,6 +6202,15 @@
|
|
|
6173
6202
|
],
|
|
6174
6203
|
"description": "Modo de operação"
|
|
6175
6204
|
},
|
|
6205
|
+
{
|
|
6206
|
+
"name": "configPersistenceStrategy",
|
|
6207
|
+
"type": "string",
|
|
6208
|
+
"allowedValues": [
|
|
6209
|
+
"local-first",
|
|
6210
|
+
"input-first"
|
|
6211
|
+
],
|
|
6212
|
+
"description": "Precedência entre configuração persistida e contrato explícito do host. Use input-first em dialogs e surfaces transitórias governadas por schema para preservar mode e estados operacionais publicados pelo servidor."
|
|
6213
|
+
},
|
|
6176
6214
|
{
|
|
6177
6215
|
"name": "generatedLayoutPreset",
|
|
6178
6216
|
"type": "string",
|
|
@@ -6185,7 +6223,7 @@
|
|
|
6185
6223
|
{
|
|
6186
6224
|
"name": "layoutPolicy",
|
|
6187
6225
|
"type": "DynamicFormLayoutPolicy",
|
|
6188
|
-
"description": "Politica opt-in para layout schema-driven transient. Use source=schema apenas quando o backend schema for a fonte canonica do agrupamento; use detailSummary para seleção de campos e densidade responsiva do resumo read-only compacto sem FormConfig.sections locais. Quando o resumo precisar vencer x-ui.width publicado para outras surfaces, use detailSummary.widthPrecedence=summary. Em groupedCommand, orphanFieldExpansion governa linhas com um unico campo;
|
|
6226
|
+
"description": "Politica opt-in para layout schema-driven transient. Use source=schema apenas quando o backend schema for a fonte canonica do agrupamento; use detailSummary para seleção de campos e densidade responsiva do resumo read-only compacto sem FormConfig.sections locais. Quando o resumo precisar vencer x-ui.width publicado para outras surfaces, use detailSummary.widthPrecedence=summary. Em groupedCommand, orphanFieldExpansion governa linhas com um unico campo; partialRowStrategy=fill-compatible projeta spans compatíveis para completar a linha no breakpoint atual sem alterar x-ui.width ou persistir sections; contextFields identifica campos do request hidratados pela surface que permanecem no payload sem criar controles redundantes."
|
|
6189
6227
|
},
|
|
6190
6228
|
{
|
|
6191
6229
|
"name": "fieldIconPolicy",
|
|
@@ -8800,9 +8838,9 @@
|
|
|
8800
8838
|
{
|
|
8801
8839
|
"chunkIndex": 10,
|
|
8802
8840
|
"chunkKind": "capabilities",
|
|
8803
|
-
"content": "Schema Capability:\n - Path: fieldMetadata[].transformDisplayValue\n Category: transform\n Kind: expression\n Description: Transforma valor para exibição.\n\nSchema Capability:\n - Path: fieldMetadata[].transformSaveValue\n Category: transform\n Kind: expression\n Description: Transforma valor para salvar.\n\nSchema Capability:\n - Path: fieldMetadata[].textTransformApply\n Category: transform\n Kind: enum\n Description: Quando aplicar transformação de texto.\n\nSchema Capability:\n - Path: fieldMetadata[].inlineEditing\n Category: behavior\n Kind: boolean\n Description: Permite edição inline (tabelas).\n\nSchema Capability:\n - Path: fieldMetadata[].unique\n Category: validation\n Kind: boolean\n Description: Valida unicidade no backend.\n\nSchema Capability:\n - Path: fieldMetadata[].readOnly\n Category: behavior\n Kind: boolean\n Description: Campo somente leitura.\n\nSchema Capability:\n - Path: fieldMetadata[].disabled\n Category: behavior\n Kind: boolean\n Description: Campo desabilitado.\n\nSchema Capability:\n - Path: fieldMetadata[].defaultValue\n Category: data\n Kind: object\n Description: Valor inicial do campo.\n\nSchema Capability:\n - Path: fieldMetadata[].ariaLabel\n Category: accessibility\n Kind: string\n Description: Label para leitores de tela.\n\nSchema Capability:\n - Path: fieldMetadata[].ariaDescribedBy\n Category: accessibility\n Kind: string\n Description: IDs de descrição acessível.\n\nSchema Capability:\n - Path: fieldMetadata[].tabIndex\n Category: accessibility\n Kind: number\n Description: Ordem de tabulacao para teclado.\n\nSchema Capability:\n - Path: fieldMetadata[].accessKey\n Category: accessibility\n Kind: string\n Description: Atalho de teclado (accessKey).\n\nComponent Capability:\n - Path: inputs.resourcePath\n Category: inputs\n Kind: string\n Description: Caminho do recurso para carregar/salvar dados via CRUD.\n\nComponent Capability:\n - Path: inputs.resourceId\n Category: inputs\n Kind: string\n Description: ID do registro atual (string ou number).\n\nComponent Capability:\n - Path: inputs.initialValue\n Category: inputs\n Kind: object\n Description: Valores iniciais locais para campos host-authored ou complementares.\n\nComponent Capability:\n - Path: inputs.mode\n Category: inputs\n Kind: enum\n Description: Modo do formulario (create/edit/view).\n\nComponent Capability:\n - Path: inputs.config\n Category: inputs\n Kind: object\n Description: Configuracao completa do formulario (FormConfig).\n\nComponent Capability:\n - Path: inputs.schemaSource\n Category: inputs\n Kind: enum\n Description: Fonte de schema para construcao automatica (resource/filter).\n\nComponent Capability:\n - Path: inputs.schemaUrl\n Category: inputs\n Kind: string\n Description: Schema canonico explicito publicado pelo backend para hosts que seguem surfaces/actions/capabilities.\n\nComponent Capability:\n - Path: inputs.readUrl\n Category: inputs\n Kind: string\n Description: Endpoint canonico de leitura publicado por surface VIEW/READ_PROJECTION para hidratar a entidade exibida.\n\nComponent Capability:\n - Path: inputs.apiEndpointKey\n Category: inputs\n Kind: string\n Description: Endpoint canonico usado para resolver schemaUrl, readUrl e submitUrl relativos em hosts destacados.\n\nComponent Capability:\n - Path: inputs.submitUrl\n Category: inputs\n Kind: string\n Description: Endpoint canonico de submit publicado por surface/action.\n\nComponent Capability:\n - Path: inputs.submitMethod\n Category: inputs\n Kind: enum\n Description: Metodo HTTP canonico para o submit quando o backend publica operacao explicita.\n\nComponent Capability:\n - Path: inputs.submitIdempotencyKey\n Category: inputs\n Kind: string\n Description: Identidade estavel da tentativa de comando, materializada a partir da politica execution da action.\n\nComponent Capability:\n - Path: inputs.submitCorrelationId\n Category: inputs\n Kind: string\n Description: Identificador de correlacao governado para rastreabilidade ponta a ponta do comando.\n\nComponent Capability:\n - Path: inputs.submitResourceVersion\n Category: inputs\n Kind: string\n Description: Versao persistida esperada, transportada como If-Match quando exigida pela action.\n\nComponent Capability:\n - Path: inputs.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.groupedCommand.orphanFieldExpansion\n Category: inputs\n Kind: enum\n Description: Define como uma linha groupedCommand com um unico campo usa o espaco restante. O default medium-and-wide expande spans 6 ou 8 e preserva campos compactos.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.
|
|
8841
|
+
"content": "Schema Capability:\n - Path: fieldMetadata[].transformDisplayValue\n Category: transform\n Kind: expression\n Description: Transforma valor para exibição.\n\nSchema Capability:\n - Path: fieldMetadata[].transformSaveValue\n Category: transform\n Kind: expression\n Description: Transforma valor para salvar.\n\nSchema Capability:\n - Path: fieldMetadata[].textTransformApply\n Category: transform\n Kind: enum\n Description: Quando aplicar transformação de texto.\n\nSchema Capability:\n - Path: fieldMetadata[].inlineEditing\n Category: behavior\n Kind: boolean\n Description: Permite edição inline (tabelas).\n\nSchema Capability:\n - Path: fieldMetadata[].unique\n Category: validation\n Kind: boolean\n Description: Valida unicidade no backend.\n\nSchema Capability:\n - Path: fieldMetadata[].readOnly\n Category: behavior\n Kind: boolean\n Description: Campo somente leitura.\n\nSchema Capability:\n - Path: fieldMetadata[].disabled\n Category: behavior\n Kind: boolean\n Description: Campo desabilitado.\n\nSchema Capability:\n - Path: fieldMetadata[].defaultValue\n Category: data\n Kind: object\n Description: Valor inicial do campo.\n\nSchema Capability:\n - Path: fieldMetadata[].ariaLabel\n Category: accessibility\n Kind: string\n Description: Label para leitores de tela.\n\nSchema Capability:\n - Path: fieldMetadata[].ariaDescribedBy\n Category: accessibility\n Kind: string\n Description: IDs de descrição acessível.\n\nSchema Capability:\n - Path: fieldMetadata[].tabIndex\n Category: accessibility\n Kind: number\n Description: Ordem de tabulacao para teclado.\n\nSchema Capability:\n - Path: fieldMetadata[].accessKey\n Category: accessibility\n Kind: string\n Description: Atalho de teclado (accessKey).\n\nComponent Capability:\n - Path: inputs.resourcePath\n Category: inputs\n Kind: string\n Description: Caminho do recurso para carregar/salvar dados via CRUD.\n\nComponent Capability:\n - Path: inputs.resourceId\n Category: inputs\n Kind: string\n Description: ID do registro atual (string ou number).\n\nComponent Capability:\n - Path: inputs.initialValue\n Category: inputs\n Kind: object\n Description: Valores iniciais locais para campos host-authored ou complementares.\n\nComponent Capability:\n - Path: inputs.mode\n Category: inputs\n Kind: enum\n Description: Modo do formulario (create/edit/view).\n\nComponent Capability:\n - Path: inputs.config\n Category: inputs\n Kind: object\n Description: Configuracao completa do formulario (FormConfig).\n\nComponent Capability:\n - Path: inputs.schemaSource\n Category: inputs\n Kind: enum\n Description: Fonte de schema para construcao automatica (resource/filter).\n\nComponent Capability:\n - Path: inputs.schemaUrl\n Category: inputs\n Kind: string\n Description: Schema canonico explicito publicado pelo backend para hosts que seguem surfaces/actions/capabilities.\n\nComponent Capability:\n - Path: inputs.readUrl\n Category: inputs\n Kind: string\n Description: Endpoint canonico de leitura publicado por surface VIEW/READ_PROJECTION para hidratar a entidade exibida.\n\nComponent Capability:\n - Path: inputs.apiEndpointKey\n Category: inputs\n Kind: string\n Description: Endpoint canonico usado para resolver schemaUrl, readUrl e submitUrl relativos em hosts destacados.\n\nComponent Capability:\n - Path: inputs.submitUrl\n Category: inputs\n Kind: string\n Description: Endpoint canonico de submit publicado por surface/action.\n\nComponent Capability:\n - Path: inputs.submitMethod\n Category: inputs\n Kind: enum\n Description: Metodo HTTP canonico para o submit quando o backend publica operacao explicita.\n\nComponent Capability:\n - Path: inputs.submitIdempotencyKey\n Category: inputs\n Kind: string\n Description: Identidade estavel da tentativa de comando, materializada a partir da politica execution da action.\n\nComponent Capability:\n - Path: inputs.submitCorrelationId\n Category: inputs\n Kind: string\n Description: Identificador de correlacao governado para rastreabilidade ponta a ponta do comando.\n\nComponent Capability:\n - Path: inputs.submitResourceVersion\n Category: inputs\n Kind: string\n Description: Versao persistida esperada, transportada como If-Match quando exigida pela action.\n\nComponent Capability:\n - Path: inputs.responseSchemaUrl\n Category: inputs\n Kind: string\n Description: Schema de resposta publicado pelo backend para inspeção diagnostica/read-only do host.\n\nComponent Capability:\n - Path: inputs.enableCustomization\n Category: inputs\n Kind: boolean\n Description: Habilita a edicao de layout/configuracao no editor.\n\nComponent Capability:\n - Path: inputs.showAiAssistant\n Category: inputs\n Kind: boolean\n Description: Mostra os gatilhos do copiloto semantico Praxis para a instancia do formulario.\n\nComponent Capability:\n - Path: inputs.formId\n Category: inputs\n Kind: string\n Description: ID persistente para salvar configuracoes e preferencias.\n\nComponent Capability:\n - Path: inputs.editorialContext\n Category: inputs\n Kind: object\n Description: Override de contexto editorial fornecido pelo host para os blocos hospedados antes/depois do formulario.\n\nComponent Capability:\n - Path: inputs.layout\n Category: inputs\n Kind: object\n Description: Layout legado (FormLayout). Preferir inputs.config + sections.\n\nComponent Capability:\n - Path: inputs.generatedLayoutPreset\n Category: inputs\n Kind: enum\n Description: Preset usado somente na criacao inicial de FormConfig a partir de schema/metadata.\n\nComponent Capability:\n - Path: inputs.configPersistenceStrategy\n Category: inputs\n Kind: enum\n Description: Define se preferências locais persistidas ou o contrato explícito do host governam a materialização corrente.\n\nComponent Capability:\n - Path: inputs.layoutPolicy\n Category: inputs\n Kind: object\n Description: Politica opt-in para materializar layout diretamente do schema atual sem depender de FormConfig.sections authoradas.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.source\n Category: inputs\n Kind: enum\n Description: Define se o layout vem de configuracao authorada ou do schema.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.preset\n Category: inputs\n Kind: enum\n Description: Preset de layout schema-driven. compactPresentation cobre detalhe read-only; groupedCommand cobre create/edit.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.intent\n Category: inputs\n Kind: enum\n Description: Intencao da surface: detalhe/apresentacao ou comando/editavel.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.lifecycle\n Category: inputs\n Kind: enum\n Description: Ciclo de materializacao do layout schema-driven.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.persistence\n Category: inputs\n Kind: enum\n Description: Define se sections geradas sao transient ou podem virar layout authorado apos detach explicito.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.groupedCommand.orphanFieldExpansion\n Category: inputs\n Kind: enum\n Description: Define como uma linha groupedCommand com um unico campo usa o espaco restante. O default medium-and-wide expande spans 6 ou 8 e preserva campos compactos.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.groupedCommand.contextFields\n Category: inputs\n Kind: array\n Description: Campos canônicos do request cujo valor vem do contexto da surface. Eles permanecem no FormGroup e no payload, sem renderizar controles redundantes.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.groupedCommand.partialRowStrategy\n Category: inputs\n Kind: enum\n Description: Define se linhas parciais com dois campos ou mais preservam os spans canônicos ou redistribuem apenas campos compatíveis para completar 12 colunas no breakpoint atual.",
|
|
8804
8842
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-component-ai-capabilities.ts",
|
|
8805
|
-
"contentHash": "
|
|
8843
|
+
"contentHash": "d8ba06c1f0006e7d3189b75d8329245c840d75d84d753c6dfccc480a4880d347",
|
|
8806
8844
|
"sourceKind": "component_definition",
|
|
8807
8845
|
"sourceId": "praxis-dynamic-form",
|
|
8808
8846
|
"corpusVersion": "1.0.0"
|
|
@@ -8810,9 +8848,9 @@
|
|
|
8810
8848
|
{
|
|
8811
8849
|
"chunkIndex": 11,
|
|
8812
8850
|
"chunkKind": "capabilities",
|
|
8813
|
-
"content": "Component Capability:\n - Path: inputs.layoutPolicy.detailSummary.excludeGroups\n Category: inputs\n Kind: array\n Description: Lista de grupos do schema que devem ficar fora do resumo read-only compacto.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.includeRoles\n Category: inputs\n Kind: array\n Description: Lista de papeis semanticos de campo que devem entrar no resumo read-only compacto.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.excludeRoles\n Category: inputs\n Kind: array\n Description: Lista de papeis semanticos de campo que devem ficar fora do resumo read-only compacto.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.maxFields\n Category: inputs\n Kind: number\n Description: Limite maximo de campos materializados no primeiro painel compacto.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.fieldPriority\n Category: inputs\n Kind: object\n Description: Mapa campo -> prioridade para ordenar campos do resumo quando o schema publica candidatos suficientes.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.groupPriority\n Category: inputs\n Kind: object\n Description: Mapa grupo -> prioridade para ordenar grupos do resumo quando o schema publica agrupamento semantico.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.columns\n Category: inputs\n Kind: number\n Description: Quantidade base de colunas para distribuir campos de resumo schema-driven sem criar FormConfig.sections locais.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.responsiveColumns\n Category: inputs\n Kind: object\n Description: Mapa de colunas por breakpoint xs/sm/md/lg/xl para detalhes read-only compactos em drawers, side sheets e desktop largo.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.widthPrecedence\n Category: inputs\n Kind: enum\n Description: Define se larguras explicitas do schema ou a densidade do resumo controlam os spans no compactPresentation read-only.\n\nComponent Capability:\n - Path: inputs.fieldIconPolicy\n Category: inputs\n Kind: enum\n Description: Controla se icones prefix/suffix dos metadados aparecem em todos os modos, apenas apresentacao, ou nunca.\n\nComponent Capability:\n - Path: inputs.backConfig\n Category: inputs\n Kind: object\n Description: Configuracao de navegacao/retorno (BackConfig).\n\nComponent Capability:\n - Path: inputs.backConfig.strategy\n Category: inputs\n Kind: enum\n Description: Estrategia de retorno (auto/close/navigate).\n\nComponent Capability:\n - Path: inputs.backConfig.returnTo\n Category: inputs\n Kind: string\n Description: Rota para retornar quando strategy=navigate.\n\nComponent Capability:\n - Path: inputs.backConfig.confirmOnDirty\n Category: inputs\n Kind: boolean\n Description: Solicita confirmacao ao sair com mudancas nao salvas.\n\nComponent Capability:\n - Path: inputs.hooks\n Category: inputs\n Kind: object\n Description: Declaracoes de hooks fornecidas diretamente ao componente.\n\nComponent Capability:\n - Path: inputs.hooks.beforeInit[]\n Category: hooks\n Kind: array\n Description: Hooks executados antes da inicializacao.\n\nComponent Capability:\n - Path: inputs.hooks.afterInit[]\n Category: hooks\n Kind: array\n Description: Hooks executados apos a inicializacao.\n\nComponent Capability:\n - Path: inputs.hooks.beforeValidate[]\n Category: hooks\n Kind: array\n Description: Hooks executados antes da validacao.\n\nComponent Capability:\n - Path: inputs.hooks.afterValidate[]\n Category: hooks\n Kind: array\n Description: Hooks executados apos a validacao.\n\nComponent Capability:\n - Path: inputs.hooks.beforeSubmit[]\n Category: hooks\n Kind: array\n Description: Hooks executados antes do submit.\n\nComponent Capability:\n - Path: inputs.hooks.afterSubmit[]\n Category: hooks\n Kind: array\n Description: Hooks executados apos o submit.\n\nComponent Capability:\n - Path: inputs.hooks.onError[]\n Category: hooks\n Kind: array\n Description: Hooks executados em erros de submit/validacao.\n\nComponent Capability:\n - Path: inputs.removeEmptyContainersOnSave\n Category: inputs\n Kind: boolean\n Description: Remove containers vazios ao salvar configuracao.\n\nComponent Capability:\n - Path: inputs.reactiveValidation\n Category: inputs\n Kind: boolean\n Description: Ativa validacao reativa (afterValidate em valueChanges).\n\nComponent Capability:\n - Path: inputs.reactiveValidationDebounceMs\n Category: inputs\n Kind: number\n Description: Debounce em ms para validacao reativa.\n\nComponent Capability:\n - Path: inputs.notifyIfOutdated\n Category: inputs\n Kind: enum\n Description: Canal de notificacao para schema desatualizado.\n\nComponent Capability:\n - Path: inputs.snoozeMs\n Category: inputs\n Kind: number\n Description: Duracao do snooze para alertas de schema.\n\nComponent Capability:\n - Path: inputs.autoOpenSettingsOnOutdated\n Category: inputs\n Kind: boolean\n Description: Abre automaticamente o editor ao detectar schema desatualizado.\n\nComponent Capability:\n - Path: inputs.readonlyModeGlobal\n Category: inputs\n Kind: boolean\n Description: Forca modo somente leitura global.\n\nComponent Capability:\n - Path: inputs.disabledModeGlobal\n Category: inputs\n Kind: boolean\n Description: Forca modo desabilitado global.\n\nComponent Capability:\n - Path: inputs.presentationModeGlobal\n Category: inputs\n Kind: boolean\n Description: Ativa modo de apresentacao global (somente view).\n\nComponent Capability:\n - Path: inputs.visibleGlobal\n Category: inputs\n Kind: boolean\n Description: Forca visibilidade global dos campos.\n\nComponent Capability:\n - Path: inputs.customEndpoints\n Category: inputs\n Kind: object\n Description: Override de endpoints CRUD (EndpointConfig).\n\nComponent Capability:\n - Path: inputs.customEndpoints.getAll\n Category: inputs\n Kind: string\n Description: Endpoint customizado para listar registros.\n\nComponent Capability:\n - Path: inputs.customEndpoints.getById\n Category: inputs\n Kind: string\n Description: Endpoint customizado para obter registro por ID.\n\nComponent Capability:\n - Path: inputs.customEndpoints.create\n Category: inputs\n Kind: string\n Description: Endpoint customizado para criar registro.\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
|
|
8851
|
+
"content": "Component Capability:\n - Path: inputs.layoutPolicy.detailSummary\n Category: inputs\n Kind: object\n Description: Politica declarativa para resumo read-only compacto em compactPresentation, sem FormConfig.sections locais.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.includeFields\n Category: inputs\n Kind: array\n Description: Lista de campos canônicos do schema que devem entrar no resumo read-only compacto.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.excludeFields\n Category: inputs\n Kind: array\n Description: Lista de campos canônicos do schema que devem ficar fora do resumo read-only compacto.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.includeGroups\n Category: inputs\n Kind: array\n Description: Lista de grupos do schema que devem entrar no resumo read-only compacto.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.excludeGroups\n Category: inputs\n Kind: array\n Description: Lista de grupos do schema que devem ficar fora do resumo read-only compacto.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.includeRoles\n Category: inputs\n Kind: array\n Description: Lista de papeis semanticos de campo que devem entrar no resumo read-only compacto.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.excludeRoles\n Category: inputs\n Kind: array\n Description: Lista de papeis semanticos de campo que devem ficar fora do resumo read-only compacto.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.maxFields\n Category: inputs\n Kind: number\n Description: Limite maximo de campos materializados no primeiro painel compacto.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.fieldPriority\n Category: inputs\n Kind: object\n Description: Mapa campo -> prioridade para ordenar campos do resumo quando o schema publica candidatos suficientes.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.groupPriority\n Category: inputs\n Kind: object\n Description: Mapa grupo -> prioridade para ordenar grupos do resumo quando o schema publica agrupamento semantico.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.columns\n Category: inputs\n Kind: number\n Description: Quantidade base de colunas para distribuir campos de resumo schema-driven sem criar FormConfig.sections locais.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.responsiveColumns\n Category: inputs\n Kind: object\n Description: Mapa de colunas por breakpoint xs/sm/md/lg/xl para detalhes read-only compactos em drawers, side sheets e desktop largo.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.widthPrecedence\n Category: inputs\n Kind: enum\n Description: Define se larguras explicitas do schema ou a densidade do resumo controlam os spans no compactPresentation read-only.\n\nComponent Capability:\n - Path: inputs.fieldIconPolicy\n Category: inputs\n Kind: enum\n Description: Controla se icones prefix/suffix dos metadados aparecem em todos os modos, apenas apresentacao, ou nunca.\n\nComponent Capability:\n - Path: inputs.backConfig\n Category: inputs\n Kind: object\n Description: Configuracao de navegacao/retorno (BackConfig).\n\nComponent Capability:\n - Path: inputs.backConfig.strategy\n Category: inputs\n Kind: enum\n Description: Estrategia de retorno (auto/close/navigate).\n\nComponent Capability:\n - Path: inputs.backConfig.returnTo\n Category: inputs\n Kind: string\n Description: Rota para retornar quando strategy=navigate.\n\nComponent Capability:\n - Path: inputs.backConfig.confirmOnDirty\n Category: inputs\n Kind: boolean\n Description: Solicita confirmacao ao sair com mudancas nao salvas.\n\nComponent Capability:\n - Path: inputs.hooks\n Category: inputs\n Kind: object\n Description: Declaracoes de hooks fornecidas diretamente ao componente.\n\nComponent Capability:\n - Path: inputs.hooks.beforeInit[]\n Category: hooks\n Kind: array\n Description: Hooks executados antes da inicializacao.\n\nComponent Capability:\n - Path: inputs.hooks.afterInit[]\n Category: hooks\n Kind: array\n Description: Hooks executados apos a inicializacao.\n\nComponent Capability:\n - Path: inputs.hooks.beforeValidate[]\n Category: hooks\n Kind: array\n Description: Hooks executados antes da validacao.\n\nComponent Capability:\n - Path: inputs.hooks.afterValidate[]\n Category: hooks\n Kind: array\n Description: Hooks executados apos a validacao.\n\nComponent Capability:\n - Path: inputs.hooks.beforeSubmit[]\n Category: hooks\n Kind: array\n Description: Hooks executados antes do submit.\n\nComponent Capability:\n - Path: inputs.hooks.afterSubmit[]\n Category: hooks\n Kind: array\n Description: Hooks executados apos o submit.\n\nComponent Capability:\n - Path: inputs.hooks.onError[]\n Category: hooks\n Kind: array\n Description: Hooks executados em erros de submit/validacao.\n\nComponent Capability:\n - Path: inputs.removeEmptyContainersOnSave\n Category: inputs\n Kind: boolean\n Description: Remove containers vazios ao salvar configuracao.\n\nComponent Capability:\n - Path: inputs.reactiveValidation\n Category: inputs\n Kind: boolean\n Description: Ativa validacao reativa (afterValidate em valueChanges).\n\nComponent Capability:\n - Path: inputs.reactiveValidationDebounceMs\n Category: inputs\n Kind: number\n Description: Debounce em ms para validacao reativa.\n\nComponent Capability:\n - Path: inputs.notifyIfOutdated\n Category: inputs\n Kind: enum\n Description: Canal de notificacao para schema desatualizado.\n\nComponent Capability:\n - Path: inputs.snoozeMs\n Category: inputs\n Kind: number\n Description: Duracao do snooze para alertas de schema.\n\nComponent Capability:\n - Path: inputs.autoOpenSettingsOnOutdated\n Category: inputs\n Kind: boolean\n Description: Abre automaticamente o editor ao detectar schema desatualizado.\n\nComponent Capability:\n - Path: inputs.readonlyModeGlobal\n Category: inputs\n Kind: boolean\n Description: Forca modo somente leitura global.\n\nComponent Capability:\n - Path: inputs.disabledModeGlobal\n Category: inputs\n Kind: boolean\n Description: Forca modo desabilitado global.\n\nComponent Capability:\n - Path: inputs.presentationModeGlobal\n Category: inputs\n Kind: boolean\n Description: Ativa modo de apresentacao global (somente view).\n\nComponent Capability:\n - Path: inputs.visibleGlobal\n Category: inputs\n Kind: boolean\n Description: Forca visibilidade global dos campos.\n\nComponent Capability:\n - Path: inputs.customEndpoints\n Category: inputs\n Kind: object\n Description: Override de endpoints CRUD (EndpointConfig).\n\nComponent Capability:\n - Path: inputs.customEndpoints.getAll\n Category: inputs\n Kind: string\n Description: Endpoint customizado para listar registros.\n\nComponent Capability:\n - Path: inputs.customEndpoints.getById\n Category: inputs\n Kind: string\n Description: Endpoint customizado para obter registro por ID.\n\nComponent Capability:\n - Path: inputs.customEndpoints.create\n Category: inputs\n Kind: string\n Description: Endpoint customizado para criar registro.\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.",
|
|
8814
8852
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-component-ai-capabilities.ts",
|
|
8815
|
-
"contentHash": "
|
|
8853
|
+
"contentHash": "c276a80957dcb05beb6aaeb7b61d0174156ac89b26e8ba3f18d3da7eb20e4bc6",
|
|
8816
8854
|
"sourceKind": "component_definition",
|
|
8817
8855
|
"sourceId": "praxis-dynamic-form",
|
|
8818
8856
|
"corpusVersion": "1.0.0"
|
|
@@ -8820,9 +8858,9 @@
|
|
|
8820
8858
|
{
|
|
8821
8859
|
"chunkIndex": 12,
|
|
8822
8860
|
"chunkKind": "capabilities",
|
|
8823
|
-
"content": "Component Capability:\n - Path: inputs.config.presentation.density\n Category: appearance\n Kind: enum\n Description: Densidade visual global.\n\nComponent Capability:\n - Path: inputs.config.presentation.labelWidth\n Category: appearance\n Kind: number\n Description: Largura do label (px).\n\nComponent Capability:\n - Path: inputs.config.presentation.labelAlign\n Category: appearance\n Kind: enum\n Description: Alinhamento do label.\n\nComponent Capability:\n - Path: inputs.config.presentation.valueAlign\n Category: appearance\n Kind: enum\n Description: Alinhamento do valor.\n\nComponent Capability:\n - Path: outputs.formSubmit\n Category: outputs\n Kind: object\n Description: Evento emitido no submit do formulario.\n\nComponent Capability:\n - Path: outputs.formCancel\n Category: outputs\n Kind: object\n Description: Evento emitido ao cancelar.\n\nComponent Capability:\n - Path: outputs.formReset\n Category: outputs\n Kind: object\n Description: Evento emitido ao resetar o formulario.\n\nComponent Capability:\n - Path: outputs.configChange\n Category: outputs\n Kind: object\n Description: Evento emitido quando a configuracao muda.\n\nComponent Capability:\n - Path: outputs.formReady\n Category: outputs\n Kind: object\n Description: Evento emitido quando o formulario esta pronto.\n\nComponent Capability:\n - Path: outputs.valueChange\n Category: outputs\n Kind: object\n Description: Evento emitido quando o valor do formulario muda.\n\nComponent Capability:\n - Path: outputs.syncCompleted\n Category: outputs\n Kind: object\n Description: Evento emitido ao completar sincronizacao com schema.\n\nComponent Capability:\n - Path: outputs.initializationError\n Category: outputs\n Kind: object\n Description: Evento emitido quando ocorre erro na inicializacao.\n\nComponent Capability:\n - Path: outputs.enableCustomizationChange\n Category: outputs\n Kind: object\n Description: Evento emitido quando o modo de customizacao muda.\n\nComponent Capability:\n - Path: outputs.customAction\n Category: outputs\n Kind: object\n Description: Evento emitido ao disparar acao customizada.\n\nComponent Capability:\n - Path: outputs.actionConfirmation\n Category: outputs\n Kind: object\n Description: Evento emitido quando acao requer confirmacao.\n\nComponent Capability:\n - Path: outputs.schemaStatusChange\n Category: outputs\n Kind: object\n Description: Evento emitido quando o status do schema muda.\n\nCapability Note:\n - Este catalogo descreve inputs e outputs do componente.\n\nCapability Note:\n - O objeto inputs.config segue o schema de FormConfig (veja form-ai-capabilities).\n\nCapability Note:\n - inputs.config.presentation e uma extensao de runtime aplicada pelo componente.\n\nCapability Note:\n - Preferir FormConfig (sections/fieldMetadata) em vez do layout legado (fieldsets).\n\nCapability Note:\n - Use inputs.editorialContext apenas para override de contexto editorial do host; a precedencia final e runtime < config.editorialContext < host.\n\nCapability Note:\n - rich content editorial hospedado pelo form pode ser renderizado em tres slots semanticos: before, beforeActions e after.",
|
|
8861
|
+
"content": "Component Capability:\n - Path: inputs.config.presentation\n Category: appearance\n Kind: object\n Description: Preferencias visuais persistidas no config.\n\nComponent Capability:\n - Path: inputs.config.presentation.labelFontSize\n Category: appearance\n Kind: number\n Description: Tamanho da fonte do label (px).\n\nComponent Capability:\n - Path: inputs.config.presentation.valueFontSize\n Category: appearance\n Kind: number\n Description: Tamanho da fonte do valor (px).\n\nComponent Capability:\n - Path: inputs.config.presentation.labelPosition\n Category: appearance\n Kind: enum\n Description: Posicionamento do label (above/left).\n\nComponent Capability:\n - Path: inputs.config.presentation.compact\n Category: appearance\n Kind: boolean\n Description: Modo compacto de apresentacao.\n\nComponent Capability:\n - Path: inputs.config.presentation.density\n Category: appearance\n Kind: enum\n Description: Densidade visual global.\n\nComponent Capability:\n - Path: inputs.config.presentation.labelWidth\n Category: appearance\n Kind: number\n Description: Largura do label (px).\n\nComponent Capability:\n - Path: inputs.config.presentation.labelAlign\n Category: appearance\n Kind: enum\n Description: Alinhamento do label.\n\nComponent Capability:\n - Path: inputs.config.presentation.valueAlign\n Category: appearance\n Kind: enum\n Description: Alinhamento do valor.\n\nComponent Capability:\n - Path: outputs.formSubmit\n Category: outputs\n Kind: object\n Description: Evento emitido no submit do formulario.\n\nComponent Capability:\n - Path: outputs.formCancel\n Category: outputs\n Kind: object\n Description: Evento emitido ao cancelar.\n\nComponent Capability:\n - Path: outputs.formReset\n Category: outputs\n Kind: object\n Description: Evento emitido ao resetar o formulario.\n\nComponent Capability:\n - Path: outputs.configChange\n Category: outputs\n Kind: object\n Description: Evento emitido quando a configuracao muda.\n\nComponent Capability:\n - Path: outputs.formReady\n Category: outputs\n Kind: object\n Description: Evento emitido quando o formulario esta pronto.\n\nComponent Capability:\n - Path: outputs.valueChange\n Category: outputs\n Kind: object\n Description: Evento emitido quando o valor do formulario muda.\n\nComponent Capability:\n - Path: outputs.syncCompleted\n Category: outputs\n Kind: object\n Description: Evento emitido ao completar sincronizacao com schema.\n\nComponent Capability:\n - Path: outputs.initializationError\n Category: outputs\n Kind: object\n Description: Evento emitido quando ocorre erro na inicializacao.\n\nComponent Capability:\n - Path: outputs.enableCustomizationChange\n Category: outputs\n Kind: object\n Description: Evento emitido quando o modo de customizacao muda.\n\nComponent Capability:\n - Path: outputs.customAction\n Category: outputs\n Kind: object\n Description: Evento emitido ao disparar acao customizada.\n\nComponent Capability:\n - Path: outputs.actionConfirmation\n Category: outputs\n Kind: object\n Description: Evento emitido quando acao requer confirmacao.\n\nComponent Capability:\n - Path: outputs.schemaStatusChange\n Category: outputs\n Kind: object\n Description: Evento emitido quando o status do schema muda.\n\nCapability Note:\n - Este catalogo descreve inputs e outputs do componente.\n\nCapability Note:\n - O objeto inputs.config segue o schema de FormConfig (veja form-ai-capabilities).\n\nCapability Note:\n - inputs.config.presentation e uma extensao de runtime aplicada pelo componente.\n\nCapability Note:\n - Preferir FormConfig (sections/fieldMetadata) em vez do layout legado (fieldsets).\n\nCapability Note:\n - Use inputs.editorialContext apenas para override de contexto editorial do host; a precedencia final e runtime < config.editorialContext < host.\n\nCapability Note:\n - rich content editorial hospedado pelo form pode ser renderizado em tres slots semanticos: before, beforeActions e after.",
|
|
8824
8862
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-component-ai-capabilities.ts",
|
|
8825
|
-
"contentHash": "
|
|
8863
|
+
"contentHash": "142afe9c47e968f78a0b3b3713325507ac1cb3836d759ae02278d2cf188b1d06",
|
|
8826
8864
|
"sourceKind": "component_definition",
|
|
8827
8865
|
"sourceId": "praxis-dynamic-form",
|
|
8828
8866
|
"corpusVersion": "1.0.0"
|
|
@@ -8830,9 +8868,9 @@
|
|
|
8830
8868
|
{
|
|
8831
8869
|
"chunkIndex": 13,
|
|
8832
8870
|
"chunkKind": "authoring_manifest",
|
|
8833
|
-
"content": "{\"operationId\":\"field.label.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
8871
|
+
"content": "{\"operationId\":\"field.label.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Alterar rótulo do campo Effects: merge-by-key. Mudar o label do campo email para \\\"E-mail Corporativo\\\" Alterar o label do campo \\\"campoInexistente\\\" Salvar e reabrir o formulário editado sem drift de configuração\",\"scope\":\"field\",\"target\":{\"kind\":\"field\",\"resolver\":\"field-by-name-or-label\",\"required\":true},\"inputContract\":{\"required\":[\"label\"],\"properties\":[\"label\"],\"semanticTerms\":[\"label\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"fieldMetadata[].label\"],\"validators\":[{\"validatorId\":\"field-exists\",\"level\":\"error\",\"code\":\"DF001\",\"description\":\"O campo alvo deve existir em fieldMetadata.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"relabel-schema-backed-field\",\"request\":\"Mudar o label do campo email para \\\"E-mail Corporativo\\\"\",\"operationId\":\"field.label.set\",\"target\":\"email\",\"params\":{\"label\":\"E-mail Corporativo\"},\"isPositive\":true},{\"id\":\"round-trip-no-drift\",\"request\":\"Salvar e reabrir o formulário editado sem drift de configuração\",\"operationId\":\"field.label.set\",\"target\":\"nome\",\"params\":{\"label\":\"Nome Completo\"},\"isPositive\":true}],\"negativeExamples\":[{\"id\":\"reject-unknown-field\",\"request\":\"Alterar o label do campo \\\"campoInexistente\\\"\",\"operationId\":\"field.label.set\",\"target\":\"campoInexistente\",\"params\":{\"label\":\"Novo Label\"},\"isPositive\":false}]}",
|
|
8834
8872
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
8835
|
-
"contentHash": "
|
|
8873
|
+
"contentHash": "fcf98920922dfe5936a04a73b0bac66cd962c3f588b79cfbe07977926d3a9a14",
|
|
8836
8874
|
"sourceKind": "component_definition",
|
|
8837
8875
|
"sourceId": "praxis-dynamic-form",
|
|
8838
8876
|
"corpusVersion": "1.0.0"
|
|
@@ -8840,9 +8878,9 @@
|
|
|
8840
8878
|
{
|
|
8841
8879
|
"chunkIndex": 14,
|
|
8842
8880
|
"chunkKind": "authoring_manifest",
|
|
8843
|
-
"content": "{\"operationId\":\"field.placeholder.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
8881
|
+
"content": "{\"operationId\":\"field.placeholder.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Alterar placeholder do campo Effects: merge-by-key.\",\"scope\":\"field\",\"target\":{\"kind\":\"field\",\"resolver\":\"field-by-name-or-label\",\"required\":true},\"inputContract\":{\"required\":[\"placeholder\"],\"properties\":[\"placeholder\"],\"semanticTerms\":[\"placeholder\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"fieldMetadata[].placeholder\"],\"validators\":[{\"validatorId\":\"field-exists\",\"level\":\"error\",\"code\":\"DF001\",\"description\":\"O campo alvo deve existir em fieldMetadata.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
|
|
8844
8882
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
8845
|
-
"contentHash": "
|
|
8883
|
+
"contentHash": "74365e91e0dbbc797ba375a69ad8b0262d0108c600cbb6620a0245f9e762d91f",
|
|
8846
8884
|
"sourceKind": "component_definition",
|
|
8847
8885
|
"sourceId": "praxis-dynamic-form",
|
|
8848
8886
|
"corpusVersion": "1.0.0"
|
|
@@ -8850,9 +8888,9 @@
|
|
|
8850
8888
|
{
|
|
8851
8889
|
"chunkIndex": 15,
|
|
8852
8890
|
"chunkKind": "authoring_manifest",
|
|
8853
|
-
"content": "{\"operationId\":\"field.required.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
8891
|
+
"content": "{\"operationId\":\"field.required.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Definir obrigatoriedade Effects: merge-by-key.\",\"scope\":\"field\",\"target\":{\"kind\":\"field\",\"resolver\":\"field-by-name-or-label\",\"required\":true},\"inputContract\":{\"required\":[\"required\"],\"properties\":[\"required\"],\"semanticTerms\":[\"required\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"fieldMetadata[].required\"],\"validators\":[{\"validatorId\":\"field-exists\",\"level\":\"error\",\"code\":\"DF001\",\"description\":\"O campo alvo deve existir em fieldMetadata.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"affects-schema-backed-data\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
|
|
8854
8892
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
8855
|
-
"contentHash": "
|
|
8893
|
+
"contentHash": "7f2bdb96006831bc8577e8fbba1ad0a5d87a9831b29e06a66d28f9dd92e7abbb",
|
|
8856
8894
|
"sourceKind": "component_definition",
|
|
8857
8895
|
"sourceId": "praxis-dynamic-form",
|
|
8858
8896
|
"corpusVersion": "1.0.0"
|
|
@@ -8860,9 +8898,9 @@
|
|
|
8860
8898
|
{
|
|
8861
8899
|
"chunkIndex": 16,
|
|
8862
8900
|
"chunkKind": "authoring_manifest",
|
|
8863
|
-
"content": "{\"operationId\":\"field.readOnly.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
8901
|
+
"content": "{\"operationId\":\"field.readOnly.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Definir campo como somente leitura Effects: merge-by-key.\",\"scope\":\"field\",\"target\":{\"kind\":\"field\",\"resolver\":\"field-by-name-or-label\",\"required\":true},\"inputContract\":{\"required\":[\"readOnly\"],\"properties\":[\"readOnly\"],\"semanticTerms\":[\"readOnly\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"fieldMetadata[].readOnly\"],\"validators\":[{\"validatorId\":\"field-exists\",\"level\":\"error\",\"code\":\"DF001\",\"description\":\"O campo alvo deve existir em fieldMetadata.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"affects-schema-backed-data\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
|
|
8864
8902
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
8865
|
-
"contentHash": "
|
|
8903
|
+
"contentHash": "a8c13fed06e21de344b9d5a21e3e05929c81c3682f84386ffce6bddcc2e7f91b",
|
|
8866
8904
|
"sourceKind": "component_definition",
|
|
8867
8905
|
"sourceId": "praxis-dynamic-form",
|
|
8868
8906
|
"corpusVersion": "1.0.0"
|
|
@@ -8870,9 +8908,9 @@
|
|
|
8870
8908
|
{
|
|
8871
8909
|
"chunkIndex": 17,
|
|
8872
8910
|
"chunkKind": "authoring_manifest",
|
|
8873
|
-
"content": "{\"operationId\":\"field.disabled.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
8911
|
+
"content": "{\"operationId\":\"field.disabled.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Definir campo como desabilitado Effects: merge-by-key.\",\"scope\":\"field\",\"target\":{\"kind\":\"field\",\"resolver\":\"field-by-name-or-label\",\"required\":true},\"inputContract\":{\"required\":[\"disabled\"],\"properties\":[\"disabled\"],\"semanticTerms\":[\"disabled\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"fieldMetadata[].disabled\"],\"validators\":[{\"validatorId\":\"field-exists\",\"level\":\"error\",\"code\":\"DF001\",\"description\":\"O campo alvo deve existir em fieldMetadata.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"affects-schema-backed-data\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
|
|
8874
8912
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
8875
|
-
"contentHash": "
|
|
8913
|
+
"contentHash": "75acd0b619c5d89b6de02929290fb62d70eb7de1ebd7833adb47a2441827eb79",
|
|
8876
8914
|
"sourceKind": "component_definition",
|
|
8877
8915
|
"sourceId": "praxis-dynamic-form",
|
|
8878
8916
|
"corpusVersion": "1.0.0"
|
|
@@ -8880,9 +8918,9 @@
|
|
|
8880
8918
|
{
|
|
8881
8919
|
"chunkIndex": 18,
|
|
8882
8920
|
"chunkKind": "authoring_manifest",
|
|
8883
|
-
"content": "{\"operationId\":\"field.hidden.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
8921
|
+
"content": "{\"operationId\":\"field.hidden.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Definir visibilidade inicial Effects: merge-by-key.\",\"scope\":\"field\",\"target\":{\"kind\":\"field\",\"resolver\":\"field-by-name-or-label\",\"required\":true},\"inputContract\":{\"required\":[\"hidden\"],\"properties\":[\"hidden\"],\"semanticTerms\":[\"hidden\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"fieldMetadata[].hidden\"],\"validators\":[{\"validatorId\":\"field-exists\",\"level\":\"error\",\"code\":\"DF001\",\"description\":\"O campo alvo deve existir em fieldMetadata.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
|
|
8884
8922
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
8885
|
-
"contentHash": "
|
|
8923
|
+
"contentHash": "b1efc8cb1dc46d9cc88595f109f9695b9412585de04f8d3a46364efdc120eea8",
|
|
8886
8924
|
"sourceKind": "component_definition",
|
|
8887
8925
|
"sourceId": "praxis-dynamic-form",
|
|
8888
8926
|
"corpusVersion": "1.0.0"
|
|
@@ -8890,9 +8928,9 @@
|
|
|
8890
8928
|
{
|
|
8891
8929
|
"chunkIndex": 19,
|
|
8892
8930
|
"chunkKind": "authoring_manifest",
|
|
8893
|
-
"content": "{\"operationId\":\"field.controlType.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
8931
|
+
"content": "{\"operationId\":\"field.controlType.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Alterar tipo de controle Effects: merge-by-key.\",\"scope\":\"field\",\"target\":{\"kind\":\"field\",\"resolver\":\"field-by-name-or-label\",\"required\":true},\"inputContract\":{\"required\":[\"controlType\"],\"properties\":[\"controlType\"],\"semanticTerms\":[\"controlType\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"fieldMetadata[].controlType\"],\"validators\":[{\"validatorId\":\"field-exists\",\"level\":\"error\",\"code\":\"DF001\",\"description\":\"O campo alvo deve existir em fieldMetadata.\"},{\"validatorId\":\"control-type-compatible\",\"level\":\"error\",\"code\":\"DF017\",\"description\":\"O tipo de controle deve ser compatível com o tipo de dado do campo.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"affects-schema-backed-data\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
|
|
8894
8932
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
8895
|
-
"contentHash": "
|
|
8933
|
+
"contentHash": "9c22429bd2d0475baa98e285f2e8450165c0798b309dfc558165d5e873c0879a",
|
|
8896
8934
|
"sourceKind": "component_definition",
|
|
8897
8935
|
"sourceId": "praxis-dynamic-form",
|
|
8898
8936
|
"corpusVersion": "1.0.0"
|
|
@@ -8900,9 +8938,9 @@
|
|
|
8900
8938
|
{
|
|
8901
8939
|
"chunkIndex": 20,
|
|
8902
8940
|
"chunkKind": "authoring_manifest",
|
|
8903
|
-
"content": "{\"operationId\":\"field.optionSource.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
8941
|
+
"content": "{\"operationId\":\"field.optionSource.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Definir fonte de opções do campo Effects: merge-by-key.\",\"scope\":\"field\",\"target\":{\"kind\":\"field\",\"resolver\":\"field-by-name-or-label\",\"required\":true},\"inputContract\":{\"required\":[\"optionSource\"],\"properties\":[\"optionSource\"],\"semanticTerms\":[\"optionSource\",\"optionSource.key\",\"optionSource.type\",\"optionSource.resourcePath\",\"optionSource.valuePropertyPath\",\"optionSource.labelPropertyPath\",\"optionSource.dependsOn\",\"optionSource.dependencyFilterMap\",\"optionSource.includeIds\",\"optionSource.capabilities\",\"optionSource.display\",\"optionSource.selectionPolicy\",\"RESOURCE_ENTITY\",\"DISTINCT_DIMENSION\",\"CATEGORICAL_BUCKET\",\"LIGHT_LOOKUP\",\"STATIC_CANONICAL\",\"optionSource.capabilities.filter\",\"optionSource.capabilities.byIds\",\"optionSource.capabilities.detail\",\"optionSource.capabilities.create\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"fieldMetadata[].optionSource\"],\"validators\":[{\"validatorId\":\"field-exists\",\"level\":\"error\",\"code\":\"DF001\",\"description\":\"O campo alvo deve existir em fieldMetadata.\"},{\"validatorId\":\"option-source-valid\",\"level\":\"error\",\"code\":\"DF018\",\"description\":\"A fonte de opções deve ser válida para o tipo de controle especificado.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"affects-remote-binding\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
|
|
8904
8942
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
8905
|
-
"contentHash": "
|
|
8943
|
+
"contentHash": "3cc41af7c010a37c58953bb1412648d49e0ddd58f5a5c506bda9f5b87afc71a9",
|
|
8906
8944
|
"sourceKind": "component_definition",
|
|
8907
8945
|
"sourceId": "praxis-dynamic-form",
|
|
8908
8946
|
"corpusVersion": "1.0.0"
|
|
@@ -8910,9 +8948,9 @@
|
|
|
8910
8948
|
{
|
|
8911
8949
|
"chunkIndex": 21,
|
|
8912
8950
|
"chunkKind": "authoring_manifest",
|
|
8913
|
-
"content": "{\"operationId\":\"field.local.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
8951
|
+
"content": "{\"operationId\":\"field.local.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Adicionar campo local Effects: append-unique. Adicionar campo auxiliar local \\\"notasInternas\\\" que não deve aparecer no payload de envio\",\"scope\":\"global\",\"target\":{\"kind\":\"localField\",\"resolver\":\"field-by-name\",\"required\":false},\"inputContract\":{\"required\":[\"name\",\"label\",\"controlType\",\"source\"],\"properties\":[\"name\",\"label\",\"controlType\",\"source\",\"transient\",\"submitPolicy\"],\"semanticTerms\":[\"name\",\"label\",\"controlType\",\"source\",\"transient\",\"submitPolicy\",\"local\",\"omit\",\"include\",\"includeWhenDirty\"]},\"effects\":[\"append-unique\"],\"affectedPaths\":[\"fieldMetadata[]\"],\"validators\":[{\"validatorId\":\"field-name-unique\",\"level\":\"error\",\"code\":\"DF002\",\"description\":\"Nomes de campos devem ser únicos em fieldMetadata.\"},{\"validatorId\":\"local-schema-name-no-collision\",\"level\":\"error\",\"code\":\"DF006\",\"description\":\"Nome de campo local não pode colidir com campo schema-backed existente.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"affects-submission\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"add-local-transient-field\",\"request\":\"Adicionar campo auxiliar local \\\"notasInternas\\\" que não deve aparecer no payload de envio\",\"operationId\":\"field.local.add\",\"params\":{\"name\":\"notasInternas\",\"label\":\"Notas Internas\",\"controlType\":\"textarea\",\"source\":\"local\",\"transient\":true,\"submitPolicy\":\"omit\"},\"isPositive\":true}],\"negativeExamples\":[]}",
|
|
8914
8952
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
8915
|
-
"contentHash": "
|
|
8953
|
+
"contentHash": "ee3cc27253d27b6065a1e30c12484fd0e2192f176ad14084840831e88cc32775",
|
|
8916
8954
|
"sourceKind": "component_definition",
|
|
8917
8955
|
"sourceId": "praxis-dynamic-form",
|
|
8918
8956
|
"corpusVersion": "1.0.0"
|
|
@@ -8920,9 +8958,9 @@
|
|
|
8920
8958
|
{
|
|
8921
8959
|
"chunkIndex": 22,
|
|
8922
8960
|
"chunkKind": "authoring_manifest",
|
|
8923
|
-
"content": "{\"operationId\":\"field.local.remove\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
8961
|
+
"content": "{\"operationId\":\"field.local.remove\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Remover campo local Effects: remove-by-key, compile-domain-patch. Remover o campo auxiliar \\\"notasInternas\\\"\",\"scope\":\"field\",\"target\":{\"kind\":\"localField\",\"resolver\":\"field-by-name\",\"required\":true},\"inputContract\":{\"required\":[],\"properties\":[],\"semanticTerms\":[]},\"effects\":[\"remove-by-key\",\"compile-domain-patch\"],\"affectedPaths\":[\"fieldMetadata[]\",\"sections[].rows[].columns[].items\",\"sections[].rows[].columns[].fields\"],\"validators\":[{\"validatorId\":\"field-exists\",\"level\":\"error\",\"code\":\"DF001\",\"description\":\"O campo alvo deve existir em fieldMetadata.\"},{\"validatorId\":\"field-is-local\",\"level\":\"error\",\"code\":\"DF007\",\"description\":\"Operação restrita a campos locais (source:\\\"local\\\"). Campo schema-backed não pode ser removido ou ter submitPolicy alterada.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"affects-submission\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"require-confirmation-remove-field\",\"request\":\"Remover o campo auxiliar \\\"notasInternas\\\"\",\"operationId\":\"field.local.remove\",\"target\":\"notasInternas\",\"isPositive\":true}],\"negativeExamples\":[]}",
|
|
8924
8962
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
8925
|
-
"contentHash": "
|
|
8963
|
+
"contentHash": "8ade91549a3ec3ed81d377325b0af7695867747fa355722b37ce36c4b8596c17",
|
|
8926
8964
|
"sourceKind": "component_definition",
|
|
8927
8965
|
"sourceId": "praxis-dynamic-form",
|
|
8928
8966
|
"corpusVersion": "1.0.0"
|
|
@@ -8930,9 +8968,9 @@
|
|
|
8930
8968
|
{
|
|
8931
8969
|
"chunkIndex": 23,
|
|
8932
8970
|
"chunkKind": "authoring_manifest",
|
|
8933
|
-
"content": "{\"operationId\":\"field.submitPolicy.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
8971
|
+
"content": "{\"operationId\":\"field.submitPolicy.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Definir política de submissão do campo Effects: merge-by-key.\",\"scope\":\"field\",\"target\":{\"kind\":\"localField\",\"resolver\":\"field-by-name\",\"required\":true},\"inputContract\":{\"required\":[\"submitPolicy\"],\"properties\":[\"submitPolicy\"],\"semanticTerms\":[\"submitPolicy\",\"omit\",\"include\",\"includeWhenDirty\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"fieldMetadata[].submitPolicy\"],\"validators\":[{\"validatorId\":\"field-exists\",\"level\":\"error\",\"code\":\"DF001\",\"description\":\"O campo alvo deve existir em fieldMetadata.\"},{\"validatorId\":\"field-is-local\",\"level\":\"error\",\"code\":\"DF007\",\"description\":\"Operação restrita a campos locais (source:\\\"local\\\"). Campo schema-backed não pode ser removido ou ter submitPolicy alterada.\"},{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"DF019\",\"description\":\"Edição não deve corromper propriedades críticas para o round-trip do editor. Aplicado após operações que afetam submitPolicy ou source de campos locais.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"affects-submission\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
|
|
8934
8972
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
8935
|
-
"contentHash": "
|
|
8973
|
+
"contentHash": "bf33b83d802de67630e37048b63770328b2cccbdd39d66bbfa058487f5d1a09d",
|
|
8936
8974
|
"sourceKind": "component_definition",
|
|
8937
8975
|
"sourceId": "praxis-dynamic-form",
|
|
8938
8976
|
"corpusVersion": "1.0.0"
|
|
@@ -8940,9 +8978,9 @@
|
|
|
8940
8978
|
{
|
|
8941
8979
|
"chunkIndex": 24,
|
|
8942
8980
|
"chunkKind": "authoring_manifest",
|
|
8943
|
-
"content": "{\"operationId\":\"layout.section.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
8981
|
+
"content": "{\"operationId\":\"layout.section.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Adicionar nova seção Effects: append-unique.\",\"scope\":\"global\",\"target\":{\"kind\":\"section\",\"resolver\":\"section-by-id-or-title\",\"required\":false},\"inputContract\":{\"required\":[\"id\",\"title\"],\"properties\":[\"id\",\"title\",\"icon\",\"collapsible\"],\"semanticTerms\":[\"id\",\"title\",\"icon\",\"collapsible\"]},\"effects\":[\"append-unique\"],\"affectedPaths\":[\"sections[]\"],\"validators\":[{\"validatorId\":\"section-id-unique\",\"level\":\"error\",\"code\":\"DF003\",\"description\":\"IDs de seções devem ser únicos em sections[].\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
|
|
8944
8982
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
8945
|
-
"contentHash": "
|
|
8983
|
+
"contentHash": "296728ddb1477ffbcc3d9b7829ccf5064893cc9ac033f297106330d3a2350426",
|
|
8946
8984
|
"sourceKind": "component_definition",
|
|
8947
8985
|
"sourceId": "praxis-dynamic-form",
|
|
8948
8986
|
"corpusVersion": "1.0.0"
|
|
@@ -8950,9 +8988,9 @@
|
|
|
8950
8988
|
{
|
|
8951
8989
|
"chunkIndex": 25,
|
|
8952
8990
|
"chunkKind": "authoring_manifest",
|
|
8953
|
-
"content": "{\"operationId\":\"layout.section.remove\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
8991
|
+
"content": "{\"operationId\":\"layout.section.remove\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Remover seção Effects: remove-by-key, compile-domain-patch. Remover a seção \\\"Dados Adicionais\\\"\",\"scope\":\"section\",\"target\":{\"kind\":\"section\",\"resolver\":\"section-by-id-or-title\",\"required\":true},\"inputContract\":{\"required\":[],\"properties\":[],\"semanticTerms\":[]},\"effects\":[\"remove-by-key\",\"compile-domain-patch\"],\"affectedPaths\":[\"sections[]\",\"sections[].rows[]\",\"sections[].rows[].columns[]\",\"sections[].rows[].columns[].items\",\"sections[].rows[].columns[].fields\"],\"validators\":[{\"validatorId\":\"section-exists\",\"level\":\"error\",\"code\":\"DF004\",\"description\":\"A seção alvo deve existir em sections[].\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"require-confirmation-remove-section\",\"request\":\"Remover a seção \\\"Dados Adicionais\\\"\",\"operationId\":\"layout.section.remove\",\"target\":\"secao-dados-adicionais\",\"isPositive\":true}],\"negativeExamples\":[]}",
|
|
8954
8992
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
8955
|
-
"contentHash": "
|
|
8993
|
+
"contentHash": "85f36c8276c962446ad79bd78bba2e146ab958552c2a6fa13cfe329367602cbd",
|
|
8956
8994
|
"sourceKind": "component_definition",
|
|
8957
8995
|
"sourceId": "praxis-dynamic-form",
|
|
8958
8996
|
"corpusVersion": "1.0.0"
|
|
@@ -8960,9 +8998,9 @@
|
|
|
8960
8998
|
{
|
|
8961
8999
|
"chunkIndex": 26,
|
|
8962
9000
|
"chunkKind": "authoring_manifest",
|
|
8963
|
-
"content": "{\"operationId\":\"layout.row.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
9001
|
+
"content": "{\"operationId\":\"layout.row.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Adicionar linha numa seção Effects: append-unique.\",\"scope\":\"section\",\"target\":{\"kind\":\"section\",\"resolver\":\"section-by-id-or-title\",\"required\":true},\"inputContract\":{\"required\":[\"id\"],\"properties\":[\"id\",\"columns\"],\"semanticTerms\":[\"id\",\"columns\"]},\"effects\":[\"append-unique\"],\"affectedPaths\":[\"sections[].rows[]\"],\"validators\":[{\"validatorId\":\"section-exists\",\"level\":\"error\",\"code\":\"DF004\",\"description\":\"A seção alvo deve existir em sections[].\"},{\"validatorId\":\"row-id-unique-in-section\",\"level\":\"error\",\"code\":\"DF015\",\"description\":\"O id da nova linha deve ser único dentro da seção alvo.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
|
|
8964
9002
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
8965
|
-
"contentHash": "
|
|
9003
|
+
"contentHash": "1cb5b7ee8518874ff07940a0a45592c20b6fd19edbd4ebdf15a16107552d1f44",
|
|
8966
9004
|
"sourceKind": "component_definition",
|
|
8967
9005
|
"sourceId": "praxis-dynamic-form",
|
|
8968
9006
|
"corpusVersion": "1.0.0"
|
|
@@ -8970,9 +9008,9 @@
|
|
|
8970
9008
|
{
|
|
8971
9009
|
"chunkIndex": 27,
|
|
8972
9010
|
"chunkKind": "authoring_manifest",
|
|
8973
|
-
"content": "{\"operationId\":\"layout.column.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
9011
|
+
"content": "{\"operationId\":\"layout.column.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Adicionar coluna numa linha Effects: append-unique.\",\"scope\":\"row\",\"target\":{\"kind\":\"row\",\"resolver\":\"row-by-id-in-section\",\"required\":true},\"inputContract\":{\"required\":[\"id\"],\"properties\":[\"id\",\"span\"],\"semanticTerms\":[\"id\",\"span\"]},\"effects\":[\"append-unique\"],\"affectedPaths\":[\"sections[].rows[].columns[]\"],\"validators\":[{\"validatorId\":\"row-exists\",\"level\":\"error\",\"code\":\"DF014\",\"description\":\"A linha alvo deve existir na seção especificada.\"},{\"validatorId\":\"column-id-unique-in-row\",\"level\":\"error\",\"code\":\"DF016\",\"description\":\"O id da nova coluna deve ser único dentro da linha alvo.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
|
|
8974
9012
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
8975
|
-
"contentHash": "
|
|
9013
|
+
"contentHash": "1b343e610d56455dc6029ebe27c297e84fea4c38f363962f41048b42f71f2c2b",
|
|
8976
9014
|
"sourceKind": "component_definition",
|
|
8977
9015
|
"sourceId": "praxis-dynamic-form",
|
|
8978
9016
|
"corpusVersion": "1.0.0"
|
|
@@ -8980,9 +9018,9 @@
|
|
|
8980
9018
|
{
|
|
8981
9019
|
"chunkIndex": 28,
|
|
8982
9020
|
"chunkKind": "authoring_manifest",
|
|
8983
|
-
"content": "{\"operationId\":\"layout.field.move\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
9021
|
+
"content": "{\"operationId\":\"layout.field.move\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Mover campo no layout Effects: compile-domain-patch. Mover campo telefone para a primeira coluna da seção de contato\",\"scope\":\"field\",\"target\":{\"kind\":\"field\",\"resolver\":\"field-by-name-or-label\",\"required\":true},\"inputContract\":{\"required\":[\"targetSectionId\",\"targetRowId\",\"targetColumnId\"],\"properties\":[\"targetSectionId\",\"targetRowId\",\"targetColumnId\",\"index\"],\"semanticTerms\":[\"targetSectionId\",\"targetRowId\",\"targetColumnId\",\"index\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"sections[].rows[].columns[].items\",\"sections[].rows[].columns[].fields\"],\"validators\":[{\"validatorId\":\"field-exists\",\"level\":\"error\",\"code\":\"DF001\",\"description\":\"O campo alvo deve existir em fieldMetadata.\"},{\"validatorId\":\"layout-target-exists\",\"level\":\"error\",\"code\":\"DF012\",\"description\":\"A seção/linha/coluna de destino devem existir antes de mover o campo.\"},{\"validatorId\":\"no-index-as-identity\",\"level\":\"error\",\"code\":\"DF013\",\"description\":\"Operações de layout não devem usar índice de array como identidade canônica; use IDs estáveis.\"},{\"validatorId\":\"field-exists-in-layout\",\"level\":\"warning\",\"code\":\"DF005\",\"description\":\"Campo definido em fieldMetadata mas ausente no layout.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"move-field-to-column\",\"request\":\"Mover campo telefone para a primeira coluna da seção de contato\",\"operationId\":\"layout.field.move\",\"target\":\"telefone\",\"params\":{\"targetSectionId\":\"secao-contato\",\"targetRowId\":\"row-1\",\"targetColumnId\":\"col-1\"},\"isPositive\":true}],\"negativeExamples\":[]}",
|
|
8984
9022
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
8985
|
-
"contentHash": "
|
|
9023
|
+
"contentHash": "7d87281b5837c11997f9ec4736b8ad87def608e11d84e5539bd7b564629d7cc8",
|
|
8986
9024
|
"sourceKind": "component_definition",
|
|
8987
9025
|
"sourceId": "praxis-dynamic-form",
|
|
8988
9026
|
"corpusVersion": "1.0.0"
|
|
@@ -8990,9 +9028,9 @@
|
|
|
8990
9028
|
{
|
|
8991
9029
|
"chunkIndex": 29,
|
|
8992
9030
|
"chunkKind": "authoring_manifest",
|
|
8993
|
-
"content": "{\"operationId\":\"layout.visualBlock.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
9031
|
+
"content": "{\"operationId\":\"layout.visualBlock.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Adicionar bloco visual Effects: compile-domain-patch. Adicionar um aviso visual antes dos campos de contato\",\"scope\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-id-in-row\",\"required\":true},\"inputContract\":{\"required\":[\"id\",\"document\"],\"properties\":[\"id\",\"document\",\"layout\",\"rootClassName\",\"index\"],\"semanticTerms\":[\"id\",\"document\",\"layout\",\"rootClassName\",\"index\",\"document.kind\",\"document.version\",\"document.nodes\",\"block\",\"inline\",\"praxis.rich-content\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"sections[].rows[].columns[].items\"],\"validators\":[{\"validatorId\":\"layout-target-exists\",\"level\":\"error\",\"code\":\"DF012\",\"description\":\"A seção/linha/coluna de destino devem existir antes de mover o campo.\"},{\"validatorId\":\"visual-block-id-unique\",\"level\":\"error\",\"code\":\"DF021\",\"description\":\"IDs de blocos visuais devem ser unicos entre os itens de layout do formulario.\"},{\"validatorId\":\"rich-content-document-valid\",\"level\":\"error\",\"code\":\"DF022\",\"description\":\"O document do bloco visual deve seguir o contrato RichContentDocument canonico.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"add-visual-block\",\"request\":\"Adicionar um aviso visual antes dos campos de contato\",\"operationId\":\"layout.visualBlock.add\",\"target\":\"col-contato\",\"params\":{\"id\":\"aviso-contato\",\"document\":{\"kind\":\"praxis.rich-content\",\"version\":\"1.0.0\",\"nodes\":[{\"type\":\"text\",\"text\":\"Confira os dados antes de salvar.\"}]},\"layout\":\"block\"},\"isPositive\":true}],\"negativeExamples\":[]}",
|
|
8994
9032
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
8995
|
-
"contentHash": "
|
|
9033
|
+
"contentHash": "a98a5d391b47463b10dec84dd0369a3d41f3477a694ff4f8508917df6611fee5",
|
|
8996
9034
|
"sourceKind": "component_definition",
|
|
8997
9035
|
"sourceId": "praxis-dynamic-form",
|
|
8998
9036
|
"corpusVersion": "1.0.0"
|
|
@@ -9000,9 +9038,9 @@
|
|
|
9000
9038
|
{
|
|
9001
9039
|
"chunkIndex": 30,
|
|
9002
9040
|
"chunkKind": "authoring_manifest",
|
|
9003
|
-
"content": "{\"operationId\":\"layout.visualBlock.update\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
9041
|
+
"content": "{\"operationId\":\"layout.visualBlock.update\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Atualizar bloco visual Effects: compile-domain-patch.\",\"scope\":\"layout\",\"target\":{\"kind\":\"visualBlock\",\"resolver\":\"layout-item-by-id\",\"required\":true},\"inputContract\":{\"required\":[],\"properties\":[\"document\",\"layout\",\"rootClassName\"],\"semanticTerms\":[\"document\",\"layout\",\"rootClassName\",\"document.kind\",\"document.version\",\"document.nodes\",\"block\",\"inline\",\"praxis.rich-content\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"sections[].rows[].columns[].items\"],\"validators\":[{\"validatorId\":\"visual-block-exists\",\"level\":\"error\",\"code\":\"DF020\",\"description\":\"O bloco visual alvo deve existir como item kind:\\\"richContent\\\" em sections[].rows[].columns[].items[].\"},{\"validatorId\":\"rich-content-document-valid\",\"level\":\"error\",\"code\":\"DF022\",\"description\":\"O document do bloco visual deve seguir o contrato RichContentDocument canonico.\"},{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"DF019\",\"description\":\"Edição não deve corromper propriedades críticas para o round-trip do editor. Aplicado após operações que afetam submitPolicy ou source de campos locais.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
|
|
9004
9042
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
9005
|
-
"contentHash": "
|
|
9043
|
+
"contentHash": "cd50f0445c345f82ea1dad91cd881fb0cb962c4ae7a349caa533dfb093d97a6b",
|
|
9006
9044
|
"sourceKind": "component_definition",
|
|
9007
9045
|
"sourceId": "praxis-dynamic-form",
|
|
9008
9046
|
"corpusVersion": "1.0.0"
|
|
@@ -9010,9 +9048,9 @@
|
|
|
9010
9048
|
{
|
|
9011
9049
|
"chunkIndex": 31,
|
|
9012
9050
|
"chunkKind": "authoring_manifest",
|
|
9013
|
-
"content": "{\"operationId\":\"layout.visualBlock.move\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
9051
|
+
"content": "{\"operationId\":\"layout.visualBlock.move\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Mover bloco visual Effects: compile-domain-patch. Mover o aviso visual para a segunda coluna da secao de contato\",\"scope\":\"layout\",\"target\":{\"kind\":\"visualBlock\",\"resolver\":\"layout-item-by-id\",\"required\":true},\"inputContract\":{\"required\":[\"targetSectionId\",\"targetRowId\",\"targetColumnId\"],\"properties\":[\"targetSectionId\",\"targetRowId\",\"targetColumnId\",\"index\"],\"semanticTerms\":[\"targetSectionId\",\"targetRowId\",\"targetColumnId\",\"index\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"sections[].rows[].columns[].items\"],\"validators\":[{\"validatorId\":\"visual-block-exists\",\"level\":\"error\",\"code\":\"DF020\",\"description\":\"O bloco visual alvo deve existir como item kind:\\\"richContent\\\" em sections[].rows[].columns[].items[].\"},{\"validatorId\":\"layout-target-exists\",\"level\":\"error\",\"code\":\"DF012\",\"description\":\"A seção/linha/coluna de destino devem existir antes de mover o campo.\"},{\"validatorId\":\"no-index-as-identity\",\"level\":\"error\",\"code\":\"DF013\",\"description\":\"Operações de layout não devem usar índice de array como identidade canônica; use IDs estáveis.\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"move-visual-block\",\"request\":\"Mover o aviso visual para a segunda coluna da secao de contato\",\"operationId\":\"layout.visualBlock.move\",\"target\":\"aviso-contato\",\"params\":{\"targetSectionId\":\"secao-contato\",\"targetRowId\":\"row-1\",\"targetColumnId\":\"col-2\"},\"isPositive\":true}],\"negativeExamples\":[]}",
|
|
9014
9052
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
9015
|
-
"contentHash": "
|
|
9053
|
+
"contentHash": "b0b38acb7a5e60fc0ba4940e032777c9df8af78213c8c95692bc026771710722",
|
|
9016
9054
|
"sourceKind": "component_definition",
|
|
9017
9055
|
"sourceId": "praxis-dynamic-form",
|
|
9018
9056
|
"corpusVersion": "1.0.0"
|
|
@@ -9020,9 +9058,9 @@
|
|
|
9020
9058
|
{
|
|
9021
9059
|
"chunkIndex": 32,
|
|
9022
9060
|
"chunkKind": "authoring_manifest",
|
|
9023
|
-
"content": "{\"operationId\":\"layout.visualBlock.remove\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
9061
|
+
"content": "{\"operationId\":\"layout.visualBlock.remove\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Remover bloco visual Effects: compile-domain-patch.\",\"scope\":\"layout\",\"target\":{\"kind\":\"visualBlock\",\"resolver\":\"layout-item-by-id\",\"required\":true},\"inputContract\":{\"required\":[],\"properties\":[],\"semanticTerms\":[]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"sections[].rows[].columns[].items\"],\"validators\":[{\"validatorId\":\"visual-block-exists\",\"level\":\"error\",\"code\":\"DF020\",\"description\":\"O bloco visual alvo deve existir como item kind:\\\"richContent\\\" em sections[].rows[].columns[].items[].\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
|
|
9024
9062
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
9025
|
-
"contentHash": "
|
|
9063
|
+
"contentHash": "027394f2915aab14b2578ba098d7543dd5b7f0c30eeb155d4057cf2457f4543d",
|
|
9026
9064
|
"sourceKind": "component_definition",
|
|
9027
9065
|
"sourceId": "praxis-dynamic-form",
|
|
9028
9066
|
"corpusVersion": "1.0.0"
|
|
@@ -9030,9 +9068,9 @@
|
|
|
9030
9068
|
{
|
|
9031
9069
|
"chunkIndex": 33,
|
|
9032
9070
|
"chunkKind": "authoring_manifest",
|
|
9033
|
-
"content": "{\"operationId\":\"rule.visibility.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
9071
|
+
"content": "{\"operationId\":\"rule.visibility.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Adicionar regra de visibilidade Effects: append-unique. Ocultar o campo cpf quando o tipo de pessoa for jurídica\",\"scope\":\"global\",\"target\":{\"kind\":\"formRule\",\"resolver\":\"rule-by-id-or-name\",\"required\":false},\"inputContract\":{\"required\":[\"id\",\"type\",\"targets\",\"condition\",\"metadata\"],\"properties\":[\"id\",\"name\",\"type\",\"targetType\",\"targets\",\"condition\",\"metadata\"],\"semanticTerms\":[\"id\",\"name\",\"type\",\"targetType\",\"targets\",\"condition\",\"metadata\",\"visibility\",\"field\",\"section\",\"row\",\"column\",\"action\",\"visualBlock\",\"metadata.origin\",\"metadata.reviewStatus\",\"llm\",\"pending\"]},\"effects\":[\"append-unique\"],\"affectedPaths\":[\"formRules[]\"],\"validators\":[{\"validatorId\":\"rule-id-unique\",\"level\":\"error\",\"code\":\"DF008\",\"description\":\"IDs de regras devem ser únicos em formRules[].\"},{\"validatorId\":\"rule-target-refs-exist\",\"level\":\"error\",\"code\":\"DF010\",\"description\":\"Todos os targets da regra devem referenciar campos, seções, ações ou blocos visuais existentes.\"},{\"validatorId\":\"json-logic-valid\",\"level\":\"error\",\"code\":\"DF011\",\"description\":\"A expressão JsonLogic deve ser um AST válido (suporte canônico à spec JsonLogic).\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"affects-schema-backed-data\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"add-visibility-rule\",\"request\":\"Ocultar o campo cpf quando o tipo de pessoa for jurídica\",\"operationId\":\"rule.visibility.add\",\"params\":{\"id\":\"ocultar-cpf-pj\",\"name\":\"Ocultar CPF para PJ\",\"targetType\":\"field\",\"targets\":[\"cpf\"],\"condition\":{\"==\":[{\"var\":\"tipoPessoa\"},\"juridica\"]}},\"isPositive\":true}],\"negativeExamples\":[]}",
|
|
9034
9072
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
9035
|
-
"contentHash": "
|
|
9073
|
+
"contentHash": "b825004797bf5fd8530a7f6542eec8e817a0d15c1a2d5f4f63f318ad0df63b56",
|
|
9036
9074
|
"sourceKind": "component_definition",
|
|
9037
9075
|
"sourceId": "praxis-dynamic-form",
|
|
9038
9076
|
"corpusVersion": "1.0.0"
|
|
@@ -9040,9 +9078,9 @@
|
|
|
9040
9078
|
{
|
|
9041
9079
|
"chunkIndex": 34,
|
|
9042
9080
|
"chunkKind": "authoring_manifest",
|
|
9043
|
-
"content": "{\"operationId\":\"rule.validation.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
9081
|
+
"content": "{\"operationId\":\"rule.validation.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Adicionar regra de validação Effects: append-unique.\",\"scope\":\"global\",\"target\":{\"kind\":\"formRule\",\"resolver\":\"rule-by-id-or-name\",\"required\":false},\"inputContract\":{\"required\":[\"id\",\"type\",\"targets\",\"condition\",\"message\",\"metadata\"],\"properties\":[\"id\",\"name\",\"type\",\"targetType\",\"targets\",\"condition\",\"message\",\"level\",\"metadata\"],\"semanticTerms\":[\"id\",\"name\",\"type\",\"targetType\",\"targets\",\"condition\",\"message\",\"level\",\"metadata\",\"validation\",\"field\",\"section\",\"row\",\"column\",\"action\",\"visualBlock\",\"error\",\"warning\",\"metadata.origin\",\"metadata.reviewStatus\",\"llm\",\"pending\"]},\"effects\":[\"append-unique\"],\"affectedPaths\":[\"formRules[]\"],\"validators\":[{\"validatorId\":\"rule-id-unique\",\"level\":\"error\",\"code\":\"DF008\",\"description\":\"IDs de regras devem ser únicos em formRules[].\"},{\"validatorId\":\"rule-target-refs-exist\",\"level\":\"error\",\"code\":\"DF010\",\"description\":\"Todos os targets da regra devem referenciar campos, seções, ações ou blocos visuais existentes.\"},{\"validatorId\":\"json-logic-valid\",\"level\":\"error\",\"code\":\"DF011\",\"description\":\"A expressão JsonLogic deve ser um AST válido (suporte canônico à spec JsonLogic).\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"affects-schema-backed-data\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
|
|
9044
9082
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
9045
|
-
"contentHash": "
|
|
9083
|
+
"contentHash": "1974b076295f0729ab785b1335c4bb42920d4482d0aea0e53ad566bb748d8c48",
|
|
9046
9084
|
"sourceKind": "component_definition",
|
|
9047
9085
|
"sourceId": "praxis-dynamic-form",
|
|
9048
9086
|
"corpusVersion": "1.0.0"
|
|
@@ -9050,9 +9088,9 @@
|
|
|
9050
9088
|
{
|
|
9051
9089
|
"chunkIndex": 35,
|
|
9052
9090
|
"chunkKind": "authoring_manifest",
|
|
9053
|
-
"content": "{\"operationId\":\"rule.computedValue.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
9091
|
+
"content": "{\"operationId\":\"rule.computedValue.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Adicionar regra de valor calculado Effects: append-unique. Calcular idade a partir da data de nascimento e limpar quando a data estiver vazia\",\"scope\":\"global\",\"target\":{\"kind\":\"formRule\",\"resolver\":\"rule-by-id-or-name\",\"required\":false},\"inputContract\":{\"required\":[\"id\",\"type\",\"targets\",\"condition\",\"value\",\"metadata\"],\"properties\":[\"id\",\"name\",\"type\",\"targetType\",\"targets\",\"condition\",\"value\",\"valueWhenFalse\",\"metadata\"],\"semanticTerms\":[\"id\",\"name\",\"type\",\"targetType\",\"targets\",\"condition\",\"value\",\"valueWhenFalse\",\"metadata\",\"computedValue\",\"field\",\"value.expression\",\"value.literal\",\"valueWhenFalse.expression\",\"valueWhenFalse.literal\",\"metadata.origin\",\"metadata.reviewStatus\",\"llm\",\"pending\"]},\"effects\":[\"append-unique\"],\"affectedPaths\":[\"formRules[]\"],\"validators\":[{\"validatorId\":\"rule-id-unique\",\"level\":\"error\",\"code\":\"DF008\",\"description\":\"IDs de regras devem ser únicos em formRules[].\"},{\"validatorId\":\"rule-target-refs-exist\",\"level\":\"error\",\"code\":\"DF010\",\"description\":\"Todos os targets da regra devem referenciar campos, seções, ações ou blocos visuais existentes.\"},{\"validatorId\":\"json-logic-valid\",\"level\":\"error\",\"code\":\"DF011\",\"description\":\"A expressão JsonLogic deve ser um AST válido (suporte canônico à spec JsonLogic).\"},{\"validatorId\":\"computed-value-envelope-valid\",\"level\":\"error\",\"code\":\"DF023\",\"description\":\"Valores calculados devem usar envelope explícito e fechado, exatamente { expression: <JsonLogic> } ou exatamente { literal: <valor> }; objetos literais sem envelope ou envelopes com chaves extras são ambíguos.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"affects-schema-backed-data\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"add-computed-value-rule\",\"request\":\"Calcular idade a partir da data de nascimento e limpar quando a data estiver vazia\",\"operationId\":\"rule.computedValue.add\",\"params\":{\"id\":\"birth-date-computes-age\",\"name\":\"Calcular idade\",\"type\":\"computedValue\",\"targetType\":\"field\",\"targets\":[\"age\"],\"condition\":{\"!\":[{\"isBlank\":[{\"var\":\"birthDate\"}]}]},\"value\":{\"expression\":{\"yearsSince\":[{\"var\":\"birthDate\"}]}},\"valueWhenFalse\":{},\"metadata\":{\"origin\":\"llm\",\"reviewStatus\":\"pending\"}},\"isPositive\":true}],\"negativeExamples\":[]}",
|
|
9054
9092
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
9055
|
-
"contentHash": "
|
|
9093
|
+
"contentHash": "cbc443f3b1f919e518f47754e929a3bb56407ee4cdf9ccbce14a12e352bacd98",
|
|
9056
9094
|
"sourceKind": "component_definition",
|
|
9057
9095
|
"sourceId": "praxis-dynamic-form",
|
|
9058
9096
|
"corpusVersion": "1.0.0"
|
|
@@ -9060,9 +9098,9 @@
|
|
|
9060
9098
|
{
|
|
9061
9099
|
"chunkIndex": 36,
|
|
9062
9100
|
"chunkKind": "authoring_manifest",
|
|
9063
|
-
"content": "{\"operationId\":\"rule.visualBlockGuidance.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
9101
|
+
"content": "{\"operationId\":\"rule.visualBlockGuidance.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Materializar orientação visual derivada Effects: append-unique. Materializar no aviso visual a decisao governada que exige aprovacao de compliance para fornecedor com risco critico\",\"scope\":\"global\",\"target\":{\"kind\":\"formRule\",\"resolver\":\"rule-by-id-or-name\",\"required\":false},\"inputContract\":{\"required\":[\"id\",\"type\",\"targetType\",\"targets\",\"condition\",\"properties\",\"metadata\"],\"properties\":[\"id\",\"name\",\"description\",\"type\",\"targetType\",\"context\",\"targets\",\"condition\",\"properties\",\"propertiesWhenFalse\",\"metadata\"],\"semanticTerms\":[\"id\",\"name\",\"description\",\"type\",\"targetType\",\"context\",\"targets\",\"condition\",\"properties\",\"propertiesWhenFalse\",\"metadata\",\"visualBlockGuidance\",\"visualBlock\",\"notification\",\"style\",\"properties.visible\",\"properties.hidden\",\"properties.layout\",\"properties.className\",\"properties.rootClassName\",\"properties.style\",\"properties.text\",\"properties.title\",\"properties.message\",\"properties.textNodeId\",\"properties.titleNodeId\",\"properties.messageNodeId\",\"propertiesWhenFalse.visible\",\"propertiesWhenFalse.hidden\",\"propertiesWhenFalse.layout\",\"propertiesWhenFalse.className\",\"propertiesWhenFalse.rootClassName\",\"propertiesWhenFalse.style\",\"propertiesWhenFalse.text\",\"propertiesWhenFalse.title\",\"propertiesWhenFalse.message\",\"propertiesWhenFalse.textNodeId\",\"propertiesWhenFalse.titleNodeId\",\"propertiesWhenFalse.messageNodeId\",\"metadata.origin\",\"metadata.reviewStatus\",\"block\",\"inline\",\"llm\",\"pending\"]},\"effects\":[\"append-unique\"],\"affectedPaths\":[\"formRules[]\"],\"validators\":[{\"validatorId\":\"rule-id-unique\",\"level\":\"error\",\"code\":\"DF008\",\"description\":\"IDs de regras devem ser únicos em formRules[].\"},{\"validatorId\":\"visual-block-exists\",\"level\":\"error\",\"code\":\"DF020\",\"description\":\"O bloco visual alvo deve existir como item kind:\\\"richContent\\\" em sections[].rows[].columns[].items[].\"},{\"validatorId\":\"json-logic-valid\",\"level\":\"error\",\"code\":\"DF011\",\"description\":\"A expressão JsonLogic deve ser um AST válido (suporte canônico à spec JsonLogic).\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"add-visual-block-guidance-rule\",\"request\":\"Materializar no aviso visual a decisao governada que exige aprovacao de compliance para fornecedor com risco critico\",\"operationId\":\"rule.visualBlockGuidance.add\",\"params\":{\"id\":\"supplier-risk-guidance\",\"name\":\"Supplier risk guidance\",\"type\":\"visualBlockGuidance\",\"targetType\":\"visualBlock\",\"targets\":[\"supplier-risk-notice\"],\"condition\":{\"===\":[{\"var\":\"riscoFornecedor\"},\"critico\"]},\"properties\":{\"message\":\"Fornecedor critico exige aprovacao de compliance antes de emitir o pedido.\",\"messageNodeId\":\"message\",\"className\":\"supplier-risk-notice supplier-risk-notice--critical\"},\"propertiesWhenFalse\":{\"message\":\"Fornecedor sem bloqueios criticos para este pedido.\",\"messageNodeId\":\"message\",\"className\":\"supplier-risk-notice supplier-risk-notice--neutral\"},\"metadata\":{\"origin\":\"llm\",\"reviewStatus\":\"pending\"}},\"isPositive\":true}],\"negativeExamples\":[]}",
|
|
9064
9102
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
9065
|
-
"contentHash": "
|
|
9103
|
+
"contentHash": "f35df69a7f00e89dd643cb7a80212a869114d55f576051086a1cbaebfcd34639",
|
|
9066
9104
|
"sourceKind": "component_definition",
|
|
9067
9105
|
"sourceId": "praxis-dynamic-form",
|
|
9068
9106
|
"corpusVersion": "1.0.0"
|
|
@@ -9070,9 +9108,9 @@
|
|
|
9070
9108
|
{
|
|
9071
9109
|
"chunkIndex": 37,
|
|
9072
9110
|
"chunkKind": "authoring_manifest",
|
|
9073
|
-
"content": "{\"operationId\":\"rule.remove\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
9111
|
+
"content": "{\"operationId\":\"rule.remove\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Remover regra Effects: remove-by-key.\",\"scope\":\"rule\",\"target\":{\"kind\":\"formRule\",\"resolver\":\"rule-by-id-or-name\",\"required\":true},\"inputContract\":{\"required\":[],\"properties\":[],\"semanticTerms\":[]},\"effects\":[\"remove-by-key\"],\"affectedPaths\":[\"formRules[]\"],\"validators\":[{\"validatorId\":\"rule-exists\",\"level\":\"error\",\"code\":\"DF009\",\"description\":\"A regra alvo deve existir em formRules[].\"}],\"preconditions\":[\"config-initialized\",\"target-exists\"],\"submissionImpact\":\"affects-schema-backed-data\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
|
|
9074
9112
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
9075
|
-
"contentHash": "
|
|
9113
|
+
"contentHash": "069e384931f74f1df9c83efd865aec10db5d3221318e3b0cebf086697be96988",
|
|
9076
9114
|
"sourceKind": "component_definition",
|
|
9077
9115
|
"sourceId": "praxis-dynamic-form",
|
|
9078
9116
|
"corpusVersion": "1.0.0"
|
|
@@ -9080,9 +9118,9 @@
|
|
|
9080
9118
|
{
|
|
9081
9119
|
"chunkIndex": 38,
|
|
9082
9120
|
"chunkKind": "authoring_manifest",
|
|
9083
|
-
"content": "{\"operationId\":\"action.submit.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
9121
|
+
"content": "{\"operationId\":\"action.submit.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar botão de envio Effects: merge-object.\",\"scope\":\"global\",\"target\":{\"kind\":\"formAction\",\"resolver\":\"action-by-id-or-label\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"label\",\"icon\",\"visible\",\"color\"],\"semanticTerms\":[\"label\",\"icon\",\"visible\",\"color\",\"primary\",\"accent\",\"warn\",\"basic\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"actions.submit\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"DF019\",\"description\":\"Edição não deve corromper propriedades críticas para o round-trip do editor. Aplicado após operações que afetam submitPolicy ou source de campos locais.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"affects-submission\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
|
|
9084
9122
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
9085
|
-
"contentHash": "
|
|
9123
|
+
"contentHash": "4991ae40580e17a16b4b520fbdb59f551980b0efed443719d925215cc9e79081",
|
|
9086
9124
|
"sourceKind": "component_definition",
|
|
9087
9125
|
"sourceId": "praxis-dynamic-form",
|
|
9088
9126
|
"corpusVersion": "1.0.0"
|
|
@@ -9090,9 +9128,9 @@
|
|
|
9090
9128
|
{
|
|
9091
9129
|
"chunkIndex": 39,
|
|
9092
9130
|
"chunkKind": "authoring_manifest",
|
|
9093
|
-
"content": "{\"operationId\":\"action.cancel.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
9131
|
+
"content": "{\"operationId\":\"action.cancel.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar botão de cancelar Effects: merge-object.\",\"scope\":\"global\",\"target\":{\"kind\":\"formAction\",\"resolver\":\"action-by-id-or-label\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"label\",\"icon\",\"visible\",\"color\",\"navigateTo\"],\"semanticTerms\":[\"label\",\"icon\",\"visible\",\"color\",\"navigateTo\",\"primary\",\"accent\",\"warn\",\"basic\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"actions.cancel\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"DF019\",\"description\":\"Edição não deve corromper propriedades críticas para o round-trip do editor. Aplicado após operações que afetam submitPolicy ou source de campos locais.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
|
|
9094
9132
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
9095
|
-
"contentHash": "
|
|
9133
|
+
"contentHash": "18f4c94b4de30cbbf831dd4d5fe4f95004e259879692e8fbf6b729cb3302620c",
|
|
9096
9134
|
"sourceKind": "component_definition",
|
|
9097
9135
|
"sourceId": "praxis-dynamic-form",
|
|
9098
9136
|
"corpusVersion": "1.0.0"
|
|
@@ -9100,9 +9138,9 @@
|
|
|
9100
9138
|
{
|
|
9101
9139
|
"chunkIndex": 40,
|
|
9102
9140
|
"chunkKind": "authoring_manifest",
|
|
9103
|
-
"content": "{\"operationId\":\"action.reset.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
9141
|
+
"content": "{\"operationId\":\"action.reset.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configurar botão de reset Effects: merge-object.\",\"scope\":\"global\",\"target\":{\"kind\":\"formAction\",\"resolver\":\"action-by-id-or-label\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"label\",\"icon\",\"visible\",\"color\",\"confirmBeforeReset\"],\"semanticTerms\":[\"label\",\"icon\",\"visible\",\"color\",\"confirmBeforeReset\",\"primary\",\"accent\",\"warn\",\"basic\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"actions.reset\"],\"validators\":[{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"DF019\",\"description\":\"Edição não deve corromper propriedades críticas para o round-trip do editor. Aplicado após operações que afetam submitPolicy ou source de campos locais.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
|
|
9104
9142
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
9105
|
-
"contentHash": "
|
|
9143
|
+
"contentHash": "72c354b07ef5cb4513ca8da4b5f07211b046fe3e4d2caa49916b7481cda8d2be",
|
|
9106
9144
|
"sourceKind": "component_definition",
|
|
9107
9145
|
"sourceId": "praxis-dynamic-form",
|
|
9108
9146
|
"corpusVersion": "1.0.0"
|
|
@@ -9110,9 +9148,9 @@
|
|
|
9110
9148
|
{
|
|
9111
9149
|
"chunkIndex": 41,
|
|
9112
9150
|
"chunkKind": "authoring_manifest",
|
|
9113
|
-
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
9151
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"identity\"}",
|
|
9114
9152
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
9115
|
-
"contentHash": "
|
|
9153
|
+
"contentHash": "feeadba633cd0c6828ae9d5157cb44ed7dd749483880e22c0bb50f199224b6ac",
|
|
9116
9154
|
"sourceKind": "component_definition",
|
|
9117
9155
|
"sourceId": "praxis-dynamic-form",
|
|
9118
9156
|
"corpusVersion": "1.0.0"
|
|
@@ -9120,9 +9158,9 @@
|
|
|
9120
9158
|
{
|
|
9121
9159
|
"chunkIndex": 42,
|
|
9122
9160
|
"chunkKind": "authoring_manifest",
|
|
9123
|
-
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
9161
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"runtimeInputs\",\"runtimeInputs\":[{\"name\":\"showAiAssistant\",\"type\":\"boolean\",\"description\":\"Mostra os gatilhos do copiloto semantico Praxis\"},{\"name\":\"config\",\"type\":\"FormConfig\",\"description\":\"Configuração do formulário; sections é opcional em forms schema-driven e não deve ser criado como array vazio apenas para satisfazer TypeScript.\"},{\"name\":\"resourcePath\",\"type\":\"string\",\"description\":\"Caminho do recurso (API)\"},{\"name\":\"readUrl\",\"type\":\"string\",\"description\":\"Endpoint canonico de leitura para surfaces VIEW/READ_PROJECTION\"},{\"name\":\"mode\",\"type\":\"string\",\"allowedValues\":[\"create\",\"edit\",\"view\"],\"description\":\"Modo de operação\"},{\"name\":\"configPersistenceStrategy\",\"type\":\"string\",\"allowedValues\":[\"local-first\",\"input-first\"],\"description\":\"Precedência entre configuração persistida e contrato explícito do host. Use input-first em dialogs e surfaces transitórias governadas por schema para preservar mode e estados operacionais publicados pelo servidor.\"},{\"name\":\"generatedLayoutPreset\",\"type\":\"string\",\"allowedValues\":[\"default\",\"compactPresentation\"],\"description\":\"Preset usado apenas ao gerar a configuracao inicial a partir de metadata/schema; nao reprocessa layouts persistidos ou autorados.\"},{\"name\":\"layoutPolicy\",\"type\":\"DynamicFormLayoutPolicy\",\"description\":\"Politica opt-in para layout schema-driven transient. Use source=schema apenas quando o backend schema for a fonte canonica do agrupamento; use detailSummary para seleção de campos e densidade responsiva do resumo read-only compacto sem FormConfig.sections locais. Quando o resumo precisar vencer x-ui.width publicado para outras surfaces, use detailSummary.widthPrecedence=summary. Em groupedCommand, orphanFieldExpansion governa linhas com um unico campo; partialRowStrategy=fill-compatible projeta spans compatíveis para completar a linha no breakpoint atual sem alterar x-ui.width ou persistir sections; contextFields identifica campos do request hidratados pela surface que permanecem no payload sem criar controles redundantes.\"},{\"name\":\"fieldIconPolicy\",\"type\":\"string\",\"allowedValues\":[\"all\",\"presentation-only\",\"none\"],\"description\":\"Politica visual do host para icones prefix/suffix de campos vindos da metadata. Use presentation-only para manter icones decorativos em apresentacao e ocultar em controles tradicionais.\"},{\"name\":\"enableCustomization\",\"type\":\"boolean\",\"description\":\"Habilita edição visual\"}]}",
|
|
9124
9162
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
9125
|
-
"contentHash": "
|
|
9163
|
+
"contentHash": "e93fea57af79dd4c3555659189c928b88f2e847c23e33fef63f17d412bc7aeca",
|
|
9126
9164
|
"sourceKind": "component_definition",
|
|
9127
9165
|
"sourceId": "praxis-dynamic-form",
|
|
9128
9166
|
"corpusVersion": "1.0.0"
|
|
@@ -9130,9 +9168,9 @@
|
|
|
9130
9168
|
{
|
|
9131
9169
|
"chunkIndex": 43,
|
|
9132
9170
|
"chunkKind": "authoring_manifest",
|
|
9133
|
-
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
9171
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"editableTargets\",\"editableTargets\":[{\"kind\":\"field\",\"resolver\":\"field-by-name-or-label\",\"description\":\"Campos do formulário (metadados schema-backed ou local; use para ops de propriedade)\"},{\"kind\":\"schemaBackedField\",\"resolver\":\"field-by-name-or-label\",\"description\":\"Campos com origem no schema do backend; não removíveis via authoring\"},{\"kind\":\"localField\",\"resolver\":\"field-by-name\",\"description\":\"Campos locais com source:\\\"local\\\"; adicionados/removidos via authoring\"},{\"kind\":\"section\",\"resolver\":\"section-by-id-or-title\",\"description\":\"Seções de layout identificadas por id estável\"},{\"kind\":\"row\",\"resolver\":\"row-by-id-in-section\",\"description\":\"Linhas dentro de seções, identificadas por id estável\"},{\"kind\":\"column\",\"resolver\":\"column-by-id-in-row\",\"description\":\"Colunas dentro de linhas, identificadas por id estável\"},{\"kind\":\"visualBlock\",\"resolver\":\"layout-item-by-id\",\"description\":\"Blocos visuais richContent em sections[].rows[].columns[].items[]; não participam do payload de submissão\"},{\"kind\":\"layoutPlacement\",\"resolver\":\"layout-placement-by-field\",\"description\":\"Posicionamento de campo no layout; target para ops de reposicionamento\"},{\"kind\":\"formAction\",\"resolver\":\"action-by-id-or-label\",\"description\":\"Ações da toolbar (submit, cancel, reset)\"},{\"kind\":\"formRule\",\"resolver\":\"rule-by-id-or-name\",\"description\":\"Regras de visibilidade e validação\"},{\"kind\":\"message\",\"resolver\":\"message-by-id\",\"description\":\"Mensagens inline do formulário (info, warning, error); ops em desenvolvimento\"}]}",
|
|
9134
9172
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
9135
|
-
"contentHash": "
|
|
9173
|
+
"contentHash": "d733c42c9c1d773170f2d96585d0797b7b1a8c8c581454c9fa9ae38d8904c4af",
|
|
9136
9174
|
"sourceKind": "component_definition",
|
|
9137
9175
|
"sourceId": "praxis-dynamic-form",
|
|
9138
9176
|
"corpusVersion": "1.0.0"
|
|
@@ -9140,9 +9178,9 @@
|
|
|
9140
9178
|
{
|
|
9141
9179
|
"chunkIndex": 44,
|
|
9142
9180
|
"chunkKind": "authoring_manifest",
|
|
9143
|
-
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
9181
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"field.label.set\",\"title\":\"Alterar rótulo do campo\",\"scope\":\"field\",\"targetKind\":\"field\",\"target\":{\"kind\":\"field\",\"resolver\":\"field-by-name-or-label\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"label\"],\"properties\":{\"label\":{\"type\":\"string\",\"minLength\":1}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"fieldMetadata[]\",\"key\":\"name\"}],\"validators\":[\"field-exists\"],\"affectedPaths\":[\"fieldMetadata[].label\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"field.placeholder.set\",\"title\":\"Alterar placeholder do campo\",\"scope\":\"field\",\"targetKind\":\"field\",\"target\":{\"kind\":\"field\",\"resolver\":\"field-by-name-or-label\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"placeholder\"],\"properties\":{\"placeholder\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"fieldMetadata[]\",\"key\":\"name\"}],\"validators\":[\"field-exists\"],\"affectedPaths\":[\"fieldMetadata[].placeholder\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"field.required.set\",\"title\":\"Definir obrigatoriedade\",\"scope\":\"field\",\"targetKind\":\"field\",\"target\":{\"kind\":\"field\",\"resolver\":\"field-by-name-or-label\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"required\"],\"properties\":{\"required\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"fieldMetadata[]\",\"key\":\"name\"}],\"validators\":[\"field-exists\"],\"affectedPaths\":[\"fieldMetadata[].required\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"field.readOnly.set\",\"title\":\"Definir campo como somente leitura\",\"scope\":\"field\",\"targetKind\":\"field\",\"target\":{\"kind\":\"field\",\"resolver\":\"field-by-name-or-label\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"readOnly\"],\"properties\":{\"readOnly\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"fieldMetadata[]\",\"key\":\"name\"}],\"validators\":[\"field-exists\"],\"affectedPaths\":[\"fieldMetadata[].readOnly\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"field.disabled.set\",\"title\":\"Definir campo como desabilitado\",\"scope\":\"field\",\"targetKind\":\"field\",\"target\":{\"kind\":\"field\",\"resolver\":\"field-by-name-or-label\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"disabled\"],\"properties\":{\"disabled\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"fieldMetadata[]\",\"key\":\"name\"}],\"validators\":[\"field-exists\"],\"affectedPaths\":[\"fieldMetadata[].disabled\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"field.hidden.set\",\"title\":\"Definir visibilidade inicial\",\"scope\":\"field\",\"targetKind\":\"field\",\"target\":{\"kind\":\"field\",\"resolver\":\"field-by-name-or-label\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"hidden\"],\"properties\":{\"hidden\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"fieldMetadata[]\",\"key\":\"name\"}],\"validators\":[\"field-exists\"],\"affectedPaths\":[\"fieldMetadata[].hidden\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"field.controlType.set\",\"title\":\"Alterar tipo de controle\",\"scope\":\"field\",\"targetKind\":\"field\",\"target\":{\"kind\":\"field\",\"resolver\":\"field-by-name-or-label\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"controlType\"],\"properties\":{\"controlType\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"fieldMetadata[]\",\"key\":\"name\"}],\"destructive\":true,\"requiresConfirmation\":true,\"validators\":[\"field-exists\",\"control-type-compatible\"],\"affectedPaths\":[\"fieldMetadata[].controlType\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"field.optionSource.set\",\"title\":\"Definir fonte de opções do campo\",\"scope\":\"field\",\"targetKind\":\"field\",\"target\":{\"kind\":\"field\",\"resolver\":\"field-by-name-or-label\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"optionSource\"],\"properties\":{\"optionSource\":{\"type\":\"object\",\"required\":[\"key\",\"type\",\"resourcePath\"],\"properties\":{\"key\":{\"type\":\"string\"},\"type\":{\"enum\":[\"RESOURCE_ENTITY\",\"DISTINCT_DIMENSION\",\"CATEGORICAL_BUCKET\",\"LIGHT_LOOKUP\",\"STATIC_CANONICAL\"]},\"resourcePath\":{\"type\":\"string\"},\"valuePropertyPath\":{\"type\":\"string\"},\"labelPropertyPath\":{\"type\":\"string\"},\"dependsOn\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"dependencyFilterMap\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"includeIds\":{\"type\":\"boolean\"},\"capabilities\":{\"type\":\"object\",\"properties\":{\"filter\":{\"type\":\"boolean\"},\"byIds\":{\"type\":\"boolean\"},\"detail\":{\"type\":\"boolean\"},\"create\":{\"type\":\"boolean\"}}},\"display\":{\"type\":\"object\"},\"selectionPolicy\":{\"type\":\"object\"}}}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"fieldMetadata[]\",\"key\":\"name\"}],\"validators\":[\"field-exists\",\"option-source-valid\"],\"affectedPaths\":[\"fieldMetadata[].optionSource\"],\"submissionImpact\":\"affects-remote-binding\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"field.local.add\",\"title\":\"Adicionar campo local\",\"scope\":\"global\",\"targetKind\":\"localField\",\"target\":{\"kind\":\"localField\",\"resolver\":\"field-by-name\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"name\",\"label\",\"controlType\",\"source\"],\"properties\":{\"name\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"controlType\":{\"type\":\"string\"},\"source\":{\"const\":\"local\",\"description\":\"Obrigatório. Discriminador que distingue campos locais de schema-backed.\"},\"transient\":{\"type\":\"boolean\",\"default\":false,\"description\":\"Se true, o valor não persiste entre navegações.\"},\"submitPolicy\":{\"enum\":[\"omit\",\"include\",\"includeWhenDirty\"],\"default\":\"omit\"}}},\"effects\":[{\"kind\":\"append-unique\",\"path\":\"fieldMetadata[]\",\"key\":\"name\"}],\"validators\":[\"field-name-unique\",\"local-schema-name-no-collision\"],\"affectedPaths\":[\"fieldMetadata[]\"],\"submissionImpact\":\"affects-submission\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"field.local.remove\",\"title\":\"Remover campo local\",\"scope\":\"field\",\"targetKind\":\"localField\",\"target\":{\"kind\":\"localField\",\"resolver\":\"field-by-name\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"properties\":{}},\"effects\":[{\"kind\":\"remove-by-key\",\"path\":\"fieldMetadata[]\",\"key\":\"name\"},{\"kind\":\"compile-domain-patch\",\"handler\":\"form-layout-field-cleanup\",\"handlerContract\":{\"reads\":[\"fieldMetadata[].name\",\"sections[].rows[].columns[].items\",\"sections[].rows[].columns[].fields\"],\"writes\":[\"sections[].rows[].columns[].items\",\"sections[].rows[].columns[].fields\"],\"identityKeys\":[\"fieldMetadata[].name\",\"sections[].id\",\"sections[].rows[].id\",\"sections[].rows[].columns[].id\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"target.name\"],\"properties\":{\"target.name\":{\"type\":\"string\"}}},\"failureModes\":[\"target-field-not-found\",\"target-field-not-local\",\"layout-reference-conflict\"],\"description\":\"Remove every layout placement that references the removed local field by fieldMetadata[].name.\"}}],\"destructive\":true,\"requiresConfirmation\":true,\"validators\":[\"field-exists\",\"field-is-local\"],\"affectedPaths\":[\"fieldMetadata[]\",\"sections[].rows[].columns[].items\",\"sections[].rows[].columns[].fields\"],\"submissionImpact\":\"affects-submission\",\"preconditions\":[\"config-initialized\",\"target-exists\"]}]}",
|
|
9144
9182
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
9145
|
-
"contentHash": "
|
|
9183
|
+
"contentHash": "64acd7446123eaf2a5c58e0fc944c333626af0fdac75d89253033873c2f1a8e1",
|
|
9146
9184
|
"sourceKind": "component_definition",
|
|
9147
9185
|
"sourceId": "praxis-dynamic-form",
|
|
9148
9186
|
"corpusVersion": "1.0.0"
|
|
@@ -9150,9 +9188,9 @@
|
|
|
9150
9188
|
{
|
|
9151
9189
|
"chunkIndex": 45,
|
|
9152
9190
|
"chunkKind": "authoring_manifest",
|
|
9153
|
-
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
9191
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"field.submitPolicy.set\",\"title\":\"Definir política de submissão do campo\",\"scope\":\"field\",\"targetKind\":\"localField\",\"target\":{\"kind\":\"localField\",\"resolver\":\"field-by-name\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"submitPolicy\"],\"properties\":{\"submitPolicy\":{\"enum\":[\"omit\",\"include\",\"includeWhenDirty\"]}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"fieldMetadata[]\",\"key\":\"name\"}],\"validators\":[\"field-exists\",\"field-is-local\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"fieldMetadata[].submitPolicy\"],\"submissionImpact\":\"affects-submission\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"layout.section.add\",\"title\":\"Adicionar nova seção\",\"scope\":\"global\",\"targetKind\":\"section\",\"target\":{\"kind\":\"section\",\"resolver\":\"section-by-id-or-title\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"id\",\"title\"],\"properties\":{\"id\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"collapsible\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"append-unique\",\"path\":\"sections[]\",\"key\":\"id\"}],\"validators\":[\"section-id-unique\"],\"affectedPaths\":[\"sections[]\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"layout.section.remove\",\"title\":\"Remover seção\",\"scope\":\"section\",\"targetKind\":\"section\",\"target\":{\"kind\":\"section\",\"resolver\":\"section-by-id-or-title\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"properties\":{}},\"effects\":[{\"kind\":\"remove-by-key\",\"path\":\"sections[]\",\"key\":\"id\"},{\"kind\":\"compile-domain-patch\",\"handler\":\"form-layout-section-cleanup\",\"handlerContract\":{\"reads\":[\"sections[].id\",\"sections[].rows[].id\",\"sections[].rows[].columns[].id\",\"sections[].rows[].columns[].items\",\"sections[].rows[].columns[].fields\"],\"writes\":[\"sections[]\"],\"identityKeys\":[\"sections[].id\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"target.id\"],\"properties\":{\"target.id\":{\"type\":\"string\"}}},\"failureModes\":[\"target-section-not-found\",\"ambiguous-section-target\"],\"description\":\"Removes the target section and its nested rows, columns, and field placements without deleting fieldMetadata records.\"}}],\"destructive\":true,\"requiresConfirmation\":true,\"validators\":[\"section-exists\"],\"affectedPaths\":[\"sections[]\",\"sections[].rows[]\",\"sections[].rows[].columns[]\",\"sections[].rows[].columns[].items\",\"sections[].rows[].columns[].fields\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"layout.row.add\",\"title\":\"Adicionar linha numa seção\",\"scope\":\"section\",\"targetKind\":\"section\",\"target\":{\"kind\":\"section\",\"resolver\":\"section-by-id-or-title\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"id\"],\"properties\":{\"id\":{\"type\":\"string\"},\"columns\":{\"type\":\"number\",\"minimum\":1,\"maximum\":12,\"default\":1}}},\"effects\":[{\"kind\":\"append-unique\",\"path\":\"sections[].rows[]\",\"key\":\"id\"}],\"validators\":[\"section-exists\",\"row-id-unique-in-section\"],\"affectedPaths\":[\"sections[].rows[]\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"layout.column.add\",\"title\":\"Adicionar coluna numa linha\",\"scope\":\"row\",\"targetKind\":\"row\",\"target\":{\"kind\":\"row\",\"resolver\":\"row-by-id-in-section\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"id\"],\"properties\":{\"id\":{\"type\":\"string\"},\"span\":{\"type\":\"number\",\"minimum\":1,\"maximum\":12,\"default\":6}}},\"effects\":[{\"kind\":\"append-unique\",\"path\":\"sections[].rows[].columns[]\",\"key\":\"id\"}],\"validators\":[\"row-exists\",\"column-id-unique-in-row\"],\"affectedPaths\":[\"sections[].rows[].columns[]\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"layout.field.move\",\"title\":\"Mover campo no layout\",\"scope\":\"field\",\"targetKind\":\"field\",\"target\":{\"kind\":\"field\",\"resolver\":\"field-by-name-or-label\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"targetSectionId\",\"targetRowId\",\"targetColumnId\"],\"properties\":{\"targetSectionId\":{\"type\":\"string\"},\"targetRowId\":{\"type\":\"string\"},\"targetColumnId\":{\"type\":\"string\"},\"index\":{\"type\":\"number\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"form-layout-reconciler\",\"handlerContract\":{\"reads\":[\"fieldMetadata[].name\",\"sections[].id\",\"sections[].rows[].id\",\"sections[].rows[].columns[].id\",\"sections[].rows[].columns[].items\",\"sections[].rows[].columns[].fields\"],\"writes\":[\"sections[].rows[].columns[].items\",\"sections[].rows[].columns[].fields\"],\"identityKeys\":[\"fieldMetadata[].name\",\"sections[].id\",\"sections[].rows[].id\",\"sections[].rows[].columns[].id\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"target.name\",\"targetSectionId\",\"targetRowId\",\"targetColumnId\"],\"properties\":{\"target.name\":{\"type\":\"string\"},\"targetSectionId\":{\"type\":\"string\"},\"targetRowId\":{\"type\":\"string\"},\"targetColumnId\":{\"type\":\"string\"},\"index\":{\"type\":\"number\"}}},\"failureModes\":[\"target-field-not-found\",\"target-layout-location-not-found\",\"ambiguous-field-target\",\"duplicate-field-placement\"],\"description\":\"Moves a field placement by stable section, row, column, and field ids; index is insertion position only.\"}}],\"validators\":[\"field-exists\",\"layout-target-exists\",\"no-index-as-identity\",\"field-exists-in-layout\"],\"affectedPaths\":[\"sections[].rows[].columns[].items\",\"sections[].rows[].columns[].fields\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"layout.visualBlock.add\",\"title\":\"Adicionar bloco visual\",\"scope\":\"column\",\"targetKind\":\"column\",\"target\":{\"kind\":\"column\",\"resolver\":\"column-by-id-in-row\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"id\",\"document\"],\"properties\":{\"id\":{\"type\":\"string\"},\"document\":{\"type\":\"object\",\"required\":[\"kind\",\"version\",\"nodes\"],\"properties\":{\"kind\":{\"const\":\"praxis.rich-content\"},\"version\":{\"type\":\"string\"},\"nodes\":{\"type\":\"array\"}}},\"layout\":{\"enum\":[\"block\",\"inline\"],\"default\":\"block\"},\"rootClassName\":{\"type\":[\"string\",\"null\"]},\"index\":{\"type\":\"number\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"form-layout-visual-block-add\",\"handlerContract\":{\"reads\":[\"sections[].id\",\"sections[].rows[].id\",\"sections[].rows[].columns[].id\",\"sections[].rows[].columns[].items\"],\"writes\":[\"sections[].rows[].columns[].items\"],\"identityKeys\":[\"sections[].id\",\"sections[].rows[].id\",\"sections[].rows[].columns[].id\",\"sections[].rows[].columns[].items[].id\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"target.sectionId\",\"target.rowId\",\"target.columnId\",\"id\",\"document\"],\"properties\":{\"target.sectionId\":{\"type\":\"string\"},\"target.rowId\":{\"type\":\"string\"},\"target.columnId\":{\"type\":\"string\"},\"id\":{\"type\":\"string\"},\"document\":{\"type\":\"object\"},\"layout\":{\"enum\":[\"block\",\"inline\"]},\"rootClassName\":{\"type\":[\"string\",\"null\"]},\"index\":{\"type\":\"number\"}}},\"failureModes\":[\"target-layout-location-not-found\",\"duplicate-visual-block-id\",\"invalid-rich-content-document\"],\"description\":\"Adds a richContent layout item into sections[].rows[].columns[].items[] by stable section, row, and column ids.\"}}],\"validators\":[\"layout-target-exists\",\"visual-block-id-unique\",\"rich-content-document-valid\"],\"affectedPaths\":[\"sections[].rows[].columns[].items\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]}]}",
|
|
9154
9192
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
9155
|
-
"contentHash": "
|
|
9193
|
+
"contentHash": "ff2c1cd03c97456695f090867878d0fd7c73eec5079e609f2bf17c3efa40b573",
|
|
9156
9194
|
"sourceKind": "component_definition",
|
|
9157
9195
|
"sourceId": "praxis-dynamic-form",
|
|
9158
9196
|
"corpusVersion": "1.0.0"
|
|
@@ -9160,9 +9198,9 @@
|
|
|
9160
9198
|
{
|
|
9161
9199
|
"chunkIndex": 46,
|
|
9162
9200
|
"chunkKind": "authoring_manifest",
|
|
9163
|
-
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
9201
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"layout.visualBlock.update\",\"title\":\"Atualizar bloco visual\",\"scope\":\"layout\",\"targetKind\":\"visualBlock\",\"target\":{\"kind\":\"visualBlock\",\"resolver\":\"layout-item-by-id\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"document\":{\"type\":\"object\",\"required\":[\"kind\",\"version\",\"nodes\"],\"properties\":{\"kind\":{\"const\":\"praxis.rich-content\"},\"version\":{\"type\":\"string\"},\"nodes\":{\"type\":\"array\"}}},\"layout\":{\"enum\":[\"block\",\"inline\"]},\"rootClassName\":{\"type\":[\"string\",\"null\"]}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"form-layout-visual-block-update\",\"handlerContract\":{\"reads\":[\"sections[].rows[].columns[].items[].id\"],\"writes\":[\"sections[].rows[].columns[].items\"],\"identityKeys\":[\"sections[].id\",\"sections[].rows[].id\",\"sections[].rows[].columns[].id\",\"sections[].rows[].columns[].items[].id\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"target.itemId\"],\"properties\":{\"target.itemId\":{\"type\":\"string\"},\"document\":{\"type\":\"object\"},\"layout\":{\"enum\":[\"block\",\"inline\"]},\"rootClassName\":{\"type\":[\"string\",\"null\"]}}},\"failureModes\":[\"target-visual-block-not-found\",\"invalid-rich-content-document\"],\"description\":\"Updates a richContent layout item by stable layout item id without touching fieldMetadata or form submit payload.\"}}],\"validators\":[\"visual-block-exists\",\"rich-content-document-valid\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"sections[].rows[].columns[].items\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"layout.visualBlock.move\",\"title\":\"Mover bloco visual\",\"scope\":\"layout\",\"targetKind\":\"visualBlock\",\"target\":{\"kind\":\"visualBlock\",\"resolver\":\"layout-item-by-id\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"targetSectionId\",\"targetRowId\",\"targetColumnId\"],\"properties\":{\"targetSectionId\":{\"type\":\"string\"},\"targetRowId\":{\"type\":\"string\"},\"targetColumnId\":{\"type\":\"string\"},\"index\":{\"type\":\"number\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"form-layout-visual-block-move\",\"handlerContract\":{\"reads\":[\"sections[].id\",\"sections[].rows[].id\",\"sections[].rows[].columns[].id\",\"sections[].rows[].columns[].items[].id\"],\"writes\":[\"sections[].rows[].columns[].items\"],\"identityKeys\":[\"sections[].id\",\"sections[].rows[].id\",\"sections[].rows[].columns[].id\",\"sections[].rows[].columns[].items[].id\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"target.itemId\",\"targetSectionId\",\"targetRowId\",\"targetColumnId\"],\"properties\":{\"target.itemId\":{\"type\":\"string\"},\"targetSectionId\":{\"type\":\"string\"},\"targetRowId\":{\"type\":\"string\"},\"targetColumnId\":{\"type\":\"string\"},\"index\":{\"type\":\"number\"}}},\"failureModes\":[\"target-visual-block-not-found\",\"target-layout-location-not-found\",\"ambiguous-visual-block-target\"],\"description\":\"Moves a richContent layout item by stable item, section, row, and column ids; index is insertion position only.\"}}],\"validators\":[\"visual-block-exists\",\"layout-target-exists\",\"no-index-as-identity\"],\"affectedPaths\":[\"sections[].rows[].columns[].items\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"layout.visualBlock.remove\",\"title\":\"Remover bloco visual\",\"scope\":\"layout\",\"targetKind\":\"visualBlock\",\"target\":{\"kind\":\"visualBlock\",\"resolver\":\"layout-item-by-id\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"properties\":{}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"form-layout-visual-block-remove\",\"handlerContract\":{\"reads\":[\"sections[].rows[].columns[].items[].id\"],\"writes\":[\"sections[].rows[].columns[].items\"],\"identityKeys\":[\"sections[].id\",\"sections[].rows[].id\",\"sections[].rows[].columns[].id\",\"sections[].rows[].columns[].items[].id\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"target.itemId\"],\"properties\":{\"target.itemId\":{\"type\":\"string\"}}},\"failureModes\":[\"target-visual-block-not-found\",\"ambiguous-visual-block-target\"],\"description\":\"Removes a richContent layout item from sections[].rows[].columns[].items[] without touching fieldMetadata or form submit payload.\"}}],\"destructive\":true,\"requiresConfirmation\":true,\"validators\":[\"visual-block-exists\"],\"affectedPaths\":[\"sections[].rows[].columns[].items\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"rule.visibility.add\",\"title\":\"Adicionar regra de visibilidade\",\"scope\":\"global\",\"targetKind\":\"formRule\",\"target\":{\"kind\":\"formRule\",\"resolver\":\"rule-by-id-or-name\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"id\",\"type\",\"targets\",\"condition\",\"metadata\"],\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"type\":{\"const\":\"visibility\",\"description\":\"Discriminador de tipo da regra; obrigatório para distinção em formRules[]\"},\"targetType\":{\"enum\":[\"field\",\"section\",\"row\",\"column\",\"action\",\"visualBlock\"],\"default\":\"field\"},\"targets\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"minItems\":1},\"condition\":{\"type\":\"object\",\"description\":\"JsonLogic AST. Visual-safe subset: field comparisons with scalar or field operands plus and/or groups. Advanced operators are runtime JSON-only until focused visual round-trip support exists.\"},\"metadata\":{\"type\":\"object\",\"required\":[\"origin\",\"reviewStatus\"],\"properties\":{\"origin\":{\"const\":\"llm\",\"description\":\"Origem obrigatória para regra sugerida por IA.\"},\"reviewStatus\":{\"const\":\"pending\",\"description\":\"Toda regra criada pela IA entra pendente de revisão humana.\"}}}}},\"effects\":[{\"kind\":\"append-unique\",\"path\":\"formRules[]\",\"key\":\"id\"}],\"validators\":[\"rule-id-unique\",\"rule-target-refs-exist\",\"json-logic-valid\"],\"affectedPaths\":[\"formRules[]\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"rule.validation.add\",\"title\":\"Adicionar regra de validação\",\"scope\":\"global\",\"targetKind\":\"formRule\",\"target\":{\"kind\":\"formRule\",\"resolver\":\"rule-by-id-or-name\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"id\",\"type\",\"targets\",\"condition\",\"message\",\"metadata\"],\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"type\":{\"const\":\"validation\",\"description\":\"Discriminador de tipo da regra; obrigatório para distinção em formRules[]\"},\"targetType\":{\"enum\":[\"field\",\"section\",\"row\",\"column\",\"action\",\"visualBlock\"],\"default\":\"field\"},\"targets\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"minItems\":1},\"condition\":{\"type\":\"object\",\"description\":\"JsonLogic AST; quando true, exibe mensagem de erro. Visual-safe subset: field comparisons with scalar or field operands plus and/or groups. Advanced operators are runtime JSON-only until focused visual round-trip support exists.\"},\"message\":{\"type\":\"string\",\"description\":\"Mensagem de erro a exibir ao usuário\"},\"level\":{\"enum\":[\"error\",\"warning\"],\"default\":\"error\"},\"metadata\":{\"type\":\"object\",\"required\":[\"origin\",\"reviewStatus\"],\"properties\":{\"origin\":{\"const\":\"llm\",\"description\":\"Origem obrigatória para regra sugerida por IA.\"},\"reviewStatus\":{\"const\":\"pending\",\"description\":\"Toda regra criada pela IA entra pendente de revisão humana.\"}}}}},\"effects\":[{\"kind\":\"append-unique\",\"path\":\"formRules[]\",\"key\":\"id\"}],\"validators\":[\"rule-id-unique\",\"rule-target-refs-exist\",\"json-logic-valid\"],\"affectedPaths\":[\"formRules[]\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"config-initialized\"]}]}",
|
|
9164
9202
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
9165
|
-
"contentHash": "
|
|
9203
|
+
"contentHash": "2aa12b322a36ad2ea5a412c07d70f1d375a89c6d7a2a34a3bb700bc004a9e33d",
|
|
9166
9204
|
"sourceKind": "component_definition",
|
|
9167
9205
|
"sourceId": "praxis-dynamic-form",
|
|
9168
9206
|
"corpusVersion": "1.0.0"
|
|
@@ -9170,9 +9208,9 @@
|
|
|
9170
9208
|
{
|
|
9171
9209
|
"chunkIndex": 47,
|
|
9172
9210
|
"chunkKind": "authoring_manifest",
|
|
9173
|
-
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
9211
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"rule.computedValue.add\",\"title\":\"Adicionar regra de valor calculado\",\"scope\":\"global\",\"targetKind\":\"formRule\",\"target\":{\"kind\":\"formRule\",\"resolver\":\"rule-by-id-or-name\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"id\",\"type\",\"targets\",\"condition\",\"value\",\"metadata\"],\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"type\":{\"const\":\"computedValue\",\"description\":\"Discriminador de regra que escreve effect.properties.value em formRules[].\"},\"targetType\":{\"const\":\"field\",\"description\":\"Valor calculado só é materializado em FormControl de campo.\"},\"targets\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"minItems\":1},\"condition\":{\"type\":\"object\",\"description\":\"JsonLogic AST; quando true aplica value, quando false aplica valueWhenFalse se informado. Computed expressions are runtime JSON-only unless a focused visual round-trip path exists.\"},\"value\":{\"type\":\"object\",\"description\":\"Envelope obrigatório e fechado: exatamente { expression: <JsonLogic> } para cálculo ou exatamente { literal: <valor> } para valor literal estruturado.\",\"oneOf\":[{\"required\":[\"expression\"],\"not\":{\"required\":[\"literal\"]},\"additionalProperties\":false},{\"required\":[\"literal\"],\"not\":{\"required\":[\"expression\"]},\"additionalProperties\":false}],\"properties\":{\"expression\":{\"type\":\"object\",\"description\":\"JsonLogic AST avaliado contra o contexto do formulário.\"},\"literal\":{\"description\":\"Valor literal, inclusive objeto estruturado.\"}}},\"valueWhenFalse\":{\"type\":\"object\",\"description\":\"Envelope opcional e fechado aplicado no ramo falso. Use exatamente { literal: null } para limpar o valor.\",\"oneOf\":[{\"required\":[\"expression\"],\"not\":{\"required\":[\"literal\"]},\"additionalProperties\":false},{\"required\":[\"literal\"],\"not\":{\"required\":[\"expression\"]},\"additionalProperties\":false}],\"properties\":{\"expression\":{\"type\":\"object\",\"description\":\"JsonLogic AST avaliado contra o contexto do formulário.\"},\"literal\":{\"description\":\"Valor literal, inclusive null.\"}}},\"metadata\":{\"type\":\"object\",\"required\":[\"origin\",\"reviewStatus\"],\"properties\":{\"origin\":{\"const\":\"llm\",\"description\":\"Origem obrigatória para regra sugerida por IA.\"},\"reviewStatus\":{\"const\":\"pending\",\"description\":\"Toda regra criada pela IA entra pendente de revisão humana.\"}}}}},\"effects\":[{\"kind\":\"append-unique\",\"path\":\"formRules[]\",\"key\":\"id\"}],\"validators\":[\"rule-id-unique\",\"rule-target-refs-exist\",\"json-logic-valid\",\"computed-value-envelope-valid\"],\"affectedPaths\":[\"formRules[]\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"rule.visualBlockGuidance.add\",\"title\":\"Materializar orientação visual derivada\",\"scope\":\"global\",\"targetKind\":\"formRule\",\"target\":{\"kind\":\"formRule\",\"resolver\":\"rule-by-id-or-name\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"id\",\"type\",\"targetType\",\"targets\",\"condition\",\"properties\",\"metadata\"],\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"type\":{\"const\":\"visualBlockGuidance\",\"description\":\"Discriminador para regra de orientação visual derivada em formRules[].\"},\"targetType\":{\"const\":\"visualBlock\",\"description\":\"Projeções visuais sempre apontam para richContent layout items e não representam a decisão canônica.\"},\"context\":{\"enum\":[\"notification\",\"style\"],\"default\":\"notification\"},\"targets\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"minItems\":1},\"condition\":{\"type\":\"object\",\"description\":\"JsonLogic AST; quando true aplica properties, quando false aplica propertiesWhenFalse. Visual-safe subset: field comparisons with scalar or field operands plus and/or groups. Advanced operators are runtime JSON-only until focused visual round-trip support exists.\"},\"properties\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"visible\":{\"type\":\"boolean\"},\"hidden\":{\"type\":\"boolean\"},\"layout\":{\"enum\":[\"block\",\"inline\"]},\"className\":{\"type\":\"string\"},\"rootClassName\":{\"type\":\"string\"},\"style\":{\"type\":\"object\"},\"text\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"message\":{\"type\":\"string\"},\"textNodeId\":{\"type\":\"string\"},\"titleNodeId\":{\"type\":\"string\"},\"messageNodeId\":{\"type\":\"string\"}},\"description\":\"Use apenas propriedades suportadas por RULE_PROPERTY_SCHEMA.visualBlock; não escreva document, HTML, handlers, dados de payload ou regra de negócio canônica.\"},\"propertiesWhenFalse\":{\"type\":\"object\",\"properties\":{\"visible\":{\"type\":\"boolean\"},\"hidden\":{\"type\":\"boolean\"},\"layout\":{\"enum\":[\"block\",\"inline\"]},\"className\":{\"type\":\"string\"},\"rootClassName\":{\"type\":\"string\"},\"style\":{\"type\":\"object\"},\"text\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"message\":{\"type\":\"string\"},\"textNodeId\":{\"type\":\"string\"},\"titleNodeId\":{\"type\":\"string\"},\"messageNodeId\":{\"type\":\"string\"}}},\"metadata\":{\"type\":\"object\",\"required\":[\"origin\",\"reviewStatus\"],\"properties\":{\"origin\":{\"const\":\"llm\",\"description\":\"Origem obrigatória para regra sugerida por IA.\"},\"reviewStatus\":{\"const\":\"pending\",\"description\":\"Toda regra criada pela IA entra pendente de revisão humana.\"}}}}},\"effects\":[{\"kind\":\"append-unique\",\"path\":\"formRules[]\",\"key\":\"id\"}],\"validators\":[\"rule-id-unique\",\"visual-block-exists\",\"json-logic-valid\"],\"affectedPaths\":[\"formRules[]\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"rule.remove\",\"title\":\"Remover regra\",\"scope\":\"rule\",\"targetKind\":\"formRule\",\"target\":{\"kind\":\"formRule\",\"resolver\":\"rule-by-id-or-name\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"properties\":{}},\"effects\":[{\"kind\":\"remove-by-key\",\"path\":\"formRules[]\",\"key\":\"id\"}],\"destructive\":true,\"requiresConfirmation\":true,\"validators\":[\"rule-exists\"],\"affectedPaths\":[\"formRules[]\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"config-initialized\",\"target-exists\"]},{\"operationId\":\"action.submit.configure\",\"title\":\"Configurar botão de envio\",\"scope\":\"global\",\"targetKind\":\"formAction\",\"target\":{\"kind\":\"formAction\",\"resolver\":\"action-by-id-or-label\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"label\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"visible\":{\"type\":\"boolean\"},\"color\":{\"enum\":[\"primary\",\"accent\",\"warn\",\"basic\"]}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"actions.submit\"}],\"validators\":[\"editor-round-trip-preserve\"],\"affectedPaths\":[\"actions.submit\"],\"submissionImpact\":\"affects-submission\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"action.cancel.configure\",\"title\":\"Configurar botão de cancelar\",\"scope\":\"global\",\"targetKind\":\"formAction\",\"target\":{\"kind\":\"formAction\",\"resolver\":\"action-by-id-or-label\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"label\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"visible\":{\"type\":\"boolean\"},\"color\":{\"enum\":[\"primary\",\"accent\",\"warn\",\"basic\"]},\"navigateTo\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"actions.cancel\"}],\"validators\":[\"editor-round-trip-preserve\"],\"affectedPaths\":[\"actions.cancel\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]}]}",
|
|
9174
9212
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
9175
|
-
"contentHash": "
|
|
9213
|
+
"contentHash": "55cf6fb06e5448b4ae14e2fad80f7e84e24ca3d08d38325dde72b2d51bc17859",
|
|
9176
9214
|
"sourceKind": "component_definition",
|
|
9177
9215
|
"sourceId": "praxis-dynamic-form",
|
|
9178
9216
|
"corpusVersion": "1.0.0"
|
|
@@ -9180,9 +9218,9 @@
|
|
|
9180
9218
|
{
|
|
9181
9219
|
"chunkIndex": 48,
|
|
9182
9220
|
"chunkKind": "authoring_manifest",
|
|
9183
|
-
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
9221
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"action.reset.configure\",\"title\":\"Configurar botão de reset\",\"scope\":\"global\",\"targetKind\":\"formAction\",\"target\":{\"kind\":\"formAction\",\"resolver\":\"action-by-id-or-label\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"label\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"visible\":{\"type\":\"boolean\"},\"color\":{\"enum\":[\"primary\",\"accent\",\"warn\",\"basic\"]},\"confirmBeforeReset\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"actions.reset\"}],\"validators\":[\"editor-round-trip-preserve\"],\"affectedPaths\":[\"actions.reset\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]}]}",
|
|
9184
9222
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
9185
|
-
"contentHash": "
|
|
9223
|
+
"contentHash": "313d1439a63b49cac52ea25453af79c7097752c17cfd659ef99fa67dc521bb2e",
|
|
9186
9224
|
"sourceKind": "component_definition",
|
|
9187
9225
|
"sourceId": "praxis-dynamic-form",
|
|
9188
9226
|
"corpusVersion": "1.0.0"
|
|
@@ -9190,9 +9228,9 @@
|
|
|
9190
9228
|
{
|
|
9191
9229
|
"chunkIndex": 49,
|
|
9192
9230
|
"chunkKind": "authoring_manifest",
|
|
9193
|
-
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
9231
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"validators\",\"validators\":[{\"validatorId\":\"field-exists\",\"level\":\"error\",\"code\":\"DF001\",\"description\":\"O campo alvo deve existir em fieldMetadata.\"},{\"validatorId\":\"field-name-unique\",\"level\":\"error\",\"code\":\"DF002\",\"description\":\"Nomes de campos devem ser únicos em fieldMetadata.\"},{\"validatorId\":\"section-id-unique\",\"level\":\"error\",\"code\":\"DF003\",\"description\":\"IDs de seções devem ser únicos em sections[].\"},{\"validatorId\":\"section-exists\",\"level\":\"error\",\"code\":\"DF004\",\"description\":\"A seção alvo deve existir em sections[].\"},{\"validatorId\":\"field-exists-in-layout\",\"level\":\"warning\",\"code\":\"DF005\",\"description\":\"Campo definido em fieldMetadata mas ausente no layout.\"},{\"validatorId\":\"local-schema-name-no-collision\",\"level\":\"error\",\"code\":\"DF006\",\"description\":\"Nome de campo local não pode colidir com campo schema-backed existente.\"},{\"validatorId\":\"field-is-local\",\"level\":\"error\",\"code\":\"DF007\",\"description\":\"Operação restrita a campos locais (source:\\\"local\\\"). Campo schema-backed não pode ser removido ou ter submitPolicy alterada.\"},{\"validatorId\":\"rule-id-unique\",\"level\":\"error\",\"code\":\"DF008\",\"description\":\"IDs de regras devem ser únicos em formRules[].\"},{\"validatorId\":\"rule-exists\",\"level\":\"error\",\"code\":\"DF009\",\"description\":\"A regra alvo deve existir em formRules[].\"},{\"validatorId\":\"rule-target-refs-exist\",\"level\":\"error\",\"code\":\"DF010\",\"description\":\"Todos os targets da regra devem referenciar campos, seções, ações ou blocos visuais existentes.\"},{\"validatorId\":\"computed-value-envelope-valid\",\"level\":\"error\",\"code\":\"DF023\",\"description\":\"Valores calculados devem usar envelope explícito e fechado, exatamente { expression: <JsonLogic> } ou exatamente { literal: <valor> }; objetos literais sem envelope ou envelopes com chaves extras são ambíguos.\"},{\"validatorId\":\"json-logic-valid\",\"level\":\"error\",\"code\":\"DF011\",\"description\":\"A expressão JsonLogic deve ser um AST válido (suporte canônico à spec JsonLogic).\"},{\"validatorId\":\"layout-target-exists\",\"level\":\"error\",\"code\":\"DF012\",\"description\":\"A seção/linha/coluna de destino devem existir antes de mover o campo.\"},{\"validatorId\":\"no-index-as-identity\",\"level\":\"error\",\"code\":\"DF013\",\"description\":\"Operações de layout não devem usar índice de array como identidade canônica; use IDs estáveis.\"},{\"validatorId\":\"row-exists\",\"level\":\"error\",\"code\":\"DF014\",\"description\":\"A linha alvo deve existir na seção especificada.\"},{\"validatorId\":\"row-id-unique-in-section\",\"level\":\"error\",\"code\":\"DF015\",\"description\":\"O id da nova linha deve ser único dentro da seção alvo.\"},{\"validatorId\":\"column-id-unique-in-row\",\"level\":\"error\",\"code\":\"DF016\",\"description\":\"O id da nova coluna deve ser único dentro da linha alvo.\"},{\"validatorId\":\"control-type-compatible\",\"level\":\"error\",\"code\":\"DF017\",\"description\":\"O tipo de controle deve ser compatível com o tipo de dado do campo.\"},{\"validatorId\":\"option-source-valid\",\"level\":\"error\",\"code\":\"DF018\",\"description\":\"A fonte de opções deve ser válida para o tipo de controle especificado.\"},{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"DF019\",\"description\":\"Edição não deve corromper propriedades críticas para o round-trip do editor. Aplicado após operações que afetam submitPolicy ou source de campos locais.\"},{\"validatorId\":\"visual-block-exists\",\"level\":\"error\",\"code\":\"DF020\",\"description\":\"O bloco visual alvo deve existir como item kind:\\\"richContent\\\" em sections[].rows[].columns[].items[].\"},{\"validatorId\":\"visual-block-id-unique\",\"level\":\"error\",\"code\":\"DF021\",\"description\":\"IDs de blocos visuais devem ser unicos entre os itens de layout do formulario.\"},{\"validatorId\":\"rich-content-document-valid\",\"level\":\"error\",\"code\":\"DF022\",\"description\":\"O document do bloco visual deve seguir o contrato RichContentDocument canonico.\"}]}",
|
|
9194
9232
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
9195
|
-
"contentHash": "
|
|
9233
|
+
"contentHash": "ba4102e345da5dbb04678c0337027d257df2b86551ec4c647df09fc199aa84e2",
|
|
9196
9234
|
"sourceKind": "component_definition",
|
|
9197
9235
|
"sourceId": "praxis-dynamic-form",
|
|
9198
9236
|
"corpusVersion": "1.0.0"
|
|
@@ -9200,9 +9238,9 @@
|
|
|
9200
9238
|
{
|
|
9201
9239
|
"chunkIndex": 50,
|
|
9202
9240
|
"chunkKind": "authoring_manifest",
|
|
9203
|
-
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
9241
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"roundTripRequirements\",\"roundTripRequirements\":[\"strip-undefined\",\"normalize-json-logic\",\"stable-field-order\",\"preserve-column-layout-items\",\"preserve-local-field-source\",\"preserve-section-row-column-ids\"]}",
|
|
9204
9242
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
9205
|
-
"contentHash": "
|
|
9243
|
+
"contentHash": "fac53441219f27736d86a755f42c8c2961b8b3ec7798681382b7d38655a11f63",
|
|
9206
9244
|
"sourceKind": "component_definition",
|
|
9207
9245
|
"sourceId": "praxis-dynamic-form",
|
|
9208
9246
|
"corpusVersion": "1.0.0"
|
|
@@ -9210,9 +9248,9 @@
|
|
|
9210
9248
|
{
|
|
9211
9249
|
"chunkIndex": 51,
|
|
9212
9250
|
"chunkKind": "authoring_manifest",
|
|
9213
|
-
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.
|
|
9251
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.5.2\",\"componentId\":\"praxis-dynamic-form\",\"ownerPackage\":\"@praxisui/dynamic-form\",\"configSchemaId\":\"FormConfig\",\"chunkSection\":\"examples\",\"examples\":[{\"id\":\"add-local-transient-field\",\"request\":\"Adicionar campo auxiliar local \\\"notasInternas\\\" que não deve aparecer no payload de envio\",\"operationId\":\"field.local.add\",\"params\":{\"name\":\"notasInternas\",\"label\":\"Notas Internas\",\"controlType\":\"textarea\",\"source\":\"local\",\"transient\":true,\"submitPolicy\":\"omit\"},\"isPositive\":true},{\"id\":\"relabel-schema-backed-field\",\"request\":\"Mudar o label do campo email para \\\"E-mail Corporativo\\\"\",\"operationId\":\"field.label.set\",\"target\":\"email\",\"params\":{\"label\":\"E-mail Corporativo\"},\"isPositive\":true},{\"id\":\"move-field-to-column\",\"request\":\"Mover campo telefone para a primeira coluna da seção de contato\",\"operationId\":\"layout.field.move\",\"target\":\"telefone\",\"params\":{\"targetSectionId\":\"secao-contato\",\"targetRowId\":\"row-1\",\"targetColumnId\":\"col-1\"},\"isPositive\":true},{\"id\":\"add-visual-block\",\"request\":\"Adicionar um aviso visual antes dos campos de contato\",\"operationId\":\"layout.visualBlock.add\",\"target\":\"col-contato\",\"params\":{\"id\":\"aviso-contato\",\"document\":{\"kind\":\"praxis.rich-content\",\"version\":\"1.0.0\",\"nodes\":[{\"type\":\"text\",\"text\":\"Confira os dados antes de salvar.\"}]},\"layout\":\"block\"},\"isPositive\":true},{\"id\":\"move-visual-block\",\"request\":\"Mover o aviso visual para a segunda coluna da secao de contato\",\"operationId\":\"layout.visualBlock.move\",\"target\":\"aviso-contato\",\"params\":{\"targetSectionId\":\"secao-contato\",\"targetRowId\":\"row-1\",\"targetColumnId\":\"col-2\"},\"isPositive\":true},{\"id\":\"add-visibility-rule\",\"request\":\"Ocultar o campo cpf quando o tipo de pessoa for jurídica\",\"operationId\":\"rule.visibility.add\",\"params\":{\"id\":\"ocultar-cpf-pj\",\"name\":\"Ocultar CPF para PJ\",\"targetType\":\"field\",\"targets\":[\"cpf\"],\"condition\":{\"==\":[{\"var\":\"tipoPessoa\"},\"juridica\"]}},\"isPositive\":true},{\"id\":\"add-computed-value-rule\",\"request\":\"Calcular idade a partir da data de nascimento e limpar quando a data estiver vazia\",\"operationId\":\"rule.computedValue.add\",\"params\":{\"id\":\"birth-date-computes-age\",\"name\":\"Calcular idade\",\"type\":\"computedValue\",\"targetType\":\"field\",\"targets\":[\"age\"],\"condition\":{\"!\":[{\"isBlank\":[{\"var\":\"birthDate\"}]}]},\"value\":{\"expression\":{\"yearsSince\":[{\"var\":\"birthDate\"}]}},\"valueWhenFalse\":{},\"metadata\":{\"origin\":\"llm\",\"reviewStatus\":\"pending\"}},\"isPositive\":true},{\"id\":\"add-visual-block-guidance-rule\",\"request\":\"Materializar no aviso visual a decisao governada que exige aprovacao de compliance para fornecedor com risco critico\",\"operationId\":\"rule.visualBlockGuidance.add\",\"params\":{\"id\":\"supplier-risk-guidance\",\"name\":\"Supplier risk guidance\",\"type\":\"visualBlockGuidance\",\"targetType\":\"visualBlock\",\"targets\":[\"supplier-risk-notice\"],\"condition\":{\"===\":[{\"var\":\"riscoFornecedor\"},\"critico\"]},\"properties\":{\"message\":\"Fornecedor critico exige aprovacao de compliance antes de emitir o pedido.\",\"messageNodeId\":\"message\",\"className\":\"supplier-risk-notice supplier-risk-notice--critical\"},\"propertiesWhenFalse\":{\"message\":\"Fornecedor sem bloqueios criticos para este pedido.\",\"messageNodeId\":\"message\",\"className\":\"supplier-risk-notice supplier-risk-notice--neutral\"},\"metadata\":{\"origin\":\"llm\",\"reviewStatus\":\"pending\"}},\"isPositive\":true},{\"id\":\"reject-unknown-field\",\"request\":\"Alterar o label do campo \\\"campoInexistente\\\"\",\"operationId\":\"field.label.set\",\"target\":\"campoInexistente\",\"params\":{\"label\":\"Novo Label\"},\"isPositive\":false},{\"id\":\"require-confirmation-remove-field\",\"request\":\"Remover o campo auxiliar \\\"notasInternas\\\"\",\"operationId\":\"field.local.remove\",\"target\":\"notasInternas\",\"isPositive\":true},{\"id\":\"require-confirmation-remove-section\",\"request\":\"Remover a seção \\\"Dados Adicionais\\\"\",\"operationId\":\"layout.section.remove\",\"target\":\"secao-dados-adicionais\",\"isPositive\":true},{\"id\":\"round-trip-no-drift\",\"request\":\"Salvar e reabrir o formulário editado sem drift de configuração\",\"operationId\":\"field.label.set\",\"target\":\"nome\",\"params\":{\"label\":\"Nome Completo\"},\"isPositive\":true}]}",
|
|
9214
9252
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/praxis-dynamic-form-authoring-manifest.ts",
|
|
9215
|
-
"contentHash": "
|
|
9253
|
+
"contentHash": "3bf6baed11879594c48bcbd64eb4921e7266855e404390ed4a3741a5b31e9b96",
|
|
9216
9254
|
"sourceKind": "component_definition",
|
|
9217
9255
|
"sourceId": "praxis-dynamic-form",
|
|
9218
9256
|
"corpusVersion": "1.0.0"
|
|
@@ -13563,6 +13601,17 @@
|
|
|
13563
13601
|
"description": "Preset usado somente na criacao inicial de FormConfig a partir de schema/metadata.",
|
|
13564
13602
|
"safetyNotes": "Nao reprocessa layouts ja persistidos ou authorados."
|
|
13565
13603
|
},
|
|
13604
|
+
{
|
|
13605
|
+
"path": "inputs.configPersistenceStrategy",
|
|
13606
|
+
"category": "inputs",
|
|
13607
|
+
"valueKind": "enum",
|
|
13608
|
+
"allowedValues": [
|
|
13609
|
+
"local-first",
|
|
13610
|
+
"input-first"
|
|
13611
|
+
],
|
|
13612
|
+
"description": "Define se preferências locais persistidas ou o contrato explícito do host governam a materialização corrente.",
|
|
13613
|
+
"safetyNotes": "Use input-first em commands e surfaces transitórias; isso impede que mode e estados operacionais antigos sobrescrevam o schema atual."
|
|
13614
|
+
},
|
|
13566
13615
|
{
|
|
13567
13616
|
"path": "inputs.layoutPolicy",
|
|
13568
13617
|
"category": "inputs",
|
|
@@ -13633,6 +13682,24 @@
|
|
|
13633
13682
|
"description": "Define como uma linha groupedCommand com um unico campo usa o espaco restante. O default medium-and-wide expande spans 6 ou 8 e preserva campos compactos.",
|
|
13634
13683
|
"safetyNotes": "Use preserve quando o espaco vazio for intencional; use all apenas quando ate campos xs/sm devam ocupar a linha completa."
|
|
13635
13684
|
},
|
|
13685
|
+
{
|
|
13686
|
+
"path": "inputs.layoutPolicy.groupedCommand.contextFields",
|
|
13687
|
+
"category": "inputs",
|
|
13688
|
+
"valueKind": "array",
|
|
13689
|
+
"description": "Campos canônicos do request cujo valor vem do contexto da surface. Eles permanecem no FormGroup e no payload, sem renderizar controles redundantes.",
|
|
13690
|
+
"safetyNotes": "Use somente para campos realmente hidratados por initialValue ou leitura da entidade; nunca use para esconder dados que a pessoa ainda precisa informar."
|
|
13691
|
+
},
|
|
13692
|
+
{
|
|
13693
|
+
"path": "inputs.layoutPolicy.groupedCommand.partialRowStrategy",
|
|
13694
|
+
"category": "inputs",
|
|
13695
|
+
"valueKind": "enum",
|
|
13696
|
+
"allowedValues": [
|
|
13697
|
+
"preserve",
|
|
13698
|
+
"fill-compatible"
|
|
13699
|
+
],
|
|
13700
|
+
"description": "Define se linhas parciais com dois campos ou mais preservam os spans canônicos ou redistribuem apenas campos compatíveis para completar 12 colunas no breakpoint atual.",
|
|
13701
|
+
"safetyNotes": "fill-compatible é uma projeção transitória do runtime: não altera x-ui.width nem persiste sections. Controles compactos, uploads e tipos desconhecidos preservam a largura canônica."
|
|
13702
|
+
},
|
|
13636
13703
|
{
|
|
13637
13704
|
"path": "inputs.layoutPolicy.detailSummary",
|
|
13638
13705
|
"category": "inputs",
|
|
@@ -15620,9 +15687,9 @@
|
|
|
15620
15687
|
{
|
|
15621
15688
|
"chunkIndex": 10,
|
|
15622
15689
|
"chunkKind": "capabilities",
|
|
15623
|
-
"content": "Schema Capability:\n - Path: fieldMetadata[].transformDisplayValue\n Category: transform\n Kind: expression\n Description: Transforma valor para exibição.\n\nSchema Capability:\n - Path: fieldMetadata[].transformSaveValue\n Category: transform\n Kind: expression\n Description: Transforma valor para salvar.\n\nSchema Capability:\n - Path: fieldMetadata[].textTransformApply\n Category: transform\n Kind: enum\n Description: Quando aplicar transformação de texto.\n\nSchema Capability:\n - Path: fieldMetadata[].inlineEditing\n Category: behavior\n Kind: boolean\n Description: Permite edição inline (tabelas).\n\nSchema Capability:\n - Path: fieldMetadata[].unique\n Category: validation\n Kind: boolean\n Description: Valida unicidade no backend.\n\nSchema Capability:\n - Path: fieldMetadata[].readOnly\n Category: behavior\n Kind: boolean\n Description: Campo somente leitura.\n\nSchema Capability:\n - Path: fieldMetadata[].disabled\n Category: behavior\n Kind: boolean\n Description: Campo desabilitado.\n\nSchema Capability:\n - Path: fieldMetadata[].defaultValue\n Category: data\n Kind: object\n Description: Valor inicial do campo.\n\nSchema Capability:\n - Path: fieldMetadata[].ariaLabel\n Category: accessibility\n Kind: string\n Description: Label para leitores de tela.\n\nSchema Capability:\n - Path: fieldMetadata[].ariaDescribedBy\n Category: accessibility\n Kind: string\n Description: IDs de descrição acessível.\n\nSchema Capability:\n - Path: fieldMetadata[].tabIndex\n Category: accessibility\n Kind: number\n Description: Ordem de tabulacao para teclado.\n\nSchema Capability:\n - Path: fieldMetadata[].accessKey\n Category: accessibility\n Kind: string\n Description: Atalho de teclado (accessKey).\n\nComponent Capability:\n - Path: inputs.resourcePath\n Category: inputs\n Kind: string\n Description: Caminho do recurso para carregar/salvar dados via CRUD.\n\nComponent Capability:\n - Path: inputs.resourceId\n Category: inputs\n Kind: string\n Description: ID do registro atual (string ou number).\n\nComponent Capability:\n - Path: inputs.initialValue\n Category: inputs\n Kind: object\n Description: Valores iniciais locais para campos host-authored ou complementares.\n\nComponent Capability:\n - Path: inputs.mode\n Category: inputs\n Kind: enum\n Description: Modo do formulario (create/edit/view).\n\nComponent Capability:\n - Path: inputs.config\n Category: inputs\n Kind: object\n Description: Configuracao completa do formulario (FormConfig).\n\nComponent Capability:\n - Path: inputs.schemaSource\n Category: inputs\n Kind: enum\n Description: Fonte de schema para construcao automatica (resource/filter).\n\nComponent Capability:\n - Path: inputs.schemaUrl\n Category: inputs\n Kind: string\n Description: Schema canonico explicito publicado pelo backend para hosts que seguem surfaces/actions/capabilities.\n\nComponent Capability:\n - Path: inputs.readUrl\n Category: inputs\n Kind: string\n Description: Endpoint canonico de leitura publicado por surface VIEW/READ_PROJECTION para hidratar a entidade exibida.\n\nComponent Capability:\n - Path: inputs.apiEndpointKey\n Category: inputs\n Kind: string\n Description: Endpoint canonico usado para resolver schemaUrl, readUrl e submitUrl relativos em hosts destacados.\n\nComponent Capability:\n - Path: inputs.submitUrl\n Category: inputs\n Kind: string\n Description: Endpoint canonico de submit publicado por surface/action.\n\nComponent Capability:\n - Path: inputs.submitMethod\n Category: inputs\n Kind: enum\n Description: Metodo HTTP canonico para o submit quando o backend publica operacao explicita.\n\nComponent Capability:\n - Path: inputs.submitIdempotencyKey\n Category: inputs\n Kind: string\n Description: Identidade estavel da tentativa de comando, materializada a partir da politica execution da action.\n\nComponent Capability:\n - Path: inputs.submitCorrelationId\n Category: inputs\n Kind: string\n Description: Identificador de correlacao governado para rastreabilidade ponta a ponta do comando.\n\nComponent Capability:\n - Path: inputs.submitResourceVersion\n Category: inputs\n Kind: string\n Description: Versao persistida esperada, transportada como If-Match quando exigida pela action.\n\nComponent Capability:\n - Path: inputs.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.groupedCommand.orphanFieldExpansion\n Category: inputs\n Kind: enum\n Description: Define como uma linha groupedCommand com um unico campo usa o espaco restante. O default medium-and-wide expande spans 6 ou 8 e preserva campos compactos.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.
|
|
15690
|
+
"content": "Schema Capability:\n - Path: fieldMetadata[].transformDisplayValue\n Category: transform\n Kind: expression\n Description: Transforma valor para exibição.\n\nSchema Capability:\n - Path: fieldMetadata[].transformSaveValue\n Category: transform\n Kind: expression\n Description: Transforma valor para salvar.\n\nSchema Capability:\n - Path: fieldMetadata[].textTransformApply\n Category: transform\n Kind: enum\n Description: Quando aplicar transformação de texto.\n\nSchema Capability:\n - Path: fieldMetadata[].inlineEditing\n Category: behavior\n Kind: boolean\n Description: Permite edição inline (tabelas).\n\nSchema Capability:\n - Path: fieldMetadata[].unique\n Category: validation\n Kind: boolean\n Description: Valida unicidade no backend.\n\nSchema Capability:\n - Path: fieldMetadata[].readOnly\n Category: behavior\n Kind: boolean\n Description: Campo somente leitura.\n\nSchema Capability:\n - Path: fieldMetadata[].disabled\n Category: behavior\n Kind: boolean\n Description: Campo desabilitado.\n\nSchema Capability:\n - Path: fieldMetadata[].defaultValue\n Category: data\n Kind: object\n Description: Valor inicial do campo.\n\nSchema Capability:\n - Path: fieldMetadata[].ariaLabel\n Category: accessibility\n Kind: string\n Description: Label para leitores de tela.\n\nSchema Capability:\n - Path: fieldMetadata[].ariaDescribedBy\n Category: accessibility\n Kind: string\n Description: IDs de descrição acessível.\n\nSchema Capability:\n - Path: fieldMetadata[].tabIndex\n Category: accessibility\n Kind: number\n Description: Ordem de tabulacao para teclado.\n\nSchema Capability:\n - Path: fieldMetadata[].accessKey\n Category: accessibility\n Kind: string\n Description: Atalho de teclado (accessKey).\n\nComponent Capability:\n - Path: inputs.resourcePath\n Category: inputs\n Kind: string\n Description: Caminho do recurso para carregar/salvar dados via CRUD.\n\nComponent Capability:\n - Path: inputs.resourceId\n Category: inputs\n Kind: string\n Description: ID do registro atual (string ou number).\n\nComponent Capability:\n - Path: inputs.initialValue\n Category: inputs\n Kind: object\n Description: Valores iniciais locais para campos host-authored ou complementares.\n\nComponent Capability:\n - Path: inputs.mode\n Category: inputs\n Kind: enum\n Description: Modo do formulario (create/edit/view).\n\nComponent Capability:\n - Path: inputs.config\n Category: inputs\n Kind: object\n Description: Configuracao completa do formulario (FormConfig).\n\nComponent Capability:\n - Path: inputs.schemaSource\n Category: inputs\n Kind: enum\n Description: Fonte de schema para construcao automatica (resource/filter).\n\nComponent Capability:\n - Path: inputs.schemaUrl\n Category: inputs\n Kind: string\n Description: Schema canonico explicito publicado pelo backend para hosts que seguem surfaces/actions/capabilities.\n\nComponent Capability:\n - Path: inputs.readUrl\n Category: inputs\n Kind: string\n Description: Endpoint canonico de leitura publicado por surface VIEW/READ_PROJECTION para hidratar a entidade exibida.\n\nComponent Capability:\n - Path: inputs.apiEndpointKey\n Category: inputs\n Kind: string\n Description: Endpoint canonico usado para resolver schemaUrl, readUrl e submitUrl relativos em hosts destacados.\n\nComponent Capability:\n - Path: inputs.submitUrl\n Category: inputs\n Kind: string\n Description: Endpoint canonico de submit publicado por surface/action.\n\nComponent Capability:\n - Path: inputs.submitMethod\n Category: inputs\n Kind: enum\n Description: Metodo HTTP canonico para o submit quando o backend publica operacao explicita.\n\nComponent Capability:\n - Path: inputs.submitIdempotencyKey\n Category: inputs\n Kind: string\n Description: Identidade estavel da tentativa de comando, materializada a partir da politica execution da action.\n\nComponent Capability:\n - Path: inputs.submitCorrelationId\n Category: inputs\n Kind: string\n Description: Identificador de correlacao governado para rastreabilidade ponta a ponta do comando.\n\nComponent Capability:\n - Path: inputs.submitResourceVersion\n Category: inputs\n Kind: string\n Description: Versao persistida esperada, transportada como If-Match quando exigida pela action.\n\nComponent Capability:\n - Path: inputs.responseSchemaUrl\n Category: inputs\n Kind: string\n Description: Schema de resposta publicado pelo backend para inspeção diagnostica/read-only do host.\n\nComponent Capability:\n - Path: inputs.enableCustomization\n Category: inputs\n Kind: boolean\n Description: Habilita a edicao de layout/configuracao no editor.\n\nComponent Capability:\n - Path: inputs.showAiAssistant\n Category: inputs\n Kind: boolean\n Description: Mostra os gatilhos do copiloto semantico Praxis para a instancia do formulario.\n\nComponent Capability:\n - Path: inputs.formId\n Category: inputs\n Kind: string\n Description: ID persistente para salvar configuracoes e preferencias.\n\nComponent Capability:\n - Path: inputs.editorialContext\n Category: inputs\n Kind: object\n Description: Override de contexto editorial fornecido pelo host para os blocos hospedados antes/depois do formulario.\n\nComponent Capability:\n - Path: inputs.layout\n Category: inputs\n Kind: object\n Description: Layout legado (FormLayout). Preferir inputs.config + sections.\n\nComponent Capability:\n - Path: inputs.generatedLayoutPreset\n Category: inputs\n Kind: enum\n Description: Preset usado somente na criacao inicial de FormConfig a partir de schema/metadata.\n\nComponent Capability:\n - Path: inputs.configPersistenceStrategy\n Category: inputs\n Kind: enum\n Description: Define se preferências locais persistidas ou o contrato explícito do host governam a materialização corrente.\n\nComponent Capability:\n - Path: inputs.layoutPolicy\n Category: inputs\n Kind: object\n Description: Politica opt-in para materializar layout diretamente do schema atual sem depender de FormConfig.sections authoradas.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.source\n Category: inputs\n Kind: enum\n Description: Define se o layout vem de configuracao authorada ou do schema.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.preset\n Category: inputs\n Kind: enum\n Description: Preset de layout schema-driven. compactPresentation cobre detalhe read-only; groupedCommand cobre create/edit.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.intent\n Category: inputs\n Kind: enum\n Description: Intencao da surface: detalhe/apresentacao ou comando/editavel.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.lifecycle\n Category: inputs\n Kind: enum\n Description: Ciclo de materializacao do layout schema-driven.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.persistence\n Category: inputs\n Kind: enum\n Description: Define se sections geradas sao transient ou podem virar layout authorado apos detach explicito.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.groupedCommand.orphanFieldExpansion\n Category: inputs\n Kind: enum\n Description: Define como uma linha groupedCommand com um unico campo usa o espaco restante. O default medium-and-wide expande spans 6 ou 8 e preserva campos compactos.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.groupedCommand.contextFields\n Category: inputs\n Kind: array\n Description: Campos canônicos do request cujo valor vem do contexto da surface. Eles permanecem no FormGroup e no payload, sem renderizar controles redundantes.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.groupedCommand.partialRowStrategy\n Category: inputs\n Kind: enum\n Description: Define se linhas parciais com dois campos ou mais preservam os spans canônicos ou redistribuem apenas campos compatíveis para completar 12 colunas no breakpoint atual.",
|
|
15624
15691
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
|
|
15625
|
-
"contentHash": "
|
|
15692
|
+
"contentHash": "d8ba06c1f0006e7d3189b75d8329245c840d75d84d753c6dfccc480a4880d347",
|
|
15626
15693
|
"sourceKind": "component_definition",
|
|
15627
15694
|
"sourceId": "praxis-filter-form",
|
|
15628
15695
|
"corpusVersion": "1.0.0"
|
|
@@ -15630,9 +15697,9 @@
|
|
|
15630
15697
|
{
|
|
15631
15698
|
"chunkIndex": 11,
|
|
15632
15699
|
"chunkKind": "capabilities",
|
|
15633
|
-
"content": "Component Capability:\n - Path: inputs.layoutPolicy.detailSummary.excludeGroups\n Category: inputs\n Kind: array\n Description: Lista de grupos do schema que devem ficar fora do resumo read-only compacto.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.includeRoles\n Category: inputs\n Kind: array\n Description: Lista de papeis semanticos de campo que devem entrar no resumo read-only compacto.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.excludeRoles\n Category: inputs\n Kind: array\n Description: Lista de papeis semanticos de campo que devem ficar fora do resumo read-only compacto.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.maxFields\n Category: inputs\n Kind: number\n Description: Limite maximo de campos materializados no primeiro painel compacto.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.fieldPriority\n Category: inputs\n Kind: object\n Description: Mapa campo -> prioridade para ordenar campos do resumo quando o schema publica candidatos suficientes.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.groupPriority\n Category: inputs\n Kind: object\n Description: Mapa grupo -> prioridade para ordenar grupos do resumo quando o schema publica agrupamento semantico.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.columns\n Category: inputs\n Kind: number\n Description: Quantidade base de colunas para distribuir campos de resumo schema-driven sem criar FormConfig.sections locais.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.responsiveColumns\n Category: inputs\n Kind: object\n Description: Mapa de colunas por breakpoint xs/sm/md/lg/xl para detalhes read-only compactos em drawers, side sheets e desktop largo.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.widthPrecedence\n Category: inputs\n Kind: enum\n Description: Define se larguras explicitas do schema ou a densidade do resumo controlam os spans no compactPresentation read-only.\n\nComponent Capability:\n - Path: inputs.fieldIconPolicy\n Category: inputs\n Kind: enum\n Description: Controla se icones prefix/suffix dos metadados aparecem em todos os modos, apenas apresentacao, ou nunca.\n\nComponent Capability:\n - Path: inputs.backConfig\n Category: inputs\n Kind: object\n Description: Configuracao de navegacao/retorno (BackConfig).\n\nComponent Capability:\n - Path: inputs.backConfig.strategy\n Category: inputs\n Kind: enum\n Description: Estrategia de retorno (auto/close/navigate).\n\nComponent Capability:\n - Path: inputs.backConfig.returnTo\n Category: inputs\n Kind: string\n Description: Rota para retornar quando strategy=navigate.\n\nComponent Capability:\n - Path: inputs.backConfig.confirmOnDirty\n Category: inputs\n Kind: boolean\n Description: Solicita confirmacao ao sair com mudancas nao salvas.\n\nComponent Capability:\n - Path: inputs.hooks\n Category: inputs\n Kind: object\n Description: Declaracoes de hooks fornecidas diretamente ao componente.\n\nComponent Capability:\n - Path: inputs.hooks.beforeInit[]\n Category: hooks\n Kind: array\n Description: Hooks executados antes da inicializacao.\n\nComponent Capability:\n - Path: inputs.hooks.afterInit[]\n Category: hooks\n Kind: array\n Description: Hooks executados apos a inicializacao.\n\nComponent Capability:\n - Path: inputs.hooks.beforeValidate[]\n Category: hooks\n Kind: array\n Description: Hooks executados antes da validacao.\n\nComponent Capability:\n - Path: inputs.hooks.afterValidate[]\n Category: hooks\n Kind: array\n Description: Hooks executados apos a validacao.\n\nComponent Capability:\n - Path: inputs.hooks.beforeSubmit[]\n Category: hooks\n Kind: array\n Description: Hooks executados antes do submit.\n\nComponent Capability:\n - Path: inputs.hooks.afterSubmit[]\n Category: hooks\n Kind: array\n Description: Hooks executados apos o submit.\n\nComponent Capability:\n - Path: inputs.hooks.onError[]\n Category: hooks\n Kind: array\n Description: Hooks executados em erros de submit/validacao.\n\nComponent Capability:\n - Path: inputs.removeEmptyContainersOnSave\n Category: inputs\n Kind: boolean\n Description: Remove containers vazios ao salvar configuracao.\n\nComponent Capability:\n - Path: inputs.reactiveValidation\n Category: inputs\n Kind: boolean\n Description: Ativa validacao reativa (afterValidate em valueChanges).\n\nComponent Capability:\n - Path: inputs.reactiveValidationDebounceMs\n Category: inputs\n Kind: number\n Description: Debounce em ms para validacao reativa.\n\nComponent Capability:\n - Path: inputs.notifyIfOutdated\n Category: inputs\n Kind: enum\n Description: Canal de notificacao para schema desatualizado.\n\nComponent Capability:\n - Path: inputs.snoozeMs\n Category: inputs\n Kind: number\n Description: Duracao do snooze para alertas de schema.\n\nComponent Capability:\n - Path: inputs.autoOpenSettingsOnOutdated\n Category: inputs\n Kind: boolean\n Description: Abre automaticamente o editor ao detectar schema desatualizado.\n\nComponent Capability:\n - Path: inputs.readonlyModeGlobal\n Category: inputs\n Kind: boolean\n Description: Forca modo somente leitura global.\n\nComponent Capability:\n - Path: inputs.disabledModeGlobal\n Category: inputs\n Kind: boolean\n Description: Forca modo desabilitado global.\n\nComponent Capability:\n - Path: inputs.presentationModeGlobal\n Category: inputs\n Kind: boolean\n Description: Ativa modo de apresentacao global (somente view).\n\nComponent Capability:\n - Path: inputs.visibleGlobal\n Category: inputs\n Kind: boolean\n Description: Forca visibilidade global dos campos.\n\nComponent Capability:\n - Path: inputs.customEndpoints\n Category: inputs\n Kind: object\n Description: Override de endpoints CRUD (EndpointConfig).\n\nComponent Capability:\n - Path: inputs.customEndpoints.getAll\n Category: inputs\n Kind: string\n Description: Endpoint customizado para listar registros.\n\nComponent Capability:\n - Path: inputs.customEndpoints.getById\n Category: inputs\n Kind: string\n Description: Endpoint customizado para obter registro por ID.\n\nComponent Capability:\n - Path: inputs.customEndpoints.create\n Category: inputs\n Kind: string\n Description: Endpoint customizado para criar registro.\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
|
|
15700
|
+
"content": "Component Capability:\n - Path: inputs.layoutPolicy.detailSummary\n Category: inputs\n Kind: object\n Description: Politica declarativa para resumo read-only compacto em compactPresentation, sem FormConfig.sections locais.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.includeFields\n Category: inputs\n Kind: array\n Description: Lista de campos canônicos do schema que devem entrar no resumo read-only compacto.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.excludeFields\n Category: inputs\n Kind: array\n Description: Lista de campos canônicos do schema que devem ficar fora do resumo read-only compacto.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.includeGroups\n Category: inputs\n Kind: array\n Description: Lista de grupos do schema que devem entrar no resumo read-only compacto.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.excludeGroups\n Category: inputs\n Kind: array\n Description: Lista de grupos do schema que devem ficar fora do resumo read-only compacto.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.includeRoles\n Category: inputs\n Kind: array\n Description: Lista de papeis semanticos de campo que devem entrar no resumo read-only compacto.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.excludeRoles\n Category: inputs\n Kind: array\n Description: Lista de papeis semanticos de campo que devem ficar fora do resumo read-only compacto.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.maxFields\n Category: inputs\n Kind: number\n Description: Limite maximo de campos materializados no primeiro painel compacto.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.fieldPriority\n Category: inputs\n Kind: object\n Description: Mapa campo -> prioridade para ordenar campos do resumo quando o schema publica candidatos suficientes.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.groupPriority\n Category: inputs\n Kind: object\n Description: Mapa grupo -> prioridade para ordenar grupos do resumo quando o schema publica agrupamento semantico.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.columns\n Category: inputs\n Kind: number\n Description: Quantidade base de colunas para distribuir campos de resumo schema-driven sem criar FormConfig.sections locais.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.responsiveColumns\n Category: inputs\n Kind: object\n Description: Mapa de colunas por breakpoint xs/sm/md/lg/xl para detalhes read-only compactos em drawers, side sheets e desktop largo.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.widthPrecedence\n Category: inputs\n Kind: enum\n Description: Define se larguras explicitas do schema ou a densidade do resumo controlam os spans no compactPresentation read-only.\n\nComponent Capability:\n - Path: inputs.fieldIconPolicy\n Category: inputs\n Kind: enum\n Description: Controla se icones prefix/suffix dos metadados aparecem em todos os modos, apenas apresentacao, ou nunca.\n\nComponent Capability:\n - Path: inputs.backConfig\n Category: inputs\n Kind: object\n Description: Configuracao de navegacao/retorno (BackConfig).\n\nComponent Capability:\n - Path: inputs.backConfig.strategy\n Category: inputs\n Kind: enum\n Description: Estrategia de retorno (auto/close/navigate).\n\nComponent Capability:\n - Path: inputs.backConfig.returnTo\n Category: inputs\n Kind: string\n Description: Rota para retornar quando strategy=navigate.\n\nComponent Capability:\n - Path: inputs.backConfig.confirmOnDirty\n Category: inputs\n Kind: boolean\n Description: Solicita confirmacao ao sair com mudancas nao salvas.\n\nComponent Capability:\n - Path: inputs.hooks\n Category: inputs\n Kind: object\n Description: Declaracoes de hooks fornecidas diretamente ao componente.\n\nComponent Capability:\n - Path: inputs.hooks.beforeInit[]\n Category: hooks\n Kind: array\n Description: Hooks executados antes da inicializacao.\n\nComponent Capability:\n - Path: inputs.hooks.afterInit[]\n Category: hooks\n Kind: array\n Description: Hooks executados apos a inicializacao.\n\nComponent Capability:\n - Path: inputs.hooks.beforeValidate[]\n Category: hooks\n Kind: array\n Description: Hooks executados antes da validacao.\n\nComponent Capability:\n - Path: inputs.hooks.afterValidate[]\n Category: hooks\n Kind: array\n Description: Hooks executados apos a validacao.\n\nComponent Capability:\n - Path: inputs.hooks.beforeSubmit[]\n Category: hooks\n Kind: array\n Description: Hooks executados antes do submit.\n\nComponent Capability:\n - Path: inputs.hooks.afterSubmit[]\n Category: hooks\n Kind: array\n Description: Hooks executados apos o submit.\n\nComponent Capability:\n - Path: inputs.hooks.onError[]\n Category: hooks\n Kind: array\n Description: Hooks executados em erros de submit/validacao.\n\nComponent Capability:\n - Path: inputs.removeEmptyContainersOnSave\n Category: inputs\n Kind: boolean\n Description: Remove containers vazios ao salvar configuracao.\n\nComponent Capability:\n - Path: inputs.reactiveValidation\n Category: inputs\n Kind: boolean\n Description: Ativa validacao reativa (afterValidate em valueChanges).\n\nComponent Capability:\n - Path: inputs.reactiveValidationDebounceMs\n Category: inputs\n Kind: number\n Description: Debounce em ms para validacao reativa.\n\nComponent Capability:\n - Path: inputs.notifyIfOutdated\n Category: inputs\n Kind: enum\n Description: Canal de notificacao para schema desatualizado.\n\nComponent Capability:\n - Path: inputs.snoozeMs\n Category: inputs\n Kind: number\n Description: Duracao do snooze para alertas de schema.\n\nComponent Capability:\n - Path: inputs.autoOpenSettingsOnOutdated\n Category: inputs\n Kind: boolean\n Description: Abre automaticamente o editor ao detectar schema desatualizado.\n\nComponent Capability:\n - Path: inputs.readonlyModeGlobal\n Category: inputs\n Kind: boolean\n Description: Forca modo somente leitura global.\n\nComponent Capability:\n - Path: inputs.disabledModeGlobal\n Category: inputs\n Kind: boolean\n Description: Forca modo desabilitado global.\n\nComponent Capability:\n - Path: inputs.presentationModeGlobal\n Category: inputs\n Kind: boolean\n Description: Ativa modo de apresentacao global (somente view).\n\nComponent Capability:\n - Path: inputs.visibleGlobal\n Category: inputs\n Kind: boolean\n Description: Forca visibilidade global dos campos.\n\nComponent Capability:\n - Path: inputs.customEndpoints\n Category: inputs\n Kind: object\n Description: Override de endpoints CRUD (EndpointConfig).\n\nComponent Capability:\n - Path: inputs.customEndpoints.getAll\n Category: inputs\n Kind: string\n Description: Endpoint customizado para listar registros.\n\nComponent Capability:\n - Path: inputs.customEndpoints.getById\n Category: inputs\n Kind: string\n Description: Endpoint customizado para obter registro por ID.\n\nComponent Capability:\n - Path: inputs.customEndpoints.create\n Category: inputs\n Kind: string\n Description: Endpoint customizado para criar registro.\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.",
|
|
15634
15701
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
|
|
15635
|
-
"contentHash": "
|
|
15702
|
+
"contentHash": "c276a80957dcb05beb6aaeb7b61d0174156ac89b26e8ba3f18d3da7eb20e4bc6",
|
|
15636
15703
|
"sourceKind": "component_definition",
|
|
15637
15704
|
"sourceId": "praxis-filter-form",
|
|
15638
15705
|
"corpusVersion": "1.0.0"
|
|
@@ -15640,9 +15707,9 @@
|
|
|
15640
15707
|
{
|
|
15641
15708
|
"chunkIndex": 12,
|
|
15642
15709
|
"chunkKind": "capabilities",
|
|
15643
|
-
"content": "Component Capability:\n - Path: inputs.config.presentation.density\n Category: appearance\n Kind: enum\n Description: Densidade visual global.\n\nComponent Capability:\n - Path: inputs.config.presentation.labelWidth\n Category: appearance\n Kind: number\n Description: Largura do label (px).\n\nComponent Capability:\n - Path: inputs.config.presentation.labelAlign\n Category: appearance\n Kind: enum\n Description: Alinhamento do label.\n\nComponent Capability:\n - Path: inputs.config.presentation.valueAlign\n Category: appearance\n Kind: enum\n Description: Alinhamento do valor.\n\nComponent Capability:\n - Path: outputs.formSubmit\n Category: outputs\n Kind: object\n Description: Evento emitido no submit do formulario.\n\nComponent Capability:\n - Path: outputs.formCancel\n Category: outputs\n Kind: object\n Description: Evento emitido ao cancelar.\n\nComponent Capability:\n - Path: outputs.formReset\n Category: outputs\n Kind: object\n Description: Evento emitido ao resetar o formulario.\n\nComponent Capability:\n - Path: outputs.configChange\n Category: outputs\n Kind: object\n Description: Evento emitido quando a configuracao muda.\n\nComponent Capability:\n - Path: outputs.formReady\n Category: outputs\n Kind: object\n Description: Evento emitido quando o formulario esta pronto.\n\nComponent Capability:\n - Path: outputs.valueChange\n Category: outputs\n Kind: object\n Description: Evento emitido quando o valor do formulario muda.\n\nComponent Capability:\n - Path: outputs.syncCompleted\n Category: outputs\n Kind: object\n Description: Evento emitido ao completar sincronizacao com schema.\n\nComponent Capability:\n - Path: outputs.initializationError\n Category: outputs\n Kind: object\n Description: Evento emitido quando ocorre erro na inicializacao.\n\nComponent Capability:\n - Path: outputs.enableCustomizationChange\n Category: outputs\n Kind: object\n Description: Evento emitido quando o modo de customizacao muda.\n\nComponent Capability:\n - Path: outputs.customAction\n Category: outputs\n Kind: object\n Description: Evento emitido ao disparar acao customizada.\n\nComponent Capability:\n - Path: outputs.actionConfirmation\n Category: outputs\n Kind: object\n Description: Evento emitido quando acao requer confirmacao.\n\nComponent Capability:\n - Path: outputs.schemaStatusChange\n Category: outputs\n Kind: object\n Description: Evento emitido quando o status do schema muda.\n\nCapability Note:\n - Este catalogo descreve inputs e outputs do componente.\n\nCapability Note:\n - O objeto inputs.config segue o schema de FormConfig (veja form-ai-capabilities).\n\nCapability Note:\n - inputs.config.presentation e uma extensao de runtime aplicada pelo componente.\n\nCapability Note:\n - Preferir FormConfig (sections/fieldMetadata) em vez do layout legado (fieldsets).\n\nCapability Note:\n - Use inputs.editorialContext apenas para override de contexto editorial do host; a precedencia final e runtime < config.editorialContext < host.\n\nCapability Note:\n - rich content editorial hospedado pelo form pode ser renderizado em tres slots semanticos: before, beforeActions e after.",
|
|
15710
|
+
"content": "Component Capability:\n - Path: inputs.config.presentation\n Category: appearance\n Kind: object\n Description: Preferencias visuais persistidas no config.\n\nComponent Capability:\n - Path: inputs.config.presentation.labelFontSize\n Category: appearance\n Kind: number\n Description: Tamanho da fonte do label (px).\n\nComponent Capability:\n - Path: inputs.config.presentation.valueFontSize\n Category: appearance\n Kind: number\n Description: Tamanho da fonte do valor (px).\n\nComponent Capability:\n - Path: inputs.config.presentation.labelPosition\n Category: appearance\n Kind: enum\n Description: Posicionamento do label (above/left).\n\nComponent Capability:\n - Path: inputs.config.presentation.compact\n Category: appearance\n Kind: boolean\n Description: Modo compacto de apresentacao.\n\nComponent Capability:\n - Path: inputs.config.presentation.density\n Category: appearance\n Kind: enum\n Description: Densidade visual global.\n\nComponent Capability:\n - Path: inputs.config.presentation.labelWidth\n Category: appearance\n Kind: number\n Description: Largura do label (px).\n\nComponent Capability:\n - Path: inputs.config.presentation.labelAlign\n Category: appearance\n Kind: enum\n Description: Alinhamento do label.\n\nComponent Capability:\n - Path: inputs.config.presentation.valueAlign\n Category: appearance\n Kind: enum\n Description: Alinhamento do valor.\n\nComponent Capability:\n - Path: outputs.formSubmit\n Category: outputs\n Kind: object\n Description: Evento emitido no submit do formulario.\n\nComponent Capability:\n - Path: outputs.formCancel\n Category: outputs\n Kind: object\n Description: Evento emitido ao cancelar.\n\nComponent Capability:\n - Path: outputs.formReset\n Category: outputs\n Kind: object\n Description: Evento emitido ao resetar o formulario.\n\nComponent Capability:\n - Path: outputs.configChange\n Category: outputs\n Kind: object\n Description: Evento emitido quando a configuracao muda.\n\nComponent Capability:\n - Path: outputs.formReady\n Category: outputs\n Kind: object\n Description: Evento emitido quando o formulario esta pronto.\n\nComponent Capability:\n - Path: outputs.valueChange\n Category: outputs\n Kind: object\n Description: Evento emitido quando o valor do formulario muda.\n\nComponent Capability:\n - Path: outputs.syncCompleted\n Category: outputs\n Kind: object\n Description: Evento emitido ao completar sincronizacao com schema.\n\nComponent Capability:\n - Path: outputs.initializationError\n Category: outputs\n Kind: object\n Description: Evento emitido quando ocorre erro na inicializacao.\n\nComponent Capability:\n - Path: outputs.enableCustomizationChange\n Category: outputs\n Kind: object\n Description: Evento emitido quando o modo de customizacao muda.\n\nComponent Capability:\n - Path: outputs.customAction\n Category: outputs\n Kind: object\n Description: Evento emitido ao disparar acao customizada.\n\nComponent Capability:\n - Path: outputs.actionConfirmation\n Category: outputs\n Kind: object\n Description: Evento emitido quando acao requer confirmacao.\n\nComponent Capability:\n - Path: outputs.schemaStatusChange\n Category: outputs\n Kind: object\n Description: Evento emitido quando o status do schema muda.\n\nCapability Note:\n - Este catalogo descreve inputs e outputs do componente.\n\nCapability Note:\n - O objeto inputs.config segue o schema de FormConfig (veja form-ai-capabilities).\n\nCapability Note:\n - inputs.config.presentation e uma extensao de runtime aplicada pelo componente.\n\nCapability Note:\n - Preferir FormConfig (sections/fieldMetadata) em vez do layout legado (fieldsets).\n\nCapability Note:\n - Use inputs.editorialContext apenas para override de contexto editorial do host; a precedencia final e runtime < config.editorialContext < host.\n\nCapability Note:\n - rich content editorial hospedado pelo form pode ser renderizado em tres slots semanticos: before, beforeActions e after.",
|
|
15644
15711
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
|
|
15645
|
-
"contentHash": "
|
|
15712
|
+
"contentHash": "142afe9c47e968f78a0b3b3713325507ac1cb3836d759ae02278d2cf188b1d06",
|
|
15646
15713
|
"sourceKind": "component_definition",
|
|
15647
15714
|
"sourceId": "praxis-filter-form",
|
|
15648
15715
|
"corpusVersion": "1.0.0"
|