@praxisui/manual-form 9.0.0-beta.86 → 9.0.0-beta.88

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.
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
- "generatedAt": "2026-07-22T03:01:56.888Z",
3
+ "generatedAt": "2026-07-23T02:50:28.389Z",
4
4
  "packageName": "@praxisui/manual-form",
5
- "packageVersion": "9.0.0-beta.86",
5
+ "packageVersion": "9.0.0-beta.88",
6
6
  "sourceRegistry": "praxis-component-registry-ingestion",
7
7
  "sourceRegistryVersion": "1.0.0",
8
8
  "componentCount": 1,
@@ -3402,6 +3402,42 @@
3402
3402
  "identityKeys": [
3403
3403
  "fieldName"
3404
3404
  ],
3405
+ "inputSchema": {
3406
+ "type": "object",
3407
+ "required": [
3408
+ "fieldName",
3409
+ "controlType"
3410
+ ],
3411
+ "properties": {
3412
+ "fieldName": {
3413
+ "type": "string"
3414
+ },
3415
+ "controlType": {
3416
+ "type": "string"
3417
+ },
3418
+ "label": {
3419
+ "type": "string"
3420
+ },
3421
+ "required": {
3422
+ "type": "boolean"
3423
+ },
3424
+ "sectionId": {
3425
+ "type": "string"
3426
+ },
3427
+ "source": {
3428
+ "enum": [
3429
+ "manual-template",
3430
+ "detected-component",
3431
+ "metadata-bridge"
3432
+ ]
3433
+ },
3434
+ "delegateFieldMetadataTo": {
3435
+ "enum": [
3436
+ "praxis-metadata-editor"
3437
+ ]
3438
+ }
3439
+ }
3440
+ },
3405
3441
  "failureModes": [
3406
3442
  "duplicate-manual-field-id",
3407
3443
  "control-type-not-discovered",
@@ -3479,6 +3515,23 @@
3479
3515
  "identityKeys": [
3480
3516
  "fieldName"
3481
3517
  ],
3518
+ "inputSchema": {
3519
+ "type": "object",
3520
+ "required": [
3521
+ "fieldName"
3522
+ ],
3523
+ "properties": {
3524
+ "fieldName": {
3525
+ "type": "string"
3526
+ },
3527
+ "removeFromLayout": {
3528
+ "type": "boolean"
3529
+ },
3530
+ "clearPersistedValue": {
3531
+ "type": "boolean"
3532
+ }
3533
+ }
3534
+ },
3482
3535
  "failureModes": [
3483
3536
  "manual-field-not-found",
3484
3537
  "field-still-referenced-by-layout",
@@ -3554,6 +3607,24 @@
3554
3607
  "identityKeys": [
3555
3608
  "fieldName"
3556
3609
  ],
3610
+ "inputSchema": {
3611
+ "type": "object",
3612
+ "required": [
3613
+ "fieldName",
3614
+ "label"
3615
+ ],
3616
+ "properties": {
3617
+ "fieldName": {
3618
+ "type": "string"
3619
+ },
3620
+ "label": {
3621
+ "type": "string"
3622
+ },
3623
+ "updatePlaceholderWhenEmpty": {
3624
+ "type": "boolean"
3625
+ }
3626
+ }
3627
+ },
3557
3628
  "failureModes": [
3558
3629
  "manual-field-not-found",
3559
3630
  "label-empty",
@@ -3642,6 +3713,35 @@
3642
3713
  "columnId",
3643
3714
  "fieldName"
3644
3715
  ],
3716
+ "inputSchema": {
3717
+ "type": "object",
3718
+ "minProperties": 1,
3719
+ "properties": {
3720
+ "usePathNames": {
3721
+ "type": "boolean"
3722
+ },
3723
+ "sections": {
3724
+ "type": "array"
3725
+ },
3726
+ "rows": {
3727
+ "type": "array"
3728
+ },
3729
+ "columns": {
3730
+ "type": "array"
3731
+ },
3732
+ "fieldOrder": {
3733
+ "type": "array",
3734
+ "items": {
3735
+ "type": "string"
3736
+ }
3737
+ },
3738
+ "delegateAdvancedFormConfigTo": {
3739
+ "enum": [
3740
+ "praxis-dynamic-form"
3741
+ ]
3742
+ }
3743
+ }
3744
+ },
3645
3745
  "failureModes": [
3646
3746
  "layout-field-reference-missing",
3647
3747
  "advanced-form-config-delegation-required",
@@ -3716,6 +3816,27 @@
3716
3816
  "identityKeys": [
3717
3817
  "formId"
3718
3818
  ],
3819
+ "inputSchema": {
3820
+ "type": "object",
3821
+ "minProperties": 1,
3822
+ "properties": {
3823
+ "enableCustomization": {
3824
+ "type": "boolean"
3825
+ },
3826
+ "editableFlags": {
3827
+ "type": "array",
3828
+ "items": {
3829
+ "enum": [
3830
+ "required",
3831
+ "readOnly",
3832
+ "hidden",
3833
+ "disabled",
3834
+ "openMetadataEditor"
3835
+ ]
3836
+ }
3837
+ }
3838
+ }
3839
+ },
3719
3840
  "failureModes": [
3720
3841
  "toolbar-disabled-with-required-bridge",
3721
3842
  "unsupported-toolbar-flag"
@@ -3799,6 +3920,32 @@
3799
3920
  "tenantId",
3800
3921
  "profileId"
3801
3922
  ],
3923
+ "inputSchema": {
3924
+ "type": "object",
3925
+ "required": [
3926
+ "enabled"
3927
+ ],
3928
+ "properties": {
3929
+ "enabled": {
3930
+ "type": "boolean"
3931
+ },
3932
+ "debounceMs": {
3933
+ "type": "number"
3934
+ },
3935
+ "storageKey": {
3936
+ "type": "string"
3937
+ },
3938
+ "namespace": {
3939
+ "type": "string"
3940
+ },
3941
+ "tenantId": {
3942
+ "type": "string"
3943
+ },
3944
+ "profileId": {
3945
+ "type": "string"
3946
+ }
3947
+ }
3948
+ },
3802
3949
  "failureModes": [
3803
3950
  "autosave-storage-missing",
3804
3951
  "unsafe-debounce",
@@ -3892,6 +4039,38 @@
3892
4039
  "formId",
3893
4040
  "action"
3894
4041
  ],
4042
+ "inputSchema": {
4043
+ "type": "object",
4044
+ "minProperties": 1,
4045
+ "properties": {
4046
+ "action": {
4047
+ "enum": [
4048
+ "submit",
4049
+ "saveDraft",
4050
+ "reset",
4051
+ "cancel",
4052
+ "custom"
4053
+ ]
4054
+ },
4055
+ "clearAfterSave": {
4056
+ "type": "boolean"
4057
+ },
4058
+ "focusFirstError": {
4059
+ "type": "boolean"
4060
+ },
4061
+ "scrollToErrors": {
4062
+ "type": "boolean"
4063
+ },
4064
+ "confirmOnUnsavedChanges": {
4065
+ "type": "boolean"
4066
+ },
4067
+ "delegateFormSubmitTo": {
4068
+ "enum": [
4069
+ "praxis-dynamic-form"
4070
+ ]
4071
+ }
4072
+ }
4073
+ },
3895
4074
  "failureModes": [
3896
4075
  "submit-action-unsupported",
3897
4076
  "advanced-form-submit-delegation-required",
@@ -3983,6 +4162,38 @@
3983
4162
  "fieldName",
3984
4163
  "openMode"
3985
4164
  ],
4165
+ "inputSchema": {
4166
+ "type": "object",
4167
+ "minProperties": 1,
4168
+ "properties": {
4169
+ "enabled": {
4170
+ "type": "boolean"
4171
+ },
4172
+ "fieldName": {
4173
+ "type": "string"
4174
+ },
4175
+ "openMode": {
4176
+ "enum": [
4177
+ "field-toolbar",
4178
+ "double-click",
4179
+ "programmatic"
4180
+ ]
4181
+ },
4182
+ "persistDraftAfterPatch": {
4183
+ "type": "boolean"
4184
+ },
4185
+ "delegateFieldMetadataTo": {
4186
+ "enum": [
4187
+ "praxis-metadata-editor"
4188
+ ]
4189
+ },
4190
+ "delegateControlDiscoveryTo": {
4191
+ "enum": [
4192
+ "praxis-dynamic-fields"
4193
+ ]
4194
+ }
4195
+ }
4196
+ },
3986
4197
  "failureModes": [
3987
4198
  "metadata-editor-unavailable",
3988
4199
  "field-metadata-delegation-required",
@@ -4342,6 +4553,86 @@
4342
4553
  {
4343
4554
  "chunkIndex": 6,
4344
4555
  "chunkKind": "authoring_manifest",
4556
+ "content": "{\"operationId\":\"manualField.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-manual-form\",\"ownerPackage\":\"@praxisui/manual-form\",\"configSchemaId\":\"ManualFormInstance\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Add manual field metadata Effects: compile-domain-patch. Add a manual text field for customer name. Add another customerName field with a different label.\",\"scope\":\"field\",\"target\":{\"kind\":\"manualField\",\"resolver\":\"manual-form-field-by-name\",\"required\":true},\"inputContract\":{\"required\":[\"fieldName\",\"controlType\"],\"properties\":[\"fieldName\",\"controlType\",\"label\",\"required\",\"sectionId\",\"source\",\"delegateFieldMetadataTo\"],\"semanticTerms\":[\"fieldName\",\"controlType\",\"label\",\"required\",\"sectionId\",\"source\",\"delegateFieldMetadataTo\",\"manual-template\",\"detected-component\",\"metadata-bridge\",\"praxis-metadata-editor\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"currentConfig.fieldMetadata\",\"currentFieldMetadata\",\"form\"],\"validators\":[{\"validatorId\":\"manual-field-id-unique\",\"level\":\"error\",\"code\":\"MANUAL_FORM_FIELD_ID_UNIQUE\",\"description\":\"Manual field names must be unique in the instance metadata map.\"},{\"validatorId\":\"control-type-discovered\",\"level\":\"error\",\"code\":\"MANUAL_FORM_CONTROL_TYPE_DISCOVERED\",\"description\":\"Control type must be discovered through dynamic-fields mappings or delegated discovery.\"},{\"validatorId\":\"host-template-field-exists\",\"level\":\"error\",\"code\":\"MANUAL_FORM_HOST_FIELD_EXISTS\",\"description\":\"Manual field metadata must correspond to a host template control or declared metadata bridge target.\"},{\"validatorId\":\"metadata-bridge-does-not-redefine-schema\",\"level\":\"error\",\"code\":\"MANUAL_FORM_METADATA_BRIDGE_SCHEMA_SAFE\",\"description\":\"Metadata bridge patches must not silently redefine backend schema or schema-driven FormConfig semantics.\"},{\"validatorId\":\"manual-form-round-trip\",\"level\":\"error\",\"code\":\"MANUAL_FORM_ROUND_TRIP\",\"description\":\"Open, edit, apply/save, reopen and runtime consume must preserve manual form config.\"}],\"preconditions\":[\"manual-form-instance-loaded\"],\"submissionImpact\":\"affects-schema-backed-data\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"add-text-field\",\"request\":\"Add a manual text field for customer name.\",\"operationId\":\"manualField.add\",\"params\":{\"fieldName\":\"customerName\",\"controlType\":\"input\",\"label\":\"Customer name\",\"source\":\"manual-template\",\"delegateFieldMetadataTo\":\"praxis-metadata-editor\"},\"isPositive\":true}],\"negativeExamples\":[{\"id\":\"reject-duplicate-field\",\"request\":\"Add another customerName field with a different label.\",\"operationId\":\"manualField.add\",\"params\":{\"fieldName\":\"customerName\",\"controlType\":\"input\",\"label\":\"Duplicate customer\"},\"isPositive\":false}]}",
4557
+ "sourcePointer": "projects/praxis-manual-form/src/lib/ai/praxis-manual-form-authoring-manifest.ts",
4558
+ "contentHash": "4eb6255754636c4069553ff544b43719fe82f576b63fee8da197f58c121b7c96",
4559
+ "sourceKind": "component_definition",
4560
+ "sourceId": "praxis-manual-form",
4561
+ "corpusVersion": "1.0.0"
4562
+ },
4563
+ {
4564
+ "chunkIndex": 7,
4565
+ "chunkKind": "authoring_manifest",
4566
+ "content": "{\"operationId\":\"manualField.remove\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-manual-form\",\"ownerPackage\":\"@praxisui/manual-form\",\"configSchemaId\":\"ManualFormInstance\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Remove manual field metadata Effects: compile-domain-patch. Remove the obsolete nickname field from the manual form. Remove email and clear its saved value without confirmation.\",\"scope\":\"field\",\"target\":{\"kind\":\"manualField\",\"resolver\":\"manual-form-field-by-name\",\"required\":true},\"inputContract\":{\"required\":[\"fieldName\"],\"properties\":[\"fieldName\",\"removeFromLayout\",\"clearPersistedValue\"],\"semanticTerms\":[\"fieldName\",\"removeFromLayout\",\"clearPersistedValue\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"currentConfig.fieldMetadata\",\"currentConfig.sections\",\"currentFieldMetadata\",\"form\"],\"validators\":[{\"validatorId\":\"manual-field-exists\",\"level\":\"error\",\"code\":\"MANUAL_FORM_FIELD_EXISTS\",\"description\":\"Target manual field must exist before patching or removing it.\"},{\"validatorId\":\"field-removal-confirmed\",\"level\":\"error\",\"code\":\"MANUAL_FORM_FIELD_REMOVAL_CONFIRMED\",\"description\":\"Removing a field or its persisted value requires explicit confirmation.\"},{\"validatorId\":\"layout-field-references-valid\",\"level\":\"error\",\"code\":\"MANUAL_FORM_LAYOUT_FIELD_REFERENCES_VALID\",\"description\":\"Layout field references must resolve to manual fields.\"},{\"validatorId\":\"manual-form-round-trip\",\"level\":\"error\",\"code\":\"MANUAL_FORM_ROUND_TRIP\",\"description\":\"Open, edit, apply/save, reopen and runtime consume must preserve manual form config.\"}],\"preconditions\":[\"manual-form-instance-loaded\",\"explicit-confirmation-provided\"],\"submissionImpact\":\"affects-schema-backed-data\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"remove-obsolete-field\",\"request\":\"Remove the obsolete nickname field from the manual form.\",\"operationId\":\"manualField.remove\",\"params\":{\"fieldName\":\"nickname\",\"removeFromLayout\":true,\"clearPersistedValue\":true},\"isPositive\":true}],\"negativeExamples\":[{\"id\":\"reject-unconfirmed-removal\",\"request\":\"Remove email and clear its saved value without confirmation.\",\"operationId\":\"manualField.remove\",\"params\":{\"fieldName\":\"email\",\"clearPersistedValue\":true},\"isPositive\":false}]}",
4567
+ "sourcePointer": "projects/praxis-manual-form/src/lib/ai/praxis-manual-form-authoring-manifest.ts",
4568
+ "contentHash": "ab01e30577d930ded56a131aec541dcece24a55a584c17acd995027a5f70888a",
4569
+ "sourceKind": "component_definition",
4570
+ "sourceId": "praxis-manual-form",
4571
+ "corpusVersion": "1.0.0"
4572
+ },
4573
+ {
4574
+ "chunkIndex": 8,
4575
+ "chunkKind": "authoring_manifest",
4576
+ "content": "{\"operationId\":\"manualField.label.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-manual-form\",\"ownerPackage\":\"@praxisui/manual-form\",\"configSchemaId\":\"ManualFormInstance\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set manual field label Effects: compile-domain-patch. Change the label of cpf to CPF/CNPJ.\",\"scope\":\"field\",\"target\":{\"kind\":\"manualField\",\"resolver\":\"manual-form-field-by-name\",\"required\":true},\"inputContract\":{\"required\":[\"fieldName\",\"label\"],\"properties\":[\"fieldName\",\"label\",\"updatePlaceholderWhenEmpty\"],\"semanticTerms\":[\"fieldName\",\"label\",\"updatePlaceholderWhenEmpty\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"currentConfig.fieldMetadata[].label\",\"currentConfig.fieldMetadata[].placeholder\",\"currentFieldMetadata\"],\"validators\":[{\"validatorId\":\"manual-field-exists\",\"level\":\"error\",\"code\":\"MANUAL_FORM_FIELD_EXISTS\",\"description\":\"Target manual field must exist before patching or removing it.\"},{\"validatorId\":\"field-label-valid\",\"level\":\"error\",\"code\":\"MANUAL_FORM_FIELD_LABEL_VALID\",\"description\":\"Manual field label must be a non-empty user-facing string.\"},{\"validatorId\":\"metadata-bridge-does-not-redefine-schema\",\"level\":\"error\",\"code\":\"MANUAL_FORM_METADATA_BRIDGE_SCHEMA_SAFE\",\"description\":\"Metadata bridge patches must not silently redefine backend schema or schema-driven FormConfig semantics.\"},{\"validatorId\":\"manual-form-round-trip\",\"level\":\"error\",\"code\":\"MANUAL_FORM_ROUND_TRIP\",\"description\":\"Open, edit, apply/save, reopen and runtime consume must preserve manual form config.\"}],\"preconditions\":[\"manual-form-instance-loaded\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"rename-label\",\"request\":\"Change the label of cpf to CPF/CNPJ.\",\"operationId\":\"manualField.label.set\",\"params\":{\"fieldName\":\"cpf\",\"label\":\"CPF/CNPJ\"},\"isPositive\":true}],\"negativeExamples\":[]}",
4577
+ "sourcePointer": "projects/praxis-manual-form/src/lib/ai/praxis-manual-form-authoring-manifest.ts",
4578
+ "contentHash": "40ab840d2c94e136721c346c475ed0c7c23fba7a9f3ff98fa59359778879e24c",
4579
+ "sourceKind": "component_definition",
4580
+ "sourceId": "praxis-manual-form",
4581
+ "corpusVersion": "1.0.0"
4582
+ },
4583
+ {
4584
+ "chunkIndex": 9,
4585
+ "chunkKind": "authoring_manifest",
4586
+ "content": "{\"operationId\":\"layout.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-manual-form\",\"ownerPackage\":\"@praxisui/manual-form\",\"configSchemaId\":\"ManualFormInstance\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configure manual form layout Effects: compile-domain-patch. Use nested form paths as field names.\",\"scope\":\"layout\",\"target\":{\"kind\":\"layout\",\"resolver\":\"manual-form-layout\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"usePathNames\",\"sections\",\"rows\",\"columns\",\"fieldOrder\",\"delegateAdvancedFormConfigTo\"],\"semanticTerms\":[\"usePathNames\",\"sections\",\"rows\",\"columns\",\"fieldOrder\",\"delegateAdvancedFormConfigTo\",\"praxis-dynamic-form\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"currentConfig.sections\",\"usePathNames\"],\"validators\":[{\"validatorId\":\"layout-field-references-valid\",\"level\":\"error\",\"code\":\"MANUAL_FORM_LAYOUT_FIELD_REFERENCES_VALID\",\"description\":\"Layout field references must resolve to manual fields.\"},{\"validatorId\":\"manual-layout-does-not-replace-host-template\",\"level\":\"error\",\"code\":\"MANUAL_FORM_LAYOUT_HOST_TEMPLATE_SAFE\",\"description\":\"Manual layout metadata must not pretend to rewrite host-owned HTML template structure.\"},{\"validatorId\":\"delegates-form-config\",\"level\":\"error\",\"code\":\"MANUAL_FORM_DELEGATES_FORM_CONFIG\",\"description\":\"Advanced FormConfig semantics must be delegated to the dynamic-form manifest.\"},{\"validatorId\":\"manual-form-round-trip\",\"level\":\"error\",\"code\":\"MANUAL_FORM_ROUND_TRIP\",\"description\":\"Open, edit, apply/save, reopen and runtime consume must preserve manual form config.\"}],\"preconditions\":[\"manual-form-instance-loaded\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"enable-path-names\",\"request\":\"Use nested form paths as field names.\",\"operationId\":\"layout.configure\",\"params\":{\"usePathNames\":true},\"isPositive\":true}],\"negativeExamples\":[]}",
4587
+ "sourcePointer": "projects/praxis-manual-form/src/lib/ai/praxis-manual-form-authoring-manifest.ts",
4588
+ "contentHash": "24174e63182f5bcf2bbf5a3f0db970a56060ec9ba3a571095d76f61a50606f18",
4589
+ "sourceKind": "component_definition",
4590
+ "sourceId": "praxis-manual-form",
4591
+ "corpusVersion": "1.0.0"
4592
+ },
4593
+ {
4594
+ "chunkIndex": 10,
4595
+ "chunkKind": "authoring_manifest",
4596
+ "content": "{\"operationId\":\"toolbar.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-manual-form\",\"ownerPackage\":\"@praxisui/manual-form\",\"configSchemaId\":\"ManualFormInstance\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configure manual form customization toolbar Effects: compile-domain-patch. Enable customization toolbar with required and hidden toggles.\",\"scope\":\"toolbarUi\",\"target\":{\"kind\":\"toolbar\",\"resolver\":\"manual-form-customization-toolbar\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"enableCustomization\",\"editableFlags\"],\"semanticTerms\":[\"enableCustomization\",\"editableFlags\",\"required\",\"readOnly\",\"hidden\",\"disabled\",\"openMetadataEditor\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"enableCustomization\"],\"validators\":[{\"validatorId\":\"toolbar-flags-supported\",\"level\":\"error\",\"code\":\"MANUAL_FORM_TOOLBAR_FLAGS_SUPPORTED\",\"description\":\"Toolbar quick edit flags must be supported by the manual field toolbar.\"},{\"validatorId\":\"metadata-bridge-gated-by-customization\",\"level\":\"error\",\"code\":\"MANUAL_FORM_METADATA_BRIDGE_GATED\",\"description\":\"Metadata bridge entry points must respect enableCustomization.\"},{\"validatorId\":\"manual-form-round-trip\",\"level\":\"error\",\"code\":\"MANUAL_FORM_ROUND_TRIP\",\"description\":\"Open, edit, apply/save, reopen and runtime consume must preserve manual form config.\"}],\"preconditions\":[\"manual-form-component-loaded\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"configure-toolbar\",\"request\":\"Enable customization toolbar with required and hidden toggles.\",\"operationId\":\"toolbar.configure\",\"params\":{\"enableCustomization\":true,\"editableFlags\":[\"required\",\"hidden\",\"openMetadataEditor\"]},\"isPositive\":true}],\"negativeExamples\":[]}",
4597
+ "sourcePointer": "projects/praxis-manual-form/src/lib/ai/praxis-manual-form-authoring-manifest.ts",
4598
+ "contentHash": "413a0134b45ef84b46acb60bdaba2453e9bca24cf91bc1f00125c245e6024ebb",
4599
+ "sourceKind": "component_definition",
4600
+ "sourceId": "praxis-manual-form",
4601
+ "corpusVersion": "1.0.0"
4602
+ },
4603
+ {
4604
+ "chunkIndex": 11,
4605
+ "chunkKind": "authoring_manifest",
4606
+ "content": "{\"operationId\":\"autosave.enabled.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-manual-form\",\"ownerPackage\":\"@praxisui/manual-form\",\"configSchemaId\":\"ManualFormInstance\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set manual form autosave policy Effects: compile-domain-patch. Enable autosave every second for this tenant profile. Autosave every millisecond with no storage identity.\",\"scope\":\"interaction\",\"target\":{\"kind\":\"autosave\",\"resolver\":\"manual-form-autosave-policy\",\"required\":false},\"inputContract\":{\"required\":[\"enabled\"],\"properties\":[\"enabled\",\"debounceMs\",\"storageKey\",\"namespace\",\"tenantId\",\"profileId\"],\"semanticTerms\":[\"enabled\",\"debounceMs\",\"storageKey\",\"namespace\",\"tenantId\",\"profileId\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"enableAutoSave\",\"autoSaveDebounceMs\",\"persistenceOptions\"],\"validators\":[{\"validatorId\":\"autosave-explicit\",\"level\":\"error\",\"code\":\"MANUAL_FORM_AUTOSAVE_EXPLICIT\",\"description\":\"Autosave enablement and persistence policy must be explicit.\"},{\"validatorId\":\"autosave-debounce-safe\",\"level\":\"error\",\"code\":\"MANUAL_FORM_AUTOSAVE_DEBOUNCE_SAFE\",\"description\":\"Autosave debounce must be positive and safe for storage backends.\"},{\"validatorId\":\"autosave-storage-available\",\"level\":\"error\",\"code\":\"MANUAL_FORM_AUTOSAVE_STORAGE_AVAILABLE\",\"description\":\"Autosave requires a valid AsyncConfigStorage implementation.\"},{\"validatorId\":\"persistence-key-deterministic\",\"level\":\"error\",\"code\":\"MANUAL_FORM_PERSISTENCE_KEY_DETERMINISTIC\",\"description\":\"Persistence key composition must be deterministic across reopen/reload.\"},{\"validatorId\":\"manual-form-round-trip\",\"level\":\"error\",\"code\":\"MANUAL_FORM_ROUND_TRIP\",\"description\":\"Open, edit, apply/save, reopen and runtime consume must preserve manual form config.\"}],\"preconditions\":[\"manual-form-instance-loaded\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"enable-autosave\",\"request\":\"Enable autosave every second for this tenant profile.\",\"operationId\":\"autosave.enabled.set\",\"params\":{\"enabled\":true,\"debounceMs\":1000,\"namespace\":\"sales\",\"tenantId\":\"acme\",\"profileId\":\"admin\"},\"isPositive\":true}],\"negativeExamples\":[{\"id\":\"reject-unsafe-autosave\",\"request\":\"Autosave every millisecond with no storage identity.\",\"operationId\":\"autosave.enabled.set\",\"params\":{\"enabled\":true,\"debounceMs\":1},\"isPositive\":false}]}",
4607
+ "sourcePointer": "projects/praxis-manual-form/src/lib/ai/praxis-manual-form-authoring-manifest.ts",
4608
+ "contentHash": "b8468e1981fac43da569b47aa6bfc2ebffcb970d28bb3a16ef91f3965e6316ee",
4609
+ "sourceKind": "component_definition",
4610
+ "sourceId": "praxis-manual-form",
4611
+ "corpusVersion": "1.0.0"
4612
+ },
4613
+ {
4614
+ "chunkIndex": 12,
4615
+ "chunkKind": "authoring_manifest",
4616
+ "content": "{\"operationId\":\"submitBehavior.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-manual-form\",\"ownerPackage\":\"@praxisui/manual-form\",\"configSchemaId\":\"ManualFormInstance\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set manual form submit behavior Effects: compile-domain-patch. Focus the first invalid field and scroll to errors on submit.\",\"scope\":\"interaction\",\"target\":{\"kind\":\"submitBehavior\",\"resolver\":\"manual-form-submit-behavior\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"action\",\"clearAfterSave\",\"focusFirstError\",\"scrollToErrors\",\"confirmOnUnsavedChanges\",\"delegateFormSubmitTo\"],\"semanticTerms\":[\"action\",\"clearAfterSave\",\"focusFirstError\",\"scrollToErrors\",\"confirmOnUnsavedChanges\",\"delegateFormSubmitTo\",\"submit\",\"saveDraft\",\"reset\",\"cancel\",\"custom\",\"praxis-dynamic-form\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"currentConfig.behavior\",\"submitted\",\"saved\",\"resetEvent\"],\"validators\":[{\"validatorId\":\"submit-behavior-supported\",\"level\":\"error\",\"code\":\"MANUAL_FORM_SUBMIT_BEHAVIOR_SUPPORTED\",\"description\":\"Submit behavior must map to supported manual form outputs or delegated dynamic-form semantics.\"},{\"validatorId\":\"delegates-form-config\",\"level\":\"error\",\"code\":\"MANUAL_FORM_DELEGATES_FORM_CONFIG\",\"description\":\"Advanced FormConfig semantics must be delegated to the dynamic-form manifest.\"},{\"validatorId\":\"manual-form-round-trip\",\"level\":\"error\",\"code\":\"MANUAL_FORM_ROUND_TRIP\",\"description\":\"Open, edit, apply/save, reopen and runtime consume must preserve manual form config.\"}],\"preconditions\":[\"manual-form-instance-loaded\"],\"submissionImpact\":\"affects-submission\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"set-submit-behavior\",\"request\":\"Focus the first invalid field and scroll to errors on submit.\",\"operationId\":\"submitBehavior.set\",\"params\":{\"action\":\"submit\",\"focusFirstError\":true,\"scrollToErrors\":true},\"isPositive\":true}],\"negativeExamples\":[]}",
4617
+ "sourcePointer": "projects/praxis-manual-form/src/lib/ai/praxis-manual-form-authoring-manifest.ts",
4618
+ "contentHash": "f516755f4671d68a72d351a48a3dc27311b9f57d6ade0fe9971dc5453fa49a0f",
4619
+ "sourceKind": "component_definition",
4620
+ "sourceId": "praxis-manual-form",
4621
+ "corpusVersion": "1.0.0"
4622
+ },
4623
+ {
4624
+ "chunkIndex": 13,
4625
+ "chunkKind": "authoring_manifest",
4626
+ "content": "{\"operationId\":\"metadataBridge.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-manual-form\",\"ownerPackage\":\"@praxisui/manual-form\",\"configSchemaId\":\"ManualFormInstance\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configure manual metadata bridge Effects: compile-domain-patch. Open metadata editor from the toolbar and persist draft after patch. Use manual form metadata bridge to replace the backend schema for cpf.\",\"scope\":\"fieldMetadataPath\",\"target\":{\"kind\":\"metadataBridge\",\"resolver\":\"manual-field-metadata-bridge\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"enabled\",\"fieldName\",\"openMode\",\"persistDraftAfterPatch\",\"delegateFieldMetadataTo\",\"delegateControlDiscoveryTo\"],\"semanticTerms\":[\"enabled\",\"fieldName\",\"openMode\",\"persistDraftAfterPatch\",\"delegateFieldMetadataTo\",\"delegateControlDiscoveryTo\",\"field-toolbar\",\"double-click\",\"programmatic\",\"praxis-metadata-editor\",\"praxis-dynamic-fields\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"enableCustomization\",\"currentFieldMetadata\",\"currentConfig.fieldMetadata\"],\"validators\":[{\"validatorId\":\"metadata-bridge-does-not-redefine-schema\",\"level\":\"error\",\"code\":\"MANUAL_FORM_METADATA_BRIDGE_SCHEMA_SAFE\",\"description\":\"Metadata bridge patches must not silently redefine backend schema or schema-driven FormConfig semantics.\"},{\"validatorId\":\"delegates-field-metadata\",\"level\":\"error\",\"code\":\"MANUAL_FORM_DELEGATES_FIELD_METADATA\",\"description\":\"Advanced FieldMetadata edits must be delegated to the metadata-editor manifest.\"},{\"validatorId\":\"control-type-discovered\",\"level\":\"error\",\"code\":\"MANUAL_FORM_CONTROL_TYPE_DISCOVERED\",\"description\":\"Control type must be discovered through dynamic-fields mappings or delegated discovery.\"},{\"validatorId\":\"metadata-bridge-gated-by-customization\",\"level\":\"error\",\"code\":\"MANUAL_FORM_METADATA_BRIDGE_GATED\",\"description\":\"Metadata bridge entry points must respect enableCustomization.\"},{\"validatorId\":\"manual-form-round-trip\",\"level\":\"error\",\"code\":\"MANUAL_FORM_ROUND_TRIP\",\"description\":\"Open, edit, apply/save, reopen and runtime consume must preserve manual form config.\"}],\"preconditions\":[\"manual-form-instance-loaded\"],\"submissionImpact\":\"affects-schema-backed-data\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"configure-metadata-bridge\",\"request\":\"Open metadata editor from the toolbar and persist draft after patch.\",\"operationId\":\"metadataBridge.configure\",\"params\":{\"enabled\":true,\"openMode\":\"field-toolbar\",\"persistDraftAfterPatch\":true,\"delegateFieldMetadataTo\":\"praxis-metadata-editor\",\"delegateControlDiscoveryTo\":\"praxis-dynamic-fields\"},\"isPositive\":true}],\"negativeExamples\":[{\"id\":\"reject-schema-redefinition\",\"request\":\"Use manual form metadata bridge to replace the backend schema for cpf.\",\"operationId\":\"metadataBridge.configure\",\"params\":{\"enabled\":true,\"fieldName\":\"cpf\",\"backendSchemaOverride\":{\"type\":\"number\"}},\"isPositive\":false}]}",
4627
+ "sourcePointer": "projects/praxis-manual-form/src/lib/ai/praxis-manual-form-authoring-manifest.ts",
4628
+ "contentHash": "a39e54367bd8f4a294d8abfb8e12c97f8f58c8a8164ce922e0bbce5ddf70ec78",
4629
+ "sourceKind": "component_definition",
4630
+ "sourceId": "praxis-manual-form",
4631
+ "corpusVersion": "1.0.0"
4632
+ },
4633
+ {
4634
+ "chunkIndex": 14,
4635
+ "chunkKind": "authoring_manifest",
4345
4636
  "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-manual-form\",\"ownerPackage\":\"@praxisui/manual-form\",\"configSchemaId\":\"ManualFormInstance\",\"chunkSection\":\"identity\"}",
4346
4637
  "sourcePointer": "projects/praxis-manual-form/src/lib/ai/praxis-manual-form-authoring-manifest.ts",
4347
4638
  "contentHash": "056e0a638a87c288dfb507ff43b2305d203406cd7a972f10c4dd16a0218cbb04",
@@ -4350,7 +4641,7 @@
4350
4641
  "corpusVersion": "1.0.0"
4351
4642
  },
4352
4643
  {
4353
- "chunkIndex": 7,
4644
+ "chunkIndex": 15,
4354
4645
  "chunkKind": "authoring_manifest",
4355
4646
  "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-manual-form\",\"ownerPackage\":\"@praxisui/manual-form\",\"configSchemaId\":\"ManualFormInstance\",\"chunkSection\":\"runtimeInputs\",\"runtimeInputs\":[{\"name\":\"formId\",\"type\":\"string\",\"description\":\"Required manual form id used for runtime state and persistence key composition.\"},{\"name\":\"formGroup\",\"type\":\"FormGroup | null\",\"description\":\"Host-owned typed FormGroup adopted by the manual form runtime when provided.\"},{\"name\":\"formTitle\",\"type\":\"string | null\",\"description\":\"Manual form title override.\"},{\"name\":\"formDescription\",\"type\":\"string | null\",\"description\":\"Manual form description override.\"},{\"name\":\"actions\",\"type\":\"FormActionsLayout | null\",\"description\":\"Manual toolbar/actions layout.\"},{\"name\":\"enableAutoSave\",\"type\":\"boolean\",\"description\":\"Enables draft persistence through ManualFormInstance.saveDraft.\"},{\"name\":\"autoSaveDebounceMs\",\"type\":\"number\",\"description\":\"Autosave debounce in milliseconds.\"},{\"name\":\"enableCustomization\",\"type\":\"boolean\",\"description\":\"Enables field toolbar and metadata editor bridge.\"},{\"name\":\"persistenceOptions\",\"type\":\"ManualFormPersistenceOptions | null\",\"description\":\"Namespace, tenant, profile, locale and storage key controls.\"},{\"name\":\"usePathNames\",\"type\":\"boolean\",\"description\":\"Uses FormControlName.path as FieldMetadata.name for nested manual forms.\"}]}",
4356
4647
  "sourcePointer": "projects/praxis-manual-form/src/lib/ai/praxis-manual-form-authoring-manifest.ts",
@@ -4360,7 +4651,7 @@
4360
4651
  "corpusVersion": "1.0.0"
4361
4652
  },
4362
4653
  {
4363
- "chunkIndex": 8,
4654
+ "chunkIndex": 16,
4364
4655
  "chunkKind": "authoring_manifest",
4365
4656
  "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-manual-form\",\"ownerPackage\":\"@praxisui/manual-form\",\"configSchemaId\":\"ManualFormInstance\",\"chunkSection\":\"editableTargets\",\"editableTargets\":[{\"kind\":\"manualField\",\"resolver\":\"manual-form-field-by-name\",\"description\":\"Detected or declared manual field tracked by ManualFormInstance field metadata.\"},{\"kind\":\"layout\",\"resolver\":\"manual-form-layout\",\"description\":\"Manual layout ownership: host template layout plus optional FormConfig sections for authored structure.\"},{\"kind\":\"toolbar\",\"resolver\":\"manual-form-customization-toolbar\",\"description\":\"Customization toolbar and quick metadata toggles.\"},{\"kind\":\"autosave\",\"resolver\":\"manual-form-autosave-policy\",\"description\":\"Autosave enablement, debounce and persistence key controls.\"},{\"kind\":\"metadataBridge\",\"resolver\":\"manual-field-metadata-bridge\",\"description\":\"Bridge from manual fields to @praxisui/metadata-editor patches.\"},{\"kind\":\"submitBehavior\",\"resolver\":\"manual-form-submit-behavior\",\"description\":\"Submit, reset, validation focus and unsaved-change behavior.\"}]}",
4366
4657
  "sourcePointer": "projects/praxis-manual-form/src/lib/ai/praxis-manual-form-authoring-manifest.ts",
@@ -4370,27 +4661,27 @@
4370
4661
  "corpusVersion": "1.0.0"
4371
4662
  },
4372
4663
  {
4373
- "chunkIndex": 9,
4664
+ "chunkIndex": 17,
4374
4665
  "chunkKind": "authoring_manifest",
4375
- "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-manual-form\",\"ownerPackage\":\"@praxisui/manual-form\",\"configSchemaId\":\"ManualFormInstance\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"manualField.add\",\"title\":\"Add manual field metadata\",\"scope\":\"field\",\"targetKind\":\"manualField\",\"target\":{\"kind\":\"manualField\",\"resolver\":\"manual-form-field-by-name\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"fieldName\",\"controlType\"],\"properties\":{\"fieldName\":{\"type\":\"string\"},\"controlType\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"required\":{\"type\":\"boolean\"},\"sectionId\":{\"type\":\"string\"},\"source\":{\"enum\":[\"manual-template\",\"detected-component\",\"metadata-bridge\"]},\"delegateFieldMetadataTo\":{\"enum\":[\"praxis-metadata-editor\"]}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"manual-field-add\",\"handlerContract\":{\"reads\":[\"ManualFormInstance.currentConfig\",\"ManualFormInstance.currentFieldMetadata\",\"ManualFieldKeyService\",\"dynamic-fields-control-discovery\"],\"writes\":[\"currentConfig.fieldMetadata\",\"currentFieldMetadata\",\"form\"],\"identityKeys\":[\"fieldName\"],\"failureModes\":[\"duplicate-manual-field-id\",\"control-type-not-discovered\",\"host-template-field-missing\",\"field-metadata-delegation-required\"],\"description\":\"Adds metadata for a manual field while preserving host-owned template layout and delegating advanced FieldMetadata edits.\"}}],\"validators\":[\"manual-field-id-unique\",\"control-type-discovered\",\"host-template-field-exists\",\"metadata-bridge-does-not-redefine-schema\",\"manual-form-round-trip\"],\"affectedPaths\":[\"currentConfig.fieldMetadata\",\"currentFieldMetadata\",\"form\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"manual-form-instance-loaded\"],\"destructive\":false,\"requiresConfirmation\":false},{\"operationId\":\"manualField.remove\",\"title\":\"Remove manual field metadata\",\"scope\":\"field\",\"targetKind\":\"manualField\",\"target\":{\"kind\":\"manualField\",\"resolver\":\"manual-form-field-by-name\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"fieldName\"],\"properties\":{\"fieldName\":{\"type\":\"string\"},\"removeFromLayout\":{\"type\":\"boolean\"},\"clearPersistedValue\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"manual-field-remove\",\"handlerContract\":{\"reads\":[\"ManualFormInstance.currentConfig\",\"ManualFormInstance.currentFieldMetadata\",\"ManualFormInstance.form\",\"FormConfig.sections\"],\"writes\":[\"currentConfig.fieldMetadata\",\"currentConfig.sections\",\"currentFieldMetadata\",\"form\"],\"identityKeys\":[\"fieldName\"],\"failureModes\":[\"manual-field-not-found\",\"field-still-referenced-by-layout\",\"persisted-value-removal-not-confirmed\"],\"description\":\"Removes a manual field by stable field name and requires explicit confirmation before metadata, layout or value loss.\"}}],\"destructive\":true,\"requiresConfirmation\":true,\"validators\":[\"manual-field-exists\",\"field-removal-confirmed\",\"layout-field-references-valid\",\"manual-form-round-trip\"],\"affectedPaths\":[\"currentConfig.fieldMetadata\",\"currentConfig.sections\",\"currentFieldMetadata\",\"form\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"manual-form-instance-loaded\",\"explicit-confirmation-provided\"]},{\"operationId\":\"manualField.label.set\",\"title\":\"Set manual field label\",\"scope\":\"field\",\"targetKind\":\"manualField\",\"target\":{\"kind\":\"manualField\",\"resolver\":\"manual-form-field-by-name\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"fieldName\",\"label\"],\"properties\":{\"fieldName\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"updatePlaceholderWhenEmpty\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"manual-field-label-set\",\"handlerContract\":{\"reads\":[\"ManualFormInstance.currentFieldMetadata\",\"ManualFieldMetadataBridgeService\"],\"writes\":[\"currentConfig.fieldMetadata[].label\",\"currentConfig.fieldMetadata[].placeholder\",\"currentFieldMetadata\"],\"identityKeys\":[\"fieldName\"],\"failureModes\":[\"manual-field-not-found\",\"label-empty\",\"metadata-patch-rejected\"],\"description\":\"Sets a manual field label through the metadata bridge without redefining backend schema semantics.\"}}],\"validators\":[\"manual-field-exists\",\"field-label-valid\",\"metadata-bridge-does-not-redefine-schema\",\"manual-form-round-trip\"],\"affectedPaths\":[\"currentConfig.fieldMetadata[].label\",\"currentConfig.fieldMetadata[].placeholder\",\"currentFieldMetadata\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"manual-form-instance-loaded\"],\"destructive\":false,\"requiresConfirmation\":false},{\"operationId\":\"layout.configure\",\"title\":\"Configure manual form layout\",\"scope\":\"layout\",\"targetKind\":\"layout\",\"target\":{\"kind\":\"layout\",\"resolver\":\"manual-form-layout\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"usePathNames\":{\"type\":\"boolean\"},\"sections\":{\"type\":\"array\"},\"rows\":{\"type\":\"array\"},\"columns\":{\"type\":\"array\"},\"fieldOrder\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"delegateAdvancedFormConfigTo\":{\"enum\":[\"praxis-dynamic-form\"]}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"manual-layout-configure\",\"handlerContract\":{\"reads\":[\"ManualFormInstance.currentConfig\",\"FormConfig.sections\",\"host-template-layout\",\"praxis-dynamic-form-authoring-manifest\"],\"writes\":[\"currentConfig.sections\",\"usePathNames\"],\"identityKeys\":[\"sectionId\",\"rowId\",\"columnId\",\"fieldName\"],\"failureModes\":[\"layout-field-reference-missing\",\"advanced-form-config-delegation-required\",\"host-template-layout-conflict\"],\"description\":\"Configures manual layout metadata and delegates advanced FormConfig layout semantics to the dynamic-form manifest.\"}}],\"validators\":[\"layout-field-references-valid\",\"manual-layout-does-not-replace-host-template\",\"delegates-form-config\",\"manual-form-round-trip\"],\"affectedPaths\":[\"currentConfig.sections\",\"usePathNames\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"manual-form-instance-loaded\"],\"destructive\":false,\"requiresConfirmation\":false},{\"operationId\":\"toolbar.configure\",\"title\":\"Configure manual form customization toolbar\",\"scope\":\"toolbarUi\",\"targetKind\":\"toolbar\",\"target\":{\"kind\":\"toolbar\",\"resolver\":\"manual-form-customization-toolbar\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"enableCustomization\":{\"type\":\"boolean\"},\"editableFlags\":{\"type\":\"array\",\"items\":{\"enum\":[\"required\",\"readOnly\",\"hidden\",\"disabled\",\"openMetadataEditor\"]}}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"manual-toolbar-configure\",\"handlerContract\":{\"reads\":[\"ManualFormComponent.enableCustomization\",\"ManualFieldToolbarComponent\",\"ManualFieldEditorOnDblclickDirective\"],\"writes\":[\"enableCustomization\"],\"identityKeys\":[\"formId\"],\"failureModes\":[\"toolbar-disabled-with-required-bridge\",\"unsupported-toolbar-flag\"],\"description\":\"Configures the manual customization toolbar and keeps metadata edit entry points behind enableCustomization.\"}}],\"validators\":[\"toolbar-flags-supported\",\"metadata-bridge-gated-by-customization\",\"manual-form-round-trip\"],\"affectedPaths\":[\"enableCustomization\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"manual-form-component-loaded\"],\"destructive\":false,\"requiresConfirmation\":false}]}",
4666
+ "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-manual-form\",\"ownerPackage\":\"@praxisui/manual-form\",\"configSchemaId\":\"ManualFormInstance\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"manualField.add\",\"title\":\"Add manual field metadata\",\"scope\":\"field\",\"targetKind\":\"manualField\",\"target\":{\"kind\":\"manualField\",\"resolver\":\"manual-form-field-by-name\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"fieldName\",\"controlType\"],\"properties\":{\"fieldName\":{\"type\":\"string\"},\"controlType\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"required\":{\"type\":\"boolean\"},\"sectionId\":{\"type\":\"string\"},\"source\":{\"enum\":[\"manual-template\",\"detected-component\",\"metadata-bridge\"]},\"delegateFieldMetadataTo\":{\"enum\":[\"praxis-metadata-editor\"]}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"manual-field-add\",\"handlerContract\":{\"reads\":[\"ManualFormInstance.currentConfig\",\"ManualFormInstance.currentFieldMetadata\",\"ManualFieldKeyService\",\"dynamic-fields-control-discovery\"],\"writes\":[\"currentConfig.fieldMetadata\",\"currentFieldMetadata\",\"form\"],\"identityKeys\":[\"fieldName\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"fieldName\",\"controlType\"],\"properties\":{\"fieldName\":{\"type\":\"string\"},\"controlType\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"required\":{\"type\":\"boolean\"},\"sectionId\":{\"type\":\"string\"},\"source\":{\"enum\":[\"manual-template\",\"detected-component\",\"metadata-bridge\"]},\"delegateFieldMetadataTo\":{\"enum\":[\"praxis-metadata-editor\"]}}},\"failureModes\":[\"duplicate-manual-field-id\",\"control-type-not-discovered\",\"host-template-field-missing\",\"field-metadata-delegation-required\"],\"description\":\"Adds metadata for a manual field while preserving host-owned template layout and delegating advanced FieldMetadata edits.\"}}],\"validators\":[\"manual-field-id-unique\",\"control-type-discovered\",\"host-template-field-exists\",\"metadata-bridge-does-not-redefine-schema\",\"manual-form-round-trip\"],\"affectedPaths\":[\"currentConfig.fieldMetadata\",\"currentFieldMetadata\",\"form\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"manual-form-instance-loaded\"],\"destructive\":false,\"requiresConfirmation\":false},{\"operationId\":\"manualField.remove\",\"title\":\"Remove manual field metadata\",\"scope\":\"field\",\"targetKind\":\"manualField\",\"target\":{\"kind\":\"manualField\",\"resolver\":\"manual-form-field-by-name\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"fieldName\"],\"properties\":{\"fieldName\":{\"type\":\"string\"},\"removeFromLayout\":{\"type\":\"boolean\"},\"clearPersistedValue\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"manual-field-remove\",\"handlerContract\":{\"reads\":[\"ManualFormInstance.currentConfig\",\"ManualFormInstance.currentFieldMetadata\",\"ManualFormInstance.form\",\"FormConfig.sections\"],\"writes\":[\"currentConfig.fieldMetadata\",\"currentConfig.sections\",\"currentFieldMetadata\",\"form\"],\"identityKeys\":[\"fieldName\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"fieldName\"],\"properties\":{\"fieldName\":{\"type\":\"string\"},\"removeFromLayout\":{\"type\":\"boolean\"},\"clearPersistedValue\":{\"type\":\"boolean\"}}},\"failureModes\":[\"manual-field-not-found\",\"field-still-referenced-by-layout\",\"persisted-value-removal-not-confirmed\"],\"description\":\"Removes a manual field by stable field name and requires explicit confirmation before metadata, layout or value loss.\"}}],\"destructive\":true,\"requiresConfirmation\":true,\"validators\":[\"manual-field-exists\",\"field-removal-confirmed\",\"layout-field-references-valid\",\"manual-form-round-trip\"],\"affectedPaths\":[\"currentConfig.fieldMetadata\",\"currentConfig.sections\",\"currentFieldMetadata\",\"form\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"manual-form-instance-loaded\",\"explicit-confirmation-provided\"]},{\"operationId\":\"manualField.label.set\",\"title\":\"Set manual field label\",\"scope\":\"field\",\"targetKind\":\"manualField\",\"target\":{\"kind\":\"manualField\",\"resolver\":\"manual-form-field-by-name\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"fieldName\",\"label\"],\"properties\":{\"fieldName\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"updatePlaceholderWhenEmpty\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"manual-field-label-set\",\"handlerContract\":{\"reads\":[\"ManualFormInstance.currentFieldMetadata\",\"ManualFieldMetadataBridgeService\"],\"writes\":[\"currentConfig.fieldMetadata[].label\",\"currentConfig.fieldMetadata[].placeholder\",\"currentFieldMetadata\"],\"identityKeys\":[\"fieldName\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"fieldName\",\"label\"],\"properties\":{\"fieldName\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"updatePlaceholderWhenEmpty\":{\"type\":\"boolean\"}}},\"failureModes\":[\"manual-field-not-found\",\"label-empty\",\"metadata-patch-rejected\"],\"description\":\"Sets a manual field label through the metadata bridge without redefining backend schema semantics.\"}}],\"validators\":[\"manual-field-exists\",\"field-label-valid\",\"metadata-bridge-does-not-redefine-schema\",\"manual-form-round-trip\"],\"affectedPaths\":[\"currentConfig.fieldMetadata[].label\",\"currentConfig.fieldMetadata[].placeholder\",\"currentFieldMetadata\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"manual-form-instance-loaded\"],\"destructive\":false,\"requiresConfirmation\":false},{\"operationId\":\"layout.configure\",\"title\":\"Configure manual form layout\",\"scope\":\"layout\",\"targetKind\":\"layout\",\"target\":{\"kind\":\"layout\",\"resolver\":\"manual-form-layout\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"usePathNames\":{\"type\":\"boolean\"},\"sections\":{\"type\":\"array\"},\"rows\":{\"type\":\"array\"},\"columns\":{\"type\":\"array\"},\"fieldOrder\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"delegateAdvancedFormConfigTo\":{\"enum\":[\"praxis-dynamic-form\"]}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"manual-layout-configure\",\"handlerContract\":{\"reads\":[\"ManualFormInstance.currentConfig\",\"FormConfig.sections\",\"host-template-layout\",\"praxis-dynamic-form-authoring-manifest\"],\"writes\":[\"currentConfig.sections\",\"usePathNames\"],\"identityKeys\":[\"sectionId\",\"rowId\",\"columnId\",\"fieldName\"],\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"usePathNames\":{\"type\":\"boolean\"},\"sections\":{\"type\":\"array\"},\"rows\":{\"type\":\"array\"},\"columns\":{\"type\":\"array\"},\"fieldOrder\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"delegateAdvancedFormConfigTo\":{\"enum\":[\"praxis-dynamic-form\"]}}},\"failureModes\":[\"layout-field-reference-missing\",\"advanced-form-config-delegation-required\",\"host-template-layout-conflict\"],\"description\":\"Configures manual layout metadata and delegates advanced FormConfig layout semantics to the dynamic-form manifest.\"}}],\"validators\":[\"layout-field-references-valid\",\"manual-layout-does-not-replace-host-template\",\"delegates-form-config\",\"manual-form-round-trip\"],\"affectedPaths\":[\"currentConfig.sections\",\"usePathNames\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"manual-form-instance-loaded\"],\"destructive\":false,\"requiresConfirmation\":false}]}",
4376
4667
  "sourcePointer": "projects/praxis-manual-form/src/lib/ai/praxis-manual-form-authoring-manifest.ts",
4377
- "contentHash": "09548ccc91117a8e5d7940803eacc93d1d920b4bb10ad8956eea6e42d636bc14",
4668
+ "contentHash": "8f6f72537b599421ded0743c8c34cde702b1ba05aeabac67faf4cb3d78353c81",
4378
4669
  "sourceKind": "component_definition",
4379
4670
  "sourceId": "praxis-manual-form",
4380
4671
  "corpusVersion": "1.0.0"
4381
4672
  },
4382
4673
  {
4383
- "chunkIndex": 10,
4674
+ "chunkIndex": 18,
4384
4675
  "chunkKind": "authoring_manifest",
4385
- "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-manual-form\",\"ownerPackage\":\"@praxisui/manual-form\",\"configSchemaId\":\"ManualFormInstance\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"autosave.enabled.set\",\"title\":\"Set manual form autosave policy\",\"scope\":\"interaction\",\"targetKind\":\"autosave\",\"target\":{\"kind\":\"autosave\",\"resolver\":\"manual-form-autosave-policy\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"enabled\"],\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"debounceMs\":{\"type\":\"number\"},\"storageKey\":{\"type\":\"string\"},\"namespace\":{\"type\":\"string\"},\"tenantId\":{\"type\":\"string\"},\"profileId\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"manual-autosave-enabled-set\",\"handlerContract\":{\"reads\":[\"enableAutoSave\",\"autoSaveDebounceMs\",\"ManualFormPersistenceOptions\",\"ASYNC_CONFIG_STORAGE\"],\"writes\":[\"enableAutoSave\",\"autoSaveDebounceMs\",\"persistenceOptions\"],\"identityKeys\":[\"formId\",\"storageKey\",\"namespace\",\"tenantId\",\"profileId\"],\"failureModes\":[\"autosave-storage-missing\",\"unsafe-debounce\",\"ambiguous-storage-key\",\"ssr-storage-not-safe\"],\"description\":\"Sets autosave explicitly and requires safe debounce plus deterministic persistence key composition.\"}}],\"validators\":[\"autosave-explicit\",\"autosave-debounce-safe\",\"autosave-storage-available\",\"persistence-key-deterministic\",\"manual-form-round-trip\"],\"affectedPaths\":[\"enableAutoSave\",\"autoSaveDebounceMs\",\"persistenceOptions\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"manual-form-instance-loaded\"],\"destructive\":false,\"requiresConfirmation\":false},{\"operationId\":\"submitBehavior.set\",\"title\":\"Set manual form submit behavior\",\"scope\":\"interaction\",\"targetKind\":\"submitBehavior\",\"target\":{\"kind\":\"submitBehavior\",\"resolver\":\"manual-form-submit-behavior\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"action\":{\"enum\":[\"submit\",\"saveDraft\",\"reset\",\"cancel\",\"custom\"]},\"clearAfterSave\":{\"type\":\"boolean\"},\"focusFirstError\":{\"type\":\"boolean\"},\"scrollToErrors\":{\"type\":\"boolean\"},\"confirmOnUnsavedChanges\":{\"type\":\"boolean\"},\"delegateFormSubmitTo\":{\"enum\":[\"praxis-dynamic-form\"]}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"manual-submit-behavior-set\",\"handlerContract\":{\"reads\":[\"ManualFormComponent.submitted\",\"ManualFormInstance.form\",\"FormConfig.behavior\",\"praxis-dynamic-form-authoring-manifest\"],\"writes\":[\"currentConfig.behavior\",\"submitted\",\"saved\",\"resetEvent\"],\"identityKeys\":[\"formId\",\"action\"],\"failureModes\":[\"submit-action-unsupported\",\"advanced-form-submit-delegation-required\",\"validation-focus-target-missing\"],\"description\":\"Configures manual submit/reset behavior and delegates dynamic-form submit payload semantics to the dynamic-form manifest.\"}}],\"validators\":[\"submit-behavior-supported\",\"delegates-form-config\",\"manual-form-round-trip\"],\"affectedPaths\":[\"currentConfig.behavior\",\"submitted\",\"saved\",\"resetEvent\"],\"submissionImpact\":\"affects-submission\",\"preconditions\":[\"manual-form-instance-loaded\"],\"destructive\":false,\"requiresConfirmation\":false},{\"operationId\":\"metadataBridge.configure\",\"title\":\"Configure manual metadata bridge\",\"scope\":\"fieldMetadataPath\",\"targetKind\":\"metadataBridge\",\"target\":{\"kind\":\"metadataBridge\",\"resolver\":\"manual-field-metadata-bridge\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"fieldName\":{\"type\":\"string\"},\"openMode\":{\"enum\":[\"field-toolbar\",\"double-click\",\"programmatic\"]},\"persistDraftAfterPatch\":{\"type\":\"boolean\"},\"delegateFieldMetadataTo\":{\"enum\":[\"praxis-metadata-editor\"]},\"delegateControlDiscoveryTo\":{\"enum\":[\"praxis-dynamic-fields\"]}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"manual-metadata-bridge-configure\",\"handlerContract\":{\"reads\":[\"ManualFieldMetadataBridgeService\",\"SettingsPanelService\",\"PRAXIS_METADATA_EDITOR_AUTHORING_MANIFEST\",\"dynamic-fields-discovery\"],\"writes\":[\"enableCustomization\",\"currentFieldMetadata\",\"currentConfig.fieldMetadata\"],\"identityKeys\":[\"formId\",\"fieldName\",\"openMode\"],\"failureModes\":[\"metadata-editor-unavailable\",\"field-metadata-delegation-required\",\"control-discovery-delegation-required\",\"draft-persistence-failed\"],\"description\":\"Configures the bridge that opens metadata-editor for manual fields and persists accepted patches through ManualFormInstance.\"}}],\"validators\":[\"metadata-bridge-does-not-redefine-schema\",\"delegates-field-metadata\",\"control-type-discovered\",\"metadata-bridge-gated-by-customization\",\"manual-form-round-trip\"],\"affectedPaths\":[\"enableCustomization\",\"currentFieldMetadata\",\"currentConfig.fieldMetadata\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"manual-form-instance-loaded\"],\"destructive\":false,\"requiresConfirmation\":false}]}",
4676
+ "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-manual-form\",\"ownerPackage\":\"@praxisui/manual-form\",\"configSchemaId\":\"ManualFormInstance\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"toolbar.configure\",\"title\":\"Configure manual form customization toolbar\",\"scope\":\"toolbarUi\",\"targetKind\":\"toolbar\",\"target\":{\"kind\":\"toolbar\",\"resolver\":\"manual-form-customization-toolbar\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"enableCustomization\":{\"type\":\"boolean\"},\"editableFlags\":{\"type\":\"array\",\"items\":{\"enum\":[\"required\",\"readOnly\",\"hidden\",\"disabled\",\"openMetadataEditor\"]}}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"manual-toolbar-configure\",\"handlerContract\":{\"reads\":[\"ManualFormComponent.enableCustomization\",\"ManualFieldToolbarComponent\",\"ManualFieldEditorOnDblclickDirective\"],\"writes\":[\"enableCustomization\"],\"identityKeys\":[\"formId\"],\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"enableCustomization\":{\"type\":\"boolean\"},\"editableFlags\":{\"type\":\"array\",\"items\":{\"enum\":[\"required\",\"readOnly\",\"hidden\",\"disabled\",\"openMetadataEditor\"]}}}},\"failureModes\":[\"toolbar-disabled-with-required-bridge\",\"unsupported-toolbar-flag\"],\"description\":\"Configures the manual customization toolbar and keeps metadata edit entry points behind enableCustomization.\"}}],\"validators\":[\"toolbar-flags-supported\",\"metadata-bridge-gated-by-customization\",\"manual-form-round-trip\"],\"affectedPaths\":[\"enableCustomization\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"manual-form-component-loaded\"],\"destructive\":false,\"requiresConfirmation\":false},{\"operationId\":\"autosave.enabled.set\",\"title\":\"Set manual form autosave policy\",\"scope\":\"interaction\",\"targetKind\":\"autosave\",\"target\":{\"kind\":\"autosave\",\"resolver\":\"manual-form-autosave-policy\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"enabled\"],\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"debounceMs\":{\"type\":\"number\"},\"storageKey\":{\"type\":\"string\"},\"namespace\":{\"type\":\"string\"},\"tenantId\":{\"type\":\"string\"},\"profileId\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"manual-autosave-enabled-set\",\"handlerContract\":{\"reads\":[\"enableAutoSave\",\"autoSaveDebounceMs\",\"ManualFormPersistenceOptions\",\"ASYNC_CONFIG_STORAGE\"],\"writes\":[\"enableAutoSave\",\"autoSaveDebounceMs\",\"persistenceOptions\"],\"identityKeys\":[\"formId\",\"storageKey\",\"namespace\",\"tenantId\",\"profileId\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"enabled\"],\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"debounceMs\":{\"type\":\"number\"},\"storageKey\":{\"type\":\"string\"},\"namespace\":{\"type\":\"string\"},\"tenantId\":{\"type\":\"string\"},\"profileId\":{\"type\":\"string\"}}},\"failureModes\":[\"autosave-storage-missing\",\"unsafe-debounce\",\"ambiguous-storage-key\",\"ssr-storage-not-safe\"],\"description\":\"Sets autosave explicitly and requires safe debounce plus deterministic persistence key composition.\"}}],\"validators\":[\"autosave-explicit\",\"autosave-debounce-safe\",\"autosave-storage-available\",\"persistence-key-deterministic\",\"manual-form-round-trip\"],\"affectedPaths\":[\"enableAutoSave\",\"autoSaveDebounceMs\",\"persistenceOptions\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"manual-form-instance-loaded\"],\"destructive\":false,\"requiresConfirmation\":false},{\"operationId\":\"submitBehavior.set\",\"title\":\"Set manual form submit behavior\",\"scope\":\"interaction\",\"targetKind\":\"submitBehavior\",\"target\":{\"kind\":\"submitBehavior\",\"resolver\":\"manual-form-submit-behavior\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"action\":{\"enum\":[\"submit\",\"saveDraft\",\"reset\",\"cancel\",\"custom\"]},\"clearAfterSave\":{\"type\":\"boolean\"},\"focusFirstError\":{\"type\":\"boolean\"},\"scrollToErrors\":{\"type\":\"boolean\"},\"confirmOnUnsavedChanges\":{\"type\":\"boolean\"},\"delegateFormSubmitTo\":{\"enum\":[\"praxis-dynamic-form\"]}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"manual-submit-behavior-set\",\"handlerContract\":{\"reads\":[\"ManualFormComponent.submitted\",\"ManualFormInstance.form\",\"FormConfig.behavior\",\"praxis-dynamic-form-authoring-manifest\"],\"writes\":[\"currentConfig.behavior\",\"submitted\",\"saved\",\"resetEvent\"],\"identityKeys\":[\"formId\",\"action\"],\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"action\":{\"enum\":[\"submit\",\"saveDraft\",\"reset\",\"cancel\",\"custom\"]},\"clearAfterSave\":{\"type\":\"boolean\"},\"focusFirstError\":{\"type\":\"boolean\"},\"scrollToErrors\":{\"type\":\"boolean\"},\"confirmOnUnsavedChanges\":{\"type\":\"boolean\"},\"delegateFormSubmitTo\":{\"enum\":[\"praxis-dynamic-form\"]}}},\"failureModes\":[\"submit-action-unsupported\",\"advanced-form-submit-delegation-required\",\"validation-focus-target-missing\"],\"description\":\"Configures manual submit/reset behavior and delegates dynamic-form submit payload semantics to the dynamic-form manifest.\"}}],\"validators\":[\"submit-behavior-supported\",\"delegates-form-config\",\"manual-form-round-trip\"],\"affectedPaths\":[\"currentConfig.behavior\",\"submitted\",\"saved\",\"resetEvent\"],\"submissionImpact\":\"affects-submission\",\"preconditions\":[\"manual-form-instance-loaded\"],\"destructive\":false,\"requiresConfirmation\":false},{\"operationId\":\"metadataBridge.configure\",\"title\":\"Configure manual metadata bridge\",\"scope\":\"fieldMetadataPath\",\"targetKind\":\"metadataBridge\",\"target\":{\"kind\":\"metadataBridge\",\"resolver\":\"manual-field-metadata-bridge\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"fieldName\":{\"type\":\"string\"},\"openMode\":{\"enum\":[\"field-toolbar\",\"double-click\",\"programmatic\"]},\"persistDraftAfterPatch\":{\"type\":\"boolean\"},\"delegateFieldMetadataTo\":{\"enum\":[\"praxis-metadata-editor\"]},\"delegateControlDiscoveryTo\":{\"enum\":[\"praxis-dynamic-fields\"]}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"manual-metadata-bridge-configure\",\"handlerContract\":{\"reads\":[\"ManualFieldMetadataBridgeService\",\"SettingsPanelService\",\"PRAXIS_METADATA_EDITOR_AUTHORING_MANIFEST\",\"dynamic-fields-discovery\"],\"writes\":[\"enableCustomization\",\"currentFieldMetadata\",\"currentConfig.fieldMetadata\"],\"identityKeys\":[\"formId\",\"fieldName\",\"openMode\"],\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"enabled\":{\"type\":\"boolean\"},\"fieldName\":{\"type\":\"string\"},\"openMode\":{\"enum\":[\"field-toolbar\",\"double-click\",\"programmatic\"]},\"persistDraftAfterPatch\":{\"type\":\"boolean\"},\"delegateFieldMetadataTo\":{\"enum\":[\"praxis-metadata-editor\"]},\"delegateControlDiscoveryTo\":{\"enum\":[\"praxis-dynamic-fields\"]}}},\"failureModes\":[\"metadata-editor-unavailable\",\"field-metadata-delegation-required\",\"control-discovery-delegation-required\",\"draft-persistence-failed\"],\"description\":\"Configures the bridge that opens metadata-editor for manual fields and persists accepted patches through ManualFormInstance.\"}}],\"validators\":[\"metadata-bridge-does-not-redefine-schema\",\"delegates-field-metadata\",\"control-type-discovered\",\"metadata-bridge-gated-by-customization\",\"manual-form-round-trip\"],\"affectedPaths\":[\"enableCustomization\",\"currentFieldMetadata\",\"currentConfig.fieldMetadata\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"manual-form-instance-loaded\"],\"destructive\":false,\"requiresConfirmation\":false}]}",
4386
4677
  "sourcePointer": "projects/praxis-manual-form/src/lib/ai/praxis-manual-form-authoring-manifest.ts",
4387
- "contentHash": "67b092de2cd1d53b632467f271d4b0eac516c8a5496c8c1cc9882c452fdfda05",
4678
+ "contentHash": "4f0ace5ad3317b0021b77cfddc80d8e4d12d6aab8bb19aa7ac68fae70381b6bf",
4388
4679
  "sourceKind": "component_definition",
4389
4680
  "sourceId": "praxis-manual-form",
4390
4681
  "corpusVersion": "1.0.0"
4391
4682
  },
4392
4683
  {
4393
- "chunkIndex": 11,
4684
+ "chunkIndex": 19,
4394
4685
  "chunkKind": "authoring_manifest",
4395
4686
  "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-manual-form\",\"ownerPackage\":\"@praxisui/manual-form\",\"configSchemaId\":\"ManualFormInstance\",\"chunkSection\":\"validators\",\"validators\":[{\"validatorId\":\"manual-field-id-unique\",\"level\":\"error\",\"code\":\"MANUAL_FORM_FIELD_ID_UNIQUE\",\"description\":\"Manual field names must be unique in the instance metadata map.\"},{\"validatorId\":\"manual-field-exists\",\"level\":\"error\",\"code\":\"MANUAL_FORM_FIELD_EXISTS\",\"description\":\"Target manual field must exist before patching or removing it.\"},{\"validatorId\":\"field-removal-confirmed\",\"level\":\"error\",\"code\":\"MANUAL_FORM_FIELD_REMOVAL_CONFIRMED\",\"description\":\"Removing a field or its persisted value requires explicit confirmation.\"},{\"validatorId\":\"field-label-valid\",\"level\":\"error\",\"code\":\"MANUAL_FORM_FIELD_LABEL_VALID\",\"description\":\"Manual field label must be a non-empty user-facing string.\"},{\"validatorId\":\"host-template-field-exists\",\"level\":\"error\",\"code\":\"MANUAL_FORM_HOST_FIELD_EXISTS\",\"description\":\"Manual field metadata must correspond to a host template control or declared metadata bridge target.\"},{\"validatorId\":\"control-type-discovered\",\"level\":\"error\",\"code\":\"MANUAL_FORM_CONTROL_TYPE_DISCOVERED\",\"description\":\"Control type must be discovered through dynamic-fields mappings or delegated discovery.\"},{\"validatorId\":\"metadata-bridge-does-not-redefine-schema\",\"level\":\"error\",\"code\":\"MANUAL_FORM_METADATA_BRIDGE_SCHEMA_SAFE\",\"description\":\"Metadata bridge patches must not silently redefine backend schema or schema-driven FormConfig semantics.\"},{\"validatorId\":\"delegates-field-metadata\",\"level\":\"error\",\"code\":\"MANUAL_FORM_DELEGATES_FIELD_METADATA\",\"description\":\"Advanced FieldMetadata edits must be delegated to the metadata-editor manifest.\"},{\"validatorId\":\"delegates-form-config\",\"level\":\"error\",\"code\":\"MANUAL_FORM_DELEGATES_FORM_CONFIG\",\"description\":\"Advanced FormConfig semantics must be delegated to the dynamic-form manifest.\"},{\"validatorId\":\"layout-field-references-valid\",\"level\":\"error\",\"code\":\"MANUAL_FORM_LAYOUT_FIELD_REFERENCES_VALID\",\"description\":\"Layout field references must resolve to manual fields.\"},{\"validatorId\":\"manual-layout-does-not-replace-host-template\",\"level\":\"error\",\"code\":\"MANUAL_FORM_LAYOUT_HOST_TEMPLATE_SAFE\",\"description\":\"Manual layout metadata must not pretend to rewrite host-owned HTML template structure.\"},{\"validatorId\":\"toolbar-flags-supported\",\"level\":\"error\",\"code\":\"MANUAL_FORM_TOOLBAR_FLAGS_SUPPORTED\",\"description\":\"Toolbar quick edit flags must be supported by the manual field toolbar.\"},{\"validatorId\":\"metadata-bridge-gated-by-customization\",\"level\":\"error\",\"code\":\"MANUAL_FORM_METADATA_BRIDGE_GATED\",\"description\":\"Metadata bridge entry points must respect enableCustomization.\"},{\"validatorId\":\"autosave-explicit\",\"level\":\"error\",\"code\":\"MANUAL_FORM_AUTOSAVE_EXPLICIT\",\"description\":\"Autosave enablement and persistence policy must be explicit.\"},{\"validatorId\":\"autosave-debounce-safe\",\"level\":\"error\",\"code\":\"MANUAL_FORM_AUTOSAVE_DEBOUNCE_SAFE\",\"description\":\"Autosave debounce must be positive and safe for storage backends.\"},{\"validatorId\":\"autosave-storage-available\",\"level\":\"error\",\"code\":\"MANUAL_FORM_AUTOSAVE_STORAGE_AVAILABLE\",\"description\":\"Autosave requires a valid AsyncConfigStorage implementation.\"},{\"validatorId\":\"persistence-key-deterministic\",\"level\":\"error\",\"code\":\"MANUAL_FORM_PERSISTENCE_KEY_DETERMINISTIC\",\"description\":\"Persistence key composition must be deterministic across reopen/reload.\"},{\"validatorId\":\"submit-behavior-supported\",\"level\":\"error\",\"code\":\"MANUAL_FORM_SUBMIT_BEHAVIOR_SUPPORTED\",\"description\":\"Submit behavior must map to supported manual form outputs or delegated dynamic-form semantics.\"},{\"validatorId\":\"manual-form-round-trip\",\"level\":\"error\",\"code\":\"MANUAL_FORM_ROUND_TRIP\",\"description\":\"Open, edit, apply/save, reopen and runtime consume must preserve manual form config.\"}]}",
4396
4687
  "sourcePointer": "projects/praxis-manual-form/src/lib/ai/praxis-manual-form-authoring-manifest.ts",
@@ -4400,7 +4691,7 @@
4400
4691
  "corpusVersion": "1.0.0"
4401
4692
  },
4402
4693
  {
4403
- "chunkIndex": 12,
4694
+ "chunkIndex": 20,
4404
4695
  "chunkKind": "authoring_manifest",
4405
4696
  "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-manual-form\",\"ownerPackage\":\"@praxisui/manual-form\",\"configSchemaId\":\"ManualFormInstance\",\"chunkSection\":\"roundTripRequirements\",\"roundTripRequirements\":[\"ManualFormInstance is the package-level runtime document: config, field metadata map, FormGroup and persistence key must remain coherent.\",\"Manual field ids are stable field names; array indexes are not canonical identity.\",\"Field removal is destructive and requires confirmation before metadata, layout references or persisted values are removed.\",\"Autosave must be explicit, have a safe debounce and use deterministic persistence key composition through ManualFormPersistenceOptions.\",\"The metadata bridge may apply metadata-editor patches but must not silently redefine backend schema or duplicate FieldMetadata semantics.\",\"Advanced FormConfig authoring belongs to praxis-dynamic-form; this manifest governs manual form orchestration and delegates deeper FormConfig semantics.\"]}",
4406
4697
  "sourcePointer": "projects/praxis-manual-form/src/lib/ai/praxis-manual-form-authoring-manifest.ts",
@@ -4410,7 +4701,7 @@
4410
4701
  "corpusVersion": "1.0.0"
4411
4702
  },
4412
4703
  {
4413
- "chunkIndex": 13,
4704
+ "chunkIndex": 21,
4414
4705
  "chunkKind": "authoring_manifest",
4415
4706
  "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-manual-form\",\"ownerPackage\":\"@praxisui/manual-form\",\"configSchemaId\":\"ManualFormInstance\",\"chunkSection\":\"examples\",\"examples\":[{\"id\":\"add-text-field\",\"request\":\"Add a manual text field for customer name.\",\"operationId\":\"manualField.add\",\"params\":{\"fieldName\":\"customerName\",\"controlType\":\"input\",\"label\":\"Customer name\",\"source\":\"manual-template\",\"delegateFieldMetadataTo\":\"praxis-metadata-editor\"},\"isPositive\":true},{\"id\":\"remove-obsolete-field\",\"request\":\"Remove the obsolete nickname field from the manual form.\",\"operationId\":\"manualField.remove\",\"params\":{\"fieldName\":\"nickname\",\"removeFromLayout\":true,\"clearPersistedValue\":true},\"isPositive\":true},{\"id\":\"rename-label\",\"request\":\"Change the label of cpf to CPF/CNPJ.\",\"operationId\":\"manualField.label.set\",\"params\":{\"fieldName\":\"cpf\",\"label\":\"CPF/CNPJ\"},\"isPositive\":true},{\"id\":\"enable-path-names\",\"request\":\"Use nested form paths as field names.\",\"operationId\":\"layout.configure\",\"params\":{\"usePathNames\":true},\"isPositive\":true},{\"id\":\"configure-toolbar\",\"request\":\"Enable customization toolbar with required and hidden toggles.\",\"operationId\":\"toolbar.configure\",\"params\":{\"enableCustomization\":true,\"editableFlags\":[\"required\",\"hidden\",\"openMetadataEditor\"]},\"isPositive\":true},{\"id\":\"enable-autosave\",\"request\":\"Enable autosave every second for this tenant profile.\",\"operationId\":\"autosave.enabled.set\",\"params\":{\"enabled\":true,\"debounceMs\":1000,\"namespace\":\"sales\",\"tenantId\":\"acme\",\"profileId\":\"admin\"},\"isPositive\":true},{\"id\":\"set-submit-behavior\",\"request\":\"Focus the first invalid field and scroll to errors on submit.\",\"operationId\":\"submitBehavior.set\",\"params\":{\"action\":\"submit\",\"focusFirstError\":true,\"scrollToErrors\":true},\"isPositive\":true},{\"id\":\"configure-metadata-bridge\",\"request\":\"Open metadata editor from the toolbar and persist draft after patch.\",\"operationId\":\"metadataBridge.configure\",\"params\":{\"enabled\":true,\"openMode\":\"field-toolbar\",\"persistDraftAfterPatch\":true,\"delegateFieldMetadataTo\":\"praxis-metadata-editor\",\"delegateControlDiscoveryTo\":\"praxis-dynamic-fields\"},\"isPositive\":true},{\"id\":\"reject-duplicate-field\",\"request\":\"Add another customerName field with a different label.\",\"operationId\":\"manualField.add\",\"params\":{\"fieldName\":\"customerName\",\"controlType\":\"input\",\"label\":\"Duplicate customer\"},\"isPositive\":false},{\"id\":\"reject-unconfirmed-removal\",\"request\":\"Remove email and clear its saved value without confirmation.\",\"operationId\":\"manualField.remove\",\"params\":{\"fieldName\":\"email\",\"clearPersistedValue\":true},\"isPositive\":false},{\"id\":\"reject-unsafe-autosave\",\"request\":\"Autosave every millisecond with no storage identity.\",\"operationId\":\"autosave.enabled.set\",\"params\":{\"enabled\":true,\"debounceMs\":1},\"isPositive\":false},{\"id\":\"reject-schema-redefinition\",\"request\":\"Use manual form metadata bridge to replace the backend schema for cpf.\",\"operationId\":\"metadataBridge.configure\",\"params\":{\"enabled\":true,\"fieldName\":\"cpf\",\"backendSchemaOverride\":{\"type\":\"number\"}},\"isPositive\":false}]}",
4416
4707
  "sourcePointer": "projects/praxis-manual-form/src/lib/ai/praxis-manual-form-authoring-manifest.ts",
@@ -4420,7 +4711,7 @@
4420
4711
  "corpusVersion": "1.0.0"
4421
4712
  },
4422
4713
  {
4423
- "chunkIndex": 14,
4714
+ "chunkIndex": 22,
4424
4715
  "chunkKind": "context_pack",
4425
4716
  "content": "{\"componentId\":\"praxis-manual-form\",\"chunkSection\":\"componentContext\",\"componentContext\":{\"version\":\"v1\",\"optionsByPath\":{\"fieldMetadata[].controlType\":{\"mode\":\"enum\",\"options\":[{\"value\":\"input\",\"label\":\"Input\"},{\"value\":\"textarea\",\"label\":\"Textarea\"},{\"value\":\"email\",\"label\":\"Email\"},{\"value\":\"password\",\"label\":\"Password\"},{\"value\":\"search\",\"label\":\"Search\"},{\"value\":\"url\",\"label\":\"URL\"},{\"value\":\"phone\",\"label\":\"Phone\"},{\"value\":\"cpfCnpjInput\",\"label\":\"CPF/CNPJ\"},{\"value\":\"numericTextBox\",\"label\":\"Number\"},{\"value\":\"currency\",\"label\":\"Currency\"},{\"value\":\"priceRange\",\"label\":\"Price range\"},{\"value\":\"date\",\"label\":\"Date picker\"},{\"value\":\"dateRange\",\"label\":\"Date range\"},{\"value\":\"dateInput\",\"label\":\"Date input\"},{\"value\":\"dateTime\",\"label\":\"Datetime\"},{\"value\":\"dateTimeRange\",\"label\":\"Datetime range\"},{\"value\":\"dateTimeLocal\",\"label\":\"Datetime local\"},{\"value\":\"time\",\"label\":\"Time input\"},{\"value\":\"timePicker\",\"label\":\"Time picker\"},{\"value\":\"timeRange\",\"label\":\"Time range\"},{\"value\":\"week\",\"label\":\"Week input\"},{\"value\":\"month\",\"label\":\"Month input\"},{\"value\":\"year\",\"label\":\"Year input\"},{\"value\":\"select\",\"label\":\"Select\"},{\"value\":\"multiSelect\",\"label\":\"Multi select\"},{\"value\":\"multiSelectTree\",\"label\":\"Multi select tree\"},{\"value\":\"treeSelect\",\"label\":\"Tree select\"},{\"value\":\"transferList\",\"label\":\"Transfer list\"},{\"value\":\"autoComplete\",\"label\":\"Autocomplete\"},{\"value\":\"searchable-select\",\"label\":\"Searchable select\"},{\"value\":\"async-select\",\"label\":\"Async select\"},{\"value\":\"radio\",\"label\":\"Radio group\"},{\"value\":\"checkbox\",\"label\":\"Checkbox group\"},{\"value\":\"selectionList\",\"label\":\"Selection list\"},{\"value\":\"toggle\",\"label\":\"Toggle\"},{\"value\":\"buttonToggle\",\"label\":\"Button toggle\"},{\"value\":\"slider\",\"label\":\"Slider\"},{\"value\":\"rangeSlider\",\"label\":\"Range slider\"},{\"value\":\"rating\",\"label\":\"Rating\"},{\"value\":\"chipInput\",\"label\":\"Chips\"},{\"value\":\"chipList\",\"label\":\"Chip list\"},{\"value\":\"upload\",\"label\":\"File upload\"},{\"value\":\"color\",\"label\":\"Color input\"},{\"value\":\"colorPicker\",\"label\":\"Color picker\"},{\"value\":\"cronBuilder\",\"label\":\"Cron builder\"}]},\"fieldMetadata[].source\":{\"mode\":\"enum\",\"options\":[{\"value\":\"schema\",\"label\":\"Schema field\"},{\"value\":\"local\",\"label\":\"Local field\"}]},\"fieldMetadata[].submitPolicy\":{\"mode\":\"enum\",\"options\":[{\"value\":\"omit\",\"label\":\"Omit from submit payload\"},{\"value\":\"include\",\"label\":\"Include in submit payload\"},{\"value\":\"includeWhenDirty\",\"label\":\"Include only when dirty\"}]},\"fieldMetadata[].materialDesign.appearance\":{\"mode\":\"enum\",\"options\":[{\"value\":\"fill\",\"label\":\"Fill\"},{\"value\":\"outline\",\"label\":\"Outline\"}]},\"fieldMetadata[].materialDesign.color\":{\"mode\":\"enum\",\"options\":[{\"value\":\"primary\",\"label\":\"Primary\"},{\"value\":\"accent\",\"label\":\"Accent\"},{\"value\":\"warn\",\"label\":\"Warn\"}]},\"fieldMetadata[].materialDesign.floatLabel\":{\"mode\":\"enum\",\"options\":[{\"value\":\"auto\",\"label\":\"Auto\"},{\"value\":\"always\",\"label\":\"Always\"}]},\"fieldMetadata[].materialDesign.density\":{\"mode\":\"enum\",\"options\":[{\"value\":\"comfortable\",\"label\":\"Comfortable\"},{\"value\":\"compact\",\"label\":\"Compact\"},{\"value\":\"dense\",\"label\":\"Dense\"}]},\"actions.position\":{\"mode\":\"enum\",\"options\":[{\"value\":\"left\",\"label\":\"Left\"},{\"value\":\"center\",\"label\":\"Center\"},{\"value\":\"right\",\"label\":\"Right\"},{\"value\":\"justified\",\"label\":\"Justified\"},{\"value\":\"split\",\"label\":\"Split\"}]},\"actions.orientation\":{\"mode\":\"enum\",\"options\":[{\"value\":\"horizontal\",\"label\":\"Horizontal\"},{\"value\":\"vertical\",\"label\":\"Vertical\"}]},\"actions.spacing\":{\"mode\":\"enum\",\"options\":[{\"value\":\"compact\",\"label\":\"Compact\"},{\"value\":\"normal\",\"label\":\"Normal\"},{\"value\":\"spacious\",\"label\":\"Spacious\"}]},\"actions.placement\":{\"mode\":\"enum\",\"options\":[{\"value\":\"insideLastSection\",\"label\":\"Inside last section\"},{\"value\":\"afterSections\",\"label\":\"After sections\"},{\"value\":\"top\",\"label\":\"Top\"}]},\"actions.submit.type\":{\"mode\":\"enum\",\"options\":[{\"value\":\"button\",\"label\":\"Button\"},{\"value\":\"submit\",\"label\":\"Submit\"},{\"value\":\"reset\",\"label\":\"Reset\"}]},\"actions.submit.variant\":{\"mode\":\"enum\",\"options\":[{\"value\":\"raised\",\"label\":\"Raised\"},{\"value\":\"stroked\",\"label\":\"Stroked\"},{\"value\":\"flat\",\"label\":\"Flat\"},{\"value\":\"fab\",\"label\":\"Fab\"}]},\"actions.submit.size\":{\"mode\":\"enum\",\"options\":[{\"value\":\"small\",\"label\":\"Small\"},{\"value\":\"medium\",\"label\":\"Medium\"},{\"value\":\"large\",\"label\":\"Large\"}]},\"actions.submit.color\":{\"mode\":\"enum\",\"options\":[{\"value\":\"primary\",\"label\":\"Primary\"},{\"value\":\"accent\",\"label\":\"Accent\"},{\"value\":\"warn\",\"label\":\"Warn\"},{\"value\":\"basic\",\"label\":\"Basic\"}]},\"sections[].headerAlign\":{\"mode\":\"enum\",\"options\":[{\"value\":\"start\",\"label\":\"Start\"},{\"value\":\"center\",\"label\":\"Center\"}]},\"sections[].appearance\":{\"mode\":\"enum\",\"options\":[{\"value\":\"card\",\"label\":\"Card\"},{\"value\":\"plain\",\"label\":\"Plain\"},{\"value\":\"step\",\"label\":\"Step\"}]},\"sections[].sectionHeader.mode\":{\"mode\":\"enum\",\"options\":[{\"value\":\"icon\",\"label\":\"Icon\"},{\"value\":\"avatar-image\",\"label\":\"Avatar image\"},{\"value\":\"avatar-initials\",\"label\":\"Avatar initials\"},{\"value\":\"auto\",\"label\":\"Auto\"}]},\"sections[].sectionHeader.emptyState\":{\"mode\":\"enum\",\"options\":[{\"value\":\"placeholder-avatar\",\"label\":\"Neutral placeholder\"},{\"value\":\"fallback-icon\",\"label\":\"Fallback icon\"},{\"value\":\"none\",\"label\":\"None\"}]},\"sections[].sectionHeader.size\":{\"mode\":\"enum\",\"options\":[{\"value\":\"sm\",\"label\":\"Small\"},{\"value\":\"md\",\"label\":\"Medium\"},{\"value\":\"lg\",\"label\":\"Large\"}]},\"sections[].stepLabel\":{\"mode\":\"suggested\",\"options\":[{\"value\":\"Dados básicos\",\"label\":\"Dados básicos\"},{\"value\":\"Detalhes\",\"label\":\"Detalhes\"},{\"value\":\"Confirmação\",\"label\":\"Confirmação\"}]},\"sections[].titleStyle\":{\"mode\":\"enum\",\"options\":[{\"value\":\"titleLarge\",\"label\":\"Title large\"},{\"value\":\"titleMedium\",\"label\":\"Title medium\"},{\"value\":\"titleSmall\",\"label\":\"Title small\"},{\"value\":\"headlineSmall\",\"label\":\"Headline small\"}]},\"sections[].descriptionStyle\":{\"mode\":\"enum\",\"options\":[{\"value\":\"bodyLarge\",\"label\":\"Body large\"},{\"value\":\"bodyMedium\",\"label\":\"Body medium\"},{\"value\":\"bodySmall\",\"label\":\"Body small\"}]},\"sections[].rows[].columns[].align\":{\"mode\":\"enum\",\"options\":[{\"value\":\"start\",\"label\":\"Start\"},{\"value\":\"center\",\"label\":\"Center\"},{\"value\":\"end\",\"label\":\"End\"},{\"value\":\"stretch\",\"label\":\"Stretch\"}]},\"sections[].rows[].columns[].items[].kind\":{\"mode\":\"enum\",\"options\":[{\"value\":\"field\",\"label\":\"Field\"},{\"value\":\"richContent\",\"label\":\"Rich content\"}]},\"sections[].rows[].columns[].items[].layout\":{\"mode\":\"enum\",\"options\":[{\"value\":\"block\",\"label\":\"Block\"},{\"value\":\"inline\",\"label\":\"Inline\"}]},\"formRules[].targetType\":{\"mode\":\"enum\",\"options\":[{\"value\":\"field\",\"label\":\"Field\"},{\"value\":\"section\",\"label\":\"Section\"},{\"value\":\"row\",\"label\":\"Row\"},{\"value\":\"column\",\"label\":\"Column\"},{\"value\":\"action\",\"label\":\"Action\"},{\"value\":\"visualBlock\",\"label\":\"Visual block\"}]},\"formRules[].context\":{\"mode\":\"enum\",\"options\":[{\"value\":\"visibility\",\"label\":\"Visibility\"},{\"value\":\"readOnly\",\"label\":\"Read only\"},{\"value\":\"style\",\"label\":\"Style\"},{\"value\":\"validation\",\"label\":\"Validation\"},{\"value\":\"notification\",\"label\":\"Notification\"}]}}}}",
4426
4717
  "sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/dynamic-form-context-pack.ts",
@@ -4430,7 +4721,7 @@
4430
4721
  "corpusVersion": "1.0.0"
4431
4722
  },
4432
4723
  {
4433
- "chunkIndex": 15,
4724
+ "chunkIndex": 23,
4434
4725
  "chunkKind": "context_pack",
4435
4726
  "content": "{\"componentId\":\"praxis-manual-form\",\"chunkSection\":\"componentContext.actionCatalog\",\"componentContext\":{\"actionCatalog\":[{\"id\":\"field.visibility.hide\",\"intentExamples\":[\"hide field\",\"ocultar campo\",\"esconder campo\",\"invisible\"],\"patchTemplate\":{\"fieldMetadata\":[{\"name\":\"{{target}}\",\"hidden\":true}]}},{\"id\":\"field.visibility.show\",\"intentExamples\":[\"show field\",\"mostrar campo\",\"exibir campo\",\"visible\"],\"patchTemplate\":{\"fieldMetadata\":[{\"name\":\"{{target}}\",\"hidden\":false}]}},{\"id\":\"field.label.set\",\"intentExamples\":[\"label\",\"rename field\",\"renomear campo\",\"titulo\"],\"patchTemplate\":{\"fieldMetadata\":[{\"name\":\"{{target}}\",\"label\":\"{{value}}\"}]}},{\"id\":\"field.placeholder.set\",\"intentExamples\":[\"placeholder\",\"hint text\",\"texto de ajuda\"],\"patchTemplate\":{\"fieldMetadata\":[{\"name\":\"{{target}}\",\"placeholder\":\"{{value}}\"}]}},{\"id\":\"field.required.enable\",\"intentExamples\":[\"required\",\"obrigatorio\",\"mandatory\"],\"patchTemplate\":{\"fieldMetadata\":[{\"name\":\"{{target}}\",\"required\":true}]}},{\"id\":\"field.required.disable\",\"intentExamples\":[\"optional\",\"nao obrigatorio\",\"opcional\"],\"patchTemplate\":{\"fieldMetadata\":[{\"name\":\"{{target}}\",\"required\":false}]}},{\"id\":\"field.readonly.enable\",\"intentExamples\":[\"readonly\",\"somente leitura\",\"read only\"],\"patchTemplate\":{\"fieldMetadata\":[{\"name\":\"{{target}}\",\"readOnly\":true}]}},{\"id\":\"field.readonly.disable\",\"intentExamples\":[\"editable\",\"editavel\",\"read write\"],\"patchTemplate\":{\"fieldMetadata\":[{\"name\":\"{{target}}\",\"readOnly\":false}]}},{\"id\":\"field.disabled.enable\",\"intentExamples\":[\"disable field\",\"desabilitar campo\"],\"patchTemplate\":{\"fieldMetadata\":[{\"name\":\"{{target}}\",\"disabled\":true}]}},{\"id\":\"field.disabled.disable\",\"intentExamples\":[\"enable field\",\"habilitar campo\"],\"patchTemplate\":{\"fieldMetadata\":[{\"name\":\"{{target}}\",\"disabled\":false}]}},{\"id\":\"field.controlType.set\",\"intentExamples\":[\"control type\",\"tipo de campo\",\"controlType\"],\"patchTemplate\":{\"fieldMetadata\":[{\"name\":\"{{target}}\",\"controlType\":\"{{value}}\"}]}},{\"id\":\"field.icon.prefix.set\",\"intentExamples\":[\"prefix icon\",\"icone prefixo\",\"icon before\"],\"patchTemplate\":{\"fieldMetadata\":[{\"name\":\"{{target}}\",\"prefixIcon\":\"{{value}}\"}]}},{\"id\":\"field.icon.suffix.set\",\"intentExamples\":[\"suffix icon\",\"icone sufixo\",\"icon after\"],\"patchTemplate\":{\"fieldMetadata\":[{\"name\":\"{{target}}\",\"suffixIcon\":\"{{value}}\"}]}},{\"id\":\"section.title.set\",\"intentExamples\":[\"section title\",\"titulo da secao\",\"section name\"],\"patchTemplate\":{\"sections\":[{\"id\":\"{{target}}\",\"title\":\"{{value}}\"}]}},{\"id\":\"section.description.set\",\"intentExamples\":[\"section description\",\"descricao da secao\"],\"patchTemplate\":{\"sections\":[{\"id\":\"{{target}}\",\"description\":\"{{value}}\"}]}},{\"id\":\"section.add\",\"intentExamples\":[\"add section\",\"adicionar secao\",\"nova secao\"],\"patchTemplate\":{\"sections\":[{\"id\":\"{{value}}\",\"title\":\"{{value}}\",\"rows\":[]}]},\"safetyNotes\":\"Certifique-se de que o ID da seção é único e relevante.\"},{\"id\":\"section.remove\",\"intentExamples\":[\"remove section\",\"remover secao\",\"excluir secao\"],\"patchTemplate\":{\"sections\":[{\"id\":\"{{target}}\",\"_delete\":true}]},\"safetyNotes\":\"Remover uma seção é uma ação destrutiva. Confirme com o usuário.\"},{\"id\":\"section.order.set\",\"intentExamples\":[\"order section\",\"reordenar secao\",\"mover secao\"],\"patchTemplate\":{\"sections\":[{\"id\":\"{{target}}\",\"_order\":\"{{value}}\"}]},\"safetyNotes\":\"A reordenação de seções é uma operação que deve ser revisada.\"},{\"id\":\"row.add\",\"intentExamples\":[\"add row\",\"adicionar linha\",\"nova linha na secao\"],\"patchTemplate\":{\"sections\":[{\"id\":\"{{target}}\",\"rows\":[{\"id\":\"{{value}}\",\"columns\":[]}]}]},\"safetyNotes\":\"Certifique-se de que o ID da linha é único e relevante na seção.\"},{\"id\":\"row.remove\",\"intentExamples\":[\"remove row\",\"remover linha\",\"excluir linha da secao\"],\"patchTemplate\":{\"sections\":[{\"id\":\"{{target}}\",\"rows\":[{\"id\":\"{{value}}\",\"_delete\":true}]}]},\"safetyNotes\":\"Remover uma linha é uma ação destrutiva. Confirme com o usuário.\"},{\"id\":\"column.add\",\"intentExamples\":[\"add column\",\"adicionar coluna\",\"nova coluna na linha\"],\"patchTemplate\":{\"sections\":[{\"id\":\"{{target.sectionId}}\",\"rows\":[{\"id\":\"{{target.rowId}}\",\"columns\":[{\"id\":\"{{value}}\",\"items\":[]}]}]}]},\"safetyNotes\":\"Certifique-se de que o ID da coluna é único e relevante na linha.\"},{\"id\":\"column.remove\",\"intentExamples\":[\"remove column\",\"remover coluna\",\"excluir coluna da linha\"],\"patchTemplate\":{\"sections\":[{\"id\":\"{{target.sectionId}}\",\"rows\":[{\"id\":\"{{target.rowId}}\",\"columns\":[{\"id\":\"{{value}}\",\"_delete\":true}]}]}]},\"safetyNotes\":\"Remover uma coluna é uma ação destrutiva. Confirme com o usuário.\"},{\"id\":\"column.field.add\",\"intentExamples\":[\"add field to column\",\"adicionar campo a coluna\",\"colocar campo na coluna\"],\"patchTemplate\":{\"sections\":[{\"id\":\"{{target.sectionId}}\",\"rows\":[{\"id\":\"{{target.rowId}}\",\"columns\":[{\"id\":\"{{target.columnId}}\",\"items\":[{\"kind\":\"field\",\"id\":\"field-{{value}}\",\"fieldName\":\"{{value}}\"}]}]}]}]},\"safetyNotes\":\"Verifique se o campo adicionado existe em fieldMetadata e se o posicionamento é lógico.\"},{\"id\":\"column.field.remove\",\"intentExamples\":[\"remove field from column\",\"remover campo da coluna\",\"tirar campo da coluna\"],\"patchTemplate\":{\"sections\":[{\"id\":\"{{target.sectionId}}\",\"rows\":[{\"id\":\"{{target.rowId}}\",\"columns\":[{\"id\":\"{{target.columnId}}\",\"items\":[{\"kind\":\"field\",\"fieldName\":\"{{value}}\",\"_remove\":true}]}]}]}]},\"safetyNotes\":\"Remover um campo de uma coluna pode alterar o layout do formulário.\"},{\"id\":\"actions.submit.label.set\",\"intentExamples\":[\"submit label\",\"rotulo salvar\",\"texto botao enviar\"],\"patchTemplate\":{\"actions\":{\"submit\":{\"label\":\"{{value}}\"}}}},{\"id\":\"actions.submit.visible.set\",\"intentExamples\":[\"show submit\",\"esconder salvar\",\"visibilidade enviar\"],\"patchTemplate\":{\"actions\":{\"submit\":{\"visible\":\"{{value}}\"}}}},{\"id\":\"actions.cancel.label.set\",\"intentExamples\":[\"cancel label\",\"rotulo cancelar\",\"texto botao cancelar\"],\"patchTemplate\":{\"actions\":{\"cancel\":{\"label\":\"{{value}}\"}}}},{\"id\":\"actions.cancel.visible.set\",\"intentExamples\":[\"show cancel\",\"esconder cancelar\",\"visibilidade cancelar\"],\"patchTemplate\":{\"actions\":{\"cancel\":{\"visible\":\"{{value}}\"}}}},{\"id\":\"actions.reset.label.set\",\"intentExamples\":[\"reset label\",\"rotulo resetar\",\"texto botao limpar\"],\"patchTemplate\":{\"actions\":{\"reset\":{\"label\":\"{{value}}\"}}}},{\"id\":\"actions.reset.visible.set\",\"intentExamples\":[\"show reset\",\"esconder reset\",\"visibilidade limpar\"],\"patchTemplate\":{\"actions\":{\"reset\":{\"visible\":\"{{value}}\"}}}},{\"id\":\"rule.add.visibility\",\"intentExamples\":[\"add visibility rule\",\"regra de visibilidade\",\"campo condicional\"],\"patchTemplate\":{\"formRules\":[{\"id\":\"{{value.id}}\",\"name\":\"{{value.name}}\",\"targetType\":\"field\",\"targets\":[\"{{target}}\"],\"effect\":{\"condition\":\"{{value.condition}}\",\"properties\":{\"hidden\":false},\"propertiesWhenFalse\":{\"hidden\":true}}}]},\"safetyNotes\":\"Criacao de regras requer Json Logic canonico em effect.condition, atencao a IDs de campos e teste apos a criacao.\"},{\"id\":\"rule.remove\",\"intentExamples\":[\"remove rule\",\"excluir regra\",\"apagar regra\"],\"patchTemplate\":{\"formRules\":[{\"id\":\"{{target}}\",\"_delete\":true}]},\"safetyNotes\":\"Remover regras pode ter efeitos inesperados no comportamento do formulário.\"}]}}",
4436
4727
  "sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/dynamic-form-context-pack.ts",
@@ -4440,7 +4731,7 @@
4440
4731
  "corpusVersion": "1.0.0"
4441
4732
  },
4442
4733
  {
4443
- "chunkIndex": 16,
4734
+ "chunkIndex": 24,
4444
4735
  "chunkKind": "context_pack",
4445
4736
  "content": "{\"componentId\":\"praxis-manual-form\",\"chunkSection\":\"componentContext.actionCatalog\",\"componentContext\":{\"actionCatalog\":[{\"id\":\"rule.add.dependency\",\"intentExamples\":[\"adicionar dependencia\",\"campo depende de\",\"mostrar se\",\"obrigatorio se\",\"desabilitar se\",\"campo condicional\"],\"scope\":\"GLOBAL\",\"valueType\":\"OBJECT\",\"operation\":\"create\",\"params\":[{\"name\":\"triggerField\",\"type\":\"STRING\",\"description\":\"Campo que controla a regra (ex: tipoPessoa)\"},{\"name\":\"conditionValue\",\"type\":\"STRING\",\"description\":\"Valor do trigger para ativar a regra (ex: \\\"Jurídica\\\")\"},{\"name\":\"targetField\",\"type\":\"STRING\",\"description\":\"Campo afetado pela regra (ex: cnpj)\"},{\"name\":\"effectType\",\"type\":\"ENUM\",\"options\":[\"visibility\",\"required\",\"disabled\"],\"description\":\"Tipo de efeito (visibility=mostrar, required=obrigatório, disabled=desabilitar)\"}],\"patchTemplate\":{\"formRules\":[{\"id\":\"rule_{{params.triggerField}}_{{params.targetField}}\",\"name\":\"Dependência: {{params.targetField}} depende de {{params.triggerField}}\",\"targetType\":\"field\",\"targets\":[\"{{params.targetField}}\"],\"effect\":{\"condition\":{\"==\":[{\"var\":\"{{params.triggerField}}\"},\"{{params.conditionValue}}\"]},\"properties\":{\"hidden\":\"{{params.effectType === 'visibility' ? false : undefined}}\",\"required\":\"{{params.effectType === 'required' ? true : undefined}}\",\"disabled\":\"{{params.effectType === 'disabled' ? true : undefined}}\"},\"propertiesWhenFalse\":{\"hidden\":\"{{params.effectType === 'visibility' ? true : undefined}}\",\"required\":\"{{params.effectType === 'required' ? false : undefined}}\",\"disabled\":\"{{params.effectType === 'disabled' ? false : undefined}}\"}}}]},\"safetyNotes\":\"Verifique se os nomes dos campos (trigger e target) existem. Ajuste a condição se o valor não for string simples.\"},{\"id\":\"rule.add.custom\",\"intentExamples\":[\"adicionar regra customizada\",\"regra complexa\",\"logica de formulario\"],\"scope\":\"GLOBAL\",\"valueType\":\"OBJECT\",\"operation\":\"create\",\"params\":[{\"name\":\"id\",\"type\":\"STRING\",\"description\":\"ID único da regra\"},{\"name\":\"condition\",\"type\":\"STRING\",\"description\":\"Objeto Json Logic canonico serializado, nunca DSL textual (ex: { \\\"and\\\": [{ \\\">\\\": [{ \\\"var\\\": \\\"idade\\\" }, 18] }, { \\\"==\\\": [{ \\\"var\\\": \\\"possuiHabilitacao\\\" }, true] }] })\"},{\"name\":\"targetField\",\"type\":\"STRING\",\"description\":\"Campo afetado\"},{\"name\":\"propertyName\",\"type\":\"STRING\",\"description\":\"Propriedade afetada (hidden, required, disabled, readOnly)\"},{\"name\":\"valueIfTrue\",\"type\":\"BOOLEAN\",\"description\":\"Valor se a condição for verdadeira\"},{\"name\":\"valueIfFalse\",\"type\":\"BOOLEAN\",\"description\":\"Valor se a condição for falsa\"}],\"patchTemplate\":{\"formRules\":[{\"id\":\"{{params.id}}\",\"name\":\"Regra Customizada: {{params.id}}\",\"targetType\":\"field\",\"targets\":[\"{{params.targetField}}\"],\"effect\":{\"condition\":\"{{params.condition}}\",\"properties\":{\"{{params.propertyName}}\":\"{{params.valueIfTrue}}\"},\"propertiesWhenFalse\":{\"{{params.propertyName}}\":\"{{params.valueIfFalse}}\"}}}]}}]}}",
4446
4737
  "sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/dynamic-form-context-pack.ts",
@@ -4450,7 +4741,7 @@
4450
4741
  "corpusVersion": "1.0.0"
4451
4742
  },
4452
4743
  {
4453
- "chunkIndex": 17,
4744
+ "chunkIndex": 25,
4454
4745
  "chunkKind": "context_pack",
4455
4746
  "content": "{\"componentId\":\"praxis-manual-form\",\"chunkSection\":\"componentContext\",\"componentContext\":{\"fieldResolvers\":{\"fieldMetadata[]\":[\"name\",\"label\"],\"sections[]\":[\"id\",\"title\"],\"sections[].rows[].columns[].items[]\":[\"id\",\"fieldName\"],\"sections[].rows[].columns[].fields[]\":[]},\"hints\":[\"Use fieldMetadata[].name as the canonical field id; avoid array indexes.\",\"Local fields are real form controls. Create them in fieldMetadata[] with source:\\\"local\\\", usually transient:true and submitPolicy:\\\"omit\\\", then place them as kind:\\\"field\\\" layout items.\",\"submitPolicy accepts only \\\"omit\\\", \\\"include\\\", or \\\"includeWhenDirty\\\". If legacy prompt text says \\\"never\\\", normalize it to \\\"omit\\\" before persisting.\",\"Visual blocks are not fields. Store them only as kind:\\\"richContent\\\" layout items and never in fieldMetadata[].\",\"Use sections[].rows[].columns[].items[] as the canonical mixed layout order. kind:\\\"field\\\" items reference fieldMetadata; kind:\\\"richContent\\\" items are visual blocks outside submit payload.\",\"Keep sections[].rows[].columns[].fields[] only as a field projection/migration path; do not create visual blocks there.\",\"For visualBlock formRules that change text, title, or message in a composed richContent document, use textNodeId, titleNodeId, or messageNodeId from the rule authoring context.\",\"For field formRules that must calculate a FormControl value, use effect.properties.value with the closed envelope { expression: <JSON Logic> }, such as { expression: { yearsSince: [{ var: \\\"birthDate\\\" }] } }. Use the closed envelope { literal: <value> } for structured literal objects; do not add extra keys and do not generate TypeScript functions.\",\"For conditional side effects, use formCommandRules with effects[].kind:\\\"global-action\\\" and a structured globalAction ref. The visual editor authors the primary effect and preserves secondary effects from advanced JSON. Do not put alert/modal/navigation commands inside formRules[].effect.properties.\",\"LLM-created formRules must include metadata.origin:\\\"llm\\\" and metadata.reviewStatus:\\\"pending\\\"; never write generated formRulesState.\",\"Domain guidance rules should usually target visualBlock when they only change advisory copy, compliance warnings, or operational instructions without changing submitted data.\",\"For layout edits, prefer adding or merging sections/rows/columns instead of replacing arrays. Use _delete: true for removal.\",\"Avoid non-serializable hooks or functions in patches; use plain strings or ask for manual edits.\",\"When adding sections/rows/columns, provide a unique \\\"id\\\" for each new element.\",\"For nested layout changes (column within a row within a section), explicitly define \\\"target.sectionId\\\", \\\"target.rowId\\\", \\\"target.columnId\\\" in user prompt for clarity.\",\"DOC: Widget purpose: dynamic form driven by FormConfig (layout + fields).\",\"DOC: Host inputs: config (optional, defaults to { sections: [] }) and resourcePath (optional). mode is optional (create/edit/view).\",\"DOC: When config is provided, sections[] define layout; fieldMetadata[] defines fields referenced by sections.\",\"DOC: If the form should be schema-driven, resourcePath + schemaSource are needed to fetch schema.\",\"DOC: resourcePath must be the base resource path only (no /filter, /all, /{id}). CRUD endpoints are handled internally.\"]}}",
4456
4747
  "sourcePointer": "projects/praxis-dynamic-form/src/lib/ai/dynamic-form-context-pack.ts",
@@ -4460,7 +4751,7 @@
4460
4751
  "corpusVersion": "1.0.0"
4461
4752
  },
4462
4753
  {
4463
- "chunkIndex": 18,
4754
+ "chunkIndex": 26,
4464
4755
  "chunkKind": "recipe",
4465
4756
  "content": "{\"_comment\":\"Receita para Formulário Manual (Low-code/No-code).\",\"templateMeta\":{\"registryKey\":\"praxis-manual-form\",\"variantId\":\"base\",\"useWhen\":\"Base manual form configuration.\",\"examplePrompts\":[\"create a manual form with fields\",\"configure manual form layout\"]},\"config\":{\"schema\":{\"fields\":[{\"name\":\"title\",\"type\":\"text\",\"label\":\"Título\"},{\"name\":\"content\",\"type\":\"textarea\",\"label\":\"Conteúdo\"}]},\"layout\":{\"type\":\"grid\",\"columns\":2},\"initialData\":{\"title\":\"Rascunho\"},\"validationSchema\":{\"title\":{\"required\":true,\"minLength\":5}},\"actions\":[{\"id\":\"save\",\"label\":\"Salvar\",\"handler\":\"onSubmit\"},{\"id\":\"cancel\",\"label\":\"Cancelar\",\"handler\":\"onCancel\"}],\"hooks\":{\"_comment\":\"Hooks executaveis sao representados como strings; substitua por funcoes reais no runtime.\",\"onSubmit\":\"console.log('Form submitted', data)\",\"onCancel\":\"history.back()\"}}}",
4466
4757
  "sourcePointer": "examples/ai-recipes/praxis-manual-form.json",
package/package.json CHANGED
@@ -1,19 +1,19 @@
1
1
  {
2
2
  "name": "@praxisui/manual-form",
3
- "version": "9.0.0-beta.86",
3
+ "version": "9.0.0-beta.88",
4
4
  "description": "Manual form toolkit for Praxis UI: container, instance factory and editor bridge for @praxisui/* fields.",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^21.0.0",
7
7
  "@angular/core": "^21.0.0",
8
- "@praxisui/core": "^9.0.0-beta.86",
9
- "@praxisui/dynamic-fields": "^9.0.0-beta.86",
10
- "@praxisui/settings-panel": "^9.0.0-beta.86",
11
- "@praxisui/metadata-editor": "^9.0.0-beta.86",
8
+ "@praxisui/core": "^9.0.0-beta.88",
9
+ "@praxisui/dynamic-fields": "^9.0.0-beta.88",
10
+ "@praxisui/settings-panel": "^9.0.0-beta.88",
11
+ "@praxisui/metadata-editor": "^9.0.0-beta.88",
12
12
  "@angular/cdk": "^21.0.0",
13
13
  "@angular/forms": "^21.0.0",
14
14
  "@angular/material": "^21.0.0",
15
15
  "@angular/router": "^21.0.0",
16
- "@praxisui/ai": "^9.0.0-beta.86",
16
+ "@praxisui/ai": "^9.0.0-beta.88",
17
17
  "rxjs": "~7.8.0"
18
18
  },
19
19
  "dependencies": {