@mat3ra/esse 2026.7.21-0 → 2026.8.13-0

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.
Files changed (92) hide show
  1. package/.cursor/rules/resolve-generated-merge-conflicts.mdc +36 -0
  2. package/dist/js/esse/JSONSchemasInterface.d.ts +4 -0
  3. package/dist/js/esse/JSONSchemasInterface.js +10 -0
  4. package/dist/js/schema/job.json +147 -176
  5. package/dist/js/schema/material/material_properties.json +0 -4
  6. package/dist/js/schema/material.json +0 -4
  7. package/dist/js/schema/material_enhanced.json +889 -0
  8. package/dist/js/schema/material_enhanced_hashed.json +898 -0
  9. package/dist/js/schema/material_hashed.json +858 -0
  10. package/dist/js/schema/materials_category/compound_pristine_structures/two_dimensional/interface/configuration.json +0 -36
  11. package/dist/js/schema/materials_category/defective_structures/one_dimensional/grain_boundary_linear/configuration.json +0 -36
  12. package/dist/js/schema/materials_category/defective_structures/three_dimensional/solid_solution/configuration.json +0 -12
  13. package/dist/js/schema/materials_category/defective_structures/two_dimensional/adatom/configuration.json +0 -16
  14. package/dist/js/schema/materials_category/defective_structures/two_dimensional/grain_boundary_planar/configuration.json +0 -36
  15. package/dist/js/schema/materials_category/defective_structures/two_dimensional/island/configuration.json +0 -24
  16. package/dist/js/schema/materials_category/defective_structures/two_dimensional/terrace/configuration.json +0 -24
  17. package/dist/js/schema/materials_category/defective_structures/zero_dimensional/point_defect/base_configuration.json +0 -4
  18. package/dist/js/schema/materials_category/defective_structures/zero_dimensional/point_defect/interstitial.json +0 -8
  19. package/dist/js/schema/materials_category/defective_structures/zero_dimensional/point_defect/substitutional.json +0 -8
  20. package/dist/js/schema/materials_category/defective_structures/zero_dimensional/point_defect/vacancy.json +0 -4
  21. package/dist/js/schema/materials_category/pristine_structures/three_dimensional/ideal_crystal.json +0 -4
  22. package/dist/js/schema/materials_category/pristine_structures/two_dimensional/nanoribbon.json +0 -12
  23. package/dist/js/schema/materials_category/pristine_structures/two_dimensional/nanotape.json +0 -8
  24. package/dist/js/schema/materials_category/pristine_structures/two_dimensional/slab.json +0 -8
  25. package/dist/js/schema/materials_category/pristine_structures/two_dimensional/slab_strained_supercell.json +0 -8
  26. package/dist/js/schema/materials_category/processed_structures/two_dimensional/passivation/configuration.json +0 -8
  27. package/dist/js/schema/materials_category_components/entities/auxiliary/zero_dimensional/crystal_site.json +0 -4
  28. package/dist/js/schema/materials_category_components/entities/auxiliary/zero_dimensional/point_defect_site.json +0 -4
  29. package/dist/js/schema/materials_category_components/entities/auxiliary/zero_dimensional/void_region.json +0 -4
  30. package/dist/js/schema/materials_category_components/entities/core/three_dimensional/crystal.json +0 -4
  31. package/dist/js/schema/materials_category_components/entities/core/two_dimensional/vacuum.json +0 -4
  32. package/dist/js/schema/materials_category_components/entities/reusable/one_dimensional/crystal_lattice_lines.json +0 -4
  33. package/dist/js/schema/materials_category_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated.json +0 -4
  34. package/dist/js/schema/materials_category_components/entities/reusable/three_dimensional/crystal_lattice_base.json +0 -4
  35. package/dist/js/schema/materials_category_components/entities/reusable/three_dimensional/strained_non_uniform.json +0 -4
  36. package/dist/js/schema/materials_category_components/entities/reusable/three_dimensional/strained_uniform.json +0 -4
  37. package/dist/js/schema/materials_category_components/entities/reusable/three_dimensional/supercell.json +0 -4
  38. package/dist/js/schema/materials_category_components/entities/reusable/two_dimensional/atomic_layers.json +0 -4
  39. package/dist/js/schema/materials_category_components/entities/reusable/two_dimensional/atomic_layers_unique.json +0 -4
  40. package/dist/js/schema/materials_category_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated.json +0 -4
  41. package/dist/js/schema/materials_category_components/entities/reusable/two_dimensional/crystal_lattice_planes.json +0 -4
  42. package/dist/js/schema/materials_category_components/entities/reusable/two_dimensional/slab_stack_configuration.json +0 -12
  43. package/dist/js/schema/materials_category_components/operations/core/modifications/perturb.json +0 -4
  44. package/dist/js/schema/properties_directory/non_scalar/workflow.json +147 -176
  45. package/dist/js/schema/properties_directory/structural/basis_constrained.json +292 -0
  46. package/dist/js/schema/property/holder.json +147 -176
  47. package/dist/js/schema/software_directory/modeling/unit/execution.json +14 -16
  48. package/dist/js/schema/software_directory/scripting/unit/execution.json +14 -16
  49. package/dist/js/schema/system/bankable.json +1 -6
  50. package/dist/js/schema/system/hashed.json +15 -0
  51. package/dist/js/schema/system/status_track.json +29 -0
  52. package/dist/js/schema/workflow/base.json +147 -176
  53. package/dist/js/schema/workflow/subworkflow/mixin.json +88 -105
  54. package/dist/js/schema/workflow/subworkflow/unit.json +88 -105
  55. package/dist/js/schema/workflow/subworkflow.json +88 -105
  56. package/dist/js/schema/workflow/unit/assertion.json +15 -18
  57. package/dist/js/schema/workflow/unit/assignment.json +14 -17
  58. package/dist/js/schema/workflow/unit/base.json +12 -17
  59. package/dist/js/schema/workflow/unit/condition.json +15 -18
  60. package/dist/js/schema/workflow/unit/error.json +15 -18
  61. package/dist/js/schema/workflow/unit/execution.json +14 -16
  62. package/dist/js/schema/workflow/unit/io.json +15 -18
  63. package/dist/js/schema/workflow/unit/map.json +14 -17
  64. package/dist/js/schema/workflow/unit/mixins/base.json +11 -20
  65. package/dist/js/schema/workflow/unit/reduce.json +15 -18
  66. package/dist/js/schema/workflow/unit/subworkflow.json +15 -18
  67. package/dist/js/schema/workflow/unit.json +59 -71
  68. package/dist/js/schema/workflow.json +147 -176
  69. package/dist/js/schemas.json +1 -1
  70. package/dist/js/types.d.ts +1592 -1246
  71. package/dist/js/utils/ajv.d.ts +6 -5
  72. package/dist/js/utils/ajv.js +22 -9
  73. package/dist/js/utils/ajvKeywords/jsonSchemaToTypescriptKeywords.d.ts +7 -0
  74. package/dist/js/utils/ajvKeywords/jsonSchemaToTypescriptKeywords.js +21 -0
  75. package/dist/js/utils/removeEmptyAndNullProperties.d.ts +9 -0
  76. package/dist/js/utils/removeEmptyAndNullProperties.js +29 -0
  77. package/package.json +1 -1
  78. package/schema/material/material_properties.json +0 -4
  79. package/schema/material_enhanced.json +18 -0
  80. package/schema/material_enhanced_hashed.json +14 -0
  81. package/schema/material_hashed.json +22 -0
  82. package/schema/properties_directory/structural/basis_constrained.json +19 -0
  83. package/schema/system/bankable.json +1 -6
  84. package/schema/system/hashed.json +15 -0
  85. package/schema/system/status.json +5 -21
  86. package/schema/system/status_track.json +29 -0
  87. package/schema/workflow/unit/base.json +1 -1
  88. package/schema/workflow/unit/mixins/base.json +11 -20
  89. package/src/js/esse/JSONSchemasInterface.ts +11 -0
  90. package/src/js/utils/ajv.ts +22 -9
  91. package/src/js/utils/ajvKeywords/jsonSchemaToTypescriptKeywords.ts +22 -0
  92. package/src/js/utils/removeEmptyAndNullProperties.ts +32 -0
@@ -0,0 +1,36 @@
1
+ ---
2
+ description: Resolve ESSE merge conflicts by merging source schemas and regenerating derived artifacts
3
+ globs: "{schema,example,manifest,dist/js,src/py}/**/*"
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # ESSE generated merge conflicts
8
+
9
+ Treat `schema/**`, `example/**`, and `manifest/**` as sources of truth. These outputs are generated:
10
+
11
+ - `dist/js/**`
12
+ - `src/py/mat3ra/esse/data/**`
13
+ - `src/py/mat3ra/esse/models/**` (`dist/py` points here)
14
+
15
+ When merging:
16
+
17
+ 1. Merge source schemas, examples, and manifests first, preserving intentional changes from both branches.
18
+ 2. Do not hand-merge generated Python enum suffixes such as `Name631`, `Units284`, or `Value137`; their numbering is unstable and regeneration determines it.
19
+ 3. Resolve generated files temporarily if Git requires it, then regenerate all derived artifacts from the merged sources:
20
+
21
+ ```bash
22
+ npm run transpile-and-build-assets
23
+ pre-commit run generate-python-modules --all-files
24
+ ```
25
+
26
+ The Python hook only runs when a staged path contains `schema`, so stage the resolved source schema changes before invoking it. Its canonical command and pinned generator options live in `.pre-commit-config.yaml`.
27
+
28
+ After generation, stage the generated outputs and verify:
29
+
30
+ ```bash
31
+ git diff --name-only --diff-filter=U
32
+ rg -n '^(<<<<<<<|=======|>>>>>>>)' .
33
+ git diff --check
34
+ ```
35
+
36
+ Do not blindly choose `ours` or `theirs` for generated files when source schemas differ. A side may contain real additions (for example, a new property) while the other contains unrelated schema fixes; the regenerated result must include both.
@@ -9,6 +9,10 @@ export default class JSONSchemasInterface {
9
9
  static setSchemas(schema: JSONSchema[]): void;
10
10
  static addSchema(schema: JSONSchema): void;
11
11
  static getSchemaById(schemaId: string): import("json-schema").JSONSchema7 | undefined;
12
+ /**
13
+ * Like {@link getSchemaById}, but throws if the schema is not registered.
14
+ */
15
+ static getRequiredSchemaById(schemaId: string): JSONSchema;
12
16
  /**
13
17
  * @example <caption>Search by $id regex</caption>
14
18
  * JSONSchemasInterface.matchSchema({
@@ -13,6 +13,16 @@ class JSONSchemasInterface {
13
13
  static getSchemaById(schemaId) {
14
14
  return this.schemasCache.get(schemaId);
15
15
  }
16
+ /**
17
+ * Like {@link getSchemaById}, but throws if the schema is not registered.
18
+ */
19
+ static getRequiredSchemaById(schemaId) {
20
+ const schema = this.getSchemaById(schemaId);
21
+ if (!schema) {
22
+ throw new Error(`ESSE schema not found: ${schemaId}`);
23
+ }
24
+ return schema;
25
+ }
16
26
  /**
17
27
  * @example <caption>Search by $id regex</caption>
18
28
  * JSONSchemasInterface.matchSchema({
@@ -475,8 +475,7 @@
475
475
  "preProcessors",
476
476
  "results",
477
477
  "source",
478
- "subtype",
479
- "type"
478
+ "subtype"
480
479
  ],
481
480
  "properties": {
482
481
  "_id": {
@@ -591,17 +590,6 @@
591
590
  "type": "string"
592
591
  }
593
592
  },
594
- "status": {
595
- "type": "string",
596
- "description": "Status of the unit.",
597
- "enum": [
598
- "idle",
599
- "active",
600
- "warning",
601
- "error",
602
- "finished"
603
- ]
604
- },
605
593
  "statusTrack": {
606
594
  "type": "array",
607
595
  "items": {
@@ -626,11 +614,6 @@
626
614
  "isDraft": {
627
615
  "type": "boolean"
628
616
  },
629
- "type": {
630
- "description": "type of the unit",
631
- "type": "string",
632
- "const": "io"
633
- },
634
617
  "head": {
635
618
  "description": "Whether this unit is the first one to be executed.",
636
619
  "type": "boolean"
@@ -647,6 +630,20 @@
647
630
  "description": "Whether Rupy should attempt to use Jinja templating to add context variables into the unit",
648
631
  "type": "boolean"
649
632
  },
633
+ "status": {
634
+ "description": "Status of the unit.",
635
+ "type": "string",
636
+ "enum": [
637
+ "idle",
638
+ "active",
639
+ "warning",
640
+ "error",
641
+ "finished"
642
+ ]
643
+ },
644
+ "type": {
645
+ "const": "io"
646
+ },
650
647
  "subtype": {
651
648
  "enum": [
652
649
  "input",
@@ -779,8 +776,7 @@
779
776
  "preProcessors",
780
777
  "results",
781
778
  "statement",
782
- "then",
783
- "type"
779
+ "then"
784
780
  ],
785
781
  "properties": {
786
782
  "_id": {
@@ -895,17 +891,6 @@
895
891
  "type": "string"
896
892
  }
897
893
  },
898
- "status": {
899
- "type": "string",
900
- "description": "Status of the unit.",
901
- "enum": [
902
- "idle",
903
- "active",
904
- "warning",
905
- "error",
906
- "finished"
907
- ]
908
- },
909
894
  "statusTrack": {
910
895
  "type": "array",
911
896
  "items": {
@@ -930,11 +915,6 @@
930
915
  "isDraft": {
931
916
  "type": "boolean"
932
917
  },
933
- "type": {
934
- "description": "type of the unit",
935
- "type": "string",
936
- "const": "condition"
937
- },
938
918
  "head": {
939
919
  "description": "Whether this unit is the first one to be executed.",
940
920
  "type": "boolean"
@@ -951,6 +931,20 @@
951
931
  "description": "Whether Rupy should attempt to use Jinja templating to add context variables into the unit",
952
932
  "type": "boolean"
953
933
  },
934
+ "status": {
935
+ "description": "Status of the unit.",
936
+ "type": "string",
937
+ "enum": [
938
+ "idle",
939
+ "active",
940
+ "warning",
941
+ "error",
942
+ "finished"
943
+ ]
944
+ },
945
+ "type": {
946
+ "const": "condition"
947
+ },
954
948
  "input": {
955
949
  "description": "Input information for condition.",
956
950
  "type": "array",
@@ -1007,8 +1001,7 @@
1007
1001
  "postProcessors",
1008
1002
  "preProcessors",
1009
1003
  "results",
1010
- "statement",
1011
- "type"
1004
+ "statement"
1012
1005
  ],
1013
1006
  "properties": {
1014
1007
  "_id": {
@@ -1123,17 +1116,6 @@
1123
1116
  "type": "string"
1124
1117
  }
1125
1118
  },
1126
- "status": {
1127
- "type": "string",
1128
- "description": "Status of the unit.",
1129
- "enum": [
1130
- "idle",
1131
- "active",
1132
- "warning",
1133
- "error",
1134
- "finished"
1135
- ]
1136
- },
1137
1119
  "statusTrack": {
1138
1120
  "type": "array",
1139
1121
  "items": {
@@ -1158,11 +1140,6 @@
1158
1140
  "isDraft": {
1159
1141
  "type": "boolean"
1160
1142
  },
1161
- "type": {
1162
- "description": "type of the unit",
1163
- "type": "string",
1164
- "const": "assertion"
1165
- },
1166
1143
  "head": {
1167
1144
  "description": "Whether this unit is the first one to be executed.",
1168
1145
  "type": "boolean"
@@ -1179,6 +1156,20 @@
1179
1156
  "description": "Whether Rupy should attempt to use Jinja templating to add context variables into the unit",
1180
1157
  "type": "boolean"
1181
1158
  },
1159
+ "status": {
1160
+ "description": "Status of the unit.",
1161
+ "type": "string",
1162
+ "enum": [
1163
+ "idle",
1164
+ "active",
1165
+ "warning",
1166
+ "error",
1167
+ "finished"
1168
+ ]
1169
+ },
1170
+ "type": {
1171
+ "const": "assertion"
1172
+ },
1182
1173
  "statement": {
1183
1174
  "type": "string",
1184
1175
  "description": "The statement to be evaluated"
@@ -1320,17 +1311,6 @@
1320
1311
  "type": "string"
1321
1312
  }
1322
1313
  },
1323
- "status": {
1324
- "type": "string",
1325
- "description": "Status of the unit.",
1326
- "enum": [
1327
- "idle",
1328
- "active",
1329
- "warning",
1330
- "error",
1331
- "finished"
1332
- ]
1333
- },
1334
1314
  "statusTrack": {
1335
1315
  "type": "array",
1336
1316
  "items": {
@@ -1355,11 +1335,6 @@
1355
1335
  "isDraft": {
1356
1336
  "type": "boolean"
1357
1337
  },
1358
- "type": {
1359
- "description": "type of the unit",
1360
- "type": "string",
1361
- "const": "execution"
1362
- },
1363
1338
  "head": {
1364
1339
  "description": "Whether this unit is the first one to be executed.",
1365
1340
  "type": "boolean"
@@ -1376,6 +1351,20 @@
1376
1351
  "description": "Whether Rupy should attempt to use Jinja templating to add context variables into the unit",
1377
1352
  "type": "boolean"
1378
1353
  },
1354
+ "status": {
1355
+ "description": "Status of the unit.",
1356
+ "type": "string",
1357
+ "enum": [
1358
+ "idle",
1359
+ "active",
1360
+ "warning",
1361
+ "error",
1362
+ "finished"
1363
+ ]
1364
+ },
1365
+ "type": {
1366
+ "const": "execution"
1367
+ },
1379
1368
  "application": {
1380
1369
  "$schema": "http://json-schema.org/draft-07/schema#",
1381
1370
  "title": "application schema",
@@ -3356,7 +3345,6 @@
3356
3345
  "postProcessors",
3357
3346
  "preProcessors",
3358
3347
  "results",
3359
- "type",
3360
3348
  "value"
3361
3349
  ],
3362
3350
  "properties": {
@@ -3472,17 +3460,6 @@
3472
3460
  "type": "string"
3473
3461
  }
3474
3462
  },
3475
- "status": {
3476
- "type": "string",
3477
- "description": "Status of the unit.",
3478
- "enum": [
3479
- "idle",
3480
- "active",
3481
- "warning",
3482
- "error",
3483
- "finished"
3484
- ]
3485
- },
3486
3463
  "statusTrack": {
3487
3464
  "type": "array",
3488
3465
  "items": {
@@ -3507,11 +3484,6 @@
3507
3484
  "isDraft": {
3508
3485
  "type": "boolean"
3509
3486
  },
3510
- "type": {
3511
- "description": "type of the unit",
3512
- "type": "string",
3513
- "const": "assignment"
3514
- },
3515
3487
  "head": {
3516
3488
  "description": "Whether this unit is the first one to be executed.",
3517
3489
  "type": "boolean"
@@ -3528,9 +3500,23 @@
3528
3500
  "description": "Whether Rupy should attempt to use Jinja templating to add context variables into the unit",
3529
3501
  "type": "boolean"
3530
3502
  },
3503
+ "status": {
3504
+ "description": "Status of the unit.",
3505
+ "type": "string",
3506
+ "enum": [
3507
+ "idle",
3508
+ "active",
3509
+ "warning",
3510
+ "error",
3511
+ "finished"
3512
+ ]
3513
+ },
3531
3514
  "scope": {
3532
3515
  "type": "string"
3533
3516
  },
3517
+ "type": {
3518
+ "const": "assignment"
3519
+ },
3534
3520
  "input": {
3535
3521
  "description": "Input information for assignment. if omitted, means that it is an initialization unit, otherwise it is an assignment.",
3536
3522
  "type": "array",
@@ -3585,8 +3571,7 @@
3585
3571
  "postProcessors",
3586
3572
  "preProcessors",
3587
3573
  "reason",
3588
- "results",
3589
- "type"
3574
+ "results"
3590
3575
  ],
3591
3576
  "properties": {
3592
3577
  "_id": {
@@ -3701,17 +3686,6 @@
3701
3686
  "type": "string"
3702
3687
  }
3703
3688
  },
3704
- "status": {
3705
- "type": "string",
3706
- "description": "Status of the unit.",
3707
- "enum": [
3708
- "idle",
3709
- "active",
3710
- "warning",
3711
- "error",
3712
- "finished"
3713
- ]
3714
- },
3715
3689
  "statusTrack": {
3716
3690
  "type": "array",
3717
3691
  "items": {
@@ -3736,11 +3710,6 @@
3736
3710
  "isDraft": {
3737
3711
  "type": "boolean"
3738
3712
  },
3739
- "type": {
3740
- "description": "type of the unit",
3741
- "type": "string",
3742
- "const": "error"
3743
- },
3744
3713
  "head": {
3745
3714
  "description": "Whether this unit is the first one to be executed.",
3746
3715
  "type": "boolean"
@@ -3757,6 +3726,20 @@
3757
3726
  "description": "Whether Rupy should attempt to use Jinja templating to add context variables into the unit",
3758
3727
  "type": "boolean"
3759
3728
  },
3729
+ "status": {
3730
+ "description": "Status of the unit.",
3731
+ "type": "string",
3732
+ "enum": [
3733
+ "idle",
3734
+ "active",
3735
+ "warning",
3736
+ "error",
3737
+ "finished"
3738
+ ]
3739
+ },
3740
+ "type": {
3741
+ "const": "error"
3742
+ },
3760
3743
  "reason": {
3761
3744
  "type": "string",
3762
3745
  "description": "JSON string with validation/hydration details: { error, json, schema }"
@@ -4191,7 +4174,6 @@
4191
4174
  "postProcessors",
4192
4175
  "preProcessors",
4193
4176
  "results",
4194
- "type",
4195
4177
  "workflowId"
4196
4178
  ],
4197
4179
  "properties": {
@@ -4307,17 +4289,6 @@
4307
4289
  "type": "string"
4308
4290
  }
4309
4291
  },
4310
- "status": {
4311
- "type": "string",
4312
- "description": "Status of the unit.",
4313
- "enum": [
4314
- "idle",
4315
- "active",
4316
- "warning",
4317
- "error",
4318
- "finished"
4319
- ]
4320
- },
4321
4292
  "statusTrack": {
4322
4293
  "type": "array",
4323
4294
  "items": {
@@ -4342,11 +4313,6 @@
4342
4313
  "isDraft": {
4343
4314
  "type": "boolean"
4344
4315
  },
4345
- "type": {
4346
- "description": "type of the unit",
4347
- "type": "string",
4348
- "const": "map"
4349
- },
4350
4316
  "head": {
4351
4317
  "description": "Whether this unit is the first one to be executed.",
4352
4318
  "type": "boolean"
@@ -4363,6 +4329,20 @@
4363
4329
  "description": "Whether Rupy should attempt to use Jinja templating to add context variables into the unit",
4364
4330
  "type": "boolean"
4365
4331
  },
4332
+ "status": {
4333
+ "description": "Status of the unit.",
4334
+ "type": "string",
4335
+ "enum": [
4336
+ "idle",
4337
+ "active",
4338
+ "warning",
4339
+ "error",
4340
+ "finished"
4341
+ ]
4342
+ },
4343
+ "type": {
4344
+ "const": "map"
4345
+ },
4366
4346
  "workflowId": {
4367
4347
  "description": "Id of workflow to run inside map",
4368
4348
  "type": "string"
@@ -4422,8 +4402,7 @@
4422
4402
  "name",
4423
4403
  "postProcessors",
4424
4404
  "preProcessors",
4425
- "results",
4426
- "type"
4405
+ "results"
4427
4406
  ],
4428
4407
  "properties": {
4429
4408
  "_id": {
@@ -4538,17 +4517,6 @@
4538
4517
  "type": "string"
4539
4518
  }
4540
4519
  },
4541
- "status": {
4542
- "type": "string",
4543
- "description": "Status of the unit.",
4544
- "enum": [
4545
- "idle",
4546
- "active",
4547
- "warning",
4548
- "error",
4549
- "finished"
4550
- ]
4551
- },
4552
4520
  "statusTrack": {
4553
4521
  "type": "array",
4554
4522
  "items": {
@@ -4573,11 +4541,6 @@
4573
4541
  "isDraft": {
4574
4542
  "type": "boolean"
4575
4543
  },
4576
- "type": {
4577
- "description": "type of the unit",
4578
- "type": "string",
4579
- "const": "reduce"
4580
- },
4581
4544
  "head": {
4582
4545
  "description": "Whether this unit is the first one to be executed.",
4583
4546
  "type": "boolean"
@@ -4594,6 +4557,20 @@
4594
4557
  "description": "Whether Rupy should attempt to use Jinja templating to add context variables into the unit",
4595
4558
  "type": "boolean"
4596
4559
  },
4560
+ "status": {
4561
+ "description": "Status of the unit.",
4562
+ "type": "string",
4563
+ "enum": [
4564
+ "idle",
4565
+ "active",
4566
+ "warning",
4567
+ "error",
4568
+ "finished"
4569
+ ]
4570
+ },
4571
+ "type": {
4572
+ "const": "reduce"
4573
+ },
4597
4574
  "mapFlowchartId": {
4598
4575
  "description": "corresponding map unit flowchart ID",
4599
4576
  "type": "string"
@@ -4634,8 +4611,7 @@
4634
4611
  "name",
4635
4612
  "postProcessors",
4636
4613
  "preProcessors",
4637
- "results",
4638
- "type"
4614
+ "results"
4639
4615
  ],
4640
4616
  "properties": {
4641
4617
  "_id": {
@@ -4750,17 +4726,6 @@
4750
4726
  "type": "string"
4751
4727
  }
4752
4728
  },
4753
- "status": {
4754
- "type": "string",
4755
- "description": "Status of the unit.",
4756
- "enum": [
4757
- "idle",
4758
- "active",
4759
- "warning",
4760
- "error",
4761
- "finished"
4762
- ]
4763
- },
4764
4729
  "statusTrack": {
4765
4730
  "type": "array",
4766
4731
  "items": {
@@ -4785,11 +4750,6 @@
4785
4750
  "isDraft": {
4786
4751
  "type": "boolean"
4787
4752
  },
4788
- "type": {
4789
- "description": "type of the unit",
4790
- "type": "string",
4791
- "const": "subworkflow"
4792
- },
4793
4753
  "head": {
4794
4754
  "description": "Whether this unit is the first one to be executed.",
4795
4755
  "type": "boolean"
@@ -4805,6 +4765,20 @@
4805
4765
  "enableRender": {
4806
4766
  "description": "Whether Rupy should attempt to use Jinja templating to add context variables into the unit",
4807
4767
  "type": "boolean"
4768
+ },
4769
+ "status": {
4770
+ "description": "Status of the unit.",
4771
+ "type": "string",
4772
+ "enum": [
4773
+ "idle",
4774
+ "active",
4775
+ "warning",
4776
+ "error",
4777
+ "finished"
4778
+ ]
4779
+ },
4780
+ "type": {
4781
+ "const": "subworkflow"
4808
4782
  }
4809
4783
  }
4810
4784
  },
@@ -4819,8 +4793,7 @@
4819
4793
  "postProcessors",
4820
4794
  "preProcessors",
4821
4795
  "reason",
4822
- "results",
4823
- "type"
4796
+ "results"
4824
4797
  ],
4825
4798
  "properties": {
4826
4799
  "_id": {
@@ -4935,17 +4908,6 @@
4935
4908
  "type": "string"
4936
4909
  }
4937
4910
  },
4938
- "status": {
4939
- "type": "string",
4940
- "description": "Status of the unit.",
4941
- "enum": [
4942
- "idle",
4943
- "active",
4944
- "warning",
4945
- "error",
4946
- "finished"
4947
- ]
4948
- },
4949
4911
  "statusTrack": {
4950
4912
  "type": "array",
4951
4913
  "items": {
@@ -4970,11 +4932,6 @@
4970
4932
  "isDraft": {
4971
4933
  "type": "boolean"
4972
4934
  },
4973
- "type": {
4974
- "description": "type of the unit",
4975
- "type": "string",
4976
- "const": "error"
4977
- },
4978
4935
  "head": {
4979
4936
  "description": "Whether this unit is the first one to be executed.",
4980
4937
  "type": "boolean"
@@ -4991,6 +4948,20 @@
4991
4948
  "description": "Whether Rupy should attempt to use Jinja templating to add context variables into the unit",
4992
4949
  "type": "boolean"
4993
4950
  },
4951
+ "status": {
4952
+ "description": "Status of the unit.",
4953
+ "type": "string",
4954
+ "enum": [
4955
+ "idle",
4956
+ "active",
4957
+ "warning",
4958
+ "error",
4959
+ "finished"
4960
+ ]
4961
+ },
4962
+ "type": {
4963
+ "const": "error"
4964
+ },
4994
4965
  "reason": {
4995
4966
  "type": "string",
4996
4967
  "description": "JSON string with validation/hydration details: { error, json, schema }"