@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,4 +1,4 @@
1
- import type { StabilizerContainer } from '../validation/contract/stabilizer_domain_schema.js';
1
+ import type { StabilizerContainer } from '../validation/schemas/stabilizer_input_schema.js';
2
2
  import { type StabilityEvaluation } from '../adapters/stability_adapter.js';
3
3
  import type { StateEvaluationContext } from './evaluation_context.js';
4
4
  import type { ReorderContext } from '../strategies/reorder/ReorderStrategy.js';
@@ -8,7 +8,6 @@ export interface EvaluationResult {
8
8
  transport_floor_valid: boolean;
9
9
  axle_valid: boolean;
10
10
  waypoint_valid: boolean;
11
- milkrun_valid: boolean;
12
11
  all_gates_pass: boolean;
13
12
  }
14
13
  /**
@@ -37,14 +36,4 @@ export declare function evaluation_context_from_reorder(context: ReorderContext)
37
36
  * @returns Deep clone.
38
37
  */
39
38
  export declare function clone_baseline(containers: StabilizerContainer[]): StabilizerContainer[];
40
- /**
41
- * Evaluates organization constraint gates without stability or axle checks.
42
- * @param containers - Container layout to evaluate.
43
- * @param context - Evaluation context.
44
- * @returns Waypoint and milkrun gate flags.
45
- */
46
- export declare function evaluate_organization_gates(containers: StabilizerContainer[], context: StateEvaluationContext): {
47
- waypoint_valid: boolean;
48
- milkrun_valid: boolean;
49
- };
50
39
  //# sourceMappingURL=state_evaluator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"state_evaluator.d.ts","sourceRoot":"","sources":["../../../src/core/evaluation/state_evaluator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oDAAoD,CAAA;AAC7F,OAAO,EAEH,KAAK,mBAAmB,EAC3B,MAAM,kCAAkC,CAAA;AAMzC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAA;AAE9E,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;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC1B,UAAU,EAAE,mBAAmB,EAAE,EACjC,OAAO,EAAE,sBAAsB,GAChC,gBAAgB,CAUlB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACjC,KAAK,EAAE,mBAAmB,EAAE,EAC5B,OAAO,EAAE,sBAAsB,GAChC,gBAAgB,CAGlB;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,cAAc,GAAG,sBAAsB,CAU/F;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,EAAE,CAGvF;AAwBD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACvC,UAAU,EAAE,mBAAmB,EAAE,EACjC,OAAO,EAAE,sBAAsB,GAChC;IAAE,cAAc,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,OAAO,CAAA;CAAE,CAMrD"}
1
+ {"version":3,"file":"state_evaluator.d.ts","sourceRoot":"","sources":["../../../src/core/evaluation/state_evaluator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAA;AAC3F,OAAO,EAGH,KAAK,mBAAmB,EAC3B,MAAM,kCAAkC,CAAA;AAIzC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAA;AAE9E,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,cAAc,EAAE,OAAO,CAAA;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC1B,UAAU,EAAE,mBAAmB,EAAE,EACjC,OAAO,EAAE,sBAAsB,GAChC,gBAAgB,CAUlB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACjC,KAAK,EAAE,mBAAmB,EAAE,EAC5B,OAAO,EAAE,sBAAsB,GAChC,gBAAgB,CAGlB;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,cAAc,GAAG,sBAAsB,CAS/F;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,EAAE,CAGvF"}
@@ -1,8 +1,6 @@
1
- import { try_evaluate_transport_stability } from '../adapters/stability_adapter.js';
2
- import { compute_reorder_objective } from './compute_reorder_objective.js';
1
+ import { try_evaluate_transport_stability, sum_loose_item_scores } from '../adapters/stability_adapter.js';
3
2
  import { is_axle_load_valid } from '../adapters/axle_adapter.js';
4
3
  import { preserves_waypoint_order } from '../waypoint/preserves_waypoint_order.js';
5
- import { is_layout_milkrun_valid } from '../waypoint/milkrun_wall_reservation.js';
6
4
  import { clone_containers } from '../move/apply_move.js';
7
5
  /**
8
6
  * Evaluates a container layout against all stabilizer gates.
@@ -38,8 +36,7 @@ export function evaluation_context_from_reorder(context) {
38
36
  loose_items: context.loose_items,
39
37
  config: context.config,
40
38
  waypoint_mode: context.waypoint_mode,
41
- baseline_containers: context.baseline_containers,
42
- milkrun_reserved_z_bands: context.milkrun_reserved_z_bands
39
+ baseline_containers: context.baseline_containers
43
40
  };
44
41
  }
45
42
  /**
@@ -51,37 +48,17 @@ export function clone_baseline(containers) {
51
48
  return clone_containers(containers);
52
49
  }
53
50
  function evaluate_gates(containers, context, stability) {
54
- const objective = compute_reorder_objective(stability, containers, context.loose_items);
51
+ const objective = sum_loose_item_scores(stability, containers, context.loose_items);
55
52
  const transport_floor_valid = stability.transport_score >= context.config.transport_stability_floor;
56
- const axle_valid = is_axle_load_valid({ ...context.env, containers }, context.config.axle_load_margin_percent);
57
- const waypoint_valid = is_waypoint_order_valid(containers, context);
58
- const milkrun_valid = is_layout_milkrun_valid(containers, context.milkrun_reserved_z_bands);
59
- const flags = { transport_floor_valid, axle_valid, waypoint_valid, milkrun_valid };
53
+ const axle_valid = is_axle_load_valid({ ...context.env, containers }, context.config.folga_de_peso_nos_eixos);
54
+ const waypoint_valid = preserves_waypoint_order(context.baseline_containers, containers, context.waypoint_mode);
55
+ const flags = { transport_floor_valid, axle_valid, waypoint_valid };
60
56
  return {
61
57
  objective,
62
- pass: transport_floor_valid && axle_valid && waypoint_valid && milkrun_valid,
58
+ pass: transport_floor_valid && axle_valid && waypoint_valid,
63
59
  flags
64
60
  };
65
61
  }
66
- /**
67
- * Evaluates organization constraint gates without stability or axle checks.
68
- * @param containers - Container layout to evaluate.
69
- * @param context - Evaluation context.
70
- * @returns Waypoint and milkrun gate flags.
71
- */
72
- export function evaluate_organization_gates(containers, context) {
73
- return {
74
- waypoint_valid: is_waypoint_order_valid(containers, context),
75
- milkrun_valid: is_layout_milkrun_valid(containers, context.milkrun_reserved_z_bands)
76
- };
77
- }
78
- function is_waypoint_order_valid(containers, context) {
79
- if (context.waypoint_mode.kind === 'SINGLE_WAYPOINT' ||
80
- !context.config.preserve_tie_block_organization) {
81
- return true;
82
- }
83
- return preserves_waypoint_order(context.baseline_containers, containers, context.waypoint_mode);
84
- }
85
62
  function invalid_evaluation_result() {
86
63
  return {
87
64
  stability: { item_scores: [], container_scores: [], transport_score: 0 },
@@ -89,7 +66,6 @@ function invalid_evaluation_result() {
89
66
  transport_floor_valid: false,
90
67
  axle_valid: false,
91
68
  waypoint_valid: false,
92
- milkrun_valid: false,
93
69
  all_gates_pass: false
94
70
  };
95
71
  }
@@ -1,10 +1,8 @@
1
1
  import { type StabilizerConfig } from '../validation/schemas/stabilizer_config_schema.js';
2
- import type { StabilizerCargoState } from '../validation/contract/stabilizer_domain_schema.js';
3
2
  /**
4
- * Reads stabilizer config from cargo-movement config and cargo profile algoritmo maps.
3
+ * Reads stabilizer config from cargo-movement config.algoritmo map.
5
4
  * @param config - Top-level stabilizer input config object.
6
- * @param cargo_state - Cargo profile (optional) for merged algoritmo keys.
7
5
  * @returns Parsed stabilizer configuration.
8
6
  */
9
- export declare function read_stabilizer_config(config: Record<string, unknown> | undefined, cargo_state?: StabilizerCargoState): StabilizerConfig;
7
+ export declare function read_stabilizer_config(config: Record<string, unknown> | undefined): StabilizerConfig;
10
8
  //# sourceMappingURL=read_stabilizer_config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"read_stabilizer_config.d.ts","sourceRoot":"","sources":["../../../src/core/factory/read_stabilizer_config.ts"],"names":[],"mappings":"AAKA,OAAO,EAEH,KAAK,gBAAgB,EACxB,MAAM,mDAAmD,CAAA;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oDAAoD,CAAA;AAG9F;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC3C,WAAW,CAAC,EAAE,oBAAoB,GACnC,gBAAgB,CAYlB"}
1
+ {"version":3,"file":"read_stabilizer_config.d.ts","sourceRoot":"","sources":["../../../src/core/factory/read_stabilizer_config.ts"],"names":[],"mappings":"AAKA,OAAO,EAEH,KAAK,gBAAgB,EACxB,MAAM,mDAAmD,CAAA;AAI1D;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,gBAAgB,CAuBpG"}
@@ -1,16 +1,25 @@
1
1
  import { REORDER_STRATEGY } from '../constants/ReorderStrategy.js';
2
2
  import { UnknownReorderStrategyError } from '../exceptions/UnknownReorderStrategyError.js';
3
3
  import { stabilizer_config_schema } from '../validation/schemas/stabilizer_config_schema.js';
4
- import { merge_algoritmo_maps, read_raw_stabilizer_config } from './read_stabilizer_config_helpers.js';
4
+ const CONFIG_PREFIX = 'cargo_stabilizer.';
5
5
  /**
6
- * Reads stabilizer config from cargo-movement config and cargo profile algoritmo maps.
6
+ * Reads stabilizer config from cargo-movement config.algoritmo map.
7
7
  * @param config - Top-level stabilizer input config object.
8
- * @param cargo_state - Cargo profile (optional) for merged algoritmo keys.
9
8
  * @returns Parsed stabilizer configuration.
10
9
  */
11
- export function read_stabilizer_config(config, cargo_state) {
12
- const algoritmo = merge_algoritmo_maps(config, cargo_state);
13
- const raw = read_raw_stabilizer_config(algoritmo);
10
+ export function read_stabilizer_config(config) {
11
+ const algoritmo = (config?.algoritmo ?? config ?? {});
12
+ const raw = {
13
+ reorder_strategy: read_config_string(algoritmo, 'reorder_strategy', REORDER_STRATEGY.GRAVITY),
14
+ transport_stability_floor: read_config_number(algoritmo, 'transport_stability_floor', 0),
15
+ max_iteration: read_config_number(algoritmo, 'max_iteration', 10),
16
+ genetic_population: read_config_number(algoritmo, 'genetic_population', 30),
17
+ genetic_generations: read_config_number(algoritmo, 'genetic_generations', 50),
18
+ genetic_mutation_rate: read_config_number(algoritmo, 'genetic_mutation_rate', 0.15),
19
+ beam_width: read_config_number(algoritmo, 'beam_width', 5),
20
+ beam_top_k: read_config_number(algoritmo, 'beam_top_k', 3),
21
+ folga_de_peso_nos_eixos: read_config_number(algoritmo, 'folga_de_peso_nos_eixos', 0)
22
+ };
14
23
  const parsed = stabilizer_config_schema.safeParse(raw);
15
24
  if (!parsed.success) {
16
25
  throw new UnknownReorderStrategyError(String(raw.reorder_strategy));
@@ -18,6 +27,16 @@ export function read_stabilizer_config(config, cargo_state) {
18
27
  assert_known_strategy(parsed.data.reorder_strategy);
19
28
  return parsed.data;
20
29
  }
30
+ function read_config_string(algoritmo, key, default_value) {
31
+ const full_key = CONFIG_PREFIX + key;
32
+ const value = algoritmo[full_key] ?? algoritmo[key];
33
+ return typeof value === 'string' ? value : default_value;
34
+ }
35
+ function read_config_number(algoritmo, key, default_value) {
36
+ const full_key = CONFIG_PREFIX + key;
37
+ const value = algoritmo[full_key] ?? algoritmo[key];
38
+ return typeof value === 'number' ? value : default_value;
39
+ }
21
40
  function assert_known_strategy(strategy) {
22
41
  const values = Object.values(REORDER_STRATEGY);
23
42
  if (!values.includes(strategy)) {
@@ -1,4 +1,4 @@
1
- import type { StabilizerItem } from '../validation/contract/stabilizer_domain_schema.js';
1
+ import type { StabilizerItem } from '../validation/schemas/stabilizer_input_schema.js';
2
2
  export interface LooseItemRef {
3
3
  item_id: string;
4
4
  container_index: number;
@@ -6,7 +6,7 @@ export interface LooseItemRef {
6
6
  }
7
7
  /**
8
8
  * @param item - Item record from cargo_state.
9
- * @returns True when item is loose (no group_id).
9
+ * @returns True when item is loose (no groupId).
10
10
  */
11
11
  export declare function is_loose_item(item: StabilizerItem): boolean;
12
12
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"loose_item_filter.d.ts","sourceRoot":"","sources":["../../../src/core/filters/loose_item_filter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAA;AAExF,MAAM,WAAW,YAAY;IAEzB,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,cAAc,CAAA;CACvB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAG3D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAC/B,UAAU,EAAE;IAAE,KAAK,EAAE,cAAc,EAAE,CAAA;CAAE,EAAE,GAC1C,YAAY,EAAE,CAqBhB"}
1
+ {"version":3,"file":"loose_item_filter.d.ts","sourceRoot":"","sources":["../../../src/core/filters/loose_item_filter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kDAAkD,CAAA;AAEtF,MAAM,WAAW,YAAY;IAEzB,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,cAAc,CAAA;CACvB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAG3D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAC/B,UAAU,EAAE;IAAE,KAAK,EAAE,cAAc,EAAE,CAAA;CAAE,EAAE,GAC1C,YAAY,EAAE,CAqBhB"}
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * @param item - Item record from cargo_state.
3
- * @returns True when item is loose (no group_id).
3
+ * @returns True when item is loose (no groupId).
4
4
  */
5
5
  export function is_loose_item(item) {
6
- return item.group_id === null || item.group_id === undefined;
6
+ return item.groupId === null || item.groupId === undefined;
7
7
  }
8
8
  /**
9
9
  * Collects loose items across all containers in one env.
@@ -18,7 +18,7 @@ export function collect_loose_items(containers) {
18
18
  continue;
19
19
  }
20
20
  loose_items.push({
21
- item_id: item.item_id,
21
+ item_id: item._id,
22
22
  container_index,
23
23
  item
24
24
  });
@@ -1,4 +1,4 @@
1
- import type { StabilizerItem } from '../validation/contract/stabilizer_domain_schema.js';
1
+ import type { StabilizerItem } from '../validation/schemas/stabilizer_input_schema.js';
2
2
  export interface AxisAlignedBox {
3
3
  x: number;
4
4
  y: number;
@@ -29,20 +29,4 @@ export declare function has_overlap(candidate: AxisAlignedBox, others: AxisAlign
29
29
  * @returns True when candidate rests on container floor.
30
30
  */
31
31
  export declare function is_on_floor(candidate: AxisAlignedBox): boolean;
32
- /**
33
- * @param candidate - Candidate placement box.
34
- * @param container - Container dimensions.
35
- * @returns True when candidate fits inside container bounds.
36
- */
37
- export declare function is_inside_container(candidate: AxisAlignedBox, container: {
38
- width: number;
39
- height: number;
40
- length: number;
41
- }): boolean;
42
- /**
43
- * @param candidate - Candidate placement box.
44
- * @param supporters - Existing item boxes (excluding candidate).
45
- * @returns True when bottom face is on floor or supporter tops.
46
- */
47
- export declare function is_fully_supported(candidate: AxisAlignedBox, supporters: AxisAlignedBox[]): boolean;
48
32
  //# sourceMappingURL=box_geometry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"box_geometry.d.ts","sourceRoot":"","sources":["../../../src/core/geometry/box_geometry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAA;AAExF,MAAM,WAAW,cAAc;IAE3B,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACZ;AAID;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc,CAUhE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAMlF;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAGxF;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAG9D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAC/B,SAAS,EAAE,cAAc,EACzB,SAAS,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC7D,OAAO,CAeT;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,OAAO,CAUnG"}
1
+ {"version":3,"file":"box_geometry.d.ts","sourceRoot":"","sources":["../../../src/core/geometry/box_geometry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kDAAkD,CAAA;AAEtF,MAAM,WAAW,cAAc;IAE3B,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACZ;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc,CAGhE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAMlF;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAGxF;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAG9D"}
@@ -1,17 +1,9 @@
1
- const GEOMETRY_EPSILON = 1e-6;
2
1
  /**
3
2
  * @param item - Cargo item with position and dimensions.
4
3
  * @returns Axis-aligned bounding box.
5
4
  */
6
5
  export function item_to_box(item) {
7
- return {
8
- x: item.x,
9
- y: item.y,
10
- z: item.z,
11
- w: item.width,
12
- h: item.height,
13
- d: item.depth
14
- };
6
+ return { x: item.x, y: item.y, z: item.z, w: item.w, h: item.h, d: item.d };
15
7
  }
16
8
  /**
17
9
  * @param left - First box.
@@ -37,62 +29,5 @@ export function has_overlap(candidate, others) {
37
29
  * @returns True when candidate rests on container floor.
38
30
  */
39
31
  export function is_on_floor(candidate) {
40
- return candidate.y <= GEOMETRY_EPSILON;
41
- }
42
- /**
43
- * @param candidate - Candidate placement box.
44
- * @param container - Container dimensions.
45
- * @returns True when candidate fits inside container bounds.
46
- */
47
- export function is_inside_container(candidate, container) {
48
- if (candidate.x < -GEOMETRY_EPSILON || candidate.y < -GEOMETRY_EPSILON || candidate.z < -GEOMETRY_EPSILON) {
49
- return false;
50
- }
51
- if (candidate.x + candidate.w > container.width + GEOMETRY_EPSILON) {
52
- return false;
53
- }
54
- if (candidate.y + candidate.h > container.height + GEOMETRY_EPSILON) {
55
- return false;
56
- }
57
- return candidate.z + candidate.d <= container.length + GEOMETRY_EPSILON;
58
- }
59
- /**
60
- * @param candidate - Candidate placement box.
61
- * @param supporters - Existing item boxes (excluding candidate).
62
- * @returns True when bottom face is on floor or supporter tops.
63
- */
64
- export function is_fully_supported(candidate, supporters) {
65
- if (is_on_floor(candidate)) {
66
- return true;
67
- }
68
- return sample_bottom_support_points(candidate).every(point => is_support_point_supported(point, supporters));
69
- }
70
- function sample_bottom_support_points(candidate) {
71
- const { x, y, z, w, d } = candidate;
72
- const mid_x = x + w / 2;
73
- const mid_z = z + d / 2;
74
- return [
75
- { x, y, z },
76
- { x: x + w, y, z },
77
- { x, y, z: z + d },
78
- { x: x + w, y, z: z + d },
79
- { x: mid_x, y, z: mid_z }
80
- ];
81
- }
82
- function is_support_point_supported(point, supporters) {
83
- if (point.y <= GEOMETRY_EPSILON) {
84
- return true;
85
- }
86
- return supporters.some(supporter => is_point_on_supporter_top(point, supporter));
87
- }
88
- function is_point_on_supporter_top(point, supporter) {
89
- const top_y = supporter.y + supporter.h;
90
- if (Math.abs(point.y - top_y) > GEOMETRY_EPSILON) {
91
- return false;
92
- }
93
- const within_x = point.x >= supporter.x - GEOMETRY_EPSILON &&
94
- point.x <= supporter.x + supporter.w + GEOMETRY_EPSILON;
95
- const within_z = point.z >= supporter.z - GEOMETRY_EPSILON &&
96
- point.z <= supporter.z + supporter.d + GEOMETRY_EPSILON;
97
- return within_x && within_z;
32
+ return candidate.y <= 1e-6;
98
33
  }
@@ -1,5 +1,4 @@
1
- import type { StabilizerContainer } from '../validation/contract/stabilizer_domain_schema.js';
2
- export type CandidateSlotKind = 'empty_space' | 'supporter_top';
1
+ import type { StabilizerContainer } from '../validation/schemas/stabilizer_input_schema.js';
3
2
  export interface MoveCandidate {
4
3
  item_id: string;
5
4
  source_container_index: number;
@@ -9,7 +8,6 @@ export interface MoveCandidate {
9
8
  y: number;
10
9
  z: number;
11
10
  };
12
- slot_kind?: CandidateSlotKind;
13
11
  }
14
12
  /**
15
13
  * Applies a move candidate to containers (mutates arrays in place).
@@ -1 +1 @@
1
- {"version":3,"file":"apply_move.d.ts","sourceRoot":"","sources":["../../../src/core/move/apply_move.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oDAAoD,CAAA;AAE7F,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,eAAe,CAAA;AAE/D,MAAM,WAAW,aAAa;IAE1B,OAAO,EAAE,MAAM,CAAA;IACf,sBAAsB,EAAE,MAAM,CAAA;IAC9B,sBAAsB,EAAE,MAAM,CAAA;IAC9B,YAAY,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACjD,SAAS,CAAC,EAAE,iBAAiB,CAAA;CAChC;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACtB,UAAU,EAAE,mBAAmB,EAAE,EACjC,SAAS,EAAE,aAAa,GACzB,IAAI,CAgBN;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,EAAE,CAGzF"}
1
+ {"version":3,"file":"apply_move.d.ts","sourceRoot":"","sources":["../../../src/core/move/apply_move.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAA;AAE3F,MAAM,WAAW,aAAa;IAE1B,OAAO,EAAE,MAAM,CAAA;IACf,sBAAsB,EAAE,MAAM,CAAA;IAC9B,sBAAsB,EAAE,MAAM,CAAA;IAC9B,YAAY,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACpD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACtB,UAAU,EAAE,mBAAmB,EAAE,EACjC,SAAS,EAAE,aAAa,GACzB,IAAI,CAgBN;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,EAAE,CAGzF"}
@@ -5,7 +5,7 @@
5
5
  */
6
6
  export function apply_move(containers, candidate) {
7
7
  const source = containers[candidate.source_container_index];
8
- const item_index = source.items.findIndex(item => item.item_id === candidate.item_id);
8
+ const item_index = source.items.findIndex(item => item._id === candidate.item_id);
9
9
  if (item_index < 0) {
10
10
  return;
11
11
  }
@@ -1,5 +1,4 @@
1
- import type { StabilizerInput } from '../validation/contract/stabilizer_input_schema.js';
2
- import type { StabilizerCargoState } from '../validation/contract/stabilizer_domain_schema.js';
1
+ import type { StabilizerInput, StabilizerCargoState } from '../validation/schemas/stabilizer_input_schema.js';
3
2
  /**
4
3
  * Runs stabilizer flow on validated input.
5
4
  * @param input - Raw stabilizer input.
@@ -1 +1 @@
1
- {"version":3,"file":"StabilizerFlow.d.ts","sourceRoot":"","sources":["../../../src/core/orchestration/StabilizerFlow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mDAAmD,CAAA;AACxF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oDAAoD,CAAA;AAO9F;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG,oBAAoB,CAiBhF;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,UAAU,EAAE,OAAO,GAAG,oBAAoB,CAI1F"}
1
+ {"version":3,"file":"StabilizerFlow.d.ts","sourceRoot":"","sources":["../../../src/core/orchestration/StabilizerFlow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAA;AAO7G;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG,oBAAoB,CAchF;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,UAAU,EAAE,OAAO,GAAG,oBAAoB,CAI1F"}
@@ -1,4 +1,4 @@
1
- import { parse_stabilizer_input } from '../validation/contract/parse_stabilizer_input.js';
1
+ import { parse_stabilizer_input } from '../validation/parse_stabilizer_input.js';
2
2
  import { read_stabilizer_config } from '../factory/read_stabilizer_config.js';
3
3
  import { create_reorder_strategy } from '../factory/strategy_factory.js';
4
4
  import { build_reorder_context } from './build_reorder_context.js';
@@ -9,7 +9,7 @@ import { stabilizer_logger } from '../logging/stabilizer_logger.js';
9
9
  * @returns Updated cargo_state.
10
10
  */
11
11
  export function run_stabilizer_flow(input) {
12
- const config = read_stabilizer_config(input.config, input.cargo_state);
12
+ const config = read_stabilizer_config(input.config);
13
13
  const context = build_reorder_context(input, config);
14
14
  stabilizer_logger.debug('reorder_strategy=' + config.reorder_strategy);
15
15
  stabilizer_logger.debug('container_count=' + context.containers.length +
@@ -1,4 +1,4 @@
1
- import type { StabilizerInput } from '../validation/contract/stabilizer_input_schema.js';
1
+ import type { StabilizerInput } from '../validation/schemas/stabilizer_input_schema.js';
2
2
  import type { StabilizerConfig } from '../validation/schemas/stabilizer_config_schema.js';
3
3
  import type { ReorderContext } from '../strategies/reorder/ReorderStrategy.js';
4
4
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"build_reorder_context.d.ts","sourceRoot":"","sources":["../../../src/core/orchestration/build_reorder_context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mDAAmD,CAAA;AACxF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mDAAmD,CAAA;AACzF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAA;AAQ9E;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACjC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,gBAAgB,GACzB,cAAc,CAqBhB"}
1
+ {"version":3,"file":"build_reorder_context.d.ts","sourceRoot":"","sources":["../../../src/core/orchestration/build_reorder_context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kDAAkD,CAAA;AACvF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mDAAmD,CAAA;AACzF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAA;AAO9E;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACjC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,gBAAgB,GACzB,cAAc,CAqBhB"}
@@ -1,9 +1,8 @@
1
- import { collect_movable_items } from '../filters/collect_movable_items.js';
1
+ import { collect_loose_items } from '../filters/loose_item_filter.js';
2
2
  import { validate_waypoint_ids } from '../waypoint/validate_waypoint_ids.js';
3
3
  import { build_waypoint_zones } from '../waypoint/build_waypoint_zones.js';
4
- import { build_milkrun_bands_from_config } from './build_milkrun_bands_from_config.js';
5
- import { read_primary_env } from './read_primary_env.js';
6
4
  import { clone_containers } from '../move/apply_move.js';
5
+ import { InvalidStabilizerInputError } from '../exceptions/InvalidStabilizerInputError.js';
7
6
  /**
8
7
  * Builds reorder context from validated stabilizer input.
9
8
  * @param input - Validated stabilizer input.
@@ -11,17 +10,20 @@ import { clone_containers } from '../move/apply_move.js';
11
10
  * @returns Reorder context for strategy execution.
12
11
  */
13
12
  export function build_reorder_context(input, config) {
14
- const env = read_primary_env(input);
15
- const waypoint_mode = validate_waypoint_ids(env.containers.flatMap(container => container.items));
16
- const baseline_containers = clone_containers(env.containers);
13
+ const env = input.cargo_state.envs[0];
14
+ if (!env) {
15
+ throw new InvalidStabilizerInputError('cargo_state.envs must contain at least one env');
16
+ }
17
+ const all_items = env.containers.flatMap(container => container.items);
18
+ const waypoint_mode = validate_waypoint_ids(all_items);
19
+ const loose_items = collect_loose_items(env.containers);
17
20
  return {
18
21
  env,
19
22
  containers: env.containers,
20
- baseline_containers,
21
- loose_items: collect_movable_items(env.containers, config.pin_tie_ratio_blocks),
23
+ baseline_containers: clone_containers(env.containers),
24
+ loose_items,
22
25
  config,
23
26
  waypoint_mode,
24
- waypoint_zones: build_waypoint_zones(baseline_containers, waypoint_mode),
25
- milkrun_reserved_z_bands: build_milkrun_bands_from_config(baseline_containers, waypoint_mode, config)
27
+ waypoint_zones: build_waypoint_zones(env.containers, waypoint_mode)
26
28
  };
27
29
  }
@@ -1,5 +1,5 @@
1
1
  import type { ReorderContext, ReorderStrategy } from './ReorderStrategy.js';
2
- import type { StabilizerContainer } from '../../validation/contract/stabilizer_domain_schema.js';
2
+ import type { StabilizerContainer } from '../../validation/schemas/stabilizer_input_schema.js';
3
3
  /**
4
4
  * Beam search reorder with configurable width and top-K expansion.
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"BeamSearchReorder.d.ts","sourceRoot":"","sources":["../../../../src/core/strategies/reorder/BeamSearchReorder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uDAAuD,CAAA;AAchG;;GAEG;AACH,qBAAa,iBAAkB,YAAW,eAAe;IAErD,GAAG,CAAC,OAAO,EAAE,cAAc,GAAG,mBAAmB,EAAE;CAkBtD"}
1
+ {"version":3,"file":"BeamSearchReorder.d.ts","sourceRoot":"","sources":["../../../../src/core/strategies/reorder/BeamSearchReorder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qDAAqD,CAAA;AAY9F;;GAEG;AACH,qBAAa,iBAAkB,YAAW,eAAe;IAErD,GAAG,CAAC,OAAO,EAAE,cAAc,GAAG,mBAAmB,EAAE;CAkBtD"}
@@ -1,10 +1,8 @@
1
1
  import { generate_candidates } from '../../candidates/candidate_generator.js';
2
2
  import { candidate_context_for_loose } from '../../candidates/build_candidate_context.js';
3
- import { select_beam_expansion_candidates } from './select_beam_expansion_candidates.js';
4
3
  import { apply_move, clone_containers } from '../../move/apply_move.js';
5
4
  import { evaluate_trial_layout, evaluation_context_from_reorder } from '../../evaluation/state_evaluator.js';
6
5
  import { read_item_score } from '../../adapters/stability_adapter.js';
7
- import { select_surviving_beam } from './select_surviving_beam.js';
8
6
  /**
9
7
  * Beam search reorder with configurable width and top-K expansion.
10
8
  */
@@ -35,12 +33,13 @@ function expand_beam(request) {
35
33
  loose: request.loose
36
34
  });
37
35
  }
38
- return select_surviving_beam(expanded, request.beam, request.reorder.config.beam_width);
36
+ expanded.sort((left, right) => right.objective - left.objective);
37
+ return expanded.slice(0, request.reorder.config.beam_width);
39
38
  }
40
39
  function append_beam_branches(beam_context) {
41
40
  const { reorder, evaluation, expanded, state, loose } = beam_context;
42
41
  const loose_ref = { ...loose, container_index: find_container_index(state.containers, loose.item_id) };
43
- const candidates = select_beam_expansion_candidates(generate_candidates(candidate_context_for_loose(reorder, state.containers, loose_ref)), reorder.config.beam_top_k);
42
+ const candidates = generate_candidates(candidate_context_for_loose(reorder, state.containers, loose_ref)).slice(0, reorder.config.beam_top_k);
44
43
  for (const candidate of candidates) {
45
44
  const trial = clone_containers(state.containers);
46
45
  apply_move(trial, candidate);
@@ -55,14 +54,14 @@ function sort_loose_by_stability(context, eval_context) {
55
54
  const evaluation = evaluate_trial_layout(context.containers, eval_context);
56
55
  return [...context.loose_items].sort((left, right) => {
57
56
  const left_index = context.containers[left.container_index].items
58
- .findIndex(item => item.item_id === left.item_id);
57
+ .findIndex(item => item._id === left.item_id);
59
58
  const right_index = context.containers[right.container_index].items
60
- .findIndex(item => item.item_id === right.item_id);
59
+ .findIndex(item => item._id === right.item_id);
61
60
  const left_score = read_item_score(evaluation.stability, left.container_index, left_index);
62
61
  const right_score = read_item_score(evaluation.stability, right.container_index, right_index);
63
62
  return left_score - right_score;
64
63
  });
65
64
  }
66
65
  function find_container_index(containers, item_id) {
67
- return containers.findIndex(container => container.items.some(item => item.item_id === item_id));
66
+ return containers.findIndex(container => container.items.some(item => item._id === item_id));
68
67
  }
@@ -1,5 +1,5 @@
1
1
  import type { ReorderContext, ReorderStrategy } from './ReorderStrategy.js';
2
- import type { StabilizerContainer } from '../../validation/contract/stabilizer_domain_schema.js';
2
+ import type { StabilizerContainer } from '../../validation/schemas/stabilizer_input_schema.js';
3
3
  /**
4
4
  * Genetic algorithm reorder optimizing loose-item stability sum.
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"GeneticReorder.d.ts","sourceRoot":"","sources":["../../../../src/core/strategies/reorder/GeneticReorder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uDAAuD,CAAA;AAahG;;GAEG;AACH,qBAAa,cAAe,YAAW,eAAe;IAElD,GAAG,CAAC,OAAO,EAAE,cAAc,GAAG,mBAAmB,EAAE;CAgBtD"}
1
+ {"version":3,"file":"GeneticReorder.d.ts","sourceRoot":"","sources":["../../../../src/core/strategies/reorder/GeneticReorder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qDAAqD,CAAA;AAa9F;;GAEG;AACH,qBAAa,cAAe,YAAW,eAAe;IAElD,GAAG,CAAC,OAAO,EAAE,cAAc,GAAG,mBAAmB,EAAE;CAgBtD"}
@@ -1,5 +1,5 @@
1
1
  import type { ReorderContext, ReorderStrategy } from './ReorderStrategy.js';
2
- import type { StabilizerContainer } from '../../validation/contract/stabilizer_domain_schema.js';
2
+ import type { StabilizerContainer } from '../../validation/schemas/stabilizer_input_schema.js';
3
3
  /**
4
4
  * Single-pass gravity compaction: unstable loose items to lowest feasible floor slot.
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"GravityCompaction.d.ts","sourceRoot":"","sources":["../../../../src/core/strategies/reorder/GravityCompaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uDAAuD,CAAA;AAWhG;;GAEG;AACH,qBAAa,iBAAkB,YAAW,eAAe;IAErD,GAAG,CAAC,OAAO,EAAE,cAAc,GAAG,mBAAmB,EAAE;CAatD"}
1
+ {"version":3,"file":"GravityCompaction.d.ts","sourceRoot":"","sources":["../../../../src/core/strategies/reorder/GravityCompaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qDAAqD,CAAA;AAW9F;;GAEG;AACH,qBAAa,iBAAkB,YAAW,eAAe;IAErD,GAAG,CAAC,OAAO,EAAE,cAAc,GAAG,mBAAmB,EAAE;CAatD"}
@@ -37,12 +37,12 @@ function sort_loose_by_stability(context, containers) {
37
37
  return context.loose_items
38
38
  .map(loose => {
39
39
  const item_index = containers[loose.container_index].items
40
- .findIndex(item => item.item_id === loose.item_id);
40
+ .findIndex(item => item._id === loose.item_id);
41
41
  const score = read_item_score(evaluation.stability, loose.container_index, item_index);
42
42
  return { item_id: loose.item_id, container_index: loose.container_index, score };
43
43
  })
44
44
  .sort((left, right) => left.score - right.score);
45
45
  }
46
46
  function find_container_index(containers, item_id) {
47
- return containers.findIndex(container => container.items.some(item => item.item_id === item_id));
47
+ return containers.findIndex(container => container.items.some(item => item._id === item_id));
48
48
  }
@@ -1,5 +1,5 @@
1
1
  import type { ReorderContext, ReorderStrategy } from './ReorderStrategy.js';
2
- import type { StabilizerContainer } from '../../validation/contract/stabilizer_domain_schema.js';
2
+ import type { StabilizerContainer } from '../../validation/schemas/stabilizer_input_schema.js';
3
3
  /**
4
4
  * Greedy iterative reorder: fix worst loose item until plateau or max iterations.
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"GreedyReorder.d.ts","sourceRoot":"","sources":["../../../../src/core/strategies/reorder/GreedyReorder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uDAAuD,CAAA;AAKhG;;GAEG;AACH,qBAAa,aAAc,YAAW,eAAe;IAEjD,GAAG,CAAC,OAAO,EAAE,cAAc,GAAG,mBAAmB,EAAE;CAiBtD"}
1
+ {"version":3,"file":"GreedyReorder.d.ts","sourceRoot":"","sources":["../../../../src/core/strategies/reorder/GreedyReorder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qDAAqD,CAAA;AAK9F;;GAEG;AACH,qBAAa,aAAc,YAAW,eAAe;IAEjD,GAAG,CAAC,OAAO,EAAE,cAAc,GAAG,mBAAmB,EAAE;CAiBtD"}
@@ -1,8 +1,7 @@
1
1
  import type { StabilizerConfig } from '../../validation/schemas/stabilizer_config_schema.js';
2
- import type { StabilizerContainer, StabilizerEnv } from '../../validation/contract/stabilizer_domain_schema.js';
2
+ import type { StabilizerContainer, StabilizerEnv } from '../../validation/schemas/stabilizer_input_schema.js';
3
3
  import type { LooseItemRef } from '../../filters/loose_item_filter.js';
4
4
  import type { WaypointMode, WaypointZone } from '../../waypoint/WaypointMode.js';
5
- import type { MilkrunReservedBand } from '../../waypoint/milkrun_wall_reservation.js';
6
5
  export interface ReorderContext {
7
6
  env: StabilizerEnv;
8
7
  containers: StabilizerContainer[];
@@ -11,7 +10,6 @@ export interface ReorderContext {
11
10
  config: StabilizerConfig;
12
11
  waypoint_mode: WaypointMode;
13
12
  waypoint_zones: WaypointZone[];
14
- milkrun_reserved_z_bands: MilkrunReservedBand[];
15
13
  }
16
14
  export interface ReorderStrategy {
17
15
  run(context: ReorderContext): StabilizerContainer[];
@@ -1 +1 @@
1
- {"version":3,"file":"ReorderStrategy.d.ts","sourceRoot":"","sources":["../../../../src/core/strategies/reorder/ReorderStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sDAAsD,CAAA;AAC5F,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,uDAAuD,CAAA;AAC/G,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAA;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAChF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAA;AAErF,MAAM,WAAW,cAAc;IAE3B,GAAG,EAAE,aAAa,CAAA;IAClB,UAAU,EAAE,mBAAmB,EAAE,CAAA;IACjC,mBAAmB,EAAE,mBAAmB,EAAE,CAAA;IAC1C,WAAW,EAAE,YAAY,EAAE,CAAA;IAC3B,MAAM,EAAE,gBAAgB,CAAA;IACxB,aAAa,EAAE,YAAY,CAAA;IAC3B,cAAc,EAAE,YAAY,EAAE,CAAA;IAC9B,wBAAwB,EAAE,mBAAmB,EAAE,CAAA;CAClD;AAED,MAAM,WAAW,eAAe;IAE5B,GAAG,CAAC,OAAO,EAAE,cAAc,GAAG,mBAAmB,EAAE,CAAA;CACtD"}
1
+ {"version":3,"file":"ReorderStrategy.d.ts","sourceRoot":"","sources":["../../../../src/core/strategies/reorder/ReorderStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sDAAsD,CAAA;AAC5F,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,qDAAqD,CAAA;AAC7G,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAA;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAEhF,MAAM,WAAW,cAAc;IAE3B,GAAG,EAAE,aAAa,CAAA;IAClB,UAAU,EAAE,mBAAmB,EAAE,CAAA;IACjC,mBAAmB,EAAE,mBAAmB,EAAE,CAAA;IAC1C,WAAW,EAAE,YAAY,EAAE,CAAA;IAC3B,MAAM,EAAE,gBAAgB,CAAA;IACxB,aAAa,EAAE,YAAY,CAAA;IAC3B,cAAc,EAAE,YAAY,EAAE,CAAA;CACjC;AAED,MAAM,WAAW,eAAe;IAE5B,GAAG,CAAC,OAAO,EAAE,cAAc,GAAG,mBAAmB,EAAE,CAAA;CACtD"}
@@ -1,5 +1,5 @@
1
1
  import type { ReorderContext, ReorderStrategy } from './ReorderStrategy.js';
2
- import type { StabilizerContainer } from '../../validation/contract/stabilizer_domain_schema.js';
2
+ import type { StabilizerContainer } from '../../validation/schemas/stabilizer_input_schema.js';
3
3
  /**
4
4
  * Simulated annealing reorder with hard gate rejection on invalid neighbors.
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"SimulatedAnnealingReorder.d.ts","sourceRoot":"","sources":["../../../../src/core/strategies/reorder/SimulatedAnnealingReorder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uDAAuD,CAAA;AAyBhG;;GAEG;AACH,qBAAa,yBAA0B,YAAW,eAAe;IAE7D,GAAG,CAAC,OAAO,EAAE,cAAc,GAAG,mBAAmB,EAAE;CAqBtD"}
1
+ {"version":3,"file":"SimulatedAnnealingReorder.d.ts","sourceRoot":"","sources":["../../../../src/core/strategies/reorder/SimulatedAnnealingReorder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qDAAqD,CAAA;AAyB9F;;GAEG;AACH,qBAAa,yBAA0B,YAAW,eAAe;IAE7D,GAAG,CAAC,OAAO,EAAE,cAAc,GAAG,mBAAmB,EAAE;CAqBtD"}
@@ -1,5 +1,5 @@
1
1
  import type { ReorderContext } from './ReorderStrategy.js';
2
- import type { StabilizerContainer } from '../../validation/contract/stabilizer_domain_schema.js';
2
+ import type { StabilizerContainer } from '../../validation/schemas/stabilizer_input_schema.js';
3
3
  import type { MoveCandidate } from '../../move/apply_move.js';
4
4
  /**
5
5
  * Proposes a random valid neighbor move for simulated annealing.