@praxisui/visual-builder 9.0.0-beta.85 → 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.
- package/ai/component-registry.json +374 -15
- package/fesm2022/praxisui-visual-builder.mjs +306 -327
- package/package.json +5 -5
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
|
-
"generatedAt": "2026-07-
|
|
3
|
+
"generatedAt": "2026-07-23T02:50:28.389Z",
|
|
4
4
|
"packageName": "@praxisui/visual-builder",
|
|
5
|
-
"packageVersion": "9.0.0-beta.
|
|
5
|
+
"packageVersion": "9.0.0-beta.88",
|
|
6
6
|
"sourceRegistry": "praxis-component-registry-ingestion",
|
|
7
7
|
"sourceRegistryVersion": "1.0.0",
|
|
8
8
|
"componentCount": 1,
|
|
@@ -414,6 +414,61 @@
|
|
|
414
414
|
"identityKeys": [
|
|
415
415
|
"nodeId"
|
|
416
416
|
],
|
|
417
|
+
"inputSchema": {
|
|
418
|
+
"type": "object",
|
|
419
|
+
"required": [
|
|
420
|
+
"nodeId",
|
|
421
|
+
"nodeType"
|
|
422
|
+
],
|
|
423
|
+
"properties": {
|
|
424
|
+
"nodeId": {
|
|
425
|
+
"type": "string"
|
|
426
|
+
},
|
|
427
|
+
"nodeType": {
|
|
428
|
+
"enum": [
|
|
429
|
+
"fieldCondition",
|
|
430
|
+
"propertyRule",
|
|
431
|
+
"andGroup",
|
|
432
|
+
"orGroup",
|
|
433
|
+
"notGroup",
|
|
434
|
+
"xorGroup",
|
|
435
|
+
"impliesGroup",
|
|
436
|
+
"requiredIf",
|
|
437
|
+
"visibleIf",
|
|
438
|
+
"disabledIf",
|
|
439
|
+
"readonlyIf",
|
|
440
|
+
"forEach",
|
|
441
|
+
"uniqueBy",
|
|
442
|
+
"minLength",
|
|
443
|
+
"maxLength",
|
|
444
|
+
"ifDefined",
|
|
445
|
+
"ifNotNull",
|
|
446
|
+
"ifExists",
|
|
447
|
+
"withDefault",
|
|
448
|
+
"functionCall",
|
|
449
|
+
"fieldToField",
|
|
450
|
+
"contextual",
|
|
451
|
+
"atLeast",
|
|
452
|
+
"exactly",
|
|
453
|
+
"expression",
|
|
454
|
+
"contextualTemplate",
|
|
455
|
+
"custom"
|
|
456
|
+
]
|
|
457
|
+
},
|
|
458
|
+
"label": {
|
|
459
|
+
"type": "string"
|
|
460
|
+
},
|
|
461
|
+
"parentId": {
|
|
462
|
+
"type": "string"
|
|
463
|
+
},
|
|
464
|
+
"config": {
|
|
465
|
+
"type": "object"
|
|
466
|
+
},
|
|
467
|
+
"metadata": {
|
|
468
|
+
"type": "object"
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
},
|
|
417
472
|
"failureModes": [
|
|
418
473
|
"duplicate-node-id",
|
|
419
474
|
"unsupported-node-type",
|
|
@@ -490,6 +545,23 @@
|
|
|
490
545
|
"identityKeys": [
|
|
491
546
|
"nodeId"
|
|
492
547
|
],
|
|
548
|
+
"inputSchema": {
|
|
549
|
+
"type": "object",
|
|
550
|
+
"required": [
|
|
551
|
+
"nodeId"
|
|
552
|
+
],
|
|
553
|
+
"properties": {
|
|
554
|
+
"nodeId": {
|
|
555
|
+
"type": "string"
|
|
556
|
+
},
|
|
557
|
+
"removeDescendants": {
|
|
558
|
+
"type": "boolean"
|
|
559
|
+
},
|
|
560
|
+
"preserveDisconnectedChildren": {
|
|
561
|
+
"type": "boolean"
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
},
|
|
493
565
|
"failureModes": [
|
|
494
566
|
"node-not-found",
|
|
495
567
|
"destructive-removal-not-confirmed",
|
|
@@ -570,6 +642,29 @@
|
|
|
570
642
|
"identityKeys": [
|
|
571
643
|
"nodeId"
|
|
572
644
|
],
|
|
645
|
+
"inputSchema": {
|
|
646
|
+
"type": "object",
|
|
647
|
+
"required": [
|
|
648
|
+
"nodeId"
|
|
649
|
+
],
|
|
650
|
+
"properties": {
|
|
651
|
+
"nodeId": {
|
|
652
|
+
"type": "string"
|
|
653
|
+
},
|
|
654
|
+
"label": {
|
|
655
|
+
"type": "string"
|
|
656
|
+
},
|
|
657
|
+
"configPatch": {
|
|
658
|
+
"type": "object"
|
|
659
|
+
},
|
|
660
|
+
"metadataPatch": {
|
|
661
|
+
"type": "object"
|
|
662
|
+
},
|
|
663
|
+
"expanded": {
|
|
664
|
+
"type": "boolean"
|
|
665
|
+
}
|
|
666
|
+
}
|
|
667
|
+
},
|
|
573
668
|
"failureModes": [
|
|
574
669
|
"node-not-found",
|
|
575
670
|
"config-shape-invalid",
|
|
@@ -651,6 +746,31 @@
|
|
|
651
746
|
"targetNodeId",
|
|
652
747
|
"edgeKind"
|
|
653
748
|
],
|
|
749
|
+
"inputSchema": {
|
|
750
|
+
"type": "object",
|
|
751
|
+
"required": [
|
|
752
|
+
"sourceNodeId",
|
|
753
|
+
"targetNodeId"
|
|
754
|
+
],
|
|
755
|
+
"properties": {
|
|
756
|
+
"sourceNodeId": {
|
|
757
|
+
"type": "string"
|
|
758
|
+
},
|
|
759
|
+
"targetNodeId": {
|
|
760
|
+
"type": "string"
|
|
761
|
+
},
|
|
762
|
+
"edgeKind": {
|
|
763
|
+
"enum": [
|
|
764
|
+
"child",
|
|
765
|
+
"condition",
|
|
766
|
+
"effect"
|
|
767
|
+
]
|
|
768
|
+
},
|
|
769
|
+
"insertIndex": {
|
|
770
|
+
"type": "number"
|
|
771
|
+
}
|
|
772
|
+
}
|
|
773
|
+
},
|
|
654
774
|
"failureModes": [
|
|
655
775
|
"source-node-not-found",
|
|
656
776
|
"target-node-not-found",
|
|
@@ -732,6 +852,31 @@
|
|
|
732
852
|
"targetNodeId",
|
|
733
853
|
"edgeKind"
|
|
734
854
|
],
|
|
855
|
+
"inputSchema": {
|
|
856
|
+
"type": "object",
|
|
857
|
+
"required": [
|
|
858
|
+
"sourceNodeId",
|
|
859
|
+
"targetNodeId"
|
|
860
|
+
],
|
|
861
|
+
"properties": {
|
|
862
|
+
"sourceNodeId": {
|
|
863
|
+
"type": "string"
|
|
864
|
+
},
|
|
865
|
+
"targetNodeId": {
|
|
866
|
+
"type": "string"
|
|
867
|
+
},
|
|
868
|
+
"edgeKind": {
|
|
869
|
+
"enum": [
|
|
870
|
+
"child",
|
|
871
|
+
"condition",
|
|
872
|
+
"effect"
|
|
873
|
+
]
|
|
874
|
+
},
|
|
875
|
+
"removeOrphanTarget": {
|
|
876
|
+
"type": "boolean"
|
|
877
|
+
}
|
|
878
|
+
}
|
|
879
|
+
},
|
|
735
880
|
"failureModes": [
|
|
736
881
|
"edge-not-found",
|
|
737
882
|
"destructive-removal-not-confirmed",
|
|
@@ -817,6 +962,35 @@
|
|
|
817
962
|
"scope",
|
|
818
963
|
"name"
|
|
819
964
|
],
|
|
965
|
+
"inputSchema": {
|
|
966
|
+
"type": "object",
|
|
967
|
+
"required": [
|
|
968
|
+
"name",
|
|
969
|
+
"scope",
|
|
970
|
+
"type"
|
|
971
|
+
],
|
|
972
|
+
"properties": {
|
|
973
|
+
"name": {
|
|
974
|
+
"type": "string"
|
|
975
|
+
},
|
|
976
|
+
"scope": {
|
|
977
|
+
"type": "string"
|
|
978
|
+
},
|
|
979
|
+
"type": {
|
|
980
|
+
"enum": [
|
|
981
|
+
"string",
|
|
982
|
+
"number",
|
|
983
|
+
"boolean",
|
|
984
|
+
"object",
|
|
985
|
+
"array"
|
|
986
|
+
]
|
|
987
|
+
},
|
|
988
|
+
"defaultValue": {},
|
|
989
|
+
"description": {
|
|
990
|
+
"type": "string"
|
|
991
|
+
}
|
|
992
|
+
}
|
|
993
|
+
},
|
|
820
994
|
"failureModes": [
|
|
821
995
|
"duplicate-variable",
|
|
822
996
|
"scope-not-found",
|
|
@@ -899,6 +1073,33 @@
|
|
|
899
1073
|
"identityKeys": [
|
|
900
1074
|
"nodeId"
|
|
901
1075
|
],
|
|
1076
|
+
"inputSchema": {
|
|
1077
|
+
"type": "object",
|
|
1078
|
+
"required": [
|
|
1079
|
+
"nodeId",
|
|
1080
|
+
"condition"
|
|
1081
|
+
],
|
|
1082
|
+
"properties": {
|
|
1083
|
+
"nodeId": {
|
|
1084
|
+
"type": "string"
|
|
1085
|
+
},
|
|
1086
|
+
"condition": {
|
|
1087
|
+
"type": "object"
|
|
1088
|
+
},
|
|
1089
|
+
"mode": {
|
|
1090
|
+
"enum": [
|
|
1091
|
+
"replace",
|
|
1092
|
+
"merge"
|
|
1093
|
+
]
|
|
1094
|
+
},
|
|
1095
|
+
"source": {
|
|
1096
|
+
"enum": [
|
|
1097
|
+
"visual",
|
|
1098
|
+
"jsonLogic"
|
|
1099
|
+
]
|
|
1100
|
+
}
|
|
1101
|
+
}
|
|
1102
|
+
},
|
|
902
1103
|
"failureModes": [
|
|
903
1104
|
"node-not-found",
|
|
904
1105
|
"json-logic-invalid",
|
|
@@ -1000,6 +1201,45 @@
|
|
|
1000
1201
|
"targetType",
|
|
1001
1202
|
"targets"
|
|
1002
1203
|
],
|
|
1204
|
+
"inputSchema": {
|
|
1205
|
+
"type": "object",
|
|
1206
|
+
"required": [
|
|
1207
|
+
"nodeId",
|
|
1208
|
+
"targetType",
|
|
1209
|
+
"targets",
|
|
1210
|
+
"properties"
|
|
1211
|
+
],
|
|
1212
|
+
"properties": {
|
|
1213
|
+
"nodeId": {
|
|
1214
|
+
"type": "string"
|
|
1215
|
+
},
|
|
1216
|
+
"targetType": {
|
|
1217
|
+
"enum": [
|
|
1218
|
+
"field",
|
|
1219
|
+
"section",
|
|
1220
|
+
"action",
|
|
1221
|
+
"row",
|
|
1222
|
+
"column",
|
|
1223
|
+
"visualBlock"
|
|
1224
|
+
]
|
|
1225
|
+
},
|
|
1226
|
+
"targets": {
|
|
1227
|
+
"type": "array",
|
|
1228
|
+
"items": {
|
|
1229
|
+
"type": "string"
|
|
1230
|
+
}
|
|
1231
|
+
},
|
|
1232
|
+
"properties": {
|
|
1233
|
+
"type": "object"
|
|
1234
|
+
},
|
|
1235
|
+
"propertiesWhenFalse": {
|
|
1236
|
+
"type": "object"
|
|
1237
|
+
},
|
|
1238
|
+
"conditionNodeId": {
|
|
1239
|
+
"type": "string"
|
|
1240
|
+
}
|
|
1241
|
+
}
|
|
1242
|
+
},
|
|
1003
1243
|
"failureModes": [
|
|
1004
1244
|
"node-not-found",
|
|
1005
1245
|
"target-not-found",
|
|
@@ -1082,6 +1322,25 @@
|
|
|
1082
1322
|
"format",
|
|
1083
1323
|
"compareMode"
|
|
1084
1324
|
],
|
|
1325
|
+
"inputSchema": {
|
|
1326
|
+
"type": "object",
|
|
1327
|
+
"properties": {
|
|
1328
|
+
"format": {
|
|
1329
|
+
"enum": [
|
|
1330
|
+
"json"
|
|
1331
|
+
]
|
|
1332
|
+
},
|
|
1333
|
+
"requireStableIds": {
|
|
1334
|
+
"type": "boolean"
|
|
1335
|
+
},
|
|
1336
|
+
"compareMode": {
|
|
1337
|
+
"enum": [
|
|
1338
|
+
"semantic",
|
|
1339
|
+
"exact"
|
|
1340
|
+
]
|
|
1341
|
+
}
|
|
1342
|
+
}
|
|
1343
|
+
},
|
|
1085
1344
|
"failureModes": [
|
|
1086
1345
|
"graph-invalid",
|
|
1087
1346
|
"export-failed",
|
|
@@ -1448,6 +1707,96 @@
|
|
|
1448
1707
|
{
|
|
1449
1708
|
"chunkIndex": 1,
|
|
1450
1709
|
"chunkKind": "authoring_manifest",
|
|
1710
|
+
"content": "{\"operationId\":\"node.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-visual-builder\",\"ownerPackage\":\"@praxisui/visual-builder\",\"configSchemaId\":\"RuleBuilderState\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Add visual rule node Effects: compile-domain-patch. Add a condition that age is greater than 18. Add a rule that hides the spouse section. Add another node with id age-gt-18.\",\"scope\":\"rules\",\"target\":{\"kind\":\"node\",\"resolver\":\"rule-node-by-id\",\"required\":true},\"inputContract\":{\"required\":[\"nodeId\",\"nodeType\"],\"properties\":[\"nodeId\",\"nodeType\",\"label\",\"parentId\",\"config\",\"metadata\"],\"semanticTerms\":[\"nodeId\",\"nodeType\",\"label\",\"parentId\",\"config\",\"metadata\",\"fieldCondition\",\"propertyRule\",\"andGroup\",\"orGroup\",\"notGroup\",\"xorGroup\",\"impliesGroup\",\"requiredIf\",\"visibleIf\",\"disabledIf\",\"readonlyIf\",\"forEach\",\"uniqueBy\",\"minLength\",\"maxLength\",\"ifDefined\",\"ifNotNull\",\"ifExists\",\"withDefault\",\"functionCall\",\"fieldToField\",\"contextual\",\"atLeast\",\"exactly\",\"expression\",\"contextualTemplate\",\"custom\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"RuleBuilderState.nodes\",\"RuleBuilderState.rootNodes\",\"RuleNodeRegistryService\"],\"validators\":[{\"validatorId\":\"node-id-unique\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_NODE_ID_UNIQUE\",\"description\":\"Rule node ids must be unique and stable.\"},{\"validatorId\":\"node-type-supported\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_NODE_TYPE_SUPPORTED\",\"description\":\"Node type must be supported by the rule node registry and visual editor.\"},{\"validatorId\":\"parent-node-exists\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_PARENT_NODE_EXISTS\",\"description\":\"Parent node must exist when adding a child node.\"},{\"validatorId\":\"graph-valid\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_GRAPH_VALID\",\"description\":\"Graph structure must pass registry integrity validation.\"},{\"validatorId\":\"dsl-round-trip-stable\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_DSL_ROUND_TRIP_STABLE\",\"description\":\"Serialized JSON output must import back to the same semantic visual model.\"}],\"preconditions\":[\"rule-builder-state-loaded\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"add-field-condition\",\"request\":\"Add a condition that age is greater than 18.\",\"operationId\":\"node.add\",\"params\":{\"nodeId\":\"age-gt-18\",\"nodeType\":\"fieldCondition\",\"label\":\"Age over 18\",\"config\":{\"type\":\"fieldCondition\",\"fieldName\":\"age\",\"operator\":\"gt\",\"value\":18}},\"isPositive\":true},{\"id\":\"add-property-rule\",\"request\":\"Add a rule that hides the spouse section.\",\"operationId\":\"node.add\",\"params\":{\"nodeId\":\"hide-spouse-section\",\"nodeType\":\"propertyRule\",\"config\":{\"type\":\"propertyRule\",\"targetType\":\"section\",\"targets\":[\"spouse\"],\"properties\":{\"visible\":false}}},\"isPositive\":true}],\"negativeExamples\":[{\"id\":\"reject-duplicate-node\",\"request\":\"Add another node with id age-gt-18.\",\"operationId\":\"node.add\",\"params\":{\"nodeId\":\"age-gt-18\",\"nodeType\":\"fieldCondition\"},\"isPositive\":false}]}",
|
|
1711
|
+
"sourcePointer": "projects/praxis-visual-builder/src/lib/ai/praxis-visual-builder-authoring-manifest.ts",
|
|
1712
|
+
"contentHash": "f257af5687de46645235b500406a5ef412d80866b3ce9ddfa5e6f192559c5314",
|
|
1713
|
+
"sourceKind": "component_definition",
|
|
1714
|
+
"sourceId": "praxis-visual-builder",
|
|
1715
|
+
"corpusVersion": "1.0.0"
|
|
1716
|
+
},
|
|
1717
|
+
{
|
|
1718
|
+
"chunkIndex": 2,
|
|
1719
|
+
"chunkKind": "authoring_manifest",
|
|
1720
|
+
"content": "{\"operationId\":\"node.remove\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-visual-builder\",\"ownerPackage\":\"@praxisui/visual-builder\",\"configSchemaId\":\"RuleBuilderState\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Remove visual rule node Effects: compile-domain-patch.\",\"scope\":\"rules\",\"target\":{\"kind\":\"node\",\"resolver\":\"rule-node-by-id\",\"required\":true},\"inputContract\":{\"required\":[\"nodeId\"],\"properties\":[\"nodeId\",\"removeDescendants\",\"preserveDisconnectedChildren\"],\"semanticTerms\":[\"nodeId\",\"removeDescendants\",\"preserveDisconnectedChildren\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"RuleBuilderState.nodes\",\"RuleBuilderState.rootNodes\",\"RuleNodeRegistryService\"],\"validators\":[{\"validatorId\":\"node-exists\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_NODE_EXISTS\",\"description\":\"Target node must exist before it is configured or removed.\"},{\"validatorId\":\"destructive-removal-confirmed\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_DESTRUCTIVE_REMOVAL_CONFIRMED\",\"description\":\"Destructive node or edge removal requires explicit confirmation.\"},{\"validatorId\":\"edges-reference-existing-nodes\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_EDGES_REFERENCE_NODES\",\"description\":\"Every edge must reference existing source and target nodes.\"},{\"validatorId\":\"dsl-round-trip-stable\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_DSL_ROUND_TRIP_STABLE\",\"description\":\"Serialized JSON output must import back to the same semantic visual model.\"}],\"preconditions\":[\"rule-builder-state-loaded\",\"explicit-confirmation-provided\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
|
|
1721
|
+
"sourcePointer": "projects/praxis-visual-builder/src/lib/ai/praxis-visual-builder-authoring-manifest.ts",
|
|
1722
|
+
"contentHash": "2d5323754e6a25f516dad734655bf119ea0c0bb8d25e803619734b68f390a7a4",
|
|
1723
|
+
"sourceKind": "component_definition",
|
|
1724
|
+
"sourceId": "praxis-visual-builder",
|
|
1725
|
+
"corpusVersion": "1.0.0"
|
|
1726
|
+
},
|
|
1727
|
+
{
|
|
1728
|
+
"chunkIndex": 3,
|
|
1729
|
+
"chunkKind": "authoring_manifest",
|
|
1730
|
+
"content": "{\"operationId\":\"node.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-visual-builder\",\"ownerPackage\":\"@praxisui/visual-builder\",\"configSchemaId\":\"RuleBuilderState\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configure visual rule node Effects: compile-domain-patch. Rename the eligibility rule and mark it expanded.\",\"scope\":\"rules\",\"target\":{\"kind\":\"node\",\"resolver\":\"rule-node-by-id\",\"required\":true},\"inputContract\":{\"required\":[\"nodeId\"],\"properties\":[\"nodeId\",\"label\",\"configPatch\",\"metadataPatch\",\"expanded\"],\"semanticTerms\":[\"nodeId\",\"label\",\"configPatch\",\"metadataPatch\",\"expanded\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"RuleBuilderState.nodes\",\"RuleBuilderState.currentJSON\"],\"validators\":[{\"validatorId\":\"node-exists\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_NODE_EXISTS\",\"description\":\"Target node must exist before it is configured or removed.\"},{\"validatorId\":\"node-config-compatible\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_NODE_CONFIG_COMPATIBLE\",\"description\":\"Node config must match the declared node type.\"},{\"validatorId\":\"graph-valid\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_GRAPH_VALID\",\"description\":\"Graph structure must pass registry integrity validation.\"},{\"validatorId\":\"dsl-round-trip-stable\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_DSL_ROUND_TRIP_STABLE\",\"description\":\"Serialized JSON output must import back to the same semantic visual model.\"}],\"preconditions\":[\"rule-builder-state-loaded\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"configure-node\",\"request\":\"Rename the eligibility rule and mark it expanded.\",\"operationId\":\"node.configure\",\"params\":{\"nodeId\":\"eligibility\",\"label\":\"Eligibility rule\",\"expanded\":true},\"isPositive\":true}],\"negativeExamples\":[]}",
|
|
1731
|
+
"sourcePointer": "projects/praxis-visual-builder/src/lib/ai/praxis-visual-builder-authoring-manifest.ts",
|
|
1732
|
+
"contentHash": "a0764d7bceb35b42a08847d824c071ab388b4ef4be6e81113f751c9d75e8fe79",
|
|
1733
|
+
"sourceKind": "component_definition",
|
|
1734
|
+
"sourceId": "praxis-visual-builder",
|
|
1735
|
+
"corpusVersion": "1.0.0"
|
|
1736
|
+
},
|
|
1737
|
+
{
|
|
1738
|
+
"chunkIndex": 4,
|
|
1739
|
+
"chunkKind": "authoring_manifest",
|
|
1740
|
+
"content": "{\"operationId\":\"edge.connect\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-visual-builder\",\"ownerPackage\":\"@praxisui/visual-builder\",\"configSchemaId\":\"RuleBuilderState\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Connect visual graph edge Effects: compile-domain-patch. Make the age condition a child of the AND group. Connect a child back to its parent and create a cycle.\",\"scope\":\"interaction\",\"target\":{\"kind\":\"edge\",\"resolver\":\"rule-node-edge-by-source-target\",\"required\":true},\"inputContract\":{\"required\":[\"sourceNodeId\",\"targetNodeId\"],\"properties\":[\"sourceNodeId\",\"targetNodeId\",\"edgeKind\",\"insertIndex\"],\"semanticTerms\":[\"sourceNodeId\",\"targetNodeId\",\"edgeKind\",\"insertIndex\",\"child\",\"condition\",\"effect\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"RuleBuilderState.nodes[].children\",\"RuleBuilderState.nodes[].parentId\"],\"validators\":[{\"validatorId\":\"node-exists\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_NODE_EXISTS\",\"description\":\"Target node must exist before it is configured or removed.\"},{\"validatorId\":\"edges-reference-existing-nodes\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_EDGES_REFERENCE_NODES\",\"description\":\"Every edge must reference existing source and target nodes.\"},{\"validatorId\":\"graph-acyclic-where-required\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_GRAPH_ACYCLIC\",\"description\":\"Hierarchical rule graph edges must not introduce cycles.\"},{\"validatorId\":\"dsl-round-trip-stable\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_DSL_ROUND_TRIP_STABLE\",\"description\":\"Serialized JSON output must import back to the same semantic visual model.\"}],\"preconditions\":[\"rule-builder-state-loaded\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"connect-edge\",\"request\":\"Make the age condition a child of the AND group.\",\"operationId\":\"edge.connect\",\"params\":{\"sourceNodeId\":\"eligibility-and\",\"targetNodeId\":\"age-gt-18\",\"edgeKind\":\"child\"},\"isPositive\":true}],\"negativeExamples\":[{\"id\":\"reject-cycle\",\"request\":\"Connect a child back to its parent and create a cycle.\",\"operationId\":\"edge.connect\",\"params\":{\"sourceNodeId\":\"age-gt-18\",\"targetNodeId\":\"eligibility-and\",\"edgeKind\":\"child\"},\"isPositive\":false}]}",
|
|
1741
|
+
"sourcePointer": "projects/praxis-visual-builder/src/lib/ai/praxis-visual-builder-authoring-manifest.ts",
|
|
1742
|
+
"contentHash": "1b0fdddf70590490a741d5247a261fffdf64fef9ccccdf8a77043daf9433c6d3",
|
|
1743
|
+
"sourceKind": "component_definition",
|
|
1744
|
+
"sourceId": "praxis-visual-builder",
|
|
1745
|
+
"corpusVersion": "1.0.0"
|
|
1746
|
+
},
|
|
1747
|
+
{
|
|
1748
|
+
"chunkIndex": 5,
|
|
1749
|
+
"chunkKind": "authoring_manifest",
|
|
1750
|
+
"content": "{\"operationId\":\"edge.remove\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-visual-builder\",\"ownerPackage\":\"@praxisui/visual-builder\",\"configSchemaId\":\"RuleBuilderState\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Remove visual graph edge Effects: compile-domain-patch. Disconnect the age condition from the AND group.\",\"scope\":\"interaction\",\"target\":{\"kind\":\"edge\",\"resolver\":\"rule-node-edge-by-source-target\",\"required\":true},\"inputContract\":{\"required\":[\"sourceNodeId\",\"targetNodeId\"],\"properties\":[\"sourceNodeId\",\"targetNodeId\",\"edgeKind\",\"removeOrphanTarget\"],\"semanticTerms\":[\"sourceNodeId\",\"targetNodeId\",\"edgeKind\",\"removeOrphanTarget\",\"child\",\"condition\",\"effect\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"RuleBuilderState.nodes[].children\",\"RuleBuilderState.nodes[].parentId\"],\"validators\":[{\"validatorId\":\"edge-exists\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_EDGE_EXISTS\",\"description\":\"Target edge must exist before removal.\"},{\"validatorId\":\"destructive-removal-confirmed\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_DESTRUCTIVE_REMOVAL_CONFIRMED\",\"description\":\"Destructive node or edge removal requires explicit confirmation.\"},{\"validatorId\":\"graph-valid\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_GRAPH_VALID\",\"description\":\"Graph structure must pass registry integrity validation.\"},{\"validatorId\":\"dsl-round-trip-stable\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_DSL_ROUND_TRIP_STABLE\",\"description\":\"Serialized JSON output must import back to the same semantic visual model.\"}],\"preconditions\":[\"rule-builder-state-loaded\",\"explicit-confirmation-provided\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"remove-edge\",\"request\":\"Disconnect the age condition from the AND group.\",\"operationId\":\"edge.remove\",\"params\":{\"sourceNodeId\":\"eligibility-and\",\"targetNodeId\":\"age-gt-18\",\"edgeKind\":\"child\"},\"isPositive\":true}],\"negativeExamples\":[]}",
|
|
1751
|
+
"sourcePointer": "projects/praxis-visual-builder/src/lib/ai/praxis-visual-builder-authoring-manifest.ts",
|
|
1752
|
+
"contentHash": "cb05afe7353a5fbcd0e631c5a7f980fb45ea5e845a3e75b2451d665e3b57886c",
|
|
1753
|
+
"sourceKind": "component_definition",
|
|
1754
|
+
"sourceId": "praxis-visual-builder",
|
|
1755
|
+
"corpusVersion": "1.0.0"
|
|
1756
|
+
},
|
|
1757
|
+
{
|
|
1758
|
+
"chunkIndex": 6,
|
|
1759
|
+
"chunkKind": "authoring_manifest",
|
|
1760
|
+
"content": "{\"operationId\":\"variable.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-visual-builder\",\"ownerPackage\":\"@praxisui/visual-builder\",\"configSchemaId\":\"RuleBuilderState\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Add context variable Effects: compile-domain-patch. Add a global variable for current tenant.\",\"scope\":\"dataBinding\",\"target\":{\"kind\":\"variable\",\"resolver\":\"context-variable-by-name-scope\",\"required\":true},\"inputContract\":{\"required\":[\"name\",\"scope\",\"type\"],\"properties\":[\"name\",\"scope\",\"type\",\"defaultValue\",\"description\"],\"semanticTerms\":[\"name\",\"scope\",\"type\",\"defaultValue\",\"description\",\"string\",\"number\",\"boolean\",\"object\",\"array\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"RuleBuilderConfig.contextVariables\",\"ContextManagementService\"],\"validators\":[{\"validatorId\":\"variable-id-unique\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_VARIABLE_ID_UNIQUE\",\"description\":\"Context variable name and scope must be unique.\"},{\"validatorId\":\"variable-scope-exists\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_VARIABLE_SCOPE_EXISTS\",\"description\":\"Context variable scope must exist in ContextManagementService before variables are added.\"},{\"validatorId\":\"context-variable-reference-valid\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_CONTEXT_VARIABLE_VALID\",\"description\":\"Contextual/template variable references must resolve to declared variables.\"},{\"validatorId\":\"dsl-round-trip-stable\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_DSL_ROUND_TRIP_STABLE\",\"description\":\"Serialized JSON output must import back to the same semantic visual model.\"}],\"preconditions\":[\"rule-builder-config-loaded\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"add-variable\",\"request\":\"Add a global variable for current tenant.\",\"operationId\":\"variable.add\",\"params\":{\"name\":\"tenantId\",\"scope\":\"global\",\"type\":\"string\",\"description\":\"Current tenant id\"},\"isPositive\":true}],\"negativeExamples\":[]}",
|
|
1761
|
+
"sourcePointer": "projects/praxis-visual-builder/src/lib/ai/praxis-visual-builder-authoring-manifest.ts",
|
|
1762
|
+
"contentHash": "b3b0ba5eb2368c19882bd3bbc6eb71a06066c6ce4d091abdd0728c39792c6eb7",
|
|
1763
|
+
"sourceKind": "component_definition",
|
|
1764
|
+
"sourceId": "praxis-visual-builder",
|
|
1765
|
+
"corpusVersion": "1.0.0"
|
|
1766
|
+
},
|
|
1767
|
+
{
|
|
1768
|
+
"chunkIndex": 7,
|
|
1769
|
+
"chunkKind": "authoring_manifest",
|
|
1770
|
+
"content": "{\"operationId\":\"condition.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-visual-builder\",\"ownerPackage\":\"@praxisui/visual-builder\",\"configSchemaId\":\"RuleBuilderState\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set JSON Logic condition Effects: compile-domain-patch. Set this condition to require country equal Brazil. Use age > 18 as a JavaScript expression.\",\"scope\":\"rules\",\"target\":{\"kind\":\"condition\",\"resolver\":\"json-logic-condition-by-node\",\"required\":true},\"inputContract\":{\"required\":[\"nodeId\",\"condition\"],\"properties\":[\"nodeId\",\"condition\",\"mode\",\"source\"],\"semanticTerms\":[\"nodeId\",\"condition\",\"mode\",\"source\",\"replace\",\"merge\",\"visual\",\"jsonLogic\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"RuleBuilderState.nodes[].config.condition\",\"RuleBuilderState.currentJSON\"],\"validators\":[{\"validatorId\":\"json-logic-valid\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_JSON_LOGIC_VALID\",\"description\":\"Conditions must be valid JSON Logic objects, not JavaScript or legacy textual DSL.\"},{\"validatorId\":\"condition-operators-supported\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_CONDITION_OPERATORS_SUPPORTED\",\"description\":\"Condition operators must be supported by visual parsing and export.\"},{\"validatorId\":\"condition-fields-known\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_CONDITION_FIELDS_KNOWN\",\"description\":\"Condition field references must resolve to configured field schemas; field-to-field comparisons use JSON Logic var operands.\"},{\"validatorId\":\"dsl-round-trip-stable\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_DSL_ROUND_TRIP_STABLE\",\"description\":\"Serialized JSON output must import back to the same semantic visual model.\"}],\"preconditions\":[\"rule-builder-state-loaded\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"set-condition\",\"request\":\"Set this condition to require country equal Brazil.\",\"operationId\":\"condition.set\",\"params\":{\"nodeId\":\"country-br\",\"condition\":{\"===\":[{\"var\":\"country\"},\"BR\"]},\"source\":\"jsonLogic\"},\"isPositive\":true}],\"negativeExamples\":[{\"id\":\"reject-javascript-condition\",\"request\":\"Use age > 18 as a JavaScript expression.\",\"operationId\":\"condition.set\",\"params\":{\"nodeId\":\"age-gt-18\",\"condition\":\"age > 18\"},\"isPositive\":false}]}",
|
|
1771
|
+
"sourcePointer": "projects/praxis-visual-builder/src/lib/ai/praxis-visual-builder-authoring-manifest.ts",
|
|
1772
|
+
"contentHash": "1f8decc57d2f3c998627954f38fa57857502014431028b8292189087c96cee96",
|
|
1773
|
+
"sourceKind": "component_definition",
|
|
1774
|
+
"sourceId": "praxis-visual-builder",
|
|
1775
|
+
"corpusVersion": "1.0.0"
|
|
1776
|
+
},
|
|
1777
|
+
{
|
|
1778
|
+
"chunkIndex": 8,
|
|
1779
|
+
"chunkKind": "authoring_manifest",
|
|
1780
|
+
"content": "{\"operationId\":\"effect.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-visual-builder\",\"ownerPackage\":\"@praxisui/visual-builder\",\"configSchemaId\":\"RuleBuilderState\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set visual property effect Effects: compile-domain-patch. Make the salary field readonly when the condition is true. Set an unknown field property named sparkle.\",\"scope\":\"rules\",\"target\":{\"kind\":\"effect\",\"resolver\":\"property-effect-by-node\",\"required\":true},\"inputContract\":{\"required\":[\"nodeId\",\"targetType\",\"targets\",\"properties\"],\"properties\":[\"nodeId\",\"targetType\",\"targets\",\"properties\",\"propertiesWhenFalse\",\"conditionNodeId\"],\"semanticTerms\":[\"nodeId\",\"targetType\",\"targets\",\"properties\",\"propertiesWhenFalse\",\"conditionNodeId\",\"field\",\"section\",\"action\",\"row\",\"column\",\"visualBlock\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"RuleBuilderState.nodes[].config.targetType\",\"RuleBuilderState.nodes[].config.targets\",\"RuleBuilderState.nodes[].config.properties\",\"RuleBuilderState.nodes[].config.propertiesWhenFalse\",\"RuleBuilderState.currentJSON\"],\"validators\":[{\"validatorId\":\"effect-targets-exist\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_EFFECT_TARGETS_EXIST\",\"description\":\"Effect targets must exist in configured target schemas.\"},{\"validatorId\":\"effect-properties-governed\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_EFFECT_PROPERTIES_GOVERNED\",\"description\":\"Effect properties must be allowed for the target type.\"},{\"validatorId\":\"effect-values-valid\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_EFFECT_VALUES_VALID\",\"description\":\"Effect property values must satisfy target property schema types.\"},{\"validatorId\":\"dsl-round-trip-stable\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_DSL_ROUND_TRIP_STABLE\",\"description\":\"Serialized JSON output must import back to the same semantic visual model.\"}],\"preconditions\":[\"rule-builder-state-loaded\",\"target-schema-loaded\"],\"submissionImpact\":\"affects-schema-backed-data\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"set-effect\",\"request\":\"Make the salary field readonly when the condition is true.\",\"operationId\":\"effect.set\",\"params\":{\"nodeId\":\"salary-readonly\",\"targetType\":\"field\",\"targets\":[\"salary\"],\"properties\":{\"readonly\":true}},\"isPositive\":true}],\"negativeExamples\":[{\"id\":\"reject-unknown-effect-property\",\"request\":\"Set an unknown field property named sparkle.\",\"operationId\":\"effect.set\",\"params\":{\"nodeId\":\"sparkle-field\",\"targetType\":\"field\",\"targets\":[\"name\"],\"properties\":{\"sparkle\":true}},\"isPositive\":false}]}",
|
|
1781
|
+
"sourcePointer": "projects/praxis-visual-builder/src/lib/ai/praxis-visual-builder-authoring-manifest.ts",
|
|
1782
|
+
"contentHash": "07f08a9153e61968fc164b3d84ac152de52c622e11531c42649d60061c915ad4",
|
|
1783
|
+
"sourceKind": "component_definition",
|
|
1784
|
+
"sourceId": "praxis-visual-builder",
|
|
1785
|
+
"corpusVersion": "1.0.0"
|
|
1786
|
+
},
|
|
1787
|
+
{
|
|
1788
|
+
"chunkIndex": 9,
|
|
1789
|
+
"chunkKind": "authoring_manifest",
|
|
1790
|
+
"content": "{\"operationId\":\"dsl.roundTrip.validate\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-visual-builder\",\"ownerPackage\":\"@praxisui/visual-builder\",\"configSchemaId\":\"RuleBuilderState\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Validate visual and DSL round trip Effects: compile-domain-patch. Validate that this graph exports and imports without drift. Accept the graph even though export/import changes node meaning.\",\"scope\":\"runtimeCoverage\",\"target\":{\"kind\":\"dslDocument\",\"resolver\":\"rule-builder-json-logic-document\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"format\",\"requireStableIds\",\"compareMode\"],\"semanticTerms\":[\"format\",\"requireStableIds\",\"compareMode\",\"json\",\"semantic\",\"exact\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"RuleBuilderState.currentJSON\",\"RuleBuilderState.validationErrors\"],\"validators\":[{\"validatorId\":\"graph-valid\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_GRAPH_VALID\",\"description\":\"Graph structure must pass registry integrity validation.\"},{\"validatorId\":\"dsl-round-trip-stable\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_DSL_ROUND_TRIP_STABLE\",\"description\":\"Serialized JSON output must import back to the same semantic visual model.\"},{\"validatorId\":\"json-logic-valid\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_JSON_LOGIC_VALID\",\"description\":\"Conditions must be valid JSON Logic objects, not JavaScript or legacy textual DSL.\"},{\"validatorId\":\"registry-integrity-valid\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_REGISTRY_INTEGRITY_VALID\",\"description\":\"RuleNodeRegistryService integrity checks must pass.\"}],\"preconditions\":[\"rule-builder-state-loaded\"],\"submissionImpact\":\"none\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"validate-round-trip\",\"request\":\"Validate that this graph exports and imports without drift.\",\"operationId\":\"dsl.roundTrip.validate\",\"params\":{\"format\":\"json\",\"requireStableIds\":true,\"compareMode\":\"semantic\"},\"isPositive\":true}],\"negativeExamples\":[{\"id\":\"reject-drift\",\"request\":\"Accept the graph even though export/import changes node meaning.\",\"operationId\":\"dsl.roundTrip.validate\",\"params\":{\"format\":\"json\",\"compareMode\":\"exact\"},\"isPositive\":false}]}",
|
|
1791
|
+
"sourcePointer": "projects/praxis-visual-builder/src/lib/ai/praxis-visual-builder-authoring-manifest.ts",
|
|
1792
|
+
"contentHash": "163bc86ff2acb24ef46af83956221adc5bee014bc7d25888ed3afbc64fec983f",
|
|
1793
|
+
"sourceKind": "component_definition",
|
|
1794
|
+
"sourceId": "praxis-visual-builder",
|
|
1795
|
+
"corpusVersion": "1.0.0"
|
|
1796
|
+
},
|
|
1797
|
+
{
|
|
1798
|
+
"chunkIndex": 10,
|
|
1799
|
+
"chunkKind": "authoring_manifest",
|
|
1451
1800
|
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-visual-builder\",\"ownerPackage\":\"@praxisui/visual-builder\",\"configSchemaId\":\"RuleBuilderState\",\"chunkSection\":\"identity\"}",
|
|
1452
1801
|
"sourcePointer": "projects/praxis-visual-builder/src/lib/ai/praxis-visual-builder-authoring-manifest.ts",
|
|
1453
1802
|
"contentHash": "6ddf5ab584087b044ccfbd10483bd2bb0070ea919e66bd704142ca74cadd2f53",
|
|
@@ -1456,7 +1805,7 @@
|
|
|
1456
1805
|
"corpusVersion": "1.0.0"
|
|
1457
1806
|
},
|
|
1458
1807
|
{
|
|
1459
|
-
"chunkIndex":
|
|
1808
|
+
"chunkIndex": 11,
|
|
1460
1809
|
"chunkKind": "authoring_manifest",
|
|
1461
1810
|
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-visual-builder\",\"ownerPackage\":\"@praxisui/visual-builder\",\"configSchemaId\":\"RuleBuilderState\",\"chunkSection\":\"runtimeInputs\",\"runtimeInputs\":[{\"name\":\"mode\",\"type\":\"'rules' | 'condition'\",\"description\":\"Rendering mode. rules edits full property rules; condition edits only a JSON Logic condition expression.\"},{\"name\":\"config\",\"type\":\"RuleBuilderConfig | null\",\"description\":\"Builder configuration with field schemas, target schemas, context variables, validation and export/import settings.\"},{\"name\":\"initialRules\",\"type\":\"RuleBuilderState | FormLayoutRule[] | JsonLogicExpression | null\",\"description\":\"Initial rules loaded into the visual builder.\"},{\"name\":\"initialCondition\",\"type\":\"JsonLogicExpression | null\",\"description\":\"Initial JSON Logic expression used when mode is condition.\"},{\"name\":\"rulesChanged\",\"type\":\"RuleBuilderState\",\"description\":\"Emitted visual builder state after graph or JSON Logic changes.\"},{\"name\":\"conditionChanged\",\"type\":\"JsonLogicExpression | null\",\"description\":\"Emitted JSON Logic expression when condition-mode authoring changes.\"},{\"name\":\"exportRequested\",\"type\":\"ExportOptions\",\"description\":\"Emitted export request for JSON, TypeScript or form-config payloads.\"},{\"name\":\"importRequested\",\"type\":\"ImportOptions\",\"description\":\"Emitted import request for JSON or form-config payloads.\"}]}",
|
|
1462
1811
|
"sourcePointer": "projects/praxis-visual-builder/src/lib/ai/praxis-visual-builder-authoring-manifest.ts",
|
|
@@ -1466,7 +1815,7 @@
|
|
|
1466
1815
|
"corpusVersion": "1.0.0"
|
|
1467
1816
|
},
|
|
1468
1817
|
{
|
|
1469
|
-
"chunkIndex":
|
|
1818
|
+
"chunkIndex": 12,
|
|
1470
1819
|
"chunkKind": "authoring_manifest",
|
|
1471
1820
|
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-visual-builder\",\"ownerPackage\":\"@praxisui/visual-builder\",\"configSchemaId\":\"RuleBuilderState\",\"chunkSection\":\"editableTargets\",\"editableTargets\":[{\"kind\":\"node\",\"resolver\":\"rule-node-by-id\",\"description\":\"Visual rule graph node keyed by stable RuleNode.id.\"},{\"kind\":\"edge\",\"resolver\":\"rule-node-edge-by-source-target\",\"description\":\"Parent-child or semantic graph edge between existing rule nodes.\"},{\"kind\":\"variable\",\"resolver\":\"context-variable-by-name-scope\",\"description\":\"Context variable governed by ContextManagementService for contextual/template flows; visual field-condition references are not authorable until a canonical JSON Logic shape exists.\"},{\"kind\":\"condition\",\"resolver\":\"json-logic-condition-by-node\",\"description\":\"JSON Logic condition attached to a node or represented by condition nodes.\"},{\"kind\":\"effect\",\"resolver\":\"property-effect-by-node\",\"description\":\"Targeted property effect persisted as propertyRule/FormLayoutRule semantics.\"},{\"kind\":\"dslDocument\",\"resolver\":\"rule-builder-json-logic-document\",\"description\":\"Serialized JSON Logic/form-config document produced from the visual model.\"}]}",
|
|
1472
1821
|
"sourcePointer": "projects/praxis-visual-builder/src/lib/ai/praxis-visual-builder-authoring-manifest.ts",
|
|
@@ -1476,27 +1825,37 @@
|
|
|
1476
1825
|
"corpusVersion": "1.0.0"
|
|
1477
1826
|
},
|
|
1478
1827
|
{
|
|
1479
|
-
"chunkIndex":
|
|
1828
|
+
"chunkIndex": 13,
|
|
1480
1829
|
"chunkKind": "authoring_manifest",
|
|
1481
|
-
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-visual-builder\",\"ownerPackage\":\"@praxisui/visual-builder\",\"configSchemaId\":\"RuleBuilderState\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"node.add\",\"title\":\"Add visual rule node\",\"scope\":\"rules\",\"targetKind\":\"node\",\"target\":{\"kind\":\"node\",\"resolver\":\"rule-node-by-id\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"nodeId\",\"nodeType\"],\"properties\":{\"nodeId\":{\"type\":\"string\"},\"nodeType\":{\"enum\":[\"fieldCondition\",\"propertyRule\",\"andGroup\",\"orGroup\",\"notGroup\",\"xorGroup\",\"impliesGroup\",\"requiredIf\",\"visibleIf\",\"disabledIf\",\"readonlyIf\",\"forEach\",\"uniqueBy\",\"minLength\",\"maxLength\",\"ifDefined\",\"ifNotNull\",\"ifExists\",\"withDefault\",\"functionCall\",\"fieldToField\",\"contextual\",\"atLeast\",\"exactly\",\"expression\",\"contextualTemplate\",\"custom\"]},\"label\":{\"type\":\"string\"},\"parentId\":{\"type\":\"string\"},\"config\":{\"type\":\"object\"},\"metadata\":{\"type\":\"object\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"visual-builder-node-add\",\"handlerContract\":{\"reads\":[\"RuleBuilderState.nodes\",\"RuleBuilderState.rootNodes\",\"RuleNodeRegistryService\",\"RuleBuilderService.addNode\"],\"writes\":[\"RuleBuilderState.nodes\",\"RuleBuilderState.rootNodes\",\"RuleNodeRegistryService\"],\"identityKeys\":[\"nodeId\"],\"failureModes\":[\"duplicate-node-id\",\"unsupported-node-type\",\"parent-node-not-found\",\"graph-cycle-created\"],\"description\":\"Adds a rule node by stable id and validates graph integrity before the state can be serialized.\"}}],\"validators\":[\"node-id-unique\",\"node-type-supported\",\"parent-node-exists\",\"graph-valid\",\"dsl-round-trip-stable\"],\"affectedPaths\":[\"RuleBuilderState.nodes\",\"RuleBuilderState.rootNodes\",\"RuleNodeRegistryService\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"rule-builder-state-loaded\"],\"destructive\":false,\"requiresConfirmation\":false},{\"operationId\":\"node.remove\",\"title\":\"Remove visual rule node\",\"scope\":\"rules\",\"targetKind\":\"node\",\"target\":{\"kind\":\"node\",\"resolver\":\"rule-node-by-id\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"nodeId\"],\"properties\":{\"nodeId\":{\"type\":\"string\"},\"removeDescendants\":{\"type\":\"boolean\"},\"preserveDisconnectedChildren\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"visual-builder-node-remove\",\"handlerContract\":{\"reads\":[\"RuleBuilderState.nodes\",\"RuleBuilderState.rootNodes\",\"RuleNodeRegistryService\",\"RuleBuilderService.removeNode\"],\"writes\":[\"RuleBuilderState.nodes\",\"RuleBuilderState.rootNodes\",\"RuleNodeRegistryService\"],\"identityKeys\":[\"nodeId\"],\"failureModes\":[\"node-not-found\",\"destructive-removal-not-confirmed\",\"orphaned-edge-created\",\"dsl-round-trip-failed\"],\"description\":\"Removes a node and governed descendants by id, requiring confirmation because conditions/effects can be lost.\"}}],\"destructive\":true,\"requiresConfirmation\":true,\"validators\":[\"node-exists\",\"destructive-removal-confirmed\",\"edges-reference-existing-nodes\",\"dsl-round-trip-stable\"],\"affectedPaths\":[\"RuleBuilderState.nodes\",\"RuleBuilderState.rootNodes\",\"RuleNodeRegistryService\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"rule-builder-state-loaded\",\"explicit-confirmation-provided\"]},{\"operationId\":\"node.configure\",\"title\":\"Configure visual rule node\",\"scope\":\"rules\",\"targetKind\":\"node\",\"target\":{\"kind\":\"node\",\"resolver\":\"rule-node-by-id\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"nodeId\"],\"properties\":{\"nodeId\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"configPatch\":{\"type\":\"object\"},\"metadataPatch\":{\"type\":\"object\"},\"expanded\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"visual-builder-node-configure\",\"handlerContract\":{\"reads\":[\"RuleBuilderState.nodes\",\"RuleBuilderService.updateNode\",\"RuleNodeRegistryService\"],\"writes\":[\"RuleBuilderState.nodes\",\"RuleBuilderState.currentJSON\"],\"identityKeys\":[\"nodeId\"],\"failureModes\":[\"node-not-found\",\"config-shape-invalid\",\"node-type-config-mismatch\",\"dsl-round-trip-failed\"],\"description\":\"Applies a typed patch to a rule node while preserving node identity and JSON Logic serialization.\"}}],\"validators\":[\"node-exists\",\"node-config-compatible\",\"graph-valid\",\"dsl-round-trip-stable\"],\"affectedPaths\":[\"RuleBuilderState.nodes\",\"RuleBuilderState.currentJSON\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"rule-builder-state-loaded\"],\"destructive\":false,\"requiresConfirmation\":false},{\"operationId\":\"edge.connect\",\"title\":\"Connect visual graph edge\",\"scope\":\"interaction\",\"targetKind\":\"edge\",\"target\":{\"kind\":\"edge\",\"resolver\":\"rule-node-edge-by-source-target\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"sourceNodeId\",\"targetNodeId\"],\"properties\":{\"sourceNodeId\":{\"type\":\"string\"},\"targetNodeId\":{\"type\":\"string\"},\"edgeKind\":{\"enum\":[\"child\",\"condition\",\"effect\"]},\"insertIndex\":{\"type\":\"number\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"visual-builder-edge-connect\",\"handlerContract\":{\"reads\":[\"RuleBuilderState.nodes\",\"RuleNodeRegistryService.validateIntegrity\"],\"writes\":[\"RuleBuilderState.nodes[].children\",\"RuleBuilderState.nodes[].parentId\"],\"identityKeys\":[\"sourceNodeId\",\"targetNodeId\",\"edgeKind\"],\"
|
|
1830
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-visual-builder\",\"ownerPackage\":\"@praxisui/visual-builder\",\"configSchemaId\":\"RuleBuilderState\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"node.add\",\"title\":\"Add visual rule node\",\"scope\":\"rules\",\"targetKind\":\"node\",\"target\":{\"kind\":\"node\",\"resolver\":\"rule-node-by-id\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"nodeId\",\"nodeType\"],\"properties\":{\"nodeId\":{\"type\":\"string\"},\"nodeType\":{\"enum\":[\"fieldCondition\",\"propertyRule\",\"andGroup\",\"orGroup\",\"notGroup\",\"xorGroup\",\"impliesGroup\",\"requiredIf\",\"visibleIf\",\"disabledIf\",\"readonlyIf\",\"forEach\",\"uniqueBy\",\"minLength\",\"maxLength\",\"ifDefined\",\"ifNotNull\",\"ifExists\",\"withDefault\",\"functionCall\",\"fieldToField\",\"contextual\",\"atLeast\",\"exactly\",\"expression\",\"contextualTemplate\",\"custom\"]},\"label\":{\"type\":\"string\"},\"parentId\":{\"type\":\"string\"},\"config\":{\"type\":\"object\"},\"metadata\":{\"type\":\"object\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"visual-builder-node-add\",\"handlerContract\":{\"reads\":[\"RuleBuilderState.nodes\",\"RuleBuilderState.rootNodes\",\"RuleNodeRegistryService\",\"RuleBuilderService.addNode\"],\"writes\":[\"RuleBuilderState.nodes\",\"RuleBuilderState.rootNodes\",\"RuleNodeRegistryService\"],\"identityKeys\":[\"nodeId\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"nodeId\",\"nodeType\"],\"properties\":{\"nodeId\":{\"type\":\"string\"},\"nodeType\":{\"enum\":[\"fieldCondition\",\"propertyRule\",\"andGroup\",\"orGroup\",\"notGroup\",\"xorGroup\",\"impliesGroup\",\"requiredIf\",\"visibleIf\",\"disabledIf\",\"readonlyIf\",\"forEach\",\"uniqueBy\",\"minLength\",\"maxLength\",\"ifDefined\",\"ifNotNull\",\"ifExists\",\"withDefault\",\"functionCall\",\"fieldToField\",\"contextual\",\"atLeast\",\"exactly\",\"expression\",\"contextualTemplate\",\"custom\"]},\"label\":{\"type\":\"string\"},\"parentId\":{\"type\":\"string\"},\"config\":{\"type\":\"object\"},\"metadata\":{\"type\":\"object\"}}},\"failureModes\":[\"duplicate-node-id\",\"unsupported-node-type\",\"parent-node-not-found\",\"graph-cycle-created\"],\"description\":\"Adds a rule node by stable id and validates graph integrity before the state can be serialized.\"}}],\"validators\":[\"node-id-unique\",\"node-type-supported\",\"parent-node-exists\",\"graph-valid\",\"dsl-round-trip-stable\"],\"affectedPaths\":[\"RuleBuilderState.nodes\",\"RuleBuilderState.rootNodes\",\"RuleNodeRegistryService\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"rule-builder-state-loaded\"],\"destructive\":false,\"requiresConfirmation\":false},{\"operationId\":\"node.remove\",\"title\":\"Remove visual rule node\",\"scope\":\"rules\",\"targetKind\":\"node\",\"target\":{\"kind\":\"node\",\"resolver\":\"rule-node-by-id\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"nodeId\"],\"properties\":{\"nodeId\":{\"type\":\"string\"},\"removeDescendants\":{\"type\":\"boolean\"},\"preserveDisconnectedChildren\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"visual-builder-node-remove\",\"handlerContract\":{\"reads\":[\"RuleBuilderState.nodes\",\"RuleBuilderState.rootNodes\",\"RuleNodeRegistryService\",\"RuleBuilderService.removeNode\"],\"writes\":[\"RuleBuilderState.nodes\",\"RuleBuilderState.rootNodes\",\"RuleNodeRegistryService\"],\"identityKeys\":[\"nodeId\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"nodeId\"],\"properties\":{\"nodeId\":{\"type\":\"string\"},\"removeDescendants\":{\"type\":\"boolean\"},\"preserveDisconnectedChildren\":{\"type\":\"boolean\"}}},\"failureModes\":[\"node-not-found\",\"destructive-removal-not-confirmed\",\"orphaned-edge-created\",\"dsl-round-trip-failed\"],\"description\":\"Removes a node and governed descendants by id, requiring confirmation because conditions/effects can be lost.\"}}],\"destructive\":true,\"requiresConfirmation\":true,\"validators\":[\"node-exists\",\"destructive-removal-confirmed\",\"edges-reference-existing-nodes\",\"dsl-round-trip-stable\"],\"affectedPaths\":[\"RuleBuilderState.nodes\",\"RuleBuilderState.rootNodes\",\"RuleNodeRegistryService\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"rule-builder-state-loaded\",\"explicit-confirmation-provided\"]},{\"operationId\":\"node.configure\",\"title\":\"Configure visual rule node\",\"scope\":\"rules\",\"targetKind\":\"node\",\"target\":{\"kind\":\"node\",\"resolver\":\"rule-node-by-id\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"nodeId\"],\"properties\":{\"nodeId\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"configPatch\":{\"type\":\"object\"},\"metadataPatch\":{\"type\":\"object\"},\"expanded\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"visual-builder-node-configure\",\"handlerContract\":{\"reads\":[\"RuleBuilderState.nodes\",\"RuleBuilderService.updateNode\",\"RuleNodeRegistryService\"],\"writes\":[\"RuleBuilderState.nodes\",\"RuleBuilderState.currentJSON\"],\"identityKeys\":[\"nodeId\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"nodeId\"],\"properties\":{\"nodeId\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"configPatch\":{\"type\":\"object\"},\"metadataPatch\":{\"type\":\"object\"},\"expanded\":{\"type\":\"boolean\"}}},\"failureModes\":[\"node-not-found\",\"config-shape-invalid\",\"node-type-config-mismatch\",\"dsl-round-trip-failed\"],\"description\":\"Applies a typed patch to a rule node while preserving node identity and JSON Logic serialization.\"}}],\"validators\":[\"node-exists\",\"node-config-compatible\",\"graph-valid\",\"dsl-round-trip-stable\"],\"affectedPaths\":[\"RuleBuilderState.nodes\",\"RuleBuilderState.currentJSON\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"rule-builder-state-loaded\"],\"destructive\":false,\"requiresConfirmation\":false},{\"operationId\":\"edge.connect\",\"title\":\"Connect visual graph edge\",\"scope\":\"interaction\",\"targetKind\":\"edge\",\"target\":{\"kind\":\"edge\",\"resolver\":\"rule-node-edge-by-source-target\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"sourceNodeId\",\"targetNodeId\"],\"properties\":{\"sourceNodeId\":{\"type\":\"string\"},\"targetNodeId\":{\"type\":\"string\"},\"edgeKind\":{\"enum\":[\"child\",\"condition\",\"effect\"]},\"insertIndex\":{\"type\":\"number\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"visual-builder-edge-connect\",\"handlerContract\":{\"reads\":[\"RuleBuilderState.nodes\",\"RuleNodeRegistryService.validateIntegrity\"],\"writes\":[\"RuleBuilderState.nodes[].children\",\"RuleBuilderState.nodes[].parentId\"],\"identityKeys\":[\"sourceNodeId\",\"targetNodeId\",\"edgeKind\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"sourceNodeId\",\"targetNodeId\"],\"properties\":{\"sourceNodeId\":{\"type\":\"string\"},\"targetNodeId\":{\"type\":\"string\"},\"edgeKind\":{\"enum\":[\"child\",\"condition\",\"effect\"]},\"insertIndex\":{\"type\":\"number\"}}},\"failureModes\":[\"source-node-not-found\",\"target-node-not-found\",\"duplicate-edge\",\"graph-cycle-created\"],\"description\":\"Connects two existing nodes and rejects edges that break registry integrity or acyclic graph requirements.\"}}],\"validators\":[\"node-exists\",\"edges-reference-existing-nodes\",\"graph-acyclic-where-required\",\"dsl-round-trip-stable\"],\"affectedPaths\":[\"RuleBuilderState.nodes[].children\",\"RuleBuilderState.nodes[].parentId\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"rule-builder-state-loaded\"],\"destructive\":false,\"requiresConfirmation\":false}]}",
|
|
1482
1831
|
"sourcePointer": "projects/praxis-visual-builder/src/lib/ai/praxis-visual-builder-authoring-manifest.ts",
|
|
1483
|
-
"contentHash": "
|
|
1832
|
+
"contentHash": "66a94e8ba43262e606d4f2b77704332bbf82010735a3ed60df467b4a910a5593",
|
|
1484
1833
|
"sourceKind": "component_definition",
|
|
1485
1834
|
"sourceId": "praxis-visual-builder",
|
|
1486
1835
|
"corpusVersion": "1.0.0"
|
|
1487
1836
|
},
|
|
1488
1837
|
{
|
|
1489
|
-
"chunkIndex":
|
|
1838
|
+
"chunkIndex": 14,
|
|
1490
1839
|
"chunkKind": "authoring_manifest",
|
|
1491
|
-
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-visual-builder\",\"ownerPackage\":\"@praxisui/visual-builder\",\"configSchemaId\":\"RuleBuilderState\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"variable.add\",\"title\":\"Add context variable\",\"scope\":\"dataBinding\",\"targetKind\":\"variable\",\"target\":{\"kind\":\"variable\",\"resolver\":\"context-variable-by-name-scope\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"name\",\"scope\",\"type\"],\"properties\":{\"name\":{\"type\":\"string\"},\"scope\":{\"type\":\"string\"},\"type\":{\"enum\":[\"string\",\"number\",\"boolean\",\"object\",\"array\"]},\"defaultValue\":{},\"description\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"visual-builder-variable-add\",\"handlerContract\":{\"reads\":[\"RuleBuilderConfig.contextVariables\",\"ContextManagementService\"],\"writes\":[\"RuleBuilderConfig.contextVariables\",\"ContextManagementService\"],\"identityKeys\":[\"scope\",\"name\"],\"failureModes\":[\"duplicate-variable\",\"scope-not-found\",\"variable-type-invalid\",\"context-token-conflict\"],\"description\":\"Adds a governed context variable to ContextManagementService for contextual/template flows. Field-condition references stay unsupported until a canonical JSON Logic shape exists.\"}}],\"validators\":[\"variable-id-unique\",\"variable-scope-exists\",\"context-variable-reference-valid\",\"dsl-round-trip-stable\"],\"affectedPaths\":[\"RuleBuilderConfig.contextVariables\",\"ContextManagementService\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"rule-builder-config-loaded\"],\"destructive\":false,\"requiresConfirmation\":false},{\"operationId\":\"condition.set\",\"title\":\"Set JSON Logic condition\",\"scope\":\"rules\",\"targetKind\":\"condition\",\"target\":{\"kind\":\"condition\",\"resolver\":\"json-logic-condition-by-node\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"nodeId\",\"condition\"],\"properties\":{\"nodeId\":{\"type\":\"string\"},\"condition\":{\"type\":\"object\"},\"mode\":{\"enum\":[\"replace\",\"merge\"]},\"source\":{\"enum\":[\"visual\",\"jsonLogic\"]}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"visual-builder-condition-set\",\"handlerContract\":{\"reads\":[\"RuleBuilderState.nodes\",\"RuleBuilderService.loadFromConditionExpression\",\"RuleBuilderService.buildConditionExpressionFromGraph\"],\"writes\":[\"RuleBuilderState.nodes[].config.condition\",\"RuleBuilderState.currentJSON\"],\"identityKeys\":[\"nodeId\"],\"failureModes\":[\"node-not-found\",\"json-logic-invalid\",\"unsupported-operator\",\"visual-parse-failed\",\"dsl-round-trip-failed\"],\"description\":\"Sets a canonical JSON Logic condition within the runtime-supported visual subset and proves it can parse back into the visual graph.\"}}],\"validators\":[\"json-logic-valid\",\"condition-operators-supported\",\"condition-fields-known\",\"dsl-round-trip-stable\"],\"affectedPaths\":[\"RuleBuilderState.nodes[].config.condition\",\"RuleBuilderState.currentJSON\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"rule-builder-state-loaded\"],\"destructive\":false,\"requiresConfirmation\":false},{\"operationId\":\"effect.set\",\"title\":\"Set visual property effect\",\"scope\":\"rules\",\"targetKind\":\"effect\",\"target\":{\"kind\":\"effect\",\"resolver\":\"property-effect-by-node\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"nodeId\",\"targetType\",\"targets\",\"properties\"],\"properties\":{\"nodeId\":{\"type\":\"string\"},\"targetType\":{\"enum\":[\"field\",\"section\",\"action\",\"row\",\"column\",\"visualBlock\"]},\"targets\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"properties\":{\"type\":\"object\"},\"propertiesWhenFalse\":{\"type\":\"object\"},\"conditionNodeId\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"visual-builder-effect-set\",\"handlerContract\":{\"reads\":[\"RuleBuilderState.nodes\",\"RuleBuilderConfig.targetPropertySchemas\",\"RULE_PROPERTY_SCHEMA\",\"RuleBuilderService.export\"],\"writes\":[\"RuleBuilderState.nodes[].config.targetType\",\"RuleBuilderState.nodes[].config.targets\",\"RuleBuilderState.nodes[].config.properties\",\"RuleBuilderState.nodes[].config.propertiesWhenFalse\",\"RuleBuilderState.currentJSON\"],\"identityKeys\":[\"nodeId\",\"targetType\",\"targets\"],\"
|
|
1840
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-visual-builder\",\"ownerPackage\":\"@praxisui/visual-builder\",\"configSchemaId\":\"RuleBuilderState\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"edge.remove\",\"title\":\"Remove visual graph edge\",\"scope\":\"interaction\",\"targetKind\":\"edge\",\"target\":{\"kind\":\"edge\",\"resolver\":\"rule-node-edge-by-source-target\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"sourceNodeId\",\"targetNodeId\"],\"properties\":{\"sourceNodeId\":{\"type\":\"string\"},\"targetNodeId\":{\"type\":\"string\"},\"edgeKind\":{\"enum\":[\"child\",\"condition\",\"effect\"]},\"removeOrphanTarget\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"visual-builder-edge-remove\",\"handlerContract\":{\"reads\":[\"RuleBuilderState.nodes\",\"RuleNodeRegistryService.validateIntegrity\"],\"writes\":[\"RuleBuilderState.nodes[].children\",\"RuleBuilderState.nodes[].parentId\"],\"identityKeys\":[\"sourceNodeId\",\"targetNodeId\",\"edgeKind\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"sourceNodeId\",\"targetNodeId\"],\"properties\":{\"sourceNodeId\":{\"type\":\"string\"},\"targetNodeId\":{\"type\":\"string\"},\"edgeKind\":{\"enum\":[\"child\",\"condition\",\"effect\"]},\"removeOrphanTarget\":{\"type\":\"boolean\"}}},\"failureModes\":[\"edge-not-found\",\"destructive-removal-not-confirmed\",\"orphaned-node-created\",\"dsl-round-trip-failed\"],\"description\":\"Removes a graph edge by source and target ids with confirmation when the target can become orphaned.\"}}],\"destructive\":true,\"requiresConfirmation\":true,\"validators\":[\"edge-exists\",\"destructive-removal-confirmed\",\"graph-valid\",\"dsl-round-trip-stable\"],\"affectedPaths\":[\"RuleBuilderState.nodes[].children\",\"RuleBuilderState.nodes[].parentId\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"rule-builder-state-loaded\",\"explicit-confirmation-provided\"]},{\"operationId\":\"variable.add\",\"title\":\"Add context variable\",\"scope\":\"dataBinding\",\"targetKind\":\"variable\",\"target\":{\"kind\":\"variable\",\"resolver\":\"context-variable-by-name-scope\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"name\",\"scope\",\"type\"],\"properties\":{\"name\":{\"type\":\"string\"},\"scope\":{\"type\":\"string\"},\"type\":{\"enum\":[\"string\",\"number\",\"boolean\",\"object\",\"array\"]},\"defaultValue\":{},\"description\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"visual-builder-variable-add\",\"handlerContract\":{\"reads\":[\"RuleBuilderConfig.contextVariables\",\"ContextManagementService\"],\"writes\":[\"RuleBuilderConfig.contextVariables\",\"ContextManagementService\"],\"identityKeys\":[\"scope\",\"name\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"name\",\"scope\",\"type\"],\"properties\":{\"name\":{\"type\":\"string\"},\"scope\":{\"type\":\"string\"},\"type\":{\"enum\":[\"string\",\"number\",\"boolean\",\"object\",\"array\"]},\"defaultValue\":{},\"description\":{\"type\":\"string\"}}},\"failureModes\":[\"duplicate-variable\",\"scope-not-found\",\"variable-type-invalid\",\"context-token-conflict\"],\"description\":\"Adds a governed context variable to ContextManagementService for contextual/template flows. Field-condition references stay unsupported until a canonical JSON Logic shape exists.\"}}],\"validators\":[\"variable-id-unique\",\"variable-scope-exists\",\"context-variable-reference-valid\",\"dsl-round-trip-stable\"],\"affectedPaths\":[\"RuleBuilderConfig.contextVariables\",\"ContextManagementService\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"rule-builder-config-loaded\"],\"destructive\":false,\"requiresConfirmation\":false},{\"operationId\":\"condition.set\",\"title\":\"Set JSON Logic condition\",\"scope\":\"rules\",\"targetKind\":\"condition\",\"target\":{\"kind\":\"condition\",\"resolver\":\"json-logic-condition-by-node\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"nodeId\",\"condition\"],\"properties\":{\"nodeId\":{\"type\":\"string\"},\"condition\":{\"type\":\"object\"},\"mode\":{\"enum\":[\"replace\",\"merge\"]},\"source\":{\"enum\":[\"visual\",\"jsonLogic\"]}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"visual-builder-condition-set\",\"handlerContract\":{\"reads\":[\"RuleBuilderState.nodes\",\"RuleBuilderService.loadFromConditionExpression\",\"RuleBuilderService.buildConditionExpressionFromGraph\"],\"writes\":[\"RuleBuilderState.nodes[].config.condition\",\"RuleBuilderState.currentJSON\"],\"identityKeys\":[\"nodeId\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"nodeId\",\"condition\"],\"properties\":{\"nodeId\":{\"type\":\"string\"},\"condition\":{\"type\":\"object\"},\"mode\":{\"enum\":[\"replace\",\"merge\"]},\"source\":{\"enum\":[\"visual\",\"jsonLogic\"]}}},\"failureModes\":[\"node-not-found\",\"json-logic-invalid\",\"unsupported-operator\",\"visual-parse-failed\",\"dsl-round-trip-failed\"],\"description\":\"Sets a canonical JSON Logic condition within the runtime-supported visual subset and proves it can parse back into the visual graph.\"}}],\"validators\":[\"json-logic-valid\",\"condition-operators-supported\",\"condition-fields-known\",\"dsl-round-trip-stable\"],\"affectedPaths\":[\"RuleBuilderState.nodes[].config.condition\",\"RuleBuilderState.currentJSON\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"rule-builder-state-loaded\"],\"destructive\":false,\"requiresConfirmation\":false},{\"operationId\":\"effect.set\",\"title\":\"Set visual property effect\",\"scope\":\"rules\",\"targetKind\":\"effect\",\"target\":{\"kind\":\"effect\",\"resolver\":\"property-effect-by-node\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"nodeId\",\"targetType\",\"targets\",\"properties\"],\"properties\":{\"nodeId\":{\"type\":\"string\"},\"targetType\":{\"enum\":[\"field\",\"section\",\"action\",\"row\",\"column\",\"visualBlock\"]},\"targets\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"properties\":{\"type\":\"object\"},\"propertiesWhenFalse\":{\"type\":\"object\"},\"conditionNodeId\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"visual-builder-effect-set\",\"handlerContract\":{\"reads\":[\"RuleBuilderState.nodes\",\"RuleBuilderConfig.targetPropertySchemas\",\"RULE_PROPERTY_SCHEMA\",\"RuleBuilderService.export\"],\"writes\":[\"RuleBuilderState.nodes[].config.targetType\",\"RuleBuilderState.nodes[].config.targets\",\"RuleBuilderState.nodes[].config.properties\",\"RuleBuilderState.nodes[].config.propertiesWhenFalse\",\"RuleBuilderState.currentJSON\"],\"identityKeys\":[\"nodeId\",\"targetType\",\"targets\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"nodeId\",\"targetType\",\"targets\",\"properties\"],\"properties\":{\"nodeId\":{\"type\":\"string\"},\"targetType\":{\"enum\":[\"field\",\"section\",\"action\",\"row\",\"column\",\"visualBlock\"]},\"targets\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"properties\":{\"type\":\"object\"},\"propertiesWhenFalse\":{\"type\":\"object\"},\"conditionNodeId\":{\"type\":\"string\"}}},\"failureModes\":[\"node-not-found\",\"target-not-found\",\"property-not-allowed-for-target\",\"effect-value-invalid\",\"dsl-round-trip-failed\"],\"description\":\"Sets a property effect using governed target property schemas so export to FormLayoutRule remains deterministic.\"}}],\"validators\":[\"effect-targets-exist\",\"effect-properties-governed\",\"effect-values-valid\",\"dsl-round-trip-stable\"],\"affectedPaths\":[\"RuleBuilderState.nodes[].config.targetType\",\"RuleBuilderState.nodes[].config.targets\",\"RuleBuilderState.nodes[].config.properties\",\"RuleBuilderState.nodes[].config.propertiesWhenFalse\",\"RuleBuilderState.currentJSON\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"rule-builder-state-loaded\",\"target-schema-loaded\"],\"destructive\":false,\"requiresConfirmation\":false}]}",
|
|
1492
1841
|
"sourcePointer": "projects/praxis-visual-builder/src/lib/ai/praxis-visual-builder-authoring-manifest.ts",
|
|
1493
|
-
"contentHash": "
|
|
1842
|
+
"contentHash": "78a538a7955dcc016a50169b132097c00532de85ba8df331b101e9996a425f49",
|
|
1494
1843
|
"sourceKind": "component_definition",
|
|
1495
1844
|
"sourceId": "praxis-visual-builder",
|
|
1496
1845
|
"corpusVersion": "1.0.0"
|
|
1497
1846
|
},
|
|
1498
1847
|
{
|
|
1499
|
-
"chunkIndex":
|
|
1848
|
+
"chunkIndex": 15,
|
|
1849
|
+
"chunkKind": "authoring_manifest",
|
|
1850
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-visual-builder\",\"ownerPackage\":\"@praxisui/visual-builder\",\"configSchemaId\":\"RuleBuilderState\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"dsl.roundTrip.validate\",\"title\":\"Validate visual and DSL round trip\",\"scope\":\"runtimeCoverage\",\"targetKind\":\"dslDocument\",\"target\":{\"kind\":\"dslDocument\",\"resolver\":\"rule-builder-json-logic-document\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"properties\":{\"format\":{\"enum\":[\"json\"]},\"requireStableIds\":{\"type\":\"boolean\"},\"compareMode\":{\"enum\":[\"semantic\",\"exact\"]}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"visual-builder-dsl-round-trip-validate\",\"handlerContract\":{\"reads\":[\"RuleBuilderState\",\"RuleBuilderService.export\",\"RuleBuilderService.import\",\"RuleBuilderService.buildConditionExpressionFromGraph\",\"RuleNodeRegistryService.validateIntegrity\"],\"writes\":[\"RuleBuilderState.validationErrors\",\"RuleBuilderState.currentJSON\"],\"identityKeys\":[\"format\",\"compareMode\"],\"inputSchema\":{\"type\":\"object\",\"properties\":{\"format\":{\"enum\":[\"json\"]},\"requireStableIds\":{\"type\":\"boolean\"},\"compareMode\":{\"enum\":[\"semantic\",\"exact\"]}}},\"failureModes\":[\"graph-invalid\",\"export-failed\",\"import-failed\",\"semantic-drift\",\"unstable-node-identity\"],\"description\":\"Exports the visual model to JSON, imports it back and rejects semantic drift or unstable identity.\"}}],\"validators\":[\"graph-valid\",\"dsl-round-trip-stable\",\"json-logic-valid\",\"registry-integrity-valid\"],\"affectedPaths\":[\"RuleBuilderState.currentJSON\",\"RuleBuilderState.validationErrors\"],\"submissionImpact\":\"none\",\"preconditions\":[\"rule-builder-state-loaded\"],\"destructive\":false,\"requiresConfirmation\":false}]}",
|
|
1851
|
+
"sourcePointer": "projects/praxis-visual-builder/src/lib/ai/praxis-visual-builder-authoring-manifest.ts",
|
|
1852
|
+
"contentHash": "71cd3d63cf19a159d2134328ab96facb09606573d567d0540dc3644c7afb0fc7",
|
|
1853
|
+
"sourceKind": "component_definition",
|
|
1854
|
+
"sourceId": "praxis-visual-builder",
|
|
1855
|
+
"corpusVersion": "1.0.0"
|
|
1856
|
+
},
|
|
1857
|
+
{
|
|
1858
|
+
"chunkIndex": 16,
|
|
1500
1859
|
"chunkKind": "authoring_manifest",
|
|
1501
1860
|
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-visual-builder\",\"ownerPackage\":\"@praxisui/visual-builder\",\"configSchemaId\":\"RuleBuilderState\",\"chunkSection\":\"validators\",\"validators\":[{\"validatorId\":\"node-id-unique\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_NODE_ID_UNIQUE\",\"description\":\"Rule node ids must be unique and stable.\"},{\"validatorId\":\"node-exists\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_NODE_EXISTS\",\"description\":\"Target node must exist before it is configured or removed.\"},{\"validatorId\":\"node-type-supported\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_NODE_TYPE_SUPPORTED\",\"description\":\"Node type must be supported by the rule node registry and visual editor.\"},{\"validatorId\":\"node-config-compatible\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_NODE_CONFIG_COMPATIBLE\",\"description\":\"Node config must match the declared node type.\"},{\"validatorId\":\"parent-node-exists\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_PARENT_NODE_EXISTS\",\"description\":\"Parent node must exist when adding a child node.\"},{\"validatorId\":\"edge-exists\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_EDGE_EXISTS\",\"description\":\"Target edge must exist before removal.\"},{\"validatorId\":\"edges-reference-existing-nodes\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_EDGES_REFERENCE_NODES\",\"description\":\"Every edge must reference existing source and target nodes.\"},{\"validatorId\":\"graph-valid\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_GRAPH_VALID\",\"description\":\"Graph structure must pass registry integrity validation.\"},{\"validatorId\":\"graph-acyclic-where-required\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_GRAPH_ACYCLIC\",\"description\":\"Hierarchical rule graph edges must not introduce cycles.\"},{\"validatorId\":\"destructive-removal-confirmed\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_DESTRUCTIVE_REMOVAL_CONFIRMED\",\"description\":\"Destructive node or edge removal requires explicit confirmation.\"},{\"validatorId\":\"variable-id-unique\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_VARIABLE_ID_UNIQUE\",\"description\":\"Context variable name and scope must be unique.\"},{\"validatorId\":\"variable-scope-exists\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_VARIABLE_SCOPE_EXISTS\",\"description\":\"Context variable scope must exist in ContextManagementService before variables are added.\"},{\"validatorId\":\"context-variable-reference-valid\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_CONTEXT_VARIABLE_VALID\",\"description\":\"Contextual/template variable references must resolve to declared variables.\"},{\"validatorId\":\"json-logic-valid\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_JSON_LOGIC_VALID\",\"description\":\"Conditions must be valid JSON Logic objects, not JavaScript or legacy textual DSL.\"},{\"validatorId\":\"condition-operators-supported\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_CONDITION_OPERATORS_SUPPORTED\",\"description\":\"Condition operators must be supported by visual parsing and export.\"},{\"validatorId\":\"condition-fields-known\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_CONDITION_FIELDS_KNOWN\",\"description\":\"Condition field references must resolve to configured field schemas; field-to-field comparisons use JSON Logic var operands.\"},{\"validatorId\":\"effect-targets-exist\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_EFFECT_TARGETS_EXIST\",\"description\":\"Effect targets must exist in configured target schemas.\"},{\"validatorId\":\"effect-properties-governed\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_EFFECT_PROPERTIES_GOVERNED\",\"description\":\"Effect properties must be allowed for the target type.\"},{\"validatorId\":\"effect-values-valid\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_EFFECT_VALUES_VALID\",\"description\":\"Effect property values must satisfy target property schema types.\"},{\"validatorId\":\"registry-integrity-valid\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_REGISTRY_INTEGRITY_VALID\",\"description\":\"RuleNodeRegistryService integrity checks must pass.\"},{\"validatorId\":\"dsl-round-trip-stable\",\"level\":\"error\",\"code\":\"VISUAL_BUILDER_DSL_ROUND_TRIP_STABLE\",\"description\":\"Serialized JSON output must import back to the same semantic visual model.\"}]}",
|
|
1502
1861
|
"sourcePointer": "projects/praxis-visual-builder/src/lib/ai/praxis-visual-builder-authoring-manifest.ts",
|
|
@@ -1506,7 +1865,7 @@
|
|
|
1506
1865
|
"corpusVersion": "1.0.0"
|
|
1507
1866
|
},
|
|
1508
1867
|
{
|
|
1509
|
-
"chunkIndex":
|
|
1868
|
+
"chunkIndex": 17,
|
|
1510
1869
|
"chunkKind": "authoring_manifest",
|
|
1511
1870
|
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-visual-builder\",\"ownerPackage\":\"@praxisui/visual-builder\",\"configSchemaId\":\"RuleBuilderState\",\"chunkSection\":\"roundTripRequirements\",\"roundTripRequirements\":[\"RuleBuilderState is the visual source of truth; JSON export must import back without semantic drift.\",\"RuleNode.id and context variable scope/name are canonical identities for their own surfaces; array indexes are not canonical identities.\",\"Edges must reference existing nodes and must not create cycles in hierarchical rule graphs.\",\"Conditions are canonical JSON Logic objects. JavaScript expressions and legacy textual DSL must not be introduced as persisted authoring payloads.\",\"Effects must be constrained by target property schemas and RULE_PROPERTY_SCHEMA so exported FormLayoutRule payloads stay deterministic.\",\"Component-specific configuration belongs to child component manifests; visual-builder owns graph, supported JSON Logic, context-variable registry and property-effect orchestration.\"]}",
|
|
1512
1871
|
"sourcePointer": "projects/praxis-visual-builder/src/lib/ai/praxis-visual-builder-authoring-manifest.ts",
|
|
@@ -1516,7 +1875,7 @@
|
|
|
1516
1875
|
"corpusVersion": "1.0.0"
|
|
1517
1876
|
},
|
|
1518
1877
|
{
|
|
1519
|
-
"chunkIndex":
|
|
1878
|
+
"chunkIndex": 18,
|
|
1520
1879
|
"chunkKind": "authoring_manifest",
|
|
1521
1880
|
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-visual-builder\",\"ownerPackage\":\"@praxisui/visual-builder\",\"configSchemaId\":\"RuleBuilderState\",\"chunkSection\":\"examples\",\"examples\":[{\"id\":\"add-field-condition\",\"request\":\"Add a condition that age is greater than 18.\",\"operationId\":\"node.add\",\"params\":{\"nodeId\":\"age-gt-18\",\"nodeType\":\"fieldCondition\",\"label\":\"Age over 18\",\"config\":{\"type\":\"fieldCondition\",\"fieldName\":\"age\",\"operator\":\"gt\",\"value\":18}},\"isPositive\":true},{\"id\":\"add-property-rule\",\"request\":\"Add a rule that hides the spouse section.\",\"operationId\":\"node.add\",\"params\":{\"nodeId\":\"hide-spouse-section\",\"nodeType\":\"propertyRule\",\"config\":{\"type\":\"propertyRule\",\"targetType\":\"section\",\"targets\":[\"spouse\"],\"properties\":{\"visible\":false}}},\"isPositive\":true},{\"id\":\"configure-node\",\"request\":\"Rename the eligibility rule and mark it expanded.\",\"operationId\":\"node.configure\",\"params\":{\"nodeId\":\"eligibility\",\"label\":\"Eligibility rule\",\"expanded\":true},\"isPositive\":true},{\"id\":\"connect-edge\",\"request\":\"Make the age condition a child of the AND group.\",\"operationId\":\"edge.connect\",\"params\":{\"sourceNodeId\":\"eligibility-and\",\"targetNodeId\":\"age-gt-18\",\"edgeKind\":\"child\"},\"isPositive\":true},{\"id\":\"remove-edge\",\"request\":\"Disconnect the age condition from the AND group.\",\"operationId\":\"edge.remove\",\"params\":{\"sourceNodeId\":\"eligibility-and\",\"targetNodeId\":\"age-gt-18\",\"edgeKind\":\"child\"},\"isPositive\":true},{\"id\":\"add-variable\",\"request\":\"Add a global variable for current tenant.\",\"operationId\":\"variable.add\",\"params\":{\"name\":\"tenantId\",\"scope\":\"global\",\"type\":\"string\",\"description\":\"Current tenant id\"},\"isPositive\":true},{\"id\":\"set-condition\",\"request\":\"Set this condition to require country equal Brazil.\",\"operationId\":\"condition.set\",\"params\":{\"nodeId\":\"country-br\",\"condition\":{\"===\":[{\"var\":\"country\"},\"BR\"]},\"source\":\"jsonLogic\"},\"isPositive\":true},{\"id\":\"set-effect\",\"request\":\"Make the salary field readonly when the condition is true.\",\"operationId\":\"effect.set\",\"params\":{\"nodeId\":\"salary-readonly\",\"targetType\":\"field\",\"targets\":[\"salary\"],\"properties\":{\"readonly\":true}},\"isPositive\":true},{\"id\":\"validate-round-trip\",\"request\":\"Validate that this graph exports and imports without drift.\",\"operationId\":\"dsl.roundTrip.validate\",\"params\":{\"format\":\"json\",\"requireStableIds\":true,\"compareMode\":\"semantic\"},\"isPositive\":true},{\"id\":\"reject-duplicate-node\",\"request\":\"Add another node with id age-gt-18.\",\"operationId\":\"node.add\",\"params\":{\"nodeId\":\"age-gt-18\",\"nodeType\":\"fieldCondition\"},\"isPositive\":false},{\"id\":\"reject-cycle\",\"request\":\"Connect a child back to its parent and create a cycle.\",\"operationId\":\"edge.connect\",\"params\":{\"sourceNodeId\":\"age-gt-18\",\"targetNodeId\":\"eligibility-and\",\"edgeKind\":\"child\"},\"isPositive\":false},{\"id\":\"reject-javascript-condition\",\"request\":\"Use age > 18 as a JavaScript expression.\",\"operationId\":\"condition.set\",\"params\":{\"nodeId\":\"age-gt-18\",\"condition\":\"age > 18\"},\"isPositive\":false},{\"id\":\"reject-unknown-effect-property\",\"request\":\"Set an unknown field property named sparkle.\",\"operationId\":\"effect.set\",\"params\":{\"nodeId\":\"sparkle-field\",\"targetType\":\"field\",\"targets\":[\"name\"],\"properties\":{\"sparkle\":true}},\"isPositive\":false},{\"id\":\"reject-drift\",\"request\":\"Accept the graph even though export/import changes node meaning.\",\"operationId\":\"dsl.roundTrip.validate\",\"params\":{\"format\":\"json\",\"compareMode\":\"exact\"},\"isPositive\":false}]}",
|
|
1522
1881
|
"sourcePointer": "projects/praxis-visual-builder/src/lib/ai/praxis-visual-builder-authoring-manifest.ts",
|
|
@@ -1526,7 +1885,7 @@
|
|
|
1526
1885
|
"corpusVersion": "1.0.0"
|
|
1527
1886
|
},
|
|
1528
1887
|
{
|
|
1529
|
-
"chunkIndex":
|
|
1888
|
+
"chunkIndex": 19,
|
|
1530
1889
|
"chunkKind": "context_pack",
|
|
1531
1890
|
"content": "{\"componentContext\":{\"version\":\"v1\",\"optionsByPath\":{\"ui.theme\":{\"mode\":\"enum\",\"options\":[{\"value\":\"light\",\"label\":\"Light\"},{\"value\":\"dark\",\"label\":\"Dark\"},{\"value\":\"auto\",\"label\":\"Auto\"}]},\"validation.strictness\":{\"mode\":\"enum\",\"options\":[{\"value\":\"strict\",\"label\":\"Strict\"},{\"value\":\"normal\",\"label\":\"Normal\"},{\"value\":\"loose\",\"label\":\"Loose\"}]},\"exportImport.defaultExportFormat\":{\"mode\":\"enum\",\"options\":[{\"value\":\"json\",\"label\":\"JSON\"},{\"value\":\"typescript\",\"label\":\"TypeScript\"}]}},\"actionCatalog\":[{\"id\":\"ui.theme.set\",\"intentExamples\":[\"theme\",\"light\",\"dark\",\"auto theme\"],\"patchTemplate\":{\"ui\":{\"theme\":\"{{value}}\"}}},{\"id\":\"ui.showInlineErrors.enable\",\"intentExamples\":[\"inline errors\",\"show errors\"],\"patchTemplate\":{\"ui\":{\"showInlineErrors\":true}}},{\"id\":\"ui.showInlineErrors.disable\",\"intentExamples\":[\"hide errors\",\"no inline errors\"],\"patchTemplate\":{\"ui\":{\"showInlineErrors\":false}}},{\"id\":\"ui.autoSaveInterval.set\",\"intentExamples\":[\"autosave\",\"auto save\",\"save interval\"],\"patchTemplate\":{\"ui\":{\"autoSaveInterval\":\"{{value}}\"}}},{\"id\":\"validation.realTime.enable\",\"intentExamples\":[\"real-time validation\",\"live validation\"],\"patchTemplate\":{\"validation\":{\"realTime\":true}}},{\"id\":\"validation.realTime.disable\",\"intentExamples\":[\"disable validation\",\"no live validation\"],\"patchTemplate\":{\"validation\":{\"realTime\":false}}},{\"id\":\"validation.strictness.set\",\"intentExamples\":[\"strictness\",\"validation level\"],\"patchTemplate\":{\"validation\":{\"strictness\":\"{{value}}\"}}},{\"id\":\"exportImport.defaultExportFormat.set\",\"intentExamples\":[\"export format\",\"default export\",\"json logic export\"],\"patchTemplate\":{\"exportImport\":{\"defaultExportFormat\":\"{{value}}\"}}},{\"id\":\"template.add\",\"intentExamples\":[\"add template\",\"new template\",\"create template\"],\"patchTemplate\":{\"templates\":[{\"id\":\"{{target}}\",\"name\":\"{{value}}\",\"description\":\"{{params.description}}\",\"category\":\"{{params.category}}\",\"tags\":[\"{{params.tag}}\"],\"nodes\":[],\"rootNodes\":[]}]}}],\"fieldResolvers\":{\"templates[]\":[\"id\",\"name\"]},\"hints\":[\"Use templates[].id as merge key; avoid array indexes.\",\"Rule graph and node structures are complex; prefer editing via templates or UI config toggles.\"]}}",
|
|
1532
1891
|
"sourcePointer": "projects/praxis-visual-builder/src/lib/ai/visual-builder-context-pack.ts",
|
|
@@ -1536,7 +1895,7 @@
|
|
|
1536
1895
|
"corpusVersion": "1.0.0"
|
|
1537
1896
|
},
|
|
1538
1897
|
{
|
|
1539
|
-
"chunkIndex":
|
|
1898
|
+
"chunkIndex": 20,
|
|
1540
1899
|
"chunkKind": "recipe",
|
|
1541
1900
|
"content": "{\"_comment\":\"Receita para o Visual Builder de Regras (DSL/Flow).\",\"templateMeta\":{\"registryKey\":\"praxis-visual-builder\",\"variantId\":\"base\",\"useWhen\":\"Base visual rule builder configuration.\",\"examplePrompts\":[\"create a visual rule builder flow\",\"add nodes and connections in the rule graph\"]},\"config\":{\"ruleGraph\":{\"nodes\":[{\"id\":\"node-1\",\"type\":\"trigger\",\"label\":\"Quando Pedido Criado\",\"x\":100,\"y\":100},{\"id\":\"node-2\",\"type\":\"condition\",\"label\":\"Valor > 1000\",\"expression\":\"amount > 1000\",\"x\":300,\"y\":100},{\"id\":\"node-3\",\"type\":\"action\",\"label\":\"Aprovar Automaticamente\",\"action\":\"approve\",\"x\":500,\"y\":50},{\"id\":\"node-4\",\"type\":\"action\",\"label\":\"Solicitar Aprovação\",\"action\":\"request_approval\",\"x\":500,\"y\":150}],\"edges\":[{\"from\":\"node-1\",\"to\":\"node-2\"},{\"from\":\"node-2\",\"to\":\"node-3\",\"label\":\"Sim\"},{\"from\":\"node-2\",\"to\":\"node-4\",\"label\":\"Não\"}]},\"palette\":[{\"type\":\"condition\",\"icon\":\"help\",\"label\":\"Condição\"},{\"type\":\"action\",\"icon\":\"play_arrow\",\"label\":\"Ação\"}],\"context\":{\"variables\":[{\"name\":\"amount\",\"type\":\"number\"},{\"name\":\"customerType\",\"type\":\"string\"}]},\"validation\":{\"rules\":[\"no-orphans\",\"valid-expressions\"]},\"preview\":{\"enabled\":true,\"sampleData\":{\"amount\":1500,\"customerType\":\"VIP\"}}}}",
|
|
1542
1901
|
"sourcePointer": "examples/ai-recipes/praxis-visual-rule-builder.json",
|