@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,24 +0,0 @@
1
- import { EmptySpaceFinder, Space } from '@jetta/empty-spaces-manager';
2
- import { map_item_to_positioned_cube } from './map_item_to_positioned_cube.js';
3
- /**
4
- * Finds empty regions in a container after allocating pinned and other items.
5
- * @param container - Stabilizer container layout.
6
- * @param exclude_item_id - Loose item id to omit from obstacles (virtual remove).
7
- * @returns Empty space fragments from EmptySpaceFinder.
8
- */
9
- export function find_empty_spaces_in_container(container, exclude_item_id) {
10
- const container_space = new Space({
11
- x: 0,
12
- y: 0,
13
- z: 0,
14
- width: container.width,
15
- height: container.height,
16
- length: container.length
17
- });
18
- const obstacles = container.items
19
- .filter(item => item.item_id !== exclude_item_id)
20
- .map(map_item_to_positioned_cube);
21
- const finder = new EmptySpaceFinder(container_space, []);
22
- finder.allocate_item_list(obstacles);
23
- return finder.empty_spaces();
24
- }
@@ -1,9 +0,0 @@
1
- import { Space } from '@jetta/empty-spaces-manager';
2
- import type { StabilizerItem } from '../validation/contract/stabilizer_domain_schema.js';
3
- /**
4
- * Maps a stabilizer item to an empty-spaces positioned cube.
5
- * @param item - Stabilizer item record.
6
- * @returns Positioned cube for EmptySpaceFinder allocation.
7
- */
8
- export declare function map_item_to_positioned_cube(item: StabilizerItem): Space;
9
- //# sourceMappingURL=map_item_to_positioned_cube.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"map_item_to_positioned_cube.d.ts","sourceRoot":"","sources":["../../../src/core/adapters/map_item_to_positioned_cube.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAA;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAA;AAExF;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,cAAc,GAAG,KAAK,CAUvE"}
@@ -1,16 +0,0 @@
1
- import { Space } from '@jetta/empty-spaces-manager';
2
- /**
3
- * Maps a stabilizer item to an empty-spaces positioned cube.
4
- * @param item - Stabilizer item record.
5
- * @returns Positioned cube for EmptySpaceFinder allocation.
6
- */
7
- export function map_item_to_positioned_cube(item) {
8
- return new Space({
9
- x: item.x,
10
- y: item.y,
11
- z: item.z,
12
- width: item.width,
13
- height: item.height,
14
- length: item.depth
15
- });
16
- }
@@ -1,16 +0,0 @@
1
- import type { StabilizerEnv } from '../validation/contract/stabilizer_domain_schema.js';
2
- export type AxleCalculatorResult = {
3
- calculated: true;
4
- env: Record<string, unknown>;
5
- } | {
6
- calculated: false;
7
- reason: string;
8
- };
9
- /**
10
- * Runs the axle-load calculator for a candidate env layout.
11
- * @param env - Stabilizer env with containers and axles.
12
- * @returns Calculated env, or the reason the layout was rejected.
13
- * @throws {AxleCalculationError} When the vehicle or item configuration cannot be calculated.
14
- */
15
- export declare function run_axle_calculator(env: StabilizerEnv): AxleCalculatorResult;
16
- //# sourceMappingURL=run_axle_calculator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run_axle_calculator.d.ts","sourceRoot":"","sources":["../../../src/core/adapters/run_axle_calculator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oDAAoD,CAAA;AASvF,MAAM,MAAM,oBAAoB,GAC1B;IAAE,UAAU,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAClD;IAAE,UAAU,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAE3C;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,aAAa,GAAG,oBAAoB,CAoB5E"}
@@ -1,32 +0,0 @@
1
- import { calculate_weight_on_axles_physics } from '@jetta/axle-load-calculator';
2
- import { build_axle_request } from './build_axle_request.js';
3
- import { AxleCalculationError } from '../exceptions/AxleCalculationError.js';
4
- import { stabilizer_logger } from '../logging/stabilizer_logger.js';
5
- /**
6
- * Calculator failures caused by the candidate layout rather than by the vehicle
7
- * or item configuration. These reject the candidate layout; every other failure
8
- * means the env can never be evaluated and aborts the run.
9
- */
10
- const LAYOUT_REJECTION_MESSAGES = Object.freeze(['Item overlap error']);
11
- /**
12
- * Runs the axle-load calculator for a candidate env layout.
13
- * @param env - Stabilizer env with containers and axles.
14
- * @returns Calculated env, or the reason the layout was rejected.
15
- * @throws {AxleCalculationError} When the vehicle or item configuration cannot be calculated.
16
- */
17
- export function run_axle_calculator(env) {
18
- const request = build_axle_request(env);
19
- const output = JSON.parse(calculate_weight_on_axles_physics(JSON.stringify(request)));
20
- if (Array.isArray(output.envs) && output.envs.length > 0) {
21
- return { calculated: true, env: output.envs[0] };
22
- }
23
- const reason = output.apiError ?? 'calculator returned no envs';
24
- if (!is_layout_rejection(reason)) {
25
- throw new AxleCalculationError(reason);
26
- }
27
- stabilizer_logger.debug('axle gate rejected candidate layout: ' + reason);
28
- return { calculated: false, reason };
29
- }
30
- function is_layout_rejection(reason) {
31
- return LAYOUT_REJECTION_MESSAGES.some(message => reason.includes(message));
32
- }
@@ -1,16 +0,0 @@
1
- import type { StabilizerContainer } from '../validation/contract/stabilizer_domain_schema.js';
2
- import type { CandidateSlotKind } from '../move/apply_move.js';
3
- import type { EmptySpaceSlot } from './enumerate_empty_space_slots.js';
4
- export interface TaggedSlot {
5
- position: EmptySpaceSlot;
6
- slot_kind: CandidateSlotKind;
7
- }
8
- /**
9
- * Collects empty-space origins and per-supporter top origins, supporter first.
10
- * @param container - Target container layout.
11
- * @param item - Loose item to place.
12
- * @param exclude_item_id - Loose item id omitted from obstacles and supporters.
13
- * @returns Tagged slots with supporter-top entries before empty-space entries.
14
- */
15
- export declare function collect_container_slots(container: StabilizerContainer, item: StabilizerContainer['items'][number], exclude_item_id: string): TaggedSlot[];
16
- //# sourceMappingURL=collect_container_slots.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"collect_container_slots.d.ts","sourceRoot":"","sources":["../../../src/core/candidates/collect_container_slots.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oDAAoD,CAAA;AAC7F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAItE,MAAM,WAAW,UAAU;IAEvB,QAAQ,EAAE,cAAc,CAAA;IACxB,SAAS,EAAE,iBAAiB,CAAA;CAC/B;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACnC,SAAS,EAAE,mBAAmB,EAC9B,IAAI,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAC1C,eAAe,EAAE,MAAM,GACxB,UAAU,EAAE,CAQd"}
@@ -1,20 +0,0 @@
1
- import { enumerate_empty_space_slots } from './enumerate_empty_space_slots.js';
2
- import { enumerate_supporter_top_slots } from './enumerate_supporter_top_slots.js';
3
- /**
4
- * Collects empty-space origins and per-supporter top origins, supporter first.
5
- * @param container - Target container layout.
6
- * @param item - Loose item to place.
7
- * @param exclude_item_id - Loose item id omitted from obstacles and supporters.
8
- * @returns Tagged slots with supporter-top entries before empty-space entries.
9
- */
10
- export function collect_container_slots(container, item, exclude_item_id) {
11
- const supporter = enumerate_supporter_top_slots(container, item, exclude_item_id);
12
- const empty = enumerate_empty_space_slots(container, item, exclude_item_id);
13
- return [
14
- ...tag_slots(supporter, 'supporter_top'),
15
- ...tag_slots(empty, 'empty_space')
16
- ];
17
- }
18
- function tag_slots(slots, slot_kind) {
19
- return slots.map(position => ({ position, slot_kind }));
20
- }
@@ -1,15 +0,0 @@
1
- import type { StabilizerContainer, StabilizerItem } from '../validation/contract/stabilizer_domain_schema.js';
2
- export interface EmptySpaceSlot {
3
- x: number;
4
- y: number;
5
- z: number;
6
- }
7
- /**
8
- * Enumerates candidate positions from empty-space regions where the item fits.
9
- * @param container - Target container layout.
10
- * @param item - Loose item dimensions.
11
- * @param exclude_item_id - Item id to omit from obstacle list.
12
- * @returns Slot positions at each fitting empty-space origin.
13
- */
14
- export declare function enumerate_empty_space_slots(container: StabilizerContainer, item: StabilizerItem, exclude_item_id: string): EmptySpaceSlot[];
15
- //# sourceMappingURL=enumerate_empty_space_slots.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"enumerate_empty_space_slots.d.ts","sourceRoot":"","sources":["../../../src/core/candidates/enumerate_empty_space_slots.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAA;AAG7G,MAAM,WAAW,cAAc;IAE3B,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACZ;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACvC,SAAS,EAAE,mBAAmB,EAC9B,IAAI,EAAE,cAAc,EACpB,eAAe,EAAE,MAAM,GACxB,cAAc,EAAE,CAmBlB"}
@@ -1,44 +0,0 @@
1
- import { find_empty_spaces_in_container } from '../adapters/empty_space_adapter.js';
2
- /**
3
- * Enumerates candidate positions from empty-space regions where the item fits.
4
- * @param container - Target container layout.
5
- * @param item - Loose item dimensions.
6
- * @param exclude_item_id - Item id to omit from obstacle list.
7
- * @returns Slot positions at each fitting empty-space origin.
8
- */
9
- export function enumerate_empty_space_slots(container, item, exclude_item_id) {
10
- const spaces = find_empty_spaces_in_container(container, exclude_item_id);
11
- const slots = [];
12
- for (const space of spaces) {
13
- if (!space_fits_item(space, item)) {
14
- continue;
15
- }
16
- slots.push({
17
- x: space.get_x(),
18
- y: space.get_y(),
19
- z: space.get_z()
20
- });
21
- }
22
- return dedupe_slots(slots);
23
- }
24
- function space_fits_item(space, item) {
25
- return space.get_width() >= item.width - 1e-6 &&
26
- space.get_height() >= item.height - 1e-6 &&
27
- space.get_length() >= item.depth - 1e-6;
28
- }
29
- function dedupe_slots(slots) {
30
- const seen = new Set();
31
- const unique = [];
32
- for (const slot of slots) {
33
- const key = `${round_coord(slot.x)}:${round_coord(slot.y)}:${round_coord(slot.z)}`;
34
- if (seen.has(key)) {
35
- continue;
36
- }
37
- seen.add(key);
38
- unique.push(slot);
39
- }
40
- return unique;
41
- }
42
- function round_coord(value) {
43
- return Math.round(value * 1000) / 1000;
44
- }
@@ -1,11 +0,0 @@
1
- import type { StabilizerContainer, StabilizerItem } from '../validation/contract/stabilizer_domain_schema.js';
2
- import type { EmptySpaceSlot } from './enumerate_empty_space_slots.js';
3
- /**
4
- * Emits one candidate origin per supporter footprint (x, supporter top y, z).
5
- * @param container - Target container layout.
6
- * @param item - Loose item dimensions.
7
- * @param exclude_item_id - Loose item id omitted as a supporter.
8
- * @returns Slot positions aligned to each supporter origin.
9
- */
10
- export declare function enumerate_supporter_top_slots(container: StabilizerContainer, item: StabilizerItem, exclude_item_id: string): EmptySpaceSlot[];
11
- //# sourceMappingURL=enumerate_supporter_top_slots.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"enumerate_supporter_top_slots.d.ts","sourceRoot":"","sources":["../../../src/core/candidates/enumerate_supporter_top_slots.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAA;AAC7G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAItE;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CACzC,SAAS,EAAE,mBAAmB,EAC9B,IAAI,EAAE,cAAc,EACpB,eAAe,EAAE,MAAM,GACxB,cAAc,EAAE,CAgBlB"}
@@ -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
- * 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,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,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,29 +0,0 @@
1
- import type { StabilizerCargoState } from '../validation/contract/stabilizer_domain_schema.js';
2
- /**
3
- * Merges root and cargo profile algoritmo maps (profile overrides root).
4
- * @param config - Root stabilizer input config.
5
- * @param cargo_state - Cargo profile state.
6
- * @returns Merged algoritmo map.
7
- */
8
- export declare function merge_algoritmo_maps(config: Record<string, unknown> | undefined, cargo_state?: StabilizerCargoState): Record<string, unknown>;
9
- /**
10
- * Reads raw stabilizer config fields from merged algoritmo map.
11
- * @param algoritmo - Merged algoritmo configuration map.
12
- * @returns Raw config object for schema parsing.
13
- */
14
- export declare function read_raw_stabilizer_config(algoritmo: Record<string, unknown>): {
15
- preserve_tie_block_organization: boolean;
16
- pin_tie_ratio_blocks: boolean;
17
- enforce_milkrun_wall_reservation: boolean;
18
- number_of_wall_to_allocate_from_last_waypoints: number;
19
- reorder_strategy: string;
20
- transport_stability_floor: number;
21
- max_iteration: number;
22
- genetic_population: number;
23
- genetic_generations: number;
24
- genetic_mutation_rate: number;
25
- beam_width: number;
26
- beam_top_k: number;
27
- axle_load_margin_percent: number;
28
- };
29
- //# 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,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oDAAoD,CAAA;AAK9F;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC3C,WAAW,CAAC,EAAE,oBAAoB,GACnC,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"}
@@ -1,53 +0,0 @@
1
- import { collect_pinned_floor_tie_ratio_group_ids } from './collect_pinned_floor_tie_ratio_group_ids.js';
2
- import { is_item_on_cm_floor } from './is_item_on_cm_floor.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 function collect_movable_items(containers, pin_tie_ratio_blocks) {
10
- const pinned_groups = pin_tie_ratio_blocks
11
- ? collect_pinned_floor_tie_ratio_group_ids(flatten_container_items(containers))
12
- : new Set();
13
- return collect_items_except_pinned(containers, pinned_groups);
14
- }
15
- /**
16
- * @param item - Item record.
17
- * @param pinned_group_ids - Floor five-slot 3_2/2_3 group ids.
18
- * @returns True when the item is a floor member of a pinned wall.
19
- */
20
- export function is_tie_ratio_block_item(item, pinned_group_ids) {
21
- if (item.group_id == null || !is_item_on_cm_floor(item)) {
22
- return false;
23
- }
24
- return pinned_group_ids.has(item.group_id);
25
- }
26
- function collect_items_except_pinned(containers, pinned_groups) {
27
- const movable = [];
28
- for (let container_index = 0; container_index < containers.length; container_index++) {
29
- movable.push(...collect_container_movable_items(containers[container_index].items, container_index, pinned_groups));
30
- }
31
- return movable;
32
- }
33
- function collect_container_movable_items(items, container_index, pinned_groups) {
34
- const movable = [];
35
- for (const item of items) {
36
- if (is_tie_ratio_block_item(item, pinned_groups)) {
37
- continue;
38
- }
39
- movable.push({
40
- item_id: item.item_id,
41
- container_index,
42
- item
43
- });
44
- }
45
- return movable;
46
- }
47
- function flatten_container_items(containers) {
48
- const items = [];
49
- for (const container of containers) {
50
- items.push(...container.items);
51
- }
52
- return items;
53
- }
@@ -1,8 +0,0 @@
1
- import type { StabilizerItem } from '../validation/contract/stabilizer_domain_schema.js';
2
- /**
3
- * Group ids of floor five-slot 3_2/2_3 walls that the stabilizer must pin.
4
- * @param items - All items in the cargo.
5
- * @returns Group ids with exactly five floor tie-ratio members.
6
- */
7
- export declare function collect_pinned_floor_tie_ratio_group_ids(items: StabilizerItem[]): Set<string>;
8
- //# sourceMappingURL=collect_pinned_floor_tie_ratio_group_ids.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"collect_pinned_floor_tie_ratio_group_ids.d.ts","sourceRoot":"","sources":["../../../src/core/filters/collect_pinned_floor_tie_ratio_group_ids.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAA;AAMxF;;;;GAIG;AACH,wBAAgB,wCAAwC,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAQ7F"}