@jetta/cargo-stabilizer 0.1.0-8 → 0.1.0

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 (149) hide show
  1. package/README.md +17 -11
  2. package/build/core/adapters/axle_adapter.d.ts +1 -0
  3. package/build/core/adapters/axle_adapter.d.ts.map +1 -1
  4. package/build/core/adapters/axle_adapter.js +3 -18
  5. package/build/core/adapters/axle_load_evaluation.d.ts +8 -0
  6. package/build/core/adapters/axle_load_evaluation.d.ts.map +1 -0
  7. package/build/core/adapters/axle_load_evaluation.js +1 -0
  8. package/build/core/adapters/build_axle_request.d.ts +2 -9
  9. package/build/core/adapters/build_axle_request.d.ts.map +1 -1
  10. package/build/core/adapters/build_axle_request.js +52 -24
  11. package/build/core/adapters/compute_axle_excess_kg.d.ts +8 -0
  12. package/build/core/adapters/compute_axle_excess_kg.d.ts.map +1 -0
  13. package/build/core/adapters/compute_axle_excess_kg.js +19 -0
  14. package/build/core/adapters/coordinate_mapper.d.ts +1 -1
  15. package/build/core/adapters/coordinate_mapper.js +3 -3
  16. package/build/core/adapters/evaluate_axle_load.d.ts +10 -0
  17. package/build/core/adapters/evaluate_axle_load.d.ts.map +1 -0
  18. package/build/core/adapters/evaluate_axle_load.js +32 -0
  19. package/build/core/adapters/map_item_to_stacking_item.d.ts +14 -0
  20. package/build/core/adapters/map_item_to_stacking_item.d.ts.map +1 -0
  21. package/build/core/adapters/map_item_to_stacking_item.js +40 -0
  22. package/build/core/adapters/run_axle_calculator.d.ts.map +1 -1
  23. package/build/core/adapters/run_axle_calculator.js +21 -16
  24. package/build/core/candidates/candidate_validation.d.ts.map +1 -1
  25. package/build/core/candidates/candidate_validation.js +8 -0
  26. package/build/core/candidates/is_candidate_stacking_valid.d.ts +14 -0
  27. package/build/core/candidates/is_candidate_stacking_valid.d.ts.map +1 -0
  28. package/build/core/candidates/is_candidate_stacking_valid.js +43 -0
  29. package/build/core/candidates/is_elevated_on_supporter_origin.d.ts +14 -0
  30. package/build/core/candidates/is_elevated_on_supporter_origin.d.ts.map +1 -0
  31. package/build/core/candidates/is_elevated_on_supporter_origin.js +28 -0
  32. package/build/core/constants/TieRatioOrientation.d.ts +6 -0
  33. package/build/core/constants/TieRatioOrientation.d.ts.map +1 -0
  34. package/build/core/constants/TieRatioOrientation.js +5 -0
  35. package/build/core/evaluation/compare_search_states.d.ts +12 -0
  36. package/build/core/evaluation/compare_search_states.d.ts.map +1 -0
  37. package/build/core/evaluation/compare_search_states.js +12 -0
  38. package/build/core/evaluation/evaluate_search_gates.d.ts +18 -0
  39. package/build/core/evaluation/evaluate_search_gates.d.ts.map +1 -0
  40. package/build/core/evaluation/evaluate_search_gates.js +30 -0
  41. package/build/core/evaluation/evaluation_result.d.ts +15 -0
  42. package/build/core/evaluation/evaluation_result.d.ts.map +1 -0
  43. package/build/core/evaluation/evaluation_result.js +1 -0
  44. package/build/core/evaluation/genetic_fitness.d.ts +9 -0
  45. package/build/core/evaluation/genetic_fitness.d.ts.map +1 -0
  46. package/build/core/evaluation/genetic_fitness.js +16 -0
  47. package/build/core/evaluation/is_non_axle_gates_pass.d.ts +8 -0
  48. package/build/core/evaluation/is_non_axle_gates_pass.d.ts.map +1 -0
  49. package/build/core/evaluation/is_non_axle_gates_pass.js +8 -0
  50. package/build/core/evaluation/is_search_trial_admissible.d.ts +10 -0
  51. package/build/core/evaluation/is_search_trial_admissible.d.ts.map +1 -0
  52. package/build/core/evaluation/is_search_trial_admissible.js +17 -0
  53. package/build/core/evaluation/is_waypoint_order_valid.d.ts +10 -0
  54. package/build/core/evaluation/is_waypoint_order_valid.d.ts.map +1 -0
  55. package/build/core/evaluation/is_waypoint_order_valid.js +14 -0
  56. package/build/core/evaluation/state_evaluator.d.ts +2 -10
  57. package/build/core/evaluation/state_evaluator.d.ts.map +1 -1
  58. package/build/core/evaluation/state_evaluator.js +6 -26
  59. package/build/core/factory/read_stabilizer_config.d.ts +3 -2
  60. package/build/core/factory/read_stabilizer_config.d.ts.map +1 -1
  61. package/build/core/factory/read_stabilizer_config_helpers.d.ts +9 -5
  62. package/build/core/factory/read_stabilizer_config_helpers.d.ts.map +1 -1
  63. package/build/core/factory/read_stabilizer_config_helpers.js +12 -1
  64. package/build/core/filters/collect_movable_items.d.ts +18 -0
  65. package/build/core/filters/collect_movable_items.d.ts.map +1 -0
  66. package/build/core/filters/collect_movable_items.js +53 -0
  67. package/build/core/filters/collect_pinned_floor_tie_ratio_group_ids.d.ts +8 -0
  68. package/build/core/filters/collect_pinned_floor_tie_ratio_group_ids.d.ts.map +1 -0
  69. package/build/core/filters/collect_pinned_floor_tie_ratio_group_ids.js +41 -0
  70. package/build/core/filters/is_item_on_cm_floor.d.ts +8 -0
  71. package/build/core/filters/is_item_on_cm_floor.d.ts.map +1 -0
  72. package/build/core/filters/is_item_on_cm_floor.js +9 -0
  73. package/build/core/geometry/has_penetrating_overlap.d.ts +9 -0
  74. package/build/core/geometry/has_penetrating_overlap.d.ts.map +1 -0
  75. package/build/core/geometry/has_penetrating_overlap.js +27 -0
  76. package/build/core/orchestration/StabilizerFlow.d.ts.map +1 -1
  77. package/build/core/orchestration/StabilizerFlow.js +1 -1
  78. package/build/core/orchestration/build_reorder_context.d.ts.map +1 -1
  79. package/build/core/orchestration/build_reorder_context.js +3 -5
  80. package/build/core/strategies/reorder/BeamSearchReorder.d.ts.map +1 -1
  81. package/build/core/strategies/reorder/BeamSearchReorder.js +10 -12
  82. package/build/core/strategies/reorder/GeneticReorder.d.ts.map +1 -1
  83. package/build/core/strategies/reorder/GeneticReorder.js +2 -1
  84. package/build/core/strategies/reorder/SimulatedAnnealingReorder.d.ts.map +1 -1
  85. package/build/core/strategies/reorder/SimulatedAnnealingReorder.js +14 -5
  86. package/build/core/strategies/reorder/append_admitted_trial.d.ts +11 -0
  87. package/build/core/strategies/reorder/append_admitted_trial.d.ts.map +1 -0
  88. package/build/core/strategies/reorder/append_admitted_trial.js +22 -0
  89. package/build/core/strategies/reorder/beam_context.d.ts +1 -0
  90. package/build/core/strategies/reorder/beam_context.d.ts.map +1 -1
  91. package/build/core/strategies/reorder/greedy_improvement.d.ts.map +1 -1
  92. package/build/core/strategies/reorder/greedy_improvement.js +3 -2
  93. package/build/core/strategies/reorder/is_improving_greedy_trial.d.ts +10 -0
  94. package/build/core/strategies/reorder/is_improving_greedy_trial.d.ts.map +1 -0
  95. package/build/core/strategies/reorder/is_improving_greedy_trial.js +17 -0
  96. package/build/core/strategies/reorder/select_surviving_beam.d.ts +11 -0
  97. package/build/core/strategies/reorder/select_surviving_beam.d.ts.map +1 -0
  98. package/build/core/strategies/reorder/select_surviving_beam.js +13 -0
  99. package/build/core/validation/contract/cargo_movement_wire_field_map.d.ts +37 -3
  100. package/build/core/validation/contract/cargo_movement_wire_field_map.d.ts.map +1 -1
  101. package/build/core/validation/contract/cargo_movement_wire_field_map.js +40 -6
  102. package/build/core/validation/contract/cargo_movement_wire_mapper.d.ts.map +1 -1
  103. package/build/core/validation/contract/cargo_movement_wire_mapper.js +10 -1
  104. package/build/core/validation/contract/map_contract_to_wire_shape.d.ts.map +1 -1
  105. package/build/core/validation/contract/map_contract_to_wire_shape.js +12 -21
  106. package/build/core/validation/contract/map_input_config.d.ts +9 -0
  107. package/build/core/validation/contract/map_input_config.d.ts.map +1 -0
  108. package/build/core/validation/contract/map_input_config.js +40 -0
  109. package/build/core/validation/contract/map_wire_input_to_contract_shape.d.ts.map +1 -1
  110. package/build/core/validation/contract/map_wire_input_to_contract_shape.js +28 -22
  111. package/build/core/validation/contract/map_wire_item_stacking.d.ts +7 -0
  112. package/build/core/validation/contract/map_wire_item_stacking.d.ts.map +1 -0
  113. package/build/core/validation/contract/map_wire_item_stacking.js +40 -0
  114. package/build/core/validation/contract/map_wire_item_to_contract.d.ts +1 -5
  115. package/build/core/validation/contract/map_wire_item_to_contract.d.ts.map +1 -1
  116. package/build/core/validation/contract/map_wire_item_to_contract.js +16 -14
  117. package/build/core/validation/contract/parse_stabilizer_input.d.ts +49 -7
  118. package/build/core/validation/contract/parse_stabilizer_input.d.ts.map +1 -1
  119. package/build/core/validation/contract/parse_stabilizer_input.js +2 -0
  120. package/build/core/validation/contract/parse_stabilizer_output.d.ts +34 -5
  121. package/build/core/validation/contract/parse_stabilizer_output.d.ts.map +1 -1
  122. package/build/core/validation/contract/reject_forbidden_input_fields.d.ts +6 -0
  123. package/build/core/validation/contract/reject_forbidden_input_fields.d.ts.map +1 -0
  124. package/build/core/validation/contract/reject_forbidden_input_fields.js +53 -0
  125. package/build/core/validation/contract/stabilizer_domain_schema.d.ts +36 -65
  126. package/build/core/validation/contract/stabilizer_domain_schema.d.ts.map +1 -1
  127. package/build/core/validation/contract/stabilizer_domain_schema.js +16 -38
  128. package/build/core/validation/contract/stabilizer_env_schema.d.ts +112 -0
  129. package/build/core/validation/contract/stabilizer_env_schema.d.ts.map +1 -0
  130. package/build/core/validation/contract/stabilizer_env_schema.js +38 -0
  131. package/build/core/validation/contract/stabilizer_input_schema.d.ts +51 -7
  132. package/build/core/validation/contract/stabilizer_input_schema.d.ts.map +1 -1
  133. package/build/core/validation/contract/stabilizer_input_schema.js +2 -2
  134. package/build/core/validation/contract/stabilizer_item_schema.d.ts +25 -0
  135. package/build/core/validation/contract/stabilizer_item_schema.d.ts.map +1 -0
  136. package/build/core/validation/contract/stabilizer_item_schema.js +23 -0
  137. package/build/core/validation/contract/stabilizer_output_schema.d.ts +68 -10
  138. package/build/core/validation/contract/stabilizer_output_schema.d.ts.map +1 -1
  139. package/build/core/validation/contract/uniquify_contract_item_ids.d.ts +14 -0
  140. package/build/core/validation/contract/uniquify_contract_item_ids.d.ts.map +1 -0
  141. package/build/core/validation/contract/uniquify_contract_item_ids.js +54 -0
  142. package/build/core/validation/schemas/stabilizer_config_schema.d.ts +2 -1
  143. package/build/core/validation/schemas/stabilizer_config_schema.d.ts.map +1 -1
  144. package/build/core/validation/schemas/stabilizer_config_schema.js +2 -1
  145. package/build/index.d.ts +11 -12
  146. package/build/index.d.ts.map +1 -1
  147. package/build/index.js +29 -21
  148. package/package.json +28 -13
  149. package/CHANGELOG.md +0 -37
@@ -1,35 +1,11 @@
1
1
  import { z } from 'zod';
2
2
  import { MixedWaypointIdError } from '../../exceptions/MixedWaypointIdError.js';
3
3
  import { validate_waypoint_ids } from '../../waypoint/validate_waypoint_ids.js';
4
- export const stabilizer_item_schema = z.object({
5
- item_id: z.string().min(1),
6
- group_id: z.union([z.string(), z.null()]).optional(),
7
- waypoint_id: z.string().optional(),
8
- x: z.number(),
9
- y: z.number(),
10
- z: z.number(),
11
- width: z.number().positive(),
12
- height: z.number().positive(),
13
- depth: z.number().positive(),
14
- weight: z.number().optional(),
15
- attributes: z.record(z.string(), z.unknown()).optional()
16
- }).strict();
17
- export const stabilizer_container_schema = z.object({
18
- sequence: z.number().optional(),
19
- width: z.number().positive(),
20
- height: z.number().positive(),
21
- length: z.number().positive(),
22
- items: z.array(stabilizer_item_schema),
23
- attributes: z.record(z.string(), z.unknown()).optional()
24
- }).strict();
25
- export const stabilizer_env_schema = z.object({
26
- containers: z.array(stabilizer_container_schema).min(1),
27
- axles: z.array(z.record(z.string(), z.unknown())).optional(),
28
- vehicle: z.record(z.string(), z.unknown()).optional()
29
- }).strict();
4
+ import { stabilizer_env_schema } from './stabilizer_env_schema.js';
5
+ export { stabilizer_item_schema } from './stabilizer_item_schema.js';
6
+ export { stabilizer_axle_schema, stabilizer_vehicle_schema, stabilizer_container_schema, stabilizer_env_schema } from './stabilizer_env_schema.js';
30
7
  export const stabilizer_cargo_state_schema = z.object({
31
- envs: z.array(stabilizer_env_schema).min(1),
32
- config: z.record(z.string(), z.unknown()).optional()
8
+ envs: z.array(stabilizer_env_schema).min(1)
33
9
  }).strict();
34
10
  /**
35
11
  * Validates waypoint consistency across all items in the primary env.
@@ -50,15 +26,17 @@ export function add_waypoint_validation_issues(cargo_state, context) {
50
26
  validate_primary_env_waypoints(cargo_state);
51
27
  }
52
28
  catch (error) {
53
- if (error instanceof MixedWaypointIdError) {
54
- context.addIssue({
55
- code: 'custom',
56
- message: error.message,
57
- path: ['cargo_state', 'envs', 0]
58
- });
59
- }
60
- else {
61
- throw error;
62
- }
29
+ add_waypoint_issue_or_throw(error, context);
30
+ }
31
+ }
32
+ function add_waypoint_issue_or_throw(error, context) {
33
+ if (error instanceof MixedWaypointIdError) {
34
+ context.addIssue({
35
+ code: 'custom',
36
+ message: error.message,
37
+ path: ['cargo_state', 'envs', 0]
38
+ });
39
+ return;
63
40
  }
41
+ throw error;
64
42
  }
@@ -0,0 +1,112 @@
1
+ import { z } from 'zod';
2
+ export declare const stabilizer_axle_schema: z.ZodObject<{
3
+ distance_from_origin: z.ZodOptional<z.ZodNumber>;
4
+ max_supported_weight: z.ZodOptional<z.ZodNumber>;
5
+ dnit_weight: z.ZodOptional<z.ZodNumber>;
6
+ tare: z.ZodOptional<z.ZodNumber>;
7
+ container_sequence: z.ZodOptional<z.ZodNumber>;
8
+ sequence: z.ZodOptional<z.ZodNumber>;
9
+ }, z.core.$strict>;
10
+ export declare const stabilizer_vehicle_schema: z.ZodObject<{
11
+ vehicle_id: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
12
+ vehicle_type: z.ZodOptional<z.ZodNumber>;
13
+ version_type: z.ZodOptional<z.ZodNumber>;
14
+ suspension_type: z.ZodOptional<z.ZodString>;
15
+ first_axle: z.ZodOptional<z.ZodNumber>;
16
+ tare: z.ZodOptional<z.ZodNumber>;
17
+ max_supported_weight: z.ZodOptional<z.ZodNumber>;
18
+ quantity: z.ZodOptional<z.ZodNumber>;
19
+ }, z.core.$strict>;
20
+ export declare const stabilizer_container_schema: z.ZodObject<{
21
+ sequence: z.ZodOptional<z.ZodNumber>;
22
+ width: z.ZodNumber;
23
+ height: z.ZodNumber;
24
+ length: z.ZodNumber;
25
+ items: z.ZodArray<z.ZodObject<{
26
+ item_id: z.ZodString;
27
+ group_id: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
28
+ waypoint_id: z.ZodOptional<z.ZodString>;
29
+ x: z.ZodNumber;
30
+ y: z.ZodNumber;
31
+ z: z.ZodNumber;
32
+ width: z.ZodNumber;
33
+ height: z.ZodNumber;
34
+ depth: z.ZodNumber;
35
+ weight: z.ZodOptional<z.ZodNumber>;
36
+ tie_ratio_orientation: z.ZodOptional<z.ZodString>;
37
+ family: z.ZodOptional<z.ZodString>;
38
+ supported_families: z.ZodOptional<z.ZodArray<z.ZodString>>;
39
+ constraint: z.ZodOptional<z.ZodString>;
40
+ stack_families: z.ZodOptional<z.ZodBoolean>;
41
+ stack_same_item: z.ZodOptional<z.ZodBoolean>;
42
+ stack_same_area: z.ZodOptional<z.ZodBoolean>;
43
+ stacking_unit: z.ZodOptional<z.ZodString>;
44
+ supported_weight: z.ZodOptional<z.ZodNumber>;
45
+ priority: z.ZodOptional<z.ZodNumber>;
46
+ }, z.core.$strict>>;
47
+ kingpin_distance: z.ZodOptional<z.ZodNumber>;
48
+ container_distance_ahead: z.ZodOptional<z.ZodNumber>;
49
+ max_supported_weight: z.ZodOptional<z.ZodNumber>;
50
+ tare: z.ZodOptional<z.ZodNumber>;
51
+ cargo_weight: z.ZodOptional<z.ZodNumber>;
52
+ grouper: z.ZodOptional<z.ZodNumber>;
53
+ }, z.core.$strict>;
54
+ export declare const stabilizer_env_schema: z.ZodObject<{
55
+ containers: z.ZodArray<z.ZodObject<{
56
+ sequence: z.ZodOptional<z.ZodNumber>;
57
+ width: z.ZodNumber;
58
+ height: z.ZodNumber;
59
+ length: z.ZodNumber;
60
+ items: z.ZodArray<z.ZodObject<{
61
+ item_id: z.ZodString;
62
+ group_id: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
63
+ waypoint_id: z.ZodOptional<z.ZodString>;
64
+ x: z.ZodNumber;
65
+ y: z.ZodNumber;
66
+ z: z.ZodNumber;
67
+ width: z.ZodNumber;
68
+ height: z.ZodNumber;
69
+ depth: z.ZodNumber;
70
+ weight: z.ZodOptional<z.ZodNumber>;
71
+ tie_ratio_orientation: z.ZodOptional<z.ZodString>;
72
+ family: z.ZodOptional<z.ZodString>;
73
+ supported_families: z.ZodOptional<z.ZodArray<z.ZodString>>;
74
+ constraint: z.ZodOptional<z.ZodString>;
75
+ stack_families: z.ZodOptional<z.ZodBoolean>;
76
+ stack_same_item: z.ZodOptional<z.ZodBoolean>;
77
+ stack_same_area: z.ZodOptional<z.ZodBoolean>;
78
+ stacking_unit: z.ZodOptional<z.ZodString>;
79
+ supported_weight: z.ZodOptional<z.ZodNumber>;
80
+ priority: z.ZodOptional<z.ZodNumber>;
81
+ }, z.core.$strict>>;
82
+ kingpin_distance: z.ZodOptional<z.ZodNumber>;
83
+ container_distance_ahead: z.ZodOptional<z.ZodNumber>;
84
+ max_supported_weight: z.ZodOptional<z.ZodNumber>;
85
+ tare: z.ZodOptional<z.ZodNumber>;
86
+ cargo_weight: z.ZodOptional<z.ZodNumber>;
87
+ grouper: z.ZodOptional<z.ZodNumber>;
88
+ }, z.core.$strict>>;
89
+ axles: z.ZodOptional<z.ZodArray<z.ZodObject<{
90
+ distance_from_origin: z.ZodOptional<z.ZodNumber>;
91
+ max_supported_weight: z.ZodOptional<z.ZodNumber>;
92
+ dnit_weight: z.ZodOptional<z.ZodNumber>;
93
+ tare: z.ZodOptional<z.ZodNumber>;
94
+ container_sequence: z.ZodOptional<z.ZodNumber>;
95
+ sequence: z.ZodOptional<z.ZodNumber>;
96
+ }, z.core.$strict>>>;
97
+ vehicle: z.ZodOptional<z.ZodObject<{
98
+ vehicle_id: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
99
+ vehicle_type: z.ZodOptional<z.ZodNumber>;
100
+ version_type: z.ZodOptional<z.ZodNumber>;
101
+ suspension_type: z.ZodOptional<z.ZodString>;
102
+ first_axle: z.ZodOptional<z.ZodNumber>;
103
+ tare: z.ZodOptional<z.ZodNumber>;
104
+ max_supported_weight: z.ZodOptional<z.ZodNumber>;
105
+ quantity: z.ZodOptional<z.ZodNumber>;
106
+ }, z.core.$strict>>;
107
+ }, z.core.$strict>;
108
+ export type StabilizerAxle = z.infer<typeof stabilizer_axle_schema>;
109
+ export type StabilizerVehicle = z.infer<typeof stabilizer_vehicle_schema>;
110
+ export type StabilizerContainer = z.infer<typeof stabilizer_container_schema>;
111
+ export type StabilizerEnv = z.infer<typeof stabilizer_env_schema>;
112
+ //# sourceMappingURL=stabilizer_env_schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stabilizer_env_schema.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/contract/stabilizer_env_schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,sBAAsB;;;;;;;kBAOxB,CAAA;AAEX,eAAO,MAAM,yBAAyB;;;;;;;;;kBAS3B,CAAA;AAEX,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAY7B,CAAA;AAEX,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAIvB,CAAA;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA;AACnE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AACzE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAA;AAC7E,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA"}
@@ -0,0 +1,38 @@
1
+ import { z } from 'zod';
2
+ import { stabilizer_item_schema } from './stabilizer_item_schema.js';
3
+ export const stabilizer_axle_schema = z.object({
4
+ distance_from_origin: z.number().optional(),
5
+ max_supported_weight: z.number().optional(),
6
+ dnit_weight: z.number().optional(),
7
+ tare: z.number().optional(),
8
+ container_sequence: z.number().optional(),
9
+ sequence: z.number().optional()
10
+ }).strict();
11
+ export const stabilizer_vehicle_schema = z.object({
12
+ vehicle_id: z.union([z.string(), z.number()]).optional(),
13
+ vehicle_type: z.number().optional(),
14
+ version_type: z.number().optional(),
15
+ suspension_type: z.string().optional(),
16
+ first_axle: z.number().optional(),
17
+ tare: z.number().optional(),
18
+ max_supported_weight: z.number().optional(),
19
+ quantity: z.number().optional()
20
+ }).strict();
21
+ export const stabilizer_container_schema = z.object({
22
+ sequence: z.number().optional(),
23
+ width: z.number().positive(),
24
+ height: z.number().positive(),
25
+ length: z.number().positive(),
26
+ items: z.array(stabilizer_item_schema),
27
+ kingpin_distance: z.number().optional(),
28
+ container_distance_ahead: z.number().optional(),
29
+ max_supported_weight: z.number().optional(),
30
+ tare: z.number().optional(),
31
+ cargo_weight: z.number().optional(),
32
+ grouper: z.number().optional()
33
+ }).strict();
34
+ export const stabilizer_env_schema = z.object({
35
+ containers: z.array(stabilizer_container_schema).min(1),
36
+ axles: z.array(stabilizer_axle_schema).optional(),
37
+ vehicle: stabilizer_vehicle_schema.optional()
38
+ }).strict();
@@ -20,17 +20,61 @@ export declare const stabilizer_input_schema: z.ZodObject<{
20
20
  height: z.ZodNumber;
21
21
  depth: z.ZodNumber;
22
22
  weight: z.ZodOptional<z.ZodNumber>;
23
- attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
23
+ tie_ratio_orientation: z.ZodOptional<z.ZodString>;
24
+ family: z.ZodOptional<z.ZodString>;
25
+ supported_families: z.ZodOptional<z.ZodArray<z.ZodString>>;
26
+ constraint: z.ZodOptional<z.ZodString>;
27
+ stack_families: z.ZodOptional<z.ZodBoolean>;
28
+ stack_same_item: z.ZodOptional<z.ZodBoolean>;
29
+ stack_same_area: z.ZodOptional<z.ZodBoolean>;
30
+ stacking_unit: z.ZodOptional<z.ZodString>;
31
+ supported_weight: z.ZodOptional<z.ZodNumber>;
32
+ priority: z.ZodOptional<z.ZodNumber>;
24
33
  }, z.core.$strict>>;
25
- attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
34
+ kingpin_distance: z.ZodOptional<z.ZodNumber>;
35
+ container_distance_ahead: z.ZodOptional<z.ZodNumber>;
36
+ max_supported_weight: z.ZodOptional<z.ZodNumber>;
37
+ tare: z.ZodOptional<z.ZodNumber>;
38
+ cargo_weight: z.ZodOptional<z.ZodNumber>;
39
+ grouper: z.ZodOptional<z.ZodNumber>;
40
+ }, z.core.$strict>>;
41
+ axles: z.ZodOptional<z.ZodArray<z.ZodObject<{
42
+ distance_from_origin: z.ZodOptional<z.ZodNumber>;
43
+ max_supported_weight: z.ZodOptional<z.ZodNumber>;
44
+ dnit_weight: z.ZodOptional<z.ZodNumber>;
45
+ tare: z.ZodOptional<z.ZodNumber>;
46
+ container_sequence: z.ZodOptional<z.ZodNumber>;
47
+ sequence: z.ZodOptional<z.ZodNumber>;
48
+ }, z.core.$strict>>>;
49
+ vehicle: z.ZodOptional<z.ZodObject<{
50
+ vehicle_id: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
51
+ vehicle_type: z.ZodOptional<z.ZodNumber>;
52
+ version_type: z.ZodOptional<z.ZodNumber>;
53
+ suspension_type: z.ZodOptional<z.ZodString>;
54
+ first_axle: z.ZodOptional<z.ZodNumber>;
55
+ tare: z.ZodOptional<z.ZodNumber>;
56
+ max_supported_weight: z.ZodOptional<z.ZodNumber>;
57
+ quantity: z.ZodOptional<z.ZodNumber>;
26
58
  }, z.core.$strict>>;
27
- axles: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
28
- vehicle: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
29
59
  }, z.core.$strict>>;
30
- config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
31
60
  }, z.core.$strict>;
32
- original_input: z.ZodOptional<z.ZodUnknown>;
33
- config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
61
+ config: z.ZodOptional<z.ZodObject<{
62
+ reorder_strategy: z.ZodDefault<z.ZodEnum<{
63
+ [x: string]: string;
64
+ }>>;
65
+ transport_stability_floor: z.ZodDefault<z.ZodNumber>;
66
+ max_iteration: z.ZodDefault<z.ZodNumber>;
67
+ genetic_population: z.ZodDefault<z.ZodNumber>;
68
+ genetic_generations: z.ZodDefault<z.ZodNumber>;
69
+ genetic_mutation_rate: z.ZodDefault<z.ZodNumber>;
70
+ beam_width: z.ZodDefault<z.ZodNumber>;
71
+ beam_top_k: z.ZodDefault<z.ZodNumber>;
72
+ axle_load_margin_percent: z.ZodDefault<z.ZodNumber>;
73
+ preserve_tie_block_organization: z.ZodDefault<z.ZodBoolean>;
74
+ pin_tie_ratio_blocks: z.ZodDefault<z.ZodBoolean>;
75
+ enforce_milkrun_wall_reservation: z.ZodDefault<z.ZodBoolean>;
76
+ number_of_wall_to_allocate_from_last_waypoints: z.ZodDefault<z.ZodNumber>;
77
+ }, z.core.$strict>>;
34
78
  }, z.core.$strict>;
35
79
  export type StabilizerInput = z.infer<typeof stabilizer_input_schema>;
36
80
  //# sourceMappingURL=stabilizer_input_schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stabilizer_input_schema.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/contract/stabilizer_input_schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAMvB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBASlC,CAAA;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA"}
1
+ {"version":3,"file":"stabilizer_input_schema.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/contract/stabilizer_input_schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAOvB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAQlC,CAAA;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA"}
@@ -1,11 +1,11 @@
1
1
  import { z } from 'zod';
2
+ import { stabilizer_config_schema } from '../schemas/stabilizer_config_schema.js';
2
3
  import { add_waypoint_validation_issues, stabilizer_cargo_state_schema } from './stabilizer_domain_schema.js';
3
4
  export const stabilizer_input_schema = z.object({
4
5
  id: z.union([z.string(), z.number()]).optional(),
5
6
  company: z.union([z.string(), z.number()]).optional(),
6
7
  cargo_state: stabilizer_cargo_state_schema,
7
- original_input: z.unknown().optional(),
8
- config: z.record(z.string(), z.unknown()).optional()
8
+ config: stabilizer_config_schema.optional()
9
9
  }).strict().superRefine((input_data, context) => {
10
10
  add_waypoint_validation_issues(input_data.cargo_state, context);
11
11
  });
@@ -0,0 +1,25 @@
1
+ import { z } from 'zod';
2
+ export declare const stabilizer_item_schema: z.ZodObject<{
3
+ item_id: z.ZodString;
4
+ group_id: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
5
+ waypoint_id: z.ZodOptional<z.ZodString>;
6
+ x: z.ZodNumber;
7
+ y: z.ZodNumber;
8
+ z: z.ZodNumber;
9
+ width: z.ZodNumber;
10
+ height: z.ZodNumber;
11
+ depth: z.ZodNumber;
12
+ weight: z.ZodOptional<z.ZodNumber>;
13
+ tie_ratio_orientation: z.ZodOptional<z.ZodString>;
14
+ family: z.ZodOptional<z.ZodString>;
15
+ supported_families: z.ZodOptional<z.ZodArray<z.ZodString>>;
16
+ constraint: z.ZodOptional<z.ZodString>;
17
+ stack_families: z.ZodOptional<z.ZodBoolean>;
18
+ stack_same_item: z.ZodOptional<z.ZodBoolean>;
19
+ stack_same_area: z.ZodOptional<z.ZodBoolean>;
20
+ stacking_unit: z.ZodOptional<z.ZodString>;
21
+ supported_weight: z.ZodOptional<z.ZodNumber>;
22
+ priority: z.ZodOptional<z.ZodNumber>;
23
+ }, z.core.$strict>;
24
+ export type StabilizerItem = z.infer<typeof stabilizer_item_schema>;
25
+ //# sourceMappingURL=stabilizer_item_schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stabilizer_item_schema.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/contract/stabilizer_item_schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;kBAqBxB,CAAA;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA"}
@@ -0,0 +1,23 @@
1
+ import { z } from 'zod';
2
+ export const stabilizer_item_schema = z.object({
3
+ item_id: z.string().min(1),
4
+ group_id: z.union([z.string(), z.null()]).optional(),
5
+ waypoint_id: z.string().optional(),
6
+ x: z.number(),
7
+ y: z.number(),
8
+ z: z.number(),
9
+ width: z.number().positive(),
10
+ height: z.number().positive(),
11
+ depth: z.number().positive(),
12
+ weight: z.number().optional(),
13
+ tie_ratio_orientation: z.string().optional(),
14
+ family: z.string().optional(),
15
+ supported_families: z.array(z.string()).optional(),
16
+ constraint: z.string().optional(),
17
+ stack_families: z.boolean().optional(),
18
+ stack_same_item: z.boolean().optional(),
19
+ stack_same_area: z.boolean().optional(),
20
+ stacking_unit: z.string().optional(),
21
+ supported_weight: z.number().optional(),
22
+ priority: z.number().optional()
23
+ }).strict();
@@ -19,14 +19,43 @@ export declare const stabilizer_success_response_schema: z.ZodObject<{
19
19
  height: z.ZodNumber;
20
20
  depth: z.ZodNumber;
21
21
  weight: z.ZodOptional<z.ZodNumber>;
22
- attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
22
+ tie_ratio_orientation: z.ZodOptional<z.ZodString>;
23
+ family: z.ZodOptional<z.ZodString>;
24
+ supported_families: z.ZodOptional<z.ZodArray<z.ZodString>>;
25
+ constraint: z.ZodOptional<z.ZodString>;
26
+ stack_families: z.ZodOptional<z.ZodBoolean>;
27
+ stack_same_item: z.ZodOptional<z.ZodBoolean>;
28
+ stack_same_area: z.ZodOptional<z.ZodBoolean>;
29
+ stacking_unit: z.ZodOptional<z.ZodString>;
30
+ supported_weight: z.ZodOptional<z.ZodNumber>;
31
+ priority: z.ZodOptional<z.ZodNumber>;
23
32
  }, z.core.$strict>>;
24
- attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
33
+ kingpin_distance: z.ZodOptional<z.ZodNumber>;
34
+ container_distance_ahead: z.ZodOptional<z.ZodNumber>;
35
+ max_supported_weight: z.ZodOptional<z.ZodNumber>;
36
+ tare: z.ZodOptional<z.ZodNumber>;
37
+ cargo_weight: z.ZodOptional<z.ZodNumber>;
38
+ grouper: z.ZodOptional<z.ZodNumber>;
39
+ }, z.core.$strict>>;
40
+ axles: z.ZodOptional<z.ZodArray<z.ZodObject<{
41
+ distance_from_origin: z.ZodOptional<z.ZodNumber>;
42
+ max_supported_weight: z.ZodOptional<z.ZodNumber>;
43
+ dnit_weight: z.ZodOptional<z.ZodNumber>;
44
+ tare: z.ZodOptional<z.ZodNumber>;
45
+ container_sequence: z.ZodOptional<z.ZodNumber>;
46
+ sequence: z.ZodOptional<z.ZodNumber>;
47
+ }, z.core.$strict>>>;
48
+ vehicle: z.ZodOptional<z.ZodObject<{
49
+ vehicle_id: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
50
+ vehicle_type: z.ZodOptional<z.ZodNumber>;
51
+ version_type: z.ZodOptional<z.ZodNumber>;
52
+ suspension_type: z.ZodOptional<z.ZodString>;
53
+ first_axle: z.ZodOptional<z.ZodNumber>;
54
+ tare: z.ZodOptional<z.ZodNumber>;
55
+ max_supported_weight: z.ZodOptional<z.ZodNumber>;
56
+ quantity: z.ZodOptional<z.ZodNumber>;
25
57
  }, z.core.$strict>>;
26
- axles: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
27
- vehicle: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
28
58
  }, z.core.$strict>>;
29
- config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
30
59
  }, z.core.$strict>;
31
60
  messages: z.ZodArray<z.ZodString>;
32
61
  }, z.core.$strict>;
@@ -55,14 +84,43 @@ export declare const stabilizer_response_schema: z.ZodDiscriminatedUnion<[z.ZodO
55
84
  height: z.ZodNumber;
56
85
  depth: z.ZodNumber;
57
86
  weight: z.ZodOptional<z.ZodNumber>;
58
- attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
87
+ tie_ratio_orientation: z.ZodOptional<z.ZodString>;
88
+ family: z.ZodOptional<z.ZodString>;
89
+ supported_families: z.ZodOptional<z.ZodArray<z.ZodString>>;
90
+ constraint: z.ZodOptional<z.ZodString>;
91
+ stack_families: z.ZodOptional<z.ZodBoolean>;
92
+ stack_same_item: z.ZodOptional<z.ZodBoolean>;
93
+ stack_same_area: z.ZodOptional<z.ZodBoolean>;
94
+ stacking_unit: z.ZodOptional<z.ZodString>;
95
+ supported_weight: z.ZodOptional<z.ZodNumber>;
96
+ priority: z.ZodOptional<z.ZodNumber>;
59
97
  }, z.core.$strict>>;
60
- attributes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
98
+ kingpin_distance: z.ZodOptional<z.ZodNumber>;
99
+ container_distance_ahead: z.ZodOptional<z.ZodNumber>;
100
+ max_supported_weight: z.ZodOptional<z.ZodNumber>;
101
+ tare: z.ZodOptional<z.ZodNumber>;
102
+ cargo_weight: z.ZodOptional<z.ZodNumber>;
103
+ grouper: z.ZodOptional<z.ZodNumber>;
104
+ }, z.core.$strict>>;
105
+ axles: z.ZodOptional<z.ZodArray<z.ZodObject<{
106
+ distance_from_origin: z.ZodOptional<z.ZodNumber>;
107
+ max_supported_weight: z.ZodOptional<z.ZodNumber>;
108
+ dnit_weight: z.ZodOptional<z.ZodNumber>;
109
+ tare: z.ZodOptional<z.ZodNumber>;
110
+ container_sequence: z.ZodOptional<z.ZodNumber>;
111
+ sequence: z.ZodOptional<z.ZodNumber>;
112
+ }, z.core.$strict>>>;
113
+ vehicle: z.ZodOptional<z.ZodObject<{
114
+ vehicle_id: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
115
+ vehicle_type: z.ZodOptional<z.ZodNumber>;
116
+ version_type: z.ZodOptional<z.ZodNumber>;
117
+ suspension_type: z.ZodOptional<z.ZodString>;
118
+ first_axle: z.ZodOptional<z.ZodNumber>;
119
+ tare: z.ZodOptional<z.ZodNumber>;
120
+ max_supported_weight: z.ZodOptional<z.ZodNumber>;
121
+ quantity: z.ZodOptional<z.ZodNumber>;
61
122
  }, z.core.$strict>>;
62
- axles: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
63
- vehicle: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
64
123
  }, z.core.$strict>>;
65
- config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
66
124
  }, z.core.$strict>;
67
125
  messages: z.ZodArray<z.ZodString>;
68
126
  }, z.core.$strict>, z.ZodObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"stabilizer_output_schema.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/contract/stabilizer_output_schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAIpC,CAAA;AAEX,eAAO,MAAM,gCAAgC;;;;kBAIlC,CAAA;AAEX,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAGrC,CAAA;AAEF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAA;AAC1F,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAA;AACtF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAA"}
1
+ {"version":3,"file":"stabilizer_output_schema.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/contract/stabilizer_output_schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAIpC,CAAA;AAEX,eAAO,MAAM,gCAAgC;;;;kBAIlC,CAAA;AAEX,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAGrC,CAAA;AAEF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAA;AAC1F,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAA;AACtF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAA"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Makes contract item_id unique when the same SKU id repeats.
3
+ * Duplicate catalog ids receive a `#occurrence` suffix on `item_id`.
4
+ * @param items - Mapped contract items.
5
+ * @returns Items with unique `item_id` values.
6
+ */
7
+ export declare function uniquify_contract_item_ids(items: unknown[]): unknown[];
8
+ /**
9
+ * Removes a numeric `#occurrence` suffix added by uniquify.
10
+ * @param item_id - Possibly uniquified item id.
11
+ * @returns Original item id.
12
+ */
13
+ export declare function strip_uniquify_suffix(item_id: string): string;
14
+ //# sourceMappingURL=uniquify_contract_item_ids.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uniquify_contract_item_ids.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/contract/uniquify_contract_item_ids.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAKtE;AA0CD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAa7D"}
@@ -0,0 +1,54 @@
1
+ import { is_record } from './wire_mapper_record_utils.js';
2
+ /**
3
+ * Makes contract item_id unique when the same SKU id repeats.
4
+ * Duplicate catalog ids receive a `#occurrence` suffix on `item_id`.
5
+ * @param items - Mapped contract items.
6
+ * @returns Items with unique `item_id` values.
7
+ */
8
+ export function uniquify_contract_item_ids(items) {
9
+ const counts = count_item_ids(items);
10
+ const seen = new Map();
11
+ return items.map(item => uniquify_one_item(item, counts, seen));
12
+ }
13
+ function count_item_ids(items) {
14
+ const counts = new Map();
15
+ for (const item of items) {
16
+ const item_id = read_item_id(item);
17
+ if (item_id === undefined) {
18
+ continue;
19
+ }
20
+ counts.set(item_id, (counts.get(item_id) ?? 0) + 1);
21
+ }
22
+ return counts;
23
+ }
24
+ function uniquify_one_item(item, counts, seen) {
25
+ const item_id = read_item_id(item);
26
+ if (item_id === undefined || (counts.get(item_id) ?? 0) <= 1 || !is_record(item)) {
27
+ return item;
28
+ }
29
+ const occurrence = seen.get(item_id) ?? 0;
30
+ seen.set(item_id, occurrence + 1);
31
+ return { ...item, item_id: `${item_id}#${occurrence}` };
32
+ }
33
+ function read_item_id(item) {
34
+ if (!is_record(item) || typeof item.item_id !== 'string') {
35
+ return undefined;
36
+ }
37
+ return item.item_id;
38
+ }
39
+ /**
40
+ * Removes a numeric `#occurrence` suffix added by uniquify.
41
+ * @param item_id - Possibly uniquified item id.
42
+ * @returns Original item id.
43
+ */
44
+ export function strip_uniquify_suffix(item_id) {
45
+ const index = item_id.lastIndexOf('#');
46
+ if (index < 0) {
47
+ return item_id;
48
+ }
49
+ const suffix = item_id.slice(index + 1);
50
+ if (!/^\d+$/.test(suffix)) {
51
+ return item_id;
52
+ }
53
+ return item_id.slice(0, index);
54
+ }
@@ -12,8 +12,9 @@ export declare const stabilizer_config_schema: z.ZodObject<{
12
12
  beam_top_k: z.ZodDefault<z.ZodNumber>;
13
13
  axle_load_margin_percent: z.ZodDefault<z.ZodNumber>;
14
14
  preserve_tie_block_organization: z.ZodDefault<z.ZodBoolean>;
15
+ pin_tie_ratio_blocks: z.ZodDefault<z.ZodBoolean>;
15
16
  enforce_milkrun_wall_reservation: z.ZodDefault<z.ZodBoolean>;
16
17
  number_of_wall_to_allocate_from_last_waypoints: z.ZodDefault<z.ZodNumber>;
17
- }, z.core.$strip>;
18
+ }, z.core.$strict>;
18
19
  export type StabilizerConfig = z.infer<typeof stabilizer_config_schema>;
19
20
  //# sourceMappingURL=stabilizer_config_schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stabilizer_config_schema.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/schemas/stabilizer_config_schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;iBAanC,CAAA;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA"}
1
+ {"version":3,"file":"stabilizer_config_schema.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/schemas/stabilizer_config_schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;kBAc1B,CAAA;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA"}
@@ -11,6 +11,7 @@ export const stabilizer_config_schema = z.object({
11
11
  beam_top_k: z.number().int().positive().default(3),
12
12
  axle_load_margin_percent: z.number().min(0).default(0),
13
13
  preserve_tie_block_organization: z.boolean().default(true),
14
+ pin_tie_ratio_blocks: z.boolean().default(false),
14
15
  enforce_milkrun_wall_reservation: z.boolean().default(false),
15
16
  number_of_wall_to_allocate_from_last_waypoints: z.number().int().min(0).default(0)
16
- });
17
+ }).strict();
package/build/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { type StabilizerInput, type StabilizerResponse } from './core/validation/contract/index.js';
1
2
  export { REORDER_STRATEGY, REORDER_STRATEGY_VALUES } from './core/constants/ReorderStrategy.js';
2
3
  export type { ReorderStrategyValue } from './core/constants/ReorderStrategy.js';
3
4
  export { MixedWaypointIdError } from './core/exceptions/MixedWaypointIdError.js';
@@ -6,21 +7,19 @@ export { InvalidStabilizerInputError } from './core/exceptions/InvalidStabilizer
6
7
  export { InvalidStabilizerOutputError } from './core/exceptions/InvalidStabilizerOutputError.js';
7
8
  export type { StabilizerInput, StabilizerResponse, StabilizerSuccessResponse, StabilizerErrorResponse, StabilizerItem, StabilizerContainer, StabilizerEnv, StabilizerCargoState } from './core/validation/contract/index.js';
8
9
  export { parse_stabilizer_input, safe_parse_stabilizer_input, parse_stabilizer_output, safe_parse_stabilizer_output, map_wire_input_to_contract, map_contract_to_wire_output } from './core/validation/contract/index.js';
9
- export type StabilizerWireResponse = {
10
- status: 'success';
11
- data: unknown;
12
- messages: string[];
13
- } | {
14
- status: 'error';
15
- data: string;
16
- messages: string[];
17
- };
10
+ export type StabilizerWireResponse = StabilizerResponse;
18
11
  /**
19
- * Stabilizes cargo by reordering loose items (legacy CM-compatible response).
12
+ * Parses unknown wire or English input, then runs the typed stabilizer.
20
13
  * @param input - Cargo-movement wire payload or English contract input.
21
- * @returns Success or error response with CM wire cargo_state on success.
14
+ * @returns Success or error response with typed cargo_state on success.
22
15
  */
23
- export declare function stabilize(input: unknown): Promise<StabilizerWireResponse>;
16
+ export declare function stabilize(input: unknown): Promise<StabilizerResponse>;
17
+ /**
18
+ * Runs stabilizer on a parsed contract input. `unknown` is not accepted.
19
+ * @param input - Validated stabilizer input.
20
+ * @returns Success or error response.
21
+ */
22
+ export declare function run_stabilize(input: StabilizerInput): StabilizerResponse;
24
23
  export { run_stabilizer_flow_from_unknown } from './core/orchestration/StabilizerFlow.js';
25
24
  export { create_reorder_strategy } from './core/factory/strategy_factory.js';
26
25
  export { validate_waypoint_ids } from './core/waypoint/validate_waypoint_ids.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAA;AAC/F,YAAY,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,EAAE,2BAA2B,EAAE,MAAM,kDAAkD,CAAA;AAC9F,OAAO,EAAE,2BAA2B,EAAE,MAAM,kDAAkD,CAAA;AAC9F,OAAO,EAAE,4BAA4B,EAAE,MAAM,mDAAmD,CAAA;AAChG,YAAY,EACR,eAAe,EACf,kBAAkB,EAClB,yBAAyB,EACzB,uBAAuB,EACvB,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACvB,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACH,sBAAsB,EACtB,2BAA2B,EAC3B,uBAAuB,EACvB,4BAA4B,EAC5B,0BAA0B,EAC1B,2BAA2B,EAC9B,MAAM,qCAAqC,CAAA;AAK5C,MAAM,MAAM,sBAAsB,GAC5B;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GACxD;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAA;AAE3D;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAI/E;AAsED,OAAO,EAAE,gCAAgC,EAAE,MAAM,wCAAwC,CAAA;AACzF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAA;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAGH,KAAK,eAAe,EACpB,KAAK,kBAAkB,EAC1B,MAAM,qCAAqC,CAAA;AAE5C,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAA;AAC/F,YAAY,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,EAAE,2BAA2B,EAAE,MAAM,kDAAkD,CAAA;AAC9F,OAAO,EAAE,2BAA2B,EAAE,MAAM,kDAAkD,CAAA;AAC9F,OAAO,EAAE,4BAA4B,EAAE,MAAM,mDAAmD,CAAA;AAChG,YAAY,EACR,eAAe,EACf,kBAAkB,EAClB,yBAAyB,EACzB,uBAAuB,EACvB,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACvB,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACH,sBAAsB,EACtB,2BAA2B,EAC3B,uBAAuB,EACvB,4BAA4B,EAC5B,0BAA0B,EAC1B,2BAA2B,EAC9B,MAAM,qCAAqC,CAAA;AAK5C,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,CAAA;AAEvD;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAc3E;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,eAAe,GAAG,kBAAkB,CAaxE;AAkDD,OAAO,EAAE,gCAAgC,EAAE,MAAM,wCAAwC,CAAA;AACzF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAA;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAA"}