@jetta/cargo-stabilizer 0.1.0-14 → 0.1.0-3

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 (211) hide show
  1. package/CHANGELOG.md +1 -26
  2. package/README.md +12 -53
  3. package/build/core/adapters/axle_adapter.d.ts +4 -4
  4. package/build/core/adapters/axle_adapter.d.ts.map +1 -1
  5. package/build/core/adapters/axle_adapter.js +11 -13
  6. package/build/core/adapters/coordinate_mapper.d.ts +5 -5
  7. package/build/core/adapters/coordinate_mapper.d.ts.map +1 -1
  8. package/build/core/adapters/coordinate_mapper.js +13 -13
  9. package/build/core/adapters/stability_adapter.d.ts +1 -1
  10. package/build/core/adapters/stability_adapter.d.ts.map +1 -1
  11. package/build/core/adapters/stability_adapter.js +1 -1
  12. package/build/core/candidates/build_candidate_context.d.ts +1 -1
  13. package/build/core/candidates/build_candidate_context.d.ts.map +1 -1
  14. package/build/core/candidates/build_candidate_context.js +1 -3
  15. package/build/core/candidates/candidate_context.d.ts +1 -4
  16. package/build/core/candidates/candidate_context.d.ts.map +1 -1
  17. package/build/core/candidates/candidate_generator.d.ts +1 -1
  18. package/build/core/candidates/candidate_generator.d.ts.map +1 -1
  19. package/build/core/candidates/candidate_generator.js +16 -33
  20. package/build/core/candidates/candidate_validation.d.ts +12 -0
  21. package/build/core/candidates/candidate_validation.d.ts.map +1 -1
  22. package/build/core/candidates/candidate_validation.js +26 -36
  23. package/build/core/candidates/rank_candidates.d.ts.map +1 -1
  24. package/build/core/candidates/rank_candidates.js +0 -3
  25. package/build/core/evaluation/evaluation_context.d.ts +1 -3
  26. package/build/core/evaluation/evaluation_context.d.ts.map +1 -1
  27. package/build/core/evaluation/state_evaluator.d.ts +1 -12
  28. package/build/core/evaluation/state_evaluator.d.ts.map +1 -1
  29. package/build/core/evaluation/state_evaluator.js +7 -31
  30. package/build/core/factory/read_stabilizer_config.d.ts +2 -4
  31. package/build/core/factory/read_stabilizer_config.d.ts.map +1 -1
  32. package/build/core/factory/read_stabilizer_config.js +25 -6
  33. package/build/core/filters/loose_item_filter.d.ts +2 -2
  34. package/build/core/filters/loose_item_filter.d.ts.map +1 -1
  35. package/build/core/filters/loose_item_filter.js +3 -3
  36. package/build/core/geometry/box_geometry.d.ts +1 -17
  37. package/build/core/geometry/box_geometry.d.ts.map +1 -1
  38. package/build/core/geometry/box_geometry.js +2 -67
  39. package/build/core/move/apply_move.d.ts +1 -3
  40. package/build/core/move/apply_move.d.ts.map +1 -1
  41. package/build/core/move/apply_move.js +1 -1
  42. package/build/core/orchestration/StabilizerFlow.d.ts +1 -2
  43. package/build/core/orchestration/StabilizerFlow.d.ts.map +1 -1
  44. package/build/core/orchestration/StabilizerFlow.js +2 -2
  45. package/build/core/orchestration/build_reorder_context.d.ts +1 -1
  46. package/build/core/orchestration/build_reorder_context.d.ts.map +1 -1
  47. package/build/core/orchestration/build_reorder_context.js +12 -10
  48. package/build/core/strategies/reorder/BeamSearchReorder.d.ts +1 -1
  49. package/build/core/strategies/reorder/BeamSearchReorder.d.ts.map +1 -1
  50. package/build/core/strategies/reorder/BeamSearchReorder.js +6 -7
  51. package/build/core/strategies/reorder/GeneticReorder.d.ts +1 -1
  52. package/build/core/strategies/reorder/GeneticReorder.d.ts.map +1 -1
  53. package/build/core/strategies/reorder/GravityCompaction.d.ts +1 -1
  54. package/build/core/strategies/reorder/GravityCompaction.d.ts.map +1 -1
  55. package/build/core/strategies/reorder/GravityCompaction.js +2 -2
  56. package/build/core/strategies/reorder/GreedyReorder.d.ts +1 -1
  57. package/build/core/strategies/reorder/GreedyReorder.d.ts.map +1 -1
  58. package/build/core/strategies/reorder/ReorderStrategy.d.ts +1 -3
  59. package/build/core/strategies/reorder/ReorderStrategy.d.ts.map +1 -1
  60. package/build/core/strategies/reorder/SimulatedAnnealingReorder.d.ts +1 -1
  61. package/build/core/strategies/reorder/SimulatedAnnealingReorder.d.ts.map +1 -1
  62. package/build/core/strategies/reorder/anneal_helpers.d.ts +1 -1
  63. package/build/core/strategies/reorder/anneal_helpers.d.ts.map +1 -1
  64. package/build/core/strategies/reorder/anneal_helpers.js +1 -1
  65. package/build/core/strategies/reorder/apply_if_gates_pass.d.ts +1 -1
  66. package/build/core/strategies/reorder/apply_if_gates_pass.d.ts.map +1 -1
  67. package/build/core/strategies/reorder/beam_context.d.ts +1 -1
  68. package/build/core/strategies/reorder/beam_context.d.ts.map +1 -1
  69. package/build/core/strategies/reorder/genetic/Chromosome.d.ts +1 -1
  70. package/build/core/strategies/reorder/genetic/Chromosome.d.ts.map +1 -1
  71. package/build/core/strategies/reorder/genetic/Chromosome.js +2 -2
  72. package/build/core/strategies/reorder/greedy_improvement.d.ts +1 -1
  73. package/build/core/strategies/reorder/greedy_improvement.d.ts.map +1 -1
  74. package/build/core/strategies/reorder/greedy_improvement.js +2 -2
  75. package/build/core/validation/parse_stabilizer_input.d.ts +8 -0
  76. package/build/core/validation/parse_stabilizer_input.d.ts.map +1 -0
  77. package/build/core/validation/parse_stabilizer_input.js +20 -0
  78. package/build/core/validation/schemas/stabilizer_config_schema.d.ts +1 -5
  79. package/build/core/validation/schemas/stabilizer_config_schema.d.ts.map +1 -1
  80. package/build/core/validation/schemas/stabilizer_config_schema.js +1 -5
  81. package/build/core/validation/schemas/stabilizer_input_schema.d.ts +110 -0
  82. package/build/core/validation/schemas/stabilizer_input_schema.d.ts.map +1 -0
  83. package/build/core/validation/schemas/stabilizer_input_schema.js +34 -0
  84. package/build/core/validation/schemas/stabilizer_output_schema.d.ts +13 -0
  85. package/build/core/validation/schemas/stabilizer_output_schema.d.ts.map +1 -0
  86. package/build/core/validation/schemas/stabilizer_output_schema.js +6 -0
  87. package/build/core/waypoint/build_waypoint_zones.d.ts +1 -1
  88. package/build/core/waypoint/build_waypoint_zones.d.ts.map +1 -1
  89. package/build/core/waypoint/build_waypoint_zones.js +2 -2
  90. package/build/core/waypoint/preserves_waypoint_order.d.ts +1 -1
  91. package/build/core/waypoint/preserves_waypoint_order.d.ts.map +1 -1
  92. package/build/core/waypoint/validate_waypoint_ids.d.ts +1 -1
  93. package/build/core/waypoint/validate_waypoint_ids.d.ts.map +1 -1
  94. package/build/index.d.ts +6 -15
  95. package/build/index.d.ts.map +1 -1
  96. package/build/index.js +7 -30
  97. package/package.json +1 -1
  98. package/build/core/adapters/build_axle_request.d.ts +0 -15
  99. package/build/core/adapters/build_axle_request.d.ts.map +0 -1
  100. package/build/core/adapters/build_axle_request.js +0 -39
  101. package/build/core/adapters/empty_space_adapter.d.ts +0 -10
  102. package/build/core/adapters/empty_space_adapter.d.ts.map +0 -1
  103. package/build/core/adapters/empty_space_adapter.js +0 -24
  104. package/build/core/adapters/map_item_to_positioned_cube.d.ts +0 -9
  105. package/build/core/adapters/map_item_to_positioned_cube.d.ts.map +0 -1
  106. package/build/core/adapters/map_item_to_positioned_cube.js +0 -16
  107. package/build/core/adapters/run_axle_calculator.d.ts +0 -16
  108. package/build/core/adapters/run_axle_calculator.d.ts.map +0 -1
  109. package/build/core/adapters/run_axle_calculator.js +0 -32
  110. package/build/core/candidates/collect_container_slots.d.ts +0 -16
  111. package/build/core/candidates/collect_container_slots.d.ts.map +0 -1
  112. package/build/core/candidates/collect_container_slots.js +0 -20
  113. package/build/core/candidates/enumerate_empty_space_slots.d.ts +0 -15
  114. package/build/core/candidates/enumerate_empty_space_slots.d.ts.map +0 -1
  115. package/build/core/candidates/enumerate_empty_space_slots.js +0 -44
  116. package/build/core/candidates/enumerate_supporter_top_slots.d.ts +0 -11
  117. package/build/core/candidates/enumerate_supporter_top_slots.d.ts.map +0 -1
  118. package/build/core/candidates/enumerate_supporter_top_slots.js +0 -36
  119. package/build/core/candidates/is_elevated_on_supporter_origin.d.ts +0 -14
  120. package/build/core/candidates/is_elevated_on_supporter_origin.d.ts.map +0 -1
  121. package/build/core/candidates/is_elevated_on_supporter_origin.js +0 -28
  122. package/build/core/constants/TieRatioOrientation.d.ts +0 -6
  123. package/build/core/constants/TieRatioOrientation.d.ts.map +0 -1
  124. package/build/core/constants/TieRatioOrientation.js +0 -5
  125. package/build/core/evaluation/compute_reorder_objective.d.ts +0 -13
  126. package/build/core/evaluation/compute_reorder_objective.d.ts.map +0 -1
  127. package/build/core/evaluation/compute_reorder_objective.js +0 -13
  128. package/build/core/exceptions/AxleCalculationError.d.ts +0 -4
  129. package/build/core/exceptions/AxleCalculationError.d.ts.map +0 -1
  130. package/build/core/exceptions/AxleCalculationError.js +0 -6
  131. package/build/core/exceptions/InvalidStabilizerOutputError.d.ts +0 -4
  132. package/build/core/exceptions/InvalidStabilizerOutputError.d.ts.map +0 -1
  133. package/build/core/exceptions/InvalidStabilizerOutputError.js +0 -6
  134. package/build/core/factory/read_stabilizer_config_helpers.d.ts +0 -29
  135. package/build/core/factory/read_stabilizer_config_helpers.d.ts.map +0 -1
  136. package/build/core/factory/read_stabilizer_config_helpers.js +0 -73
  137. package/build/core/filters/collect_movable_items.d.ts +0 -18
  138. package/build/core/filters/collect_movable_items.d.ts.map +0 -1
  139. package/build/core/filters/collect_movable_items.js +0 -53
  140. package/build/core/filters/collect_pinned_floor_tie_ratio_group_ids.d.ts +0 -8
  141. package/build/core/filters/collect_pinned_floor_tie_ratio_group_ids.d.ts.map +0 -1
  142. package/build/core/filters/collect_pinned_floor_tie_ratio_group_ids.js +0 -41
  143. package/build/core/filters/is_item_on_cm_floor.d.ts +0 -8
  144. package/build/core/filters/is_item_on_cm_floor.d.ts.map +0 -1
  145. package/build/core/filters/is_item_on_cm_floor.js +0 -9
  146. package/build/core/geometry/has_penetrating_overlap.d.ts +0 -9
  147. package/build/core/geometry/has_penetrating_overlap.d.ts.map +0 -1
  148. package/build/core/geometry/has_penetrating_overlap.js +0 -27
  149. package/build/core/orchestration/build_milkrun_bands_from_config.d.ts +0 -13
  150. package/build/core/orchestration/build_milkrun_bands_from_config.d.ts.map +0 -1
  151. package/build/core/orchestration/build_milkrun_bands_from_config.js +0 -14
  152. package/build/core/orchestration/read_primary_env.d.ts +0 -9
  153. package/build/core/orchestration/read_primary_env.d.ts.map +0 -1
  154. package/build/core/orchestration/read_primary_env.js +0 -13
  155. package/build/core/strategies/reorder/select_beam_expansion_candidates.d.ts +0 -9
  156. package/build/core/strategies/reorder/select_beam_expansion_candidates.d.ts.map +0 -1
  157. package/build/core/strategies/reorder/select_beam_expansion_candidates.js +0 -28
  158. package/build/core/strategies/reorder/select_surviving_beam.d.ts +0 -10
  159. package/build/core/strategies/reorder/select_surviving_beam.d.ts.map +0 -1
  160. package/build/core/strategies/reorder/select_surviving_beam.js +0 -12
  161. package/build/core/validation/contract/cargo_movement_wire_field_map.d.ts +0 -37
  162. package/build/core/validation/contract/cargo_movement_wire_field_map.d.ts.map +0 -1
  163. package/build/core/validation/contract/cargo_movement_wire_field_map.js +0 -43
  164. package/build/core/validation/contract/cargo_movement_wire_mapper.d.ts +0 -14
  165. package/build/core/validation/contract/cargo_movement_wire_mapper.d.ts.map +0 -1
  166. package/build/core/validation/contract/cargo_movement_wire_mapper.js +0 -34
  167. package/build/core/validation/contract/format_zod_error.d.ts +0 -8
  168. package/build/core/validation/contract/format_zod_error.d.ts.map +0 -1
  169. package/build/core/validation/contract/format_zod_error.js +0 -11
  170. package/build/core/validation/contract/index.d.ts +0 -9
  171. package/build/core/validation/contract/index.d.ts.map +0 -1
  172. package/build/core/validation/contract/index.js +0 -8
  173. package/build/core/validation/contract/map_contract_to_wire_shape.d.ts +0 -3
  174. package/build/core/validation/contract/map_contract_to_wire_shape.d.ts.map +0 -1
  175. package/build/core/validation/contract/map_contract_to_wire_shape.js +0 -45
  176. package/build/core/validation/contract/map_wire_input_to_contract_shape.d.ts +0 -2
  177. package/build/core/validation/contract/map_wire_input_to_contract_shape.d.ts.map +0 -1
  178. package/build/core/validation/contract/map_wire_input_to_contract_shape.js +0 -61
  179. package/build/core/validation/contract/map_wire_item_to_contract.d.ts +0 -12
  180. package/build/core/validation/contract/map_wire_item_to_contract.d.ts.map +0 -1
  181. package/build/core/validation/contract/map_wire_item_to_contract.js +0 -57
  182. package/build/core/validation/contract/parse_stabilizer_input.d.ts +0 -48
  183. package/build/core/validation/contract/parse_stabilizer_input.d.ts.map +0 -1
  184. package/build/core/validation/contract/parse_stabilizer_input.js +0 -26
  185. package/build/core/validation/contract/parse_stabilizer_output.d.ts +0 -50
  186. package/build/core/validation/contract/parse_stabilizer_output.d.ts.map +0 -1
  187. package/build/core/validation/contract/parse_stabilizer_output.js +0 -24
  188. package/build/core/validation/contract/stabilizer_domain_schema.d.ts +0 -101
  189. package/build/core/validation/contract/stabilizer_domain_schema.d.ts.map +0 -1
  190. package/build/core/validation/contract/stabilizer_domain_schema.js +0 -64
  191. package/build/core/validation/contract/stabilizer_input_schema.d.ts +0 -36
  192. package/build/core/validation/contract/stabilizer_input_schema.d.ts.map +0 -1
  193. package/build/core/validation/contract/stabilizer_input_schema.js +0 -11
  194. package/build/core/validation/contract/stabilizer_output_schema.d.ts +0 -76
  195. package/build/core/validation/contract/stabilizer_output_schema.d.ts.map +0 -1
  196. package/build/core/validation/contract/stabilizer_output_schema.js +0 -16
  197. package/build/core/validation/contract/uniquify_contract_item_ids.d.ts +0 -8
  198. package/build/core/validation/contract/uniquify_contract_item_ids.d.ts.map +0 -1
  199. package/build/core/validation/contract/uniquify_contract_item_ids.js +0 -38
  200. package/build/core/validation/contract/wire_mapper_record_utils.d.ts +0 -34
  201. package/build/core/validation/contract/wire_mapper_record_utils.d.ts.map +0 -1
  202. package/build/core/validation/contract/wire_mapper_record_utils.js +0 -66
  203. package/build/core/waypoint/milkrun_wall_reservation.d.ts +0 -24
  204. package/build/core/waypoint/milkrun_wall_reservation.d.ts.map +0 -1
  205. package/build/core/waypoint/milkrun_wall_reservation.js +0 -57
  206. package/build/core/waypoint/milkrun_wall_reservation_helpers.d.ts +0 -15
  207. package/build/core/waypoint/milkrun_wall_reservation_helpers.d.ts.map +0 -1
  208. package/build/core/waypoint/milkrun_wall_reservation_helpers.js +0 -48
  209. package/build/core/waypoint/milkrun_wall_reservation_types.d.ts +0 -16
  210. package/build/core/waypoint/milkrun_wall_reservation_types.d.ts.map +0 -1
  211. package/build/core/waypoint/milkrun_wall_reservation_types.js +0 -1
@@ -1,41 +0,0 @@
1
- import { TIE_RATIO_ORIENTATION } from '../constants/TieRatioOrientation.js';
2
- import { is_item_on_cm_floor } from './is_item_on_cm_floor.js';
3
- const FULL_TIE_RATIO_FLOOR_COUNT = 5;
4
- /**
5
- * Group ids of floor five-slot 3_2/2_3 walls that the stabilizer must pin.
6
- * @param items - All items in the cargo.
7
- * @returns Group ids with exactly five floor tie-ratio members.
8
- */
9
- export function collect_pinned_floor_tie_ratio_group_ids(items) {
10
- const floor_tie_count_by_group = new Map();
11
- for (const item of items) {
12
- add_floor_tie_member(floor_tie_count_by_group, item);
13
- }
14
- return groups_with_full_floor_wall(floor_tie_count_by_group);
15
- }
16
- function add_floor_tie_member(counts, item) {
17
- if (item.group_id == null || !is_item_on_cm_floor(item)) {
18
- return;
19
- }
20
- if (!is_tie_ratio_orientation(read_tie_ratio_orientation(item))) {
21
- return;
22
- }
23
- counts.set(item.group_id, (counts.get(item.group_id) ?? 0) + 1);
24
- }
25
- function groups_with_full_floor_wall(counts) {
26
- const pinned = new Set();
27
- for (const [group_id, count] of counts) {
28
- if (count === FULL_TIE_RATIO_FLOOR_COUNT) {
29
- pinned.add(group_id);
30
- }
31
- }
32
- return pinned;
33
- }
34
- function read_tie_ratio_orientation(item) {
35
- const orientation = item.attributes?.tie_ratio_orientation;
36
- return typeof orientation === 'string' ? orientation : undefined;
37
- }
38
- function is_tie_ratio_orientation(orientation) {
39
- return orientation === TIE_RATIO_ORIENTATION.THREE_TWO
40
- || orientation === TIE_RATIO_ORIENTATION.TWO_THREE;
41
- }
@@ -1,8 +0,0 @@
1
- import type { StabilizerItem } from '../validation/contract/stabilizer_domain_schema.js';
2
- /**
3
- * True when the item rests on the floor (contract y is height after wire map).
4
- * @param item - Stabilizer item in contract coordinates.
5
- * @returns True when height origin is on the floor.
6
- */
7
- export declare function is_item_on_cm_floor(item: StabilizerItem): boolean;
8
- //# sourceMappingURL=is_item_on_cm_floor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"is_item_on_cm_floor.d.ts","sourceRoot":"","sources":["../../../src/core/filters/is_item_on_cm_floor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAA;AAIxF;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAGjE"}
@@ -1,9 +0,0 @@
1
- const CM_FLOOR_HEIGHT_EPSILON = 1e-6;
2
- /**
3
- * True when the item rests on the floor (contract y is height after wire map).
4
- * @param item - Stabilizer item in contract coordinates.
5
- * @returns True when height origin is on the floor.
6
- */
7
- export function is_item_on_cm_floor(item) {
8
- return item.y <= CM_FLOOR_HEIGHT_EPSILON;
9
- }
@@ -1,9 +0,0 @@
1
- import type { StabilizerContainer } from '../validation/contract/stabilizer_domain_schema.js';
2
- /**
3
- * True when any two items penetrate in the contract frame
4
- * (x + width, y + height, z + depth) by more than a face-touch epsilon.
5
- * @param containers - Layout to inspect.
6
- * @returns True when a pair occupies the same volume beyond float error.
7
- */
8
- export declare function has_penetrating_overlap(containers: StabilizerContainer[]): boolean;
9
- //# sourceMappingURL=has_penetrating_overlap.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"has_penetrating_overlap.d.ts","sourceRoot":"","sources":["../../../src/core/geometry/has_penetrating_overlap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAkB,MAAM,oDAAoD,CAAA;AAI7G;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAGlF"}
@@ -1,27 +0,0 @@
1
- const PENETRATION_EPSILON = 1e-6;
2
- /**
3
- * True when any two items penetrate in the contract frame
4
- * (x + width, y + height, z + depth) by more than a face-touch epsilon.
5
- * @param containers - Layout to inspect.
6
- * @returns True when a pair occupies the same volume beyond float error.
7
- */
8
- export function has_penetrating_overlap(containers) {
9
- return containers.some(container => container_has_penetrating_overlap(container));
10
- }
11
- function container_has_penetrating_overlap(container) {
12
- const items = container.items;
13
- for (let i = 0; i < items.length; i++) {
14
- for (let j = i + 1; j < items.length; j++) {
15
- if (items_penetrate(items[i], items[j])) {
16
- return true;
17
- }
18
- }
19
- }
20
- return false;
21
- }
22
- function items_penetrate(left, right) {
23
- return interval_penetration({ min: left.x, max: left.x + left.width }, { min: right.x, max: right.x + right.width }) && interval_penetration({ min: left.y, max: left.y + left.height }, { min: right.y, max: right.y + right.height }) && interval_penetration({ min: left.z, max: left.z + left.depth }, { min: right.z, max: right.z + right.depth });
24
- }
25
- function interval_penetration(left, right) {
26
- return Math.min(left.max, right.max) - Math.max(left.min, right.min) > PENETRATION_EPSILON;
27
- }
@@ -1,13 +0,0 @@
1
- import type { StabilizerContainer } from '../validation/contract/stabilizer_domain_schema.js';
2
- import type { StabilizerConfig } from '../validation/schemas/stabilizer_config_schema.js';
3
- import type { WaypointMode } from '../waypoint/WaypointMode.js';
4
- import type { MilkrunReservedBand } from '../waypoint/milkrun_wall_reservation_types.js';
5
- /**
6
- * Builds milkrun reserved bands when enforcement is enabled in config.
7
- * @param baseline_containers - Baseline container layout.
8
- * @param waypoint_mode - Resolved waypoint mode.
9
- * @param config - Parsed stabilizer config.
10
- * @returns Reserved Z bands (empty when milkrun enforcement is disabled).
11
- */
12
- export declare function build_milkrun_bands_from_config(baseline_containers: StabilizerContainer[], waypoint_mode: WaypointMode, config: StabilizerConfig): MilkrunReservedBand[];
13
- //# sourceMappingURL=build_milkrun_bands_from_config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"build_milkrun_bands_from_config.d.ts","sourceRoot":"","sources":["../../../src/core/orchestration/build_milkrun_bands_from_config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oDAAoD,CAAA;AAC7F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mDAAmD,CAAA;AACzF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAE/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAA;AAExF;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC3C,mBAAmB,EAAE,mBAAmB,EAAE,EAC1C,aAAa,EAAE,YAAY,EAC3B,MAAM,EAAE,gBAAgB,GACzB,mBAAmB,EAAE,CAMvB"}
@@ -1,14 +0,0 @@
1
- import { build_milkrun_reserved_z_bands } from '../waypoint/milkrun_wall_reservation.js';
2
- /**
3
- * Builds milkrun reserved bands when enforcement is enabled in config.
4
- * @param baseline_containers - Baseline container layout.
5
- * @param waypoint_mode - Resolved waypoint mode.
6
- * @param config - Parsed stabilizer config.
7
- * @returns Reserved Z bands (empty when milkrun enforcement is disabled).
8
- */
9
- export function build_milkrun_bands_from_config(baseline_containers, waypoint_mode, config) {
10
- const wall_count = config.enforce_milkrun_wall_reservation
11
- ? config.number_of_wall_to_allocate_from_last_waypoints
12
- : 0;
13
- return build_milkrun_reserved_z_bands(baseline_containers, waypoint_mode, wall_count);
14
- }
@@ -1,9 +0,0 @@
1
- import type { StabilizerInput } from '../validation/contract/stabilizer_input_schema.js';
2
- import type { StabilizerEnv } from '../validation/contract/stabilizer_domain_schema.js';
3
- /**
4
- * Reads the primary env from stabilizer input.
5
- * @param input - Validated stabilizer input.
6
- * @returns First cargo env.
7
- */
8
- export declare function read_primary_env(input: StabilizerInput): StabilizerEnv;
9
- //# sourceMappingURL=read_primary_env.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"read_primary_env.d.ts","sourceRoot":"","sources":["../../../src/core/orchestration/read_primary_env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mDAAmD,CAAA;AACxF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oDAAoD,CAAA;AAGvF;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,aAAa,CAQtE"}
@@ -1,13 +0,0 @@
1
- import { InvalidStabilizerInputError } from '../exceptions/InvalidStabilizerInputError.js';
2
- /**
3
- * Reads the primary env from stabilizer input.
4
- * @param input - Validated stabilizer input.
5
- * @returns First cargo env.
6
- */
7
- export function read_primary_env(input) {
8
- const env = input.cargo_state.envs[0];
9
- if (!env) {
10
- throw new InvalidStabilizerInputError('cargo_state.envs must contain at least one env');
11
- }
12
- return env;
13
- }
@@ -1,9 +0,0 @@
1
- import type { MoveCandidate } from '../../move/apply_move.js';
2
- /**
3
- * Selects beam expansions: ranked top_k plus every supporter-top slot.
4
- * @param ranked - Candidates already ranked floor-first.
5
- * @param top_k - Beam top-k from config.
6
- * @returns Candidates for trial evaluation.
7
- */
8
- export declare function select_beam_expansion_candidates(ranked: MoveCandidate[], top_k: number): MoveCandidate[];
9
- //# sourceMappingURL=select_beam_expansion_candidates.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"select_beam_expansion_candidates.d.ts","sourceRoot":"","sources":["../../../../src/core/strategies/reorder/select_beam_expansion_candidates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAE7D;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAC5C,MAAM,EAAE,aAAa,EAAE,EACvB,KAAK,EAAE,MAAM,GACd,aAAa,EAAE,CAKjB"}
@@ -1,28 +0,0 @@
1
- /**
2
- * Selects beam expansions: ranked top_k plus every supporter-top slot.
3
- * @param ranked - Candidates already ranked floor-first.
4
- * @param top_k - Beam top-k from config.
5
- * @returns Candidates for trial evaluation.
6
- */
7
- export function select_beam_expansion_candidates(ranked, top_k) {
8
- const leading = ranked.slice(0, top_k);
9
- const supporter_top = ranked.filter(candidate => candidate.slot_kind === 'supporter_top');
10
- return unique_move_positions([...leading, ...supporter_top]);
11
- }
12
- function unique_move_positions(candidates) {
13
- const seen = new Set();
14
- const unique = [];
15
- for (const candidate of candidates) {
16
- const key = position_key(candidate);
17
- if (seen.has(key)) {
18
- continue;
19
- }
20
- seen.add(key);
21
- unique.push(candidate);
22
- }
23
- return unique;
24
- }
25
- function position_key(candidate) {
26
- const position = candidate.new_position;
27
- return `${position.x}:${position.y}:${position.z}:${candidate.target_container_index}`;
28
- }
@@ -1,10 +0,0 @@
1
- import type { BeamState } from './beam_context.js';
2
- /**
3
- * Keeps ranked expansions, or the parent beam when every trial failed the gates.
4
- * @param expanded - Trial states that passed gates.
5
- * @param parent_beam - Beam states before this item's expansion.
6
- * @param beam_width - Maximum states to keep.
7
- * @returns Next beam, never empty when the parent beam had states.
8
- */
9
- export declare function select_surviving_beam(expanded: BeamState[], parent_beam: BeamState[], beam_width: number): BeamState[];
10
- //# sourceMappingURL=select_surviving_beam.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"select_surviving_beam.d.ts","sourceRoot":"","sources":["../../../../src/core/strategies/reorder/select_surviving_beam.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAElD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACjC,QAAQ,EAAE,SAAS,EAAE,EACrB,WAAW,EAAE,SAAS,EAAE,EACxB,UAAU,EAAE,MAAM,GACnB,SAAS,EAAE,CAKb"}
@@ -1,12 +0,0 @@
1
- /**
2
- * Keeps ranked expansions, or the parent beam when every trial failed the gates.
3
- * @param expanded - Trial states that passed gates.
4
- * @param parent_beam - Beam states before this item's expansion.
5
- * @param beam_width - Maximum states to keep.
6
- * @returns Next beam, never empty when the parent beam had states.
7
- */
8
- export function select_surviving_beam(expanded, parent_beam, beam_width) {
9
- const ranked = [...parent_beam, ...expanded]
10
- .sort((left, right) => right.objective - left.objective);
11
- return ranked.slice(0, beam_width);
12
- }
@@ -1,37 +0,0 @@
1
- export declare const ITEM_WIRE_TO_CONTRACT: {
2
- readonly _id: "item_id";
3
- readonly groupId: "group_id";
4
- readonly w: "width";
5
- readonly h: "height";
6
- readonly d: "depth";
7
- };
8
- /**
9
- * Cargo-movement wire keys feeding each contract item field, in precedence
10
- * order. Items are read-only for the stabilizer apart from their position, so
11
- * these keys are read rather than renamed: the original wire record is
12
- * retained in `attributes` and is what gets emitted back.
13
- */
14
- export declare const ITEM_CONTRACT_WIRE_KEYS: Readonly<{
15
- item_id: string[];
16
- group_id: string[];
17
- waypoint_id: string[];
18
- width: string[];
19
- height: string[];
20
- depth: string[];
21
- weight: string[];
22
- }>;
23
- /** Item fields the stabilizer mutates, and therefore must emit itself. */
24
- export declare const ITEM_POSITION_KEYS: string[];
25
- export declare const CONTAINER_WIRE_TO_CONTRACT: {
26
- readonly sequencia: "sequence";
27
- readonly largura: "width";
28
- readonly altura: "height";
29
- readonly comprimento: "length";
30
- };
31
- export declare const ENV_WIRE_TO_CONTRACT: {
32
- readonly eixos: "axles";
33
- };
34
- export declare const CONTRACT_TO_ITEM_WIRE: Record<string, string>;
35
- export declare const CONTRACT_TO_CONTAINER_WIRE: Record<string, string>;
36
- export declare const CONTRACT_TO_ENV_WIRE: Record<string, string>;
37
- //# sourceMappingURL=cargo_movement_wire_field_map.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cargo_movement_wire_field_map.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/contract/cargo_movement_wire_field_map.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB;;;;;;CAMxB,CAAA;AAEV;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;EAQlC,CAAA;AAEF,0EAA0E;AAC1E,eAAO,MAAM,kBAAkB,UAAkB,CAAA;AAEjD,eAAO,MAAM,0BAA0B;;;;;CAK7B,CAAA;AAEV,eAAO,MAAM,oBAAoB;;CAEvB,CAAA;AAEV,eAAO,MAAM,qBAAqB,wBAAoC,CAAA;AACtE,eAAO,MAAM,0BAA0B,wBAAyC,CAAA;AAChF,eAAO,MAAM,oBAAoB,wBAAmC,CAAA"}
@@ -1,43 +0,0 @@
1
- export const ITEM_WIRE_TO_CONTRACT = {
2
- _id: 'item_id',
3
- groupId: 'group_id',
4
- w: 'width',
5
- h: 'height',
6
- d: 'depth'
7
- };
8
- /**
9
- * Cargo-movement wire keys feeding each contract item field, in precedence
10
- * order. Items are read-only for the stabilizer apart from their position, so
11
- * these keys are read rather than renamed: the original wire record is
12
- * retained in `attributes` and is what gets emitted back.
13
- */
14
- export const ITEM_CONTRACT_WIRE_KEYS = Object.freeze({
15
- item_id: ['item_id', '_id'],
16
- group_id: ['groupId', 'group_id'],
17
- waypoint_id: ['waypoint_id'],
18
- width: ['w', 'width'],
19
- height: ['h', 'height'],
20
- depth: ['d', 'depth'],
21
- weight: ['wg', 'peso', 'weight']
22
- });
23
- /** Item fields the stabilizer mutates, and therefore must emit itself. */
24
- export const ITEM_POSITION_KEYS = ['x', 'y', 'z'];
25
- export const CONTAINER_WIRE_TO_CONTRACT = {
26
- sequencia: 'sequence',
27
- largura: 'width',
28
- altura: 'height',
29
- comprimento: 'length'
30
- };
31
- export const ENV_WIRE_TO_CONTRACT = {
32
- eixos: 'axles'
33
- };
34
- export const CONTRACT_TO_ITEM_WIRE = invert_map(ITEM_WIRE_TO_CONTRACT);
35
- export const CONTRACT_TO_CONTAINER_WIRE = invert_map(CONTAINER_WIRE_TO_CONTRACT);
36
- export const CONTRACT_TO_ENV_WIRE = invert_map(ENV_WIRE_TO_CONTRACT);
37
- function invert_map(source) {
38
- const inverted = {};
39
- for (const [wire_key, contract_key] of Object.entries(source)) {
40
- inverted[contract_key] = wire_key;
41
- }
42
- return inverted;
43
- }
@@ -1,14 +0,0 @@
1
- import type { StabilizerCargoState } from './stabilizer_domain_schema.js';
2
- /**
3
- * Maps a cargo-movement wire payload to the English contract shape.
4
- * @param input_data - Unknown CM wire payload.
5
- * @returns Object ready for strict contract parsing.
6
- */
7
- export declare function map_wire_input_to_contract(input_data: unknown): unknown;
8
- /**
9
- * Maps an English contract cargo state back to cargo-movement wire shape.
10
- * @param cargo_state - English contract cargo state.
11
- * @returns CM wire cargo state.
12
- */
13
- export declare function map_contract_to_wire_output(cargo_state: StabilizerCargoState): unknown;
14
- //# sourceMappingURL=cargo_movement_wire_mapper.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cargo_movement_wire_mapper.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/contract/cargo_movement_wire_mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AAOzE;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAsBvE;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,oBAAoB,GAAG,OAAO,CAGtF"}
@@ -1,34 +0,0 @@
1
- import { map_cargo_state_to_wire } from './map_contract_to_wire_shape.js';
2
- import { map_cargo_state_to_contract } from './map_wire_input_to_contract_shape.js';
3
- import { is_record } from './wire_mapper_record_utils.js';
4
- const INPUT_ENVELOPE_KEYS = new Set(['id', 'company', 'cargo_state', 'config', 'original_input']);
5
- /**
6
- * Maps a cargo-movement wire payload to the English contract shape.
7
- * @param input_data - Unknown CM wire payload.
8
- * @returns Object ready for strict contract parsing.
9
- */
10
- export function map_wire_input_to_contract(input_data) {
11
- if (!is_record(input_data)) {
12
- return input_data;
13
- }
14
- const mapped = {};
15
- for (const [key, value] of Object.entries(input_data)) {
16
- if (!INPUT_ENVELOPE_KEYS.has(key)) {
17
- continue;
18
- }
19
- if (key === 'cargo_state') {
20
- mapped.cargo_state = map_cargo_state_to_contract(value);
21
- continue;
22
- }
23
- mapped[key] = value;
24
- }
25
- return mapped;
26
- }
27
- /**
28
- * Maps an English contract cargo state back to cargo-movement wire shape.
29
- * @param cargo_state - English contract cargo state.
30
- * @returns CM wire cargo state.
31
- */
32
- export function map_contract_to_wire_output(cargo_state) {
33
- return map_cargo_state_to_wire(cargo_state);
34
- }
@@ -1,8 +0,0 @@
1
- import type { ZodError } from 'zod';
2
- /**
3
- * Formats Zod validation issues into a single human-readable string.
4
- * @param error - Zod validation error.
5
- * @returns Semicolon-separated path messages.
6
- */
7
- export declare function format_zod_error(error: ZodError): string;
8
- //# sourceMappingURL=format_zod_error.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"format_zod_error.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/contract/format_zod_error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAA;AAEnC;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAOxD"}
@@ -1,11 +0,0 @@
1
- /**
2
- * Formats Zod validation issues into a single human-readable string.
3
- * @param error - Zod validation error.
4
- * @returns Semicolon-separated path messages.
5
- */
6
- export function format_zod_error(error) {
7
- return error.issues.map(issue => {
8
- const path = issue.path.length > 0 ? issue.path.join('.') : '(root)';
9
- return `${path}: ${issue.message}`;
10
- }).join('; ');
11
- }
@@ -1,9 +0,0 @@
1
- export { format_zod_error } from './format_zod_error.js';
2
- export { ITEM_WIRE_TO_CONTRACT, CONTAINER_WIRE_TO_CONTRACT, ENV_WIRE_TO_CONTRACT, CONTRACT_TO_ITEM_WIRE, CONTRACT_TO_CONTAINER_WIRE, CONTRACT_TO_ENV_WIRE } from './cargo_movement_wire_field_map.js';
3
- export { map_wire_input_to_contract, map_contract_to_wire_output } from './cargo_movement_wire_mapper.js';
4
- export { stabilizer_item_schema, stabilizer_container_schema, stabilizer_env_schema, stabilizer_cargo_state_schema, validate_primary_env_waypoints, type StabilizerItem, type StabilizerContainer, type StabilizerEnv, type StabilizerCargoState } from './stabilizer_domain_schema.js';
5
- export { stabilizer_input_schema, type StabilizerInput } from './stabilizer_input_schema.js';
6
- export { stabilizer_response_schema, stabilizer_success_response_schema, stabilizer_error_response_schema, type StabilizerResponse, type StabilizerSuccessResponse, type StabilizerErrorResponse } from './stabilizer_output_schema.js';
7
- export { parse_stabilizer_input, safe_parse_stabilizer_input } from './parse_stabilizer_input.js';
8
- export { parse_stabilizer_output, safe_parse_stabilizer_output } from './parse_stabilizer_output.js';
9
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/contract/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EACH,qBAAqB,EACrB,0BAA0B,EAC1B,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAC1B,oBAAoB,EACvB,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EACH,0BAA0B,EAC1B,2BAA2B,EAC9B,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACH,sBAAsB,EACtB,2BAA2B,EAC3B,qBAAqB,EACrB,6BAA6B,EAC7B,8BAA8B,EAC9B,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EAC5B,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,uBAAuB,EAAE,KAAK,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC5F,OAAO,EACH,0BAA0B,EAC1B,kCAAkC,EAClC,gCAAgC,EAChC,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,EAC/B,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACH,sBAAsB,EACtB,2BAA2B,EAC9B,MAAM,6BAA6B,CAAA;AACpC,OAAO,EACH,uBAAuB,EACvB,4BAA4B,EAC/B,MAAM,8BAA8B,CAAA"}
@@ -1,8 +0,0 @@
1
- export { format_zod_error } from './format_zod_error.js';
2
- export { ITEM_WIRE_TO_CONTRACT, CONTAINER_WIRE_TO_CONTRACT, ENV_WIRE_TO_CONTRACT, CONTRACT_TO_ITEM_WIRE, CONTRACT_TO_CONTAINER_WIRE, CONTRACT_TO_ENV_WIRE } from './cargo_movement_wire_field_map.js';
3
- export { map_wire_input_to_contract, map_contract_to_wire_output } from './cargo_movement_wire_mapper.js';
4
- export { stabilizer_item_schema, stabilizer_container_schema, stabilizer_env_schema, stabilizer_cargo_state_schema, validate_primary_env_waypoints } from './stabilizer_domain_schema.js';
5
- export { stabilizer_input_schema } from './stabilizer_input_schema.js';
6
- export { stabilizer_response_schema, stabilizer_success_response_schema, stabilizer_error_response_schema } from './stabilizer_output_schema.js';
7
- export { parse_stabilizer_input, safe_parse_stabilizer_input } from './parse_stabilizer_input.js';
8
- export { parse_stabilizer_output, safe_parse_stabilizer_output } from './parse_stabilizer_output.js';
@@ -1,3 +0,0 @@
1
- import type { StabilizerCargoState } from './stabilizer_domain_schema.js';
2
- export declare function map_cargo_state_to_wire(cargo_state: StabilizerCargoState): unknown;
3
- //# sourceMappingURL=map_contract_to_wire_shape.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"map_contract_to_wire_shape.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/contract/map_contract_to_wire_shape.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AAGzE,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,oBAAoB,GAAG,OAAO,CAUlF"}
@@ -1,45 +0,0 @@
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
- if (typeof item.attributes.w === 'number') {
42
- return { ...item.attributes, x: item.x, y: item.z, z: item.y };
43
- }
44
- return { ...item.attributes, x: item.x, y: item.y, z: item.z };
45
- }
@@ -1,2 +0,0 @@
1
- export declare function map_cargo_state_to_contract(value: unknown): unknown;
2
- //# sourceMappingURL=map_wire_input_to_contract_shape.d.ts.map
@@ -1 +0,0 @@
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":"AAWA,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAiBnE"}
@@ -1,61 +0,0 @@
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 { uniquify_contract_item_ids } from './uniquify_contract_item_ids.js';
4
- import { is_record, omit_keys, pick_keys, rename_keys } from './wire_mapper_record_utils.js';
5
- const CONTAINER_CONTRACT_KEYS = ['sequence', 'width', 'height', 'length'];
6
- const ENV_CONTRACT_KEYS = ['axles'];
7
- export function map_cargo_state_to_contract(value) {
8
- if (!is_record(value)) {
9
- return value;
10
- }
11
- const mapped = {};
12
- if (value.config !== undefined) {
13
- mapped.config = value.config;
14
- }
15
- if (Array.isArray(value.envs)) {
16
- mapped.envs = value.envs.map(map_env_to_contract);
17
- }
18
- return mapped;
19
- }
20
- function map_env_to_contract(value) {
21
- if (!is_record(value)) {
22
- return value;
23
- }
24
- const mapped = rename_keys(value, ENV_WIRE_TO_CONTRACT);
25
- if (Array.isArray(value.containers)) {
26
- mapped.containers = value.containers.map(map_container_to_contract);
27
- }
28
- return pick_env_contract_keys(mapped);
29
- }
30
- function map_container_to_contract(value) {
31
- if (!is_record(value)) {
32
- return value;
33
- }
34
- const mapped = rename_keys(value, CONTAINER_WIRE_TO_CONTRACT);
35
- if (Array.isArray(value.items)) {
36
- mapped.items = uniquify_contract_item_ids(value.items.map(map_wire_item_to_contract));
37
- }
38
- return pick_container_contract_keys(mapped);
39
- }
40
- function pick_container_contract_keys(source) {
41
- const picked = pick_keys(source, CONTAINER_CONTRACT_KEYS);
42
- if (Array.isArray(source.items)) {
43
- picked.items = source.items;
44
- }
45
- const attributes = omit_keys(source, [...CONTAINER_CONTRACT_KEYS, 'items']);
46
- if (Object.keys(attributes).length > 0) {
47
- picked.attributes = attributes;
48
- }
49
- return picked;
50
- }
51
- function pick_env_contract_keys(source) {
52
- const picked = pick_keys(source, ENV_CONTRACT_KEYS);
53
- if (Array.isArray(source.containers)) {
54
- picked.containers = source.containers;
55
- }
56
- const vehicle = omit_keys(source, [...ENV_CONTRACT_KEYS, 'containers']);
57
- if (Object.keys(vehicle).length > 0) {
58
- picked.vehicle = vehicle;
59
- }
60
- return picked;
61
- }
@@ -1,12 +0,0 @@
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
@@ -1 +0,0 @@
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,57 +0,0 @@
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 = read_contract_position(source);
26
- for (const [contract_key, wire_keys] of Object.entries(ITEM_CONTRACT_WIRE_KEYS)) {
27
- const value = read_first_present(source, wire_keys);
28
- if (value !== undefined) {
29
- contract[contract_key] = normalize_contract_field(contract_key, value);
30
- }
31
- }
32
- return contract;
33
- }
34
- /**
35
- * BWA `to_json` stores length on `y` and height on `z`. Candidate geometry
36
- * uses the opposite (y = height, z = length), so CM wire items are swapped.
37
- * @param source - Wire or English item record.
38
- * @returns Contract x/y/z.
39
- */
40
- function read_contract_position(source) {
41
- if (typeof source.w === 'number') {
42
- return { x: source.x, y: source.z, z: source.y };
43
- }
44
- return { x: source.x, y: source.y, z: source.z };
45
- }
46
- /**
47
- * Coerces blocks-wall numeric group ids to the string contract type.
48
- * @param contract_key - English contract field name.
49
- * @param value - Wire value.
50
- * @returns String group id when a finite number was provided; otherwise the value.
51
- */
52
- function normalize_contract_field(contract_key, value) {
53
- if (contract_key === 'group_id' && typeof value === 'number' && Number.isFinite(value)) {
54
- return String(value);
55
- }
56
- return value;
57
- }