@praxisui/crud 10.0.0-rc.4 → 10.0.0-rc.41
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 +71 -1
- package/ai/component-registry.json +1491 -93
- package/fesm2022/praxisui-crud.mjs +13978 -1967
- package/package.json +7 -7
- package/types/praxisui-crud.d.ts +882 -35
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
|
-
"generatedAt": "2026-10-
|
|
3
|
+
"generatedAt": "2026-10-27T22:14:23.237Z",
|
|
4
4
|
"packageName": "@praxisui/crud",
|
|
5
|
-
"packageVersion": "10.0.0-rc.
|
|
5
|
+
"packageVersion": "10.0.0-rc.41",
|
|
6
6
|
"sourceRegistry": "praxis-component-registry-ingestion",
|
|
7
7
|
"sourceRegistryVersion": "1.0.0",
|
|
8
8
|
"componentCount": 2,
|
|
9
9
|
"components": {
|
|
10
10
|
"praxis-crud": {
|
|
11
11
|
"id": "praxis-crud",
|
|
12
|
-
"description": "
|
|
12
|
+
"description": "Superfície operacional completa guiada por contrato: listagem semântica, KPIs, escopo, dossiês e ações de negócio.",
|
|
13
13
|
"inputs": [
|
|
14
14
|
{
|
|
15
15
|
"name": "metadata",
|
|
@@ -207,7 +207,7 @@
|
|
|
207
207
|
],
|
|
208
208
|
"configSchemaId": "FormConfig",
|
|
209
209
|
"selector": "praxis-crud",
|
|
210
|
-
"friendlyName": "
|
|
210
|
+
"friendlyName": "Workspace de Recurso",
|
|
211
211
|
"icon": "table_chart",
|
|
212
212
|
"tags": [
|
|
213
213
|
"widget",
|
|
@@ -217,6 +217,10 @@
|
|
|
217
217
|
"stable"
|
|
218
218
|
],
|
|
219
219
|
"lib": "@praxisui/crud",
|
|
220
|
+
"layoutHints": {
|
|
221
|
+
"recommendedCols": 12,
|
|
222
|
+
"recommendedRows": 6
|
|
223
|
+
},
|
|
220
224
|
"actions": [
|
|
221
225
|
{
|
|
222
226
|
"id": "create",
|
|
@@ -770,7 +774,7 @@
|
|
|
770
774
|
],
|
|
771
775
|
"configEditor": {
|
|
772
776
|
"component": "[ref:PraxisCrudWidgetConfigEditor]",
|
|
773
|
-
"title": "
|
|
777
|
+
"title": "Configurações do Workspace de Recurso"
|
|
774
778
|
},
|
|
775
779
|
"authoringManifestRef": {
|
|
776
780
|
"componentId": "praxis-crud",
|
|
@@ -3514,6 +3518,185 @@
|
|
|
3514
3518
|
"responsive em card"
|
|
3515
3519
|
]
|
|
3516
3520
|
},
|
|
3521
|
+
{
|
|
3522
|
+
"path": "fieldMetadata[].presentation.visualization.scaleScope",
|
|
3523
|
+
"category": "layout",
|
|
3524
|
+
"valueKind": "enum",
|
|
3525
|
+
"allowedValues": [
|
|
3526
|
+
"row",
|
|
3527
|
+
"page"
|
|
3528
|
+
],
|
|
3529
|
+
"description": "Escopo de normalizacao de escala para series e valores em colecoes: row (local por linha) ou page (sincronizado na pagina visivel).",
|
|
3530
|
+
"intentExamples": [
|
|
3531
|
+
"sincronizar escala de sparklines na pagina",
|
|
3532
|
+
"comparar amplitude entre linhas"
|
|
3533
|
+
]
|
|
3534
|
+
},
|
|
3535
|
+
{
|
|
3536
|
+
"path": "fieldMetadata[].presentation.visualization.tone",
|
|
3537
|
+
"category": "appearance",
|
|
3538
|
+
"valueKind": "enum",
|
|
3539
|
+
"allowedValues": [
|
|
3540
|
+
"neutral",
|
|
3541
|
+
"info",
|
|
3542
|
+
"success",
|
|
3543
|
+
"warning",
|
|
3544
|
+
"danger",
|
|
3545
|
+
"critical"
|
|
3546
|
+
],
|
|
3547
|
+
"description": "Tom semantico estatico da micro visualizacao.",
|
|
3548
|
+
"intentExamples": [
|
|
3549
|
+
"neutral",
|
|
3550
|
+
"success",
|
|
3551
|
+
"warning",
|
|
3552
|
+
"danger",
|
|
3553
|
+
"critical"
|
|
3554
|
+
]
|
|
3555
|
+
},
|
|
3556
|
+
{
|
|
3557
|
+
"path": "fieldMetadata[].presentation.visualization.toneExpr",
|
|
3558
|
+
"category": "appearance",
|
|
3559
|
+
"valueKind": "object",
|
|
3560
|
+
"description": "Expressao Json Logic ou caminho row.<campo> para resolver dinamicamente o tom semantico da micro visualizacao.",
|
|
3561
|
+
"safetyNotes": "Deve retornar apenas um dos tons permitidos em presentationVisualizationTone."
|
|
3562
|
+
},
|
|
3563
|
+
{
|
|
3564
|
+
"path": "fieldMetadata[].presentation.visualization.valueExpr",
|
|
3565
|
+
"category": "behavior",
|
|
3566
|
+
"valueKind": "object",
|
|
3567
|
+
"description": "Caminho row.<campo> ou expressao Json Logic para obter o valor principal da micro visualizacao.",
|
|
3568
|
+
"intentExamples": [
|
|
3569
|
+
"row.slaValue",
|
|
3570
|
+
"row.progresso"
|
|
3571
|
+
]
|
|
3572
|
+
},
|
|
3573
|
+
{
|
|
3574
|
+
"path": "fieldMetadata[].presentation.visualization.valueSuffix",
|
|
3575
|
+
"category": "appearance",
|
|
3576
|
+
"valueKind": "string",
|
|
3577
|
+
"description": "Sufixo de unidade anexado ao valor numerico formatado (ex: \"%\", \" pts\", \" ms\", \" d\").",
|
|
3578
|
+
"intentExamples": [
|
|
3579
|
+
"mostrar % no bullet",
|
|
3580
|
+
"adicionar sufixo pts no radial"
|
|
3581
|
+
]
|
|
3582
|
+
},
|
|
3583
|
+
{
|
|
3584
|
+
"path": "fieldMetadata[].presentation.visualization.compactValue",
|
|
3585
|
+
"category": "appearance",
|
|
3586
|
+
"valueKind": "boolean",
|
|
3587
|
+
"description": "Formata valores numericos em notacao compacta (ex: 1.2M, 45.3K) para celulas densas.",
|
|
3588
|
+
"intentExamples": [
|
|
3589
|
+
"compactar valores financeiros grandes",
|
|
3590
|
+
"mostrar 1.2M em comparison"
|
|
3591
|
+
]
|
|
3592
|
+
},
|
|
3593
|
+
{
|
|
3594
|
+
"path": "fieldMetadata[].presentation.visualization.min",
|
|
3595
|
+
"category": "behavior",
|
|
3596
|
+
"valueKind": "number",
|
|
3597
|
+
"description": "Limite minimo explicito da escala numerica."
|
|
3598
|
+
},
|
|
3599
|
+
{
|
|
3600
|
+
"path": "fieldMetadata[].presentation.visualization.max",
|
|
3601
|
+
"category": "behavior",
|
|
3602
|
+
"valueKind": "number",
|
|
3603
|
+
"description": "Limite maximo explicito da escala numerica."
|
|
3604
|
+
},
|
|
3605
|
+
{
|
|
3606
|
+
"path": "fieldMetadata[].presentation.visualization.total",
|
|
3607
|
+
"category": "behavior",
|
|
3608
|
+
"valueKind": "number",
|
|
3609
|
+
"description": "Total explicito para proporcionalidade em stackedBar ou radial."
|
|
3610
|
+
},
|
|
3611
|
+
{
|
|
3612
|
+
"path": "fieldMetadata[].presentation.visualization.target",
|
|
3613
|
+
"category": "behavior",
|
|
3614
|
+
"valueKind": "number",
|
|
3615
|
+
"description": "Meta fixa para comparacao em bullet."
|
|
3616
|
+
},
|
|
3617
|
+
{
|
|
3618
|
+
"path": "fieldMetadata[].presentation.visualization.targetExpr",
|
|
3619
|
+
"category": "behavior",
|
|
3620
|
+
"valueKind": "object",
|
|
3621
|
+
"description": "Caminho row.<campo> ou expressao Json Logic para obter a meta por linha em bullet.",
|
|
3622
|
+
"intentExamples": [
|
|
3623
|
+
"row.metaSla",
|
|
3624
|
+
"row.target"
|
|
3625
|
+
]
|
|
3626
|
+
},
|
|
3627
|
+
{
|
|
3628
|
+
"path": "fieldMetadata[].presentation.visualization.baseline",
|
|
3629
|
+
"category": "behavior",
|
|
3630
|
+
"valueKind": "number",
|
|
3631
|
+
"description": "Valor de referencia fixo para comparison ou delta."
|
|
3632
|
+
},
|
|
3633
|
+
{
|
|
3634
|
+
"path": "fieldMetadata[].presentation.visualization.baselineExpr",
|
|
3635
|
+
"category": "behavior",
|
|
3636
|
+
"valueKind": "object",
|
|
3637
|
+
"description": "Caminho row.<campo> ou expressao Json Logic para obter o valor de referencia (baseline) por linha em comparison ou delta.",
|
|
3638
|
+
"intentExamples": [
|
|
3639
|
+
"row.orcamentoPrevisto",
|
|
3640
|
+
"row.indenizacoesTotal"
|
|
3641
|
+
]
|
|
3642
|
+
},
|
|
3643
|
+
{
|
|
3644
|
+
"path": "fieldMetadata[].presentation.visualization.pointsExpr",
|
|
3645
|
+
"category": "behavior",
|
|
3646
|
+
"valueKind": "object",
|
|
3647
|
+
"description": "Caminho row.<campo> ou expressao Json Logic para serie de pontos em line, area ou column.",
|
|
3648
|
+
"intentExamples": [
|
|
3649
|
+
"row.trend",
|
|
3650
|
+
"row.historicoMensal"
|
|
3651
|
+
]
|
|
3652
|
+
},
|
|
3653
|
+
{
|
|
3654
|
+
"path": "fieldMetadata[].presentation.visualization.segmentsExpr",
|
|
3655
|
+
"category": "behavior",
|
|
3656
|
+
"valueKind": "object",
|
|
3657
|
+
"description": "Caminho row.<campo> ou expressao Json Logic para lista de segmentos em stackedBar.",
|
|
3658
|
+
"intentExamples": [
|
|
3659
|
+
"row.capacitySegments",
|
|
3660
|
+
"row.distribuicao"
|
|
3661
|
+
]
|
|
3662
|
+
},
|
|
3663
|
+
{
|
|
3664
|
+
"path": "fieldMetadata[].presentation.visualization.itemsExpr",
|
|
3665
|
+
"category": "behavior",
|
|
3666
|
+
"valueKind": "object",
|
|
3667
|
+
"description": "Caminho row.<campo> ou expressao Json Logic para lista de etapas em processFlow.",
|
|
3668
|
+
"intentExamples": [
|
|
3669
|
+
"row.flowSteps",
|
|
3670
|
+
"row.etapasAprovacao"
|
|
3671
|
+
]
|
|
3672
|
+
},
|
|
3673
|
+
{
|
|
3674
|
+
"path": "fieldMetadata[].presentation.visualization.thresholds",
|
|
3675
|
+
"category": "appearance",
|
|
3676
|
+
"valueKind": "array",
|
|
3677
|
+
"description": "Faixas e limiares semanticos declarativos ({ value, min, max, tone, label }) para coloracao automatica e faixas qualitativas de bullet.",
|
|
3678
|
+
"intentExamples": [
|
|
3679
|
+
"[{ \"value\": 0, \"tone\": \"danger\" }, { \"value\": 60, \"tone\": \"warning\" }, { \"value\": 85, \"tone\": \"success\" }]"
|
|
3680
|
+
]
|
|
3681
|
+
},
|
|
3682
|
+
{
|
|
3683
|
+
"path": "fieldMetadata[].presentation.visualization.stepLabelLineClamp",
|
|
3684
|
+
"category": "layout",
|
|
3685
|
+
"valueKind": "number",
|
|
3686
|
+
"description": "Numero maximo de linhas (1 ou 2) para rotulos de etapas em processFlow."
|
|
3687
|
+
},
|
|
3688
|
+
{
|
|
3689
|
+
"path": "fieldMetadata[].presentation.visualization.ariaLabel",
|
|
3690
|
+
"category": "accessibility",
|
|
3691
|
+
"valueKind": "string",
|
|
3692
|
+
"description": "Rotulo acessivel explicito da micro visualizacao."
|
|
3693
|
+
},
|
|
3694
|
+
{
|
|
3695
|
+
"path": "fieldMetadata[].presentation.visualization.ariaLabelExpr",
|
|
3696
|
+
"category": "accessibility",
|
|
3697
|
+
"valueKind": "object",
|
|
3698
|
+
"description": "Caminho row.<campo> ou expressao Json Logic para compor o rotulo acessivel por linha."
|
|
3699
|
+
},
|
|
3517
3700
|
{
|
|
3518
3701
|
"path": "fieldMetadata[].presentation.visualization.fallbackText",
|
|
3519
3702
|
"category": "accessibility",
|
|
@@ -3521,6 +3704,12 @@
|
|
|
3521
3704
|
"description": "Texto equivalente obrigatorio para fallback, exportacao e leitores de tela.",
|
|
3522
3705
|
"safetyNotes": "Deve explicar valor, unidade, meta, tendencia ou estado quando aplicavel."
|
|
3523
3706
|
},
|
|
3707
|
+
{
|
|
3708
|
+
"path": "fieldMetadata[].presentation.visualization.fallbackTextExpr",
|
|
3709
|
+
"category": "accessibility",
|
|
3710
|
+
"valueKind": "object",
|
|
3711
|
+
"description": "Caminho row.<campo> ou expressao Json Logic para gerar o fallback textual dinamico por linha."
|
|
3712
|
+
},
|
|
3524
3713
|
{
|
|
3525
3714
|
"path": "fieldMetadata[].presentationRules",
|
|
3526
3715
|
"category": "appearance",
|
|
@@ -3569,6 +3758,30 @@
|
|
|
3569
3758
|
"exibir como porcentagem"
|
|
3570
3759
|
]
|
|
3571
3760
|
},
|
|
3761
|
+
{
|
|
3762
|
+
"path": "fieldMetadata[].inlineVisualStyle",
|
|
3763
|
+
"category": "appearance",
|
|
3764
|
+
"valueKind": "enum",
|
|
3765
|
+
"allowedValues": [
|
|
3766
|
+
"compact",
|
|
3767
|
+
"graphic"
|
|
3768
|
+
],
|
|
3769
|
+
"description": "Estilo visual para controles numericos percentuais inline (compact: pilula liquida com micro-anel e popover; graphic: card expandido com donut, trilho graduado e presets).",
|
|
3770
|
+
"intentExamples": [
|
|
3771
|
+
"usar percentual compacto na barra",
|
|
3772
|
+
"exibir card grafico de percentual"
|
|
3773
|
+
]
|
|
3774
|
+
},
|
|
3775
|
+
{
|
|
3776
|
+
"path": "fieldMetadata[].percentPresets",
|
|
3777
|
+
"category": "data",
|
|
3778
|
+
"valueKind": "array",
|
|
3779
|
+
"description": "Lista de percentuais rapidos exibidos nos botoes de preset do Percent Studio (ex.: [0, 25, 50, 75, 100]).",
|
|
3780
|
+
"intentExamples": [
|
|
3781
|
+
"atalhos de percentual 10, 25, 50 e 100%",
|
|
3782
|
+
"definir presets de porcentagem"
|
|
3783
|
+
]
|
|
3784
|
+
},
|
|
3572
3785
|
{
|
|
3573
3786
|
"path": "fieldMetadata[].validators",
|
|
3574
3787
|
"category": "validation",
|
|
@@ -4361,6 +4574,57 @@
|
|
|
4361
4574
|
"valueKind": "string",
|
|
4362
4575
|
"description": "Chave de endpoint (ApiEndpoint)."
|
|
4363
4576
|
},
|
|
4577
|
+
{
|
|
4578
|
+
"path": "pageHeader",
|
|
4579
|
+
"category": "defaults",
|
|
4580
|
+
"valueKind": "object",
|
|
4581
|
+
"description": "Cabeçalho executivo declarativo quando hospedado em PraxisResourcePage."
|
|
4582
|
+
},
|
|
4583
|
+
{
|
|
4584
|
+
"path": "pageHeader.title",
|
|
4585
|
+
"category": "defaults",
|
|
4586
|
+
"valueKind": "string",
|
|
4587
|
+
"description": "Título principal da página corporativa."
|
|
4588
|
+
},
|
|
4589
|
+
{
|
|
4590
|
+
"path": "pageHeader.subtitle",
|
|
4591
|
+
"category": "defaults",
|
|
4592
|
+
"valueKind": "string",
|
|
4593
|
+
"description": "Subtítulo executivo da página corporativa."
|
|
4594
|
+
},
|
|
4595
|
+
{
|
|
4596
|
+
"path": "pageHeader.domain",
|
|
4597
|
+
"category": "defaults",
|
|
4598
|
+
"valueKind": "object",
|
|
4599
|
+
"description": "Distintivo (badge) de domínio exibido acima do título da página."
|
|
4600
|
+
},
|
|
4601
|
+
{
|
|
4602
|
+
"path": "pageHeader.domain.label",
|
|
4603
|
+
"category": "defaults",
|
|
4604
|
+
"valueKind": "string",
|
|
4605
|
+
"description": "Texto do badge de domínio."
|
|
4606
|
+
},
|
|
4607
|
+
{
|
|
4608
|
+
"path": "pageHeader.domain.icon",
|
|
4609
|
+
"category": "defaults",
|
|
4610
|
+
"valueKind": "string",
|
|
4611
|
+
"description": "Ícone Material opcional do badge de domínio."
|
|
4612
|
+
},
|
|
4613
|
+
{
|
|
4614
|
+
"path": "pageHeader.domain.tone",
|
|
4615
|
+
"category": "defaults",
|
|
4616
|
+
"valueKind": "enum",
|
|
4617
|
+
"allowedValues": [
|
|
4618
|
+
"primary",
|
|
4619
|
+
"accent",
|
|
4620
|
+
"info",
|
|
4621
|
+
"success",
|
|
4622
|
+
"warning",
|
|
4623
|
+
"danger",
|
|
4624
|
+
"neutral"
|
|
4625
|
+
],
|
|
4626
|
+
"description": "Tom semântico do badge de domínio."
|
|
4627
|
+
},
|
|
4364
4628
|
{
|
|
4365
4629
|
"path": "queryContext.meta.domainCatalog",
|
|
4366
4630
|
"category": "resource",
|
|
@@ -4415,6 +4679,110 @@
|
|
|
4415
4679
|
"valueKind": "object",
|
|
4416
4680
|
"description": "FormConfig completo (usar catalogo de formulario)."
|
|
4417
4681
|
},
|
|
4682
|
+
{
|
|
4683
|
+
"path": "filterBar",
|
|
4684
|
+
"category": "table",
|
|
4685
|
+
"valueKind": "object",
|
|
4686
|
+
"description": "Configuração declarativa da barra de filtros rápidos e inline do CRUD."
|
|
4687
|
+
},
|
|
4688
|
+
{
|
|
4689
|
+
"path": "filterBar.inlineFields",
|
|
4690
|
+
"category": "table",
|
|
4691
|
+
"valueKind": "array",
|
|
4692
|
+
"description": "Campos visíveis inline na barra de filtros."
|
|
4693
|
+
},
|
|
4694
|
+
{
|
|
4695
|
+
"path": "filterBar.quickFilters",
|
|
4696
|
+
"category": "table",
|
|
4697
|
+
"valueKind": "array",
|
|
4698
|
+
"description": "Chips de filtro rápido ou false para desabilitar."
|
|
4699
|
+
},
|
|
4700
|
+
{
|
|
4701
|
+
"path": "filterBar.showAdvanced",
|
|
4702
|
+
"category": "table",
|
|
4703
|
+
"valueKind": "boolean",
|
|
4704
|
+
"description": "Habilita o painel de filtros avançados."
|
|
4705
|
+
},
|
|
4706
|
+
{
|
|
4707
|
+
"path": "filterBar.placement",
|
|
4708
|
+
"category": "table",
|
|
4709
|
+
"valueKind": "enum",
|
|
4710
|
+
"allowedValues": [
|
|
4711
|
+
"table-toolbar",
|
|
4712
|
+
"scope-bar"
|
|
4713
|
+
],
|
|
4714
|
+
"description": "Onde renderizar os filtros: table-toolbar ou scope-bar."
|
|
4715
|
+
},
|
|
4716
|
+
{
|
|
4717
|
+
"path": "kpiBand",
|
|
4718
|
+
"category": "table",
|
|
4719
|
+
"valueKind": "object",
|
|
4720
|
+
"description": "Faixa executiva declarativa de KPIs acima da listagem principal."
|
|
4721
|
+
},
|
|
4722
|
+
{
|
|
4723
|
+
"path": "kpiBand.source",
|
|
4724
|
+
"category": "table",
|
|
4725
|
+
"valueKind": "string",
|
|
4726
|
+
"description": "Path relativo do endpoint de KPIs/stats (ex: /stats, /stats/group-by)."
|
|
4727
|
+
},
|
|
4728
|
+
{
|
|
4729
|
+
"path": "kpiBand.method",
|
|
4730
|
+
"category": "table",
|
|
4731
|
+
"valueKind": "enum",
|
|
4732
|
+
"allowedValues": [
|
|
4733
|
+
"GET",
|
|
4734
|
+
"POST"
|
|
4735
|
+
],
|
|
4736
|
+
"description": "Metodo HTTP da consulta de KPIs (GET ou POST)."
|
|
4737
|
+
},
|
|
4738
|
+
{
|
|
4739
|
+
"path": "kpiBand.payload",
|
|
4740
|
+
"category": "table",
|
|
4741
|
+
"valueKind": "object",
|
|
4742
|
+
"description": "Payload JSON enviado quando kpiBand.method = POST."
|
|
4743
|
+
},
|
|
4744
|
+
{
|
|
4745
|
+
"path": "kpiBand.cards",
|
|
4746
|
+
"category": "table",
|
|
4747
|
+
"valueKind": "array",
|
|
4748
|
+
"description": "Lista declarativa de cards executivos da faixa de KPIs."
|
|
4749
|
+
},
|
|
4750
|
+
{
|
|
4751
|
+
"path": "kpiBand.cards[].id",
|
|
4752
|
+
"category": "table",
|
|
4753
|
+
"valueKind": "string",
|
|
4754
|
+
"description": "Identificador estavel do card de KPI."
|
|
4755
|
+
},
|
|
4756
|
+
{
|
|
4757
|
+
"path": "kpiBand.cards[].label",
|
|
4758
|
+
"category": "table",
|
|
4759
|
+
"valueKind": "string",
|
|
4760
|
+
"description": "Rotulo executivo do card de KPI."
|
|
4761
|
+
},
|
|
4762
|
+
{
|
|
4763
|
+
"path": "kpiBand.cards[].icon",
|
|
4764
|
+
"category": "table",
|
|
4765
|
+
"valueKind": "string",
|
|
4766
|
+
"description": "Icone Material opcional do card de KPI."
|
|
4767
|
+
},
|
|
4768
|
+
{
|
|
4769
|
+
"path": "kpiBand.cards[].valueExpr",
|
|
4770
|
+
"category": "table",
|
|
4771
|
+
"valueKind": "string",
|
|
4772
|
+
"description": "Dot-path no payload de stats com suporte a pipes declarativos CSP-safe (ex: totalCount | default:0 | number)."
|
|
4773
|
+
},
|
|
4774
|
+
{
|
|
4775
|
+
"path": "kpiBand.cards[].captionExpr",
|
|
4776
|
+
"category": "table",
|
|
4777
|
+
"valueKind": "string",
|
|
4778
|
+
"description": "Subtitulo ou expressao declarativa complementar com suporte a pipes CSP-safe."
|
|
4779
|
+
},
|
|
4780
|
+
{
|
|
4781
|
+
"path": "kpiBand.cards[].clickFilter",
|
|
4782
|
+
"category": "table",
|
|
4783
|
+
"valueKind": "object",
|
|
4784
|
+
"description": "Mapa declarativo de filtro rapido aplicado na tabela ao clicar no card de KPI."
|
|
4785
|
+
},
|
|
4418
4786
|
{
|
|
4419
4787
|
"path": "defaults",
|
|
4420
4788
|
"category": "defaults",
|
|
@@ -4759,7 +5127,8 @@
|
|
|
4759
5127
|
],
|
|
4760
5128
|
"componentCapabilityNotes": [
|
|
4761
5129
|
"CrudMetadata agrega TableConfig e FormConfig; use os catalogos de tabela e formulario para detalhes.",
|
|
4762
|
-
"actions[] herda campos de RowAction e ToolbarAction; combine com openMode/route/formId quando aplicavel."
|
|
5130
|
+
"actions[] herda campos de RowAction e ToolbarAction; combine com openMode/route/formId quando aplicavel.",
|
|
5131
|
+
"kpiBand renderiza cards executivos orientados a endpoint ou projecao declarativa; valueExpr e captionExpr suportam dot-paths e pipes declarativos CSP-safe (default:<fallback>, number, round[:decimals], percent[:decimals], currency[:code], uppercase, lowercase)."
|
|
4763
5132
|
],
|
|
4764
5133
|
"componentContext": {
|
|
4765
5134
|
"version": "v1",
|
|
@@ -5828,27 +6197,210 @@
|
|
|
5828
6197
|
},
|
|
5829
6198
|
"filterCriteria": {
|
|
5830
6199
|
"type": "object"
|
|
5831
|
-
}
|
|
5832
|
-
|
|
5833
|
-
|
|
5834
|
-
|
|
5835
|
-
|
|
5836
|
-
|
|
5837
|
-
|
|
5838
|
-
|
|
5839
|
-
|
|
5840
|
-
|
|
5841
|
-
"
|
|
5842
|
-
|
|
5843
|
-
|
|
5844
|
-
|
|
5845
|
-
|
|
5846
|
-
|
|
5847
|
-
|
|
5848
|
-
|
|
5849
|
-
|
|
5850
|
-
|
|
5851
|
-
|
|
6200
|
+
},
|
|
6201
|
+
"pageHeader": {
|
|
6202
|
+
"type": "object",
|
|
6203
|
+
"properties": {
|
|
6204
|
+
"title": {
|
|
6205
|
+
"type": "string"
|
|
6206
|
+
},
|
|
6207
|
+
"subtitle": {
|
|
6208
|
+
"type": "string"
|
|
6209
|
+
},
|
|
6210
|
+
"domain": {
|
|
6211
|
+
"type": "object",
|
|
6212
|
+
"required": [
|
|
6213
|
+
"label"
|
|
6214
|
+
],
|
|
6215
|
+
"properties": {
|
|
6216
|
+
"label": {
|
|
6217
|
+
"type": "string"
|
|
6218
|
+
},
|
|
6219
|
+
"icon": {
|
|
6220
|
+
"type": "string"
|
|
6221
|
+
},
|
|
6222
|
+
"tone": {
|
|
6223
|
+
"enum": [
|
|
6224
|
+
"primary",
|
|
6225
|
+
"accent",
|
|
6226
|
+
"info",
|
|
6227
|
+
"success",
|
|
6228
|
+
"warning",
|
|
6229
|
+
"danger",
|
|
6230
|
+
"neutral",
|
|
6231
|
+
"warn"
|
|
6232
|
+
]
|
|
6233
|
+
}
|
|
6234
|
+
}
|
|
6235
|
+
}
|
|
6236
|
+
}
|
|
6237
|
+
},
|
|
6238
|
+
"kpiBand": {
|
|
6239
|
+
"type": "object",
|
|
6240
|
+
"properties": {
|
|
6241
|
+
"enabled": {
|
|
6242
|
+
"type": "boolean"
|
|
6243
|
+
},
|
|
6244
|
+
"columns": {
|
|
6245
|
+
"enum": [
|
|
6246
|
+
2,
|
|
6247
|
+
3,
|
|
6248
|
+
4
|
|
6249
|
+
]
|
|
6250
|
+
},
|
|
6251
|
+
"source": {
|
|
6252
|
+
"type": "string",
|
|
6253
|
+
"description": "Endpoint de telemetria agregada (/stats/group-by ou /filter?page=0&size=1)."
|
|
6254
|
+
},
|
|
6255
|
+
"method": {
|
|
6256
|
+
"enum": [
|
|
6257
|
+
"GET",
|
|
6258
|
+
"POST"
|
|
6259
|
+
]
|
|
6260
|
+
},
|
|
6261
|
+
"payload": {
|
|
6262
|
+
"type": "object"
|
|
6263
|
+
},
|
|
6264
|
+
"cards": {
|
|
6265
|
+
"type": "array",
|
|
6266
|
+
"items": {
|
|
6267
|
+
"type": "object",
|
|
6268
|
+
"required": [
|
|
6269
|
+
"label"
|
|
6270
|
+
],
|
|
6271
|
+
"properties": {
|
|
6272
|
+
"id": {
|
|
6273
|
+
"type": "string"
|
|
6274
|
+
},
|
|
6275
|
+
"label": {
|
|
6276
|
+
"type": "string"
|
|
6277
|
+
},
|
|
6278
|
+
"value": {
|
|
6279
|
+
"type": [
|
|
6280
|
+
"string",
|
|
6281
|
+
"number"
|
|
6282
|
+
]
|
|
6283
|
+
},
|
|
6284
|
+
"valueExpr": {
|
|
6285
|
+
"type": "string",
|
|
6286
|
+
"description": "Expressão ou template CSP-safe com pipes declarativos (ex.: '${totalCount | number | default:0} Registros')."
|
|
6287
|
+
},
|
|
6288
|
+
"caption": {
|
|
6289
|
+
"type": "string"
|
|
6290
|
+
},
|
|
6291
|
+
"captionExpr": {
|
|
6292
|
+
"type": "string",
|
|
6293
|
+
"description": "Expressão ou template CSP-safe para legenda com pipes declarativos (ex.: '(${((byKey.true / totalCount) * 100) | round:1 | default:0}%)')."
|
|
6294
|
+
},
|
|
6295
|
+
"icon": {
|
|
6296
|
+
"type": "string"
|
|
6297
|
+
},
|
|
6298
|
+
"variant": {
|
|
6299
|
+
"enum": [
|
|
6300
|
+
"default",
|
|
6301
|
+
"primary",
|
|
6302
|
+
"success",
|
|
6303
|
+
"warning",
|
|
6304
|
+
"danger"
|
|
6305
|
+
]
|
|
6306
|
+
},
|
|
6307
|
+
"tone": {
|
|
6308
|
+
"enum": [
|
|
6309
|
+
"neutral",
|
|
6310
|
+
"primary",
|
|
6311
|
+
"info",
|
|
6312
|
+
"success",
|
|
6313
|
+
"warning",
|
|
6314
|
+
"danger"
|
|
6315
|
+
]
|
|
6316
|
+
},
|
|
6317
|
+
"filter": {
|
|
6318
|
+
"type": "object"
|
|
6319
|
+
}
|
|
6320
|
+
}
|
|
6321
|
+
}
|
|
6322
|
+
}
|
|
6323
|
+
}
|
|
6324
|
+
},
|
|
6325
|
+
"filterBar": {
|
|
6326
|
+
"type": "object",
|
|
6327
|
+
"properties": {
|
|
6328
|
+
"inlineFields": {
|
|
6329
|
+
"type": "array",
|
|
6330
|
+
"items": {
|
|
6331
|
+
"type": "string"
|
|
6332
|
+
}
|
|
6333
|
+
},
|
|
6334
|
+
"quickFilters": {
|
|
6335
|
+
"oneOf": [
|
|
6336
|
+
{
|
|
6337
|
+
"const": false
|
|
6338
|
+
},
|
|
6339
|
+
{
|
|
6340
|
+
"type": "array",
|
|
6341
|
+
"items": {
|
|
6342
|
+
"type": "object",
|
|
6343
|
+
"required": [
|
|
6344
|
+
"id",
|
|
6345
|
+
"label",
|
|
6346
|
+
"filter"
|
|
6347
|
+
],
|
|
6348
|
+
"properties": {
|
|
6349
|
+
"id": {
|
|
6350
|
+
"type": "string"
|
|
6351
|
+
},
|
|
6352
|
+
"label": {
|
|
6353
|
+
"type": "string"
|
|
6354
|
+
},
|
|
6355
|
+
"icon": {
|
|
6356
|
+
"type": "string"
|
|
6357
|
+
},
|
|
6358
|
+
"filter": {
|
|
6359
|
+
"type": [
|
|
6360
|
+
"string",
|
|
6361
|
+
"object"
|
|
6362
|
+
]
|
|
6363
|
+
}
|
|
6364
|
+
}
|
|
6365
|
+
}
|
|
6366
|
+
}
|
|
6367
|
+
]
|
|
6368
|
+
},
|
|
6369
|
+
"showAdvanced": {
|
|
6370
|
+
"type": "boolean"
|
|
6371
|
+
},
|
|
6372
|
+
"placement": {
|
|
6373
|
+
"enum": [
|
|
6374
|
+
"table-toolbar",
|
|
6375
|
+
"scope-bar"
|
|
6376
|
+
]
|
|
6377
|
+
}
|
|
6378
|
+
}
|
|
6379
|
+
}
|
|
6380
|
+
}
|
|
6381
|
+
},
|
|
6382
|
+
"effects": [
|
|
6383
|
+
{
|
|
6384
|
+
"kind": "compile-domain-patch",
|
|
6385
|
+
"handler": "crud-list-surface-configure",
|
|
6386
|
+
"handlerContract": {
|
|
6387
|
+
"reads": [
|
|
6388
|
+
"CrudMetadata.table",
|
|
6389
|
+
"CrudMetadata.queryContext",
|
|
6390
|
+
"CrudMetadata.kpiBand",
|
|
6391
|
+
"CrudMetadata.filterBar",
|
|
6392
|
+
"PRAXIS_TABLE_AUTHORING_MANIFEST",
|
|
6393
|
+
"CRUD_AI_CAPABILITIES"
|
|
6394
|
+
],
|
|
6395
|
+
"writes": [
|
|
6396
|
+
"CrudMetadata.table",
|
|
6397
|
+
"CrudMetadata.queryContext",
|
|
6398
|
+
"CrudMetadata.filterCriteria",
|
|
6399
|
+
"CrudMetadata.kpiBand",
|
|
6400
|
+
"CrudMetadata.filterBar"
|
|
6401
|
+
],
|
|
6402
|
+
"identityKeys": [
|
|
6403
|
+
"crudId"
|
|
5852
6404
|
],
|
|
5853
6405
|
"inputSchema": {
|
|
5854
6406
|
"type": "object",
|
|
@@ -5861,6 +6413,185 @@
|
|
|
5861
6413
|
},
|
|
5862
6414
|
"filterCriteria": {
|
|
5863
6415
|
"type": "object"
|
|
6416
|
+
},
|
|
6417
|
+
"pageHeader": {
|
|
6418
|
+
"type": "object",
|
|
6419
|
+
"properties": {
|
|
6420
|
+
"title": {
|
|
6421
|
+
"type": "string"
|
|
6422
|
+
},
|
|
6423
|
+
"subtitle": {
|
|
6424
|
+
"type": "string"
|
|
6425
|
+
},
|
|
6426
|
+
"domain": {
|
|
6427
|
+
"type": "object",
|
|
6428
|
+
"required": [
|
|
6429
|
+
"label"
|
|
6430
|
+
],
|
|
6431
|
+
"properties": {
|
|
6432
|
+
"label": {
|
|
6433
|
+
"type": "string"
|
|
6434
|
+
},
|
|
6435
|
+
"icon": {
|
|
6436
|
+
"type": "string"
|
|
6437
|
+
},
|
|
6438
|
+
"tone": {
|
|
6439
|
+
"enum": [
|
|
6440
|
+
"primary",
|
|
6441
|
+
"accent",
|
|
6442
|
+
"info",
|
|
6443
|
+
"success",
|
|
6444
|
+
"warning",
|
|
6445
|
+
"danger",
|
|
6446
|
+
"neutral",
|
|
6447
|
+
"warn"
|
|
6448
|
+
]
|
|
6449
|
+
}
|
|
6450
|
+
}
|
|
6451
|
+
}
|
|
6452
|
+
}
|
|
6453
|
+
},
|
|
6454
|
+
"kpiBand": {
|
|
6455
|
+
"type": "object",
|
|
6456
|
+
"properties": {
|
|
6457
|
+
"enabled": {
|
|
6458
|
+
"type": "boolean"
|
|
6459
|
+
},
|
|
6460
|
+
"columns": {
|
|
6461
|
+
"enum": [
|
|
6462
|
+
2,
|
|
6463
|
+
3,
|
|
6464
|
+
4
|
|
6465
|
+
]
|
|
6466
|
+
},
|
|
6467
|
+
"source": {
|
|
6468
|
+
"type": "string",
|
|
6469
|
+
"description": "Endpoint de telemetria agregada (/stats/group-by ou /filter?page=0&size=1)."
|
|
6470
|
+
},
|
|
6471
|
+
"method": {
|
|
6472
|
+
"enum": [
|
|
6473
|
+
"GET",
|
|
6474
|
+
"POST"
|
|
6475
|
+
]
|
|
6476
|
+
},
|
|
6477
|
+
"payload": {
|
|
6478
|
+
"type": "object"
|
|
6479
|
+
},
|
|
6480
|
+
"cards": {
|
|
6481
|
+
"type": "array",
|
|
6482
|
+
"items": {
|
|
6483
|
+
"type": "object",
|
|
6484
|
+
"required": [
|
|
6485
|
+
"label"
|
|
6486
|
+
],
|
|
6487
|
+
"properties": {
|
|
6488
|
+
"id": {
|
|
6489
|
+
"type": "string"
|
|
6490
|
+
},
|
|
6491
|
+
"label": {
|
|
6492
|
+
"type": "string"
|
|
6493
|
+
},
|
|
6494
|
+
"value": {
|
|
6495
|
+
"type": [
|
|
6496
|
+
"string",
|
|
6497
|
+
"number"
|
|
6498
|
+
]
|
|
6499
|
+
},
|
|
6500
|
+
"valueExpr": {
|
|
6501
|
+
"type": "string",
|
|
6502
|
+
"description": "Expressão ou template CSP-safe com pipes declarativos (ex.: '${totalCount | number | default:0} Registros')."
|
|
6503
|
+
},
|
|
6504
|
+
"caption": {
|
|
6505
|
+
"type": "string"
|
|
6506
|
+
},
|
|
6507
|
+
"captionExpr": {
|
|
6508
|
+
"type": "string",
|
|
6509
|
+
"description": "Expressão ou template CSP-safe para legenda com pipes declarativos (ex.: '(${((byKey.true / totalCount) * 100) | round:1 | default:0}%)')."
|
|
6510
|
+
},
|
|
6511
|
+
"icon": {
|
|
6512
|
+
"type": "string"
|
|
6513
|
+
},
|
|
6514
|
+
"variant": {
|
|
6515
|
+
"enum": [
|
|
6516
|
+
"default",
|
|
6517
|
+
"primary",
|
|
6518
|
+
"success",
|
|
6519
|
+
"warning",
|
|
6520
|
+
"danger"
|
|
6521
|
+
]
|
|
6522
|
+
},
|
|
6523
|
+
"tone": {
|
|
6524
|
+
"enum": [
|
|
6525
|
+
"neutral",
|
|
6526
|
+
"primary",
|
|
6527
|
+
"info",
|
|
6528
|
+
"success",
|
|
6529
|
+
"warning",
|
|
6530
|
+
"danger"
|
|
6531
|
+
]
|
|
6532
|
+
},
|
|
6533
|
+
"filter": {
|
|
6534
|
+
"type": "object"
|
|
6535
|
+
}
|
|
6536
|
+
}
|
|
6537
|
+
}
|
|
6538
|
+
}
|
|
6539
|
+
}
|
|
6540
|
+
},
|
|
6541
|
+
"filterBar": {
|
|
6542
|
+
"type": "object",
|
|
6543
|
+
"properties": {
|
|
6544
|
+
"inlineFields": {
|
|
6545
|
+
"type": "array",
|
|
6546
|
+
"items": {
|
|
6547
|
+
"type": "string"
|
|
6548
|
+
}
|
|
6549
|
+
},
|
|
6550
|
+
"quickFilters": {
|
|
6551
|
+
"oneOf": [
|
|
6552
|
+
{
|
|
6553
|
+
"const": false
|
|
6554
|
+
},
|
|
6555
|
+
{
|
|
6556
|
+
"type": "array",
|
|
6557
|
+
"items": {
|
|
6558
|
+
"type": "object",
|
|
6559
|
+
"required": [
|
|
6560
|
+
"id",
|
|
6561
|
+
"label",
|
|
6562
|
+
"filter"
|
|
6563
|
+
],
|
|
6564
|
+
"properties": {
|
|
6565
|
+
"id": {
|
|
6566
|
+
"type": "string"
|
|
6567
|
+
},
|
|
6568
|
+
"label": {
|
|
6569
|
+
"type": "string"
|
|
6570
|
+
},
|
|
6571
|
+
"icon": {
|
|
6572
|
+
"type": "string"
|
|
6573
|
+
},
|
|
6574
|
+
"filter": {
|
|
6575
|
+
"type": [
|
|
6576
|
+
"string",
|
|
6577
|
+
"object"
|
|
6578
|
+
]
|
|
6579
|
+
}
|
|
6580
|
+
}
|
|
6581
|
+
}
|
|
6582
|
+
}
|
|
6583
|
+
]
|
|
6584
|
+
},
|
|
6585
|
+
"showAdvanced": {
|
|
6586
|
+
"type": "boolean"
|
|
6587
|
+
},
|
|
6588
|
+
"placement": {
|
|
6589
|
+
"enum": [
|
|
6590
|
+
"table-toolbar",
|
|
6591
|
+
"scope-bar"
|
|
6592
|
+
]
|
|
6593
|
+
}
|
|
6594
|
+
}
|
|
5864
6595
|
}
|
|
5865
6596
|
}
|
|
5866
6597
|
},
|
|
@@ -5869,7 +6600,7 @@
|
|
|
5869
6600
|
"table-patch-not-supported",
|
|
5870
6601
|
"query-context-invalid"
|
|
5871
6602
|
],
|
|
5872
|
-
"description": "Configures CRUD-owned list orchestration while routing table semantics to the praxis-table manifest."
|
|
6603
|
+
"description": "Configures CRUD-owned list orchestration (including KPI band and filter bar shortcuts) while routing table semantics to the praxis-table manifest."
|
|
5873
6604
|
}
|
|
5874
6605
|
}
|
|
5875
6606
|
],
|
|
@@ -5882,12 +6613,390 @@
|
|
|
5882
6613
|
"affectedPaths": [
|
|
5883
6614
|
"table",
|
|
5884
6615
|
"queryContext",
|
|
5885
|
-
"filterCriteria"
|
|
6616
|
+
"filterCriteria",
|
|
6617
|
+
"kpiBand",
|
|
6618
|
+
"filterBar"
|
|
6619
|
+
],
|
|
6620
|
+
"submissionImpact": "config-only",
|
|
6621
|
+
"preconditions": [
|
|
6622
|
+
"crud-metadata-loaded",
|
|
6623
|
+
"praxis-table-manifest-available"
|
|
6624
|
+
]
|
|
6625
|
+
},
|
|
6626
|
+
{
|
|
6627
|
+
"operationId": "list.kpiBand.configure",
|
|
6628
|
+
"title": "Configure CRUD KPI band",
|
|
6629
|
+
"scope": "interaction",
|
|
6630
|
+
"targetKind": "listSurface",
|
|
6631
|
+
"target": {
|
|
6632
|
+
"kind": "listSurface",
|
|
6633
|
+
"resolver": "crud-list-surface",
|
|
6634
|
+
"ambiguityPolicy": "fail",
|
|
6635
|
+
"required": true
|
|
6636
|
+
},
|
|
6637
|
+
"inputSchema": {
|
|
6638
|
+
"type": "object",
|
|
6639
|
+
"properties": {
|
|
6640
|
+
"enabled": {
|
|
6641
|
+
"type": "boolean"
|
|
6642
|
+
},
|
|
6643
|
+
"columns": {
|
|
6644
|
+
"enum": [
|
|
6645
|
+
2,
|
|
6646
|
+
3,
|
|
6647
|
+
4
|
|
6648
|
+
]
|
|
6649
|
+
},
|
|
6650
|
+
"source": {
|
|
6651
|
+
"type": "string",
|
|
6652
|
+
"description": "Endpoint de telemetria agregada (/stats/group-by ou /filter?page=0&size=1)."
|
|
6653
|
+
},
|
|
6654
|
+
"method": {
|
|
6655
|
+
"enum": [
|
|
6656
|
+
"GET",
|
|
6657
|
+
"POST"
|
|
6658
|
+
]
|
|
6659
|
+
},
|
|
6660
|
+
"payload": {
|
|
6661
|
+
"type": "object"
|
|
6662
|
+
},
|
|
6663
|
+
"cards": {
|
|
6664
|
+
"type": "array",
|
|
6665
|
+
"items": {
|
|
6666
|
+
"type": "object",
|
|
6667
|
+
"required": [
|
|
6668
|
+
"label"
|
|
6669
|
+
],
|
|
6670
|
+
"properties": {
|
|
6671
|
+
"id": {
|
|
6672
|
+
"type": "string"
|
|
6673
|
+
},
|
|
6674
|
+
"label": {
|
|
6675
|
+
"type": "string"
|
|
6676
|
+
},
|
|
6677
|
+
"value": {
|
|
6678
|
+
"type": [
|
|
6679
|
+
"string",
|
|
6680
|
+
"number"
|
|
6681
|
+
]
|
|
6682
|
+
},
|
|
6683
|
+
"valueExpr": {
|
|
6684
|
+
"type": "string",
|
|
6685
|
+
"description": "Expressão ou template CSP-safe com pipes declarativos (ex.: '${totalCount | number | default:0} Registros')."
|
|
6686
|
+
},
|
|
6687
|
+
"caption": {
|
|
6688
|
+
"type": "string"
|
|
6689
|
+
},
|
|
6690
|
+
"captionExpr": {
|
|
6691
|
+
"type": "string",
|
|
6692
|
+
"description": "Expressão ou template CSP-safe para legenda com pipes declarativos (ex.: '(${((byKey.true / totalCount) * 100) | round:1 | default:0}%)')."
|
|
6693
|
+
},
|
|
6694
|
+
"icon": {
|
|
6695
|
+
"type": "string"
|
|
6696
|
+
},
|
|
6697
|
+
"variant": {
|
|
6698
|
+
"enum": [
|
|
6699
|
+
"default",
|
|
6700
|
+
"primary",
|
|
6701
|
+
"success",
|
|
6702
|
+
"warning",
|
|
6703
|
+
"danger"
|
|
6704
|
+
]
|
|
6705
|
+
},
|
|
6706
|
+
"tone": {
|
|
6707
|
+
"enum": [
|
|
6708
|
+
"neutral",
|
|
6709
|
+
"primary",
|
|
6710
|
+
"info",
|
|
6711
|
+
"success",
|
|
6712
|
+
"warning",
|
|
6713
|
+
"danger"
|
|
6714
|
+
]
|
|
6715
|
+
},
|
|
6716
|
+
"filter": {
|
|
6717
|
+
"type": "object"
|
|
6718
|
+
}
|
|
6719
|
+
}
|
|
6720
|
+
}
|
|
6721
|
+
}
|
|
6722
|
+
}
|
|
6723
|
+
},
|
|
6724
|
+
"effects": [
|
|
6725
|
+
{
|
|
6726
|
+
"kind": "compile-domain-patch",
|
|
6727
|
+
"handler": "crud-kpi-band-configure",
|
|
6728
|
+
"handlerContract": {
|
|
6729
|
+
"reads": [
|
|
6730
|
+
"CrudMetadata.kpiBand",
|
|
6731
|
+
"CrudMetadata.resource"
|
|
6732
|
+
],
|
|
6733
|
+
"writes": [
|
|
6734
|
+
"CrudMetadata.kpiBand"
|
|
6735
|
+
],
|
|
6736
|
+
"identityKeys": [
|
|
6737
|
+
"crudId"
|
|
6738
|
+
],
|
|
6739
|
+
"inputSchema": {
|
|
6740
|
+
"type": "object",
|
|
6741
|
+
"properties": {
|
|
6742
|
+
"enabled": {
|
|
6743
|
+
"type": "boolean"
|
|
6744
|
+
},
|
|
6745
|
+
"columns": {
|
|
6746
|
+
"enum": [
|
|
6747
|
+
2,
|
|
6748
|
+
3,
|
|
6749
|
+
4
|
|
6750
|
+
]
|
|
6751
|
+
},
|
|
6752
|
+
"source": {
|
|
6753
|
+
"type": "string",
|
|
6754
|
+
"description": "Endpoint de telemetria agregada (/stats/group-by ou /filter?page=0&size=1)."
|
|
6755
|
+
},
|
|
6756
|
+
"method": {
|
|
6757
|
+
"enum": [
|
|
6758
|
+
"GET",
|
|
6759
|
+
"POST"
|
|
6760
|
+
]
|
|
6761
|
+
},
|
|
6762
|
+
"payload": {
|
|
6763
|
+
"type": "object"
|
|
6764
|
+
},
|
|
6765
|
+
"cards": {
|
|
6766
|
+
"type": "array",
|
|
6767
|
+
"items": {
|
|
6768
|
+
"type": "object",
|
|
6769
|
+
"required": [
|
|
6770
|
+
"label"
|
|
6771
|
+
],
|
|
6772
|
+
"properties": {
|
|
6773
|
+
"id": {
|
|
6774
|
+
"type": "string"
|
|
6775
|
+
},
|
|
6776
|
+
"label": {
|
|
6777
|
+
"type": "string"
|
|
6778
|
+
},
|
|
6779
|
+
"value": {
|
|
6780
|
+
"type": [
|
|
6781
|
+
"string",
|
|
6782
|
+
"number"
|
|
6783
|
+
]
|
|
6784
|
+
},
|
|
6785
|
+
"valueExpr": {
|
|
6786
|
+
"type": "string",
|
|
6787
|
+
"description": "Expressão ou template CSP-safe com pipes declarativos (ex.: '${totalCount | number | default:0} Registros')."
|
|
6788
|
+
},
|
|
6789
|
+
"caption": {
|
|
6790
|
+
"type": "string"
|
|
6791
|
+
},
|
|
6792
|
+
"captionExpr": {
|
|
6793
|
+
"type": "string",
|
|
6794
|
+
"description": "Expressão ou template CSP-safe para legenda com pipes declarativos (ex.: '(${((byKey.true / totalCount) * 100) | round:1 | default:0}%)')."
|
|
6795
|
+
},
|
|
6796
|
+
"icon": {
|
|
6797
|
+
"type": "string"
|
|
6798
|
+
},
|
|
6799
|
+
"variant": {
|
|
6800
|
+
"enum": [
|
|
6801
|
+
"default",
|
|
6802
|
+
"primary",
|
|
6803
|
+
"success",
|
|
6804
|
+
"warning",
|
|
6805
|
+
"danger"
|
|
6806
|
+
]
|
|
6807
|
+
},
|
|
6808
|
+
"tone": {
|
|
6809
|
+
"enum": [
|
|
6810
|
+
"neutral",
|
|
6811
|
+
"primary",
|
|
6812
|
+
"info",
|
|
6813
|
+
"success",
|
|
6814
|
+
"warning",
|
|
6815
|
+
"danger"
|
|
6816
|
+
]
|
|
6817
|
+
},
|
|
6818
|
+
"filter": {
|
|
6819
|
+
"type": "object"
|
|
6820
|
+
}
|
|
6821
|
+
}
|
|
6822
|
+
}
|
|
6823
|
+
}
|
|
6824
|
+
}
|
|
6825
|
+
},
|
|
6826
|
+
"failureModes": [
|
|
6827
|
+
"kpi-card-label-missing",
|
|
6828
|
+
"kpi-card-value-missing",
|
|
6829
|
+
"kpi-card-filter-invalid"
|
|
6830
|
+
],
|
|
6831
|
+
"description": "Configures the CRUD KPI summary band and optional click-to-filter card criteria."
|
|
6832
|
+
}
|
|
6833
|
+
}
|
|
6834
|
+
],
|
|
6835
|
+
"validators": [
|
|
6836
|
+
"crud-context-stable"
|
|
6837
|
+
],
|
|
6838
|
+
"affectedPaths": [
|
|
6839
|
+
"kpiBand"
|
|
6840
|
+
],
|
|
6841
|
+
"submissionImpact": "config-only",
|
|
6842
|
+
"preconditions": [
|
|
6843
|
+
"crud-metadata-loaded"
|
|
6844
|
+
]
|
|
6845
|
+
},
|
|
6846
|
+
{
|
|
6847
|
+
"operationId": "list.filterBar.configure",
|
|
6848
|
+
"title": "Configure CRUD filter bar",
|
|
6849
|
+
"scope": "interaction",
|
|
6850
|
+
"targetKind": "listSurface",
|
|
6851
|
+
"target": {
|
|
6852
|
+
"kind": "listSurface",
|
|
6853
|
+
"resolver": "crud-list-surface",
|
|
6854
|
+
"ambiguityPolicy": "fail",
|
|
6855
|
+
"required": true
|
|
6856
|
+
},
|
|
6857
|
+
"inputSchema": {
|
|
6858
|
+
"type": "object",
|
|
6859
|
+
"properties": {
|
|
6860
|
+
"inlineFields": {
|
|
6861
|
+
"type": "array",
|
|
6862
|
+
"items": {
|
|
6863
|
+
"type": "string"
|
|
6864
|
+
}
|
|
6865
|
+
},
|
|
6866
|
+
"quickFilters": {
|
|
6867
|
+
"oneOf": [
|
|
6868
|
+
{
|
|
6869
|
+
"const": false
|
|
6870
|
+
},
|
|
6871
|
+
{
|
|
6872
|
+
"type": "array",
|
|
6873
|
+
"items": {
|
|
6874
|
+
"type": "object",
|
|
6875
|
+
"required": [
|
|
6876
|
+
"id",
|
|
6877
|
+
"label",
|
|
6878
|
+
"filter"
|
|
6879
|
+
],
|
|
6880
|
+
"properties": {
|
|
6881
|
+
"id": {
|
|
6882
|
+
"type": "string"
|
|
6883
|
+
},
|
|
6884
|
+
"label": {
|
|
6885
|
+
"type": "string"
|
|
6886
|
+
},
|
|
6887
|
+
"icon": {
|
|
6888
|
+
"type": "string"
|
|
6889
|
+
},
|
|
6890
|
+
"filter": {
|
|
6891
|
+
"type": [
|
|
6892
|
+
"string",
|
|
6893
|
+
"object"
|
|
6894
|
+
]
|
|
6895
|
+
}
|
|
6896
|
+
}
|
|
6897
|
+
}
|
|
6898
|
+
}
|
|
6899
|
+
]
|
|
6900
|
+
},
|
|
6901
|
+
"showAdvanced": {
|
|
6902
|
+
"type": "boolean"
|
|
6903
|
+
},
|
|
6904
|
+
"placement": {
|
|
6905
|
+
"enum": [
|
|
6906
|
+
"table-toolbar",
|
|
6907
|
+
"scope-bar"
|
|
6908
|
+
]
|
|
6909
|
+
}
|
|
6910
|
+
}
|
|
6911
|
+
},
|
|
6912
|
+
"effects": [
|
|
6913
|
+
{
|
|
6914
|
+
"kind": "compile-domain-patch",
|
|
6915
|
+
"handler": "crud-filter-bar-configure",
|
|
6916
|
+
"handlerContract": {
|
|
6917
|
+
"reads": [
|
|
6918
|
+
"CrudMetadata.filterBar",
|
|
6919
|
+
"CrudMetadata.resource"
|
|
6920
|
+
],
|
|
6921
|
+
"writes": [
|
|
6922
|
+
"CrudMetadata.filterBar"
|
|
6923
|
+
],
|
|
6924
|
+
"identityKeys": [
|
|
6925
|
+
"crudId"
|
|
6926
|
+
],
|
|
6927
|
+
"inputSchema": {
|
|
6928
|
+
"type": "object",
|
|
6929
|
+
"properties": {
|
|
6930
|
+
"inlineFields": {
|
|
6931
|
+
"type": "array",
|
|
6932
|
+
"items": {
|
|
6933
|
+
"type": "string"
|
|
6934
|
+
}
|
|
6935
|
+
},
|
|
6936
|
+
"quickFilters": {
|
|
6937
|
+
"oneOf": [
|
|
6938
|
+
{
|
|
6939
|
+
"const": false
|
|
6940
|
+
},
|
|
6941
|
+
{
|
|
6942
|
+
"type": "array",
|
|
6943
|
+
"items": {
|
|
6944
|
+
"type": "object",
|
|
6945
|
+
"required": [
|
|
6946
|
+
"id",
|
|
6947
|
+
"label",
|
|
6948
|
+
"filter"
|
|
6949
|
+
],
|
|
6950
|
+
"properties": {
|
|
6951
|
+
"id": {
|
|
6952
|
+
"type": "string"
|
|
6953
|
+
},
|
|
6954
|
+
"label": {
|
|
6955
|
+
"type": "string"
|
|
6956
|
+
},
|
|
6957
|
+
"icon": {
|
|
6958
|
+
"type": "string"
|
|
6959
|
+
},
|
|
6960
|
+
"filter": {
|
|
6961
|
+
"type": [
|
|
6962
|
+
"string",
|
|
6963
|
+
"object"
|
|
6964
|
+
]
|
|
6965
|
+
}
|
|
6966
|
+
}
|
|
6967
|
+
}
|
|
6968
|
+
}
|
|
6969
|
+
]
|
|
6970
|
+
},
|
|
6971
|
+
"showAdvanced": {
|
|
6972
|
+
"type": "boolean"
|
|
6973
|
+
},
|
|
6974
|
+
"placement": {
|
|
6975
|
+
"enum": [
|
|
6976
|
+
"table-toolbar",
|
|
6977
|
+
"scope-bar"
|
|
6978
|
+
]
|
|
6979
|
+
}
|
|
6980
|
+
}
|
|
6981
|
+
},
|
|
6982
|
+
"failureModes": [
|
|
6983
|
+
"quick-filter-id-missing",
|
|
6984
|
+
"quick-filter-label-missing",
|
|
6985
|
+
"quick-filter-condition-invalid"
|
|
6986
|
+
],
|
|
6987
|
+
"description": "Configures CRUD filterBar shorthand (inlineFields, quickFilters, showAdvanced) expanded into the internal table runtime."
|
|
6988
|
+
}
|
|
6989
|
+
}
|
|
6990
|
+
],
|
|
6991
|
+
"validators": [
|
|
6992
|
+
"crud-context-stable"
|
|
6993
|
+
],
|
|
6994
|
+
"affectedPaths": [
|
|
6995
|
+
"filterBar"
|
|
5886
6996
|
],
|
|
5887
6997
|
"submissionImpact": "config-only",
|
|
5888
6998
|
"preconditions": [
|
|
5889
|
-
"crud-metadata-loaded"
|
|
5890
|
-
"praxis-table-manifest-available"
|
|
6999
|
+
"crud-metadata-loaded"
|
|
5891
7000
|
]
|
|
5892
7001
|
},
|
|
5893
7002
|
{
|
|
@@ -7680,9 +8789,9 @@
|
|
|
7680
8789
|
{
|
|
7681
8790
|
"chunkIndex": 0,
|
|
7682
8791
|
"chunkKind": "summary",
|
|
7683
|
-
"content": "Component ID: praxis-crud\nSelector: praxis-crud\nFriendly Name:
|
|
8792
|
+
"content": "Component ID: praxis-crud\nSelector: praxis-crud\nFriendly Name: Workspace de Recurso\nDescription: Superfície operacional completa guiada por contrato: listagem semântica, KPIs, escopo, dossiês e ações de negócio.\nLib/Package: @praxisui/crud\nTags: widget, crud, configurable, hasWizard, stable\nInputs:\n - metadata (CrudMetadata | string)\n - metadata.interactionMode ('interactive' | 'inspect-only')\n - crudId (string)\n - componentInstanceId (string)\n - tableConfigPersistenceStrategy ('local-first' | 'input-first' | 'volatile')\n - context (Record<string, unknown>)\n - metadata.queryContext (PraxisDataQueryContext | null)\n - metadata.resource.schemaPath (string | null)\n - metadata.resource.title (string | null)\n - metadata.resource.formTitle (string | null)\n - metadata.filterCriteria (Record<string, unknown> | null)\n - metadata.form (FormConfig)\n - metadata.actions[].form (CrudActionFormContract)\n - enableCustomization (boolean)\n - showResourceIdentityKey (boolean)\n - authoringCapability (string | null)\nOutputs:\n - afterOpen ({ mode: FormOpenMode; action: string })\n - afterClose (void)\n - afterSave ({ id: string | number; data: unknown })\n - afterDelete ({ id: string | number })\n - reactiveDeterminationExecuted ({ action: string; event: ReactiveDeterminationExecutionEvent })\n - reactiveDeterminationPendingChange ({ action: string; pending: boolean })\n - reactiveDeterminationStabilityChange (CrudReactiveDeterminationStabilityChange)\n - rowClick ({ row: unknown; index: number })\n - rowAction (CrudActionRuntimeEvent)\n - selectionChange (unknown)\n - resourceEvent (PraxisResourceEvent<unknown>)\n - error (unknown)\n - configureRequested (void)\n - crudAuthoringDocumentApplied (CrudAuthoringWidgetPersistenceEvent)\n - crudAuthoringDocumentSaved (CrudAuthoringWidgetPersistenceEvent)\n",
|
|
7684
8793
|
"sourcePointer": "projects/praxis-crud/src/lib/praxis-crud.metadata.ts",
|
|
7685
|
-
"contentHash": "
|
|
8794
|
+
"contentHash": "b37ebef7df9956adfb3bc89d3d448bfc3acf891002cad7a26349bd3839bd8dc2",
|
|
7686
8795
|
"sourceKind": "component_definition",
|
|
7687
8796
|
"sourceId": "praxis-crud",
|
|
7688
8797
|
"corpusVersion": "1.0.0"
|
|
@@ -7760,9 +8869,9 @@
|
|
|
7760
8869
|
{
|
|
7761
8870
|
"chunkIndex": 8,
|
|
7762
8871
|
"chunkKind": "capabilities",
|
|
7763
|
-
"content": "Schema Capability:\n - Path: fieldMetadata[].iconFontSize\n Category: appearance\n Kind: string\n Description: Tamanho tipográfico do ícone principal.\n\nSchema Capability:\n - Path: fieldMetadata[].valuePresentation\n Category: appearance\n Kind: object\n Description: Formato canonico de exibicao em superficies readonly/display, como moeda, numero, percentual, data, datetime, time e boolean.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation\n Category: appearance\n Kind: object\n Description: Estado visual semantico base para presentationMode, incluindo presenter, tone, icon, label, badge, tooltip, appearance e formatter opcional.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.presenter\n Category: appearance\n Kind: enum\n Description: Tipo semantico de renderizacao em modo apresentacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.tone\n Category: appearance\n Kind: enum\n Description: Tom semantico mapeado pelo consumidor para tokens de tema.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.appearance\n Category: appearance\n Kind: enum\n Description: Nivel de enfase visual do apresentador.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.icon\n Category: appearance\n Kind: string\n Description: Nome de icone Material Symbols usado pelo apresentador semantico.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.label\n Category: identity\n Kind: string\n Description: Rotulo semantico exibido por apresentadores como status, badge ou chip.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.badge\n Category: appearance\n Kind: string\n Description: Marcador secundario opcional exibido junto ao valor em superficies de apresentacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.prefix\n Category: appearance\n Kind: string\n Description: Prefixo visual readonly aplicado ao valor apresentado, sem alterar payload, filtros, ordenacao ou exportacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.suffix\n Category: appearance\n Kind: string\n Description: Sufixo visual readonly aplicado ao valor apresentado, sem alterar payload, filtros, ordenacao ou exportacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.valuePresentation\n Category: appearance\n Kind: object\n Description: Override de formatacao aplicado apenas pela superficie de apresentacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization\n Category: appearance\n Kind: object\n Description: Micro visualizacao renderer-neutral para superficies compactas como tabela, lista, header, card e form read-only.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.kind\n Category: appearance\n Kind: enum\n Description: Tipo semantico da micro visualizacao de apresentacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.surface\n Category: layout\n Kind: enum\n Description: Superficie alvo usada para aplicar regras de densidade e fallback.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.size\n Category: layout\n Kind: enum\n Description: Tamanho semantico da micro visualizacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.
|
|
8872
|
+
"content": "Schema Capability:\n - Path: fieldMetadata[].iconFontSize\n Category: appearance\n Kind: string\n Description: Tamanho tipográfico do ícone principal.\n\nSchema Capability:\n - Path: fieldMetadata[].valuePresentation\n Category: appearance\n Kind: object\n Description: Formato canonico de exibicao em superficies readonly/display, como moeda, numero, percentual, data, datetime, time e boolean.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation\n Category: appearance\n Kind: object\n Description: Estado visual semantico base para presentationMode, incluindo presenter, tone, icon, label, badge, tooltip, appearance e formatter opcional.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.presenter\n Category: appearance\n Kind: enum\n Description: Tipo semantico de renderizacao em modo apresentacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.tone\n Category: appearance\n Kind: enum\n Description: Tom semantico mapeado pelo consumidor para tokens de tema.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.appearance\n Category: appearance\n Kind: enum\n Description: Nivel de enfase visual do apresentador.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.icon\n Category: appearance\n Kind: string\n Description: Nome de icone Material Symbols usado pelo apresentador semantico.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.label\n Category: identity\n Kind: string\n Description: Rotulo semantico exibido por apresentadores como status, badge ou chip.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.badge\n Category: appearance\n Kind: string\n Description: Marcador secundario opcional exibido junto ao valor em superficies de apresentacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.prefix\n Category: appearance\n Kind: string\n Description: Prefixo visual readonly aplicado ao valor apresentado, sem alterar payload, filtros, ordenacao ou exportacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.suffix\n Category: appearance\n Kind: string\n Description: Sufixo visual readonly aplicado ao valor apresentado, sem alterar payload, filtros, ordenacao ou exportacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.valuePresentation\n Category: appearance\n Kind: object\n Description: Override de formatacao aplicado apenas pela superficie de apresentacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization\n Category: appearance\n Kind: object\n Description: Micro visualizacao renderer-neutral para superficies compactas como tabela, lista, header, card e form read-only.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.kind\n Category: appearance\n Kind: enum\n Description: Tipo semantico da micro visualizacao de apresentacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.surface\n Category: layout\n Kind: enum\n Description: Superficie alvo usada para aplicar regras de densidade e fallback.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.size\n Category: layout\n Kind: enum\n Description: Tamanho semantico da micro visualizacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.scaleScope\n Category: layout\n Kind: enum\n Description: Escopo de normalizacao de escala para series e valores em colecoes: row (local por linha) ou page (sincronizado na pagina visivel).\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.tone\n Category: appearance\n Kind: enum\n Description: Tom semantico estatico da micro visualizacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.toneExpr\n Category: appearance\n Kind: object\n Description: Expressao Json Logic ou caminho row.<campo> para resolver dinamicamente o tom semantico da micro visualizacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.valueExpr\n Category: behavior\n Kind: object\n Description: Caminho row.<campo> ou expressao Json Logic para obter o valor principal da micro visualizacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.valueSuffix\n Category: appearance\n Kind: string\n Description: Sufixo de unidade anexado ao valor numerico formatado (ex: \"%\", \" pts\", \" ms\", \" d\").\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.compactValue\n Category: appearance\n Kind: boolean\n Description: Formata valores numericos em notacao compacta (ex: 1.2M, 45.3K) para celulas densas.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.min\n Category: behavior\n Kind: number\n Description: Limite minimo explicito da escala numerica.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.max\n Category: behavior\n Kind: number\n Description: Limite maximo explicito da escala numerica.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.total\n Category: behavior\n Kind: number\n Description: Total explicito para proporcionalidade em stackedBar ou radial.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.target\n Category: behavior\n Kind: number\n Description: Meta fixa para comparacao em bullet.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.targetExpr\n Category: behavior\n Kind: object\n Description: Caminho row.<campo> ou expressao Json Logic para obter a meta por linha em bullet.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.baseline\n Category: behavior\n Kind: number\n Description: Valor de referencia fixo para comparison ou delta.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.baselineExpr\n Category: behavior\n Kind: object\n Description: Caminho row.<campo> ou expressao Json Logic para obter o valor de referencia (baseline) por linha em comparison ou delta.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.pointsExpr\n Category: behavior\n Kind: object\n Description: Caminho row.<campo> ou expressao Json Logic para serie de pontos em line, area ou column.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.segmentsExpr\n Category: behavior\n Kind: object\n Description: Caminho row.<campo> ou expressao Json Logic para lista de segmentos em stackedBar.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.itemsExpr\n Category: behavior\n Kind: object\n Description: Caminho row.<campo> ou expressao Json Logic para lista de etapas em processFlow.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.thresholds\n Category: appearance\n Kind: array\n Description: Faixas e limiares semanticos declarativos ({ value, min, max, tone, label }) para coloracao automatica e faixas qualitativas de bullet.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.stepLabelLineClamp\n Category: layout\n Kind: number\n Description: Numero maximo de linhas (1 ou 2) para rotulos de etapas em processFlow.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.ariaLabel\n Category: accessibility\n Kind: string\n Description: Rotulo acessivel explicito da micro visualizacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.ariaLabelExpr\n Category: accessibility\n Kind: object\n Description: Caminho row.<campo> ou expressao Json Logic para compor o rotulo acessivel por linha.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.fallbackText\n Category: accessibility\n Kind: string\n Description: Texto equivalente obrigatorio para fallback, exportacao e leitores de tela.",
|
|
7764
8873
|
"sourcePointer": "projects/praxis-crud/src/lib/ai/crud-ai-capabilities.ts",
|
|
7765
|
-
"contentHash": "
|
|
8874
|
+
"contentHash": "dc6be0dc67a901095196573bc7a8f81c4cae31110aa85265ef4ff6e1646b940b",
|
|
7766
8875
|
"sourceKind": "component_definition",
|
|
7767
8876
|
"sourceId": "praxis-crud",
|
|
7768
8877
|
"corpusVersion": "1.0.0"
|
|
@@ -7770,9 +8879,9 @@
|
|
|
7770
8879
|
{
|
|
7771
8880
|
"chunkIndex": 9,
|
|
7772
8881
|
"chunkKind": "capabilities",
|
|
7773
|
-
"content": "Schema Capability:\n - Path: fieldMetadata[].
|
|
8882
|
+
"content": "Schema Capability:\n - Path: fieldMetadata[].presentation.visualization.fallbackTextExpr\n Category: accessibility\n Kind: object\n Description: Caminho row.<campo> ou expressao Json Logic para gerar o fallback textual dinamico por linha.\n\nSchema Capability:\n - Path: fieldMetadata[].presentationRules\n Category: appearance\n Kind: array\n Description: Regras Json Logic ordenadas que sobrescrevem presentation em modo readonly/display; regras posteriores que casam vencem.\n\nSchema Capability:\n - Path: fieldMetadata[].presentationRules[].when\n Category: behavior\n Kind: object\n Description: Guarda Json Logic avaliada contra o contexto de apresentacao do campo.\n\nSchema Capability:\n - Path: fieldMetadata[].presentationRules[].set\n Category: appearance\n Kind: object\n Description: Patch semantico aplicado sobre presentation quando a guarda for verdadeira.\n\nSchema Capability:\n - Path: fieldMetadata[].mask\n Category: appearance\n Kind: string\n Description: Máscara de input (padrão do componente).\n\nSchema Capability:\n - Path: fieldMetadata[].format\n Category: appearance\n Kind: string\n Description: Formato de exibição (ex: pipes).\n\nSchema Capability:\n - Path: fieldMetadata[].inlineVisualStyle\n Category: appearance\n Kind: enum\n Description: Estilo visual para controles numericos percentuais inline (compact: pilula liquida com micro-anel e popover; graphic: card expandido com donut, trilho graduado e presets).\n\nSchema Capability:\n - Path: fieldMetadata[].percentPresets\n Category: data\n Kind: array\n Description: Lista de percentuais rapidos exibidos nos botoes de preset do Percent Studio (ex.: [0, 25, 50, 75, 100]).\n\nSchema Capability:\n - Path: fieldMetadata[].validators\n Category: validation\n Kind: object\n Description: Objeto contendo todas as regras de validação.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.required\n Category: validation\n Kind: boolean\n Description: Campo obrigatório.\n\nSchema Capability:\n - Path: fieldMetadata[].required\n Category: validation\n Kind: boolean\n Description: Campo obrigatório (alias rápido do validators.required).\n\nSchema Capability:\n - Path: fieldMetadata[].validators.requiredMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para required.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.email\n Category: validation\n Kind: boolean\n Description: Validação de formato de e-mail.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.emailMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para validação de email.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.minLength\n Category: validation\n Kind: number\n Description: Comprimento mínimo do texto.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.minLengthMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para minLength.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.maxLength\n Category: validation\n Kind: number\n Description: Comprimento máximo do texto.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.maxLengthMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para maxLength.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.min\n Category: validation\n Kind: number\n Description: Valor numérico mínimo.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.minMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para min.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.max\n Category: validation\n Kind: number\n Description: Valor numérico máximo.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.maxMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para max.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.pattern\n Category: validation\n Kind: string\n Description: Regex para validação.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.patternMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para pattern.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.cpf\n Category: validation\n Kind: boolean\n Description: Validador de CPF (legado).\n\nSchema Capability:\n - Path: fieldMetadata[].validators.cnpj\n Category: validation\n Kind: boolean\n Description: Validador de CNPJ (legado).\n\nSchema Capability:\n - Path: fieldMetadata[].validators.cpfCnpj\n Category: validation\n Kind: boolean\n Description: Validador automatico CPF/CNPJ (legado).\n\nSchema Capability:\n - Path: fieldMetadata[].validators.cnpjAlpha\n Category: validation\n Kind: boolean\n Description: Validador de CNPJ alfanumerico (legado).\n\nSchema Capability:\n - Path: fieldMetadata[].validators.cpfMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para CPF.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.cnpjMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para CNPJ.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.cnpjAlphaMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para CNPJ alfanumerico.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.url\n Category: validation\n Kind: boolean\n Description: Validador de URL.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.urlMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para URL.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.minWords\n Category: validation\n Kind: number\n Description: Mínimo de palavras.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.requiredChecked\n Category: validation\n Kind: boolean\n Description: Exige checkbox marcado (ex: termos de uso).\n\nSchema Capability:\n - Path: fieldMetadata[].validators.customValidator\n Category: validation\n Kind: expression\n Description: Validador customizado (função).\n\nSchema Capability:\n - Path: fieldMetadata[].validators.asyncValidator\n Category: validation\n Kind: expression\n Description: Validador async customizado (função).\n\nSchema Capability:\n - Path: fieldMetadata[].validators.matchField\n Category: validation\n Kind: string\n Description: Campo que deve coincidir (cross-field).\n\nSchema Capability:\n - Path: fieldMetadata[].validators.matchFieldMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para matchField.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.uniqueValidator\n Category: validation\n Kind: expression\n Description: Validador de unicidade via API (função).\n\nSchema Capability:\n - Path: fieldMetadata[].validators.uniqueMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para unicidade.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.conditionalValidation\n Category: validation\n Kind: array\n Description: Regras de validação condicional.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.conditionalValidation[].condition\n Category: validation\n Kind: expression\n Description: Condicao para aplicar validadores.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.conditionalValidation[].validators\n Category: validation\n Kind: object\n Description: Conjunto de validadores aplicados quando a condicao for verdadeira.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.validationTrigger\n Category: validation\n Kind: enum\n Description: Gatilho de validação no validator.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.validationDebounce\n Category: validation\n Kind: number\n Description: Debounce de validação no validator (ms).",
|
|
7774
8883
|
"sourcePointer": "projects/praxis-crud/src/lib/ai/crud-ai-capabilities.ts",
|
|
7775
|
-
"contentHash": "
|
|
8884
|
+
"contentHash": "1e418f6ed02cbfa86ec339516bc55adf540acfabcf2fa04fda54ccf2e15c1843",
|
|
7776
8885
|
"sourceKind": "component_definition",
|
|
7777
8886
|
"sourceId": "praxis-crud",
|
|
7778
8887
|
"corpusVersion": "1.0.0"
|
|
@@ -7780,9 +8889,9 @@
|
|
|
7780
8889
|
{
|
|
7781
8890
|
"chunkIndex": 10,
|
|
7782
8891
|
"chunkKind": "capabilities",
|
|
7783
|
-
"content": "Schema Capability:\n - Path: fieldMetadata[].
|
|
8892
|
+
"content": "Schema Capability:\n - Path: fieldMetadata[].validators.showInlineErrors\n Category: validation\n Kind: boolean\n Description: Exibe erros inline (validator).\n\nSchema Capability:\n - Path: fieldMetadata[].validators.errorPosition\n Category: validation\n Kind: enum\n Description: Posicao do erro (validator).\n\nSchema Capability:\n - Path: fieldMetadata[].validationMode\n Category: validation\n Kind: enum\n Description: Gatilho da validação (change/blur/submit).\n\nSchema Capability:\n - Path: fieldMetadata[].debounceTime\n Category: validation\n Kind: number\n Description: Debounce para validação em ms.\n\nSchema Capability:\n - Path: fieldMetadata[].options\n Category: data\n Kind: array\n Description: Array de opções conforme controlType (ex.: { key, value } ou { value, text/display }).\n\nSchema Capability:\n - Path: fieldMetadata[].endpoint\n Category: data\n Kind: string\n Description: URL para carregar opções remotas.\n\nSchema Capability:\n - Path: fieldMetadata[].valueField\n Category: data\n Kind: string\n Description: Nome da propriedade de valor nas opções.\n\nSchema Capability:\n - Path: fieldMetadata[].displayField\n Category: data\n Kind: string\n Description: Nome da propriedade de texto nas opções.\n\nSchema Capability:\n - Path: fieldMetadata[].filterField\n Category: data\n Kind: string\n Description: Campo para filtragem no backend.\n\nSchema Capability:\n - Path: fieldMetadata[].queryParams\n Category: data\n Kind: object\n Description: Parâmetros fixos para a query do endpoint.\n\nSchema Capability:\n - Path: fieldMetadata[].cacheDuration\n Category: data\n Kind: number\n Description: Duração do cache de dados em ms.\n\nSchema Capability:\n - Path: fieldMetadata[].hidden\n Category: behavior\n Kind: boolean\n Description: Oculta o campo globalmente.\n\nSchema Capability:\n - Path: fieldMetadata[].visibleIn\n Category: behavior\n Kind: array\n Description: Contextos onde o campo é visível.\n\nSchema Capability:\n - Path: fieldMetadata[].formHidden\n Category: behavior\n Kind: boolean\n Description: Oculta apenas no formulário.\n\nSchema Capability:\n - Path: fieldMetadata[].tableHidden\n Category: behavior\n Kind: boolean\n Description: Oculta apenas na tabela.\n\nSchema Capability:\n - Path: fieldMetadata[].filterHidden\n Category: behavior\n Kind: boolean\n Description: Oculta apenas no filtro.\n\nSchema Capability:\n - Path: fieldMetadata[].fieldAccess\n Category: behavior\n Kind: object\n Description: Politica canonica de UX para visibilidade/edicao por authorities publicadas pelo backend.\n\nSchema Capability:\n - Path: fieldMetadata[].fieldAccess.visibleForAuthorities\n Category: behavior\n Kind: array\n Description: Authorities que podem ver o campo no runtime quando a UX tiver claims explicitas.\n\nSchema Capability:\n - Path: fieldMetadata[].fieldAccess.editableForAuthorities\n Category: behavior\n Kind: array\n Description: Authorities que podem editar o campo no runtime quando a UX tiver claims explicitas.\n\nSchema Capability:\n - Path: fieldMetadata[].fieldAccess.reason\n Category: misc\n Kind: string\n Description: Justificativa explicativa/auditavel da politica de acesso do campo.\n\nSchema Capability:\n - Path: fieldMetadata[].dependencyFields\n Category: dependency\n Kind: array\n Description: Campos dos quais este campo depende.\n\nSchema Capability:\n - Path: fieldMetadata[].conditionalRequired\n Category: dependency\n Kind: expression\n Description: Condição Json Logic para obrigatoriedade declarativa.\n\nSchema Capability:\n - Path: fieldMetadata[].conditionalDisplay\n Category: dependency\n Kind: expression\n Description: Condição Json Logic para visibilidade declarativa.\n\nSchema Capability:\n - Path: fieldMetadata[].dependencyFilterMap\n Category: dependency\n Kind: object\n Description: Mapeamento de filtro baseado na dependência.\n\nSchema Capability:\n - Path: fieldMetadata[].dependencyValuePath\n Category: dependency\n Kind: string\n Description: Caminho no valor da dependência.\n\nSchema Capability:\n - Path: fieldMetadata[].dependencyMergeStrategy\n Category: dependency\n Kind: enum\n Description: Estratégia de merge dos dados carregados.\n\nSchema Capability:\n - Path: fieldMetadata[].dependencyLoadOnChange\n Category: dependency\n Kind: enum\n Description: Quando recarregar dependência.\n\nSchema Capability:\n - Path: fieldMetadata[].resetOnDependentChange\n Category: dependency\n Kind: boolean\n Description: Zera valor se dependência mudar.\n\nSchema Capability:\n - Path: fieldMetadata[].enableDependencyCascade\n Category: dependency\n Kind: boolean\n Description: Habilita/desabilita cascata nativa de dependências entre campos.\n\nSchema Capability:\n - Path: fieldMetadata[].dependencyDebounceMs\n Category: dependency\n Kind: number\n Description: Delay para reagir à mudança de dependência.\n\nSchema Capability:\n - Path: fieldMetadata[].suppressInlineErrorsOnCascade\n Category: dependency\n Kind: boolean\n Description: Suprime erros inline durante cascata.\n\nSchema Capability:\n - Path: fieldMetadata[].transformDisplayValue\n Category: transform\n Kind: expression\n Description: Transforma valor para exibição.\n\nSchema Capability:\n - Path: fieldMetadata[].transformSaveValue\n Category: transform\n Kind: expression\n Description: Transforma valor para salvar.\n\nSchema Capability:\n - Path: fieldMetadata[].textTransformApply\n Category: transform\n Kind: enum\n Description: Quando aplicar transformação de texto.\n\nSchema Capability:\n - Path: fieldMetadata[].inlineEditing\n Category: behavior\n Kind: boolean\n Description: Permite edição inline (tabelas).\n\nSchema Capability:\n - Path: fieldMetadata[].unique\n Category: validation\n Kind: boolean\n Description: Valida unicidade no backend.\n\nSchema Capability:\n - Path: fieldMetadata[].readOnly\n Category: behavior\n Kind: boolean\n Description: Campo somente leitura.\n\nSchema Capability:\n - Path: fieldMetadata[].disabled\n Category: behavior\n Kind: boolean\n Description: Campo desabilitado.\n\nSchema Capability:\n - Path: fieldMetadata[].defaultValue\n Category: data\n Kind: object\n Description: Valor inicial do campo.\n\nSchema Capability:\n - Path: fieldMetadata[].ariaLabel\n Category: accessibility\n Kind: string\n Description: Label para leitores de tela.\n\nSchema Capability:\n - Path: fieldMetadata[].ariaDescribedBy\n Category: accessibility\n Kind: string\n Description: IDs de descrição acessível.\n\nSchema Capability:\n - Path: fieldMetadata[].tabIndex\n Category: accessibility\n Kind: number\n Description: Ordem de tabulacao para teclado.\n\nSchema Capability:\n - Path: fieldMetadata[].accessKey\n Category: accessibility\n Kind: string\n Description: Atalho de teclado (accessKey).\n\nComponent Capability:\n - Path: component\n Category: meta\n Kind: enum\n Description: Identificador fixo do componente.\n\nComponent Capability:\n - Path: resource\n Category: resource\n Kind: object\n Description: Recurso principal do CRUD.\n\nComponent Capability:\n - Path: resource.path\n Category: resource\n Kind: string\n Description: Endpoint base do recurso.\n\nComponent Capability:\n - Path: resource.idField\n Category: resource\n Kind: string\n Description: Campo identificador do recurso.\n\nComponent Capability:\n - Path: resource.endpointKey\n Category: resource\n Kind: string\n Description: Chave de endpoint (ApiEndpoint).\n\nComponent Capability:\n - Path: pageHeader\n Category: defaults\n Kind: object\n Description: Cabeçalho executivo declarativo quando hospedado em PraxisResourcePage.\n\nComponent Capability:\n - Path: pageHeader.title\n Category: defaults\n Kind: string\n Description: Título principal da página corporativa.",
|
|
7784
8893
|
"sourcePointer": "projects/praxis-crud/src/lib/ai/crud-ai-capabilities.ts",
|
|
7785
|
-
"contentHash": "
|
|
8894
|
+
"contentHash": "6d6f5e173e431e90086e8878e5dac25c23bad520143f85557944d8f8a9242469",
|
|
7786
8895
|
"sourceKind": "component_definition",
|
|
7787
8896
|
"sourceId": "praxis-crud",
|
|
7788
8897
|
"corpusVersion": "1.0.0"
|
|
@@ -7790,15 +8899,25 @@
|
|
|
7790
8899
|
{
|
|
7791
8900
|
"chunkIndex": 11,
|
|
7792
8901
|
"chunkKind": "capabilities",
|
|
7793
|
-
"content": "Component Capability:\n - Path:
|
|
8902
|
+
"content": "Component Capability:\n - Path: pageHeader.subtitle\n Category: defaults\n Kind: string\n Description: Subtítulo executivo da página corporativa.\n\nComponent Capability:\n - Path: pageHeader.domain\n Category: defaults\n Kind: object\n Description: Distintivo (badge) de domínio exibido acima do título da página.\n\nComponent Capability:\n - Path: pageHeader.domain.label\n Category: defaults\n Kind: string\n Description: Texto do badge de domínio.\n\nComponent Capability:\n - Path: pageHeader.domain.icon\n Category: defaults\n Kind: string\n Description: Ícone Material opcional do badge de domínio.\n\nComponent Capability:\n - Path: pageHeader.domain.tone\n Category: defaults\n Kind: enum\n Description: Tom semântico do badge de domínio.\n\nComponent Capability:\n - Path: queryContext.meta.domainCatalog\n Category: resource\n Kind: object\n Description: Referencia leve para contexto semantico/governanca resolvido via Domain Catalog; nao materializa regras em FormConfig.\n\nComponent Capability:\n - Path: queryContext.meta.domainCatalog.schemaVersion\n Category: resource\n Kind: string\n Description: Versao do contrato DomainCatalogContextHint usado em runtime e prompts.\n\nComponent Capability:\n - Path: queryContext.meta.domainCatalog.resourceKey\n Category: resource\n Kind: string\n Description: ResourceKey semantico estavel usado para resolver vocabulario/governanca de dominio.\n\nComponent Capability:\n - Path: queryContext.meta.domainCatalog.releaseId\n Category: resource\n Kind: string\n Description: Release opcional do Domain Catalog usada como fonte do contexto.\n\nComponent Capability:\n - Path: queryContext.meta.domainCatalog.query\n Category: resource\n Kind: string\n Description: Probe de campo/conceito usado para buscar itens relevantes, como cpf, salario ou status.\n\nComponent Capability:\n - Path: queryContext.meta.domainCatalog.intent\n Category: resource\n Kind: enum\n Description: Intencao de uso do contexto para orientar LLMs e validadores sem expor dados alem do necessario.\n\nComponent Capability:\n - Path: table\n Category: table\n Kind: object\n Description: TableConfig completo (usar catalogo de tabela).\n\nComponent Capability:\n - Path: form\n Category: form\n Kind: object\n Description: FormConfig completo (usar catalogo de formulario).\n\nComponent Capability:\n - Path: filterBar\n Category: table\n Kind: object\n Description: Configuração declarativa da barra de filtros rápidos e inline do CRUD.\n\nComponent Capability:\n - Path: filterBar.inlineFields\n Category: table\n Kind: array\n Description: Campos visíveis inline na barra de filtros.\n\nComponent Capability:\n - Path: filterBar.quickFilters\n Category: table\n Kind: array\n Description: Chips de filtro rápido ou false para desabilitar.\n\nComponent Capability:\n - Path: filterBar.showAdvanced\n Category: table\n Kind: boolean\n Description: Habilita o painel de filtros avançados.\n\nComponent Capability:\n - Path: filterBar.placement\n Category: table\n Kind: enum\n Description: Onde renderizar os filtros: table-toolbar ou scope-bar.\n\nComponent Capability:\n - Path: kpiBand\n Category: table\n Kind: object\n Description: Faixa executiva declarativa de KPIs acima da listagem principal.\n\nComponent Capability:\n - Path: kpiBand.source\n Category: table\n Kind: string\n Description: Path relativo do endpoint de KPIs/stats (ex: /stats, /stats/group-by).\n\nComponent Capability:\n - Path: kpiBand.method\n Category: table\n Kind: enum\n Description: Metodo HTTP da consulta de KPIs (GET ou POST).\n\nComponent Capability:\n - Path: kpiBand.payload\n Category: table\n Kind: object\n Description: Payload JSON enviado quando kpiBand.method = POST.\n\nComponent Capability:\n - Path: kpiBand.cards\n Category: table\n Kind: array\n Description: Lista declarativa de cards executivos da faixa de KPIs.\n\nComponent Capability:\n - Path: kpiBand.cards[].id\n Category: table\n Kind: string\n Description: Identificador estavel do card de KPI.\n\nComponent Capability:\n - Path: kpiBand.cards[].label\n Category: table\n Kind: string\n Description: Rotulo executivo do card de KPI.\n\nComponent Capability:\n - Path: kpiBand.cards[].icon\n Category: table\n Kind: string\n Description: Icone Material opcional do card de KPI.\n\nComponent Capability:\n - Path: kpiBand.cards[].valueExpr\n Category: table\n Kind: string\n Description: Dot-path no payload de stats com suporte a pipes declarativos CSP-safe (ex: totalCount | default:0 | number).\n\nComponent Capability:\n - Path: kpiBand.cards[].captionExpr\n Category: table\n Kind: string\n Description: Subtitulo ou expressao declarativa complementar com suporte a pipes CSP-safe.\n\nComponent Capability:\n - Path: kpiBand.cards[].clickFilter\n Category: table\n Kind: object\n Description: Mapa declarativo de filtro rapido aplicado na tabela ao clicar no card de KPI.\n\nComponent Capability:\n - Path: defaults\n Category: defaults\n Kind: object\n Description: Defaults aplicados a acoes e UI.\n\nComponent Capability:\n - Path: defaults.openMode\n Category: defaults\n Kind: enum\n Description: Modo padrao de abertura (route/modal/drawer).\n\nComponent Capability:\n - Path: defaults.modal\n Category: defaults\n Kind: object\n Description: Config de dialog (DialogConfig).\n\nComponent Capability:\n - Path: defaults.back\n Category: navigation\n Kind: object\n Description: Config de retorno (BackConfig).\n\nComponent Capability:\n - Path: defaults.back.strategy\n Category: navigation\n Kind: enum\n Description: Estrategia de retorno.\n\nComponent Capability:\n - Path: defaults.back.returnTo\n Category: navigation\n Kind: string\n Description: Rota de retorno quando strategy=navigate.\n\nComponent Capability:\n - Path: defaults.back.confirmOnDirty\n Category: navigation\n Kind: boolean\n Description: Confirmar ao sair com alteracoes.\n\nComponent Capability:\n - Path: defaults.header\n Category: defaults\n Kind: object\n Description: Config do header do CRUD.\n\nComponent Capability:\n - Path: defaults.header.showBack\n Category: defaults\n Kind: boolean\n Description: Exibir botao voltar.\n\nComponent Capability:\n - Path: defaults.header.backLabel\n Category: defaults\n Kind: string\n Description: Label do botao voltar.\n\nComponent Capability:\n - Path: defaults.header.variant\n Category: defaults\n Kind: enum\n Description: Variante visual do header.\n\nComponent Capability:\n - Path: defaults.header.sticky\n Category: defaults\n Kind: boolean\n Description: Header fixo.\n\nComponent Capability:\n - Path: defaults.header.breadcrumbs\n Category: defaults\n Kind: boolean\n Description: Exibir breadcrumbs.\n\nComponent Capability:\n - Path: defaults.header.divider\n Category: defaults\n Kind: boolean\n Description: Exibir divisor no header.\n\nComponent Capability:\n - Path: actions\n Category: actions\n Kind: array\n Description: Acoes disponiveis no CRUD.\n\nComponent Capability:\n - Path: actions[].id\n Category: actions\n Kind: string\n Description: ID da acao (RowAction/ToolbarAction).\n\nComponent Capability:\n - Path: actions[].label\n Category: actions\n Kind: string\n Description: Label da acao.\n\nComponent Capability:\n - Path: actions[].icon\n Category: actions\n Kind: string\n Description: Icone da acao.\n\nComponent Capability:\n - Path: actions[].color\n Category: actions\n Kind: string\n Description: Cor da acao.\n\nComponent Capability:\n - Path: actions[].disabled\n Category: actions\n Kind: boolean\n Description: Acao desabilitada.\n\nComponent Capability:\n - Path: actions[].action\n Category: actions\n Kind: string\n Description: Nome da acao emitida.\n\nComponent Capability:\n - Path: actions[].tooltip\n Category: actions\n Kind: string\n Description: Tooltip da acao.",
|
|
7794
8903
|
"sourcePointer": "projects/praxis-crud/src/lib/ai/crud-ai-capabilities.ts",
|
|
7795
|
-
"contentHash": "
|
|
8904
|
+
"contentHash": "67474429c147d8a3a032061e60a4232432de429d812eb15f2ce4c9820f518915",
|
|
7796
8905
|
"sourceKind": "component_definition",
|
|
7797
8906
|
"sourceId": "praxis-crud",
|
|
7798
8907
|
"corpusVersion": "1.0.0"
|
|
7799
8908
|
},
|
|
7800
8909
|
{
|
|
7801
8910
|
"chunkIndex": 12,
|
|
8911
|
+
"chunkKind": "capabilities",
|
|
8912
|
+
"content": "Component Capability:\n - Path: actions[].requiresConfirmation\n Category: actions\n Kind: boolean\n Description: Exige confirmacao.\n\nComponent Capability:\n - Path: actions[].visibleWhen\n Category: actions\n Kind: expression\n Description: Condicao de visibilidade (RowAction/ToolbarAction).\n\nComponent Capability:\n - Path: actions[].separator\n Category: actions\n Kind: boolean\n Description: Separador apos a acao (RowAction).\n\nComponent Capability:\n - Path: actions[].autoDelete\n Category: actions\n Kind: boolean\n Description: Habilita auto delete (RowAction).\n\nComponent Capability:\n - Path: actions[].deleteEndpoint\n Category: actions\n Kind: string\n Description: Endpoint custom para delete (RowAction).\n\nComponent Capability:\n - Path: actions[].type\n Category: actions\n Kind: enum\n Description: Tipo de acao (ToolbarAction).\n\nComponent Capability:\n - Path: actions[].appearance\n Category: actions\n Kind: enum\n Description: Aparencia do botao (ToolbarAction).\n\nComponent Capability:\n - Path: actions[].position\n Category: actions\n Kind: enum\n Description: Posicao da acao (ToolbarAction).\n\nComponent Capability:\n - Path: actions[].order\n Category: actions\n Kind: number\n Description: Ordem de exibicao (ToolbarAction).\n\nComponent Capability:\n - Path: actions[].shortcut\n Category: actions\n Kind: string\n Description: Atalho de teclado (ToolbarAction).\n\nComponent Capability:\n - Path: actions[].children\n Category: actions\n Kind: array\n Description: Sub-acoes (menu).\n\nComponent Capability:\n - Path: actions[].openMode\n Category: actions\n Kind: enum\n Description: Modo de abertura da acao.\n\nComponent Capability:\n - Path: actions[].route\n Category: actions\n Kind: string\n Description: Rota para openMode=route.\n\nComponent Capability:\n - Path: actions[].formId\n Category: actions\n Kind: string\n Description: FormId canonico para modal/drawer; se ausente, o host precisa resolve-lo por override por acao antes da abertura.\n\nComponent Capability:\n - Path: actions[].form.submitLabel\n Category: actions\n Kind: string\n Description: Rótulo de apresentação do submit; não altera schema, método nem endpoint descobertos.\n\nComponent Capability:\n - Path: actions[].params\n Category: actions\n Kind: array\n Description: Mapeamento de parametros.\n\nComponent Capability:\n - Path: actions[].params[].from\n Category: actions\n Kind: string\n Description: Origem do parametro.\n\nComponent Capability:\n - Path: actions[].params[].to\n Category: actions\n Kind: enum\n Description: Destino do parametro.\n\nComponent Capability:\n - Path: actions[].params[].name\n Category: actions\n Kind: string\n Description: Nome do parametro no destino.\n\nComponent Capability:\n - Path: actions[].form.initialValue\n Category: actions\n Kind: object\n Description: Seed fixo do formulario injetado em inputs.initialValue antes da abertura.\n\nComponent Capability:\n - Path: actions[].form.layoutPolicy\n Category: actions\n Kind: object\n Description: Politica schema-driven opt-in encaminhada ao Dynamic Form para materializar detalhe ou command form sem FormConfig.sections local; deve acompanhar schemaUrl compativel, especialmente schemaType=request para comandos.\n\nComponent Capability:\n - Path: actions[].back\n Category: navigation\n Kind: object\n Description: BackConfig por acao.\n\nComponent Capability:\n - Path: actions[].back.strategy\n Category: navigation\n Kind: enum\n Description: Estrategia de retorno da acao (auto, close, navigate).\n\nComponent Capability:\n - Path: actions[].back.returnTo\n Category: navigation\n Kind: string\n Description: Rota ou destino usado quando a estrategia de retorno for navigate.\n\nComponent Capability:\n - Path: actions[].back.confirmOnDirty\n Category: navigation\n Kind: boolean\n Description: Solicita confirmacao antes de sair com alteracoes nao salvas.\n\nComponent Capability:\n - Path: i18n\n Category: i18n\n Kind: object\n Description: Mensagens i18n do CRUD.\n\nComponent Capability:\n - Path: i18n.crudDialog\n Category: i18n\n Kind: object\n Description: Mapa de textos do dialog.\n\nCapability Note:\n - CrudMetadata agrega TableConfig e FormConfig; use os catalogos de tabela e formulario para detalhes.\n\nCapability Note:\n - actions[] herda campos de RowAction e ToolbarAction; combine com openMode/route/formId quando aplicavel.\n\nCapability Note:\n - kpiBand renderiza cards executivos orientados a endpoint ou projecao declarativa; valueExpr e captionExpr suportam dot-paths e pipes declarativos CSP-safe (default:<fallback>, number, round[:decimals], percent[:decimals], currency[:code], uppercase, lowercase).",
|
|
8913
|
+
"sourcePointer": "projects/praxis-crud/src/lib/ai/crud-ai-capabilities.ts",
|
|
8914
|
+
"contentHash": "9e056f3d2dba3aeaddbc7b453ca636e63b715c50e62585a2d378f3d8ae815b4c",
|
|
8915
|
+
"sourceKind": "component_definition",
|
|
8916
|
+
"sourceId": "praxis-crud",
|
|
8917
|
+
"corpusVersion": "1.0.0"
|
|
8918
|
+
},
|
|
8919
|
+
{
|
|
8920
|
+
"chunkIndex": 13,
|
|
7802
8921
|
"chunkKind": "authoring_manifest",
|
|
7803
8922
|
"content": "{\"operationId\":\"resource.bind\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Bind CRUD resource Effects: compile-domain-patch. Bind this CRUD to funcionarios using id as the identifier.\",\"scope\":\"dataBinding\",\"target\":{\"kind\":\"resourceBinding\",\"resolver\":\"crud-resource-by-path-or-key\",\"required\":true},\"inputContract\":{\"required\":[\"resourcePath\"],\"properties\":[\"resourcePath\",\"resourceKey\",\"idField\",\"endpointKey\",\"queryContext\"],\"semanticTerms\":[\"resourcePath\",\"resourceKey\",\"idField\",\"endpointKey\",\"queryContext\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"resource.path\",\"resource.schemaPath\",\"resource.idField\",\"resource.endpointKey\",\"resource.apiUrlEntry\",\"queryContext\",\"filterCriteria\"],\"validators\":[{\"validatorId\":\"resource-exists-in-api-metadata\",\"level\":\"error\",\"code\":\"CRUD_RESOURCE_EXISTS\",\"description\":\"Resource must exist in api_metadata or resource discovery.\"},{\"validatorId\":\"resource-path-canonical\",\"level\":\"error\",\"code\":\"CRUD_RESOURCE_PATH_CANONICAL\",\"description\":\"Resource path must be canonical and not a local alias.\"},{\"validatorId\":\"resource-key-stable\",\"level\":\"error\",\"code\":\"CRUD_RESOURCE_KEY_STABLE\",\"description\":\"Resource key must remain stable for surfaces/actions/capabilities.\"},{\"validatorId\":\"id-field-known\",\"level\":\"error\",\"code\":\"CRUD_ID_FIELD_KNOWN\",\"description\":\"CRUD id field must exist for edit/view/delete flows.\"},{\"validatorId\":\"resource-capabilities-resolvable\",\"level\":\"error\",\"code\":\"CRUD_CAPABILITIES_RESOLVABLE\",\"description\":\"Resource capabilities must be resolvable before action enablement is authored.\"}],\"preconditions\":[\"crud-metadata-loaded\",\"api-metadata-available\"],\"submissionImpact\":\"affects-remote-binding\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"crud-bind-funcionarios-resource\",\"request\":\"Bind this CRUD to funcionarios using id as the identifier.\",\"operationId\":\"resource.bind\",\"target\":\"resource:funcionarios\",\"params\":{\"resourcePath\":\"/funcionarios\",\"resourceKey\":\"funcionarios\",\"idField\":\"id\"},\"isPositive\":true}],\"negativeExamples\":[]}",
|
|
7804
8923
|
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
@@ -7808,7 +8927,7 @@
|
|
|
7808
8927
|
"corpusVersion": "1.0.0"
|
|
7809
8928
|
},
|
|
7810
8929
|
{
|
|
7811
|
-
"chunkIndex":
|
|
8930
|
+
"chunkIndex": 14,
|
|
7812
8931
|
"chunkKind": "authoring_manifest",
|
|
7813
8932
|
"content": "{\"operationId\":\"domain.governanceContext.attach\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Attach Domain Catalog governance context Effects: compile-domain-patch. Use the Domain Catalog LGPD context for cpf before changing the employee CRUD. Copy the LGPD rule from Domain Catalog directly into the create form JSON.\",\"scope\":\"dataBinding\",\"target\":{\"kind\":\"domainGovernanceContext\",\"resolver\":\"domain-catalog-context-by-resource-key\",\"required\":true},\"inputContract\":{\"required\":[\"resourceKey\",\"query\"],\"properties\":[\"resourceKey\",\"releaseId\",\"query\",\"itemTypes\",\"intent\"],\"semanticTerms\":[\"resourceKey\",\"releaseId\",\"query\",\"itemTypes\",\"intent\",\"authoring\",\"explain\",\"validate\",\"ai-access-control\",\"governance\",\"vocabulary\",\"relationship\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"queryContext.meta.domainCatalog\"],\"validators\":[{\"validatorId\":\"resource-key-stable\",\"level\":\"error\",\"code\":\"CRUD_RESOURCE_KEY_STABLE\",\"description\":\"Resource key must remain stable for surfaces/actions/capabilities.\"},{\"validatorId\":\"domain-catalog-context-resolvable\",\"level\":\"error\",\"code\":\"CRUD_DOMAIN_CATALOG_CONTEXT_RESOLVABLE\",\"description\":\"Domain Catalog governance context must resolve for the resource key and requested probe before authoring uses it.\"},{\"validatorId\":\"domain-catalog-read-only\",\"level\":\"error\",\"code\":\"CRUD_DOMAIN_CATALOG_READ_ONLY\",\"description\":\"Domain Catalog is read-only semantic context; CRUD may reference a probe but must not persist copied catalog rules.\"},{\"validatorId\":\"ai-usage-visibility-respected\",\"level\":\"error\",\"code\":\"CRUD_AI_USAGE_VISIBILITY_RESPECTED\",\"description\":\"Authoring must respect Domain Catalog aiUsage.visibility before exposing field data, prompts or generated patches.\"},{\"validatorId\":\"no-form-config-rule-materialization\",\"level\":\"error\",\"code\":\"CRUD_NO_FORM_RULE_MATERIALIZATION\",\"description\":\"Shared domain governance must not be materialized into FormConfig rules unless a backend policy explicitly authorizes it.\"}],\"preconditions\":[\"crud-metadata-loaded\",\"api-metadata-available\",\"domain-catalog-service-available\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"crud-attach-lgpd-cpf-context\",\"request\":\"Use the Domain Catalog LGPD context for cpf before changing the employee CRUD.\",\"operationId\":\"domain.governanceContext.attach\",\"target\":\"domainCatalog:human-resources.funcionarios:cpf\",\"params\":{\"resourceKey\":\"human-resources.funcionarios\",\"query\":\"cpf\",\"itemTypes\":[\"governance\"],\"intent\":\"authoring\"},\"isPositive\":true}],\"negativeExamples\":[{\"id\":\"crud-reject-copy-domain-rule-to-formconfig\",\"request\":\"Copy the LGPD rule from Domain Catalog directly into the create form JSON.\",\"operationId\":\"domain.governanceContext.attach\",\"target\":\"domainCatalog:human-resources.funcionarios:cpf\",\"params\":{\"resourceKey\":\"human-resources.funcionarios\",\"query\":\"cpf\",\"itemTypes\":[\"governance\"],\"intent\":\"authoring\"},\"isPositive\":false}]}",
|
|
7814
8933
|
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
@@ -7818,17 +8937,37 @@
|
|
|
7818
8937
|
"corpusVersion": "1.0.0"
|
|
7819
8938
|
},
|
|
7820
8939
|
{
|
|
7821
|
-
"chunkIndex":
|
|
8940
|
+
"chunkIndex": 15,
|
|
7822
8941
|
"chunkKind": "authoring_manifest",
|
|
7823
|
-
"content": "{\"operationId\":\"list.surface.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configure CRUD list surface Effects: compile-domain-patch. Filter the list by active employees using the canonical query context.\",\"scope\":\"interaction\",\"target\":{\"kind\":\"listSurface\",\"resolver\":\"crud-list-surface\",\"required\":true},\"inputContract\":{\"required\":[],\"properties\":[\"tablePatch\",\"queryContext\",\"filterCriteria\"],\"semanticTerms\":[\"tablePatch\",\"queryContext\",\"filterCriteria\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"table\",\"queryContext\",\"filterCriteria\"],\"validators\":[{\"validatorId\":\"table-child-operation-delegated\",\"level\":\"error\",\"code\":\"CRUD_TABLE_CHILD_DELEGATED\",\"description\":\"Table semantics must be delegated to praxis-table.\"},{\"validatorId\":\"query-context-valid\",\"level\":\"error\",\"code\":\"CRUD_QUERY_CONTEXT_VALID\",\"description\":\"Query context must be valid for the bound resource.\"},{\"validatorId\":\"filter-criteria-bridge-valid\",\"level\":\"warning\",\"code\":\"CRUD_FILTER_CRITERIA_BRIDGE_VALID\",\"description\":\"filterCriteria is a bridge; prefer queryContext for new remote authoring.\"},{\"validatorId\":\"crud-context-stable\",\"level\":\"error\",\"code\":\"CRUD_CONTEXT_STABLE\",\"description\":\"Authoring must not break stable crudContext references.\"}],\"preconditions\":[\"crud-metadata-loaded\",\"praxis-table-manifest-available\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"crud-list-query-context\",\"request\":\"Filter the list by active employees using the canonical query context.\",\"operationId\":\"list.surface.configure\",\"target\":\"listSurface\",\"params\":{\"queryContext\":{\"filters\":[{\"field\":\"active\",\"operator\":\"eq\",\"value\":true}]}},\"isPositive\":true}],\"negativeExamples\":[]}",
|
|
8942
|
+
"content": "{\"operationId\":\"list.surface.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configure CRUD list surface Effects: compile-domain-patch. Filter the list by active employees using the canonical query context.\",\"scope\":\"interaction\",\"target\":{\"kind\":\"listSurface\",\"resolver\":\"crud-list-surface\",\"required\":true},\"inputContract\":{\"required\":[],\"properties\":[\"tablePatch\",\"queryContext\",\"filterCriteria\",\"pageHeader\",\"kpiBand\",\"filterBar\"],\"semanticTerms\":[\"tablePatch\",\"queryContext\",\"filterCriteria\",\"pageHeader\",\"kpiBand\",\"filterBar\",\"pageHeader.title\",\"pageHeader.subtitle\",\"pageHeader.domain\",\"kpiBand.enabled\",\"kpiBand.columns\",\"kpiBand.source\",\"kpiBand.method\",\"kpiBand.payload\",\"kpiBand.cards\",\"filterBar.inlineFields\",\"filterBar.quickFilters\",\"filterBar.showAdvanced\",\"filterBar.placement\",\"pageHeader.domain.label\",\"pageHeader.domain.icon\",\"pageHeader.domain.tone\",\"2\",\"3\",\"4\",\"GET\",\"POST\",\"table-toolbar\",\"scope-bar\",\"primary\",\"accent\",\"info\",\"success\",\"warning\",\"danger\",\"neutral\",\"warn\",\"kpiBand.cards.id\",\"kpiBand.cards.label\",\"kpiBand.cards.value\",\"kpiBand.cards.valueExpr\",\"kpiBand.cards.caption\",\"kpiBand.cards.captionExpr\",\"kpiBand.cards.icon\",\"kpiBand.cards.variant\",\"kpiBand.cards.tone\",\"kpiBand.cards.filter\",\"default\",\"false\",\"filterBar.quickFilters.id\",\"filterBar.quickFilters.label\",\"filterBar.quickFilters.icon\",\"filterBar.quickFilters.filter\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"table\",\"queryContext\",\"filterCriteria\",\"kpiBand\",\"filterBar\"],\"validators\":[{\"validatorId\":\"table-child-operation-delegated\",\"level\":\"error\",\"code\":\"CRUD_TABLE_CHILD_DELEGATED\",\"description\":\"Table semantics must be delegated to praxis-table.\"},{\"validatorId\":\"query-context-valid\",\"level\":\"error\",\"code\":\"CRUD_QUERY_CONTEXT_VALID\",\"description\":\"Query context must be valid for the bound resource.\"},{\"validatorId\":\"filter-criteria-bridge-valid\",\"level\":\"warning\",\"code\":\"CRUD_FILTER_CRITERIA_BRIDGE_VALID\",\"description\":\"filterCriteria is a bridge; prefer queryContext for new remote authoring.\"},{\"validatorId\":\"crud-context-stable\",\"level\":\"error\",\"code\":\"CRUD_CONTEXT_STABLE\",\"description\":\"Authoring must not break stable crudContext references.\"}],\"preconditions\":[\"crud-metadata-loaded\",\"praxis-table-manifest-available\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"crud-list-query-context\",\"request\":\"Filter the list by active employees using the canonical query context.\",\"operationId\":\"list.surface.configure\",\"target\":\"listSurface\",\"params\":{\"queryContext\":{\"filters\":[{\"field\":\"active\",\"operator\":\"eq\",\"value\":true}]}},\"isPositive\":true}],\"negativeExamples\":[]}",
|
|
7824
8943
|
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
7825
|
-
"contentHash": "
|
|
8944
|
+
"contentHash": "22f1b4ebc518afb853e054c38848fbe60fb172304b8837c0495fa44352872c2f",
|
|
7826
8945
|
"sourceKind": "component_definition",
|
|
7827
8946
|
"sourceId": "praxis-crud",
|
|
7828
8947
|
"corpusVersion": "1.0.0"
|
|
7829
8948
|
},
|
|
7830
8949
|
{
|
|
7831
|
-
"chunkIndex":
|
|
8950
|
+
"chunkIndex": 16,
|
|
8951
|
+
"chunkKind": "authoring_manifest",
|
|
8952
|
+
"content": "{\"operationId\":\"list.kpiBand.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configure CRUD KPI band Effects: compile-domain-patch.\",\"scope\":\"interaction\",\"target\":{\"kind\":\"listSurface\",\"resolver\":\"crud-list-surface\",\"required\":true},\"inputContract\":{\"required\":[],\"properties\":[\"enabled\",\"columns\",\"source\",\"method\",\"payload\",\"cards\"],\"semanticTerms\":[\"enabled\",\"columns\",\"source\",\"method\",\"payload\",\"cards\",\"2\",\"3\",\"4\",\"GET\",\"POST\",\"cards.id\",\"cards.label\",\"cards.value\",\"cards.valueExpr\",\"cards.caption\",\"cards.captionExpr\",\"cards.icon\",\"cards.variant\",\"cards.tone\",\"cards.filter\",\"default\",\"primary\",\"success\",\"warning\",\"danger\",\"neutral\",\"info\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"kpiBand\"],\"validators\":[{\"validatorId\":\"crud-context-stable\",\"level\":\"error\",\"code\":\"CRUD_CONTEXT_STABLE\",\"description\":\"Authoring must not break stable crudContext references.\"}],\"preconditions\":[\"crud-metadata-loaded\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
|
|
8953
|
+
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
8954
|
+
"contentHash": "26a7f50164974c02366e258cf919383876d7da23d8cb71763062435b337ba519",
|
|
8955
|
+
"sourceKind": "component_definition",
|
|
8956
|
+
"sourceId": "praxis-crud",
|
|
8957
|
+
"corpusVersion": "1.0.0"
|
|
8958
|
+
},
|
|
8959
|
+
{
|
|
8960
|
+
"chunkIndex": 17,
|
|
8961
|
+
"chunkKind": "authoring_manifest",
|
|
8962
|
+
"content": "{\"operationId\":\"list.filterBar.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configure CRUD filter bar Effects: compile-domain-patch.\",\"scope\":\"interaction\",\"target\":{\"kind\":\"listSurface\",\"resolver\":\"crud-list-surface\",\"required\":true},\"inputContract\":{\"required\":[],\"properties\":[\"inlineFields\",\"quickFilters\",\"showAdvanced\",\"placement\"],\"semanticTerms\":[\"inlineFields\",\"quickFilters\",\"showAdvanced\",\"placement\",\"table-toolbar\",\"scope-bar\",\"false\",\"quickFilters.id\",\"quickFilters.label\",\"quickFilters.icon\",\"quickFilters.filter\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"filterBar\"],\"validators\":[{\"validatorId\":\"crud-context-stable\",\"level\":\"error\",\"code\":\"CRUD_CONTEXT_STABLE\",\"description\":\"Authoring must not break stable crudContext references.\"}],\"preconditions\":[\"crud-metadata-loaded\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
|
|
8963
|
+
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
8964
|
+
"contentHash": "f3d4769bb40373cd49bdac5d65116425f4327582dbe74b658322d49a1c465d5b",
|
|
8965
|
+
"sourceKind": "component_definition",
|
|
8966
|
+
"sourceId": "praxis-crud",
|
|
8967
|
+
"corpusVersion": "1.0.0"
|
|
8968
|
+
},
|
|
8969
|
+
{
|
|
8970
|
+
"chunkIndex": 18,
|
|
7832
8971
|
"chunkKind": "authoring_manifest",
|
|
7833
8972
|
"content": "{\"operationId\":\"surface.create.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configure create surface Effects: compile-domain-patch. Open create in a modal with the employee form.\",\"scope\":\"interaction\",\"target\":{\"kind\":\"createSurface\",\"resolver\":\"crud-action-by-id:create\",\"required\":true},\"inputContract\":{\"required\":[\"actionId\",\"openMode\"],\"properties\":[\"actionId\",\"openMode\",\"route\",\"formId\",\"form\",\"params\",\"back\"],\"semanticTerms\":[\"actionId\",\"openMode\",\"route\",\"formId\",\"form\",\"params\",\"back\",\"create\",\"edit\",\"view\",\"modal\",\"drawer\",\"form.submitLabel\",\"form.schemaUrl\",\"form.submitUrl\",\"form.submitMethod\",\"form.apiEndpointKey\",\"form.initialValue\",\"form.layoutPolicy\",\"post\",\"put\",\"patch\",\"delete\",\"params.from\",\"params.to\",\"params.name\",\"routeParam\",\"query\",\"input\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"actions[].openMode\",\"actions[].route\",\"actions[].formId\",\"actions[].form\",\"actions[].params\",\"actions[].back\"],\"validators\":[{\"validatorId\":\"action-exists\",\"level\":\"error\",\"code\":\"CRUD_ACTION_EXISTS\",\"description\":\"Target action must exist or be created through CRUD action orchestration.\"},{\"validatorId\":\"open-mode-binding-complete\",\"level\":\"error\",\"code\":\"CRUD_OPEN_MODE_BINDING_COMPLETE\",\"description\":\"route requires route; modal/drawer require formId unless resolved by governed overrides.\"},{\"validatorId\":\"schema-url-canonical\",\"level\":\"error\",\"code\":\"CRUD_SCHEMA_URL_CANONICAL\",\"description\":\"Schema URLs must be canonical for the bound resource/action.\"},{\"validatorId\":\"submit-url-canonical\",\"level\":\"error\",\"code\":\"CRUD_SUBMIT_URL_CANONICAL\",\"description\":\"Submit URL and method must be canonical and declared together.\"},{\"validatorId\":\"resource-create-supported\",\"level\":\"error\",\"code\":\"CRUD_CREATE_SUPPORTED\",\"description\":\"Create surface requires resource create capability.\"},{\"validatorId\":\"form-child-operation-delegated\",\"level\":\"error\",\"code\":\"CRUD_FORM_CHILD_DELEGATED\",\"description\":\"FormConfig and FieldMetadata edits must delegate to dynamic-form/metadata-editor manifests.\"}],\"preconditions\":[\"crud-metadata-loaded\",\"resource-capabilities-resolved\"],\"submissionImpact\":\"affects-schema-backed-data\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"crud-create-modal\",\"request\":\"Open create in a modal with the employee form.\",\"operationId\":\"surface.create.configure\",\"target\":\"action:create\",\"params\":{\"actionId\":\"create\",\"openMode\":\"modal\",\"formId\":\"employee-create\"},\"isPositive\":true}],\"negativeExamples\":[]}",
|
|
7834
8973
|
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
@@ -7838,7 +8977,7 @@
|
|
|
7838
8977
|
"corpusVersion": "1.0.0"
|
|
7839
8978
|
},
|
|
7840
8979
|
{
|
|
7841
|
-
"chunkIndex":
|
|
8980
|
+
"chunkIndex": 19,
|
|
7842
8981
|
"chunkKind": "authoring_manifest",
|
|
7843
8982
|
"content": "{\"operationId\":\"surface.edit.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configure edit surface Effects: compile-domain-patch. Edit should navigate to /employees/:id and map the row id.\",\"scope\":\"interaction\",\"target\":{\"kind\":\"editSurface\",\"resolver\":\"crud-action-by-id:edit\",\"required\":true},\"inputContract\":{\"required\":[\"actionId\",\"openMode\"],\"properties\":[\"actionId\",\"openMode\",\"route\",\"formId\",\"form\",\"params\",\"back\"],\"semanticTerms\":[\"actionId\",\"openMode\",\"route\",\"formId\",\"form\",\"params\",\"back\",\"create\",\"edit\",\"view\",\"modal\",\"drawer\",\"form.submitLabel\",\"form.schemaUrl\",\"form.submitUrl\",\"form.submitMethod\",\"form.apiEndpointKey\",\"form.initialValue\",\"form.layoutPolicy\",\"post\",\"put\",\"patch\",\"delete\",\"params.from\",\"params.to\",\"params.name\",\"routeParam\",\"query\",\"input\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"actions[].openMode\",\"actions[].route\",\"actions[].formId\",\"actions[].form\",\"actions[].params\",\"actions[].back\"],\"validators\":[{\"validatorId\":\"action-exists\",\"level\":\"error\",\"code\":\"CRUD_ACTION_EXISTS\",\"description\":\"Target action must exist or be created through CRUD action orchestration.\"},{\"validatorId\":\"id-field-known\",\"level\":\"error\",\"code\":\"CRUD_ID_FIELD_KNOWN\",\"description\":\"CRUD id field must exist for edit/view/delete flows.\"},{\"validatorId\":\"id-param-mapping-valid\",\"level\":\"error\",\"code\":\"CRUD_ID_PARAM_MAPPING_VALID\",\"description\":\"Edit/view actions must map resource id into route/query/input as required.\"},{\"validatorId\":\"open-mode-binding-complete\",\"level\":\"error\",\"code\":\"CRUD_OPEN_MODE_BINDING_COMPLETE\",\"description\":\"route requires route; modal/drawer require formId unless resolved by governed overrides.\"},{\"validatorId\":\"schema-url-canonical\",\"level\":\"error\",\"code\":\"CRUD_SCHEMA_URL_CANONICAL\",\"description\":\"Schema URLs must be canonical for the bound resource/action.\"},{\"validatorId\":\"submit-url-canonical\",\"level\":\"error\",\"code\":\"CRUD_SUBMIT_URL_CANONICAL\",\"description\":\"Submit URL and method must be canonical and declared together.\"},{\"validatorId\":\"resource-edit-supported\",\"level\":\"error\",\"code\":\"CRUD_EDIT_SUPPORTED\",\"description\":\"Edit surface requires resource edit capability.\"},{\"validatorId\":\"form-child-operation-delegated\",\"level\":\"error\",\"code\":\"CRUD_FORM_CHILD_DELEGATED\",\"description\":\"FormConfig and FieldMetadata edits must delegate to dynamic-form/metadata-editor manifests.\"}],\"preconditions\":[\"crud-metadata-loaded\",\"resource-capabilities-resolved\"],\"submissionImpact\":\"affects-schema-backed-data\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"crud-edit-route-with-id\",\"request\":\"Edit should navigate to /employees/:id and map the row id.\",\"operationId\":\"surface.edit.configure\",\"target\":\"action:edit\",\"params\":{\"actionId\":\"edit\",\"openMode\":\"route\",\"route\":\"/employees/:id/edit\",\"params\":[{\"from\":\"id\",\"to\":\"routeParam\",\"name\":\"id\"}]},\"isPositive\":true}],\"negativeExamples\":[]}",
|
|
7844
8983
|
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
@@ -7848,7 +8987,7 @@
|
|
|
7848
8987
|
"corpusVersion": "1.0.0"
|
|
7849
8988
|
},
|
|
7850
8989
|
{
|
|
7851
|
-
"chunkIndex":
|
|
8990
|
+
"chunkIndex": 20,
|
|
7852
8991
|
"chunkKind": "authoring_manifest",
|
|
7853
8992
|
"content": "{\"operationId\":\"surface.view.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configure view surface Effects: compile-domain-patch. Open view in a drawer and keep the form readonly.\",\"scope\":\"interaction\",\"target\":{\"kind\":\"viewSurface\",\"resolver\":\"crud-action-by-id:view\",\"required\":true},\"inputContract\":{\"required\":[\"actionId\",\"openMode\"],\"properties\":[\"actionId\",\"openMode\",\"route\",\"formId\",\"form\",\"params\",\"back\"],\"semanticTerms\":[\"actionId\",\"openMode\",\"route\",\"formId\",\"form\",\"params\",\"back\",\"create\",\"edit\",\"view\",\"modal\",\"drawer\",\"form.submitLabel\",\"form.schemaUrl\",\"form.submitUrl\",\"form.submitMethod\",\"form.apiEndpointKey\",\"form.initialValue\",\"form.layoutPolicy\",\"post\",\"put\",\"patch\",\"delete\",\"params.from\",\"params.to\",\"params.name\",\"routeParam\",\"query\",\"input\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"actions[].openMode\",\"actions[].route\",\"actions[].formId\",\"actions[].form\",\"actions[].params\",\"actions[].back\"],\"validators\":[{\"validatorId\":\"action-exists\",\"level\":\"error\",\"code\":\"CRUD_ACTION_EXISTS\",\"description\":\"Target action must exist or be created through CRUD action orchestration.\"},{\"validatorId\":\"open-mode-binding-complete\",\"level\":\"error\",\"code\":\"CRUD_OPEN_MODE_BINDING_COMPLETE\",\"description\":\"route requires route; modal/drawer require formId unless resolved by governed overrides.\"},{\"validatorId\":\"schema-url-canonical\",\"level\":\"error\",\"code\":\"CRUD_SCHEMA_URL_CANONICAL\",\"description\":\"Schema URLs must be canonical for the bound resource/action.\"},{\"validatorId\":\"resource-view-supported\",\"level\":\"error\",\"code\":\"CRUD_VIEW_SUPPORTED\",\"description\":\"View surface requires resource view capability.\"},{\"validatorId\":\"form-child-operation-delegated\",\"level\":\"error\",\"code\":\"CRUD_FORM_CHILD_DELEGATED\",\"description\":\"FormConfig and FieldMetadata edits must delegate to dynamic-form/metadata-editor manifests.\"},{\"validatorId\":\"readonly-form-delegation-valid\",\"level\":\"error\",\"code\":\"CRUD_READONLY_FORM_DELEGATED\",\"description\":\"Readonly form behavior belongs to the dynamic-form manifest.\"}],\"preconditions\":[\"crud-metadata-loaded\",\"resource-capabilities-resolved\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"crud-view-drawer-readonly\",\"request\":\"Open view in a drawer and keep the form readonly.\",\"operationId\":\"surface.view.configure\",\"target\":\"action:view\",\"params\":{\"actionId\":\"view\",\"openMode\":\"drawer\",\"formId\":\"employee-view\"},\"isPositive\":true}],\"negativeExamples\":[]}",
|
|
7854
8993
|
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
@@ -7858,7 +8997,7 @@
|
|
|
7858
8997
|
"corpusVersion": "1.0.0"
|
|
7859
8998
|
},
|
|
7860
8999
|
{
|
|
7861
|
-
"chunkIndex":
|
|
9000
|
+
"chunkIndex": 21,
|
|
7862
9001
|
"chunkKind": "authoring_manifest",
|
|
7863
9002
|
"content": "{\"operationId\":\"delete.enabled.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configure delete behavior Effects: compile-domain-patch. Enable delete but require confirmation. Force delete even though the backend does not expose delete capability.\",\"scope\":\"interaction\",\"target\":{\"kind\":\"deleteBehavior\",\"resolver\":\"crud-action-by-id:delete\",\"required\":true},\"inputContract\":{\"required\":[\"enabled\"],\"properties\":[\"enabled\",\"actionId\",\"requiresConfirmation\",\"autoDelete\",\"form\"],\"semanticTerms\":[\"enabled\",\"actionId\",\"requiresConfirmation\",\"autoDelete\",\"form\",\"form.submitUrl\",\"form.submitMethod\",\"form.apiEndpointKey\",\"delete\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"actions[].disabled\",\"actions[].requiresConfirmation\",\"actions[].autoDelete\",\"actions[].form\",\"actions[].form.submitUrl\",\"actions[].form.submitMethod\",\"actions[].form.apiEndpointKey\"],\"validators\":[{\"validatorId\":\"delete-action-exists\",\"level\":\"error\",\"code\":\"CRUD_DELETE_ACTION_EXISTS\",\"description\":\"Delete behavior requires a delete action target.\"},{\"validatorId\":\"resource-delete-supported\",\"level\":\"error\",\"code\":\"CRUD_DELETE_SUPPORTED\",\"description\":\"Delete behavior requires resource delete capability.\"},{\"validatorId\":\"destructive-delete-confirmed\",\"level\":\"error\",\"code\":\"CRUD_DELETE_CONFIRMED\",\"description\":\"Destructive delete behavior requires explicit confirmation.\"},{\"validatorId\":\"submit-url-canonical\",\"level\":\"error\",\"code\":\"CRUD_SUBMIT_URL_CANONICAL\",\"description\":\"Submit URL and method must be canonical and declared together.\"},{\"validatorId\":\"permissions-delete-valid\",\"level\":\"error\",\"code\":\"CRUD_DELETE_PERMISSION_VALID\",\"description\":\"Delete permission cannot bypass resource capabilities or confirmation policy.\"}],\"preconditions\":[\"crud-metadata-loaded\",\"resource-capabilities-resolved\",\"explicit-confirmation-provided\"],\"submissionImpact\":\"affects-schema-backed-data\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"crud-delete-enable-confirmed\",\"request\":\"Enable delete but require confirmation.\",\"operationId\":\"delete.enabled.set\",\"target\":\"action:delete\",\"params\":{\"enabled\":true,\"actionId\":\"delete\",\"requiresConfirmation\":true,\"autoDelete\":true},\"isPositive\":true}],\"negativeExamples\":[{\"id\":\"crud-reject-delete-without-capability\",\"request\":\"Force delete even though the backend does not expose delete capability.\",\"operationId\":\"delete.enabled.set\",\"target\":\"action:delete\",\"params\":{\"enabled\":true,\"actionId\":\"delete\",\"requiresConfirmation\":false},\"isPositive\":false}]}",
|
|
7864
9003
|
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
@@ -7868,7 +9007,7 @@
|
|
|
7868
9007
|
"corpusVersion": "1.0.0"
|
|
7869
9008
|
},
|
|
7870
9009
|
{
|
|
7871
|
-
"chunkIndex":
|
|
9010
|
+
"chunkIndex": 22,
|
|
7872
9011
|
"chunkKind": "authoring_manifest",
|
|
7873
9012
|
"content": "{\"operationId\":\"dialog.size.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configure CRUD dialog host defaults Effects: compile-domain-patch. Make CRUD modals 900px wide and remember their last state. Open CRUD forms in a left drawer with an 8px maximized inset.\",\"scope\":\"interaction\",\"target\":{\"kind\":\"dialogHost\",\"resolver\":\"crud-dialog-host-defaults\",\"required\":true},\"inputContract\":{\"required\":[],\"properties\":[\"defaultOpenMode\",\"modal\",\"back\"],\"semanticTerms\":[\"defaultOpenMode\",\"modal\",\"back\",\"route\",\"drawer\",\"modal.width\",\"modal.height\",\"modal.minWidth\",\"modal.minHeight\",\"modal.maxWidth\",\"modal.maxHeight\",\"modal.density\",\"modal.backdropStyle\",\"modal.canMaximize\",\"modal.rememberLastState\",\"modal.closeOnSave\",\"modal.startMaximized\",\"modal.disableCloseOnEsc\",\"modal.disableCloseOnBackdrop\",\"modal.fullscreenBreakpoint\",\"modal.position\",\"modal.edgeGap\",\"blur\",\"dim\",\"transparent\",\"modal.position.top\",\"modal.position.bottom\",\"modal.position.left\",\"modal.position.right\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"defaults.openMode\",\"defaults.modal\",\"defaults.back\"],\"validators\":[{\"validatorId\":\"open-mode-supported\",\"level\":\"error\",\"code\":\"CRUD_OPEN_MODE_SUPPORTED\",\"description\":\"Open mode must be route, modal or drawer.\"},{\"validatorId\":\"modal-size-valid\",\"level\":\"error\",\"code\":\"CRUD_MODAL_SIZE_VALID\",\"description\":\"Modal sizing defaults must be valid DialogConfig values.\"},{\"validatorId\":\"drawer-runtime-available\",\"level\":\"error\",\"code\":\"CRUD_DRAWER_RUNTIME_AVAILABLE\",\"description\":\"Drawer open mode uses the default dialog-backed drawer runtime with CRUD-owned chrome, responsive right-panel sizing, Escape/backdrop handling and semantic close/save results; a host drawer adapter is optional only for shell-specific presentation.\"},{\"validatorId\":\"drawer-position-lifecycle-stable\",\"level\":\"error\",\"code\":\"CRUD_DRAWER_POSITION_LIFECYCLE_STABLE\",\"description\":\"A drawer must preserve its configured viewport edge through open, remembered-size restoration, maximize and restore.\"},{\"validatorId\":\"back-policy-valid\",\"level\":\"error\",\"code\":\"CRUD_BACK_POLICY_VALID\",\"description\":\"Back policy must be valid for route/modal/drawer behavior.\"},{\"validatorId\":\"settings-panel-shell-compatible\",\"level\":\"warning\",\"code\":\"CRUD_SETTINGS_PANEL_COMPATIBLE\",\"description\":\"Authoring shell must preserve apply/save/reset semantics.\"}],\"preconditions\":[\"crud-metadata-loaded\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"crud-dialog-size-medium\",\"request\":\"Make CRUD modals 900px wide and remember their last state.\",\"operationId\":\"dialog.size.set\",\"target\":\"dialogHost\",\"params\":{\"defaultOpenMode\":\"modal\",\"modal\":{\"width\":\"900px\",\"rememberLastState\":true}},\"isPositive\":true},{\"id\":\"crud-drawer-left-edge\",\"request\":\"Open CRUD forms in a left drawer with an 8px maximized inset.\",\"operationId\":\"dialog.size.set\",\"target\":\"dialogHost\",\"params\":{\"defaultOpenMode\":\"drawer\",\"modal\":{\"position\":{\"left\":\"0\",\"top\":\"0\"},\"edgeGap\":8}},\"isPositive\":true}],\"negativeExamples\":[]}",
|
|
7874
9013
|
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
@@ -7878,7 +9017,7 @@
|
|
|
7878
9017
|
"corpusVersion": "1.0.0"
|
|
7879
9018
|
},
|
|
7880
9019
|
{
|
|
7881
|
-
"chunkIndex":
|
|
9020
|
+
"chunkIndex": 23,
|
|
7882
9021
|
"chunkKind": "authoring_manifest",
|
|
7883
9022
|
"content": "{\"operationId\":\"permissions.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configure CRUD permissions Effects: compile-domain-patch. Hide delete when the resource capabilities do not allow it.\",\"scope\":\"interaction\",\"target\":{\"kind\":\"permissions\",\"resolver\":\"crud-resource-capabilities\",\"required\":true},\"inputContract\":{\"required\":[],\"properties\":[\"requiredCapabilities\",\"actionPermissions\",\"denyWhenMissingCapability\"],\"semanticTerms\":[\"requiredCapabilities\",\"actionPermissions\",\"denyWhenMissingCapability\",\"create\",\"view\",\"edit\",\"delete\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"actions[].disabled\",\"actions[].visibleWhen\",\"actions[].requiresConfirmation\"],\"validators\":[{\"validatorId\":\"resource-capabilities-resolvable\",\"level\":\"error\",\"code\":\"CRUD_CAPABILITIES_RESOLVABLE\",\"description\":\"Resource capabilities must be resolvable before action enablement is authored.\"},{\"validatorId\":\"action-permission-supported\",\"level\":\"error\",\"code\":\"CRUD_ACTION_PERMISSION_SUPPORTED\",\"description\":\"Action permissions must map to supported resource capabilities.\"},{\"validatorId\":\"delete-permission-requires-confirmation\",\"level\":\"error\",\"code\":\"CRUD_DELETE_PERMISSION_CONFIRMATION\",\"description\":\"Delete permission enablement requires confirmation policy.\"},{\"validatorId\":\"permissions-do-not-shadow-backend\",\"level\":\"error\",\"code\":\"CRUD_PERMISSIONS_NO_BACKEND_SHADOW\",\"description\":\"UI permissions must not shadow backend capability denial.\"}],\"preconditions\":[\"crud-metadata-loaded\",\"resource-capabilities-resolved\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"crud-permissions-no-delete\",\"request\":\"Hide delete when the resource capabilities do not allow it.\",\"operationId\":\"permissions.set\",\"target\":\"permissions:delete\",\"params\":{\"requiredCapabilities\":[\"delete\"],\"denyWhenMissingCapability\":true},\"isPositive\":true}],\"negativeExamples\":[]}",
|
|
7884
9023
|
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
@@ -7888,7 +9027,7 @@
|
|
|
7888
9027
|
"corpusVersion": "1.0.0"
|
|
7889
9028
|
},
|
|
7890
9029
|
{
|
|
7891
|
-
"chunkIndex":
|
|
9030
|
+
"chunkIndex": 24,
|
|
7892
9031
|
"chunkKind": "authoring_manifest",
|
|
7893
9032
|
"content": "{\"operationId\":\"form.childOperation.delegate\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Delegate child form/table/dialog authoring operation Effects: compile-domain-patch. Add a new field to the create form. Add a salary column to the list table. Put this dynamic-form validation rule directly inside CRUD.\",\"scope\":\"global\",\"target\":{\"kind\":\"childOperation\",\"resolver\":\"child-authoring-manifest-operation\",\"required\":false},\"inputContract\":{\"required\":[\"childComponentId\",\"childOperationId\",\"reason\"],\"properties\":[\"childComponentId\",\"childOperationId\",\"reason\",\"childTarget\",\"childParams\"],\"semanticTerms\":[\"childComponentId\",\"childOperationId\",\"reason\",\"childTarget\",\"childParams\",\"praxis-dynamic-form\",\"praxis-table\",\"praxis-dialog\",\"praxis-settings-panel\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"delegatedAuthoringOperations\"],\"validators\":[{\"validatorId\":\"child-manifest-available\",\"level\":\"error\",\"code\":\"CRUD_CHILD_MANIFEST_AVAILABLE\",\"description\":\"Delegated child manifest must be available.\"},{\"validatorId\":\"child-operation-known\",\"level\":\"error\",\"code\":\"CRUD_CHILD_OPERATION_KNOWN\",\"description\":\"Delegated operation must exist in the child manifest.\"},{\"validatorId\":\"no-local-form-config-write\",\"level\":\"error\",\"code\":\"CRUD_NO_LOCAL_FORM_CONFIG_WRITE\",\"description\":\"CRUD must not locally redefine FormConfig semantics.\"},{\"validatorId\":\"no-local-table-config-write\",\"level\":\"error\",\"code\":\"CRUD_NO_LOCAL_TABLE_CONFIG_WRITE\",\"description\":\"CRUD must not locally redefine TableConfig semantics.\"},{\"validatorId\":\"delegation-target-valid\",\"level\":\"error\",\"code\":\"CRUD_DELEGATION_TARGET_VALID\",\"description\":\"Delegation target must be resolvable by the child manifest.\"}],\"preconditions\":[\"child-manifest-available\"],\"submissionImpact\":\"none\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"crud-delegate-form-layout\",\"request\":\"Add a new field to the create form.\",\"operationId\":\"form.childOperation.delegate\",\"target\":\"praxis-dynamic-form:field.add\",\"params\":{\"childComponentId\":\"praxis-dynamic-form\",\"childOperationId\":\"field.add\",\"reason\":\"Form field semantics belong to dynamic-form\"},\"isPositive\":true},{\"id\":\"crud-delegate-table-column\",\"request\":\"Add a salary column to the list table.\",\"operationId\":\"form.childOperation.delegate\",\"target\":\"praxis-table:column.add\",\"params\":{\"childComponentId\":\"praxis-table\",\"childOperationId\":\"column.add\",\"reason\":\"Table column semantics belong to praxis-table\"},\"isPositive\":true}],\"negativeExamples\":[{\"id\":\"crud-reject-local-form-rules\",\"request\":\"Put this dynamic-form validation rule directly inside CRUD.\",\"operationId\":\"form.childOperation.delegate\",\"target\":\"praxis-dynamic-form:rules.add\",\"params\":{\"childComponentId\":\"praxis-dynamic-form\",\"childOperationId\":\"rules.add\",\"reason\":\"CRUD must not redefine FormConfig rules\"},\"isPositive\":false}]}",
|
|
7894
9033
|
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
@@ -7898,7 +9037,7 @@
|
|
|
7898
9037
|
"corpusVersion": "1.0.0"
|
|
7899
9038
|
},
|
|
7900
9039
|
{
|
|
7901
|
-
"chunkIndex":
|
|
9040
|
+
"chunkIndex": 25,
|
|
7902
9041
|
"chunkKind": "authoring_manifest",
|
|
7903
9042
|
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"identity\"}",
|
|
7904
9043
|
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
@@ -7908,7 +9047,7 @@
|
|
|
7908
9047
|
"corpusVersion": "1.0.0"
|
|
7909
9048
|
},
|
|
7910
9049
|
{
|
|
7911
|
-
"chunkIndex":
|
|
9050
|
+
"chunkIndex": 26,
|
|
7912
9051
|
"chunkKind": "authoring_manifest",
|
|
7913
9052
|
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"runtimeInputs\",\"runtimeInputs\":[{\"name\":\"metadata\",\"type\":\"CrudMetadata | string\",\"description\":\"Canonical CRUD metadata or serialized metadata document.\"},{\"name\":\"crudId\",\"type\":\"string\",\"description\":\"Stable CRUD instance id used for table/form identity and persistence.\"},{\"name\":\"componentInstanceId\",\"type\":\"string\",\"description\":\"Optional stable host instance id for multiple CRUD widgets on the same route.\"},{\"name\":\"tableConfigPersistenceStrategy\",\"type\":\"'local-first' | 'input-first' | 'volatile'\",\"description\":\"Persistence precedence forwarded to the internal Praxis Table. Governed previews should use input-first or volatile explicitly.\"},{\"name\":\"context\",\"type\":\"Record<string, unknown>\",\"description\":\"Opaque host context used for authoring seeds and launcher inputs.\"},{\"name\":\"enableCustomization\",\"type\":\"boolean\",\"description\":\"Explicit host opt-in for CRUD authoring surfaces.\"},{\"name\":\"showResourceIdentityKey\",\"type\":\"boolean\",\"description\":\"Presentation-only control for the canonical key in existing-record modal and drawer headers. Defaults to true; false preserves the readable title while hiding an opaque or technical key.\"},{\"name\":\"authoringCapability\",\"type\":\"string | null\",\"description\":\"Public runtime capability required before CRUD and delegated table authoring can open.\"},{\"name\":\"afterOpen\",\"type\":\"{ mode: FormOpenMode; action: string }\",\"description\":\"Emitted after a CRUD action opens.\"},{\"name\":\"afterSave\",\"type\":\"{ id: string | number; data: unknown }\",\"description\":\"Emitted after save; CRUD refetches the list.\"},{\"name\":\"afterDelete\",\"type\":\"{ id: string | number }\",\"description\":\"Emitted after delete; CRUD refetches the list.\"},{\"name\":\"resourceEvent\",\"type\":\"PraxisResourceEvent<unknown>\",\"description\":\"Canonical resource interaction envelope forwarded from the internal table for governed host composition.\"}]}",
|
|
7914
9053
|
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
@@ -7918,7 +9057,7 @@
|
|
|
7918
9057
|
"corpusVersion": "1.0.0"
|
|
7919
9058
|
},
|
|
7920
9059
|
{
|
|
7921
|
-
"chunkIndex":
|
|
9060
|
+
"chunkIndex": 27,
|
|
7922
9061
|
"chunkKind": "authoring_manifest",
|
|
7923
9062
|
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"editableTargets\",\"editableTargets\":[{\"kind\":\"resourceBinding\",\"resolver\":\"crud-resource-by-path-or-key\",\"description\":\"Resource path/key, optional schema path template, id field, endpoint key and query context owned by CRUD orchestration.\"},{\"kind\":\"listSurface\",\"resolver\":\"crud-list-surface\",\"description\":\"CRUD-hosted list surface and table delegation boundary.\"},{\"kind\":\"createSurface\",\"resolver\":\"crud-action-by-id:create\",\"description\":\"Create action open mode, route/form binding and launcher inputs.\"},{\"kind\":\"editSurface\",\"resolver\":\"crud-action-by-id:edit\",\"description\":\"Edit action open mode, route/form binding and launcher inputs.\"},{\"kind\":\"viewSurface\",\"resolver\":\"crud-action-by-id:view\",\"description\":\"View action open mode, route/form binding and launcher inputs.\"},{\"kind\":\"deleteBehavior\",\"resolver\":\"crud-action-by-id:delete\",\"description\":\"Delete action enablement, confirmation, endpoint and capability policy.\"},{\"kind\":\"dialogHost\",\"resolver\":\"crud-dialog-host-defaults\",\"description\":\"Route/modal/drawer defaults consumed by CrudLauncherService and DynamicFormDialogHostComponent, including contextual shell titles derived from action label, form title or resource metadata.\"},{\"kind\":\"formBinding\",\"resolver\":\"crud-action-form-contract-by-action-id\",\"description\":\"CRUD-owned form binding fields: formId, presentation-only submitLabel, schemaUrl, submitUrl, submitMethod, params and initialValue. Shared FormConfig remains owned by Dynamic Form and is forwarded through CrudMetadata.form when present.\"},{\"kind\":\"permissions\",\"resolver\":\"crud-resource-capabilities\",\"description\":\"CRUD action availability derived from resource capabilities and action permissions.\"},{\"kind\":\"domainGovernanceContext\",\"resolver\":\"domain-catalog-context-by-resource-key\",\"description\":\"Read-only semantic/governance context resolved from Domain Catalog and referenced from CRUD queryContext.meta.\"},{\"kind\":\"childOperation\",\"resolver\":\"child-authoring-manifest-operation\",\"description\":\"Delegated form/table/dialog/settings-panel operation owned by the child component manifest.\"}]}",
|
|
7924
9063
|
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
@@ -7928,47 +9067,57 @@
|
|
|
7928
9067
|
"corpusVersion": "1.0.0"
|
|
7929
9068
|
},
|
|
7930
9069
|
{
|
|
7931
|
-
"chunkIndex":
|
|
9070
|
+
"chunkIndex": 28,
|
|
7932
9071
|
"chunkKind": "authoring_manifest",
|
|
7933
|
-
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"resource.bind\",\"title\":\"Bind CRUD resource\",\"scope\":\"dataBinding\",\"targetKind\":\"resourceBinding\",\"target\":{\"kind\":\"resourceBinding\",\"resolver\":\"crud-resource-by-path-or-key\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"resourcePath\"],\"properties\":{\"resourcePath\":{\"type\":\"string\"},\"resourceKey\":{\"type\":\"string\"},\"idField\":{\"type\":[\"string\",\"number\"]},\"endpointKey\":{\"type\":\"string\"},\"queryContext\":{\"type\":\"object\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"crud-resource-bind\",\"handlerContract\":{\"reads\":[\"CrudMetadata.resource\",\"api_metadata\",\"ResourceDiscoveryService\",\"GET /{resource}/capabilities\"],\"writes\":[\"CrudMetadata.resource\",\"CrudMetadata.queryContext\",\"PraxisCrudComponent.tableCrudContext\"],\"identityKeys\":[\"resourcePath\",\"resourceKey\",\"schemaPath\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"resourcePath\"],\"properties\":{\"resourcePath\":{\"type\":\"string\"},\"resourceKey\":{\"type\":\"string\"},\"idField\":{\"type\":[\"string\",\"number\"]},\"endpointKey\":{\"type\":\"string\"},\"queryContext\":{\"type\":\"object\"}}},\"failureModes\":[\"resource-not-found\",\"schema-url-not-canonical\",\"capabilities-unavailable\",\"id-field-missing\"],\"description\":\"Binds CRUD to a canonical resource and validates it against api_metadata/resource capabilities before runtime use. Use CrudMetadata.resource.schemaPath when schema discovery must use a templated path while resource.path targets a concrete nested collection.\"}}],\"validators\":[\"resource-exists-in-api-metadata\",\"resource-path-canonical\",\"resource-key-stable\",\"id-field-known\",\"resource-capabilities-resolvable\"],\"affectedPaths\":[\"resource.path\",\"resource.schemaPath\",\"resource.idField\",\"resource.endpointKey\",\"resource.apiUrlEntry\",\"queryContext\",\"filterCriteria\"],\"submissionImpact\":\"affects-remote-binding\",\"preconditions\":[\"crud-metadata-loaded\",\"api-metadata-available\"]},{\"operationId\":\"domain.governanceContext.attach\",\"title\":\"Attach Domain Catalog governance context\",\"scope\":\"dataBinding\",\"targetKind\":\"domainGovernanceContext\",\"target\":{\"kind\":\"domainGovernanceContext\",\"resolver\":\"domain-catalog-context-by-resource-key\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"resourceKey\",\"query\"],\"properties\":{\"resourceKey\":{\"type\":\"string\"},\"releaseId\":{\"type\":\"string\"},\"query\":{\"type\":\"string\"},\"itemTypes\":{\"type\":\"array\",\"items\":{\"enum\":[\"governance\",\"vocabulary\",\"relationship\"]}},\"intent\":{\"enum\":[\"authoring\",\"explain\",\"validate\",\"ai-access-control\"]}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"crud-domain-governance-context-attach\",\"handlerContract\":{\"reads\":[\"CrudMetadata.resource\",\"CrudMetadata.queryContext\",\"DomainCatalogService.getGovernanceContext\",\"DOMAIN_CATALOG_COMPONENT_CONTEXT_PACK\",\"api_metadata\"],\"writes\":[\"CrudMetadata.queryContext.meta.domainCatalog\"],\"identityKeys\":[\"resourceKey\",\"releaseId\",\"query\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"resourceKey\",\"query\"],\"properties\":{\"resourceKey\":{\"type\":\"string\"},\"releaseId\":{\"type\":\"string\"},\"query\":{\"type\":\"string\"},\"itemTypes\":{\"type\":\"array\",\"items\":{\"enum\":[\"governance\",\"vocabulary\",\"relationship\"]}},\"intent\":{\"enum\":[\"authoring\",\"explain\",\"validate\",\"ai-access-control\"]}}},\"failureModes\":[\"resource-key-missing\",\"domain-catalog-release-not-found\",\"governance-context-empty\",\"ai-usage-forbidden\"],\"description\":\"Resolves read-only domain vocabulary/governance context and stores only a lightweight reference/probe under queryContext.meta.domainCatalog.\"}}],\"validators\":[\"resource-key-stable\",\"domain-catalog-context-resolvable\",\"domain-catalog-read-only\",\"ai-usage-visibility-respected\",\"no-form-config-rule-materialization\"],\"affectedPaths\":[\"queryContext.meta.domainCatalog\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"crud-metadata-loaded\",\"api-metadata-available\",\"domain-catalog-service-available\"]}
|
|
9072
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"resource.bind\",\"title\":\"Bind CRUD resource\",\"scope\":\"dataBinding\",\"targetKind\":\"resourceBinding\",\"target\":{\"kind\":\"resourceBinding\",\"resolver\":\"crud-resource-by-path-or-key\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"resourcePath\"],\"properties\":{\"resourcePath\":{\"type\":\"string\"},\"resourceKey\":{\"type\":\"string\"},\"idField\":{\"type\":[\"string\",\"number\"]},\"endpointKey\":{\"type\":\"string\"},\"queryContext\":{\"type\":\"object\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"crud-resource-bind\",\"handlerContract\":{\"reads\":[\"CrudMetadata.resource\",\"api_metadata\",\"ResourceDiscoveryService\",\"GET /{resource}/capabilities\"],\"writes\":[\"CrudMetadata.resource\",\"CrudMetadata.queryContext\",\"PraxisCrudComponent.tableCrudContext\"],\"identityKeys\":[\"resourcePath\",\"resourceKey\",\"schemaPath\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"resourcePath\"],\"properties\":{\"resourcePath\":{\"type\":\"string\"},\"resourceKey\":{\"type\":\"string\"},\"idField\":{\"type\":[\"string\",\"number\"]},\"endpointKey\":{\"type\":\"string\"},\"queryContext\":{\"type\":\"object\"}}},\"failureModes\":[\"resource-not-found\",\"schema-url-not-canonical\",\"capabilities-unavailable\",\"id-field-missing\"],\"description\":\"Binds CRUD to a canonical resource and validates it against api_metadata/resource capabilities before runtime use. Use CrudMetadata.resource.schemaPath when schema discovery must use a templated path while resource.path targets a concrete nested collection.\"}}],\"validators\":[\"resource-exists-in-api-metadata\",\"resource-path-canonical\",\"resource-key-stable\",\"id-field-known\",\"resource-capabilities-resolvable\"],\"affectedPaths\":[\"resource.path\",\"resource.schemaPath\",\"resource.idField\",\"resource.endpointKey\",\"resource.apiUrlEntry\",\"queryContext\",\"filterCriteria\"],\"submissionImpact\":\"affects-remote-binding\",\"preconditions\":[\"crud-metadata-loaded\",\"api-metadata-available\"]},{\"operationId\":\"domain.governanceContext.attach\",\"title\":\"Attach Domain Catalog governance context\",\"scope\":\"dataBinding\",\"targetKind\":\"domainGovernanceContext\",\"target\":{\"kind\":\"domainGovernanceContext\",\"resolver\":\"domain-catalog-context-by-resource-key\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"resourceKey\",\"query\"],\"properties\":{\"resourceKey\":{\"type\":\"string\"},\"releaseId\":{\"type\":\"string\"},\"query\":{\"type\":\"string\"},\"itemTypes\":{\"type\":\"array\",\"items\":{\"enum\":[\"governance\",\"vocabulary\",\"relationship\"]}},\"intent\":{\"enum\":[\"authoring\",\"explain\",\"validate\",\"ai-access-control\"]}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"crud-domain-governance-context-attach\",\"handlerContract\":{\"reads\":[\"CrudMetadata.resource\",\"CrudMetadata.queryContext\",\"DomainCatalogService.getGovernanceContext\",\"DOMAIN_CATALOG_COMPONENT_CONTEXT_PACK\",\"api_metadata\"],\"writes\":[\"CrudMetadata.queryContext.meta.domainCatalog\"],\"identityKeys\":[\"resourceKey\",\"releaseId\",\"query\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"resourceKey\",\"query\"],\"properties\":{\"resourceKey\":{\"type\":\"string\"},\"releaseId\":{\"type\":\"string\"},\"query\":{\"type\":\"string\"},\"itemTypes\":{\"type\":\"array\",\"items\":{\"enum\":[\"governance\",\"vocabulary\",\"relationship\"]}},\"intent\":{\"enum\":[\"authoring\",\"explain\",\"validate\",\"ai-access-control\"]}}},\"failureModes\":[\"resource-key-missing\",\"domain-catalog-release-not-found\",\"governance-context-empty\",\"ai-usage-forbidden\"],\"description\":\"Resolves read-only domain vocabulary/governance context and stores only a lightweight reference/probe under queryContext.meta.domainCatalog.\"}}],\"validators\":[\"resource-key-stable\",\"domain-catalog-context-resolvable\",\"domain-catalog-read-only\",\"ai-usage-visibility-respected\",\"no-form-config-rule-materialization\"],\"affectedPaths\":[\"queryContext.meta.domainCatalog\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"crud-metadata-loaded\",\"api-metadata-available\",\"domain-catalog-service-available\"]}]}",
|
|
7934
9073
|
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
7935
|
-
"contentHash": "
|
|
9074
|
+
"contentHash": "80826016435e533acfc59d8f97ae536939201a3a14b9c4818c4fce294369daa4",
|
|
7936
9075
|
"sourceKind": "component_definition",
|
|
7937
9076
|
"sourceId": "praxis-crud",
|
|
7938
9077
|
"corpusVersion": "1.0.0"
|
|
7939
9078
|
},
|
|
7940
9079
|
{
|
|
7941
|
-
"chunkIndex":
|
|
9080
|
+
"chunkIndex": 29,
|
|
7942
9081
|
"chunkKind": "authoring_manifest",
|
|
7943
|
-
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"surface.
|
|
9082
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"list.surface.configure\",\"title\":\"Configure CRUD list surface\",\"scope\":\"interaction\",\"targetKind\":\"listSurface\",\"target\":{\"kind\":\"listSurface\",\"resolver\":\"crud-list-surface\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"properties\":{\"tablePatch\":{\"type\":\"object\"},\"queryContext\":{\"type\":\"object\"},\"filterCriteria\":{\"type\":\"object\"},\"pageHeader\":{\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\"},\"subtitle\":{\"type\":\"string\"},\"domain\":{\"type\":\"object\",\"required\":[\"label\"],\"properties\":{\"label\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"tone\":{\"enum\":[\"primary\",\"accent\",\"info\",\"success\",\"warning\",\"danger\",\"neutral\",\"warn\"]}}}}},\"kpiBand\":{\"type\":\"object\",\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"columns\":{\"enum\":[2,3,4]},\"source\":{\"type\":\"string\",\"description\":\"Endpoint de telemetria agregada (/stats/group-by ou /filter?page=0&size=1).\"},\"method\":{\"enum\":[\"GET\",\"POST\"]},\"payload\":{\"type\":\"object\"},\"cards\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"label\"],\"properties\":{\"id\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"value\":{\"type\":[\"string\",\"number\"]},\"valueExpr\":{\"type\":\"string\",\"description\":\"Expressão ou template CSP-safe com pipes declarativos (ex.: '${totalCount | number | default:0} Registros').\"},\"caption\":{\"type\":\"string\"},\"captionExpr\":{\"type\":\"string\",\"description\":\"Expressão ou template CSP-safe para legenda com pipes declarativos (ex.: '(${((byKey.true / totalCount) * 100) | round:1 | default:0}%)').\"},\"icon\":{\"type\":\"string\"},\"variant\":{\"enum\":[\"default\",\"primary\",\"success\",\"warning\",\"danger\"]},\"tone\":{\"enum\":[\"neutral\",\"primary\",\"info\",\"success\",\"warning\",\"danger\"]},\"filter\":{\"type\":\"object\"}}}}}},\"filterBar\":{\"type\":\"object\",\"properties\":{\"inlineFields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"quickFilters\":{\"oneOf\":[{\"const\":false},{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"id\",\"label\",\"filter\"],\"properties\":{\"id\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"filter\":{\"type\":[\"string\",\"object\"]}}}}]},\"showAdvanced\":{\"type\":\"boolean\"},\"placement\":{\"enum\":[\"table-toolbar\",\"scope-bar\"]}}}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"crud-list-surface-configure\",\"handlerContract\":{\"reads\":[\"CrudMetadata.table\",\"CrudMetadata.queryContext\",\"CrudMetadata.kpiBand\",\"CrudMetadata.filterBar\",\"PRAXIS_TABLE_AUTHORING_MANIFEST\",\"CRUD_AI_CAPABILITIES\"],\"writes\":[\"CrudMetadata.table\",\"CrudMetadata.queryContext\",\"CrudMetadata.filterCriteria\",\"CrudMetadata.kpiBand\",\"CrudMetadata.filterBar\"],\"identityKeys\":[\"crudId\"],\"inputSchema\":{\"type\":\"object\",\"properties\":{\"tablePatch\":{\"type\":\"object\"},\"queryContext\":{\"type\":\"object\"},\"filterCriteria\":{\"type\":\"object\"},\"pageHeader\":{\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\"},\"subtitle\":{\"type\":\"string\"},\"domain\":{\"type\":\"object\",\"required\":[\"label\"],\"properties\":{\"label\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"tone\":{\"enum\":[\"primary\",\"accent\",\"info\",\"success\",\"warning\",\"danger\",\"neutral\",\"warn\"]}}}}},\"kpiBand\":{\"type\":\"object\",\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"columns\":{\"enum\":[2,3,4]},\"source\":{\"type\":\"string\",\"description\":\"Endpoint de telemetria agregada (/stats/group-by ou /filter?page=0&size=1).\"},\"method\":{\"enum\":[\"GET\",\"POST\"]},\"payload\":{\"type\":\"object\"},\"cards\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"label\"],\"properties\":{\"id\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"value\":{\"type\":[\"string\",\"number\"]},\"valueExpr\":{\"type\":\"string\",\"description\":\"Expressão ou template CSP-safe com pipes declarativos (ex.: '${totalCount | number | default:0} Registros').\"},\"caption\":{\"type\":\"string\"},\"captionExpr\":{\"type\":\"string\",\"description\":\"Expressão ou template CSP-safe para legenda com pipes declarativos (ex.: '(${((byKey.true / totalCount) * 100) | round:1 | default:0}%)').\"},\"icon\":{\"type\":\"string\"},\"variant\":{\"enum\":[\"default\",\"primary\",\"success\",\"warning\",\"danger\"]},\"tone\":{\"enum\":[\"neutral\",\"primary\",\"info\",\"success\",\"warning\",\"danger\"]},\"filter\":{\"type\":\"object\"}}}}}},\"filterBar\":{\"type\":\"object\",\"properties\":{\"inlineFields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"quickFilters\":{\"oneOf\":[{\"const\":false},{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"id\",\"label\",\"filter\"],\"properties\":{\"id\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"filter\":{\"type\":[\"string\",\"object\"]}}}}]},\"showAdvanced\":{\"type\":\"boolean\"},\"placement\":{\"enum\":[\"table-toolbar\",\"scope-bar\"]}}}}},\"failureModes\":[\"table-operation-not-delegated\",\"table-patch-not-supported\",\"query-context-invalid\"],\"description\":\"Configures CRUD-owned list orchestration (including KPI band and filter bar shortcuts) while routing table semantics to the praxis-table manifest.\"}}],\"validators\":[\"table-child-operation-delegated\",\"query-context-valid\",\"filter-criteria-bridge-valid\",\"crud-context-stable\"],\"affectedPaths\":[\"table\",\"queryContext\",\"filterCriteria\",\"kpiBand\",\"filterBar\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"crud-metadata-loaded\",\"praxis-table-manifest-available\"]}]}",
|
|
7944
9083
|
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
7945
|
-
"contentHash": "
|
|
9084
|
+
"contentHash": "9320d96d9e0e679a77a3d3674c9bed39e71f4621270d3ece6a30a782d2be0f64",
|
|
7946
9085
|
"sourceKind": "component_definition",
|
|
7947
9086
|
"sourceId": "praxis-crud",
|
|
7948
9087
|
"corpusVersion": "1.0.0"
|
|
7949
9088
|
},
|
|
7950
9089
|
{
|
|
7951
|
-
"chunkIndex":
|
|
9090
|
+
"chunkIndex": 30,
|
|
7952
9091
|
"chunkKind": "authoring_manifest",
|
|
7953
|
-
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"
|
|
9092
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"list.kpiBand.configure\",\"title\":\"Configure CRUD KPI band\",\"scope\":\"interaction\",\"targetKind\":\"listSurface\",\"target\":{\"kind\":\"listSurface\",\"resolver\":\"crud-list-surface\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"columns\":{\"enum\":[2,3,4]},\"source\":{\"type\":\"string\",\"description\":\"Endpoint de telemetria agregada (/stats/group-by ou /filter?page=0&size=1).\"},\"method\":{\"enum\":[\"GET\",\"POST\"]},\"payload\":{\"type\":\"object\"},\"cards\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"label\"],\"properties\":{\"id\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"value\":{\"type\":[\"string\",\"number\"]},\"valueExpr\":{\"type\":\"string\",\"description\":\"Expressão ou template CSP-safe com pipes declarativos (ex.: '${totalCount | number | default:0} Registros').\"},\"caption\":{\"type\":\"string\"},\"captionExpr\":{\"type\":\"string\",\"description\":\"Expressão ou template CSP-safe para legenda com pipes declarativos (ex.: '(${((byKey.true / totalCount) * 100) | round:1 | default:0}%)').\"},\"icon\":{\"type\":\"string\"},\"variant\":{\"enum\":[\"default\",\"primary\",\"success\",\"warning\",\"danger\"]},\"tone\":{\"enum\":[\"neutral\",\"primary\",\"info\",\"success\",\"warning\",\"danger\"]},\"filter\":{\"type\":\"object\"}}}}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"crud-kpi-band-configure\",\"handlerContract\":{\"reads\":[\"CrudMetadata.kpiBand\",\"CrudMetadata.resource\"],\"writes\":[\"CrudMetadata.kpiBand\"],\"identityKeys\":[\"crudId\"],\"inputSchema\":{\"type\":\"object\",\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"columns\":{\"enum\":[2,3,4]},\"source\":{\"type\":\"string\",\"description\":\"Endpoint de telemetria agregada (/stats/group-by ou /filter?page=0&size=1).\"},\"method\":{\"enum\":[\"GET\",\"POST\"]},\"payload\":{\"type\":\"object\"},\"cards\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"label\"],\"properties\":{\"id\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"value\":{\"type\":[\"string\",\"number\"]},\"valueExpr\":{\"type\":\"string\",\"description\":\"Expressão ou template CSP-safe com pipes declarativos (ex.: '${totalCount | number | default:0} Registros').\"},\"caption\":{\"type\":\"string\"},\"captionExpr\":{\"type\":\"string\",\"description\":\"Expressão ou template CSP-safe para legenda com pipes declarativos (ex.: '(${((byKey.true / totalCount) * 100) | round:1 | default:0}%)').\"},\"icon\":{\"type\":\"string\"},\"variant\":{\"enum\":[\"default\",\"primary\",\"success\",\"warning\",\"danger\"]},\"tone\":{\"enum\":[\"neutral\",\"primary\",\"info\",\"success\",\"warning\",\"danger\"]},\"filter\":{\"type\":\"object\"}}}}}},\"failureModes\":[\"kpi-card-label-missing\",\"kpi-card-value-missing\",\"kpi-card-filter-invalid\"],\"description\":\"Configures the CRUD KPI summary band and optional click-to-filter card criteria.\"}}],\"validators\":[\"crud-context-stable\"],\"affectedPaths\":[\"kpiBand\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"crud-metadata-loaded\"]},{\"operationId\":\"list.filterBar.configure\",\"title\":\"Configure CRUD filter bar\",\"scope\":\"interaction\",\"targetKind\":\"listSurface\",\"target\":{\"kind\":\"listSurface\",\"resolver\":\"crud-list-surface\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"properties\":{\"inlineFields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"quickFilters\":{\"oneOf\":[{\"const\":false},{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"id\",\"label\",\"filter\"],\"properties\":{\"id\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"filter\":{\"type\":[\"string\",\"object\"]}}}}]},\"showAdvanced\":{\"type\":\"boolean\"},\"placement\":{\"enum\":[\"table-toolbar\",\"scope-bar\"]}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"crud-filter-bar-configure\",\"handlerContract\":{\"reads\":[\"CrudMetadata.filterBar\",\"CrudMetadata.resource\"],\"writes\":[\"CrudMetadata.filterBar\"],\"identityKeys\":[\"crudId\"],\"inputSchema\":{\"type\":\"object\",\"properties\":{\"inlineFields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"quickFilters\":{\"oneOf\":[{\"const\":false},{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"id\",\"label\",\"filter\"],\"properties\":{\"id\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"filter\":{\"type\":[\"string\",\"object\"]}}}}]},\"showAdvanced\":{\"type\":\"boolean\"},\"placement\":{\"enum\":[\"table-toolbar\",\"scope-bar\"]}}},\"failureModes\":[\"quick-filter-id-missing\",\"quick-filter-label-missing\",\"quick-filter-condition-invalid\"],\"description\":\"Configures CRUD filterBar shorthand (inlineFields, quickFilters, showAdvanced) expanded into the internal table runtime.\"}}],\"validators\":[\"crud-context-stable\"],\"affectedPaths\":[\"filterBar\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"crud-metadata-loaded\"]},{\"operationId\":\"surface.create.configure\",\"title\":\"Configure create surface\",\"scope\":\"interaction\",\"targetKind\":\"createSurface\",\"target\":{\"kind\":\"createSurface\",\"resolver\":\"crud-action-by-id:create\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"actionId\",\"openMode\"],\"properties\":{\"actionId\":{\"enum\":[\"create\",\"edit\",\"view\"]},\"openMode\":{\"enum\":[\"route\",\"modal\",\"drawer\"]},\"route\":{\"type\":\"string\"},\"formId\":{\"type\":\"string\"},\"form\":{\"type\":\"object\",\"properties\":{\"submitLabel\":{\"type\":\"string\"},\"schemaUrl\":{\"type\":\"string\"},\"submitUrl\":{\"type\":\"string\"},\"submitMethod\":{\"enum\":[\"post\",\"put\",\"patch\",\"delete\"]},\"apiEndpointKey\":{\"type\":\"string\"},\"initialValue\":{\"type\":\"object\"},\"layoutPolicy\":{\"type\":\"object\"}}},\"params\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"from\",\"to\",\"name\"],\"properties\":{\"from\":{\"type\":\"string\"},\"to\":{\"enum\":[\"routeParam\",\"query\",\"input\"]},\"name\":{\"type\":\"string\"}}}},\"back\":{\"type\":\"object\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"crud-create-surface-configure\",\"handlerContract\":{\"reads\":[\"CrudMetadata.actions\",\"CrudLauncherService.resolveOpenMode\",\"DynamicFormDialogHostComponent\",\"api_metadata\"],\"writes\":[\"CrudMetadata.actions[]\",\"CrudMetadata.actions[].form\",\"CrudMetadata.actions[].params\",\"CrudMetadata.actions[].back\"],\"identityKeys\":[\"actionId\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"actionId\",\"openMode\"],\"properties\":{\"actionId\":{\"enum\":[\"create\",\"edit\",\"view\"]},\"openMode\":{\"enum\":[\"route\",\"modal\",\"drawer\"]},\"route\":{\"type\":\"string\"},\"formId\":{\"type\":\"string\"},\"form\":{\"type\":\"object\",\"properties\":{\"submitLabel\":{\"type\":\"string\"},\"schemaUrl\":{\"type\":\"string\"},\"submitUrl\":{\"type\":\"string\"},\"submitMethod\":{\"enum\":[\"post\",\"put\",\"patch\",\"delete\"]},\"apiEndpointKey\":{\"type\":\"string\"},\"initialValue\":{\"type\":\"object\"},\"layoutPolicy\":{\"type\":\"object\"}}},\"params\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"from\",\"to\",\"name\"],\"properties\":{\"from\":{\"type\":\"string\"},\"to\":{\"enum\":[\"routeParam\",\"query\",\"input\"]},\"name\":{\"type\":\"string\"}}}},\"back\":{\"type\":\"object\"}}},\"failureModes\":[\"action-not-found\",\"open-mode-binding-incomplete\",\"schema-url-not-canonical\",\"submit-url-not-canonical\",\"resource-create-not-supported\"],\"description\":\"Configures create action binding and launcher inputs without editing the child FormConfig.\"}}],\"validators\":[\"action-exists\",\"open-mode-binding-complete\",\"schema-url-canonical\",\"submit-url-canonical\",\"resource-create-supported\",\"form-child-operation-delegated\"],\"affectedPaths\":[\"actions[].openMode\",\"actions[].route\",\"actions[].formId\",\"actions[].form\",\"actions[].params\",\"actions[].back\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"crud-metadata-loaded\",\"resource-capabilities-resolved\"]}]}",
|
|
7954
9093
|
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
7955
|
-
"contentHash": "
|
|
9094
|
+
"contentHash": "c157076d088dd62c17032d3fda0944baf6e67e959106311b3b7db0dffd14624e",
|
|
7956
9095
|
"sourceKind": "component_definition",
|
|
7957
9096
|
"sourceId": "praxis-crud",
|
|
7958
9097
|
"corpusVersion": "1.0.0"
|
|
7959
9098
|
},
|
|
7960
9099
|
{
|
|
7961
|
-
"chunkIndex":
|
|
9100
|
+
"chunkIndex": 31,
|
|
7962
9101
|
"chunkKind": "authoring_manifest",
|
|
7963
|
-
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"
|
|
9102
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"surface.edit.configure\",\"title\":\"Configure edit surface\",\"scope\":\"interaction\",\"targetKind\":\"editSurface\",\"target\":{\"kind\":\"editSurface\",\"resolver\":\"crud-action-by-id:edit\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"actionId\",\"openMode\"],\"properties\":{\"actionId\":{\"enum\":[\"create\",\"edit\",\"view\"]},\"openMode\":{\"enum\":[\"route\",\"modal\",\"drawer\"]},\"route\":{\"type\":\"string\"},\"formId\":{\"type\":\"string\"},\"form\":{\"type\":\"object\",\"properties\":{\"submitLabel\":{\"type\":\"string\"},\"schemaUrl\":{\"type\":\"string\"},\"submitUrl\":{\"type\":\"string\"},\"submitMethod\":{\"enum\":[\"post\",\"put\",\"patch\",\"delete\"]},\"apiEndpointKey\":{\"type\":\"string\"},\"initialValue\":{\"type\":\"object\"},\"layoutPolicy\":{\"type\":\"object\"}}},\"params\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"from\",\"to\",\"name\"],\"properties\":{\"from\":{\"type\":\"string\"},\"to\":{\"enum\":[\"routeParam\",\"query\",\"input\"]},\"name\":{\"type\":\"string\"}}}},\"back\":{\"type\":\"object\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"crud-edit-surface-configure\",\"handlerContract\":{\"reads\":[\"CrudMetadata.actions\",\"CrudMetadata.resource.idField\",\"CrudLauncherService.resolveOpenMode\",\"api_metadata\"],\"writes\":[\"CrudMetadata.actions[]\",\"CrudMetadata.actions[].form\",\"CrudMetadata.actions[].params\",\"CrudMetadata.actions[].back\"],\"identityKeys\":[\"actionId\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"actionId\",\"openMode\"],\"properties\":{\"actionId\":{\"enum\":[\"create\",\"edit\",\"view\"]},\"openMode\":{\"enum\":[\"route\",\"modal\",\"drawer\"]},\"route\":{\"type\":\"string\"},\"formId\":{\"type\":\"string\"},\"form\":{\"type\":\"object\",\"properties\":{\"submitLabel\":{\"type\":\"string\"},\"schemaUrl\":{\"type\":\"string\"},\"submitUrl\":{\"type\":\"string\"},\"submitMethod\":{\"enum\":[\"post\",\"put\",\"patch\",\"delete\"]},\"apiEndpointKey\":{\"type\":\"string\"},\"initialValue\":{\"type\":\"object\"},\"layoutPolicy\":{\"type\":\"object\"}}},\"params\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"from\",\"to\",\"name\"],\"properties\":{\"from\":{\"type\":\"string\"},\"to\":{\"enum\":[\"routeParam\",\"query\",\"input\"]},\"name\":{\"type\":\"string\"}}}},\"back\":{\"type\":\"object\"}}},\"failureModes\":[\"action-not-found\",\"id-param-missing\",\"open-mode-binding-incomplete\",\"resource-edit-not-supported\",\"submit-url-not-canonical\"],\"description\":\"Configures edit action routing/form binding and ensures id parameter mapping is available to the launcher.\"}}],\"validators\":[\"action-exists\",\"id-field-known\",\"id-param-mapping-valid\",\"open-mode-binding-complete\",\"schema-url-canonical\",\"submit-url-canonical\",\"resource-edit-supported\",\"form-child-operation-delegated\"],\"affectedPaths\":[\"actions[].openMode\",\"actions[].route\",\"actions[].formId\",\"actions[].form\",\"actions[].params\",\"actions[].back\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"crud-metadata-loaded\",\"resource-capabilities-resolved\"]},{\"operationId\":\"surface.view.configure\",\"title\":\"Configure view surface\",\"scope\":\"interaction\",\"targetKind\":\"viewSurface\",\"target\":{\"kind\":\"viewSurface\",\"resolver\":\"crud-action-by-id:view\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"actionId\",\"openMode\"],\"properties\":{\"actionId\":{\"enum\":[\"create\",\"edit\",\"view\"]},\"openMode\":{\"enum\":[\"route\",\"modal\",\"drawer\"]},\"route\":{\"type\":\"string\"},\"formId\":{\"type\":\"string\"},\"form\":{\"type\":\"object\",\"properties\":{\"submitLabel\":{\"type\":\"string\"},\"schemaUrl\":{\"type\":\"string\"},\"submitUrl\":{\"type\":\"string\"},\"submitMethod\":{\"enum\":[\"post\",\"put\",\"patch\",\"delete\"]},\"apiEndpointKey\":{\"type\":\"string\"},\"initialValue\":{\"type\":\"object\"},\"layoutPolicy\":{\"type\":\"object\"}}},\"params\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"from\",\"to\",\"name\"],\"properties\":{\"from\":{\"type\":\"string\"},\"to\":{\"enum\":[\"routeParam\",\"query\",\"input\"]},\"name\":{\"type\":\"string\"}}}},\"back\":{\"type\":\"object\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"crud-view-surface-configure\",\"handlerContract\":{\"reads\":[\"CrudMetadata.actions\",\"CrudLauncherService.resolveOpenMode\",\"DynamicFormDialogHostComponent\",\"api_metadata\"],\"writes\":[\"CrudMetadata.actions[]\",\"CrudMetadata.actions[].form\",\"CrudMetadata.actions[].params\",\"CrudMetadata.actions[].back\"],\"identityKeys\":[\"actionId\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"actionId\",\"openMode\"],\"properties\":{\"actionId\":{\"enum\":[\"create\",\"edit\",\"view\"]},\"openMode\":{\"enum\":[\"route\",\"modal\",\"drawer\"]},\"route\":{\"type\":\"string\"},\"formId\":{\"type\":\"string\"},\"form\":{\"type\":\"object\",\"properties\":{\"submitLabel\":{\"type\":\"string\"},\"schemaUrl\":{\"type\":\"string\"},\"submitUrl\":{\"type\":\"string\"},\"submitMethod\":{\"enum\":[\"post\",\"put\",\"patch\",\"delete\"]},\"apiEndpointKey\":{\"type\":\"string\"},\"initialValue\":{\"type\":\"object\"},\"layoutPolicy\":{\"type\":\"object\"}}},\"params\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"from\",\"to\",\"name\"],\"properties\":{\"from\":{\"type\":\"string\"},\"to\":{\"enum\":[\"routeParam\",\"query\",\"input\"]},\"name\":{\"type\":\"string\"}}}},\"back\":{\"type\":\"object\"}}},\"failureModes\":[\"action-not-found\",\"open-mode-binding-incomplete\",\"resource-view-not-supported\",\"readonly-form-delegation-missing\"],\"description\":\"Configures view action binding and delegates readonly form behavior to the dynamic-form manifest.\"}}],\"validators\":[\"action-exists\",\"open-mode-binding-complete\",\"schema-url-canonical\",\"resource-view-supported\",\"form-child-operation-delegated\",\"readonly-form-delegation-valid\"],\"affectedPaths\":[\"actions[].openMode\",\"actions[].route\",\"actions[].formId\",\"actions[].form\",\"actions[].params\",\"actions[].back\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"crud-metadata-loaded\",\"resource-capabilities-resolved\"]},{\"operationId\":\"delete.enabled.set\",\"title\":\"Configure delete behavior\",\"scope\":\"interaction\",\"targetKind\":\"deleteBehavior\",\"target\":{\"kind\":\"deleteBehavior\",\"resolver\":\"crud-action-by-id:delete\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"enabled\"],\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"actionId\":{\"type\":\"string\"},\"requiresConfirmation\":{\"type\":\"boolean\"},\"autoDelete\":{\"type\":\"boolean\"},\"form\":{\"type\":\"object\",\"properties\":{\"submitUrl\":{\"type\":\"string\"},\"submitMethod\":{\"enum\":[\"delete\"]},\"apiEndpointKey\":{\"type\":\"string\"}}}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"crud-delete-behavior-set\",\"handlerContract\":{\"reads\":[\"CrudMetadata.actions\",\"CrudMetadata.resource\",\"GET /{resource}/{id}/capabilities\"],\"writes\":[\"CrudMetadata.actions[]\",\"CrudMetadata.actions[].requiresConfirmation\",\"CrudMetadata.actions[].autoDelete\",\"CrudMetadata.actions[].form\"],\"identityKeys\":[\"actionId\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"enabled\"],\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"actionId\":{\"type\":\"string\"},\"requiresConfirmation\":{\"type\":\"boolean\"},\"autoDelete\":{\"type\":\"boolean\"},\"form\":{\"type\":\"object\",\"properties\":{\"submitUrl\":{\"type\":\"string\"},\"submitMethod\":{\"enum\":[\"delete\"]},\"apiEndpointKey\":{\"type\":\"string\"}}}}},\"failureModes\":[\"delete-action-not-found\",\"resource-delete-not-supported\",\"destructive-delete-not-confirmed\",\"delete-submit-url-not-canonical\"],\"description\":\"Enables or disables delete behavior with capability checks and explicit confirmation for destructive changes.\"}}],\"destructive\":true,\"requiresConfirmation\":true,\"validators\":[\"delete-action-exists\",\"resource-delete-supported\",\"destructive-delete-confirmed\",\"submit-url-canonical\",\"permissions-delete-valid\"],\"affectedPaths\":[\"actions[].disabled\",\"actions[].requiresConfirmation\",\"actions[].autoDelete\",\"actions[].form\",\"actions[].form.submitUrl\",\"actions[].form.submitMethod\",\"actions[].form.apiEndpointKey\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"crud-metadata-loaded\",\"resource-capabilities-resolved\",\"explicit-confirmation-provided\"]}]}",
|
|
7964
9103
|
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
7965
|
-
"contentHash": "
|
|
9104
|
+
"contentHash": "ba9cb09dd833ed9c00537e77d59c1ecf4d4eb4bfc221b424a720210f65e1b95b",
|
|
7966
9105
|
"sourceKind": "component_definition",
|
|
7967
9106
|
"sourceId": "praxis-crud",
|
|
7968
9107
|
"corpusVersion": "1.0.0"
|
|
7969
9108
|
},
|
|
7970
9109
|
{
|
|
7971
|
-
"chunkIndex":
|
|
9110
|
+
"chunkIndex": 32,
|
|
9111
|
+
"chunkKind": "authoring_manifest",
|
|
9112
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"dialog.size.set\",\"title\":\"Configure CRUD dialog host defaults\",\"scope\":\"interaction\",\"targetKind\":\"dialogHost\",\"target\":{\"kind\":\"dialogHost\",\"resolver\":\"crud-dialog-host-defaults\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"properties\":{\"defaultOpenMode\":{\"enum\":[\"route\",\"modal\",\"drawer\"]},\"modal\":{\"type\":\"object\",\"properties\":{\"width\":{\"type\":\"string\"},\"height\":{\"type\":\"string\"},\"minWidth\":{\"type\":\"string\"},\"minHeight\":{\"type\":\"string\"},\"maxWidth\":{\"type\":\"string\"},\"maxHeight\":{\"type\":\"string\"},\"density\":{\"type\":\"string\"},\"backdropStyle\":{\"enum\":[\"blur\",\"dim\",\"transparent\"]},\"canMaximize\":{\"type\":\"boolean\"},\"rememberLastState\":{\"type\":\"boolean\"},\"closeOnSave\":{\"type\":\"boolean\"},\"startMaximized\":{\"type\":\"boolean\"},\"disableCloseOnEsc\":{\"type\":\"boolean\"},\"disableCloseOnBackdrop\":{\"type\":\"boolean\"},\"fullscreenBreakpoint\":{\"type\":\"number\"},\"position\":{\"type\":\"object\",\"properties\":{\"top\":{\"type\":\"string\"},\"bottom\":{\"type\":\"string\"},\"left\":{\"type\":\"string\"},\"right\":{\"type\":\"string\"}}},\"edgeGap\":{\"type\":\"number\"}}},\"back\":{\"type\":\"object\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"crud-dialog-host-set\",\"handlerContract\":{\"reads\":[\"CrudMetadata.defaults\",\"CrudLauncherService.resolveOpenMode\",\"DialogService\",\"DynamicFormDialogHostComponent\",\"CRUD_DRAWER_ADAPTER\"],\"writes\":[\"CrudMetadata.defaults.openMode\",\"CrudMetadata.defaults.modal\",\"CrudMetadata.defaults.back\"],\"identityKeys\":[\"crudId\"],\"inputSchema\":{\"type\":\"object\",\"properties\":{\"defaultOpenMode\":{\"enum\":[\"route\",\"modal\",\"drawer\"]},\"modal\":{\"type\":\"object\",\"properties\":{\"width\":{\"type\":\"string\"},\"height\":{\"type\":\"string\"},\"minWidth\":{\"type\":\"string\"},\"minHeight\":{\"type\":\"string\"},\"maxWidth\":{\"type\":\"string\"},\"maxHeight\":{\"type\":\"string\"},\"density\":{\"type\":\"string\"},\"backdropStyle\":{\"enum\":[\"blur\",\"dim\",\"transparent\"]},\"canMaximize\":{\"type\":\"boolean\"},\"rememberLastState\":{\"type\":\"boolean\"},\"closeOnSave\":{\"type\":\"boolean\"},\"startMaximized\":{\"type\":\"boolean\"},\"disableCloseOnEsc\":{\"type\":\"boolean\"},\"disableCloseOnBackdrop\":{\"type\":\"boolean\"},\"fullscreenBreakpoint\":{\"type\":\"number\"},\"position\":{\"type\":\"object\",\"properties\":{\"top\":{\"type\":\"string\"},\"bottom\":{\"type\":\"string\"},\"left\":{\"type\":\"string\"},\"right\":{\"type\":\"string\"}}},\"edgeGap\":{\"type\":\"number\"}}},\"back\":{\"type\":\"object\"}}},\"failureModes\":[\"open-mode-unsupported\",\"drawer-runtime-unavailable\",\"modal-size-invalid\",\"drawer-position-lifecycle-unstable\",\"back-policy-invalid\"],\"description\":\"Configures CRUD-owned route/modal/drawer defaults consumed by the launcher, default dialog-backed drawer runtime and optional host drawer adapter.\"}}],\"validators\":[\"open-mode-supported\",\"modal-size-valid\",\"drawer-runtime-available\",\"drawer-position-lifecycle-stable\",\"back-policy-valid\",\"settings-panel-shell-compatible\"],\"affectedPaths\":[\"defaults.openMode\",\"defaults.modal\",\"defaults.back\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"crud-metadata-loaded\"]},{\"operationId\":\"permissions.set\",\"title\":\"Configure CRUD permissions\",\"scope\":\"interaction\",\"targetKind\":\"permissions\",\"target\":{\"kind\":\"permissions\",\"resolver\":\"crud-resource-capabilities\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"properties\":{\"requiredCapabilities\":{\"type\":\"array\",\"items\":{\"enum\":[\"create\",\"view\",\"edit\",\"delete\"]}},\"actionPermissions\":{\"type\":\"object\"},\"denyWhenMissingCapability\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"crud-permissions-set\",\"handlerContract\":{\"reads\":[\"GET /{resource}/capabilities\",\"GET /{resource}/{id}/capabilities\",\"CrudMetadata.actions\"],\"writes\":[\"CrudMetadata.actions[].disabled\",\"CrudMetadata.actions[].visibleWhen\",\"CrudMetadata.actions[].requiresConfirmation\"],\"identityKeys\":[\"resourcePath\"],\"inputSchema\":{\"type\":\"object\",\"properties\":{\"requiredCapabilities\":{\"type\":\"array\",\"items\":{\"enum\":[\"create\",\"view\",\"edit\",\"delete\"]}},\"actionPermissions\":{\"type\":\"object\"},\"denyWhenMissingCapability\":{\"type\":\"boolean\"}}},\"failureModes\":[\"capability-not-found\",\"action-permission-conflict\",\"delete-permission-without-confirmation\"],\"description\":\"Aligns CRUD action visibility/disablement with resource capabilities without inventing a second permission source.\"}}],\"validators\":[\"resource-capabilities-resolvable\",\"action-permission-supported\",\"delete-permission-requires-confirmation\",\"permissions-do-not-shadow-backend\"],\"affectedPaths\":[\"actions[].disabled\",\"actions[].visibleWhen\",\"actions[].requiresConfirmation\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"crud-metadata-loaded\",\"resource-capabilities-resolved\"]},{\"operationId\":\"form.childOperation.delegate\",\"title\":\"Delegate child form/table/dialog authoring operation\",\"scope\":\"global\",\"targetKind\":\"childOperation\",\"target\":{\"kind\":\"childOperation\",\"resolver\":\"child-authoring-manifest-operation\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"childComponentId\",\"childOperationId\",\"reason\"],\"properties\":{\"childComponentId\":{\"enum\":[\"praxis-dynamic-form\",\"praxis-table\",\"praxis-dialog\",\"praxis-settings-panel\"]},\"childOperationId\":{\"type\":\"string\"},\"reason\":{\"type\":\"string\"},\"childTarget\":{\"type\":\"object\"},\"childParams\":{\"type\":\"object\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"crud-child-operation-delegate\",\"handlerContract\":{\"reads\":[\"PRAXIS_DYNAMIC_FORM_AUTHORING_MANIFEST\",\"PRAXIS_TABLE_AUTHORING_MANIFEST\",\"PRAXIS_DIALOG_AUTHORING_MANIFEST\",\"PRAXIS_SETTINGS_PANEL_AUTHORING_MANIFEST\"],\"writes\":[\"delegatedAuthoringOperations[]\"],\"identityKeys\":[\"childComponentId\",\"childOperationId\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"childComponentId\",\"childOperationId\",\"reason\"],\"properties\":{\"childComponentId\":{\"enum\":[\"praxis-dynamic-form\",\"praxis-table\",\"praxis-dialog\",\"praxis-settings-panel\"]},\"childOperationId\":{\"type\":\"string\"},\"reason\":{\"type\":\"string\"},\"childTarget\":{\"type\":\"object\"},\"childParams\":{\"type\":\"object\"}}},\"failureModes\":[\"child-manifest-missing\",\"child-operation-not-found\",\"attempted-local-child-config-write\"],\"description\":\"Records explicit delegation when requested edits belong to child manifests instead of CRUD orchestration.\"}}],\"validators\":[\"child-manifest-available\",\"child-operation-known\",\"no-local-form-config-write\",\"no-local-table-config-write\",\"delegation-target-valid\"],\"affectedPaths\":[\"delegatedAuthoringOperations\"],\"submissionImpact\":\"none\",\"preconditions\":[\"child-manifest-available\"]}]}",
|
|
9113
|
+
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
9114
|
+
"contentHash": "fd018052aa671ae87830b486ff98a51e8f19e752c940b1ea8648af5e73fcc61b",
|
|
9115
|
+
"sourceKind": "component_definition",
|
|
9116
|
+
"sourceId": "praxis-crud",
|
|
9117
|
+
"corpusVersion": "1.0.0"
|
|
9118
|
+
},
|
|
9119
|
+
{
|
|
9120
|
+
"chunkIndex": 33,
|
|
7972
9121
|
"chunkKind": "authoring_manifest",
|
|
7973
9122
|
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"validators\",\"validators\":[{\"validatorId\":\"resource-exists-in-api-metadata\",\"level\":\"error\",\"code\":\"CRUD_RESOURCE_EXISTS\",\"description\":\"Resource must exist in api_metadata or resource discovery.\"},{\"validatorId\":\"resource-path-canonical\",\"level\":\"error\",\"code\":\"CRUD_RESOURCE_PATH_CANONICAL\",\"description\":\"Resource path must be canonical and not a local alias.\"},{\"validatorId\":\"resource-key-stable\",\"level\":\"error\",\"code\":\"CRUD_RESOURCE_KEY_STABLE\",\"description\":\"Resource key must remain stable for surfaces/actions/capabilities.\"},{\"validatorId\":\"id-field-known\",\"level\":\"error\",\"code\":\"CRUD_ID_FIELD_KNOWN\",\"description\":\"CRUD id field must exist for edit/view/delete flows.\"},{\"validatorId\":\"resource-capabilities-resolvable\",\"level\":\"error\",\"code\":\"CRUD_CAPABILITIES_RESOLVABLE\",\"description\":\"Resource capabilities must be resolvable before action enablement is authored.\"},{\"validatorId\":\"domain-catalog-context-resolvable\",\"level\":\"error\",\"code\":\"CRUD_DOMAIN_CATALOG_CONTEXT_RESOLVABLE\",\"description\":\"Domain Catalog governance context must resolve for the resource key and requested probe before authoring uses it.\"},{\"validatorId\":\"domain-catalog-read-only\",\"level\":\"error\",\"code\":\"CRUD_DOMAIN_CATALOG_READ_ONLY\",\"description\":\"Domain Catalog is read-only semantic context; CRUD may reference a probe but must not persist copied catalog rules.\"},{\"validatorId\":\"ai-usage-visibility-respected\",\"level\":\"error\",\"code\":\"CRUD_AI_USAGE_VISIBILITY_RESPECTED\",\"description\":\"Authoring must respect Domain Catalog aiUsage.visibility before exposing field data, prompts or generated patches.\"},{\"validatorId\":\"no-form-config-rule-materialization\",\"level\":\"error\",\"code\":\"CRUD_NO_FORM_RULE_MATERIALIZATION\",\"description\":\"Shared domain governance must not be materialized into FormConfig rules unless a backend policy explicitly authorizes it.\"},{\"validatorId\":\"table-child-operation-delegated\",\"level\":\"error\",\"code\":\"CRUD_TABLE_CHILD_DELEGATED\",\"description\":\"Table semantics must be delegated to praxis-table.\"},{\"validatorId\":\"query-context-valid\",\"level\":\"error\",\"code\":\"CRUD_QUERY_CONTEXT_VALID\",\"description\":\"Query context must be valid for the bound resource.\"},{\"validatorId\":\"filter-criteria-bridge-valid\",\"level\":\"warning\",\"code\":\"CRUD_FILTER_CRITERIA_BRIDGE_VALID\",\"description\":\"filterCriteria is a bridge; prefer queryContext for new remote authoring.\"},{\"validatorId\":\"crud-context-stable\",\"level\":\"error\",\"code\":\"CRUD_CONTEXT_STABLE\",\"description\":\"Authoring must not break stable crudContext references.\"},{\"validatorId\":\"action-exists\",\"level\":\"error\",\"code\":\"CRUD_ACTION_EXISTS\",\"description\":\"Target action must exist or be created through CRUD action orchestration.\"},{\"validatorId\":\"open-mode-binding-complete\",\"level\":\"error\",\"code\":\"CRUD_OPEN_MODE_BINDING_COMPLETE\",\"description\":\"route requires route; modal/drawer require formId unless resolved by governed overrides.\"},{\"validatorId\":\"schema-url-canonical\",\"level\":\"error\",\"code\":\"CRUD_SCHEMA_URL_CANONICAL\",\"description\":\"Schema URLs must be canonical for the bound resource/action.\"},{\"validatorId\":\"submit-url-canonical\",\"level\":\"error\",\"code\":\"CRUD_SUBMIT_URL_CANONICAL\",\"description\":\"Submit URL and method must be canonical and declared together.\"},{\"validatorId\":\"resource-create-supported\",\"level\":\"error\",\"code\":\"CRUD_CREATE_SUPPORTED\",\"description\":\"Create surface requires resource create capability.\"},{\"validatorId\":\"resource-edit-supported\",\"level\":\"error\",\"code\":\"CRUD_EDIT_SUPPORTED\",\"description\":\"Edit surface requires resource edit capability.\"},{\"validatorId\":\"resource-view-supported\",\"level\":\"error\",\"code\":\"CRUD_VIEW_SUPPORTED\",\"description\":\"View surface requires resource view capability.\"},{\"validatorId\":\"form-child-operation-delegated\",\"level\":\"error\",\"code\":\"CRUD_FORM_CHILD_DELEGATED\",\"description\":\"FormConfig and FieldMetadata edits must delegate to dynamic-form/metadata-editor manifests.\"},{\"validatorId\":\"id-param-mapping-valid\",\"level\":\"error\",\"code\":\"CRUD_ID_PARAM_MAPPING_VALID\",\"description\":\"Edit/view actions must map resource id into route/query/input as required.\"},{\"validatorId\":\"readonly-form-delegation-valid\",\"level\":\"error\",\"code\":\"CRUD_READONLY_FORM_DELEGATED\",\"description\":\"Readonly form behavior belongs to the dynamic-form manifest.\"},{\"validatorId\":\"delete-action-exists\",\"level\":\"error\",\"code\":\"CRUD_DELETE_ACTION_EXISTS\",\"description\":\"Delete behavior requires a delete action target.\"},{\"validatorId\":\"resource-delete-supported\",\"level\":\"error\",\"code\":\"CRUD_DELETE_SUPPORTED\",\"description\":\"Delete behavior requires resource delete capability.\"},{\"validatorId\":\"destructive-delete-confirmed\",\"level\":\"error\",\"code\":\"CRUD_DELETE_CONFIRMED\",\"description\":\"Destructive delete behavior requires explicit confirmation.\"},{\"validatorId\":\"permissions-delete-valid\",\"level\":\"error\",\"code\":\"CRUD_DELETE_PERMISSION_VALID\",\"description\":\"Delete permission cannot bypass resource capabilities or confirmation policy.\"},{\"validatorId\":\"open-mode-supported\",\"level\":\"error\",\"code\":\"CRUD_OPEN_MODE_SUPPORTED\",\"description\":\"Open mode must be route, modal or drawer.\"},{\"validatorId\":\"modal-size-valid\",\"level\":\"error\",\"code\":\"CRUD_MODAL_SIZE_VALID\",\"description\":\"Modal sizing defaults must be valid DialogConfig values.\"},{\"validatorId\":\"drawer-runtime-available\",\"level\":\"error\",\"code\":\"CRUD_DRAWER_RUNTIME_AVAILABLE\",\"description\":\"Drawer open mode uses the default dialog-backed drawer runtime with CRUD-owned chrome, responsive right-panel sizing, Escape/backdrop handling and semantic close/save results; a host drawer adapter is optional only for shell-specific presentation.\"},{\"validatorId\":\"drawer-position-lifecycle-stable\",\"level\":\"error\",\"code\":\"CRUD_DRAWER_POSITION_LIFECYCLE_STABLE\",\"description\":\"A drawer must preserve its configured viewport edge through open, remembered-size restoration, maximize and restore.\"},{\"validatorId\":\"back-policy-valid\",\"level\":\"error\",\"code\":\"CRUD_BACK_POLICY_VALID\",\"description\":\"Back policy must be valid for route/modal/drawer behavior.\"},{\"validatorId\":\"settings-panel-shell-compatible\",\"level\":\"warning\",\"code\":\"CRUD_SETTINGS_PANEL_COMPATIBLE\",\"description\":\"Authoring shell must preserve apply/save/reset semantics.\"},{\"validatorId\":\"action-permission-supported\",\"level\":\"error\",\"code\":\"CRUD_ACTION_PERMISSION_SUPPORTED\",\"description\":\"Action permissions must map to supported resource capabilities.\"},{\"validatorId\":\"delete-permission-requires-confirmation\",\"level\":\"error\",\"code\":\"CRUD_DELETE_PERMISSION_CONFIRMATION\",\"description\":\"Delete permission enablement requires confirmation policy.\"},{\"validatorId\":\"permissions-do-not-shadow-backend\",\"level\":\"error\",\"code\":\"CRUD_PERMISSIONS_NO_BACKEND_SHADOW\",\"description\":\"UI permissions must not shadow backend capability denial.\"},{\"validatorId\":\"child-manifest-available\",\"level\":\"error\",\"code\":\"CRUD_CHILD_MANIFEST_AVAILABLE\",\"description\":\"Delegated child manifest must be available.\"},{\"validatorId\":\"child-operation-known\",\"level\":\"error\",\"code\":\"CRUD_CHILD_OPERATION_KNOWN\",\"description\":\"Delegated operation must exist in the child manifest.\"},{\"validatorId\":\"no-local-form-config-write\",\"level\":\"error\",\"code\":\"CRUD_NO_LOCAL_FORM_CONFIG_WRITE\",\"description\":\"CRUD must not locally redefine FormConfig semantics.\"},{\"validatorId\":\"no-local-table-config-write\",\"level\":\"error\",\"code\":\"CRUD_NO_LOCAL_TABLE_CONFIG_WRITE\",\"description\":\"CRUD must not locally redefine TableConfig semantics.\"},{\"validatorId\":\"delegation-target-valid\",\"level\":\"error\",\"code\":\"CRUD_DELEGATION_TARGET_VALID\",\"description\":\"Delegation target must be resolvable by the child manifest.\"}]}",
|
|
7974
9123
|
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
@@ -7978,7 +9127,7 @@
|
|
|
7978
9127
|
"corpusVersion": "1.0.0"
|
|
7979
9128
|
},
|
|
7980
9129
|
{
|
|
7981
|
-
"chunkIndex":
|
|
9130
|
+
"chunkIndex": 34,
|
|
7982
9131
|
"chunkKind": "authoring_manifest",
|
|
7983
9132
|
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"roundTripRequirements\",\"roundTripRequirements\":[\"CrudMetadata is the canonical CRUD document shape.\",\"CrudAuthoringDocument wraps CrudMetadata without introducing host-local aliases.\",\"Resource path and resource key have separate semantics: path is operational, key is discovery/capability identity.\",\"Domain Catalog context is referenced through resourceKey/release/probe and stays read-only; CRUD may attach queryContext.meta.domainCatalog but must not copy shared governance rules into FormConfig.\",\"Open mode round-trip must preserve route, formId, form contract, params, initialValue and back policy.\",\"FormConfig and FieldMetadata edits must delegate to dynamic-form or metadata-editor manifests.\",\"TableConfig edits must delegate to praxis-table; CRUD owns only shell orchestration and list surface binding.\",\"Delete behavior is destructive and requires explicit confirmation plus backend capability support.\",\"Drawer position and edgeGap must round-trip without changing the configured edge during open, remembered-size restoration, maximize or restore.\",\"crudContext must remain reference-stable across change detection cycles.\"]}",
|
|
7984
9133
|
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
@@ -7988,7 +9137,7 @@
|
|
|
7988
9137
|
"corpusVersion": "1.0.0"
|
|
7989
9138
|
},
|
|
7990
9139
|
{
|
|
7991
|
-
"chunkIndex":
|
|
9140
|
+
"chunkIndex": 35,
|
|
7992
9141
|
"chunkKind": "authoring_manifest",
|
|
7993
9142
|
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"examples\",\"examples\":[{\"id\":\"crud-bind-funcionarios-resource\",\"request\":\"Bind this CRUD to funcionarios using id as the identifier.\",\"operationId\":\"resource.bind\",\"target\":\"resource:funcionarios\",\"params\":{\"resourcePath\":\"/funcionarios\",\"resourceKey\":\"funcionarios\",\"idField\":\"id\"},\"isPositive\":true},{\"id\":\"crud-attach-lgpd-cpf-context\",\"request\":\"Use the Domain Catalog LGPD context for cpf before changing the employee CRUD.\",\"operationId\":\"domain.governanceContext.attach\",\"target\":\"domainCatalog:human-resources.funcionarios:cpf\",\"params\":{\"resourceKey\":\"human-resources.funcionarios\",\"query\":\"cpf\",\"itemTypes\":[\"governance\"],\"intent\":\"authoring\"},\"isPositive\":true},{\"id\":\"crud-list-query-context\",\"request\":\"Filter the list by active employees using the canonical query context.\",\"operationId\":\"list.surface.configure\",\"target\":\"listSurface\",\"params\":{\"queryContext\":{\"filters\":[{\"field\":\"active\",\"operator\":\"eq\",\"value\":true}]}},\"isPositive\":true},{\"id\":\"crud-create-modal\",\"request\":\"Open create in a modal with the employee form.\",\"operationId\":\"surface.create.configure\",\"target\":\"action:create\",\"params\":{\"actionId\":\"create\",\"openMode\":\"modal\",\"formId\":\"employee-create\"},\"isPositive\":true},{\"id\":\"crud-edit-route-with-id\",\"request\":\"Edit should navigate to /employees/:id and map the row id.\",\"operationId\":\"surface.edit.configure\",\"target\":\"action:edit\",\"params\":{\"actionId\":\"edit\",\"openMode\":\"route\",\"route\":\"/employees/:id/edit\",\"params\":[{\"from\":\"id\",\"to\":\"routeParam\",\"name\":\"id\"}]},\"isPositive\":true},{\"id\":\"crud-view-drawer-readonly\",\"request\":\"Open view in a drawer and keep the form readonly.\",\"operationId\":\"surface.view.configure\",\"target\":\"action:view\",\"params\":{\"actionId\":\"view\",\"openMode\":\"drawer\",\"formId\":\"employee-view\"},\"isPositive\":true},{\"id\":\"crud-delete-enable-confirmed\",\"request\":\"Enable delete but require confirmation.\",\"operationId\":\"delete.enabled.set\",\"target\":\"action:delete\",\"params\":{\"enabled\":true,\"actionId\":\"delete\",\"requiresConfirmation\":true,\"autoDelete\":true},\"isPositive\":true},{\"id\":\"crud-dialog-size-medium\",\"request\":\"Make CRUD modals 900px wide and remember their last state.\",\"operationId\":\"dialog.size.set\",\"target\":\"dialogHost\",\"params\":{\"defaultOpenMode\":\"modal\",\"modal\":{\"width\":\"900px\",\"rememberLastState\":true}},\"isPositive\":true},{\"id\":\"crud-drawer-left-edge\",\"request\":\"Open CRUD forms in a left drawer with an 8px maximized inset.\",\"operationId\":\"dialog.size.set\",\"target\":\"dialogHost\",\"params\":{\"defaultOpenMode\":\"drawer\",\"modal\":{\"position\":{\"left\":\"0\",\"top\":\"0\"},\"edgeGap\":8}},\"isPositive\":true},{\"id\":\"crud-permissions-no-delete\",\"request\":\"Hide delete when the resource capabilities do not allow it.\",\"operationId\":\"permissions.set\",\"target\":\"permissions:delete\",\"params\":{\"requiredCapabilities\":[\"delete\"],\"denyWhenMissingCapability\":true},\"isPositive\":true},{\"id\":\"crud-delegate-form-layout\",\"request\":\"Add a new field to the create form.\",\"operationId\":\"form.childOperation.delegate\",\"target\":\"praxis-dynamic-form:field.add\",\"params\":{\"childComponentId\":\"praxis-dynamic-form\",\"childOperationId\":\"field.add\",\"reason\":\"Form field semantics belong to dynamic-form\"},\"isPositive\":true},{\"id\":\"crud-delegate-table-column\",\"request\":\"Add a salary column to the list table.\",\"operationId\":\"form.childOperation.delegate\",\"target\":\"praxis-table:column.add\",\"params\":{\"childComponentId\":\"praxis-table\",\"childOperationId\":\"column.add\",\"reason\":\"Table column semantics belong to praxis-table\"},\"isPositive\":true},{\"id\":\"crud-reject-local-form-rules\",\"request\":\"Put this dynamic-form validation rule directly inside CRUD.\",\"operationId\":\"form.childOperation.delegate\",\"target\":\"praxis-dynamic-form:rules.add\",\"params\":{\"childComponentId\":\"praxis-dynamic-form\",\"childOperationId\":\"rules.add\",\"reason\":\"CRUD must not redefine FormConfig rules\"},\"isPositive\":false},{\"id\":\"crud-reject-copy-domain-rule-to-formconfig\",\"request\":\"Copy the LGPD rule from Domain Catalog directly into the create form JSON.\",\"operationId\":\"domain.governanceContext.attach\",\"target\":\"domainCatalog:human-resources.funcionarios:cpf\",\"params\":{\"resourceKey\":\"human-resources.funcionarios\",\"query\":\"cpf\",\"itemTypes\":[\"governance\"],\"intent\":\"authoring\"},\"isPositive\":false},{\"id\":\"crud-reject-delete-without-capability\",\"request\":\"Force delete even though the backend does not expose delete capability.\",\"operationId\":\"delete.enabled.set\",\"target\":\"action:delete\",\"params\":{\"enabled\":true,\"actionId\":\"delete\",\"requiresConfirmation\":false},\"isPositive\":false}]}",
|
|
7994
9143
|
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
@@ -7998,7 +9147,7 @@
|
|
|
7998
9147
|
"corpusVersion": "1.0.0"
|
|
7999
9148
|
},
|
|
8000
9149
|
{
|
|
8001
|
-
"chunkIndex":
|
|
9150
|
+
"chunkIndex": 36,
|
|
8002
9151
|
"chunkKind": "context_pack",
|
|
8003
9152
|
"content": "{\"componentContext\":{\"version\":\"v1\",\"optionsByPath\":{\"defaults.openMode\":{\"mode\":\"enum\",\"options\":[{\"value\":\"route\",\"label\":\"Route\"},{\"value\":\"modal\",\"label\":\"Modal\"},{\"value\":\"drawer\",\"label\":\"Drawer\"}]},\"actions[].openMode\":{\"mode\":\"enum\",\"options\":[{\"value\":\"route\",\"label\":\"Route\"},{\"value\":\"modal\",\"label\":\"Modal\"},{\"value\":\"drawer\",\"label\":\"Drawer\"}]},\"actions[].params[].to\":{\"mode\":\"enum\",\"options\":[{\"value\":\"routeParam\",\"label\":\"Route param\"},{\"value\":\"query\",\"label\":\"Query param\"},{\"value\":\"input\",\"label\":\"Dialog input\"}]},\"defaults.header.variant\":{\"mode\":\"enum\",\"options\":[{\"value\":\"ghost\",\"label\":\"Ghost\"},{\"value\":\"tonal\",\"label\":\"Tonal\"},{\"value\":\"outlined\",\"label\":\"Outlined\"}]},\"actions[].type\":{\"mode\":\"enum\",\"options\":[{\"value\":\"button\",\"label\":\"Button\"},{\"value\":\"icon\",\"label\":\"Icon\"},{\"value\":\"fab\",\"label\":\"Fab\"},{\"value\":\"menu\",\"label\":\"Menu\"}]},\"actions[].appearance\":{\"mode\":\"enum\",\"options\":[{\"value\":\"filled\",\"label\":\"Filled\"},{\"value\":\"outlined\",\"label\":\"Outlined\"},{\"value\":\"elevated\",\"label\":\"Elevated\"},{\"value\":\"text\",\"label\":\"Text\"},{\"value\":\"tonal\",\"label\":\"Tonal\"}]},\"actions[].position\":{\"mode\":\"enum\",\"options\":[{\"value\":\"start\",\"label\":\"Start\"},{\"value\":\"end\",\"label\":\"End\"}]},\"defaults.back.strategy\":{\"mode\":\"enum\",\"options\":[{\"value\":\"auto\",\"label\":\"Auto\"},{\"value\":\"close\",\"label\":\"Close\"},{\"value\":\"navigate\",\"label\":\"Navigate\"}]},\"actions[].back.strategy\":{\"mode\":\"enum\",\"options\":[{\"value\":\"auto\",\"label\":\"Auto\"},{\"value\":\"close\",\"label\":\"Close\"},{\"value\":\"navigate\",\"label\":\"Navigate\"}]},\"resource.endpointKey\":{\"mode\":\"enum\",\"options\":[{\"value\":\"default\",\"label\":\"Default\"},{\"value\":\"humanResources\",\"label\":\"Human resources\"},{\"value\":\"uiWrappersTest\",\"label\":\"UI wrappers test\"}]}},\"actionCatalog\":[{\"id\":\"resource.path.set\",\"intentExamples\":[\"resource\",\"endpoint\",\"api\",\"path\",\"rota\"],\"patchTemplate\":{\"resource\":{\"path\":\"{{value}}\"}}},{\"id\":\"resource.idField.set\",\"intentExamples\":[\"id field\",\"chave\",\"primary key\"],\"patchTemplate\":{\"resource\":{\"idField\":\"{{value}}\"}}},{\"id\":\"defaults.openMode.set\",\"intentExamples\":[\"open mode\",\"open\",\"route\",\"modal\",\"drawer\"],\"patchTemplate\":{\"defaults\":{\"openMode\":\"{{value}}\"}}},{\"id\":\"defaults.header.variant.set\",\"intentExamples\":[\"header\",\"variant\",\"style\",\"back button\"],\"patchTemplate\":{\"defaults\":{\"header\":{\"variant\":\"{{value}}\"}}}},{\"id\":\"defaults.header.backLabel.set\",\"intentExamples\":[\"back label\",\"voltar\",\"header label\"],\"patchTemplate\":{\"defaults\":{\"header\":{\"backLabel\":\"{{value}}\"}}}},{\"id\":\"defaults.header.showBack.enable\",\"intentExamples\":[\"show back\",\"back button\",\"enable back\"],\"patchTemplate\":{\"defaults\":{\"header\":{\"showBack\":true}}}},{\"id\":\"defaults.header.showBack.disable\",\"intentExamples\":[\"hide back\",\"disable back\"],\"patchTemplate\":{\"defaults\":{\"header\":{\"showBack\":false}}}},{\"id\":\"defaults.back.strategy.set\",\"intentExamples\":[\"back\",\"return\",\"navigation\"],\"patchTemplate\":{\"defaults\":{\"back\":{\"strategy\":\"{{value}}\"}}}},{\"id\":\"defaults.back.returnTo.set\",\"intentExamples\":[\"return to\",\"back route\",\"navigate back\"],\"patchTemplate\":{\"defaults\":{\"back\":{\"returnTo\":\"{{value}}\"}}}},{\"id\":\"defaults.back.confirmOnDirty.enable\",\"intentExamples\":[\"confirm\",\"dirty\",\"unsaved\",\"confirm exit\"],\"patchTemplate\":{\"defaults\":{\"back\":{\"confirmOnDirty\":true}}}},{\"id\":\"defaults.back.confirmOnDirty.disable\",\"intentExamples\":[\"no confirm\",\"disable confirm\"],\"patchTemplate\":{\"defaults\":{\"back\":{\"confirmOnDirty\":false}}}},{\"id\":\"action.add\",\"intentExamples\":[\"add action\",\"new action\",\"create action\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"action\":\"{{params.action}}\",\"label\":\"{{value}}\",\"icon\":\"{{params.icon}}\"}]}},{\"id\":\"action.label.set\",\"intentExamples\":[\"label\",\"rename action\",\"titulo\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"label\":\"{{value}}\"}]}},{\"id\":\"action.icon.set\",\"intentExamples\":[\"icon\",\"icone\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"icon\":\"{{value}}\"}]}},{\"id\":\"action.openMode.set\",\"intentExamples\":[\"open mode\",\"route\",\"modal\",\"drawer\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"openMode\":\"{{value}}\"}]}},{\"id\":\"action.route.set\",\"intentExamples\":[\"route\",\"url\",\"navigate\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"route\":\"{{value}}\"}]}},{\"id\":\"action.formId.set\",\"intentExamples\":[\"form\",\"formId\",\"dialog\",\"drawer\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"formId\":\"{{value}}\"}]}},{\"id\":\"action.submitLabel.set\",\"intentExamples\":[\"submit label\",\"save button label\",\"rótulo do botão salvar\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"form\":{\"submitLabel\":\"{{value}}\"}}]}},{\"id\":\"action.params.add\",\"intentExamples\":[\"param\",\"params\",\"query\",\"route param\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"params\":[{\"from\":\"{{params.from}}\",\"to\":\"{{params.to}}\",\"name\":\"{{params.name}}\"}]}]}},{\"id\":\"action.initialValue.set\",\"intentExamples\":[\"initial value\",\"seed\",\"default form values\",\"prefill\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"form\":{\"initialValue\":\"{{value}}\"}}]}},{\"id\":\"action.confirmation.enable\",\"intentExamples\":[\"confirm\",\"confirmation\",\"requires confirmation\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"requiresConfirmation\":true}]}},{\"id\":\"action.confirmation.disable\",\"intentExamples\":[\"no confirm\",\"disable confirmation\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"requiresConfirmation\":false}]}},{\"id\":\"action.visibleWhen.set\",\"intentExamples\":[\"visible when\",\"visibility\",\"show when\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"visibleWhen\":\"{{value}}\"}]}},{\"id\":\"action.type.set\",\"intentExamples\":[\"type\",\"button type\",\"toolbar\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"type\":\"{{value}}\"}]}},{\"id\":\"action.appearance.set\",\"intentExamples\":[\"appearance\",\"variant\",\"style\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"appearance\":\"{{value}}\"}]}},{\"id\":\"action.position.set\",\"intentExamples\":[\"position\",\"start\",\"end\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"position\":\"{{value}}\"}]}},{\"id\":\"action.back.strategy.set\",\"intentExamples\":[\"back\",\"return\",\"navigation\"],\"patchTemplate\":{\"actions\":[{\"id\":\"{{target}}\",\"back\":{\"strategy\":\"{{value}}\"}}]}},{\"id\":\"ADD_CONDITIONAL_RENDERER\",\"intentExamples\":[\"conditional renderer\",\"renderer condicional\",\"badge condicional\",\"chip condicional\",\"badge se\",\"chip se\",\"conditional badge\",\"conditional chip\"],\"patchTemplate\":{\"table\":{\"columns\":[{\"field\":\"{{target}}\",\"conditionalRenderers\":[{\"condition\":\"{{params.condition}}\",\"renderer\":\"{{params.renderer}}\"}]}]}}}],\"fieldResolvers\":{\"actions[]\":[\"id\",\"label\",\"action\"],\"resource.path\":[],\"table.columns[].field\":[\"field\",\"header\"]},\"hints\":[\"Use actions[].id as the canonical action key; avoid array indexes.\",\"When adding actions, include params.action to describe the underlying CRUD action.\",\"openMode route requires actions[].route; modal or drawer require actions[].formId unless the host completes bindings via per-action override before opening.\",\"Table and form are full configs; patch nested fields instead of replacing the whole object.\",\"Use ADD_CONDITIONAL_RENDERER for table conditional badges/chips (table.columns[].conditionalRenderers).\",\"CRUD agrega TableConfig e FormConfig; siga o contrato da tabela para columns/conditionalRenderers.\",\"DOC: Widget purpose: CRUD shell that composes a table + optional form from metadata.\",\"DOC: Host inputs: metadata (required) and crudId (required). componentInstanceId/context/enableCustomization are optional.\",\"DOC: CrudMetadata requires component='praxis-crud' and table (TableConfig).\",\"DOC: inner table renders with resource.path (remote) or metadata.data (local). If both are provided, resource.path takes precedence.\",\"DOC: If actions open modal/drawer, actions[].formId is required unless a per-action override resolves it before opening; for route mode, actions[].route is required unless override resolves it.\"]}}",
|
|
8004
9153
|
"sourcePointer": "projects/praxis-crud/src/lib/ai/crud-context-pack.ts",
|
|
@@ -8008,7 +9157,7 @@
|
|
|
8008
9157
|
"corpusVersion": "1.0.0"
|
|
8009
9158
|
},
|
|
8010
9159
|
{
|
|
8011
|
-
"chunkIndex":
|
|
9160
|
+
"chunkIndex": 37,
|
|
8012
9161
|
"chunkKind": "recipe",
|
|
8013
9162
|
"content": "{\"_comment\":\"Variant focused on CRUD actions and launcher behavior, using inferred canonical actions as the baseline.\",\"templateMeta\":{\"variantId\":\"actions\",\"variantOf\":\"praxis-crud\",\"registryKey\":\"praxis-crud\",\"tags\":[\"actions\",\"crud\"],\"useWhen\":\"user asks to change CRUD actions or routes\",\"examplePrompts\":[\"add a custom action to archive records\",\"change the edit action to open a route\"]},\"resource\":{\"path\":\"/api/employees\",\"idField\":\"id\",\"endpointKey\":\"employees\"},\"defaults\":{\"openMode\":\"modal\",\"modal\":{\"width\":\"860px\",\"maxWidth\":\"95vw\",\"panelClass\":\"crud-dialog\",\"backdropStyle\":\"blur\",\"autoFocus\":true,\"restoreFocus\":true},\"back\":{\"strategy\":\"auto\",\"returnTo\":\"/employees\",\"confirmOnDirty\":true},\"header\":{\"showBack\":true,\"backLabel\":\"Voltar\",\"variant\":\"outlined\",\"sticky\":true,\"breadcrumbs\":true,\"divider\":true}},\"actions\":[{\"id\":\"create\",\"label\":\"Novo colaborador\",\"icon\":\"add\",\"action\":\"create\",\"openMode\":\"modal\"},{\"id\":\"view\",\"label\":\"Visualizar\",\"icon\":\"visibility\",\"action\":\"view\",\"openMode\":\"modal\"},{\"id\":\"edit\",\"label\":\"Editar\",\"icon\":\"edit\",\"action\":\"edit\",\"openMode\":\"modal\"},{\"id\":\"delete\",\"label\":\"Excluir\",\"icon\":\"delete\",\"action\":\"delete\"},{\"id\":\"edit-route\",\"label\":\"Editar na rota\",\"icon\":\"open_in_new\",\"action\":\"edit-route\",\"openMode\":\"route\",\"route\":\"/employees/:id/edit\",\"params\":[{\"from\":\"id\",\"to\":\"routeParam\",\"name\":\"id\"},{\"from\":\"name\",\"to\":\"query\",\"name\":\"name\"}],\"back\":{\"strategy\":\"navigate\",\"returnTo\":\"/employees\"}}]}",
|
|
8014
9163
|
"sourcePointer": "examples/ai-recipes/praxis-crud.actions.json",
|
|
@@ -8018,7 +9167,7 @@
|
|
|
8018
9167
|
"corpusVersion": "1.0.0"
|
|
8019
9168
|
},
|
|
8020
9169
|
{
|
|
8021
|
-
"chunkIndex":
|
|
9170
|
+
"chunkIndex": 38,
|
|
8022
9171
|
"chunkKind": "recipe",
|
|
8023
9172
|
"content": "{\"_comment\":\"Variant focused on CRUD form configuration.\",\"templateMeta\":{\"variantId\":\"form\",\"variantOf\":\"praxis-crud\",\"registryKey\":\"praxis-crud\",\"tags\":[\"form\",\"crud\"],\"useWhen\":\"user asks to change form layout or fields in CRUD\",\"examplePrompts\":[\"add a new field to the crud form\",\"update validation rules in the form\"]},\"resource\":{\"path\":\"/api/employees\",\"idField\":\"id\",\"endpointKey\":\"employees\"},\"form\":{\"metadata\":{\"version\":\"2.0\",\"source\":\"local\",\"schemaId\":\"path:/api/employees#request\",\"schemaContext\":{\"path\":\"/api/employees\",\"operation\":\"POST\",\"schemaType\":\"request\",\"internal\":false,\"tenant\":\"default\",\"locale\":\"pt-BR\"}},\"api\":{\"saveEndpoint\":\"/api/employees\",\"loadEndpoint\":\"/api/employees/${id}\",\"saveMethod\":\"POST\",\"timeout\":15000,\"headers\":{\"X-Module\":\"HR\"},\"idField\":\"id\",\"beforeSave\":\"sanitizeEmployee\",\"afterLoad\":\"mapEmployee\"},\"behavior\":{\"confirmOnUnsavedChanges\":true,\"trackHistory\":true,\"focusFirstError\":true,\"scrollToErrors\":true,\"clearAfterSave\":false,\"reactiveValidation\":true,\"reactiveValidationDebounceMs\":200},\"messages\":{\"createRegistrySuccess\":\"Colaborador criado com sucesso.\",\"updateRegistrySuccess\":\"Colaborador atualizado com sucesso.\",\"createRegistryError\":\"Falha ao criar colaborador.\",\"updateRegistryError\":\"Falha ao atualizar colaborador.\",\"confirmations\":{\"submit\":\"Deseja salvar as alteracoes?\",\"cancel\":\"Descartar alteracoes?\",\"reset\":\"Limpar o formulario?\"},\"customActions\":{\"archive\":{\"confirmation\":\"Arquivar este colaborador?\"}},\"loading\":{\"submit\":\"Salvando...\",\"cancel\":\"Cancelando...\"}},\"hints\":{\"dataModes\":{\"create\":\"Preencha os dados para criar um novo colaborador.\",\"edit\":\"Atualize os dados e salve as alteracoes.\",\"view\":\"Visualize os dados do colaborador.\"},\"uiModes\":{\"presentation\":\"Modo apresentacao mostra somente leitura.\",\"readonly\":\"Modo leitura bloqueia edicao.\",\"disabled\":\"Campos desabilitados nao permitem interacao.\",\"visible\":\"Controle de visibilidade sem destruir controles.\"}},\"hooks\":{\"beforeSubmit\":[{\"id\":\"sanitize-employee\",\"priority\":100,\"args\":{\"trimStrings\":true}}],\"afterSubmit\":[{\"id\":\"notify-success\",\"args\":{\"messageKey\":\"employeeSaved\"}}],\"onError\":[{\"id\":\"notify-error\",\"args\":{\"messageKey\":\"employeeSaveError\"}}]},\"fieldMetadata\":[{\"name\":\"id\",\"label\":\"ID\",\"controlType\":\"numericTextBox\",\"dataType\":\"number\",\"hidden\":true,\"readOnly\":true,\"description\":\"Campo ID oculto, gerenciado pelo backend.\"},{\"name\":\"name\",\"label\":\"Nome completo\",\"controlType\":\"input\",\"dataType\":\"text\",\"placeholder\":\"Ex.: Ana Souza\",\"prefixIcon\":\"person\",\"validators\":{\"required\":true,\"minLength\":3}},{\"name\":\"email\",\"label\":\"Email\",\"controlType\":\"email\",\"dataType\":\"email\",\"placeholder\":\"nome@empresa.com\",\"validators\":{\"required\":true,\"email\":true}},{\"name\":\"phone\",\"label\":\"Telefone\",\"controlType\":\"phone\",\"placeholder\":\"(11) 99999-0000\",\"mask\":\"(99) 99999-9999\"},{\"name\":\"status\",\"label\":\"Status\",\"controlType\":\"select\",\"options\":[{\"text\":\"Ativo\",\"value\":\"ACTIVE\"},{\"text\":\"Inativo\",\"value\":\"INACTIVE\"},{\"text\":\"Afastado\",\"value\":\"ON_LEAVE\"}],\"defaultValue\":\"ACTIVE\",\"materialDesign\":{\"appearance\":\"outline\"}},{\"name\":\"hireDate\",\"label\":\"Data de admissao\",\"controlType\":\"date\",\"dataType\":\"date\"},{\"name\":\"terminationDate\",\"label\":\"Data de desligamento\",\"controlType\":\"date\",\"conditionalDisplay\":{\"==\":[{\"var\":\"status\"},\"INACTIVE\"]},\"conditionalRequired\":{\"==\":[{\"var\":\"status\"},\"INACTIVE\"]}},{\"name\":\"department\",\"label\":\"Departamento\",\"controlType\":\"select\",\"endpoint\":\"/api/departments\",\"valueField\":\"id\",\"displayField\":\"name\"},{\"name\":\"role\",\"label\":\"Cargo\",\"controlType\":\"select\",\"options\":[{\"text\":\"Analista\",\"value\":\"ANALYST\"},{\"text\":\"Coordenador\",\"value\":\"COORD\"},{\"text\":\"Gerente\",\"value\":\"MANAGER\"}]},{\"name\":\"managerId\",\"label\":\"Gestor\",\"controlType\":\"autoComplete\",\"endpoint\":\"/api/employees?role=manager\",\"valueField\":\"id\",\"displayField\":\"name\",\"filterField\":\"name\"},{\"name\":\"salary\",\"label\":\"Salario\",\"controlType\":\"currency\",\"dataType\":\"number\",\"format\":\"BRL|symbol|2\",\"validators\":{\"min\":0}},{\"name\":\"workMode\",\"label\":\"Regime\",\"controlType\":\"radio\",\"options\":[{\"text\":\"CLT\",\"value\":\"CLT\"},{\"text\":\"PJ\",\"value\":\"PJ\"},{\"text\":\"Estagio\",\"value\":\"INTERN\"}],\"defaultValue\":\"CLT\"},{\"name\":\"notes\",\"label\":\"Observacoes\",\"controlType\":\"textarea\",\"validators\":{\"maxLength\":500},\"hint\":\"Informacoes adicionais relevantes ao cadastro.\"},{\"name\":\"isActive\",\"label\":\"Ativo\",\"controlType\":\"toggle\",\"defaultValue\":true},{\"name\":\"avatar\",\"label\":\"Foto\",\"controlType\":\"upload\",\"accept\":\".png,.jpg,.jpeg\",\"multiple\":false,\"materialDesign\":{\"appearance\":\"outline\"}}],\"sections\":[{\"id\":\"basic\",\"title\":\"Dados basicos\",\"description\":\"Informacoes pessoais e status.\",\"icon\":\"person\",\"collapsible\":true,\"collapsed\":false,\"titleStyle\":\"titleMedium\",\"descriptionStyle\":\"bodyMedium\",\"rows\":[{\"id\":\"row-basic-1\",\"columns\":[{\"id\":\"col-basic-1\",\"fields\":[\"name\",\"email\"],\"span\":{\"md\":6,\"lg\":6},\"padding\":8},{\"id\":\"col-basic-2\",\"fields\":[\"status\",\"hireDate\"],\"span\":{\"md\":6,\"lg\":6}}]},{\"id\":\"row-basic-2\",\"columns\":[{\"id\":\"col-basic-3\",\"fields\":[\"phone\",\"managerId\"],\"span\":{\"md\":6,\"lg\":6}},{\"id\":\"col-basic-4\",\"fields\":[\"department\",\"role\"],\"span\":{\"md\":6,\"lg\":6}}]}]},{\"id\":\"employment\",\"title\":\"Contrato\",\"icon\":\"badge\",\"rows\":[{\"id\":\"row-employment-1\",\"columns\":[{\"id\":\"col-employment-1\",\"fields\":[\"salary\",\"workMode\"],\"span\":{\"md\":6,\"lg\":6}},{\"id\":\"col-employment-2\",\"fields\":[\"terminationDate\",\"notes\"],\"span\":{\"md\":6,\"lg\":6}}]}]},{\"id\":\"attachments\",\"title\":\"Arquivos\",\"collapsible\":true,\"collapsed\":true,\"rows\":[{\"id\":\"row-attachments-1\",\"columns\":[{\"id\":\"col-attachments-1\",\"fields\":[\"avatar\"],\"span\":{\"md\":12,\"lg\":12},\"align\":\"center\"}]}]}],\"actions\":{\"submit\":{\"visible\":true,\"label\":\"Salvar\",\"color\":\"primary\",\"variant\":\"raised\",\"type\":\"submit\",\"shortcut\":\"Ctrl+S\"},\"cancel\":{\"visible\":true,\"label\":\"Cancelar\",\"type\":\"button\"},\"reset\":{\"visible\":true,\"label\":\"Limpar\",\"type\":\"reset\"},\"custom\":[{\"id\":\"archive\",\"visible\":true,\"label\":\"Arquivar\",\"icon\":\"archive\",\"color\":\"warn\",\"variant\":\"stroked\",\"action\":\"archive\"}],\"position\":\"right\",\"orientation\":\"horizontal\",\"spacing\":\"normal\",\"sticky\":true,\"divider\":true,\"placement\":\"afterSections\",\"mobile\":{\"position\":\"center\",\"orientation\":\"vertical\",\"collapseToMenu\":true}},\"formRules\":[{\"id\":\"hide-salary-inactive\",\"name\":\"Ocultar salario para inativos\",\"targetType\":\"field\",\"targets\":[\"salary\"],\"effect\":{\"condition\":{\"==\":[{\"var\":\"status\"},\"INACTIVE\"]},\"properties\":{\"visible\":false}}},{\"id\":\"require-termination-date\",\"name\":\"Exigir data de desligamento\",\"targetType\":\"field\",\"targets\":[\"terminationDate\"],\"effect\":{\"condition\":{\"==\":[{\"var\":\"status\"},\"INACTIVE\"]},\"properties\":{\"required\":true,\"visible\":true}}}]}}",
|
|
8024
9173
|
"sourcePointer": "examples/ai-recipes/praxis-crud.form.json",
|
|
@@ -8028,7 +9177,7 @@
|
|
|
8028
9177
|
"corpusVersion": "1.0.0"
|
|
8029
9178
|
},
|
|
8030
9179
|
{
|
|
8031
|
-
"chunkIndex":
|
|
9180
|
+
"chunkIndex": 39,
|
|
8032
9181
|
"chunkKind": "recipe",
|
|
8033
9182
|
"content": "{\"componentId\":\"praxis-crud\",\"chunkSection\":\"_comment\",\"_comment\":\"Receita de CRUD alinhada ao PraxisCrud, usando acoes canonicas inferidas como baseline.\"}",
|
|
8034
9183
|
"sourcePointer": "examples/ai-recipes/praxis-crud.json",
|
|
@@ -8038,7 +9187,7 @@
|
|
|
8038
9187
|
"corpusVersion": "1.0.0"
|
|
8039
9188
|
},
|
|
8040
9189
|
{
|
|
8041
|
-
"chunkIndex":
|
|
9190
|
+
"chunkIndex": 40,
|
|
8042
9191
|
"chunkKind": "recipe",
|
|
8043
9192
|
"content": "{\"componentId\":\"praxis-crud\",\"chunkSection\":\"templateMeta\",\"templateMeta\":{\"registryKey\":\"praxis-crud\",\"defaultVariantId\":\"table\",\"variants\":[{\"id\":\"table\",\"registryKey\":\"praxis-crud\",\"variantId\":\"table\",\"aiDescription\":\"CRUD table configuration only.\",\"tags\":[\"table\",\"crud\"],\"useWhen\":\"user asks to change table columns or behavior inside CRUD\",\"examplePrompts\":[\"adjust the columns shown in the crud table\",\"enable selection in the crud table\"]},{\"id\":\"form\",\"registryKey\":\"praxis-crud\",\"variantId\":\"form\",\"aiDescription\":\"CRUD form configuration only.\",\"tags\":[\"form\",\"crud\"],\"useWhen\":\"user asks to change form layout or fields in CRUD\",\"examplePrompts\":[\"add a new field to the crud form\",\"update validation rules in the form\"]},{\"id\":\"actions\",\"registryKey\":\"praxis-crud\",\"variantId\":\"actions\",\"aiDescription\":\"CRUD actions and modal behavior.\",\"tags\":[\"actions\",\"crud\"],\"useWhen\":\"user asks to change CRUD actions or routes\",\"examplePrompts\":[\"add a custom action to archive records\",\"change the edit action to open a route\"]}]}}",
|
|
8044
9193
|
"sourcePointer": "examples/ai-recipes/praxis-crud.json",
|
|
@@ -8048,7 +9197,7 @@
|
|
|
8048
9197
|
"corpusVersion": "1.0.0"
|
|
8049
9198
|
},
|
|
8050
9199
|
{
|
|
8051
|
-
"chunkIndex":
|
|
9200
|
+
"chunkIndex": 41,
|
|
8052
9201
|
"chunkKind": "recipe",
|
|
8053
9202
|
"content": "{\"componentId\":\"praxis-crud\",\"chunkSection\":\"component\",\"component\":\"praxis-crud\"}",
|
|
8054
9203
|
"sourcePointer": "examples/ai-recipes/praxis-crud.json",
|
|
@@ -8058,7 +9207,17 @@
|
|
|
8058
9207
|
"corpusVersion": "1.0.0"
|
|
8059
9208
|
},
|
|
8060
9209
|
{
|
|
8061
|
-
"chunkIndex":
|
|
9210
|
+
"chunkIndex": 42,
|
|
9211
|
+
"chunkKind": "recipe",
|
|
9212
|
+
"content": "{\"componentId\":\"praxis-crud\",\"chunkSection\":\"pageHeader\",\"pageHeader\":{\"title\":\"Gestão de Colaboradores\",\"subtitle\":\"Administração do quadro de pessoal, lotação e status funcional.\",\"domain\":{\"label\":\"HUMAN RESOURCES\",\"icon\":\"badge\",\"tone\":\"primary\"}}}",
|
|
9213
|
+
"sourcePointer": "examples/ai-recipes/praxis-crud.json",
|
|
9214
|
+
"contentHash": "a410deb987d036fceddee28aad1d0ad77b94173623fab85b7ecb47505ac74a26",
|
|
9215
|
+
"sourceKind": "component_definition",
|
|
9216
|
+
"sourceId": "praxis-crud",
|
|
9217
|
+
"corpusVersion": "1.0.0"
|
|
9218
|
+
},
|
|
9219
|
+
{
|
|
9220
|
+
"chunkIndex": 43,
|
|
8062
9221
|
"chunkKind": "recipe",
|
|
8063
9222
|
"content": "{\"componentId\":\"praxis-crud\",\"chunkSection\":\"resource\",\"resource\":{\"path\":\"/api/employees\",\"idField\":\"id\",\"endpointKey\":\"employees\"}}",
|
|
8064
9223
|
"sourcePointer": "examples/ai-recipes/praxis-crud.json",
|
|
@@ -8068,7 +9227,27 @@
|
|
|
8068
9227
|
"corpusVersion": "1.0.0"
|
|
8069
9228
|
},
|
|
8070
9229
|
{
|
|
8071
|
-
"chunkIndex":
|
|
9230
|
+
"chunkIndex": 44,
|
|
9231
|
+
"chunkKind": "recipe",
|
|
9232
|
+
"content": "{\"componentId\":\"praxis-crud\",\"chunkSection\":\"filterBar\",\"filterBar\":{\"placement\":\"scope-bar\",\"showAdvanced\":true,\"inlineFields\":[\"name\",\"email\"],\"quickFilters\":[{\"id\":\"all\",\"label\":\"Todos\",\"icon\":\"groups\",\"filter\":{}},{\"id\":\"active\",\"label\":\"Ativos\",\"icon\":\"verified_user\",\"filter\":{\"status\":\"ACTIVE\"}}]}}",
|
|
9233
|
+
"sourcePointer": "examples/ai-recipes/praxis-crud.json",
|
|
9234
|
+
"contentHash": "69e40984cbeabfcc7ba7d2c5db0dcd35f5da79853eb1a26cc210765a9add6b35",
|
|
9235
|
+
"sourceKind": "component_definition",
|
|
9236
|
+
"sourceId": "praxis-crud",
|
|
9237
|
+
"corpusVersion": "1.0.0"
|
|
9238
|
+
},
|
|
9239
|
+
{
|
|
9240
|
+
"chunkIndex": 45,
|
|
9241
|
+
"chunkKind": "recipe",
|
|
9242
|
+
"content": "{\"componentId\":\"praxis-crud\",\"chunkSection\":\"kpiBand\",\"kpiBand\":{\"enabled\":true,\"source\":\"/api/employees/stats/group-by\",\"method\":\"POST\",\"payload\":{\"field\":\"status\",\"filter\":{},\"metrics\":[{\"operation\":\"COUNT\",\"alias\":\"total\"}]},\"cards\":[{\"id\":\"total-employees\",\"label\":\"Total de Colaboradores\",\"value\":\"0\",\"valueExpr\":\"${totalCount} | number\",\"caption\":\"Quadro geral\",\"icon\":\"groups\",\"variant\":\"primary\",\"filter\":{}},{\"id\":\"active-employees\",\"label\":\"Ativos\",\"value\":\"0\",\"valueExpr\":\"${byKey.ACTIVE} | default:0 | number\",\"caption\":\"Em exercício\",\"icon\":\"verified_user\",\"variant\":\"success\",\"filter\":{\"status\":\"ACTIVE\"}},{\"id\":\"on-leave-employees\",\"label\":\"Afastados\",\"value\":\"0\",\"valueExpr\":\"${byKey.ON_LEAVE} | default:0 | number\",\"captionExpr\":\"${average} | round:1 | default:'0.0'\",\"icon\":\"event_busy\",\"variant\":\"warning\",\"filter\":{\"status\":\"ON_LEAVE\"}}]}}",
|
|
9243
|
+
"sourcePointer": "examples/ai-recipes/praxis-crud.json",
|
|
9244
|
+
"contentHash": "715f8234d24179a380d563e55c2431531ab5d90b4048701076b464ec9d2a8199",
|
|
9245
|
+
"sourceKind": "component_definition",
|
|
9246
|
+
"sourceId": "praxis-crud",
|
|
9247
|
+
"corpusVersion": "1.0.0"
|
|
9248
|
+
},
|
|
9249
|
+
{
|
|
9250
|
+
"chunkIndex": 46,
|
|
8072
9251
|
"chunkKind": "recipe",
|
|
8073
9252
|
"content": "{\"componentId\":\"praxis-crud\",\"chunkSection\":\"defaults\",\"defaults\":{\"openMode\":\"modal\",\"modal\":{\"width\":\"860px\",\"maxWidth\":\"95vw\",\"panelClass\":\"crud-dialog\",\"backdropStyle\":\"blur\",\"autoFocus\":true,\"restoreFocus\":true},\"back\":{\"strategy\":\"auto\",\"returnTo\":\"/employees\",\"confirmOnDirty\":true},\"header\":{\"showBack\":true,\"backLabel\":\"Voltar\",\"variant\":\"outlined\",\"sticky\":true,\"breadcrumbs\":true,\"divider\":true}}}",
|
|
8074
9253
|
"sourcePointer": "examples/ai-recipes/praxis-crud.json",
|
|
@@ -8078,7 +9257,7 @@
|
|
|
8078
9257
|
"corpusVersion": "1.0.0"
|
|
8079
9258
|
},
|
|
8080
9259
|
{
|
|
8081
|
-
"chunkIndex":
|
|
9260
|
+
"chunkIndex": 47,
|
|
8082
9261
|
"chunkKind": "recipe",
|
|
8083
9262
|
"content": "{\"componentId\":\"praxis-crud\",\"chunkSection\":\"actions\",\"actions\":[{\"id\":\"create\",\"label\":\"Novo colaborador\",\"icon\":\"add\",\"action\":\"create\",\"openMode\":\"modal\"},{\"id\":\"view\",\"label\":\"Visualizar\",\"icon\":\"visibility\",\"action\":\"view\",\"openMode\":\"modal\"},{\"id\":\"edit\",\"label\":\"Editar\",\"icon\":\"edit\",\"action\":\"edit\",\"openMode\":\"modal\"},{\"id\":\"delete\",\"label\":\"Excluir\",\"icon\":\"delete\",\"action\":\"delete\"},{\"id\":\"edit-route\",\"label\":\"Editar na rota\",\"icon\":\"open_in_new\",\"action\":\"edit-route\",\"openMode\":\"route\",\"route\":\"/employees/:id/edit\",\"params\":[{\"from\":\"id\",\"to\":\"routeParam\",\"name\":\"id\"},{\"from\":\"name\",\"to\":\"query\",\"name\":\"name\"}],\"back\":{\"strategy\":\"navigate\",\"returnTo\":\"/employees\"}}]}",
|
|
8084
9263
|
"sourcePointer": "examples/ai-recipes/praxis-crud.json",
|
|
@@ -8088,7 +9267,7 @@
|
|
|
8088
9267
|
"corpusVersion": "1.0.0"
|
|
8089
9268
|
},
|
|
8090
9269
|
{
|
|
8091
|
-
"chunkIndex":
|
|
9270
|
+
"chunkIndex": 48,
|
|
8092
9271
|
"chunkKind": "recipe",
|
|
8093
9272
|
"content": "{\"componentId\":\"praxis-crud\",\"chunkSection\":\"table\",\"table\":{\"meta\":{\"version\":\"2.0.0\",\"id\":\"employees-table\",\"name\":\"Colaboradores\",\"description\":\"Listagem de colaboradores ativos e inativos\",\"idField\":\"id\"},\"columns\":[{\"field\":\"id\",\"header\":\"ID\",\"type\":\"string\",\"width\":\"80px\",\"visible\":false},{\"field\":\"name\",\"header\":\"Nome\",\"type\":\"string\",\"sortable\":true,\"filterable\":true,\"resizable\":true,\"sticky\":\"start\"},{\"field\":\"email\",\"header\":\"Email\",\"type\":\"string\",\"sortable\":true,\"filterable\":true},{\"field\":\"status\",\"header\":\"Status\",\"type\":\"string\",\"sortable\":true,\"filterable\":true,\"valueMapping\":{\"ACTIVE\":\"Ativo\",\"INACTIVE\":\"Inativo\",\"ON_LEAVE\":\"Afastado\"},\"renderer\":{\"type\":\"badge\",\"badge\":{\"textField\":\"statusLabel\",\"color\":\"success\",\"variant\":\"filled\"}},\"conditionalRenderers\":[{\"condition\":{\"==\":[{\"var\":\"status\"},\"INACTIVE\"]},\"renderer\":{\"type\":\"badge\",\"badge\":{\"text\":\"Inativo\",\"color\":\"warn\",\"variant\":\"filled\"}},\"description\":\"Status inativo\",\"enabled\":true},{\"condition\":{\"==\":[{\"var\":\"status\"},\"ON_LEAVE\"]},\"renderer\":{\"type\":\"chip\",\"chip\":{\"text\":\"Afastado\",\"color\":\"accent\",\"variant\":\"outlined\"}},\"description\":\"Status afastado\",\"enabled\":true}]},{\"field\":\"hireDate\",\"header\":\"Admissao\",\"type\":\"date\",\"format\":\"dd/MM/yyyy\",\"sortable\":true,\"filterable\":true},{\"field\":\"salary\",\"header\":\"Salario\",\"type\":\"currency\",\"format\":\"BRL|symbol|2\",\"align\":\"right\",\"sortable\":true,\"filterable\":true}],\"toolbar\":{\"visible\":true,\"position\":\"top\",\"title\":\"Colaboradores\",\"subtitle\":\"Gerencie cadastro, status e remuneracao\",\"layout\":{\"alignment\":\"space-between\",\"showSeparator\":true},\"actions\":[{\"id\":\"create\",\"label\":\"Novo\",\"icon\":\"add\",\"type\":\"button\",\"color\":\"primary\",\"position\":\"end\",\"action\":\"create\"},{\"id\":\"export\",\"label\":\"Exportar\",\"icon\":\"download\",\"type\":\"menu\",\"position\":\"end\",\"action\":\"export\",\"children\":[{\"id\":\"export-csv\",\"label\":\"CSV\",\"icon\":\"table_view\",\"type\":\"button\",\"position\":\"end\",\"action\":\"exportCsv\"},{\"id\":\"export-excel\",\"label\":\"Excel\",\"icon\":\"grid_on\",\"type\":\"button\",\"position\":\"end\",\"action\":\"exportExcel\"}]}],\"filters\":{\"enabled\":true,\"showAdvancedButton\":true},\"settingsMenu\":{\"enabled\":true,\"options\":[{\"id\":\"density\",\"label\":\"Densidade\",\"type\":\"select\",\"options\":[\"compact\",\"comfortable\",\"spacious\"]}]}},\"behavior\":{\"pagination\":{\"enabled\":true,\"pageSize\":20,\"pageSizeOptions\":[10,20,50],\"showFirstLastButtons\":true,\"showPageNumbers\":true,\"showPageInfo\":true,\"position\":\"bottom\",\"style\":\"default\",\"strategy\":\"server\"},\"sorting\":{\"enabled\":true,\"defaultSort\":{\"column\":\"name\",\"direction\":\"asc\"},\"multiSort\":false,\"strategy\":\"server\",\"showSortIndicators\":true,\"indicatorPosition\":\"end\",\"allowClearSort\":true},\"filtering\":{\"enabled\":true,\"columnFilters\":{\"enabled\":true,\"defaultType\":\"text\",\"position\":\"header\"},\"advancedFilters\":{\"enabled\":true,\"queryBuilder\":true,\"savePresets\":true},\"strategy\":\"server\",\"debounceTime\":300},\"selection\":{\"enabled\":true,\"type\":\"multiple\",\"mode\":\"checkbox\",\"allowSelectAll\":true,\"checkboxPosition\":\"start\",\"persistSelection\":false,\"persistOnDataUpdate\":false},\"interaction\":{\"rowClick\":{\"enabled\":true,\"action\":\"view\"},\"rowDoubleClick\":{\"enabled\":true,\"action\":\"edit\"},\"hover\":{\"enabled\":true,\"highlightRow\":true,\"showActionsOnHover\":true},\"keyboard\":{\"enabled\":true}}},\"actions\":{\"row\":{\"enabled\":true,\"position\":\"end\",\"display\":\"icons\",\"trigger\":\"hover\",\"width\":\"140px\",\"actions\":[{\"id\":\"view\",\"label\":\"Ver\",\"icon\":\"visibility\",\"action\":\"view\"},{\"id\":\"edit\",\"label\":\"Editar\",\"icon\":\"edit\",\"action\":\"edit\"},{\"id\":\"delete\",\"label\":\"Excluir\",\"icon\":\"delete\",\"action\":\"delete\",\"requiresConfirmation\":true}],\"header\":{\"label\":\"Acoes\",\"align\":\"center\"}},\"bulk\":{\"enabled\":true,\"position\":\"toolbar\",\"actions\":[{\"id\":\"bulk-delete\",\"label\":\"Excluir selecionados\",\"icon\":\"delete\",\"action\":\"deleteSelected\",\"requiresConfirmation\":true,\"minSelections\":1}],\"floating\":{\"position\":\"bottom-right\",\"hideWhenEmpty\":true}},\"confirmations\":{\"default\":{\"title\":\"Confirmar acao\",\"message\":\"Deseja continuar?\",\"confirmText\":\"Confirmar\",\"cancelText\":\"Cancelar\"},\"specific\":{\"delete\":{\"title\":\"Excluir colaborador\",\"message\":\"Esta acao nao pode ser desfeita.\",\"confirmText\":\"Excluir\",\"cancelText\":\"Cancelar\"}}}},\"export\":{\"enabled\":true,\"formats\":[\"csv\",\"excel\"],\"general\":{\"includeHeaders\":true,\"respectFilters\":true,\"applyFormatting\":true,\"defaultFileName\":\"colaboradores\",\"includeColumns\":[\"id\",\"name\",\"email\",\"status\",\"hireDate\",\"salary\"]},\"excel\":{\"sheetName\":\"Colaboradores\",\"includeFormulas\":false,\"freezeHeaders\":true,\"autoFitColumns\":true},\"csv\":{\"delimiter\":\";\",\"escapeChar\":\"\\\"\",\"encoding\":\"utf-8\",\"includeBOM\":true}},\"messages\":{\"states\":{\"loading\":\"Carregando colaboradores...\",\"empty\":\"Nenhum colaborador encontrado.\",\"error\":\"Erro ao carregar dados.\",\"noResults\":\"Sem resultados para o filtro atual.\",\"loadingMore\":\"Carregando mais registros...\"},\"actions\":{\"confirmations\":{\"delete\":\"Excluir este colaborador?\",\"deleteMultiple\":\"Excluir os colaboradores selecionados?\",\"save\":\"Salvar alteracoes?\",\"cancel\":\"Cancelar edicao?\",\"export\":\"Exportar dados agora?\"},\"success\":{\"save\":\"Colaborador salvo com sucesso.\",\"delete\":\"Colaborador excluido.\",\"export\":\"Exportacao concluida.\"},\"errors\":{\"save\":\"Falha ao salvar.\",\"delete\":\"Falha ao excluir.\",\"export\":\"Falha ao exportar.\"}}},\"localization\":{\"locale\":\"pt-BR\",\"direction\":\"ltr\",\"dateTime\":{\"dateFormat\":\"dd/MM/yyyy\",\"timeFormat\":\"HH:mm\",\"dateTimeFormat\":\"dd/MM/yyyy HH:mm\",\"firstDayOfWeek\":1}},\"appearance\":{\"density\":\"comfortable\",\"borders\":{\"showRowBorders\":true,\"showColumnBorders\":false,\"showOuterBorder\":true,\"style\":\"solid\",\"width\":1,\"color\":\"#e0e0e0\"}}}}",
|
|
8094
9273
|
"sourcePointer": "examples/ai-recipes/praxis-crud.json",
|
|
@@ -8098,7 +9277,7 @@
|
|
|
8098
9277
|
"corpusVersion": "1.0.0"
|
|
8099
9278
|
},
|
|
8100
9279
|
{
|
|
8101
|
-
"chunkIndex":
|
|
9280
|
+
"chunkIndex": 49,
|
|
8102
9281
|
"chunkKind": "recipe",
|
|
8103
9282
|
"content": "{\"componentId\":\"praxis-crud\",\"chunkSection\":\"form\",\"form\":{\"metadata\":{\"version\":\"2.0\",\"source\":\"local\",\"schemaId\":\"path:/api/employees#request\",\"schemaContext\":{\"path\":\"/api/employees\",\"operation\":\"POST\",\"schemaType\":\"request\",\"internal\":false,\"tenant\":\"default\",\"locale\":\"pt-BR\"}},\"api\":{\"saveEndpoint\":\"/api/employees\",\"loadEndpoint\":\"/api/employees/${id}\",\"saveMethod\":\"POST\",\"timeout\":15000,\"headers\":{\"X-Module\":\"HR\"},\"idField\":\"id\",\"beforeSave\":\"sanitizeEmployee\",\"afterLoad\":\"mapEmployee\"},\"behavior\":{\"confirmOnUnsavedChanges\":true,\"trackHistory\":true,\"focusFirstError\":true,\"scrollToErrors\":true,\"clearAfterSave\":false,\"reactiveValidation\":true,\"reactiveValidationDebounceMs\":200},\"messages\":{\"createRegistrySuccess\":\"Colaborador criado com sucesso.\",\"updateRegistrySuccess\":\"Colaborador atualizado com sucesso.\",\"createRegistryError\":\"Falha ao criar colaborador.\",\"updateRegistryError\":\"Falha ao atualizar colaborador.\",\"confirmations\":{\"submit\":\"Deseja salvar as alteracoes?\",\"cancel\":\"Descartar alteracoes?\",\"reset\":\"Limpar o formulario?\"},\"customActions\":{\"archive\":{\"confirmation\":\"Arquivar este colaborador?\"}},\"loading\":{\"submit\":\"Salvando...\",\"cancel\":\"Cancelando...\"}},\"hints\":{\"dataModes\":{\"create\":\"Preencha os dados para criar um novo colaborador.\",\"edit\":\"Atualize os dados e salve as alteracoes.\",\"view\":\"Visualize os dados do colaborador.\"},\"uiModes\":{\"presentation\":\"Modo apresentacao mostra somente leitura.\",\"readonly\":\"Modo leitura bloqueia edicao.\",\"disabled\":\"Campos desabilitados nao permitem interacao.\",\"visible\":\"Controle de visibilidade sem destruir controles.\"}},\"hooks\":{\"beforeSubmit\":[{\"id\":\"sanitize-employee\",\"priority\":100,\"args\":{\"trimStrings\":true}}],\"afterSubmit\":[{\"id\":\"notify-success\",\"args\":{\"messageKey\":\"employeeSaved\"}}],\"onError\":[{\"id\":\"notify-error\",\"args\":{\"messageKey\":\"employeeSaveError\"}}]},\"fieldMetadata\":[{\"name\":\"id\",\"label\":\"ID\",\"controlType\":\"numericTextBox\",\"dataType\":\"number\",\"hidden\":true,\"readOnly\":true,\"description\":\"Campo ID oculto, gerenciado pelo backend.\"},{\"name\":\"name\",\"label\":\"Nome completo\",\"controlType\":\"input\",\"dataType\":\"text\",\"placeholder\":\"Ex.: Ana Souza\",\"prefixIcon\":\"person\",\"validators\":{\"required\":true,\"minLength\":3}},{\"name\":\"email\",\"label\":\"Email\",\"controlType\":\"email\",\"dataType\":\"email\",\"placeholder\":\"nome@empresa.com\",\"validators\":{\"required\":true,\"email\":true}},{\"name\":\"phone\",\"label\":\"Telefone\",\"controlType\":\"phone\",\"placeholder\":\"(11) 99999-0000\",\"mask\":\"(99) 99999-9999\"},{\"name\":\"status\",\"label\":\"Status\",\"controlType\":\"select\",\"options\":[{\"text\":\"Ativo\",\"value\":\"ACTIVE\"},{\"text\":\"Inativo\",\"value\":\"INACTIVE\"},{\"text\":\"Afastado\",\"value\":\"ON_LEAVE\"}],\"defaultValue\":\"ACTIVE\",\"materialDesign\":{\"appearance\":\"outline\"}},{\"name\":\"hireDate\",\"label\":\"Data de admissao\",\"controlType\":\"date\",\"dataType\":\"date\"},{\"name\":\"terminationDate\",\"label\":\"Data de desligamento\",\"controlType\":\"date\",\"conditionalDisplay\":{\"==\":[{\"var\":\"status\"},\"INACTIVE\"]},\"conditionalRequired\":{\"==\":[{\"var\":\"status\"},\"INACTIVE\"]}},{\"name\":\"department\",\"label\":\"Departamento\",\"controlType\":\"select\",\"endpoint\":\"/api/departments\",\"valueField\":\"id\",\"displayField\":\"name\"},{\"name\":\"role\",\"label\":\"Cargo\",\"controlType\":\"select\",\"options\":[{\"text\":\"Analista\",\"value\":\"ANALYST\"},{\"text\":\"Coordenador\",\"value\":\"COORD\"},{\"text\":\"Gerente\",\"value\":\"MANAGER\"}]},{\"name\":\"managerId\",\"label\":\"Gestor\",\"controlType\":\"autoComplete\",\"endpoint\":\"/api/employees?role=manager\",\"valueField\":\"id\",\"displayField\":\"name\",\"filterField\":\"name\"},{\"name\":\"salary\",\"label\":\"Salario\",\"controlType\":\"currency\",\"dataType\":\"number\",\"format\":\"BRL|symbol|2\",\"validators\":{\"min\":0}},{\"name\":\"workMode\",\"label\":\"Regime\",\"controlType\":\"radio\",\"options\":[{\"text\":\"CLT\",\"value\":\"CLT\"},{\"text\":\"PJ\",\"value\":\"PJ\"},{\"text\":\"Estagio\",\"value\":\"INTERN\"}],\"defaultValue\":\"CLT\"},{\"name\":\"notes\",\"label\":\"Observacoes\",\"controlType\":\"textarea\",\"validators\":{\"maxLength\":500},\"hint\":\"Informacoes adicionais relevantes ao cadastro.\"},{\"name\":\"isActive\",\"label\":\"Ativo\",\"controlType\":\"toggle\",\"defaultValue\":true},{\"name\":\"avatar\",\"label\":\"Foto\",\"controlType\":\"upload\",\"accept\":\".png,.jpg,.jpeg\",\"multiple\":false,\"materialDesign\":{\"appearance\":\"outline\"}}],\"sections\":[{\"id\":\"basic\",\"title\":\"Dados basicos\",\"description\":\"Informacoes pessoais e status.\",\"icon\":\"person\",\"collapsible\":true,\"collapsed\":false,\"titleStyle\":\"titleMedium\",\"descriptionStyle\":\"bodyMedium\",\"rows\":[{\"id\":\"row-basic-1\",\"columns\":[{\"id\":\"col-basic-1\",\"fields\":[\"name\",\"email\"],\"span\":{\"md\":6,\"lg\":6},\"padding\":8},{\"id\":\"col-basic-2\",\"fields\":[\"status\",\"hireDate\"],\"span\":{\"md\":6,\"lg\":6}}]},{\"id\":\"row-basic-2\",\"columns\":[{\"id\":\"col-basic-3\",\"fields\":[\"phone\",\"managerId\"],\"span\":{\"md\":6,\"lg\":6}},{\"id\":\"col-basic-4\",\"fields\":[\"department\",\"role\"],\"span\":{\"md\":6,\"lg\":6}}]}]},{\"id\":\"employment\",\"title\":\"Contrato\",\"icon\":\"badge\",\"rows\":[{\"id\":\"row-employment-1\",\"columns\":[{\"id\":\"col-employment-1\",\"fields\":[\"salary\",\"workMode\"],\"span\":{\"md\":6,\"lg\":6}},{\"id\":\"col-employment-2\",\"fields\":[\"terminationDate\",\"notes\"],\"span\":{\"md\":6,\"lg\":6}}]}]},{\"id\":\"attachments\",\"title\":\"Arquivos\",\"collapsible\":true,\"collapsed\":true,\"rows\":[{\"id\":\"row-attachments-1\",\"columns\":[{\"id\":\"col-attachments-1\",\"fields\":[\"avatar\"],\"span\":{\"md\":12,\"lg\":12},\"align\":\"center\"}]}]}],\"actions\":{\"submit\":{\"visible\":true,\"label\":\"Salvar\",\"color\":\"primary\",\"variant\":\"raised\",\"type\":\"submit\",\"shortcut\":\"Ctrl+S\"},\"cancel\":{\"visible\":true,\"label\":\"Cancelar\",\"type\":\"button\"},\"reset\":{\"visible\":true,\"label\":\"Limpar\",\"type\":\"reset\"},\"custom\":[{\"id\":\"archive\",\"visible\":true,\"label\":\"Arquivar\",\"icon\":\"archive\",\"color\":\"warn\",\"variant\":\"stroked\",\"action\":\"archive\"}],\"position\":\"right\",\"orientation\":\"horizontal\",\"spacing\":\"normal\",\"sticky\":true,\"divider\":true,\"placement\":\"afterSections\",\"mobile\":{\"position\":\"center\",\"orientation\":\"vertical\",\"collapseToMenu\":true}},\"formRules\":[{\"id\":\"hide-salary-inactive\",\"name\":\"Ocultar salario para inativos\",\"targetType\":\"field\",\"targets\":[\"salary\"],\"effect\":{\"condition\":{\"==\":[{\"var\":\"status\"},\"INACTIVE\"]},\"properties\":{\"visible\":false}}},{\"id\":\"require-termination-date\",\"name\":\"Exigir data de desligamento\",\"targetType\":\"field\",\"targets\":[\"terminationDate\"],\"effect\":{\"condition\":{\"==\":[{\"var\":\"status\"},\"INACTIVE\"]},\"properties\":{\"required\":true,\"visible\":true}}}]}}",
|
|
8104
9283
|
"sourcePointer": "examples/ai-recipes/praxis-crud.json",
|
|
@@ -8108,7 +9287,7 @@
|
|
|
8108
9287
|
"corpusVersion": "1.0.0"
|
|
8109
9288
|
},
|
|
8110
9289
|
{
|
|
8111
|
-
"chunkIndex":
|
|
9290
|
+
"chunkIndex": 50,
|
|
8112
9291
|
"chunkKind": "recipe",
|
|
8113
9292
|
"content": "{\"componentId\":\"praxis-crud\",\"chunkSection\":\"i18n\",\"i18n\":{\"crudDialog\":{\"createTitle\":\"Novo colaborador\",\"editTitle\":\"Editar colaborador\",\"viewTitle\":\"Detalhes do colaborador\",\"deleteTitle\":\"Confirmar exclusao\",\"deleteConfirm\":\"Tem certeza que deseja excluir este colaborador?\"}}}",
|
|
8114
9293
|
"sourcePointer": "examples/ai-recipes/praxis-crud.json",
|
|
@@ -8118,7 +9297,7 @@
|
|
|
8118
9297
|
"corpusVersion": "1.0.0"
|
|
8119
9298
|
},
|
|
8120
9299
|
{
|
|
8121
|
-
"chunkIndex":
|
|
9300
|
+
"chunkIndex": 51,
|
|
8122
9301
|
"chunkKind": "recipe",
|
|
8123
9302
|
"content": "{\"_comment\":\"Variant focused on CRUD table configuration.\",\"templateMeta\":{\"variantId\":\"table\",\"variantOf\":\"praxis-crud\",\"registryKey\":\"praxis-crud\",\"tags\":[\"table\",\"crud\"],\"useWhen\":\"user asks to change table columns or behavior inside CRUD\",\"examplePrompts\":[\"adjust the columns shown in the crud table\",\"enable selection in the crud table\"]},\"resource\":{\"path\":\"/api/employees\",\"idField\":\"id\",\"endpointKey\":\"employees\"},\"table\":{\"meta\":{\"version\":\"2.0.0\",\"id\":\"employees-table\",\"name\":\"Colaboradores\",\"description\":\"Listagem de colaboradores ativos e inativos\",\"idField\":\"id\"},\"columns\":[{\"field\":\"id\",\"header\":\"ID\",\"type\":\"string\",\"width\":\"80px\",\"visible\":false},{\"field\":\"name\",\"header\":\"Nome\",\"type\":\"string\",\"sortable\":true,\"filterable\":true,\"resizable\":true,\"sticky\":\"start\"},{\"field\":\"email\",\"header\":\"Email\",\"type\":\"string\",\"sortable\":true,\"filterable\":true},{\"field\":\"status\",\"header\":\"Status\",\"type\":\"string\",\"sortable\":true,\"filterable\":true,\"valueMapping\":{\"ACTIVE\":\"Ativo\",\"INACTIVE\":\"Inativo\",\"ON_LEAVE\":\"Afastado\"},\"renderer\":{\"type\":\"badge\",\"badge\":{\"textField\":\"statusLabel\",\"color\":\"success\",\"variant\":\"filled\"}},\"conditionalRenderers\":[{\"condition\":{\"==\":[{\"var\":\"status\"},\"INACTIVE\"]},\"renderer\":{\"type\":\"badge\",\"badge\":{\"text\":\"Inativo\",\"color\":\"warn\",\"variant\":\"filled\"}},\"description\":\"Status inativo\",\"enabled\":true},{\"condition\":{\"==\":[{\"var\":\"status\"},\"ON_LEAVE\"]},\"renderer\":{\"type\":\"chip\",\"chip\":{\"text\":\"Afastado\",\"color\":\"accent\",\"variant\":\"outlined\"}},\"description\":\"Status afastado\",\"enabled\":true}]},{\"field\":\"hireDate\",\"header\":\"Admissao\",\"type\":\"date\",\"format\":\"dd/MM/yyyy\",\"sortable\":true,\"filterable\":true},{\"field\":\"salary\",\"header\":\"Salario\",\"type\":\"currency\",\"format\":\"BRL|symbol|2\",\"align\":\"right\",\"sortable\":true,\"filterable\":true}],\"toolbar\":{\"visible\":true,\"position\":\"top\",\"title\":\"Colaboradores\",\"subtitle\":\"Gerencie cadastro, status e remuneracao\",\"layout\":{\"alignment\":\"space-between\",\"showSeparator\":true},\"actions\":[{\"id\":\"create\",\"label\":\"Novo\",\"icon\":\"add\",\"type\":\"button\",\"color\":\"primary\",\"position\":\"end\",\"action\":\"create\"},{\"id\":\"export\",\"label\":\"Exportar\",\"icon\":\"download\",\"type\":\"menu\",\"position\":\"end\",\"action\":\"export\",\"children\":[{\"id\":\"export-csv\",\"label\":\"CSV\",\"icon\":\"table_view\",\"type\":\"button\",\"position\":\"end\",\"action\":\"exportCsv\"},{\"id\":\"export-excel\",\"label\":\"Excel\",\"icon\":\"grid_on\",\"type\":\"button\",\"position\":\"end\",\"action\":\"exportExcel\"}]}],\"filters\":{\"enabled\":true,\"showAdvancedButton\":true},\"settingsMenu\":{\"enabled\":true,\"options\":[{\"id\":\"density\",\"label\":\"Densidade\",\"type\":\"select\",\"options\":[\"compact\",\"comfortable\",\"spacious\"]}]}},\"behavior\":{\"pagination\":{\"enabled\":true,\"pageSize\":20,\"pageSizeOptions\":[10,20,50],\"showFirstLastButtons\":true,\"showPageNumbers\":true,\"showPageInfo\":true,\"position\":\"bottom\",\"style\":\"default\",\"strategy\":\"server\"},\"sorting\":{\"enabled\":true,\"defaultSort\":{\"column\":\"name\",\"direction\":\"asc\"},\"multiSort\":false,\"strategy\":\"server\",\"showSortIndicators\":true,\"indicatorPosition\":\"end\",\"allowClearSort\":true},\"filtering\":{\"enabled\":true,\"columnFilters\":{\"enabled\":true,\"defaultType\":\"text\",\"position\":\"header\"},\"advancedFilters\":{\"enabled\":true,\"queryBuilder\":true,\"savePresets\":true},\"strategy\":\"server\",\"debounceTime\":300},\"selection\":{\"enabled\":true,\"type\":\"multiple\",\"mode\":\"checkbox\",\"allowSelectAll\":true,\"checkboxPosition\":\"start\",\"persistSelection\":false,\"persistOnDataUpdate\":false},\"interaction\":{\"rowClick\":{\"enabled\":true,\"action\":\"view\"},\"rowDoubleClick\":{\"enabled\":true,\"action\":\"edit\"},\"hover\":{\"enabled\":true,\"highlightRow\":true,\"showActionsOnHover\":true},\"keyboard\":{\"enabled\":true}}},\"actions\":{\"row\":{\"enabled\":true,\"position\":\"end\",\"display\":\"icons\",\"trigger\":\"hover\",\"width\":\"140px\",\"actions\":[{\"id\":\"view\",\"label\":\"Ver\",\"icon\":\"visibility\",\"action\":\"view\"},{\"id\":\"edit\",\"label\":\"Editar\",\"icon\":\"edit\",\"action\":\"edit\"},{\"id\":\"delete\",\"label\":\"Excluir\",\"icon\":\"delete\",\"action\":\"delete\",\"requiresConfirmation\":true}],\"header\":{\"label\":\"Acoes\",\"align\":\"center\"}},\"bulk\":{\"enabled\":true,\"position\":\"toolbar\",\"actions\":[{\"id\":\"bulk-delete\",\"label\":\"Excluir selecionados\",\"icon\":\"delete\",\"action\":\"deleteSelected\",\"requiresConfirmation\":true,\"minSelections\":1}],\"floating\":{\"position\":\"bottom-right\",\"hideWhenEmpty\":true}},\"confirmations\":{\"default\":{\"title\":\"Confirmar acao\",\"message\":\"Deseja continuar?\",\"confirmText\":\"Confirmar\",\"cancelText\":\"Cancelar\"},\"specific\":{\"delete\":{\"title\":\"Excluir colaborador\",\"message\":\"Esta acao nao pode ser desfeita.\",\"confirmText\":\"Excluir\",\"cancelText\":\"Cancelar\"}}}},\"export\":{\"enabled\":true,\"formats\":[\"csv\",\"excel\"],\"general\":{\"includeHeaders\":true,\"respectFilters\":true,\"applyFormatting\":true,\"defaultFileName\":\"colaboradores\",\"includeColumns\":[\"id\",\"name\",\"email\",\"status\",\"hireDate\",\"salary\"]},\"excel\":{\"sheetName\":\"Colaboradores\",\"includeFormulas\":false,\"freezeHeaders\":true,\"autoFitColumns\":true},\"csv\":{\"delimiter\":\";\",\"escapeChar\":\"\\\"\",\"encoding\":\"utf-8\",\"includeBOM\":true}},\"messages\":{\"states\":{\"loading\":\"Carregando colaboradores...\",\"empty\":\"Nenhum colaborador encontrado.\",\"error\":\"Erro ao carregar dados.\",\"noResults\":\"Sem resultados para o filtro atual.\",\"loadingMore\":\"Carregando mais registros...\"},\"actions\":{\"confirmations\":{\"delete\":\"Excluir este colaborador?\",\"deleteMultiple\":\"Excluir os colaboradores selecionados?\",\"save\":\"Salvar alteracoes?\",\"cancel\":\"Cancelar edicao?\",\"export\":\"Exportar dados agora?\"},\"success\":{\"save\":\"Colaborador salvo com sucesso.\",\"delete\":\"Colaborador excluido.\",\"export\":\"Exportacao concluida.\"},\"errors\":{\"save\":\"Falha ao salvar.\",\"delete\":\"Falha ao excluir.\",\"export\":\"Falha ao exportar.\"}}},\"localization\":{\"locale\":\"pt-BR\",\"direction\":\"ltr\",\"dateTime\":{\"dateFormat\":\"dd/MM/yyyy\",\"timeFormat\":\"HH:mm\",\"dateTimeFormat\":\"dd/MM/yyyy HH:mm\",\"firstDayOfWeek\":1}},\"appearance\":{\"density\":\"comfortable\",\"borders\":{\"showRowBorders\":true,\"showColumnBorders\":false,\"showOuterBorder\":true,\"style\":\"solid\",\"width\":1,\"color\":\"#e0e0e0\"}}}}",
|
|
8124
9303
|
"sourcePointer": "examples/ai-recipes/praxis-crud.table.json",
|
|
@@ -10976,6 +12155,185 @@
|
|
|
10976
12155
|
"responsive em card"
|
|
10977
12156
|
]
|
|
10978
12157
|
},
|
|
12158
|
+
{
|
|
12159
|
+
"path": "fieldMetadata[].presentation.visualization.scaleScope",
|
|
12160
|
+
"category": "layout",
|
|
12161
|
+
"valueKind": "enum",
|
|
12162
|
+
"allowedValues": [
|
|
12163
|
+
"row",
|
|
12164
|
+
"page"
|
|
12165
|
+
],
|
|
12166
|
+
"description": "Escopo de normalizacao de escala para series e valores em colecoes: row (local por linha) ou page (sincronizado na pagina visivel).",
|
|
12167
|
+
"intentExamples": [
|
|
12168
|
+
"sincronizar escala de sparklines na pagina",
|
|
12169
|
+
"comparar amplitude entre linhas"
|
|
12170
|
+
]
|
|
12171
|
+
},
|
|
12172
|
+
{
|
|
12173
|
+
"path": "fieldMetadata[].presentation.visualization.tone",
|
|
12174
|
+
"category": "appearance",
|
|
12175
|
+
"valueKind": "enum",
|
|
12176
|
+
"allowedValues": [
|
|
12177
|
+
"neutral",
|
|
12178
|
+
"info",
|
|
12179
|
+
"success",
|
|
12180
|
+
"warning",
|
|
12181
|
+
"danger",
|
|
12182
|
+
"critical"
|
|
12183
|
+
],
|
|
12184
|
+
"description": "Tom semantico estatico da micro visualizacao.",
|
|
12185
|
+
"intentExamples": [
|
|
12186
|
+
"neutral",
|
|
12187
|
+
"success",
|
|
12188
|
+
"warning",
|
|
12189
|
+
"danger",
|
|
12190
|
+
"critical"
|
|
12191
|
+
]
|
|
12192
|
+
},
|
|
12193
|
+
{
|
|
12194
|
+
"path": "fieldMetadata[].presentation.visualization.toneExpr",
|
|
12195
|
+
"category": "appearance",
|
|
12196
|
+
"valueKind": "object",
|
|
12197
|
+
"description": "Expressao Json Logic ou caminho row.<campo> para resolver dinamicamente o tom semantico da micro visualizacao.",
|
|
12198
|
+
"safetyNotes": "Deve retornar apenas um dos tons permitidos em presentationVisualizationTone."
|
|
12199
|
+
},
|
|
12200
|
+
{
|
|
12201
|
+
"path": "fieldMetadata[].presentation.visualization.valueExpr",
|
|
12202
|
+
"category": "behavior",
|
|
12203
|
+
"valueKind": "object",
|
|
12204
|
+
"description": "Caminho row.<campo> ou expressao Json Logic para obter o valor principal da micro visualizacao.",
|
|
12205
|
+
"intentExamples": [
|
|
12206
|
+
"row.slaValue",
|
|
12207
|
+
"row.progresso"
|
|
12208
|
+
]
|
|
12209
|
+
},
|
|
12210
|
+
{
|
|
12211
|
+
"path": "fieldMetadata[].presentation.visualization.valueSuffix",
|
|
12212
|
+
"category": "appearance",
|
|
12213
|
+
"valueKind": "string",
|
|
12214
|
+
"description": "Sufixo de unidade anexado ao valor numerico formatado (ex: \"%\", \" pts\", \" ms\", \" d\").",
|
|
12215
|
+
"intentExamples": [
|
|
12216
|
+
"mostrar % no bullet",
|
|
12217
|
+
"adicionar sufixo pts no radial"
|
|
12218
|
+
]
|
|
12219
|
+
},
|
|
12220
|
+
{
|
|
12221
|
+
"path": "fieldMetadata[].presentation.visualization.compactValue",
|
|
12222
|
+
"category": "appearance",
|
|
12223
|
+
"valueKind": "boolean",
|
|
12224
|
+
"description": "Formata valores numericos em notacao compacta (ex: 1.2M, 45.3K) para celulas densas.",
|
|
12225
|
+
"intentExamples": [
|
|
12226
|
+
"compactar valores financeiros grandes",
|
|
12227
|
+
"mostrar 1.2M em comparison"
|
|
12228
|
+
]
|
|
12229
|
+
},
|
|
12230
|
+
{
|
|
12231
|
+
"path": "fieldMetadata[].presentation.visualization.min",
|
|
12232
|
+
"category": "behavior",
|
|
12233
|
+
"valueKind": "number",
|
|
12234
|
+
"description": "Limite minimo explicito da escala numerica."
|
|
12235
|
+
},
|
|
12236
|
+
{
|
|
12237
|
+
"path": "fieldMetadata[].presentation.visualization.max",
|
|
12238
|
+
"category": "behavior",
|
|
12239
|
+
"valueKind": "number",
|
|
12240
|
+
"description": "Limite maximo explicito da escala numerica."
|
|
12241
|
+
},
|
|
12242
|
+
{
|
|
12243
|
+
"path": "fieldMetadata[].presentation.visualization.total",
|
|
12244
|
+
"category": "behavior",
|
|
12245
|
+
"valueKind": "number",
|
|
12246
|
+
"description": "Total explicito para proporcionalidade em stackedBar ou radial."
|
|
12247
|
+
},
|
|
12248
|
+
{
|
|
12249
|
+
"path": "fieldMetadata[].presentation.visualization.target",
|
|
12250
|
+
"category": "behavior",
|
|
12251
|
+
"valueKind": "number",
|
|
12252
|
+
"description": "Meta fixa para comparacao em bullet."
|
|
12253
|
+
},
|
|
12254
|
+
{
|
|
12255
|
+
"path": "fieldMetadata[].presentation.visualization.targetExpr",
|
|
12256
|
+
"category": "behavior",
|
|
12257
|
+
"valueKind": "object",
|
|
12258
|
+
"description": "Caminho row.<campo> ou expressao Json Logic para obter a meta por linha em bullet.",
|
|
12259
|
+
"intentExamples": [
|
|
12260
|
+
"row.metaSla",
|
|
12261
|
+
"row.target"
|
|
12262
|
+
]
|
|
12263
|
+
},
|
|
12264
|
+
{
|
|
12265
|
+
"path": "fieldMetadata[].presentation.visualization.baseline",
|
|
12266
|
+
"category": "behavior",
|
|
12267
|
+
"valueKind": "number",
|
|
12268
|
+
"description": "Valor de referencia fixo para comparison ou delta."
|
|
12269
|
+
},
|
|
12270
|
+
{
|
|
12271
|
+
"path": "fieldMetadata[].presentation.visualization.baselineExpr",
|
|
12272
|
+
"category": "behavior",
|
|
12273
|
+
"valueKind": "object",
|
|
12274
|
+
"description": "Caminho row.<campo> ou expressao Json Logic para obter o valor de referencia (baseline) por linha em comparison ou delta.",
|
|
12275
|
+
"intentExamples": [
|
|
12276
|
+
"row.orcamentoPrevisto",
|
|
12277
|
+
"row.indenizacoesTotal"
|
|
12278
|
+
]
|
|
12279
|
+
},
|
|
12280
|
+
{
|
|
12281
|
+
"path": "fieldMetadata[].presentation.visualization.pointsExpr",
|
|
12282
|
+
"category": "behavior",
|
|
12283
|
+
"valueKind": "object",
|
|
12284
|
+
"description": "Caminho row.<campo> ou expressao Json Logic para serie de pontos em line, area ou column.",
|
|
12285
|
+
"intentExamples": [
|
|
12286
|
+
"row.trend",
|
|
12287
|
+
"row.historicoMensal"
|
|
12288
|
+
]
|
|
12289
|
+
},
|
|
12290
|
+
{
|
|
12291
|
+
"path": "fieldMetadata[].presentation.visualization.segmentsExpr",
|
|
12292
|
+
"category": "behavior",
|
|
12293
|
+
"valueKind": "object",
|
|
12294
|
+
"description": "Caminho row.<campo> ou expressao Json Logic para lista de segmentos em stackedBar.",
|
|
12295
|
+
"intentExamples": [
|
|
12296
|
+
"row.capacitySegments",
|
|
12297
|
+
"row.distribuicao"
|
|
12298
|
+
]
|
|
12299
|
+
},
|
|
12300
|
+
{
|
|
12301
|
+
"path": "fieldMetadata[].presentation.visualization.itemsExpr",
|
|
12302
|
+
"category": "behavior",
|
|
12303
|
+
"valueKind": "object",
|
|
12304
|
+
"description": "Caminho row.<campo> ou expressao Json Logic para lista de etapas em processFlow.",
|
|
12305
|
+
"intentExamples": [
|
|
12306
|
+
"row.flowSteps",
|
|
12307
|
+
"row.etapasAprovacao"
|
|
12308
|
+
]
|
|
12309
|
+
},
|
|
12310
|
+
{
|
|
12311
|
+
"path": "fieldMetadata[].presentation.visualization.thresholds",
|
|
12312
|
+
"category": "appearance",
|
|
12313
|
+
"valueKind": "array",
|
|
12314
|
+
"description": "Faixas e limiares semanticos declarativos ({ value, min, max, tone, label }) para coloracao automatica e faixas qualitativas de bullet.",
|
|
12315
|
+
"intentExamples": [
|
|
12316
|
+
"[{ \"value\": 0, \"tone\": \"danger\" }, { \"value\": 60, \"tone\": \"warning\" }, { \"value\": 85, \"tone\": \"success\" }]"
|
|
12317
|
+
]
|
|
12318
|
+
},
|
|
12319
|
+
{
|
|
12320
|
+
"path": "fieldMetadata[].presentation.visualization.stepLabelLineClamp",
|
|
12321
|
+
"category": "layout",
|
|
12322
|
+
"valueKind": "number",
|
|
12323
|
+
"description": "Numero maximo de linhas (1 ou 2) para rotulos de etapas em processFlow."
|
|
12324
|
+
},
|
|
12325
|
+
{
|
|
12326
|
+
"path": "fieldMetadata[].presentation.visualization.ariaLabel",
|
|
12327
|
+
"category": "accessibility",
|
|
12328
|
+
"valueKind": "string",
|
|
12329
|
+
"description": "Rotulo acessivel explicito da micro visualizacao."
|
|
12330
|
+
},
|
|
12331
|
+
{
|
|
12332
|
+
"path": "fieldMetadata[].presentation.visualization.ariaLabelExpr",
|
|
12333
|
+
"category": "accessibility",
|
|
12334
|
+
"valueKind": "object",
|
|
12335
|
+
"description": "Caminho row.<campo> ou expressao Json Logic para compor o rotulo acessivel por linha."
|
|
12336
|
+
},
|
|
10979
12337
|
{
|
|
10980
12338
|
"path": "fieldMetadata[].presentation.visualization.fallbackText",
|
|
10981
12339
|
"category": "accessibility",
|
|
@@ -10983,6 +12341,12 @@
|
|
|
10983
12341
|
"description": "Texto equivalente obrigatorio para fallback, exportacao e leitores de tela.",
|
|
10984
12342
|
"safetyNotes": "Deve explicar valor, unidade, meta, tendencia ou estado quando aplicavel."
|
|
10985
12343
|
},
|
|
12344
|
+
{
|
|
12345
|
+
"path": "fieldMetadata[].presentation.visualization.fallbackTextExpr",
|
|
12346
|
+
"category": "accessibility",
|
|
12347
|
+
"valueKind": "object",
|
|
12348
|
+
"description": "Caminho row.<campo> ou expressao Json Logic para gerar o fallback textual dinamico por linha."
|
|
12349
|
+
},
|
|
10986
12350
|
{
|
|
10987
12351
|
"path": "fieldMetadata[].presentationRules",
|
|
10988
12352
|
"category": "appearance",
|
|
@@ -11031,6 +12395,30 @@
|
|
|
11031
12395
|
"exibir como porcentagem"
|
|
11032
12396
|
]
|
|
11033
12397
|
},
|
|
12398
|
+
{
|
|
12399
|
+
"path": "fieldMetadata[].inlineVisualStyle",
|
|
12400
|
+
"category": "appearance",
|
|
12401
|
+
"valueKind": "enum",
|
|
12402
|
+
"allowedValues": [
|
|
12403
|
+
"compact",
|
|
12404
|
+
"graphic"
|
|
12405
|
+
],
|
|
12406
|
+
"description": "Estilo visual para controles numericos percentuais inline (compact: pilula liquida com micro-anel e popover; graphic: card expandido com donut, trilho graduado e presets).",
|
|
12407
|
+
"intentExamples": [
|
|
12408
|
+
"usar percentual compacto na barra",
|
|
12409
|
+
"exibir card grafico de percentual"
|
|
12410
|
+
]
|
|
12411
|
+
},
|
|
12412
|
+
{
|
|
12413
|
+
"path": "fieldMetadata[].percentPresets",
|
|
12414
|
+
"category": "data",
|
|
12415
|
+
"valueKind": "array",
|
|
12416
|
+
"description": "Lista de percentuais rapidos exibidos nos botoes de preset do Percent Studio (ex.: [0, 25, 50, 75, 100]).",
|
|
12417
|
+
"intentExamples": [
|
|
12418
|
+
"atalhos de percentual 10, 25, 50 e 100%",
|
|
12419
|
+
"definir presets de porcentagem"
|
|
12420
|
+
]
|
|
12421
|
+
},
|
|
11034
12422
|
{
|
|
11035
12423
|
"path": "fieldMetadata[].validators",
|
|
11036
12424
|
"category": "validation",
|
|
@@ -12696,9 +14084,9 @@
|
|
|
12696
14084
|
{
|
|
12697
14085
|
"chunkIndex": 8,
|
|
12698
14086
|
"chunkKind": "capabilities",
|
|
12699
|
-
"content": "Schema Capability:\n - Path: fieldMetadata[].iconFontSize\n Category: appearance\n Kind: string\n Description: Tamanho tipográfico do ícone principal.\n\nSchema Capability:\n - Path: fieldMetadata[].valuePresentation\n Category: appearance\n Kind: object\n Description: Formato canonico de exibicao em superficies readonly/display, como moeda, numero, percentual, data, datetime, time e boolean.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation\n Category: appearance\n Kind: object\n Description: Estado visual semantico base para presentationMode, incluindo presenter, tone, icon, label, badge, tooltip, appearance e formatter opcional.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.presenter\n Category: appearance\n Kind: enum\n Description: Tipo semantico de renderizacao em modo apresentacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.tone\n Category: appearance\n Kind: enum\n Description: Tom semantico mapeado pelo consumidor para tokens de tema.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.appearance\n Category: appearance\n Kind: enum\n Description: Nivel de enfase visual do apresentador.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.icon\n Category: appearance\n Kind: string\n Description: Nome de icone Material Symbols usado pelo apresentador semantico.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.label\n Category: identity\n Kind: string\n Description: Rotulo semantico exibido por apresentadores como status, badge ou chip.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.badge\n Category: appearance\n Kind: string\n Description: Marcador secundario opcional exibido junto ao valor em superficies de apresentacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.prefix\n Category: appearance\n Kind: string\n Description: Prefixo visual readonly aplicado ao valor apresentado, sem alterar payload, filtros, ordenacao ou exportacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.suffix\n Category: appearance\n Kind: string\n Description: Sufixo visual readonly aplicado ao valor apresentado, sem alterar payload, filtros, ordenacao ou exportacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.valuePresentation\n Category: appearance\n Kind: object\n Description: Override de formatacao aplicado apenas pela superficie de apresentacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization\n Category: appearance\n Kind: object\n Description: Micro visualizacao renderer-neutral para superficies compactas como tabela, lista, header, card e form read-only.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.kind\n Category: appearance\n Kind: enum\n Description: Tipo semantico da micro visualizacao de apresentacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.surface\n Category: layout\n Kind: enum\n Description: Superficie alvo usada para aplicar regras de densidade e fallback.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.size\n Category: layout\n Kind: enum\n Description: Tamanho semantico da micro visualizacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.
|
|
14087
|
+
"content": "Schema Capability:\n - Path: fieldMetadata[].iconFontSize\n Category: appearance\n Kind: string\n Description: Tamanho tipográfico do ícone principal.\n\nSchema Capability:\n - Path: fieldMetadata[].valuePresentation\n Category: appearance\n Kind: object\n Description: Formato canonico de exibicao em superficies readonly/display, como moeda, numero, percentual, data, datetime, time e boolean.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation\n Category: appearance\n Kind: object\n Description: Estado visual semantico base para presentationMode, incluindo presenter, tone, icon, label, badge, tooltip, appearance e formatter opcional.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.presenter\n Category: appearance\n Kind: enum\n Description: Tipo semantico de renderizacao em modo apresentacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.tone\n Category: appearance\n Kind: enum\n Description: Tom semantico mapeado pelo consumidor para tokens de tema.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.appearance\n Category: appearance\n Kind: enum\n Description: Nivel de enfase visual do apresentador.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.icon\n Category: appearance\n Kind: string\n Description: Nome de icone Material Symbols usado pelo apresentador semantico.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.label\n Category: identity\n Kind: string\n Description: Rotulo semantico exibido por apresentadores como status, badge ou chip.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.badge\n Category: appearance\n Kind: string\n Description: Marcador secundario opcional exibido junto ao valor em superficies de apresentacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.prefix\n Category: appearance\n Kind: string\n Description: Prefixo visual readonly aplicado ao valor apresentado, sem alterar payload, filtros, ordenacao ou exportacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.suffix\n Category: appearance\n Kind: string\n Description: Sufixo visual readonly aplicado ao valor apresentado, sem alterar payload, filtros, ordenacao ou exportacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.valuePresentation\n Category: appearance\n Kind: object\n Description: Override de formatacao aplicado apenas pela superficie de apresentacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization\n Category: appearance\n Kind: object\n Description: Micro visualizacao renderer-neutral para superficies compactas como tabela, lista, header, card e form read-only.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.kind\n Category: appearance\n Kind: enum\n Description: Tipo semantico da micro visualizacao de apresentacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.surface\n Category: layout\n Kind: enum\n Description: Superficie alvo usada para aplicar regras de densidade e fallback.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.size\n Category: layout\n Kind: enum\n Description: Tamanho semantico da micro visualizacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.scaleScope\n Category: layout\n Kind: enum\n Description: Escopo de normalizacao de escala para series e valores em colecoes: row (local por linha) ou page (sincronizado na pagina visivel).\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.tone\n Category: appearance\n Kind: enum\n Description: Tom semantico estatico da micro visualizacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.toneExpr\n Category: appearance\n Kind: object\n Description: Expressao Json Logic ou caminho row.<campo> para resolver dinamicamente o tom semantico da micro visualizacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.valueExpr\n Category: behavior\n Kind: object\n Description: Caminho row.<campo> ou expressao Json Logic para obter o valor principal da micro visualizacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.valueSuffix\n Category: appearance\n Kind: string\n Description: Sufixo de unidade anexado ao valor numerico formatado (ex: \"%\", \" pts\", \" ms\", \" d\").\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.compactValue\n Category: appearance\n Kind: boolean\n Description: Formata valores numericos em notacao compacta (ex: 1.2M, 45.3K) para celulas densas.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.min\n Category: behavior\n Kind: number\n Description: Limite minimo explicito da escala numerica.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.max\n Category: behavior\n Kind: number\n Description: Limite maximo explicito da escala numerica.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.total\n Category: behavior\n Kind: number\n Description: Total explicito para proporcionalidade em stackedBar ou radial.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.target\n Category: behavior\n Kind: number\n Description: Meta fixa para comparacao em bullet.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.targetExpr\n Category: behavior\n Kind: object\n Description: Caminho row.<campo> ou expressao Json Logic para obter a meta por linha em bullet.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.baseline\n Category: behavior\n Kind: number\n Description: Valor de referencia fixo para comparison ou delta.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.baselineExpr\n Category: behavior\n Kind: object\n Description: Caminho row.<campo> ou expressao Json Logic para obter o valor de referencia (baseline) por linha em comparison ou delta.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.pointsExpr\n Category: behavior\n Kind: object\n Description: Caminho row.<campo> ou expressao Json Logic para serie de pontos em line, area ou column.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.segmentsExpr\n Category: behavior\n Kind: object\n Description: Caminho row.<campo> ou expressao Json Logic para lista de segmentos em stackedBar.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.itemsExpr\n Category: behavior\n Kind: object\n Description: Caminho row.<campo> ou expressao Json Logic para lista de etapas em processFlow.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.thresholds\n Category: appearance\n Kind: array\n Description: Faixas e limiares semanticos declarativos ({ value, min, max, tone, label }) para coloracao automatica e faixas qualitativas de bullet.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.stepLabelLineClamp\n Category: layout\n Kind: number\n Description: Numero maximo de linhas (1 ou 2) para rotulos de etapas em processFlow.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.ariaLabel\n Category: accessibility\n Kind: string\n Description: Rotulo acessivel explicito da micro visualizacao.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.ariaLabelExpr\n Category: accessibility\n Kind: object\n Description: Caminho row.<campo> ou expressao Json Logic para compor o rotulo acessivel por linha.\n\nSchema Capability:\n - Path: fieldMetadata[].presentation.visualization.fallbackText\n Category: accessibility\n Kind: string\n Description: Texto equivalente obrigatorio para fallback, exportacao e leitores de tela.",
|
|
12700
14088
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
|
|
12701
|
-
"contentHash": "
|
|
14089
|
+
"contentHash": "dc6be0dc67a901095196573bc7a8f81c4cae31110aa85265ef4ff6e1646b940b",
|
|
12702
14090
|
"sourceKind": "component_definition",
|
|
12703
14091
|
"sourceId": "praxis-dynamic-form-dialog-host",
|
|
12704
14092
|
"corpusVersion": "1.0.0"
|
|
@@ -12706,9 +14094,9 @@
|
|
|
12706
14094
|
{
|
|
12707
14095
|
"chunkIndex": 9,
|
|
12708
14096
|
"chunkKind": "capabilities",
|
|
12709
|
-
"content": "Schema Capability:\n - Path: fieldMetadata[].
|
|
14097
|
+
"content": "Schema Capability:\n - Path: fieldMetadata[].presentation.visualization.fallbackTextExpr\n Category: accessibility\n Kind: object\n Description: Caminho row.<campo> ou expressao Json Logic para gerar o fallback textual dinamico por linha.\n\nSchema Capability:\n - Path: fieldMetadata[].presentationRules\n Category: appearance\n Kind: array\n Description: Regras Json Logic ordenadas que sobrescrevem presentation em modo readonly/display; regras posteriores que casam vencem.\n\nSchema Capability:\n - Path: fieldMetadata[].presentationRules[].when\n Category: behavior\n Kind: object\n Description: Guarda Json Logic avaliada contra o contexto de apresentacao do campo.\n\nSchema Capability:\n - Path: fieldMetadata[].presentationRules[].set\n Category: appearance\n Kind: object\n Description: Patch semantico aplicado sobre presentation quando a guarda for verdadeira.\n\nSchema Capability:\n - Path: fieldMetadata[].mask\n Category: appearance\n Kind: string\n Description: Máscara de input (padrão do componente).\n\nSchema Capability:\n - Path: fieldMetadata[].format\n Category: appearance\n Kind: string\n Description: Formato de exibição (ex: pipes).\n\nSchema Capability:\n - Path: fieldMetadata[].inlineVisualStyle\n Category: appearance\n Kind: enum\n Description: Estilo visual para controles numericos percentuais inline (compact: pilula liquida com micro-anel e popover; graphic: card expandido com donut, trilho graduado e presets).\n\nSchema Capability:\n - Path: fieldMetadata[].percentPresets\n Category: data\n Kind: array\n Description: Lista de percentuais rapidos exibidos nos botoes de preset do Percent Studio (ex.: [0, 25, 50, 75, 100]).\n\nSchema Capability:\n - Path: fieldMetadata[].validators\n Category: validation\n Kind: object\n Description: Objeto contendo todas as regras de validação.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.required\n Category: validation\n Kind: boolean\n Description: Campo obrigatório.\n\nSchema Capability:\n - Path: fieldMetadata[].required\n Category: validation\n Kind: boolean\n Description: Campo obrigatório (alias rápido do validators.required).\n\nSchema Capability:\n - Path: fieldMetadata[].validators.requiredMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para required.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.email\n Category: validation\n Kind: boolean\n Description: Validação de formato de e-mail.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.emailMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para validação de email.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.minLength\n Category: validation\n Kind: number\n Description: Comprimento mínimo do texto.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.minLengthMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para minLength.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.maxLength\n Category: validation\n Kind: number\n Description: Comprimento máximo do texto.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.maxLengthMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para maxLength.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.min\n Category: validation\n Kind: number\n Description: Valor numérico mínimo.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.minMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para min.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.max\n Category: validation\n Kind: number\n Description: Valor numérico máximo.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.maxMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para max.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.pattern\n Category: validation\n Kind: string\n Description: Regex para validação.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.patternMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para pattern.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.cpf\n Category: validation\n Kind: boolean\n Description: Validador de CPF (legado).\n\nSchema Capability:\n - Path: fieldMetadata[].validators.cnpj\n Category: validation\n Kind: boolean\n Description: Validador de CNPJ (legado).\n\nSchema Capability:\n - Path: fieldMetadata[].validators.cpfCnpj\n Category: validation\n Kind: boolean\n Description: Validador automatico CPF/CNPJ (legado).\n\nSchema Capability:\n - Path: fieldMetadata[].validators.cnpjAlpha\n Category: validation\n Kind: boolean\n Description: Validador de CNPJ alfanumerico (legado).\n\nSchema Capability:\n - Path: fieldMetadata[].validators.cpfMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para CPF.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.cnpjMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para CNPJ.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.cnpjAlphaMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para CNPJ alfanumerico.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.url\n Category: validation\n Kind: boolean\n Description: Validador de URL.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.urlMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para URL.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.minWords\n Category: validation\n Kind: number\n Description: Mínimo de palavras.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.requiredChecked\n Category: validation\n Kind: boolean\n Description: Exige checkbox marcado (ex: termos de uso).\n\nSchema Capability:\n - Path: fieldMetadata[].validators.customValidator\n Category: validation\n Kind: expression\n Description: Validador customizado (função).\n\nSchema Capability:\n - Path: fieldMetadata[].validators.asyncValidator\n Category: validation\n Kind: expression\n Description: Validador async customizado (função).\n\nSchema Capability:\n - Path: fieldMetadata[].validators.matchField\n Category: validation\n Kind: string\n Description: Campo que deve coincidir (cross-field).\n\nSchema Capability:\n - Path: fieldMetadata[].validators.matchFieldMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para matchField.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.uniqueValidator\n Category: validation\n Kind: expression\n Description: Validador de unicidade via API (função).\n\nSchema Capability:\n - Path: fieldMetadata[].validators.uniqueMessage\n Category: validation\n Kind: string\n Description: Mensagem customizada para unicidade.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.conditionalValidation\n Category: validation\n Kind: array\n Description: Regras de validação condicional.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.conditionalValidation[].condition\n Category: validation\n Kind: expression\n Description: Condicao para aplicar validadores.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.conditionalValidation[].validators\n Category: validation\n Kind: object\n Description: Conjunto de validadores aplicados quando a condicao for verdadeira.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.validationTrigger\n Category: validation\n Kind: enum\n Description: Gatilho de validação no validator.\n\nSchema Capability:\n - Path: fieldMetadata[].validators.validationDebounce\n Category: validation\n Kind: number\n Description: Debounce de validação no validator (ms).",
|
|
12710
14098
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
|
|
12711
|
-
"contentHash": "
|
|
14099
|
+
"contentHash": "1e418f6ed02cbfa86ec339516bc55adf540acfabcf2fa04fda54ccf2e15c1843",
|
|
12712
14100
|
"sourceKind": "component_definition",
|
|
12713
14101
|
"sourceId": "praxis-dynamic-form-dialog-host",
|
|
12714
14102
|
"corpusVersion": "1.0.0"
|
|
@@ -12716,9 +14104,9 @@
|
|
|
12716
14104
|
{
|
|
12717
14105
|
"chunkIndex": 10,
|
|
12718
14106
|
"chunkKind": "capabilities",
|
|
12719
|
-
"content": "Schema Capability:\n - Path: fieldMetadata[].
|
|
14107
|
+
"content": "Schema Capability:\n - Path: fieldMetadata[].validators.showInlineErrors\n Category: validation\n Kind: boolean\n Description: Exibe erros inline (validator).\n\nSchema Capability:\n - Path: fieldMetadata[].validators.errorPosition\n Category: validation\n Kind: enum\n Description: Posicao do erro (validator).\n\nSchema Capability:\n - Path: fieldMetadata[].validationMode\n Category: validation\n Kind: enum\n Description: Gatilho da validação (change/blur/submit).\n\nSchema Capability:\n - Path: fieldMetadata[].debounceTime\n Category: validation\n Kind: number\n Description: Debounce para validação em ms.\n\nSchema Capability:\n - Path: fieldMetadata[].options\n Category: data\n Kind: array\n Description: Array de opções conforme controlType (ex.: { key, value } ou { value, text/display }).\n\nSchema Capability:\n - Path: fieldMetadata[].endpoint\n Category: data\n Kind: string\n Description: URL para carregar opções remotas.\n\nSchema Capability:\n - Path: fieldMetadata[].valueField\n Category: data\n Kind: string\n Description: Nome da propriedade de valor nas opções.\n\nSchema Capability:\n - Path: fieldMetadata[].displayField\n Category: data\n Kind: string\n Description: Nome da propriedade de texto nas opções.\n\nSchema Capability:\n - Path: fieldMetadata[].filterField\n Category: data\n Kind: string\n Description: Campo para filtragem no backend.\n\nSchema Capability:\n - Path: fieldMetadata[].queryParams\n Category: data\n Kind: object\n Description: Parâmetros fixos para a query do endpoint.\n\nSchema Capability:\n - Path: fieldMetadata[].cacheDuration\n Category: data\n Kind: number\n Description: Duração do cache de dados em ms.\n\nSchema Capability:\n - Path: fieldMetadata[].hidden\n Category: behavior\n Kind: boolean\n Description: Oculta o campo globalmente.\n\nSchema Capability:\n - Path: fieldMetadata[].visibleIn\n Category: behavior\n Kind: array\n Description: Contextos onde o campo é visível.\n\nSchema Capability:\n - Path: fieldMetadata[].formHidden\n Category: behavior\n Kind: boolean\n Description: Oculta apenas no formulário.\n\nSchema Capability:\n - Path: fieldMetadata[].tableHidden\n Category: behavior\n Kind: boolean\n Description: Oculta apenas na tabela.\n\nSchema Capability:\n - Path: fieldMetadata[].filterHidden\n Category: behavior\n Kind: boolean\n Description: Oculta apenas no filtro.\n\nSchema Capability:\n - Path: fieldMetadata[].fieldAccess\n Category: behavior\n Kind: object\n Description: Politica canonica de UX para visibilidade/edicao por authorities publicadas pelo backend.\n\nSchema Capability:\n - Path: fieldMetadata[].fieldAccess.visibleForAuthorities\n Category: behavior\n Kind: array\n Description: Authorities que podem ver o campo no runtime quando a UX tiver claims explicitas.\n\nSchema Capability:\n - Path: fieldMetadata[].fieldAccess.editableForAuthorities\n Category: behavior\n Kind: array\n Description: Authorities que podem editar o campo no runtime quando a UX tiver claims explicitas.\n\nSchema Capability:\n - Path: fieldMetadata[].fieldAccess.reason\n Category: misc\n Kind: string\n Description: Justificativa explicativa/auditavel da politica de acesso do campo.\n\nSchema Capability:\n - Path: fieldMetadata[].dependencyFields\n Category: dependency\n Kind: array\n Description: Campos dos quais este campo depende.\n\nSchema Capability:\n - Path: fieldMetadata[].conditionalRequired\n Category: dependency\n Kind: expression\n Description: Condição Json Logic para obrigatoriedade declarativa.\n\nSchema Capability:\n - Path: fieldMetadata[].conditionalDisplay\n Category: dependency\n Kind: expression\n Description: Condição Json Logic para visibilidade declarativa.\n\nSchema Capability:\n - Path: fieldMetadata[].dependencyFilterMap\n Category: dependency\n Kind: object\n Description: Mapeamento de filtro baseado na dependência.\n\nSchema Capability:\n - Path: fieldMetadata[].dependencyValuePath\n Category: dependency\n Kind: string\n Description: Caminho no valor da dependência.\n\nSchema Capability:\n - Path: fieldMetadata[].dependencyMergeStrategy\n Category: dependency\n Kind: enum\n Description: Estratégia de merge dos dados carregados.\n\nSchema Capability:\n - Path: fieldMetadata[].dependencyLoadOnChange\n Category: dependency\n Kind: enum\n Description: Quando recarregar dependência.\n\nSchema Capability:\n - Path: fieldMetadata[].resetOnDependentChange\n Category: dependency\n Kind: boolean\n Description: Zera valor se dependência mudar.\n\nSchema Capability:\n - Path: fieldMetadata[].enableDependencyCascade\n Category: dependency\n Kind: boolean\n Description: Habilita/desabilita cascata nativa de dependências entre campos.\n\nSchema Capability:\n - Path: fieldMetadata[].dependencyDebounceMs\n Category: dependency\n Kind: number\n Description: Delay para reagir à mudança de dependência.\n\nSchema Capability:\n - Path: fieldMetadata[].suppressInlineErrorsOnCascade\n Category: dependency\n Kind: boolean\n Description: Suprime erros inline durante cascata.\n\nSchema 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).",
|
|
12720
14108
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
|
|
12721
|
-
"contentHash": "
|
|
14109
|
+
"contentHash": "f5e8c17c1a6e0f3ab98cc132d55ffcf4067ebed9ff5d23daf3d63dbc9072f4ca",
|
|
12722
14110
|
"sourceKind": "component_definition",
|
|
12723
14111
|
"sourceId": "praxis-dynamic-form-dialog-host",
|
|
12724
14112
|
"corpusVersion": "1.0.0"
|
|
@@ -12726,9 +14114,9 @@
|
|
|
12726
14114
|
{
|
|
12727
14115
|
"chunkIndex": 11,
|
|
12728
14116
|
"chunkKind": "capabilities",
|
|
12729
|
-
"content": "Component Capability:\n - Path: inputs.
|
|
14117
|
+
"content": "Component Capability:\n - Path: inputs.schemaUrl\n Category: inputs\n Kind: string\n Description: Schema canonico explicito publicado pelo backend para hosts que seguem surfaces/actions/capabilities.\n\nComponent Capability:\n - Path: inputs.readUrl\n Category: inputs\n Kind: string\n Description: Endpoint canonico de leitura publicado por surface VIEW/READ_PROJECTION para hidratar a entidade exibida.\n\nComponent Capability:\n - Path: inputs.apiEndpointKey\n Category: inputs\n Kind: string\n Description: Endpoint canonico usado para resolver schemaUrl, readUrl e submitUrl relativos em hosts destacados.\n\nComponent Capability:\n - Path: inputs.submitUrl\n Category: inputs\n Kind: string\n Description: Endpoint canonico de submit publicado por surface/action.\n\nComponent Capability:\n - Path: inputs.submitMethod\n Category: inputs\n Kind: enum\n Description: Metodo HTTP canonico para o submit quando o backend publica operacao explicita.\n\nComponent Capability:\n - Path: inputs.submitIdempotencyKey\n Category: inputs\n Kind: string\n Description: Identidade estavel da tentativa de comando, materializada a partir da politica execution da action.\n\nComponent Capability:\n - Path: inputs.submitCorrelationId\n Category: inputs\n Kind: string\n Description: Identificador de correlacao governado para rastreabilidade ponta a ponta do comando.\n\nComponent Capability:\n - Path: inputs.submitResourceVersion\n Category: inputs\n Kind: string\n Description: Versao persistida esperada, transportada como If-Match quando exigida pela action.\n\nComponent Capability:\n - Path: inputs.submitResourceVersionTargetResourceKey\n Category: inputs\n Kind: string\n Description: Resource key canônico materializado pela action para resolver o ETag de outro agregado no momento do submit.\n\nComponent Capability:\n - Path: inputs.submitResourceVersionTargetIdField\n Category: inputs\n Kind: string\n Description: Campo exato do request que identifica o agregado cujo ETag governa a action.\n\nComponent Capability:\n - Path: inputs.responseSchemaUrl\n Category: inputs\n Kind: string\n Description: Schema de resposta publicado pelo backend para inspeção diagnostica/read-only do host.\n\nComponent Capability:\n - Path: inputs.enableCustomization\n Category: inputs\n Kind: boolean\n Description: Habilita a edicao de layout/configuracao no editor.\n\nComponent Capability:\n - Path: inputs.showAiAssistant\n Category: inputs\n Kind: boolean\n Description: Mostra os gatilhos do copiloto semantico Praxis para a instancia do formulario.\n\nComponent Capability:\n - Path: inputs.formId\n Category: inputs\n Kind: string\n Description: ID persistente para salvar configuracoes e preferencias.\n\nComponent Capability:\n - Path: inputs.editorialContext\n Category: inputs\n Kind: object\n Description: Override de contexto editorial fornecido pelo host para os blocos hospedados antes/depois do formulario.\n\nComponent Capability:\n - Path: inputs.layout\n Category: inputs\n Kind: object\n Description: Layout legado (FormLayout). Preferir inputs.config + sections.\n\nComponent Capability:\n - Path: inputs.generatedLayoutPreset\n Category: inputs\n Kind: enum\n Description: Preset usado somente na criacao inicial de FormConfig a partir de schema/metadata.\n\nComponent Capability:\n - Path: inputs.configPersistenceStrategy\n Category: inputs\n Kind: enum\n Description: Define se preferências locais persistidas ou o contrato explícito do host governam a materialização corrente.\n\nComponent Capability:\n - Path: inputs.layoutPolicy\n Category: inputs\n Kind: object\n Description: Politica opt-in para materializar layout diretamente do schema atual sem depender de FormConfig.sections authoradas.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.source\n Category: inputs\n Kind: enum\n Description: Define se o layout vem de configuracao authorada ou do schema.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.preset\n Category: inputs\n Kind: enum\n Description: Preset de layout schema-driven. compactPresentation cobre detalhe read-only; groupedCommand cobre create/edit.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.intent\n Category: inputs\n Kind: enum\n Description: Intencao da surface: detalhe/apresentacao ou comando/editavel.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.lifecycle\n Category: inputs\n Kind: enum\n Description: Ciclo de materializacao do layout schema-driven.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.persistence\n Category: inputs\n Kind: enum\n Description: Define se sections geradas sao transient ou podem virar layout authorado apos detach explicito.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.groupedCommand.orphanFieldExpansion\n Category: inputs\n Kind: enum\n Description: Define como uma linha groupedCommand com um unico campo usa o espaco restante. O default medium-and-wide expande spans 6 ou 8 e preserva campos compactos.\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 cada linha visual parcial, depois de resolver visibilidade responsiva, CSS order e wrap, preserva os spans canônicos ou redistribui apenas campos compatíveis para completar 12 colunas no breakpoint atual.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary\n Category: inputs\n Kind: object\n Description: Politica declarativa para resumo read-only compacto em compactPresentation, sem FormConfig.sections locais.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.includeFields\n Category: inputs\n Kind: array\n Description: Lista de campos canônicos do schema que devem entrar no resumo read-only compacto.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.excludeFields\n Category: inputs\n Kind: array\n Description: Lista de campos canônicos do schema que devem ficar fora do resumo read-only compacto.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.includeGroups\n Category: inputs\n Kind: array\n Description: Lista de grupos do schema que devem entrar no resumo read-only compacto.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.excludeGroups\n Category: inputs\n Kind: array\n Description: Lista de grupos do schema que devem ficar fora do resumo read-only compacto.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.includeRoles\n Category: inputs\n Kind: array\n Description: Lista de papeis semanticos de campo que devem entrar no resumo read-only compacto.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.excludeRoles\n Category: inputs\n Kind: array\n Description: Lista de papeis semanticos de campo que devem ficar fora do resumo read-only compacto.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.maxFields\n Category: inputs\n Kind: number\n Description: Limite maximo de campos materializados no primeiro painel compacto.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.fieldPriority\n Category: inputs\n Kind: object\n Description: Mapa campo -> prioridade para ordenar campos do resumo quando o schema publica candidatos suficientes.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.groupPriority\n Category: inputs\n Kind: object\n Description: Mapa grupo -> prioridade para ordenar grupos do resumo quando o schema publica agrupamento semantico.",
|
|
12730
14118
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
|
|
12731
|
-
"contentHash": "
|
|
14119
|
+
"contentHash": "fb0074203e0a6e14fec64b7a21f0d85f815714122bb49a18404c5e5c64904c4c",
|
|
12732
14120
|
"sourceKind": "component_definition",
|
|
12733
14121
|
"sourceId": "praxis-dynamic-form-dialog-host",
|
|
12734
14122
|
"corpusVersion": "1.0.0"
|
|
@@ -12736,15 +14124,25 @@
|
|
|
12736
14124
|
{
|
|
12737
14125
|
"chunkIndex": 12,
|
|
12738
14126
|
"chunkKind": "capabilities",
|
|
12739
|
-
"content": "Component Capability:\n - Path: inputs.
|
|
14127
|
+
"content": "Component Capability:\n - Path: inputs.layoutPolicy.detailSummary.columns\n Category: inputs\n Kind: number\n Description: Quantidade base de colunas para distribuir campos de resumo schema-driven sem criar FormConfig.sections locais.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.responsiveColumns\n Category: inputs\n Kind: object\n Description: Mapa de colunas por breakpoint xs/sm/md/lg/xl para detalhes read-only compactos em drawers, side sheets e desktop largo.\n\nComponent Capability:\n - Path: inputs.layoutPolicy.detailSummary.widthPrecedence\n Category: inputs\n Kind: enum\n Description: Define se larguras explicitas do schema ou a densidade do resumo controlam os spans no compactPresentation read-only.\n\nComponent Capability:\n - Path: inputs.fieldIconPolicy\n Category: inputs\n Kind: enum\n Description: Controla se icones prefix/suffix dos metadados aparecem em todos os modos, apenas apresentacao, ou nunca.\n\nComponent Capability:\n - Path: inputs.backConfig\n Category: inputs\n Kind: object\n Description: Configuracao de navegacao/retorno (BackConfig).\n\nComponent Capability:\n - Path: inputs.backConfig.strategy\n Category: inputs\n Kind: enum\n Description: Estrategia de retorno (auto/close/navigate).\n\nComponent Capability:\n - Path: inputs.backConfig.returnTo\n Category: inputs\n Kind: string\n Description: Rota para retornar quando strategy=navigate.\n\nComponent Capability:\n - Path: inputs.backConfig.confirmOnDirty\n Category: inputs\n Kind: boolean\n Description: Solicita confirmacao ao sair com mudancas nao salvas.\n\nComponent Capability:\n - Path: inputs.hooks\n Category: inputs\n Kind: object\n Description: Declaracoes de hooks fornecidas diretamente ao componente.\n\nComponent Capability:\n - Path: inputs.hooks.beforeInit[]\n Category: hooks\n Kind: array\n Description: Hooks executados antes da inicializacao.\n\nComponent Capability:\n - Path: inputs.hooks.afterInit[]\n Category: hooks\n Kind: array\n Description: Hooks executados apos a inicializacao.\n\nComponent Capability:\n - Path: inputs.hooks.beforeValidate[]\n Category: hooks\n Kind: array\n Description: Hooks executados antes da validacao.\n\nComponent Capability:\n - Path: inputs.hooks.afterValidate[]\n Category: hooks\n Kind: array\n Description: Hooks executados apos a validacao.\n\nComponent Capability:\n - Path: inputs.hooks.beforeSubmit[]\n Category: hooks\n Kind: array\n Description: Hooks executados antes do submit.\n\nComponent Capability:\n - Path: inputs.hooks.afterSubmit[]\n Category: hooks\n Kind: array\n Description: Hooks executados apos o submit.\n\nComponent Capability:\n - Path: inputs.hooks.onError[]\n Category: hooks\n Kind: array\n Description: Hooks executados em erros de submit/validacao.\n\nComponent Capability:\n - Path: inputs.removeEmptyContainersOnSave\n Category: inputs\n Kind: boolean\n Description: Remove containers vazios ao salvar configuracao.\n\nComponent Capability:\n - Path: inputs.reactiveValidation\n Category: inputs\n Kind: boolean\n Description: Ativa validacao reativa (afterValidate em valueChanges).\n\nComponent Capability:\n - Path: inputs.reactiveValidationDebounceMs\n Category: inputs\n Kind: number\n Description: Debounce em ms para validacao reativa.\n\nComponent Capability:\n - Path: inputs.notifyIfOutdated\n Category: inputs\n Kind: enum\n Description: Canal de notificacao para schema desatualizado.\n\nComponent Capability:\n - Path: inputs.snoozeMs\n Category: inputs\n Kind: number\n Description: Duracao do snooze para alertas de schema.\n\nComponent Capability:\n - Path: inputs.autoOpenSettingsOnOutdated\n Category: inputs\n Kind: boolean\n Description: Abre automaticamente o editor ao detectar schema desatualizado.\n\nComponent Capability:\n - Path: inputs.readonlyModeGlobal\n Category: inputs\n Kind: boolean\n Description: Forca modo somente leitura global.\n\nComponent Capability:\n - Path: inputs.disabledModeGlobal\n Category: inputs\n Kind: boolean\n Description: Forca modo desabilitado global.\n\nComponent Capability:\n - Path: inputs.presentationModeGlobal\n Category: inputs\n Kind: boolean\n Description: Ativa modo de apresentacao global (somente view).\n\nComponent Capability:\n - Path: inputs.visibleGlobal\n Category: inputs\n Kind: boolean\n Description: Forca visibilidade global dos campos.\n\nComponent Capability:\n - Path: inputs.customEndpoints\n Category: inputs\n Kind: object\n Description: Override de endpoints CRUD (EndpointConfig).\n\nComponent Capability:\n - Path: inputs.customEndpoints.getAll\n Category: inputs\n Kind: string\n Description: Endpoint customizado para listar registros.\n\nComponent Capability:\n - Path: inputs.customEndpoints.getById\n Category: inputs\n Kind: string\n Description: Endpoint customizado para obter registro por ID.\n\nComponent Capability:\n - Path: inputs.customEndpoints.create\n Category: inputs\n Kind: string\n Description: Endpoint customizado para criar registro.\n\nComponent Capability:\n - Path: inputs.customEndpoints.update\n Category: inputs\n Kind: string\n Description: Endpoint customizado para atualizar registro.\n\nComponent Capability:\n - Path: inputs.customEndpoints.delete\n Category: inputs\n Kind: string\n Description: Endpoint customizado para deletar registro.\n\nComponent Capability:\n - Path: inputs.customEndpoints.filter\n Category: inputs\n Kind: string\n Description: Endpoint customizado para filtro.\n\nComponent Capability:\n - Path: inputs.customEndpoints.schema\n Category: inputs\n Kind: string\n Description: Endpoint customizado para schemas.\n\nComponent Capability:\n - Path: inputs.config.presentation\n Category: appearance\n Kind: object\n Description: Preferencias visuais persistidas no config.\n\nComponent Capability:\n - Path: inputs.config.presentation.labelFontSize\n Category: appearance\n Kind: number\n Description: Tamanho da fonte do label (px).\n\nComponent Capability:\n - Path: inputs.config.presentation.valueFontSize\n Category: appearance\n Kind: number\n Description: Tamanho da fonte do valor (px).\n\nComponent Capability:\n - Path: inputs.config.presentation.labelPosition\n Category: appearance\n Kind: enum\n Description: Posicionamento do label (above/left).\n\nComponent Capability:\n - Path: inputs.config.presentation.compact\n Category: appearance\n Kind: boolean\n Description: Modo compacto de apresentacao.\n\nComponent Capability:\n - Path: inputs.config.presentation.density\n Category: appearance\n Kind: enum\n Description: Densidade visual global.\n\nComponent Capability:\n - Path: inputs.config.presentation.labelWidth\n Category: appearance\n Kind: number\n Description: Largura do label (px).\n\nComponent Capability:\n - Path: inputs.config.presentation.labelAlign\n Category: appearance\n Kind: enum\n Description: Alinhamento do label.\n\nComponent Capability:\n - Path: inputs.config.presentation.valueAlign\n Category: appearance\n Kind: enum\n Description: Alinhamento do valor.\n\nComponent Capability:\n - Path: outputs.formSubmit\n Category: outputs\n Kind: object\n Description: Evento emitido no submit do formulario.\n\nComponent Capability:\n - Path: outputs.formCancel\n Category: outputs\n Kind: object\n Description: Evento emitido ao cancelar.\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.",
|
|
12740
14128
|
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
|
|
12741
|
-
"contentHash": "
|
|
14129
|
+
"contentHash": "581cd896c206465873181d72b074d69d2bacefd3bae0bca8cc3db46a378af5d3",
|
|
12742
14130
|
"sourceKind": "component_definition",
|
|
12743
14131
|
"sourceId": "praxis-dynamic-form-dialog-host",
|
|
12744
14132
|
"corpusVersion": "1.0.0"
|
|
12745
14133
|
},
|
|
12746
14134
|
{
|
|
12747
14135
|
"chunkIndex": 13,
|
|
14136
|
+
"chunkKind": "capabilities",
|
|
14137
|
+
"content": "Component 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.",
|
|
14138
|
+
"sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/form-ai-capabilities.ts",
|
|
14139
|
+
"contentHash": "2ce7f5421defeaee7239892584b36760cd38d627750678d49068eaee9ecfd09c",
|
|
14140
|
+
"sourceKind": "component_definition",
|
|
14141
|
+
"sourceId": "praxis-dynamic-form-dialog-host",
|
|
14142
|
+
"corpusVersion": "1.0.0"
|
|
14143
|
+
},
|
|
14144
|
+
{
|
|
14145
|
+
"chunkIndex": 14,
|
|
12748
14146
|
"chunkKind": "context_pack",
|
|
12749
14147
|
"content": "{\"componentContext\":{\"version\":\"v1\",\"optionsByPath\":{},\"actionCatalog\":[{\"id\":\"inputs.formId.set\",\"intentExamples\":[\"form id\",\"formulario\",\"identificador\"],\"patchTemplate\":{\"inputs\":{\"formId\":\"{{value}}\"}}},{\"id\":\"inputs.resourcePath.set\",\"intentExamples\":[\"resource path\",\"endpoint\",\"api\"],\"patchTemplate\":{\"inputs\":{\"resourcePath\":\"{{value}}\"}}},{\"id\":\"inputs.mode.set\",\"intentExamples\":[\"modo\",\"mode\",\"create\",\"edit\",\"view\"],\"patchTemplate\":{\"inputs\":{\"mode\":\"{{value}}\"}}},{\"id\":\"inputs.schemaSource.set\",\"intentExamples\":[\"schema source\",\"schema\",\"resource\",\"filter\"],\"patchTemplate\":{\"inputs\":{\"schemaSource\":\"{{value}}\"}}},{\"id\":\"inputs.layoutPolicy.schemaDetail\",\"intentExamples\":[\"layout schema detail\",\"detalhe agrupado\",\"readonly agrupado\"],\"patchTemplate\":{\"inputs\":{\"layoutPolicy\":{\"source\":\"schema\",\"intent\":\"detail\",\"preset\":\"compactPresentation\",\"lifecycle\":\"live\",\"persistence\":\"transient\",\"schemaOperation\":\"detail\",\"schemaType\":\"response\"}}}},{\"id\":\"inputs.enableCustomization.enable\",\"intentExamples\":[\"enable edit\",\"modo edicao\",\"edit layout\"],\"patchTemplate\":{\"inputs\":{\"enableCustomization\":true}}},{\"id\":\"inputs.enableCustomization.disable\",\"intentExamples\":[\"disable edit\",\"somente leitura\",\"no edit\"],\"patchTemplate\":{\"inputs\":{\"enableCustomization\":false}}}],\"fieldResolvers\":{},\"hints\":[\"Dialog host: patches operate over inputs.*.\",\"Use mode=create|edit|view and schemaSource=resource|filter.\"]}}",
|
|
12750
14148
|
"sourcePointer": "projects/praxis-crud/src/lib/ai/dynamic-form-dialog-host-context-pack.ts",
|