@jetta/cargo-stabilizer 0.1.0-8 → 0.1.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 (149) hide show
  1. package/README.md +17 -11
  2. package/build/core/adapters/axle_adapter.d.ts +1 -0
  3. package/build/core/adapters/axle_adapter.d.ts.map +1 -1
  4. package/build/core/adapters/axle_adapter.js +3 -18
  5. package/build/core/adapters/axle_load_evaluation.d.ts +8 -0
  6. package/build/core/adapters/axle_load_evaluation.d.ts.map +1 -0
  7. package/build/core/adapters/axle_load_evaluation.js +1 -0
  8. package/build/core/adapters/build_axle_request.d.ts +2 -9
  9. package/build/core/adapters/build_axle_request.d.ts.map +1 -1
  10. package/build/core/adapters/build_axle_request.js +52 -24
  11. package/build/core/adapters/compute_axle_excess_kg.d.ts +8 -0
  12. package/build/core/adapters/compute_axle_excess_kg.d.ts.map +1 -0
  13. package/build/core/adapters/compute_axle_excess_kg.js +19 -0
  14. package/build/core/adapters/coordinate_mapper.d.ts +1 -1
  15. package/build/core/adapters/coordinate_mapper.js +3 -3
  16. package/build/core/adapters/evaluate_axle_load.d.ts +10 -0
  17. package/build/core/adapters/evaluate_axle_load.d.ts.map +1 -0
  18. package/build/core/adapters/evaluate_axle_load.js +32 -0
  19. package/build/core/adapters/map_item_to_stacking_item.d.ts +14 -0
  20. package/build/core/adapters/map_item_to_stacking_item.d.ts.map +1 -0
  21. package/build/core/adapters/map_item_to_stacking_item.js +40 -0
  22. package/build/core/adapters/run_axle_calculator.d.ts.map +1 -1
  23. package/build/core/adapters/run_axle_calculator.js +21 -16
  24. package/build/core/candidates/candidate_validation.d.ts.map +1 -1
  25. package/build/core/candidates/candidate_validation.js +8 -0
  26. package/build/core/candidates/is_candidate_stacking_valid.d.ts +14 -0
  27. package/build/core/candidates/is_candidate_stacking_valid.d.ts.map +1 -0
  28. package/build/core/candidates/is_candidate_stacking_valid.js +43 -0
  29. package/build/core/candidates/is_elevated_on_supporter_origin.d.ts +14 -0
  30. package/build/core/candidates/is_elevated_on_supporter_origin.d.ts.map +1 -0
  31. package/build/core/candidates/is_elevated_on_supporter_origin.js +28 -0
  32. package/build/core/constants/TieRatioOrientation.d.ts +6 -0
  33. package/build/core/constants/TieRatioOrientation.d.ts.map +1 -0
  34. package/build/core/constants/TieRatioOrientation.js +5 -0
  35. package/build/core/evaluation/compare_search_states.d.ts +12 -0
  36. package/build/core/evaluation/compare_search_states.d.ts.map +1 -0
  37. package/build/core/evaluation/compare_search_states.js +12 -0
  38. package/build/core/evaluation/evaluate_search_gates.d.ts +18 -0
  39. package/build/core/evaluation/evaluate_search_gates.d.ts.map +1 -0
  40. package/build/core/evaluation/evaluate_search_gates.js +30 -0
  41. package/build/core/evaluation/evaluation_result.d.ts +15 -0
  42. package/build/core/evaluation/evaluation_result.d.ts.map +1 -0
  43. package/build/core/evaluation/evaluation_result.js +1 -0
  44. package/build/core/evaluation/genetic_fitness.d.ts +9 -0
  45. package/build/core/evaluation/genetic_fitness.d.ts.map +1 -0
  46. package/build/core/evaluation/genetic_fitness.js +16 -0
  47. package/build/core/evaluation/is_non_axle_gates_pass.d.ts +8 -0
  48. package/build/core/evaluation/is_non_axle_gates_pass.d.ts.map +1 -0
  49. package/build/core/evaluation/is_non_axle_gates_pass.js +8 -0
  50. package/build/core/evaluation/is_search_trial_admissible.d.ts +10 -0
  51. package/build/core/evaluation/is_search_trial_admissible.d.ts.map +1 -0
  52. package/build/core/evaluation/is_search_trial_admissible.js +17 -0
  53. package/build/core/evaluation/is_waypoint_order_valid.d.ts +10 -0
  54. package/build/core/evaluation/is_waypoint_order_valid.d.ts.map +1 -0
  55. package/build/core/evaluation/is_waypoint_order_valid.js +14 -0
  56. package/build/core/evaluation/state_evaluator.d.ts +2 -10
  57. package/build/core/evaluation/state_evaluator.d.ts.map +1 -1
  58. package/build/core/evaluation/state_evaluator.js +6 -26
  59. package/build/core/factory/read_stabilizer_config.d.ts +3 -2
  60. package/build/core/factory/read_stabilizer_config.d.ts.map +1 -1
  61. package/build/core/factory/read_stabilizer_config_helpers.d.ts +9 -5
  62. package/build/core/factory/read_stabilizer_config_helpers.d.ts.map +1 -1
  63. package/build/core/factory/read_stabilizer_config_helpers.js +12 -1
  64. package/build/core/filters/collect_movable_items.d.ts +18 -0
  65. package/build/core/filters/collect_movable_items.d.ts.map +1 -0
  66. package/build/core/filters/collect_movable_items.js +53 -0
  67. package/build/core/filters/collect_pinned_floor_tie_ratio_group_ids.d.ts +8 -0
  68. package/build/core/filters/collect_pinned_floor_tie_ratio_group_ids.d.ts.map +1 -0
  69. package/build/core/filters/collect_pinned_floor_tie_ratio_group_ids.js +41 -0
  70. package/build/core/filters/is_item_on_cm_floor.d.ts +8 -0
  71. package/build/core/filters/is_item_on_cm_floor.d.ts.map +1 -0
  72. package/build/core/filters/is_item_on_cm_floor.js +9 -0
  73. package/build/core/geometry/has_penetrating_overlap.d.ts +9 -0
  74. package/build/core/geometry/has_penetrating_overlap.d.ts.map +1 -0
  75. package/build/core/geometry/has_penetrating_overlap.js +27 -0
  76. package/build/core/orchestration/StabilizerFlow.d.ts.map +1 -1
  77. package/build/core/orchestration/StabilizerFlow.js +1 -1
  78. package/build/core/orchestration/build_reorder_context.d.ts.map +1 -1
  79. package/build/core/orchestration/build_reorder_context.js +3 -5
  80. package/build/core/strategies/reorder/BeamSearchReorder.d.ts.map +1 -1
  81. package/build/core/strategies/reorder/BeamSearchReorder.js +10 -12
  82. package/build/core/strategies/reorder/GeneticReorder.d.ts.map +1 -1
  83. package/build/core/strategies/reorder/GeneticReorder.js +2 -1
  84. package/build/core/strategies/reorder/SimulatedAnnealingReorder.d.ts.map +1 -1
  85. package/build/core/strategies/reorder/SimulatedAnnealingReorder.js +14 -5
  86. package/build/core/strategies/reorder/append_admitted_trial.d.ts +11 -0
  87. package/build/core/strategies/reorder/append_admitted_trial.d.ts.map +1 -0
  88. package/build/core/strategies/reorder/append_admitted_trial.js +22 -0
  89. package/build/core/strategies/reorder/beam_context.d.ts +1 -0
  90. package/build/core/strategies/reorder/beam_context.d.ts.map +1 -1
  91. package/build/core/strategies/reorder/greedy_improvement.d.ts.map +1 -1
  92. package/build/core/strategies/reorder/greedy_improvement.js +3 -2
  93. package/build/core/strategies/reorder/is_improving_greedy_trial.d.ts +10 -0
  94. package/build/core/strategies/reorder/is_improving_greedy_trial.d.ts.map +1 -0
  95. package/build/core/strategies/reorder/is_improving_greedy_trial.js +17 -0
  96. package/build/core/strategies/reorder/select_surviving_beam.d.ts +11 -0
  97. package/build/core/strategies/reorder/select_surviving_beam.d.ts.map +1 -0
  98. package/build/core/strategies/reorder/select_surviving_beam.js +13 -0
  99. package/build/core/validation/contract/cargo_movement_wire_field_map.d.ts +37 -3
  100. package/build/core/validation/contract/cargo_movement_wire_field_map.d.ts.map +1 -1
  101. package/build/core/validation/contract/cargo_movement_wire_field_map.js +40 -6
  102. package/build/core/validation/contract/cargo_movement_wire_mapper.d.ts.map +1 -1
  103. package/build/core/validation/contract/cargo_movement_wire_mapper.js +10 -1
  104. package/build/core/validation/contract/map_contract_to_wire_shape.d.ts.map +1 -1
  105. package/build/core/validation/contract/map_contract_to_wire_shape.js +12 -21
  106. package/build/core/validation/contract/map_input_config.d.ts +9 -0
  107. package/build/core/validation/contract/map_input_config.d.ts.map +1 -0
  108. package/build/core/validation/contract/map_input_config.js +40 -0
  109. package/build/core/validation/contract/map_wire_input_to_contract_shape.d.ts.map +1 -1
  110. package/build/core/validation/contract/map_wire_input_to_contract_shape.js +28 -22
  111. package/build/core/validation/contract/map_wire_item_stacking.d.ts +7 -0
  112. package/build/core/validation/contract/map_wire_item_stacking.d.ts.map +1 -0
  113. package/build/core/validation/contract/map_wire_item_stacking.js +40 -0
  114. package/build/core/validation/contract/map_wire_item_to_contract.d.ts +1 -5
  115. package/build/core/validation/contract/map_wire_item_to_contract.d.ts.map +1 -1
  116. package/build/core/validation/contract/map_wire_item_to_contract.js +16 -14
  117. package/build/core/validation/contract/parse_stabilizer_input.d.ts +49 -7
  118. package/build/core/validation/contract/parse_stabilizer_input.d.ts.map +1 -1
  119. package/build/core/validation/contract/parse_stabilizer_input.js +2 -0
  120. package/build/core/validation/contract/parse_stabilizer_output.d.ts +34 -5
  121. package/build/core/validation/contract/parse_stabilizer_output.d.ts.map +1 -1
  122. package/build/core/validation/contract/reject_forbidden_input_fields.d.ts +6 -0
  123. package/build/core/validation/contract/reject_forbidden_input_fields.d.ts.map +1 -0
  124. package/build/core/validation/contract/reject_forbidden_input_fields.js +53 -0
  125. package/build/core/validation/contract/stabilizer_domain_schema.d.ts +36 -65
  126. package/build/core/validation/contract/stabilizer_domain_schema.d.ts.map +1 -1
  127. package/build/core/validation/contract/stabilizer_domain_schema.js +16 -38
  128. package/build/core/validation/contract/stabilizer_env_schema.d.ts +112 -0
  129. package/build/core/validation/contract/stabilizer_env_schema.d.ts.map +1 -0
  130. package/build/core/validation/contract/stabilizer_env_schema.js +38 -0
  131. package/build/core/validation/contract/stabilizer_input_schema.d.ts +51 -7
  132. package/build/core/validation/contract/stabilizer_input_schema.d.ts.map +1 -1
  133. package/build/core/validation/contract/stabilizer_input_schema.js +2 -2
  134. package/build/core/validation/contract/stabilizer_item_schema.d.ts +25 -0
  135. package/build/core/validation/contract/stabilizer_item_schema.d.ts.map +1 -0
  136. package/build/core/validation/contract/stabilizer_item_schema.js +23 -0
  137. package/build/core/validation/contract/stabilizer_output_schema.d.ts +68 -10
  138. package/build/core/validation/contract/stabilizer_output_schema.d.ts.map +1 -1
  139. package/build/core/validation/contract/uniquify_contract_item_ids.d.ts +14 -0
  140. package/build/core/validation/contract/uniquify_contract_item_ids.d.ts.map +1 -0
  141. package/build/core/validation/contract/uniquify_contract_item_ids.js +54 -0
  142. package/build/core/validation/schemas/stabilizer_config_schema.d.ts +2 -1
  143. package/build/core/validation/schemas/stabilizer_config_schema.d.ts.map +1 -1
  144. package/build/core/validation/schemas/stabilizer_config_schema.js +2 -1
  145. package/build/index.d.ts +11 -12
  146. package/build/index.d.ts.map +1 -1
  147. package/build/index.js +29 -21
  148. package/package.json +28 -13
  149. package/CHANGELOG.md +0 -37
@@ -0,0 +1,40 @@
1
+ import { is_record } from './wire_mapper_record_utils.js';
2
+ import { merge_algoritmo_maps, read_raw_stabilizer_config } from '../../factory/read_stabilizer_config_helpers.js';
3
+ const ALGORITMO_PREFIX = 'cargo_stabilizer.';
4
+ /**
5
+ * Maps envelope plus cargo-profile algoritmo maps onto English stabilizer config.
6
+ * English config objects are returned unchanged for strict Zod checking.
7
+ * @param envelope_config - Envelope config from wire or English input.
8
+ * @param wire_cargo_state - Wire cargo state that may hold profile algoritmo.
9
+ * @returns Raw English config, or the original English object.
10
+ */
11
+ export function map_envelope_config(envelope_config, wire_cargo_state) {
12
+ if (envelope_config === undefined && !has_profile_algoritmo(wire_cargo_state)) {
13
+ return undefined;
14
+ }
15
+ if (is_algoritmo_shaped(envelope_config) || has_profile_algoritmo(wire_cargo_state)) {
16
+ return read_raw_stabilizer_config(merge_algoritmo_maps(as_record(envelope_config), { config: read_wire_profile_config(wire_cargo_state) }));
17
+ }
18
+ return envelope_config;
19
+ }
20
+ function is_algoritmo_shaped(config) {
21
+ if (!is_record(config)) {
22
+ return false;
23
+ }
24
+ if (is_record(config.algoritmo)) {
25
+ return true;
26
+ }
27
+ return Object.keys(config).some(key => key.startsWith(ALGORITMO_PREFIX));
28
+ }
29
+ function has_profile_algoritmo(wire_cargo_state) {
30
+ return is_record(read_wire_profile_config(wire_cargo_state)?.algoritmo);
31
+ }
32
+ function read_wire_profile_config(wire_cargo_state) {
33
+ if (!is_record(wire_cargo_state) || !is_record(wire_cargo_state.config)) {
34
+ return undefined;
35
+ }
36
+ return wire_cargo_state.config;
37
+ }
38
+ function as_record(value) {
39
+ return is_record(value) ? value : undefined;
40
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"map_wire_input_to_contract_shape.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/contract/map_wire_input_to_contract_shape.ts"],"names":[],"mappings":"AAUA,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAiBnE"}
1
+ {"version":3,"file":"map_wire_input_to_contract_shape.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/contract/map_wire_input_to_contract_shape.ts"],"names":[],"mappings":"AAkBA,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAYnE"}
@@ -1,16 +1,19 @@
1
- import { CONTAINER_WIRE_TO_CONTRACT, ENV_WIRE_TO_CONTRACT } from './cargo_movement_wire_field_map.js';
1
+ import { AXLE_WIRE_TO_CONTRACT, CONTAINER_WIRE_TO_CONTRACT, ENV_WIRE_TO_CONTRACT, VEHICLE_WIRE_TO_CONTRACT } from './cargo_movement_wire_field_map.js';
2
2
  import { map_wire_item_to_contract } from './map_wire_item_to_contract.js';
3
- import { is_record, omit_keys, pick_keys, rename_keys } from './wire_mapper_record_utils.js';
4
- const CONTAINER_CONTRACT_KEYS = ['sequence', 'width', 'height', 'length'];
5
- const ENV_CONTRACT_KEYS = ['axles'];
3
+ import { uniquify_contract_item_ids } from './uniquify_contract_item_ids.js';
4
+ import { is_record, pick_keys, rename_keys } from './wire_mapper_record_utils.js';
5
+ const CONTAINER_CONTRACT_KEYS = [
6
+ 'sequence', 'width', 'height', 'length', 'kingpin_distance',
7
+ 'container_distance_ahead', 'max_supported_weight', 'tare', 'cargo_weight', 'grouper'
8
+ ];
9
+ const ENV_CONTRACT_KEYS = ['axles', 'vehicle'];
10
+ const VEHICLE_CONTRACT_KEYS = Object.values(VEHICLE_WIRE_TO_CONTRACT);
11
+ const AXLE_CONTRACT_KEYS = Object.values(AXLE_WIRE_TO_CONTRACT);
6
12
  export function map_cargo_state_to_contract(value) {
7
13
  if (!is_record(value)) {
8
14
  return value;
9
15
  }
10
16
  const mapped = {};
11
- if (value.config !== undefined) {
12
- mapped.config = value.config;
13
- }
14
17
  if (Array.isArray(value.envs)) {
15
18
  mapped.envs = value.envs.map(map_env_to_contract);
16
19
  }
@@ -24,6 +27,13 @@ function map_env_to_contract(value) {
24
27
  if (Array.isArray(value.containers)) {
25
28
  mapped.containers = value.containers.map(map_container_to_contract);
26
29
  }
30
+ if (Array.isArray(mapped.axles)) {
31
+ mapped.axles = mapped.axles.map(map_axle_to_contract);
32
+ }
33
+ const vehicle = map_vehicle_to_contract(value);
34
+ if (vehicle !== undefined) {
35
+ mapped.vehicle = vehicle;
36
+ }
27
37
  return pick_env_contract_keys(mapped);
28
38
  }
29
39
  function map_container_to_contract(value) {
@@ -32,29 +42,25 @@ function map_container_to_contract(value) {
32
42
  }
33
43
  const mapped = rename_keys(value, CONTAINER_WIRE_TO_CONTRACT);
34
44
  if (Array.isArray(value.items)) {
35
- mapped.items = value.items.map(map_wire_item_to_contract);
45
+ mapped.items = uniquify_contract_item_ids(value.items.map(map_wire_item_to_contract));
36
46
  }
37
- return pick_container_contract_keys(mapped);
47
+ return pick_keys(mapped, [...CONTAINER_CONTRACT_KEYS, 'items']);
38
48
  }
39
- function pick_container_contract_keys(source) {
40
- const picked = pick_keys(source, CONTAINER_CONTRACT_KEYS);
41
- if (Array.isArray(source.items)) {
42
- picked.items = source.items;
43
- }
44
- const attributes = omit_keys(source, [...CONTAINER_CONTRACT_KEYS, 'items']);
45
- if (Object.keys(attributes).length > 0) {
46
- picked.attributes = attributes;
49
+ function map_axle_to_contract(value) {
50
+ if (!is_record(value)) {
51
+ return value;
47
52
  }
48
- return picked;
53
+ return pick_keys(rename_keys(value, AXLE_WIRE_TO_CONTRACT), AXLE_CONTRACT_KEYS);
54
+ }
55
+ function map_vehicle_to_contract(env) {
56
+ const source = is_record(env.vehicle) ? env.vehicle : env;
57
+ const mapped = pick_keys(rename_keys(source, VEHICLE_WIRE_TO_CONTRACT), VEHICLE_CONTRACT_KEYS);
58
+ return Object.keys(mapped).length > 0 ? mapped : undefined;
49
59
  }
50
60
  function pick_env_contract_keys(source) {
51
61
  const picked = pick_keys(source, ENV_CONTRACT_KEYS);
52
62
  if (Array.isArray(source.containers)) {
53
63
  picked.containers = source.containers;
54
64
  }
55
- const vehicle = omit_keys(source, [...ENV_CONTRACT_KEYS, 'containers']);
56
- if (Object.keys(vehicle).length > 0) {
57
- picked.vehicle = vehicle;
58
- }
59
65
  return picked;
60
66
  }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Lifts nested CM stacking and restriction fields onto the contract item.
3
+ * @param contract - Contract item being filled.
4
+ * @param source - Wire or English item record.
5
+ */
6
+ export declare function assign_stacking_fields(contract: Record<string, unknown>, source: Record<string, unknown>): void;
7
+ //# sourceMappingURL=map_wire_item_stacking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map_wire_item_stacking.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/contract/map_wire_item_stacking.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,sBAAsB,CAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI,CAYN"}
@@ -0,0 +1,40 @@
1
+ import { is_record } from './wire_mapper_record_utils.js';
2
+ /**
3
+ * Lifts nested CM stacking and restriction fields onto the contract item.
4
+ * @param contract - Contract item being filled.
5
+ * @param source - Wire or English item record.
6
+ */
7
+ export function assign_stacking_fields(contract, source) {
8
+ assign_nested_stacking(contract, source.stacking);
9
+ assign_restriction_flags(contract, source.restrictions ?? source.restricoes);
10
+ if (typeof source.pesoMaxSuportado === 'number' && contract.supported_weight === undefined) {
11
+ contract.supported_weight = source.pesoMaxSuportado;
12
+ }
13
+ if (typeof source.stackingUnit === 'string' && contract.stacking_unit === undefined) {
14
+ contract.stacking_unit = source.stackingUnit;
15
+ }
16
+ }
17
+ function assign_nested_stacking(contract, stacking) {
18
+ if (!is_record(stacking)) {
19
+ return;
20
+ }
21
+ if (typeof stacking.family === 'string' && contract.family === undefined) {
22
+ contract.family = stacking.family;
23
+ }
24
+ if (Array.isArray(stacking.supported_families) && contract.supported_families === undefined) {
25
+ contract.supported_families = stacking.supported_families;
26
+ }
27
+ }
28
+ function assign_restriction_flags(contract, restrictions) {
29
+ if (!is_record(restrictions)) {
30
+ return;
31
+ }
32
+ assign_boolean_if_absent(contract, 'stack_families', restrictions.empilharFamilias);
33
+ assign_boolean_if_absent(contract, 'stack_same_item', restrictions.empilharItemIgual);
34
+ assign_boolean_if_absent(contract, 'stack_same_area', restrictions.empilharAreaIgual);
35
+ }
36
+ function assign_boolean_if_absent(contract, key, value) {
37
+ if (typeof value === 'boolean' && contract[key] === undefined) {
38
+ contract[key] = value;
39
+ }
40
+ }
@@ -1,10 +1,6 @@
1
1
  /**
2
2
  * Maps a cargo-movement wire item to the stabilizer contract shape.
3
- *
4
- * Contract fields are read from the wire rather than renamed, because a CM item
5
- * can carry both spellings of the same field (`_id` and `item_id`) and renaming
6
- * makes one silently overwrite the other. The whole original record is kept in
7
- * `attributes` so every allocation field survives the round-trip.
3
+ * Only modelled fields are copied; leftover SKU keys are dropped.
8
4
  * @param value - Raw wire item.
9
5
  * @returns Contract item, or the input unchanged when it is not a record.
10
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"map_wire_item_to_contract.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/contract/map_wire_item_to_contract.ts"],"names":[],"mappings":"AAMA;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAcjE"}
1
+ {"version":3,"file":"map_wire_item_to_contract.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/contract/map_wire_item_to_contract.ts"],"names":[],"mappings":"AAOA;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAUjE"}
@@ -1,12 +1,9 @@
1
1
  import { ITEM_CONTRACT_WIRE_KEYS, ITEM_POSITION_KEYS } from './cargo_movement_wire_field_map.js';
2
+ import { assign_stacking_fields } from './map_wire_item_stacking.js';
2
3
  import { is_record, omit_keys, read_first_present } from './wire_mapper_record_utils.js';
3
4
  /**
4
5
  * Maps a cargo-movement wire item to the stabilizer contract shape.
5
- *
6
- * Contract fields are read from the wire rather than renamed, because a CM item
7
- * can carry both spellings of the same field (`_id` and `item_id`) and renaming
8
- * makes one silently overwrite the other. The whole original record is kept in
9
- * `attributes` so every allocation field survives the round-trip.
6
+ * Only modelled fields are copied; leftover SKU keys are dropped.
10
7
  * @param value - Raw wire item.
11
8
  * @returns Contract item, or the input unchanged when it is not a record.
12
9
  */
@@ -15,18 +12,11 @@ export function map_wire_item_to_contract(value) {
15
12
  return value;
16
13
  }
17
14
  const contract = read_contract_item_fields(value);
18
- const attributes = omit_keys(value, ITEM_POSITION_KEYS);
19
- if (Object.keys(attributes).length > 0) {
20
- contract.attributes = attributes;
21
- }
15
+ assign_stacking_fields(contract, omit_keys(value, ITEM_POSITION_KEYS));
22
16
  return contract;
23
17
  }
24
18
  function read_contract_item_fields(source) {
25
- const contract = {
26
- x: source.x,
27
- y: source.y,
28
- z: source.z
29
- };
19
+ const contract = read_contract_position(source);
30
20
  for (const [contract_key, wire_keys] of Object.entries(ITEM_CONTRACT_WIRE_KEYS)) {
31
21
  const value = read_first_present(source, wire_keys);
32
22
  if (value !== undefined) {
@@ -35,6 +25,18 @@ function read_contract_item_fields(source) {
35
25
  }
36
26
  return contract;
37
27
  }
28
+ /**
29
+ * BWA `to_json` stores length on `y` and height on `z`. Candidate geometry
30
+ * uses the opposite (y = height, z = length), so CM wire items are swapped.
31
+ * @param source - Wire or English item record.
32
+ * @returns Contract x/y/z.
33
+ */
34
+ function read_contract_position(source) {
35
+ if (typeof source.w === 'number') {
36
+ return { x: source.x, y: source.z, z: source.y };
37
+ }
38
+ return { x: source.x, y: source.y, z: source.z };
39
+ }
38
40
  /**
39
41
  * Coerces blocks-wall numeric group ids to the string contract type.
40
42
  * @param contract_key - English contract field name.
@@ -23,20 +23,62 @@ export declare function safe_parse_stabilizer_input(input_data: unknown): import
23
23
  group_id?: string | null | undefined;
24
24
  waypoint_id?: string | undefined;
25
25
  weight?: number | undefined;
26
- attributes?: Record<string, unknown> | undefined;
26
+ tie_ratio_orientation?: string | undefined;
27
+ family?: string | undefined;
28
+ supported_families?: string[] | undefined;
29
+ constraint?: string | undefined;
30
+ stack_families?: boolean | undefined;
31
+ stack_same_item?: boolean | undefined;
32
+ stack_same_area?: boolean | undefined;
33
+ stacking_unit?: string | undefined;
34
+ supported_weight?: number | undefined;
35
+ priority?: number | undefined;
27
36
  }[];
28
37
  sequence?: number | undefined;
29
- attributes?: Record<string, unknown> | undefined;
38
+ kingpin_distance?: number | undefined;
39
+ container_distance_ahead?: number | undefined;
40
+ max_supported_weight?: number | undefined;
41
+ tare?: number | undefined;
42
+ cargo_weight?: number | undefined;
43
+ grouper?: number | undefined;
30
44
  }[];
31
- axles?: Record<string, unknown>[] | undefined;
32
- vehicle?: Record<string, unknown> | undefined;
45
+ axles?: {
46
+ distance_from_origin?: number | undefined;
47
+ max_supported_weight?: number | undefined;
48
+ dnit_weight?: number | undefined;
49
+ tare?: number | undefined;
50
+ container_sequence?: number | undefined;
51
+ sequence?: number | undefined;
52
+ }[] | undefined;
53
+ vehicle?: {
54
+ vehicle_id?: string | number | undefined;
55
+ vehicle_type?: number | undefined;
56
+ version_type?: number | undefined;
57
+ suspension_type?: string | undefined;
58
+ first_axle?: number | undefined;
59
+ tare?: number | undefined;
60
+ max_supported_weight?: number | undefined;
61
+ quantity?: number | undefined;
62
+ } | undefined;
33
63
  }[];
34
- config?: Record<string, unknown> | undefined;
35
64
  };
36
65
  id?: string | number | undefined;
37
66
  company?: string | number | undefined;
38
- original_input?: unknown;
39
- config?: Record<string, unknown> | undefined;
67
+ config?: {
68
+ reorder_strategy: string;
69
+ transport_stability_floor: number;
70
+ max_iteration: number;
71
+ genetic_population: number;
72
+ genetic_generations: number;
73
+ genetic_mutation_rate: number;
74
+ beam_width: number;
75
+ beam_top_k: number;
76
+ axle_load_margin_percent: number;
77
+ preserve_tie_block_organization: boolean;
78
+ pin_tie_ratio_blocks: boolean;
79
+ enforce_milkrun_wall_reservation: boolean;
80
+ number_of_wall_to_allocate_from_last_waypoints: number;
81
+ } | undefined;
40
82
  }>;
41
83
  /**
42
84
  * Parses stabilizer input at the public boundary.
@@ -1 +1 @@
1
- {"version":3,"file":"parse_stabilizer_input.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/contract/parse_stabilizer_input.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAA2B,KAAK,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAE5F;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAI9D;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,OAAO,GAAG,eAAe,CAS3E;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAA"}
1
+ {"version":3,"file":"parse_stabilizer_input.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/contract/parse_stabilizer_input.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD,OAAO,EAA2B,KAAK,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAE5F;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAI9D;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,OAAO,GAAG,eAAe,CAU3E;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAA"}
@@ -1,6 +1,7 @@
1
1
  import { InvalidStabilizerInputError } from '../../exceptions/InvalidStabilizerInputError.js';
2
2
  import { map_wire_input_to_contract } from './cargo_movement_wire_mapper.js';
3
3
  import { format_zod_error } from './format_zod_error.js';
4
+ import { reject_forbidden_input_fields } from './reject_forbidden_input_fields.js';
4
5
  import { stabilizer_input_schema } from './stabilizer_input_schema.js';
5
6
  /**
6
7
  * Safely parses stabilizer input after wire mapping.
@@ -17,6 +18,7 @@ export function safe_parse_stabilizer_input(input_data) {
17
18
  * @returns Validated stabilizer input in English contract shape.
18
19
  */
19
20
  export function parse_stabilizer_input(input_data) {
21
+ reject_forbidden_input_fields(input_data);
20
22
  const result = safe_parse_stabilizer_input(input_data);
21
23
  if (!result.success) {
22
24
  throw new InvalidStabilizerInputError(format_zod_error(result.error));
@@ -24,15 +24,44 @@ export declare function safe_parse_stabilizer_output(output_data: unknown): impo
24
24
  group_id?: string | null | undefined;
25
25
  waypoint_id?: string | undefined;
26
26
  weight?: number | undefined;
27
- attributes?: Record<string, unknown> | undefined;
27
+ tie_ratio_orientation?: string | undefined;
28
+ family?: string | undefined;
29
+ supported_families?: string[] | undefined;
30
+ constraint?: string | undefined;
31
+ stack_families?: boolean | undefined;
32
+ stack_same_item?: boolean | undefined;
33
+ stack_same_area?: boolean | undefined;
34
+ stacking_unit?: string | undefined;
35
+ supported_weight?: number | undefined;
36
+ priority?: number | undefined;
28
37
  }[];
29
38
  sequence?: number | undefined;
30
- attributes?: Record<string, unknown> | undefined;
39
+ kingpin_distance?: number | undefined;
40
+ container_distance_ahead?: number | undefined;
41
+ max_supported_weight?: number | undefined;
42
+ tare?: number | undefined;
43
+ cargo_weight?: number | undefined;
44
+ grouper?: number | undefined;
31
45
  }[];
32
- axles?: Record<string, unknown>[] | undefined;
33
- vehicle?: Record<string, unknown> | undefined;
46
+ axles?: {
47
+ distance_from_origin?: number | undefined;
48
+ max_supported_weight?: number | undefined;
49
+ dnit_weight?: number | undefined;
50
+ tare?: number | undefined;
51
+ container_sequence?: number | undefined;
52
+ sequence?: number | undefined;
53
+ }[] | undefined;
54
+ vehicle?: {
55
+ vehicle_id?: string | number | undefined;
56
+ vehicle_type?: number | undefined;
57
+ version_type?: number | undefined;
58
+ suspension_type?: string | undefined;
59
+ first_axle?: number | undefined;
60
+ tare?: number | undefined;
61
+ max_supported_weight?: number | undefined;
62
+ quantity?: number | undefined;
63
+ } | undefined;
34
64
  }[];
35
- config?: Record<string, unknown> | undefined;
36
65
  };
37
66
  messages: string[];
38
67
  } | {
@@ -1 +1 @@
1
- {"version":3,"file":"parse_stabilizer_output.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/contract/parse_stabilizer_output.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAEH,KAAK,kBAAkB,EAC1B,MAAM,+BAA+B,CAAA;AAEtC;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,WAAW,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAGhE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,OAAO,GAAG,kBAAkB,CAShF;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAA"}
1
+ {"version":3,"file":"parse_stabilizer_output.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/contract/parse_stabilizer_output.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAEH,KAAK,kBAAkB,EAC1B,MAAM,+BAA+B,CAAA;AAEtC;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,WAAW,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAGhE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,OAAO,GAAG,kBAAkB,CAShF;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAA"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Rejects dropped contract bags (`original_input`, item `attributes`) before mapping.
3
+ * @param input_data - Raw stabilizer input.
4
+ */
5
+ export declare function reject_forbidden_input_fields(input_data: unknown): void;
6
+ //# sourceMappingURL=reject_forbidden_input_fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reject_forbidden_input_fields.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/contract/reject_forbidden_input_fields.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI,CAWvE"}
@@ -0,0 +1,53 @@
1
+ import { InvalidStabilizerInputError } from '../../exceptions/InvalidStabilizerInputError.js';
2
+ /**
3
+ * Rejects dropped contract bags (`original_input`, item `attributes`) before mapping.
4
+ * @param input_data - Raw stabilizer input.
5
+ */
6
+ export function reject_forbidden_input_fields(input_data) {
7
+ if (typeof input_data !== 'object' || input_data === null) {
8
+ return;
9
+ }
10
+ if ('original_input' in input_data) {
11
+ throw new InvalidStabilizerInputError('original_input is not part of the stabilizer contract');
12
+ }
13
+ reject_item_attributes(input_data);
14
+ }
15
+ function reject_item_attributes(input_data) {
16
+ const cargo_state = input_data.cargo_state;
17
+ if (typeof cargo_state !== 'object' || cargo_state === null) {
18
+ return;
19
+ }
20
+ const envs = cargo_state.envs;
21
+ if (!Array.isArray(envs)) {
22
+ return;
23
+ }
24
+ for (const env of envs) {
25
+ reject_env_item_attributes(env);
26
+ }
27
+ }
28
+ function reject_env_item_attributes(env) {
29
+ if (typeof env !== 'object' || env === null) {
30
+ return;
31
+ }
32
+ const containers = env.containers;
33
+ if (!Array.isArray(containers)) {
34
+ return;
35
+ }
36
+ for (const container of containers) {
37
+ reject_container_item_attributes(container);
38
+ }
39
+ }
40
+ function reject_container_item_attributes(container) {
41
+ if (typeof container !== 'object' || container === null) {
42
+ return;
43
+ }
44
+ const items = container.items;
45
+ if (!Array.isArray(items)) {
46
+ return;
47
+ }
48
+ for (const item of items) {
49
+ if (typeof item === 'object' && item !== null && 'attributes' in item) {
50
+ throw new InvalidStabilizerInputError('item attributes is not part of the stabilizer contract');
51
+ }
52
+ }
53
+ }
@@ -1,61 +1,6 @@
1
1
  import { z } from 'zod';
2
- export declare const stabilizer_item_schema: z.ZodObject<{
3
- item_id: z.ZodString;
4
- group_id: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
5
- waypoint_id: z.ZodOptional<z.ZodString>;
6
- x: z.ZodNumber;
7
- y: z.ZodNumber;
8
- z: z.ZodNumber;
9
- width: z.ZodNumber;
10
- height: z.ZodNumber;
11
- depth: z.ZodNumber;
12
- weight: z.ZodOptional<z.ZodNumber>;
13
- attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
14
- }, z.core.$strict>;
15
- export declare const stabilizer_container_schema: z.ZodObject<{
16
- sequence: z.ZodOptional<z.ZodNumber>;
17
- width: z.ZodNumber;
18
- height: z.ZodNumber;
19
- length: z.ZodNumber;
20
- items: z.ZodArray<z.ZodObject<{
21
- item_id: z.ZodString;
22
- group_id: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
23
- waypoint_id: z.ZodOptional<z.ZodString>;
24
- x: z.ZodNumber;
25
- y: z.ZodNumber;
26
- z: z.ZodNumber;
27
- width: z.ZodNumber;
28
- height: z.ZodNumber;
29
- depth: z.ZodNumber;
30
- weight: z.ZodOptional<z.ZodNumber>;
31
- attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
32
- }, z.core.$strict>>;
33
- attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
34
- }, z.core.$strict>;
35
- export declare const stabilizer_env_schema: z.ZodObject<{
36
- containers: z.ZodArray<z.ZodObject<{
37
- sequence: z.ZodOptional<z.ZodNumber>;
38
- width: z.ZodNumber;
39
- height: z.ZodNumber;
40
- length: z.ZodNumber;
41
- items: z.ZodArray<z.ZodObject<{
42
- item_id: z.ZodString;
43
- group_id: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
44
- waypoint_id: z.ZodOptional<z.ZodString>;
45
- x: z.ZodNumber;
46
- y: z.ZodNumber;
47
- z: z.ZodNumber;
48
- width: z.ZodNumber;
49
- height: z.ZodNumber;
50
- depth: z.ZodNumber;
51
- weight: z.ZodOptional<z.ZodNumber>;
52
- attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
53
- }, z.core.$strict>>;
54
- attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
55
- }, z.core.$strict>>;
56
- axles: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
57
- vehicle: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
58
- }, z.core.$strict>;
2
+ export { stabilizer_item_schema, type StabilizerItem } from './stabilizer_item_schema.js';
3
+ export { stabilizer_axle_schema, stabilizer_vehicle_schema, stabilizer_container_schema, stabilizer_env_schema, type StabilizerAxle, type StabilizerVehicle, type StabilizerContainer, type StabilizerEnv } from './stabilizer_env_schema.js';
59
4
  export declare const stabilizer_cargo_state_schema: z.ZodObject<{
60
5
  envs: z.ZodArray<z.ZodObject<{
61
6
  containers: z.ZodArray<z.ZodObject<{
@@ -74,18 +19,44 @@ export declare const stabilizer_cargo_state_schema: z.ZodObject<{
74
19
  height: z.ZodNumber;
75
20
  depth: z.ZodNumber;
76
21
  weight: z.ZodOptional<z.ZodNumber>;
77
- attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
22
+ tie_ratio_orientation: z.ZodOptional<z.ZodString>;
23
+ family: z.ZodOptional<z.ZodString>;
24
+ supported_families: z.ZodOptional<z.ZodArray<z.ZodString>>;
25
+ constraint: z.ZodOptional<z.ZodString>;
26
+ stack_families: z.ZodOptional<z.ZodBoolean>;
27
+ stack_same_item: z.ZodOptional<z.ZodBoolean>;
28
+ stack_same_area: z.ZodOptional<z.ZodBoolean>;
29
+ stacking_unit: z.ZodOptional<z.ZodString>;
30
+ supported_weight: z.ZodOptional<z.ZodNumber>;
31
+ priority: z.ZodOptional<z.ZodNumber>;
78
32
  }, z.core.$strict>>;
79
- attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
33
+ kingpin_distance: z.ZodOptional<z.ZodNumber>;
34
+ container_distance_ahead: z.ZodOptional<z.ZodNumber>;
35
+ max_supported_weight: z.ZodOptional<z.ZodNumber>;
36
+ tare: z.ZodOptional<z.ZodNumber>;
37
+ cargo_weight: z.ZodOptional<z.ZodNumber>;
38
+ grouper: z.ZodOptional<z.ZodNumber>;
39
+ }, z.core.$strict>>;
40
+ axles: z.ZodOptional<z.ZodArray<z.ZodObject<{
41
+ distance_from_origin: z.ZodOptional<z.ZodNumber>;
42
+ max_supported_weight: z.ZodOptional<z.ZodNumber>;
43
+ dnit_weight: z.ZodOptional<z.ZodNumber>;
44
+ tare: z.ZodOptional<z.ZodNumber>;
45
+ container_sequence: z.ZodOptional<z.ZodNumber>;
46
+ sequence: z.ZodOptional<z.ZodNumber>;
47
+ }, z.core.$strict>>>;
48
+ vehicle: z.ZodOptional<z.ZodObject<{
49
+ vehicle_id: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
50
+ vehicle_type: z.ZodOptional<z.ZodNumber>;
51
+ version_type: z.ZodOptional<z.ZodNumber>;
52
+ suspension_type: z.ZodOptional<z.ZodString>;
53
+ first_axle: z.ZodOptional<z.ZodNumber>;
54
+ tare: z.ZodOptional<z.ZodNumber>;
55
+ max_supported_weight: z.ZodOptional<z.ZodNumber>;
56
+ quantity: z.ZodOptional<z.ZodNumber>;
80
57
  }, z.core.$strict>>;
81
- axles: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
82
- vehicle: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
83
58
  }, z.core.$strict>>;
84
- config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
85
59
  }, z.core.$strict>;
86
- export type StabilizerItem = z.infer<typeof stabilizer_item_schema>;
87
- export type StabilizerContainer = z.infer<typeof stabilizer_container_schema>;
88
- export type StabilizerEnv = z.infer<typeof stabilizer_env_schema>;
89
60
  export type StabilizerCargoState = z.infer<typeof stabilizer_cargo_state_schema>;
90
61
  /**
91
62
  * Validates waypoint consistency across all items in the primary env.
@@ -1 +1 @@
1
- {"version":3,"file":"stabilizer_domain_schema.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/contract/stabilizer_domain_schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;kBAYxB,CAAA;AAEX,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;kBAO7B,CAAA;AAEX,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;kBAIvB,CAAA;AAEX,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;kBAG/B,CAAA;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA;AACnE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAA;AAC7E,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AACjE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAA;AAEhF;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,oBAAoB,GAAG,IAAI,CAKtF;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC1C,WAAW,EAAE,oBAAoB,EACjC,OAAO,EAAE,CAAC,CAAC,aAAa,GACzB,IAAI,CAqBN"}
1
+ {"version":3,"file":"stabilizer_domain_schema.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/contract/stabilizer_domain_schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,OAAO,EACH,sBAAsB,EACtB,KAAK,cAAc,EACtB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EACH,sBAAsB,EACtB,yBAAyB,EACzB,2BAA2B,EAC3B,qBAAqB,EACrB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EACrB,MAAM,4BAA4B,CAAA;AAEnC,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAE/B,CAAA;AAEX,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAA;AAEhF;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,oBAAoB,GAAG,IAAI,CAKtF;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC1C,WAAW,EAAE,oBAAoB,EACjC,OAAO,EAAE,CAAC,CAAC,aAAa,GACzB,IAAI,CAUN"}