@jetta/cargo-stabilizer 0.1.0-10

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 (219) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +144 -0
  3. package/build/core/adapters/axle_adapter.d.ts +16 -0
  4. package/build/core/adapters/axle_adapter.d.ts.map +1 -0
  5. package/build/core/adapters/axle_adapter.js +35 -0
  6. package/build/core/adapters/build_axle_request.d.ts +15 -0
  7. package/build/core/adapters/build_axle_request.d.ts.map +1 -0
  8. package/build/core/adapters/build_axle_request.js +39 -0
  9. package/build/core/adapters/coordinate_mapper.d.ts +36 -0
  10. package/build/core/adapters/coordinate_mapper.d.ts.map +1 -0
  11. package/build/core/adapters/coordinate_mapper.js +40 -0
  12. package/build/core/adapters/empty_space_adapter.d.ts +10 -0
  13. package/build/core/adapters/empty_space_adapter.d.ts.map +1 -0
  14. package/build/core/adapters/empty_space_adapter.js +24 -0
  15. package/build/core/adapters/map_item_to_positioned_cube.d.ts +9 -0
  16. package/build/core/adapters/map_item_to_positioned_cube.d.ts.map +1 -0
  17. package/build/core/adapters/map_item_to_positioned_cube.js +16 -0
  18. package/build/core/adapters/run_axle_calculator.d.ts +16 -0
  19. package/build/core/adapters/run_axle_calculator.d.ts.map +1 -0
  20. package/build/core/adapters/run_axle_calculator.js +32 -0
  21. package/build/core/adapters/stability_adapter.d.ts +36 -0
  22. package/build/core/adapters/stability_adapter.d.ts.map +1 -0
  23. package/build/core/adapters/stability_adapter.js +61 -0
  24. package/build/core/candidates/build_candidate_context.d.ts +13 -0
  25. package/build/core/candidates/build_candidate_context.d.ts.map +1 -0
  26. package/build/core/candidates/build_candidate_context.js +17 -0
  27. package/build/core/candidates/candidate_context.d.ts +13 -0
  28. package/build/core/candidates/candidate_context.d.ts.map +1 -0
  29. package/build/core/candidates/candidate_context.js +1 -0
  30. package/build/core/candidates/candidate_generator.d.ts +9 -0
  31. package/build/core/candidates/candidate_generator.d.ts.map +1 -0
  32. package/build/core/candidates/candidate_generator.js +42 -0
  33. package/build/core/candidates/candidate_validation.d.ts +14 -0
  34. package/build/core/candidates/candidate_validation.d.ts.map +1 -0
  35. package/build/core/candidates/candidate_validation.js +72 -0
  36. package/build/core/candidates/collect_container_slots.d.ts +16 -0
  37. package/build/core/candidates/collect_container_slots.d.ts.map +1 -0
  38. package/build/core/candidates/collect_container_slots.js +20 -0
  39. package/build/core/candidates/enumerate_empty_space_slots.d.ts +15 -0
  40. package/build/core/candidates/enumerate_empty_space_slots.d.ts.map +1 -0
  41. package/build/core/candidates/enumerate_empty_space_slots.js +44 -0
  42. package/build/core/candidates/enumerate_supporter_top_slots.d.ts +11 -0
  43. package/build/core/candidates/enumerate_supporter_top_slots.d.ts.map +1 -0
  44. package/build/core/candidates/enumerate_supporter_top_slots.js +36 -0
  45. package/build/core/candidates/is_elevated_on_supporter_origin.d.ts +14 -0
  46. package/build/core/candidates/is_elevated_on_supporter_origin.d.ts.map +1 -0
  47. package/build/core/candidates/is_elevated_on_supporter_origin.js +28 -0
  48. package/build/core/candidates/rank_candidates.d.ts +9 -0
  49. package/build/core/candidates/rank_candidates.d.ts.map +1 -0
  50. package/build/core/candidates/rank_candidates.js +22 -0
  51. package/build/core/constants/ReorderStrategy.d.ts +11 -0
  52. package/build/core/constants/ReorderStrategy.d.ts.map +1 -0
  53. package/build/core/constants/ReorderStrategy.js +9 -0
  54. package/build/core/constants/TieRatioOrientation.d.ts +6 -0
  55. package/build/core/constants/TieRatioOrientation.d.ts.map +1 -0
  56. package/build/core/constants/TieRatioOrientation.js +5 -0
  57. package/build/core/evaluation/compute_reorder_objective.d.ts +13 -0
  58. package/build/core/evaluation/compute_reorder_objective.d.ts.map +1 -0
  59. package/build/core/evaluation/compute_reorder_objective.js +13 -0
  60. package/build/core/evaluation/evaluation_context.d.ts +14 -0
  61. package/build/core/evaluation/evaluation_context.d.ts.map +1 -0
  62. package/build/core/evaluation/evaluation_context.js +1 -0
  63. package/build/core/evaluation/state_evaluator.d.ts +50 -0
  64. package/build/core/evaluation/state_evaluator.d.ts.map +1 -0
  65. package/build/core/evaluation/state_evaluator.js +95 -0
  66. package/build/core/exceptions/AxleCalculationError.d.ts +4 -0
  67. package/build/core/exceptions/AxleCalculationError.d.ts.map +1 -0
  68. package/build/core/exceptions/AxleCalculationError.js +6 -0
  69. package/build/core/exceptions/InvalidStabilizerInputError.d.ts +4 -0
  70. package/build/core/exceptions/InvalidStabilizerInputError.d.ts.map +1 -0
  71. package/build/core/exceptions/InvalidStabilizerInputError.js +6 -0
  72. package/build/core/exceptions/InvalidStabilizerOutputError.d.ts +4 -0
  73. package/build/core/exceptions/InvalidStabilizerOutputError.d.ts.map +1 -0
  74. package/build/core/exceptions/InvalidStabilizerOutputError.js +6 -0
  75. package/build/core/exceptions/MixedWaypointIdError.d.ts +4 -0
  76. package/build/core/exceptions/MixedWaypointIdError.d.ts.map +1 -0
  77. package/build/core/exceptions/MixedWaypointIdError.js +6 -0
  78. package/build/core/exceptions/UnknownReorderStrategyError.d.ts +4 -0
  79. package/build/core/exceptions/UnknownReorderStrategyError.d.ts.map +1 -0
  80. package/build/core/exceptions/UnknownReorderStrategyError.js +6 -0
  81. package/build/core/factory/read_stabilizer_config.d.ts +10 -0
  82. package/build/core/factory/read_stabilizer_config.d.ts.map +1 -0
  83. package/build/core/factory/read_stabilizer_config.js +26 -0
  84. package/build/core/factory/read_stabilizer_config_helpers.d.ts +29 -0
  85. package/build/core/factory/read_stabilizer_config_helpers.d.ts.map +1 -0
  86. package/build/core/factory/read_stabilizer_config_helpers.js +73 -0
  87. package/build/core/factory/strategy_factory.d.ts +9 -0
  88. package/build/core/factory/strategy_factory.d.ts.map +1 -0
  89. package/build/core/factory/strategy_factory.js +29 -0
  90. package/build/core/filters/collect_movable_items.d.ts +18 -0
  91. package/build/core/filters/collect_movable_items.d.ts.map +1 -0
  92. package/build/core/filters/collect_movable_items.js +72 -0
  93. package/build/core/filters/loose_item_filter.d.ts +20 -0
  94. package/build/core/filters/loose_item_filter.d.ts.map +1 -0
  95. package/build/core/filters/loose_item_filter.js +28 -0
  96. package/build/core/geometry/box_geometry.d.ts +48 -0
  97. package/build/core/geometry/box_geometry.d.ts.map +1 -0
  98. package/build/core/geometry/box_geometry.js +98 -0
  99. package/build/core/logging/stabilizer_logger.d.ts +3 -0
  100. package/build/core/logging/stabilizer_logger.d.ts.map +1 -0
  101. package/build/core/logging/stabilizer_logger.js +2 -0
  102. package/build/core/move/apply_move.d.ts +26 -0
  103. package/build/core/move/apply_move.d.ts.map +1 -0
  104. package/build/core/move/apply_move.js +26 -0
  105. package/build/core/orchestration/StabilizerFlow.d.ts +15 -0
  106. package/build/core/orchestration/StabilizerFlow.d.ts.map +1 -0
  107. package/build/core/orchestration/StabilizerFlow.js +29 -0
  108. package/build/core/orchestration/build_milkrun_bands_from_config.d.ts +13 -0
  109. package/build/core/orchestration/build_milkrun_bands_from_config.d.ts.map +1 -0
  110. package/build/core/orchestration/build_milkrun_bands_from_config.js +14 -0
  111. package/build/core/orchestration/build_reorder_context.d.ts +11 -0
  112. package/build/core/orchestration/build_reorder_context.d.ts.map +1 -0
  113. package/build/core/orchestration/build_reorder_context.js +27 -0
  114. package/build/core/orchestration/read_primary_env.d.ts +9 -0
  115. package/build/core/orchestration/read_primary_env.d.ts.map +1 -0
  116. package/build/core/orchestration/read_primary_env.js +13 -0
  117. package/build/core/strategies/reorder/BeamSearchReorder.d.ts +9 -0
  118. package/build/core/strategies/reorder/BeamSearchReorder.d.ts.map +1 -0
  119. package/build/core/strategies/reorder/BeamSearchReorder.js +68 -0
  120. package/build/core/strategies/reorder/GeneticReorder.d.ts +9 -0
  121. package/build/core/strategies/reorder/GeneticReorder.d.ts.map +1 -0
  122. package/build/core/strategies/reorder/GeneticReorder.js +43 -0
  123. package/build/core/strategies/reorder/GravityCompaction.d.ts +9 -0
  124. package/build/core/strategies/reorder/GravityCompaction.d.ts.map +1 -0
  125. package/build/core/strategies/reorder/GravityCompaction.js +48 -0
  126. package/build/core/strategies/reorder/GreedyReorder.d.ts +9 -0
  127. package/build/core/strategies/reorder/GreedyReorder.d.ts.map +1 -0
  128. package/build/core/strategies/reorder/GreedyReorder.js +20 -0
  129. package/build/core/strategies/reorder/ReorderStrategy.d.ts +19 -0
  130. package/build/core/strategies/reorder/ReorderStrategy.d.ts.map +1 -0
  131. package/build/core/strategies/reorder/ReorderStrategy.js +1 -0
  132. package/build/core/strategies/reorder/SimulatedAnnealingReorder.d.ts +9 -0
  133. package/build/core/strategies/reorder/SimulatedAnnealingReorder.d.ts.map +1 -0
  134. package/build/core/strategies/reorder/SimulatedAnnealingReorder.js +61 -0
  135. package/build/core/strategies/reorder/anneal_helpers.d.ts +18 -0
  136. package/build/core/strategies/reorder/anneal_helpers.d.ts.map +1 -0
  137. package/build/core/strategies/reorder/anneal_helpers.js +39 -0
  138. package/build/core/strategies/reorder/apply_if_gates_pass.d.ts +12 -0
  139. package/build/core/strategies/reorder/apply_if_gates_pass.d.ts.map +1 -0
  140. package/build/core/strategies/reorder/apply_if_gates_pass.js +19 -0
  141. package/build/core/strategies/reorder/beam_context.d.ts +16 -0
  142. package/build/core/strategies/reorder/beam_context.d.ts.map +1 -0
  143. package/build/core/strategies/reorder/beam_context.js +1 -0
  144. package/build/core/strategies/reorder/genetic/Chromosome.d.ts +39 -0
  145. package/build/core/strategies/reorder/genetic/Chromosome.d.ts.map +1 -0
  146. package/build/core/strategies/reorder/genetic/Chromosome.js +84 -0
  147. package/build/core/strategies/reorder/greedy_improvement.d.ts +12 -0
  148. package/build/core/strategies/reorder/greedy_improvement.d.ts.map +1 -0
  149. package/build/core/strategies/reorder/greedy_improvement.js +63 -0
  150. package/build/core/strategies/reorder/select_beam_expansion_candidates.d.ts +9 -0
  151. package/build/core/strategies/reorder/select_beam_expansion_candidates.d.ts.map +1 -0
  152. package/build/core/strategies/reorder/select_beam_expansion_candidates.js +28 -0
  153. package/build/core/validation/contract/cargo_movement_wire_field_map.d.ts +37 -0
  154. package/build/core/validation/contract/cargo_movement_wire_field_map.d.ts.map +1 -0
  155. package/build/core/validation/contract/cargo_movement_wire_field_map.js +43 -0
  156. package/build/core/validation/contract/cargo_movement_wire_mapper.d.ts +14 -0
  157. package/build/core/validation/contract/cargo_movement_wire_mapper.d.ts.map +1 -0
  158. package/build/core/validation/contract/cargo_movement_wire_mapper.js +34 -0
  159. package/build/core/validation/contract/format_zod_error.d.ts +8 -0
  160. package/build/core/validation/contract/format_zod_error.d.ts.map +1 -0
  161. package/build/core/validation/contract/format_zod_error.js +11 -0
  162. package/build/core/validation/contract/index.d.ts +9 -0
  163. package/build/core/validation/contract/index.d.ts.map +1 -0
  164. package/build/core/validation/contract/index.js +8 -0
  165. package/build/core/validation/contract/map_contract_to_wire_shape.d.ts +3 -0
  166. package/build/core/validation/contract/map_contract_to_wire_shape.d.ts.map +1 -0
  167. package/build/core/validation/contract/map_contract_to_wire_shape.js +42 -0
  168. package/build/core/validation/contract/map_wire_input_to_contract_shape.d.ts +2 -0
  169. package/build/core/validation/contract/map_wire_input_to_contract_shape.d.ts.map +1 -0
  170. package/build/core/validation/contract/map_wire_input_to_contract_shape.js +60 -0
  171. package/build/core/validation/contract/map_wire_item_to_contract.d.ts +12 -0
  172. package/build/core/validation/contract/map_wire_item_to_contract.d.ts.map +1 -0
  173. package/build/core/validation/contract/map_wire_item_to_contract.js +49 -0
  174. package/build/core/validation/contract/parse_stabilizer_input.d.ts +48 -0
  175. package/build/core/validation/contract/parse_stabilizer_input.d.ts.map +1 -0
  176. package/build/core/validation/contract/parse_stabilizer_input.js +26 -0
  177. package/build/core/validation/contract/parse_stabilizer_output.d.ts +50 -0
  178. package/build/core/validation/contract/parse_stabilizer_output.d.ts.map +1 -0
  179. package/build/core/validation/contract/parse_stabilizer_output.js +24 -0
  180. package/build/core/validation/contract/stabilizer_domain_schema.d.ts +101 -0
  181. package/build/core/validation/contract/stabilizer_domain_schema.d.ts.map +1 -0
  182. package/build/core/validation/contract/stabilizer_domain_schema.js +64 -0
  183. package/build/core/validation/contract/stabilizer_input_schema.d.ts +36 -0
  184. package/build/core/validation/contract/stabilizer_input_schema.d.ts.map +1 -0
  185. package/build/core/validation/contract/stabilizer_input_schema.js +11 -0
  186. package/build/core/validation/contract/stabilizer_output_schema.d.ts +76 -0
  187. package/build/core/validation/contract/stabilizer_output_schema.d.ts.map +1 -0
  188. package/build/core/validation/contract/stabilizer_output_schema.js +16 -0
  189. package/build/core/validation/contract/wire_mapper_record_utils.d.ts +34 -0
  190. package/build/core/validation/contract/wire_mapper_record_utils.d.ts.map +1 -0
  191. package/build/core/validation/contract/wire_mapper_record_utils.js +66 -0
  192. package/build/core/validation/schemas/stabilizer_config_schema.d.ts +20 -0
  193. package/build/core/validation/schemas/stabilizer_config_schema.d.ts.map +1 -0
  194. package/build/core/validation/schemas/stabilizer_config_schema.js +17 -0
  195. package/build/core/waypoint/WaypointMode.d.ts +16 -0
  196. package/build/core/waypoint/WaypointMode.d.ts.map +1 -0
  197. package/build/core/waypoint/WaypointMode.js +1 -0
  198. package/build/core/waypoint/build_waypoint_zones.d.ts +21 -0
  199. package/build/core/waypoint/build_waypoint_zones.d.ts.map +1 -0
  200. package/build/core/waypoint/build_waypoint_zones.js +48 -0
  201. package/build/core/waypoint/milkrun_wall_reservation.d.ts +24 -0
  202. package/build/core/waypoint/milkrun_wall_reservation.d.ts.map +1 -0
  203. package/build/core/waypoint/milkrun_wall_reservation.js +57 -0
  204. package/build/core/waypoint/milkrun_wall_reservation_helpers.d.ts +15 -0
  205. package/build/core/waypoint/milkrun_wall_reservation_helpers.d.ts.map +1 -0
  206. package/build/core/waypoint/milkrun_wall_reservation_helpers.js +48 -0
  207. package/build/core/waypoint/milkrun_wall_reservation_types.d.ts +16 -0
  208. package/build/core/waypoint/milkrun_wall_reservation_types.d.ts.map +1 -0
  209. package/build/core/waypoint/milkrun_wall_reservation_types.js +1 -0
  210. package/build/core/waypoint/preserves_waypoint_order.d.ts +24 -0
  211. package/build/core/waypoint/preserves_waypoint_order.d.ts.map +1 -0
  212. package/build/core/waypoint/preserves_waypoint_order.js +49 -0
  213. package/build/core/waypoint/validate_waypoint_ids.d.ts +16 -0
  214. package/build/core/waypoint/validate_waypoint_ids.d.ts.map +1 -0
  215. package/build/core/waypoint/validate_waypoint_ids.js +30 -0
  216. package/build/index.d.ts +27 -0
  217. package/build/index.d.ts.map +1 -0
  218. package/build/index.js +75 -0
  219. package/package.json +51 -0
@@ -0,0 +1,42 @@
1
+ import { CONTRACT_TO_CONTAINER_WIRE, CONTRACT_TO_ITEM_WIRE } from './cargo_movement_wire_field_map.js';
2
+ import { omit_keys, rename_keys } from './wire_mapper_record_utils.js';
3
+ export function map_cargo_state_to_wire(cargo_state) {
4
+ const wire = {
5
+ envs: cargo_state.envs.map(map_env_to_wire)
6
+ };
7
+ if (cargo_state.config !== undefined) {
8
+ wire.config = cargo_state.config;
9
+ }
10
+ return wire;
11
+ }
12
+ function map_env_to_wire(env) {
13
+ const wire = { ...(env.vehicle ?? {}) };
14
+ wire.containers = env.containers.map(map_container_to_wire);
15
+ if (env.axles !== undefined) {
16
+ wire.eixos = env.axles;
17
+ }
18
+ return wire;
19
+ }
20
+ function map_container_to_wire(container) {
21
+ const modelled = omit_keys(container, ['attributes', 'items']);
22
+ const wire = { ...(container.attributes ?? {}) };
23
+ Object.assign(wire, rename_keys(modelled, CONTRACT_TO_CONTAINER_WIRE));
24
+ wire.items = container.items.map(map_item_to_wire);
25
+ return wire;
26
+ }
27
+ /**
28
+ * Emits a contract item back to the wire.
29
+ *
30
+ * Position is the only field the stabilizer mutates, so an item that came from
31
+ * the cargo-movement wire is emitted as its retained original record with the
32
+ * new position stamped on. Items parsed straight from the English contract have
33
+ * no retained record and fall back to renaming the modelled fields.
34
+ * @param item - Contract item.
35
+ * @returns Wire item.
36
+ */
37
+ function map_item_to_wire(item) {
38
+ if (item.attributes === undefined) {
39
+ return rename_keys(omit_keys(item, ['attributes']), CONTRACT_TO_ITEM_WIRE);
40
+ }
41
+ return { ...item.attributes, x: item.x, y: item.y, z: item.z };
42
+ }
@@ -0,0 +1,2 @@
1
+ export declare function map_cargo_state_to_contract(value: unknown): unknown;
2
+ //# sourceMappingURL=map_wire_input_to_contract_shape.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,60 @@
1
+ import { CONTAINER_WIRE_TO_CONTRACT, ENV_WIRE_TO_CONTRACT } from './cargo_movement_wire_field_map.js';
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'];
6
+ export function map_cargo_state_to_contract(value) {
7
+ if (!is_record(value)) {
8
+ return value;
9
+ }
10
+ const mapped = {};
11
+ if (value.config !== undefined) {
12
+ mapped.config = value.config;
13
+ }
14
+ if (Array.isArray(value.envs)) {
15
+ mapped.envs = value.envs.map(map_env_to_contract);
16
+ }
17
+ return mapped;
18
+ }
19
+ function map_env_to_contract(value) {
20
+ if (!is_record(value)) {
21
+ return value;
22
+ }
23
+ const mapped = rename_keys(value, ENV_WIRE_TO_CONTRACT);
24
+ if (Array.isArray(value.containers)) {
25
+ mapped.containers = value.containers.map(map_container_to_contract);
26
+ }
27
+ return pick_env_contract_keys(mapped);
28
+ }
29
+ function map_container_to_contract(value) {
30
+ if (!is_record(value)) {
31
+ return value;
32
+ }
33
+ const mapped = rename_keys(value, CONTAINER_WIRE_TO_CONTRACT);
34
+ if (Array.isArray(value.items)) {
35
+ mapped.items = value.items.map(map_wire_item_to_contract);
36
+ }
37
+ return pick_container_contract_keys(mapped);
38
+ }
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;
47
+ }
48
+ return picked;
49
+ }
50
+ function pick_env_contract_keys(source) {
51
+ const picked = pick_keys(source, ENV_CONTRACT_KEYS);
52
+ if (Array.isArray(source.containers)) {
53
+ picked.containers = source.containers;
54
+ }
55
+ const vehicle = omit_keys(source, [...ENV_CONTRACT_KEYS, 'containers']);
56
+ if (Object.keys(vehicle).length > 0) {
57
+ picked.vehicle = vehicle;
58
+ }
59
+ return picked;
60
+ }
@@ -0,0 +1,12 @@
1
+ /**
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.
8
+ * @param value - Raw wire item.
9
+ * @returns Contract item, or the input unchanged when it is not a record.
10
+ */
11
+ export declare function map_wire_item_to_contract(value: unknown): unknown;
12
+ //# sourceMappingURL=map_wire_item_to_contract.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,49 @@
1
+ import { ITEM_CONTRACT_WIRE_KEYS, ITEM_POSITION_KEYS } from './cargo_movement_wire_field_map.js';
2
+ import { is_record, omit_keys, read_first_present } from './wire_mapper_record_utils.js';
3
+ /**
4
+ * 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.
10
+ * @param value - Raw wire item.
11
+ * @returns Contract item, or the input unchanged when it is not a record.
12
+ */
13
+ export function map_wire_item_to_contract(value) {
14
+ if (!is_record(value)) {
15
+ return value;
16
+ }
17
+ 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
+ }
22
+ return contract;
23
+ }
24
+ function read_contract_item_fields(source) {
25
+ const contract = {
26
+ x: source.x,
27
+ y: source.y,
28
+ z: source.z
29
+ };
30
+ for (const [contract_key, wire_keys] of Object.entries(ITEM_CONTRACT_WIRE_KEYS)) {
31
+ const value = read_first_present(source, wire_keys);
32
+ if (value !== undefined) {
33
+ contract[contract_key] = normalize_contract_field(contract_key, value);
34
+ }
35
+ }
36
+ return contract;
37
+ }
38
+ /**
39
+ * Coerces blocks-wall numeric group ids to the string contract type.
40
+ * @param contract_key - English contract field name.
41
+ * @param value - Wire value.
42
+ * @returns String group id when a finite number was provided; otherwise the value.
43
+ */
44
+ function normalize_contract_field(contract_key, value) {
45
+ if (contract_key === 'group_id' && typeof value === 'number' && Number.isFinite(value)) {
46
+ return String(value);
47
+ }
48
+ return value;
49
+ }
@@ -0,0 +1,48 @@
1
+ import { format_zod_error } from './format_zod_error.js';
2
+ import { type StabilizerInput } from './stabilizer_input_schema.js';
3
+ /**
4
+ * Safely parses stabilizer input after wire mapping.
5
+ * @param input_data - Unknown wire payload.
6
+ * @returns Zod safe parse result.
7
+ */
8
+ export declare function safe_parse_stabilizer_input(input_data: unknown): import("zod").ZodSafeParseResult<{
9
+ cargo_state: {
10
+ envs: {
11
+ containers: {
12
+ width: number;
13
+ height: number;
14
+ length: number;
15
+ items: {
16
+ item_id: string;
17
+ x: number;
18
+ y: number;
19
+ z: number;
20
+ width: number;
21
+ height: number;
22
+ depth: number;
23
+ group_id?: string | null | undefined;
24
+ waypoint_id?: string | undefined;
25
+ weight?: number | undefined;
26
+ attributes?: Record<string, unknown> | undefined;
27
+ }[];
28
+ sequence?: number | undefined;
29
+ attributes?: Record<string, unknown> | undefined;
30
+ }[];
31
+ axles?: Record<string, unknown>[] | undefined;
32
+ vehicle?: Record<string, unknown> | undefined;
33
+ }[];
34
+ config?: Record<string, unknown> | undefined;
35
+ };
36
+ id?: string | number | undefined;
37
+ company?: string | number | undefined;
38
+ original_input?: unknown;
39
+ config?: Record<string, unknown> | undefined;
40
+ }>;
41
+ /**
42
+ * Parses stabilizer input at the public boundary.
43
+ * @param input_data - Unknown wire payload.
44
+ * @returns Validated stabilizer input in English contract shape.
45
+ */
46
+ export declare function parse_stabilizer_input(input_data: unknown): StabilizerInput;
47
+ export { format_zod_error };
48
+ //# sourceMappingURL=parse_stabilizer_input.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,26 @@
1
+ import { InvalidStabilizerInputError } from '../../exceptions/InvalidStabilizerInputError.js';
2
+ import { map_wire_input_to_contract } from './cargo_movement_wire_mapper.js';
3
+ import { format_zod_error } from './format_zod_error.js';
4
+ import { stabilizer_input_schema } from './stabilizer_input_schema.js';
5
+ /**
6
+ * Safely parses stabilizer input after wire mapping.
7
+ * @param input_data - Unknown wire payload.
8
+ * @returns Zod safe parse result.
9
+ */
10
+ export function safe_parse_stabilizer_input(input_data) {
11
+ const contract_payload = map_wire_input_to_contract(input_data);
12
+ return stabilizer_input_schema.safeParse(contract_payload);
13
+ }
14
+ /**
15
+ * Parses stabilizer input at the public boundary.
16
+ * @param input_data - Unknown wire payload.
17
+ * @returns Validated stabilizer input in English contract shape.
18
+ */
19
+ export function parse_stabilizer_input(input_data) {
20
+ const result = safe_parse_stabilizer_input(input_data);
21
+ if (!result.success) {
22
+ throw new InvalidStabilizerInputError(format_zod_error(result.error));
23
+ }
24
+ return result.data;
25
+ }
26
+ export { format_zod_error };
@@ -0,0 +1,50 @@
1
+ import { format_zod_error } from './format_zod_error.js';
2
+ import { type StabilizerResponse } from './stabilizer_output_schema.js';
3
+ /**
4
+ * Safely parses stabilizer output envelope.
5
+ * @param output_data - Unknown response payload.
6
+ * @returns Zod safe parse result.
7
+ */
8
+ export declare function safe_parse_stabilizer_output(output_data: unknown): import("zod").ZodSafeParseResult<{
9
+ status: "success";
10
+ data: {
11
+ envs: {
12
+ containers: {
13
+ width: number;
14
+ height: number;
15
+ length: number;
16
+ items: {
17
+ item_id: string;
18
+ x: number;
19
+ y: number;
20
+ z: number;
21
+ width: number;
22
+ height: number;
23
+ depth: number;
24
+ group_id?: string | null | undefined;
25
+ waypoint_id?: string | undefined;
26
+ weight?: number | undefined;
27
+ attributes?: Record<string, unknown> | undefined;
28
+ }[];
29
+ sequence?: number | undefined;
30
+ attributes?: Record<string, unknown> | undefined;
31
+ }[];
32
+ axles?: Record<string, unknown>[] | undefined;
33
+ vehicle?: Record<string, unknown> | undefined;
34
+ }[];
35
+ config?: Record<string, unknown> | undefined;
36
+ };
37
+ messages: string[];
38
+ } | {
39
+ status: "error";
40
+ data: string;
41
+ messages: string[];
42
+ }>;
43
+ /**
44
+ * Parses stabilizer output at the public boundary.
45
+ * @param output_data - Unknown response payload.
46
+ * @returns Validated stabilizer response in English contract shape.
47
+ */
48
+ export declare function parse_stabilizer_output(output_data: unknown): StabilizerResponse;
49
+ export { format_zod_error };
50
+ //# sourceMappingURL=parse_stabilizer_output.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,24 @@
1
+ import { InvalidStabilizerOutputError } from '../../exceptions/InvalidStabilizerOutputError.js';
2
+ import { format_zod_error } from './format_zod_error.js';
3
+ import { stabilizer_response_schema } from './stabilizer_output_schema.js';
4
+ /**
5
+ * Safely parses stabilizer output envelope.
6
+ * @param output_data - Unknown response payload.
7
+ * @returns Zod safe parse result.
8
+ */
9
+ export function safe_parse_stabilizer_output(output_data) {
10
+ return stabilizer_response_schema.safeParse(output_data);
11
+ }
12
+ /**
13
+ * Parses stabilizer output at the public boundary.
14
+ * @param output_data - Unknown response payload.
15
+ * @returns Validated stabilizer response in English contract shape.
16
+ */
17
+ export function parse_stabilizer_output(output_data) {
18
+ const result = safe_parse_stabilizer_output(output_data);
19
+ if (!result.success) {
20
+ throw new InvalidStabilizerOutputError(format_zod_error(result.error));
21
+ }
22
+ return result.data;
23
+ }
24
+ export { format_zod_error };
@@ -0,0 +1,101 @@
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>;
59
+ export declare const stabilizer_cargo_state_schema: z.ZodObject<{
60
+ envs: z.ZodArray<z.ZodObject<{
61
+ containers: z.ZodArray<z.ZodObject<{
62
+ sequence: z.ZodOptional<z.ZodNumber>;
63
+ width: z.ZodNumber;
64
+ height: z.ZodNumber;
65
+ length: z.ZodNumber;
66
+ items: z.ZodArray<z.ZodObject<{
67
+ item_id: z.ZodString;
68
+ group_id: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
69
+ waypoint_id: z.ZodOptional<z.ZodString>;
70
+ x: z.ZodNumber;
71
+ y: z.ZodNumber;
72
+ z: z.ZodNumber;
73
+ width: z.ZodNumber;
74
+ height: z.ZodNumber;
75
+ depth: z.ZodNumber;
76
+ weight: z.ZodOptional<z.ZodNumber>;
77
+ attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
78
+ }, z.core.$strict>>;
79
+ attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
80
+ }, 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
+ }, z.core.$strict>>;
84
+ config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
85
+ }, 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
+ export type StabilizerCargoState = z.infer<typeof stabilizer_cargo_state_schema>;
90
+ /**
91
+ * Validates waypoint consistency across all items in the primary env.
92
+ * @param cargo_state - Parsed cargo state.
93
+ */
94
+ export declare function validate_primary_env_waypoints(cargo_state: StabilizerCargoState): void;
95
+ /**
96
+ * Adds waypoint validation issues to a Zod context.
97
+ * @param cargo_state - Cargo state being validated.
98
+ * @param context - Zod refinement context.
99
+ */
100
+ export declare function add_waypoint_validation_issues(cargo_state: StabilizerCargoState, context: z.RefinementCtx): void;
101
+ //# sourceMappingURL=stabilizer_domain_schema.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,64 @@
1
+ import { z } from 'zod';
2
+ import { MixedWaypointIdError } from '../../exceptions/MixedWaypointIdError.js';
3
+ import { validate_waypoint_ids } from '../../waypoint/validate_waypoint_ids.js';
4
+ export const stabilizer_item_schema = z.object({
5
+ item_id: z.string().min(1),
6
+ group_id: z.union([z.string(), z.null()]).optional(),
7
+ waypoint_id: z.string().optional(),
8
+ x: z.number(),
9
+ y: z.number(),
10
+ z: z.number(),
11
+ width: z.number().positive(),
12
+ height: z.number().positive(),
13
+ depth: z.number().positive(),
14
+ weight: z.number().optional(),
15
+ attributes: z.record(z.string(), z.unknown()).optional()
16
+ }).strict();
17
+ export const stabilizer_container_schema = z.object({
18
+ sequence: z.number().optional(),
19
+ width: z.number().positive(),
20
+ height: z.number().positive(),
21
+ length: z.number().positive(),
22
+ items: z.array(stabilizer_item_schema),
23
+ attributes: z.record(z.string(), z.unknown()).optional()
24
+ }).strict();
25
+ export const stabilizer_env_schema = z.object({
26
+ containers: z.array(stabilizer_container_schema).min(1),
27
+ axles: z.array(z.record(z.string(), z.unknown())).optional(),
28
+ vehicle: z.record(z.string(), z.unknown()).optional()
29
+ }).strict();
30
+ export const stabilizer_cargo_state_schema = z.object({
31
+ envs: z.array(stabilizer_env_schema).min(1),
32
+ config: z.record(z.string(), z.unknown()).optional()
33
+ }).strict();
34
+ /**
35
+ * Validates waypoint consistency across all items in the primary env.
36
+ * @param cargo_state - Parsed cargo state.
37
+ */
38
+ export function validate_primary_env_waypoints(cargo_state) {
39
+ const primary_env = cargo_state.envs[0];
40
+ const all_items = primary_env.containers.flatMap(container => container.items);
41
+ validate_waypoint_ids(all_items);
42
+ }
43
+ /**
44
+ * Adds waypoint validation issues to a Zod context.
45
+ * @param cargo_state - Cargo state being validated.
46
+ * @param context - Zod refinement context.
47
+ */
48
+ export function add_waypoint_validation_issues(cargo_state, context) {
49
+ try {
50
+ validate_primary_env_waypoints(cargo_state);
51
+ }
52
+ catch (error) {
53
+ if (error instanceof MixedWaypointIdError) {
54
+ context.addIssue({
55
+ code: 'custom',
56
+ message: error.message,
57
+ path: ['cargo_state', 'envs', 0]
58
+ });
59
+ }
60
+ else {
61
+ throw error;
62
+ }
63
+ }
64
+ }
@@ -0,0 +1,36 @@
1
+ import { z } from 'zod';
2
+ export declare const stabilizer_input_schema: z.ZodObject<{
3
+ id: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
4
+ company: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
5
+ cargo_state: z.ZodObject<{
6
+ envs: z.ZodArray<z.ZodObject<{
7
+ containers: z.ZodArray<z.ZodObject<{
8
+ sequence: z.ZodOptional<z.ZodNumber>;
9
+ width: z.ZodNumber;
10
+ height: z.ZodNumber;
11
+ length: z.ZodNumber;
12
+ items: z.ZodArray<z.ZodObject<{
13
+ item_id: z.ZodString;
14
+ group_id: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
15
+ waypoint_id: z.ZodOptional<z.ZodString>;
16
+ x: z.ZodNumber;
17
+ y: z.ZodNumber;
18
+ z: z.ZodNumber;
19
+ width: z.ZodNumber;
20
+ height: z.ZodNumber;
21
+ depth: z.ZodNumber;
22
+ weight: z.ZodOptional<z.ZodNumber>;
23
+ attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
24
+ }, z.core.$strict>>;
25
+ attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
26
+ }, z.core.$strict>>;
27
+ axles: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
28
+ vehicle: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
29
+ }, z.core.$strict>>;
30
+ config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
31
+ }, z.core.$strict>;
32
+ original_input: z.ZodOptional<z.ZodUnknown>;
33
+ config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
34
+ }, z.core.$strict>;
35
+ export type StabilizerInput = z.infer<typeof stabilizer_input_schema>;
36
+ //# sourceMappingURL=stabilizer_input_schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stabilizer_input_schema.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/contract/stabilizer_input_schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAMvB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBASlC,CAAA;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { z } from 'zod';
2
+ import { add_waypoint_validation_issues, stabilizer_cargo_state_schema } from './stabilizer_domain_schema.js';
3
+ export const stabilizer_input_schema = z.object({
4
+ id: z.union([z.string(), z.number()]).optional(),
5
+ company: z.union([z.string(), z.number()]).optional(),
6
+ cargo_state: stabilizer_cargo_state_schema,
7
+ original_input: z.unknown().optional(),
8
+ config: z.record(z.string(), z.unknown()).optional()
9
+ }).strict().superRefine((input_data, context) => {
10
+ add_waypoint_validation_issues(input_data.cargo_state, context);
11
+ });
@@ -0,0 +1,76 @@
1
+ import { z } from 'zod';
2
+ export declare const stabilizer_success_response_schema: z.ZodObject<{
3
+ status: z.ZodLiteral<"success">;
4
+ data: z.ZodObject<{
5
+ envs: z.ZodArray<z.ZodObject<{
6
+ containers: z.ZodArray<z.ZodObject<{
7
+ sequence: z.ZodOptional<z.ZodNumber>;
8
+ width: z.ZodNumber;
9
+ height: z.ZodNumber;
10
+ length: z.ZodNumber;
11
+ items: z.ZodArray<z.ZodObject<{
12
+ item_id: z.ZodString;
13
+ group_id: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
14
+ waypoint_id: z.ZodOptional<z.ZodString>;
15
+ x: z.ZodNumber;
16
+ y: z.ZodNumber;
17
+ z: z.ZodNumber;
18
+ width: z.ZodNumber;
19
+ height: z.ZodNumber;
20
+ depth: z.ZodNumber;
21
+ weight: z.ZodOptional<z.ZodNumber>;
22
+ attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
23
+ }, z.core.$strict>>;
24
+ attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
25
+ }, z.core.$strict>>;
26
+ axles: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
27
+ vehicle: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
28
+ }, z.core.$strict>>;
29
+ config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
30
+ }, z.core.$strict>;
31
+ messages: z.ZodArray<z.ZodString>;
32
+ }, z.core.$strict>;
33
+ export declare const stabilizer_error_response_schema: z.ZodObject<{
34
+ status: z.ZodLiteral<"error">;
35
+ data: z.ZodString;
36
+ messages: z.ZodArray<z.ZodString>;
37
+ }, z.core.$strict>;
38
+ export declare const stabilizer_response_schema: z.ZodDiscriminatedUnion<[z.ZodObject<{
39
+ status: z.ZodLiteral<"success">;
40
+ data: z.ZodObject<{
41
+ envs: z.ZodArray<z.ZodObject<{
42
+ containers: z.ZodArray<z.ZodObject<{
43
+ sequence: z.ZodOptional<z.ZodNumber>;
44
+ width: z.ZodNumber;
45
+ height: z.ZodNumber;
46
+ length: z.ZodNumber;
47
+ items: z.ZodArray<z.ZodObject<{
48
+ item_id: z.ZodString;
49
+ group_id: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
50
+ waypoint_id: z.ZodOptional<z.ZodString>;
51
+ x: z.ZodNumber;
52
+ y: z.ZodNumber;
53
+ z: z.ZodNumber;
54
+ width: z.ZodNumber;
55
+ height: z.ZodNumber;
56
+ depth: z.ZodNumber;
57
+ weight: z.ZodOptional<z.ZodNumber>;
58
+ attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
59
+ }, z.core.$strict>>;
60
+ attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
61
+ }, z.core.$strict>>;
62
+ axles: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
63
+ vehicle: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
64
+ }, z.core.$strict>>;
65
+ config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
66
+ }, z.core.$strict>;
67
+ messages: z.ZodArray<z.ZodString>;
68
+ }, z.core.$strict>, z.ZodObject<{
69
+ status: z.ZodLiteral<"error">;
70
+ data: z.ZodString;
71
+ messages: z.ZodArray<z.ZodString>;
72
+ }, z.core.$strict>], "status">;
73
+ export type StabilizerSuccessResponse = z.infer<typeof stabilizer_success_response_schema>;
74
+ export type StabilizerErrorResponse = z.infer<typeof stabilizer_error_response_schema>;
75
+ export type StabilizerResponse = z.infer<typeof stabilizer_response_schema>;
76
+ //# sourceMappingURL=stabilizer_output_schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stabilizer_output_schema.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/contract/stabilizer_output_schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAIpC,CAAA;AAEX,eAAO,MAAM,gCAAgC;;;;kBAIlC,CAAA;AAEX,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAGrC,CAAA;AAEF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAA;AAC1F,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAA;AACtF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { z } from 'zod';
2
+ import { stabilizer_cargo_state_schema } from './stabilizer_domain_schema.js';
3
+ export const stabilizer_success_response_schema = z.object({
4
+ status: z.literal('success'),
5
+ data: stabilizer_cargo_state_schema,
6
+ messages: z.array(z.string())
7
+ }).strict();
8
+ export const stabilizer_error_response_schema = z.object({
9
+ status: z.literal('error'),
10
+ data: z.string(),
11
+ messages: z.array(z.string())
12
+ }).strict();
13
+ export const stabilizer_response_schema = z.discriminatedUnion('status', [
14
+ stabilizer_success_response_schema,
15
+ stabilizer_error_response_schema
16
+ ]);