@jetta/cargo-stabilizer 0.1.0-15 → 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 (270) hide show
  1. package/CHANGELOG.md +1 -35
  2. package/README.md +16 -62
  3. package/build/core/adapters/axle_adapter.d.ts +4 -5
  4. package/build/core/adapters/axle_adapter.d.ts.map +1 -1
  5. package/build/core/adapters/axle_adapter.js +23 -6
  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 -40
  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 +10 -13
  28. package/build/core/evaluation/state_evaluator.d.ts.map +1 -1
  29. package/build/core/evaluation/state_evaluator.js +15 -19
  30. package/build/core/factory/read_stabilizer_config.d.ts +2 -5
  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 +1 -1
  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 +16 -15
  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/GeneticReorder.js +1 -2
  54. package/build/core/strategies/reorder/GravityCompaction.d.ts +1 -1
  55. package/build/core/strategies/reorder/GravityCompaction.d.ts.map +1 -1
  56. package/build/core/strategies/reorder/GravityCompaction.js +2 -2
  57. package/build/core/strategies/reorder/GreedyReorder.d.ts +1 -1
  58. package/build/core/strategies/reorder/GreedyReorder.d.ts.map +1 -1
  59. package/build/core/strategies/reorder/ReorderStrategy.d.ts +1 -3
  60. package/build/core/strategies/reorder/ReorderStrategy.d.ts.map +1 -1
  61. package/build/core/strategies/reorder/SimulatedAnnealingReorder.d.ts +1 -1
  62. package/build/core/strategies/reorder/SimulatedAnnealingReorder.d.ts.map +1 -1
  63. package/build/core/strategies/reorder/SimulatedAnnealingReorder.js +5 -14
  64. package/build/core/strategies/reorder/anneal_helpers.d.ts +1 -1
  65. package/build/core/strategies/reorder/anneal_helpers.d.ts.map +1 -1
  66. package/build/core/strategies/reorder/anneal_helpers.js +1 -1
  67. package/build/core/strategies/reorder/apply_if_gates_pass.d.ts +1 -1
  68. package/build/core/strategies/reorder/apply_if_gates_pass.d.ts.map +1 -1
  69. package/build/core/strategies/reorder/beam_context.d.ts +1 -2
  70. package/build/core/strategies/reorder/beam_context.d.ts.map +1 -1
  71. package/build/core/strategies/reorder/genetic/Chromosome.d.ts +1 -1
  72. package/build/core/strategies/reorder/genetic/Chromosome.d.ts.map +1 -1
  73. package/build/core/strategies/reorder/genetic/Chromosome.js +2 -2
  74. package/build/core/strategies/reorder/greedy_improvement.d.ts +1 -1
  75. package/build/core/strategies/reorder/greedy_improvement.d.ts.map +1 -1
  76. package/build/core/strategies/reorder/greedy_improvement.js +4 -5
  77. package/build/core/validation/parse_stabilizer_input.d.ts +8 -0
  78. package/build/core/validation/parse_stabilizer_input.d.ts.map +1 -0
  79. package/build/core/validation/parse_stabilizer_input.js +20 -0
  80. package/build/core/validation/schemas/stabilizer_config_schema.d.ts +2 -6
  81. package/build/core/validation/schemas/stabilizer_config_schema.d.ts.map +1 -1
  82. package/build/core/validation/schemas/stabilizer_config_schema.js +2 -6
  83. package/build/core/validation/schemas/stabilizer_input_schema.d.ts +110 -0
  84. package/build/core/validation/schemas/stabilizer_input_schema.d.ts.map +1 -0
  85. package/build/core/validation/schemas/stabilizer_input_schema.js +34 -0
  86. package/build/core/validation/schemas/stabilizer_output_schema.d.ts +13 -0
  87. package/build/core/validation/schemas/stabilizer_output_schema.d.ts.map +1 -0
  88. package/build/core/validation/schemas/stabilizer_output_schema.js +6 -0
  89. package/build/core/waypoint/build_waypoint_zones.d.ts +1 -1
  90. package/build/core/waypoint/build_waypoint_zones.d.ts.map +1 -1
  91. package/build/core/waypoint/build_waypoint_zones.js +2 -2
  92. package/build/core/waypoint/preserves_waypoint_order.d.ts +1 -1
  93. package/build/core/waypoint/preserves_waypoint_order.d.ts.map +1 -1
  94. package/build/core/waypoint/validate_waypoint_ids.d.ts +1 -1
  95. package/build/core/waypoint/validate_waypoint_ids.d.ts.map +1 -1
  96. package/build/index.d.ts +7 -15
  97. package/build/index.d.ts.map +1 -1
  98. package/build/index.js +11 -42
  99. package/package.json +10 -12
  100. package/build/core/adapters/axle_load_evaluation.d.ts +0 -8
  101. package/build/core/adapters/axle_load_evaluation.d.ts.map +0 -1
  102. package/build/core/adapters/axle_load_evaluation.js +0 -1
  103. package/build/core/adapters/build_axle_request.d.ts +0 -8
  104. package/build/core/adapters/build_axle_request.d.ts.map +0 -1
  105. package/build/core/adapters/build_axle_request.js +0 -67
  106. package/build/core/adapters/compute_axle_excess_kg.d.ts +0 -8
  107. package/build/core/adapters/compute_axle_excess_kg.d.ts.map +0 -1
  108. package/build/core/adapters/compute_axle_excess_kg.js +0 -19
  109. package/build/core/adapters/empty_space_adapter.d.ts +0 -10
  110. package/build/core/adapters/empty_space_adapter.d.ts.map +0 -1
  111. package/build/core/adapters/empty_space_adapter.js +0 -24
  112. package/build/core/adapters/evaluate_axle_load.d.ts +0 -10
  113. package/build/core/adapters/evaluate_axle_load.d.ts.map +0 -1
  114. package/build/core/adapters/evaluate_axle_load.js +0 -32
  115. package/build/core/adapters/map_item_to_positioned_cube.d.ts +0 -9
  116. package/build/core/adapters/map_item_to_positioned_cube.d.ts.map +0 -1
  117. package/build/core/adapters/map_item_to_positioned_cube.js +0 -16
  118. package/build/core/adapters/map_item_to_stacking_item.d.ts +0 -14
  119. package/build/core/adapters/map_item_to_stacking_item.d.ts.map +0 -1
  120. package/build/core/adapters/map_item_to_stacking_item.js +0 -40
  121. package/build/core/adapters/run_axle_calculator.d.ts +0 -16
  122. package/build/core/adapters/run_axle_calculator.d.ts.map +0 -1
  123. package/build/core/adapters/run_axle_calculator.js +0 -37
  124. package/build/core/candidates/collect_container_slots.d.ts +0 -16
  125. package/build/core/candidates/collect_container_slots.d.ts.map +0 -1
  126. package/build/core/candidates/collect_container_slots.js +0 -20
  127. package/build/core/candidates/enumerate_empty_space_slots.d.ts +0 -15
  128. package/build/core/candidates/enumerate_empty_space_slots.d.ts.map +0 -1
  129. package/build/core/candidates/enumerate_empty_space_slots.js +0 -44
  130. package/build/core/candidates/enumerate_supporter_top_slots.d.ts +0 -11
  131. package/build/core/candidates/enumerate_supporter_top_slots.d.ts.map +0 -1
  132. package/build/core/candidates/enumerate_supporter_top_slots.js +0 -36
  133. package/build/core/candidates/is_candidate_stacking_valid.d.ts +0 -14
  134. package/build/core/candidates/is_candidate_stacking_valid.d.ts.map +0 -1
  135. package/build/core/candidates/is_candidate_stacking_valid.js +0 -43
  136. package/build/core/candidates/is_elevated_on_supporter_origin.d.ts +0 -14
  137. package/build/core/candidates/is_elevated_on_supporter_origin.d.ts.map +0 -1
  138. package/build/core/candidates/is_elevated_on_supporter_origin.js +0 -28
  139. package/build/core/constants/TieRatioOrientation.d.ts +0 -6
  140. package/build/core/constants/TieRatioOrientation.d.ts.map +0 -1
  141. package/build/core/constants/TieRatioOrientation.js +0 -5
  142. package/build/core/evaluation/compare_search_states.d.ts +0 -12
  143. package/build/core/evaluation/compare_search_states.d.ts.map +0 -1
  144. package/build/core/evaluation/compare_search_states.js +0 -12
  145. package/build/core/evaluation/compute_reorder_objective.d.ts +0 -13
  146. package/build/core/evaluation/compute_reorder_objective.d.ts.map +0 -1
  147. package/build/core/evaluation/compute_reorder_objective.js +0 -13
  148. package/build/core/evaluation/evaluate_search_gates.d.ts +0 -18
  149. package/build/core/evaluation/evaluate_search_gates.d.ts.map +0 -1
  150. package/build/core/evaluation/evaluate_search_gates.js +0 -30
  151. package/build/core/evaluation/evaluation_result.d.ts +0 -15
  152. package/build/core/evaluation/evaluation_result.d.ts.map +0 -1
  153. package/build/core/evaluation/evaluation_result.js +0 -1
  154. package/build/core/evaluation/genetic_fitness.d.ts +0 -9
  155. package/build/core/evaluation/genetic_fitness.d.ts.map +0 -1
  156. package/build/core/evaluation/genetic_fitness.js +0 -16
  157. package/build/core/evaluation/is_non_axle_gates_pass.d.ts +0 -8
  158. package/build/core/evaluation/is_non_axle_gates_pass.d.ts.map +0 -1
  159. package/build/core/evaluation/is_non_axle_gates_pass.js +0 -8
  160. package/build/core/evaluation/is_search_trial_admissible.d.ts +0 -10
  161. package/build/core/evaluation/is_search_trial_admissible.d.ts.map +0 -1
  162. package/build/core/evaluation/is_search_trial_admissible.js +0 -17
  163. package/build/core/evaluation/is_waypoint_order_valid.d.ts +0 -10
  164. package/build/core/evaluation/is_waypoint_order_valid.d.ts.map +0 -1
  165. package/build/core/evaluation/is_waypoint_order_valid.js +0 -14
  166. package/build/core/exceptions/AxleCalculationError.d.ts +0 -4
  167. package/build/core/exceptions/AxleCalculationError.d.ts.map +0 -1
  168. package/build/core/exceptions/AxleCalculationError.js +0 -6
  169. package/build/core/exceptions/InvalidStabilizerOutputError.d.ts +0 -4
  170. package/build/core/exceptions/InvalidStabilizerOutputError.d.ts.map +0 -1
  171. package/build/core/exceptions/InvalidStabilizerOutputError.js +0 -6
  172. package/build/core/factory/read_stabilizer_config_helpers.d.ts +0 -32
  173. package/build/core/factory/read_stabilizer_config_helpers.d.ts.map +0 -1
  174. package/build/core/factory/read_stabilizer_config_helpers.js +0 -73
  175. package/build/core/filters/collect_movable_items.d.ts +0 -18
  176. package/build/core/filters/collect_movable_items.d.ts.map +0 -1
  177. package/build/core/filters/collect_movable_items.js +0 -53
  178. package/build/core/filters/collect_pinned_floor_tie_ratio_group_ids.d.ts +0 -8
  179. package/build/core/filters/collect_pinned_floor_tie_ratio_group_ids.d.ts.map +0 -1
  180. package/build/core/filters/collect_pinned_floor_tie_ratio_group_ids.js +0 -41
  181. package/build/core/filters/is_item_on_cm_floor.d.ts +0 -8
  182. package/build/core/filters/is_item_on_cm_floor.d.ts.map +0 -1
  183. package/build/core/filters/is_item_on_cm_floor.js +0 -9
  184. package/build/core/geometry/has_penetrating_overlap.d.ts +0 -9
  185. package/build/core/geometry/has_penetrating_overlap.d.ts.map +0 -1
  186. package/build/core/geometry/has_penetrating_overlap.js +0 -27
  187. package/build/core/orchestration/build_milkrun_bands_from_config.d.ts +0 -13
  188. package/build/core/orchestration/build_milkrun_bands_from_config.d.ts.map +0 -1
  189. package/build/core/orchestration/build_milkrun_bands_from_config.js +0 -14
  190. package/build/core/orchestration/read_primary_env.d.ts +0 -9
  191. package/build/core/orchestration/read_primary_env.d.ts.map +0 -1
  192. package/build/core/orchestration/read_primary_env.js +0 -13
  193. package/build/core/strategies/reorder/append_admitted_trial.d.ts +0 -11
  194. package/build/core/strategies/reorder/append_admitted_trial.d.ts.map +0 -1
  195. package/build/core/strategies/reorder/append_admitted_trial.js +0 -22
  196. package/build/core/strategies/reorder/is_improving_greedy_trial.d.ts +0 -10
  197. package/build/core/strategies/reorder/is_improving_greedy_trial.d.ts.map +0 -1
  198. package/build/core/strategies/reorder/is_improving_greedy_trial.js +0 -17
  199. package/build/core/strategies/reorder/select_beam_expansion_candidates.d.ts +0 -9
  200. package/build/core/strategies/reorder/select_beam_expansion_candidates.d.ts.map +0 -1
  201. package/build/core/strategies/reorder/select_beam_expansion_candidates.js +0 -28
  202. package/build/core/strategies/reorder/select_surviving_beam.d.ts +0 -11
  203. package/build/core/strategies/reorder/select_surviving_beam.d.ts.map +0 -1
  204. package/build/core/strategies/reorder/select_surviving_beam.js +0 -13
  205. package/build/core/validation/contract/cargo_movement_wire_field_map.d.ts +0 -71
  206. package/build/core/validation/contract/cargo_movement_wire_field_map.d.ts.map +0 -1
  207. package/build/core/validation/contract/cargo_movement_wire_field_map.js +0 -77
  208. package/build/core/validation/contract/cargo_movement_wire_mapper.d.ts +0 -14
  209. package/build/core/validation/contract/cargo_movement_wire_mapper.d.ts.map +0 -1
  210. package/build/core/validation/contract/cargo_movement_wire_mapper.js +0 -43
  211. package/build/core/validation/contract/format_zod_error.d.ts +0 -8
  212. package/build/core/validation/contract/format_zod_error.d.ts.map +0 -1
  213. package/build/core/validation/contract/format_zod_error.js +0 -11
  214. package/build/core/validation/contract/index.d.ts +0 -9
  215. package/build/core/validation/contract/index.d.ts.map +0 -1
  216. package/build/core/validation/contract/index.js +0 -8
  217. package/build/core/validation/contract/map_contract_to_wire_shape.d.ts +0 -3
  218. package/build/core/validation/contract/map_contract_to_wire_shape.d.ts.map +0 -1
  219. package/build/core/validation/contract/map_contract_to_wire_shape.js +0 -33
  220. package/build/core/validation/contract/map_input_config.d.ts +0 -9
  221. package/build/core/validation/contract/map_input_config.d.ts.map +0 -1
  222. package/build/core/validation/contract/map_input_config.js +0 -40
  223. package/build/core/validation/contract/map_wire_input_to_contract_shape.d.ts +0 -2
  224. package/build/core/validation/contract/map_wire_input_to_contract_shape.d.ts.map +0 -1
  225. package/build/core/validation/contract/map_wire_input_to_contract_shape.js +0 -66
  226. package/build/core/validation/contract/map_wire_item_stacking.d.ts +0 -7
  227. package/build/core/validation/contract/map_wire_item_stacking.d.ts.map +0 -1
  228. package/build/core/validation/contract/map_wire_item_stacking.js +0 -40
  229. package/build/core/validation/contract/map_wire_item_to_contract.d.ts +0 -8
  230. package/build/core/validation/contract/map_wire_item_to_contract.d.ts.map +0 -1
  231. package/build/core/validation/contract/map_wire_item_to_contract.js +0 -51
  232. package/build/core/validation/contract/parse_stabilizer_input.d.ts +0 -90
  233. package/build/core/validation/contract/parse_stabilizer_input.d.ts.map +0 -1
  234. package/build/core/validation/contract/parse_stabilizer_input.js +0 -28
  235. package/build/core/validation/contract/parse_stabilizer_output.d.ts +0 -79
  236. package/build/core/validation/contract/parse_stabilizer_output.d.ts.map +0 -1
  237. package/build/core/validation/contract/parse_stabilizer_output.js +0 -24
  238. package/build/core/validation/contract/reject_forbidden_input_fields.d.ts +0 -6
  239. package/build/core/validation/contract/reject_forbidden_input_fields.d.ts.map +0 -1
  240. package/build/core/validation/contract/reject_forbidden_input_fields.js +0 -53
  241. package/build/core/validation/contract/stabilizer_domain_schema.d.ts +0 -72
  242. package/build/core/validation/contract/stabilizer_domain_schema.d.ts.map +0 -1
  243. package/build/core/validation/contract/stabilizer_domain_schema.js +0 -42
  244. package/build/core/validation/contract/stabilizer_env_schema.d.ts +0 -112
  245. package/build/core/validation/contract/stabilizer_env_schema.d.ts.map +0 -1
  246. package/build/core/validation/contract/stabilizer_env_schema.js +0 -38
  247. package/build/core/validation/contract/stabilizer_input_schema.d.ts +0 -80
  248. package/build/core/validation/contract/stabilizer_input_schema.d.ts.map +0 -1
  249. package/build/core/validation/contract/stabilizer_input_schema.js +0 -11
  250. package/build/core/validation/contract/stabilizer_item_schema.d.ts +0 -25
  251. package/build/core/validation/contract/stabilizer_item_schema.d.ts.map +0 -1
  252. package/build/core/validation/contract/stabilizer_item_schema.js +0 -23
  253. package/build/core/validation/contract/stabilizer_output_schema.d.ts +0 -134
  254. package/build/core/validation/contract/stabilizer_output_schema.d.ts.map +0 -1
  255. package/build/core/validation/contract/stabilizer_output_schema.js +0 -16
  256. package/build/core/validation/contract/uniquify_contract_item_ids.d.ts +0 -14
  257. package/build/core/validation/contract/uniquify_contract_item_ids.d.ts.map +0 -1
  258. package/build/core/validation/contract/uniquify_contract_item_ids.js +0 -54
  259. package/build/core/validation/contract/wire_mapper_record_utils.d.ts +0 -34
  260. package/build/core/validation/contract/wire_mapper_record_utils.d.ts.map +0 -1
  261. package/build/core/validation/contract/wire_mapper_record_utils.js +0 -66
  262. package/build/core/waypoint/milkrun_wall_reservation.d.ts +0 -24
  263. package/build/core/waypoint/milkrun_wall_reservation.d.ts.map +0 -1
  264. package/build/core/waypoint/milkrun_wall_reservation.js +0 -57
  265. package/build/core/waypoint/milkrun_wall_reservation_helpers.d.ts +0 -15
  266. package/build/core/waypoint/milkrun_wall_reservation_helpers.d.ts.map +0 -1
  267. package/build/core/waypoint/milkrun_wall_reservation_helpers.js +0 -48
  268. package/build/core/waypoint/milkrun_wall_reservation_types.d.ts +0 -16
  269. package/build/core/waypoint/milkrun_wall_reservation_types.d.ts.map +0 -1
  270. package/build/core/waypoint/milkrun_wall_reservation_types.js +0 -1
@@ -1,36 +0,0 @@
1
- const CONTAINER_EPSILON = 1e-6;
2
- /**
3
- * Emits one candidate origin per supporter footprint (x, supporter top y, z).
4
- * @param container - Target container layout.
5
- * @param item - Loose item dimensions.
6
- * @param exclude_item_id - Loose item id omitted as a supporter.
7
- * @returns Slot positions aligned to each supporter origin.
8
- */
9
- export function enumerate_supporter_top_slots(container, item, exclude_item_id) {
10
- const slots = [];
11
- for (const supporter of container.items) {
12
- if (supporter.item_id === exclude_item_id) {
13
- continue;
14
- }
15
- const slot = supporter_top_slot(supporter);
16
- if (slot_fits_in_container(container, item, slot)) {
17
- slots.push(slot);
18
- }
19
- }
20
- return slots;
21
- }
22
- function supporter_top_slot(supporter) {
23
- return {
24
- x: supporter.x,
25
- y: supporter.y + supporter.height,
26
- z: supporter.z
27
- };
28
- }
29
- function slot_fits_in_container(container, item, slot) {
30
- return slot.x >= -CONTAINER_EPSILON &&
31
- slot.y >= -CONTAINER_EPSILON &&
32
- slot.z >= -CONTAINER_EPSILON &&
33
- slot.x + item.width <= container.width + CONTAINER_EPSILON &&
34
- slot.y + item.height <= container.height + CONTAINER_EPSILON &&
35
- slot.z + item.depth <= container.length + CONTAINER_EPSILON;
36
- }
@@ -1,14 +0,0 @@
1
- import type { CandidateGenerationContext } from './candidate_context.js';
2
- /**
3
- * Returns true when placing the loose item at position keeps stacking legal.
4
- * @param context - Candidate generation context.
5
- * @param target_index - Target container index.
6
- * @param position - Candidate pose.
7
- * @returns True when stacking-constraints accepts the pose.
8
- */
9
- export declare function is_candidate_stacking_valid(context: CandidateGenerationContext, target_index: number, position: {
10
- x: number;
11
- y: number;
12
- z: number;
13
- }): boolean;
14
- //# sourceMappingURL=is_candidate_stacking_valid.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"is_candidate_stacking_valid.d.ts","sourceRoot":"","sources":["../../../src/core/candidates/is_candidate_stacking_valid.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAA;AAIxE;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACvC,OAAO,EAAE,0BAA0B,EACnC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9C,OAAO,CAcT"}
@@ -1,43 +0,0 @@
1
- import { StackingFeasibilityChecker } from '@jetta/stacking-constraints';
2
- import { map_item_to_stacking_item } from '../adapters/map_item_to_stacking_item.js';
3
- const Y_SUPPORT_EPSILON = 1e-6;
4
- /**
5
- * Returns true when placing the loose item at position keeps stacking legal.
6
- * @param context - Candidate generation context.
7
- * @param target_index - Target container index.
8
- * @param position - Candidate pose.
9
- * @returns True when stacking-constraints accepts the pose.
10
- */
11
- export function is_candidate_stacking_valid(context, target_index, position) {
12
- const remaining = context.containers[target_index].items
13
- .filter(item => item.item_id !== context.loose.item_id)
14
- .map(item => map_item_to_stacking_item(item));
15
- const mover = map_item_to_stacking_item(context.loose.item, position);
16
- try {
17
- return build_checker(remaining).clone().validate_stackings(mover);
18
- }
19
- catch {
20
- return false;
21
- }
22
- }
23
- function build_checker(remaining) {
24
- if (remaining.length === 0) {
25
- return new StackingFeasibilityChecker(1, { y_support_epsilon: Y_SUPPORT_EPSILON });
26
- }
27
- try {
28
- return StackingFeasibilityChecker.from_allocated(remaining, {
29
- y_support_epsilon: Y_SUPPORT_EPSILON
30
- });
31
- }
32
- catch {
33
- return hydrate_bottom_up(remaining);
34
- }
35
- }
36
- function hydrate_bottom_up(remaining) {
37
- const checker = new StackingFeasibilityChecker(1, { y_support_epsilon: Y_SUPPORT_EPSILON });
38
- const ordered = [...remaining].sort((left, right) => left.y - right.y);
39
- for (const item of ordered) {
40
- checker.validate_stackings(item);
41
- }
42
- return checker;
43
- }
@@ -1,14 +0,0 @@
1
- import type { CandidateGenerationContext } from './candidate_context.js';
2
- /**
3
- * Floor candidates stay free; elevated ones must copy a supporter (x, z) origin.
4
- * @param context - Candidate generation context.
5
- * @param target_index - Target container index.
6
- * @param position - Candidate position.
7
- * @returns True when the candidate is on the floor or on a supporter origin.
8
- */
9
- export declare function is_elevated_on_supporter_origin(context: CandidateGenerationContext, target_index: number, position: {
10
- x: number;
11
- y: number;
12
- z: number;
13
- }): boolean;
14
- //# sourceMappingURL=is_elevated_on_supporter_origin.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"is_elevated_on_supporter_origin.d.ts","sourceRoot":"","sources":["../../../src/core/candidates/is_elevated_on_supporter_origin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAA;AAIxE;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC3C,OAAO,EAAE,0BAA0B,EACnC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9C,OAAO,CAQT"}
@@ -1,28 +0,0 @@
1
- const ORIGIN_EPSILON = 1e-6;
2
- /**
3
- * Floor candidates stay free; elevated ones must copy a supporter (x, z) origin.
4
- * @param context - Candidate generation context.
5
- * @param target_index - Target container index.
6
- * @param position - Candidate position.
7
- * @returns True when the candidate is on the floor or on a supporter origin.
8
- */
9
- export function is_elevated_on_supporter_origin(context, target_index, position) {
10
- if (position.y <= ORIGIN_EPSILON) {
11
- return true;
12
- }
13
- const items = context.containers[target_index].items;
14
- return items.some(item => matches_supporter_origin(item, context.loose.item_id, position));
15
- }
16
- function matches_supporter_origin(item, exclude_item_id, position) {
17
- if (item.item_id === exclude_item_id) {
18
- return false;
19
- }
20
- return is_same_origin(item, position) && is_supporter_top(item, position.y);
21
- }
22
- function is_same_origin(item, position) {
23
- return Math.abs(item.x - position.x) <= ORIGIN_EPSILON
24
- && Math.abs(item.z - position.z) <= ORIGIN_EPSILON;
25
- }
26
- function is_supporter_top(item, candidate_y) {
27
- return Math.abs(item.y + item.height - candidate_y) <= ORIGIN_EPSILON;
28
- }
@@ -1,6 +0,0 @@
1
- export declare const TIE_RATIO_ORIENTATION: Readonly<{
2
- THREE_TWO: "3_2";
3
- TWO_THREE: "2_3";
4
- }>;
5
- export declare const TIE_RATIO_ORIENTATION_VALUES: readonly ("3_2" | "2_3")[];
6
- //# sourceMappingURL=TieRatioOrientation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TieRatioOrientation.d.ts","sourceRoot":"","sources":["../../../src/core/constants/TieRatioOrientation.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB;;;EAGhC,CAAA;AAEF,eAAO,MAAM,4BAA4B,4BAExC,CAAA"}
@@ -1,5 +0,0 @@
1
- export const TIE_RATIO_ORIENTATION = Object.freeze({
2
- THREE_TWO: '3_2',
3
- TWO_THREE: '2_3'
4
- });
5
- export const TIE_RATIO_ORIENTATION_VALUES = Object.freeze(Object.values(TIE_RATIO_ORIENTATION));
@@ -1,12 +0,0 @@
1
- export interface SearchRankFields {
2
- axle_excess_kg: number;
3
- objective: number;
4
- }
5
- /**
6
- * Ranks search states: lower axle excess first, then higher stability objective.
7
- * @param left - Left state.
8
- * @param right - Right state.
9
- * @returns Negative when left ranks ahead of right.
10
- */
11
- export declare function compare_search_states(left: SearchRankFields, right: SearchRankFields): number;
12
- //# sourceMappingURL=compare_search_states.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compare_search_states.d.ts","sourceRoot":"","sources":["../../../src/core/evaluation/compare_search_states.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAE7B,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAO7F"}
@@ -1,12 +0,0 @@
1
- /**
2
- * Ranks search states: lower axle excess first, then higher stability objective.
3
- * @param left - Left state.
4
- * @param right - Right state.
5
- * @returns Negative when left ranks ahead of right.
6
- */
7
- export function compare_search_states(left, right) {
8
- if (left.axle_excess_kg !== right.axle_excess_kg) {
9
- return left.axle_excess_kg - right.axle_excess_kg;
10
- }
11
- return right.objective - left.objective;
12
- }
@@ -1,13 +0,0 @@
1
- import { type StabilityEvaluation } from '../adapters/stability_adapter.js';
2
- import type { StabilizerContainer } from '../validation/contract/stabilizer_domain_schema.js';
3
- import type { LooseItemRef } from '../filters/loose_item_filter.js';
4
- export declare const LOOSE_SUM_TIE_BREAK_SCALE = 0.000001;
5
- /**
6
- * Computes the reorder objective: maximize transport stability, then loose-item sum.
7
- * @param stability - Transport stability evaluation.
8
- * @param containers - Container layout used for loose-item index lookup.
9
- * @param loose_items - Loose items included in the tie-break term.
10
- * @returns Scalar objective; higher is better.
11
- */
12
- export declare function compute_reorder_objective(stability: StabilityEvaluation, containers: StabilizerContainer[], loose_items: LooseItemRef[]): number;
13
- //# sourceMappingURL=compute_reorder_objective.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compute_reorder_objective.d.ts","sourceRoot":"","sources":["../../../src/core/evaluation/compute_reorder_objective.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,KAAK,mBAAmB,EAC3B,MAAM,kCAAkC,CAAA;AACzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oDAAoD,CAAA;AAC7F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAEnE,eAAO,MAAM,yBAAyB,WAAO,CAAA;AAE7C;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACrC,SAAS,EAAE,mBAAmB,EAC9B,UAAU,EAAE,mBAAmB,EAAE,EACjC,WAAW,EAAE,YAAY,EAAE,GAC5B,MAAM,CAIR"}
@@ -1,13 +0,0 @@
1
- import { sum_loose_item_scores } from '../adapters/stability_adapter.js';
2
- export const LOOSE_SUM_TIE_BREAK_SCALE = 1e-6;
3
- /**
4
- * Computes the reorder objective: maximize transport stability, then loose-item sum.
5
- * @param stability - Transport stability evaluation.
6
- * @param containers - Container layout used for loose-item index lookup.
7
- * @param loose_items - Loose items included in the tie-break term.
8
- * @returns Scalar objective; higher is better.
9
- */
10
- export function compute_reorder_objective(stability, containers, loose_items) {
11
- const loose_sum = sum_loose_item_scores(stability, containers, loose_items);
12
- return stability.transport_score + loose_sum * LOOSE_SUM_TIE_BREAK_SCALE;
13
- }
@@ -1,18 +0,0 @@
1
- import type { StabilizerContainer } from '../validation/contract/stabilizer_domain_schema.js';
2
- import type { StabilityEvaluation } from '../adapters/stability_adapter.js';
3
- import type { StateEvaluationContext } from './evaluation_context.js';
4
- import type { EvaluationResult } from './evaluation_result.js';
5
- export interface SearchGateOutcome {
6
- objective: number;
7
- pass: boolean;
8
- flags: Omit<EvaluationResult, 'stability' | 'objective' | 'all_gates_pass'>;
9
- }
10
- /**
11
- * Computes reorder objective and legality flags for a layout.
12
- * @param containers - Container layout.
13
- * @param context - Evaluation context.
14
- * @param stability - Transport stability evaluation.
15
- * @returns Objective, pass flag, and gate fields.
16
- */
17
- export declare function evaluate_search_gates(containers: StabilizerContainer[], context: StateEvaluationContext, stability: StabilityEvaluation): SearchGateOutcome;
18
- //# sourceMappingURL=evaluate_search_gates.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"evaluate_search_gates.d.ts","sourceRoot":"","sources":["../../../src/core/evaluation/evaluate_search_gates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oDAAoD,CAAA;AAC7F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAC3E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAM9D,MAAM,WAAW,iBAAiB;IAE9B,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,WAAW,GAAG,WAAW,GAAG,gBAAgB,CAAC,CAAA;CAC9E;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACjC,UAAU,EAAE,mBAAmB,EAAE,EACjC,OAAO,EAAE,sBAAsB,EAC/B,SAAS,EAAE,mBAAmB,GAC/B,iBAAiB,CAanB"}
@@ -1,30 +0,0 @@
1
- import { compute_reorder_objective } from './compute_reorder_objective.js';
2
- import { evaluate_axle_load } from '../adapters/evaluate_axle_load.js';
3
- import { is_layout_milkrun_valid } from '../waypoint/milkrun_wall_reservation.js';
4
- import { is_waypoint_order_valid } from './is_waypoint_order_valid.js';
5
- /**
6
- * Computes reorder objective and legality flags for a layout.
7
- * @param containers - Container layout.
8
- * @param context - Evaluation context.
9
- * @param stability - Transport stability evaluation.
10
- * @returns Objective, pass flag, and gate fields.
11
- */
12
- export function evaluate_search_gates(containers, context, stability) {
13
- const objective = compute_reorder_objective(stability, containers, context.loose_items);
14
- const axle_load = evaluate_axle_load({ ...context.env, containers }, context.config.axle_load_margin_percent);
15
- const flags = build_gate_flags({ containers, context, stability, axle_load });
16
- return {
17
- objective,
18
- pass: flags.transport_floor_valid && flags.axle_valid && flags.waypoint_valid && flags.milkrun_valid,
19
- flags
20
- };
21
- }
22
- function build_gate_flags(input) {
23
- return {
24
- transport_floor_valid: input.stability.transport_score >= input.context.config.transport_stability_floor,
25
- axle_valid: input.axle_load.valid,
26
- waypoint_valid: is_waypoint_order_valid(input.containers, input.context),
27
- milkrun_valid: is_layout_milkrun_valid(input.containers, input.context.milkrun_reserved_z_bands),
28
- axle_excess_kg: input.axle_load.excess_kg
29
- };
30
- }
@@ -1,15 +0,0 @@
1
- import type { StabilityEvaluation } from '../adapters/stability_adapter.js';
2
- /**
3
- * Outcome of evaluating a layout against stabilizer gates.
4
- */
5
- export interface EvaluationResult {
6
- stability: StabilityEvaluation;
7
- objective: number;
8
- transport_floor_valid: boolean;
9
- axle_valid: boolean;
10
- waypoint_valid: boolean;
11
- milkrun_valid: boolean;
12
- all_gates_pass: boolean;
13
- axle_excess_kg: number;
14
- }
15
- //# sourceMappingURL=evaluation_result.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"evaluation_result.d.ts","sourceRoot":"","sources":["../../../src/core/evaluation/evaluation_result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAE3E;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAE7B,SAAS,EAAE,mBAAmB,CAAA;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,qBAAqB,EAAE,OAAO,CAAA;IAC9B,UAAU,EAAE,OAAO,CAAA;IACnB,cAAc,EAAE,OAAO,CAAA;IACvB,aAAa,EAAE,OAAO,CAAA;IACtB,cAAc,EAAE,OAAO,CAAA;IACvB,cAAc,EAAE,MAAM,CAAA;CACzB"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,9 +0,0 @@
1
- import type { EvaluationResult } from './evaluation_result.js';
2
- export declare const LEGAL_FITNESS_OFFSET = 1000000;
3
- /**
4
- * Scores a genetic organism: legal layouts outrank every illegal one.
5
- * @param evaluation - Layout evaluation.
6
- * @returns Fitness; higher is better.
7
- */
8
- export declare function genetic_fitness(evaluation: EvaluationResult): number;
9
- //# sourceMappingURL=genetic_fitness.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"genetic_fitness.d.ts","sourceRoot":"","sources":["../../../src/core/evaluation/genetic_fitness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAG9D,eAAO,MAAM,oBAAoB,UAAY,CAAA;AAE7C;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,gBAAgB,GAAG,MAAM,CAWpE"}
@@ -1,16 +0,0 @@
1
- import { is_non_axle_gates_pass } from './is_non_axle_gates_pass.js';
2
- export const LEGAL_FITNESS_OFFSET = 1_000_000;
3
- /**
4
- * Scores a genetic organism: legal layouts outrank every illegal one.
5
- * @param evaluation - Layout evaluation.
6
- * @returns Fitness; higher is better.
7
- */
8
- export function genetic_fitness(evaluation) {
9
- if (!is_non_axle_gates_pass(evaluation)) {
10
- return Number.NEGATIVE_INFINITY;
11
- }
12
- if (evaluation.axle_valid) {
13
- return LEGAL_FITNESS_OFFSET + evaluation.objective;
14
- }
15
- return -evaluation.axle_excess_kg;
16
- }
@@ -1,8 +0,0 @@
1
- import type { EvaluationResult } from './evaluation_result.js';
2
- /**
3
- * Returns true when waypoint, milkrun, and transport-floor gates pass.
4
- * @param result - Evaluation result.
5
- * @returns True when non-axle gates all pass.
6
- */
7
- export declare function is_non_axle_gates_pass(result: EvaluationResult): boolean;
8
- //# sourceMappingURL=is_non_axle_gates_pass.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"is_non_axle_gates_pass.d.ts","sourceRoot":"","sources":["../../../src/core/evaluation/is_non_axle_gates_pass.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAE9D;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAGxE"}
@@ -1,8 +0,0 @@
1
- /**
2
- * Returns true when waypoint, milkrun, and transport-floor gates pass.
3
- * @param result - Evaluation result.
4
- * @returns True when non-axle gates all pass.
5
- */
6
- export function is_non_axle_gates_pass(result) {
7
- return result.transport_floor_valid && result.waypoint_valid && result.milkrun_valid;
8
- }
@@ -1,10 +0,0 @@
1
- import type { EvaluationResult } from './evaluation_result.js';
2
- /**
3
- * Decides whether a one-item trial may enter the search.
4
- * Over parents may climb with strictly less axle excess; legal parents keep a hard axle gate.
5
- * @param parent - Parent layout evaluation.
6
- * @param child - Trial layout evaluation.
7
- * @returns True when the trial is admissible.
8
- */
9
- export declare function is_search_trial_admissible(parent: EvaluationResult, child: EvaluationResult): boolean;
10
- //# sourceMappingURL=is_search_trial_admissible.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"is_search_trial_admissible.d.ts","sourceRoot":"","sources":["../../../src/core/evaluation/is_search_trial_admissible.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAG9D;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACtC,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,gBAAgB,GACxB,OAAO,CAWT"}
@@ -1,17 +0,0 @@
1
- import { is_non_axle_gates_pass } from './is_non_axle_gates_pass.js';
2
- /**
3
- * Decides whether a one-item trial may enter the search.
4
- * Over parents may climb with strictly less axle excess; legal parents keep a hard axle gate.
5
- * @param parent - Parent layout evaluation.
6
- * @param child - Trial layout evaluation.
7
- * @returns True when the trial is admissible.
8
- */
9
- export function is_search_trial_admissible(parent, child) {
10
- if (!is_non_axle_gates_pass(child)) {
11
- return false;
12
- }
13
- if (parent.axle_valid) {
14
- return child.axle_valid;
15
- }
16
- return child.axle_excess_kg < parent.axle_excess_kg;
17
- }
@@ -1,10 +0,0 @@
1
- import type { StabilizerContainer } from '../validation/contract/stabilizer_domain_schema.js';
2
- import type { StateEvaluationContext } from './evaluation_context.js';
3
- /**
4
- * Returns true when waypoint order is satisfied for the layout.
5
- * @param containers - Container layout.
6
- * @param context - Evaluation context.
7
- * @returns True when waypoint mode is single or order is preserved.
8
- */
9
- export declare function is_waypoint_order_valid(containers: StabilizerContainer[], context: StateEvaluationContext): boolean;
10
- //# sourceMappingURL=is_waypoint_order_valid.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"is_waypoint_order_valid.d.ts","sourceRoot":"","sources":["../../../src/core/evaluation/is_waypoint_order_valid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oDAAoD,CAAA;AAC7F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAGrE;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACnC,UAAU,EAAE,mBAAmB,EAAE,EACjC,OAAO,EAAE,sBAAsB,GAChC,OAAO,CAeT"}
@@ -1,14 +0,0 @@
1
- import { preserves_waypoint_order } from '../waypoint/preserves_waypoint_order.js';
2
- /**
3
- * Returns true when waypoint order is satisfied for the layout.
4
- * @param containers - Container layout.
5
- * @param context - Evaluation context.
6
- * @returns True when waypoint mode is single or order is preserved.
7
- */
8
- export function is_waypoint_order_valid(containers, context) {
9
- if (context.waypoint_mode.kind === 'SINGLE_WAYPOINT' ||
10
- !context.config.preserve_tie_block_organization) {
11
- return true;
12
- }
13
- return preserves_waypoint_order(context.baseline_containers, containers, context.waypoint_mode);
14
- }
@@ -1,4 +0,0 @@
1
- export declare class AxleCalculationError extends Error {
2
- constructor(reason: string);
3
- }
4
- //# sourceMappingURL=AxleCalculationError.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AxleCalculationError.d.ts","sourceRoot":"","sources":["../../../src/core/exceptions/AxleCalculationError.ts"],"names":[],"mappings":"AAAA,qBAAa,oBAAqB,SAAQ,KAAK;gBAE/B,MAAM,EAAE,MAAM;CAK7B"}
@@ -1,6 +0,0 @@
1
- export class AxleCalculationError extends Error {
2
- constructor(reason) {
3
- super('Axle load calculation failed: ' + reason);
4
- this.name = 'AxleCalculationError';
5
- }
6
- }
@@ -1,4 +0,0 @@
1
- export declare class InvalidStabilizerOutputError extends Error {
2
- constructor(message: string);
3
- }
4
- //# sourceMappingURL=InvalidStabilizerOutputError.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InvalidStabilizerOutputError.d.ts","sourceRoot":"","sources":["../../../src/core/exceptions/InvalidStabilizerOutputError.ts"],"names":[],"mappings":"AAAA,qBAAa,4BAA6B,SAAQ,KAAK;gBAEvC,OAAO,EAAE,MAAM;CAK9B"}
@@ -1,6 +0,0 @@
1
- export class InvalidStabilizerOutputError extends Error {
2
- constructor(message) {
3
- super(message);
4
- this.name = 'InvalidStabilizerOutputError';
5
- }
6
- }
@@ -1,32 +0,0 @@
1
- type CargoStateConfigHolder = {
2
- config?: unknown;
3
- };
4
- /**
5
- * Merges root and cargo profile algoritmo maps (profile overrides root).
6
- * @param config - Root stabilizer input config.
7
- * @param cargo_state - Cargo profile state.
8
- * @returns Merged algoritmo map.
9
- */
10
- export declare function merge_algoritmo_maps(config: Record<string, unknown> | undefined, cargo_state?: CargoStateConfigHolder): Record<string, unknown>;
11
- /**
12
- * Reads raw stabilizer config fields from merged algoritmo map.
13
- * @param algoritmo - Merged algoritmo configuration map.
14
- * @returns Raw config object for schema parsing.
15
- */
16
- export declare function read_raw_stabilizer_config(algoritmo: Record<string, unknown>): {
17
- preserve_tie_block_organization: boolean;
18
- pin_tie_ratio_blocks: boolean;
19
- enforce_milkrun_wall_reservation: boolean;
20
- number_of_wall_to_allocate_from_last_waypoints: number;
21
- reorder_strategy: string;
22
- transport_stability_floor: number;
23
- max_iteration: number;
24
- genetic_population: number;
25
- genetic_generations: number;
26
- genetic_mutation_rate: number;
27
- beam_width: number;
28
- beam_top_k: number;
29
- axle_load_margin_percent: number;
30
- };
31
- export {};
32
- //# sourceMappingURL=read_stabilizer_config_helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"read_stabilizer_config_helpers.d.ts","sourceRoot":"","sources":["../../../src/core/factory/read_stabilizer_config_helpers.ts"],"names":[],"mappings":"AAGA,KAAK,sBAAsB,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAKlD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC3C,WAAW,CAAC,EAAE,sBAAsB,GACrC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;;;EAM5E"}
@@ -1,73 +0,0 @@
1
- import { REORDER_STRATEGY } from '../constants/ReorderStrategy.js';
2
- const CONFIG_PREFIX = 'cargo_stabilizer.';
3
- const MILKRUN_WALL_COUNT_KEY = 'number_of_wall_to_allocate_from_last_waypoints';
4
- /**
5
- * Merges root and cargo profile algoritmo maps (profile overrides root).
6
- * @param config - Root stabilizer input config.
7
- * @param cargo_state - Cargo profile state.
8
- * @returns Merged algoritmo map.
9
- */
10
- export function merge_algoritmo_maps(config, cargo_state) {
11
- const root_algoritmo = (config?.algoritmo ?? config ?? {});
12
- const profile_config = cargo_state?.config;
13
- const profile_algoritmo = (profile_config?.algoritmo ?? {});
14
- return { ...root_algoritmo, ...profile_algoritmo };
15
- }
16
- /**
17
- * Reads raw stabilizer config fields from merged algoritmo map.
18
- * @param algoritmo - Merged algoritmo configuration map.
19
- * @returns Raw config object for schema parsing.
20
- */
21
- export function read_raw_stabilizer_config(algoritmo) {
22
- return {
23
- ...read_search_raw(algoritmo),
24
- ...read_organization_raw(algoritmo)
25
- };
26
- }
27
- function read_search_raw(algoritmo) {
28
- return {
29
- reorder_strategy: read_config_string(algoritmo, 'reorder_strategy', REORDER_STRATEGY.GRAVITY),
30
- transport_stability_floor: read_config_number(algoritmo, 'transport_stability_floor', 0),
31
- max_iteration: read_config_number(algoritmo, 'max_iteration', 10),
32
- genetic_population: read_config_number(algoritmo, 'genetic_population', 30),
33
- genetic_generations: read_config_number(algoritmo, 'genetic_generations', 50),
34
- genetic_mutation_rate: read_config_number(algoritmo, 'genetic_mutation_rate', 0.15),
35
- beam_width: read_config_number(algoritmo, 'beam_width', 5),
36
- beam_top_k: read_config_number(algoritmo, 'beam_top_k', 3),
37
- axle_load_margin_percent: read_config_number(algoritmo, 'folga_de_peso_nos_eixos', 0)
38
- };
39
- }
40
- function read_organization_raw(algoritmo) {
41
- return {
42
- preserve_tie_block_organization: read_config_boolean(algoritmo, 'preserve_tie_block_organization', true),
43
- pin_tie_ratio_blocks: read_config_boolean(algoritmo, 'pin_tie_ratio_blocks', false),
44
- enforce_milkrun_wall_reservation: read_config_boolean(algoritmo, 'enforce_milkrun_wall_reservation', false),
45
- number_of_wall_to_allocate_from_last_waypoints: read_milkrun_wall_count(algoritmo)
46
- };
47
- }
48
- function read_config_string(algoritmo, key, default_value) {
49
- const full_key = CONFIG_PREFIX + key;
50
- const value = algoritmo[full_key] ?? algoritmo[key];
51
- return typeof value === 'string' ? value : default_value;
52
- }
53
- function read_config_number(algoritmo, key, default_value) {
54
- const full_key = CONFIG_PREFIX + key;
55
- const value = algoritmo[full_key] ?? algoritmo[key];
56
- return typeof value === 'number' ? value : default_value;
57
- }
58
- function read_config_boolean(algoritmo, key, default_value) {
59
- const full_key = CONFIG_PREFIX + key;
60
- const value = algoritmo[full_key] ?? algoritmo[key];
61
- return typeof value === 'boolean' ? value : default_value;
62
- }
63
- function read_milkrun_wall_count(algoritmo) {
64
- const value = algoritmo[MILKRUN_WALL_COUNT_KEY];
65
- if (typeof value === 'number' && Number.isFinite(value)) {
66
- return Math.max(0, Math.trunc(value));
67
- }
68
- if (typeof value === 'string') {
69
- const parsed = Number.parseInt(value, 10);
70
- return Number.isFinite(parsed) ? Math.max(0, parsed) : 0;
71
- }
72
- return 0;
73
- }
@@ -1,18 +0,0 @@
1
- import type { StabilizerItem } from '../validation/contract/stabilizer_domain_schema.js';
2
- import type { LooseItemRef } from './loose_item_filter.js';
3
- /**
4
- * Collects items the stabilizer may move.
5
- * @param containers - Container list from env.
6
- * @param pin_tie_ratio_blocks - When true, skip floor five-slot 3_2/2_3 walls.
7
- * @returns Movable item references with container index.
8
- */
9
- export declare function collect_movable_items(containers: {
10
- items: StabilizerItem[];
11
- }[], pin_tie_ratio_blocks: boolean): LooseItemRef[];
12
- /**
13
- * @param item - Item record.
14
- * @param pinned_group_ids - Floor five-slot 3_2/2_3 group ids.
15
- * @returns True when the item is a floor member of a pinned wall.
16
- */
17
- export declare function is_tie_ratio_block_item(item: StabilizerItem, pinned_group_ids: Set<string>): boolean;
18
- //# sourceMappingURL=collect_movable_items.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"collect_movable_items.d.ts","sourceRoot":"","sources":["../../../src/core/filters/collect_movable_items.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAA;AACxF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAI1D;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACjC,UAAU,EAAE;IAAE,KAAK,EAAE,cAAc,EAAE,CAAA;CAAE,EAAE,EACzC,oBAAoB,EAAE,OAAO,GAC9B,YAAY,EAAE,CAMhB;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACnC,IAAI,EAAE,cAAc,EACpB,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,GAC9B,OAAO,CAOT"}