@jetta/cargo-stabilizer 0.1.0-3 → 0.1.0-5
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.
- package/CHANGELOG.md +21 -1
- package/README.md +51 -11
- package/build/core/adapters/axle_adapter.d.ts +4 -4
- package/build/core/adapters/axle_adapter.d.ts.map +1 -1
- package/build/core/adapters/axle_adapter.js +7 -5
- package/build/core/adapters/coordinate_mapper.d.ts +5 -5
- package/build/core/adapters/coordinate_mapper.d.ts.map +1 -1
- package/build/core/adapters/coordinate_mapper.js +11 -11
- package/build/core/adapters/empty_space_adapter.d.ts +10 -0
- package/build/core/adapters/empty_space_adapter.d.ts.map +1 -0
- package/build/core/adapters/empty_space_adapter.js +24 -0
- package/build/core/adapters/map_item_to_positioned_cube.d.ts +9 -0
- package/build/core/adapters/map_item_to_positioned_cube.d.ts.map +1 -0
- package/build/core/adapters/map_item_to_positioned_cube.js +16 -0
- package/build/core/adapters/stability_adapter.d.ts +1 -1
- package/build/core/adapters/stability_adapter.d.ts.map +1 -1
- package/build/core/adapters/stability_adapter.js +1 -1
- package/build/core/candidates/build_candidate_context.d.ts +1 -1
- package/build/core/candidates/build_candidate_context.d.ts.map +1 -1
- package/build/core/candidates/build_candidate_context.js +3 -1
- package/build/core/candidates/candidate_context.d.ts +4 -1
- package/build/core/candidates/candidate_context.d.ts.map +1 -1
- package/build/core/candidates/candidate_generator.d.ts +1 -1
- package/build/core/candidates/candidate_generator.d.ts.map +1 -1
- package/build/core/candidates/candidate_generator.js +19 -16
- package/build/core/candidates/candidate_validation.d.ts +0 -12
- package/build/core/candidates/candidate_validation.d.ts.map +1 -1
- package/build/core/candidates/candidate_validation.js +32 -26
- package/build/core/candidates/enumerate_empty_space_slots.d.ts +15 -0
- package/build/core/candidates/enumerate_empty_space_slots.d.ts.map +1 -0
- package/build/core/candidates/enumerate_empty_space_slots.js +44 -0
- package/build/core/candidates/rank_candidates.d.ts.map +1 -1
- package/build/core/candidates/rank_candidates.js +3 -0
- package/build/core/evaluation/evaluation_context.d.ts +3 -1
- package/build/core/evaluation/evaluation_context.d.ts.map +1 -1
- package/build/core/evaluation/state_evaluator.d.ts +12 -1
- package/build/core/evaluation/state_evaluator.d.ts.map +1 -1
- package/build/core/evaluation/state_evaluator.js +28 -5
- package/build/core/exceptions/InvalidStabilizerOutputError.d.ts +4 -0
- package/build/core/exceptions/InvalidStabilizerOutputError.d.ts.map +1 -0
- package/build/core/exceptions/InvalidStabilizerOutputError.js +6 -0
- package/build/core/factory/read_stabilizer_config.d.ts +4 -2
- package/build/core/factory/read_stabilizer_config.d.ts.map +1 -1
- package/build/core/factory/read_stabilizer_config.js +6 -25
- package/build/core/factory/read_stabilizer_config_helpers.d.ts +28 -0
- package/build/core/factory/read_stabilizer_config_helpers.d.ts.map +1 -0
- package/build/core/factory/read_stabilizer_config_helpers.js +62 -0
- package/build/core/filters/loose_item_filter.d.ts +2 -2
- package/build/core/filters/loose_item_filter.d.ts.map +1 -1
- package/build/core/filters/loose_item_filter.js +3 -3
- package/build/core/geometry/box_geometry.d.ts +17 -1
- package/build/core/geometry/box_geometry.d.ts.map +1 -1
- package/build/core/geometry/box_geometry.js +67 -2
- package/build/core/move/apply_move.d.ts +1 -1
- package/build/core/move/apply_move.d.ts.map +1 -1
- package/build/core/move/apply_move.js +1 -1
- package/build/core/orchestration/StabilizerFlow.d.ts +2 -1
- package/build/core/orchestration/StabilizerFlow.d.ts.map +1 -1
- package/build/core/orchestration/StabilizerFlow.js +2 -2
- package/build/core/orchestration/build_milkrun_bands_from_config.d.ts +13 -0
- package/build/core/orchestration/build_milkrun_bands_from_config.d.ts.map +1 -0
- package/build/core/orchestration/build_milkrun_bands_from_config.js +14 -0
- package/build/core/orchestration/build_reorder_context.d.ts +1 -1
- package/build/core/orchestration/build_reorder_context.d.ts.map +1 -1
- package/build/core/orchestration/build_reorder_context.js +7 -7
- package/build/core/orchestration/read_primary_env.d.ts +9 -0
- package/build/core/orchestration/read_primary_env.d.ts.map +1 -0
- package/build/core/orchestration/read_primary_env.js +13 -0
- package/build/core/strategies/reorder/BeamSearchReorder.d.ts +1 -1
- package/build/core/strategies/reorder/BeamSearchReorder.d.ts.map +1 -1
- package/build/core/strategies/reorder/BeamSearchReorder.js +3 -3
- package/build/core/strategies/reorder/GeneticReorder.d.ts +1 -1
- package/build/core/strategies/reorder/GeneticReorder.d.ts.map +1 -1
- package/build/core/strategies/reorder/GravityCompaction.d.ts +1 -1
- package/build/core/strategies/reorder/GravityCompaction.d.ts.map +1 -1
- package/build/core/strategies/reorder/GravityCompaction.js +2 -2
- package/build/core/strategies/reorder/GreedyReorder.d.ts +1 -1
- package/build/core/strategies/reorder/GreedyReorder.d.ts.map +1 -1
- package/build/core/strategies/reorder/ReorderStrategy.d.ts +3 -1
- package/build/core/strategies/reorder/ReorderStrategy.d.ts.map +1 -1
- package/build/core/strategies/reorder/SimulatedAnnealingReorder.d.ts +1 -1
- package/build/core/strategies/reorder/SimulatedAnnealingReorder.d.ts.map +1 -1
- package/build/core/strategies/reorder/anneal_helpers.d.ts +1 -1
- package/build/core/strategies/reorder/anneal_helpers.d.ts.map +1 -1
- package/build/core/strategies/reorder/anneal_helpers.js +1 -1
- package/build/core/strategies/reorder/apply_if_gates_pass.d.ts +1 -1
- package/build/core/strategies/reorder/apply_if_gates_pass.d.ts.map +1 -1
- package/build/core/strategies/reorder/beam_context.d.ts +1 -1
- package/build/core/strategies/reorder/beam_context.d.ts.map +1 -1
- package/build/core/strategies/reorder/genetic/Chromosome.d.ts +1 -1
- package/build/core/strategies/reorder/genetic/Chromosome.d.ts.map +1 -1
- package/build/core/strategies/reorder/genetic/Chromosome.js +2 -2
- package/build/core/strategies/reorder/greedy_improvement.d.ts +1 -1
- package/build/core/strategies/reorder/greedy_improvement.d.ts.map +1 -1
- package/build/core/strategies/reorder/greedy_improvement.js +2 -2
- package/build/core/validation/contract/cargo_movement_wire_field_map.d.ts +21 -0
- package/build/core/validation/contract/cargo_movement_wire_field_map.d.ts.map +1 -0
- package/build/core/validation/contract/cargo_movement_wire_field_map.js +27 -0
- package/build/core/validation/contract/cargo_movement_wire_mapper.d.ts +14 -0
- package/build/core/validation/contract/cargo_movement_wire_mapper.d.ts.map +1 -0
- package/build/core/validation/contract/cargo_movement_wire_mapper.js +34 -0
- package/build/core/validation/contract/format_zod_error.d.ts +8 -0
- package/build/core/validation/contract/format_zod_error.d.ts.map +1 -0
- package/build/core/validation/contract/format_zod_error.js +11 -0
- package/build/core/validation/contract/index.d.ts +9 -0
- package/build/core/validation/contract/index.d.ts.map +1 -0
- package/build/core/validation/contract/index.js +8 -0
- package/build/core/validation/contract/map_contract_to_wire_shape.d.ts +3 -0
- package/build/core/validation/contract/map_contract_to_wire_shape.d.ts.map +1 -0
- package/build/core/validation/contract/map_contract_to_wire_shape.js +28 -0
- package/build/core/validation/contract/map_wire_input_to_contract_shape.d.ts +2 -0
- package/build/core/validation/contract/map_wire_input_to_contract_shape.d.ts.map +1 -0
- package/build/core/validation/contract/map_wire_input_to_contract_shape.js +62 -0
- package/build/core/validation/contract/parse_stabilizer_input.d.ts +45 -0
- package/build/core/validation/contract/parse_stabilizer_input.d.ts.map +1 -0
- package/build/core/validation/contract/parse_stabilizer_input.js +26 -0
- package/build/core/validation/contract/parse_stabilizer_output.d.ts +47 -0
- package/build/core/validation/contract/parse_stabilizer_output.d.ts.map +1 -0
- package/build/core/validation/contract/parse_stabilizer_output.js +24 -0
- package/build/core/validation/contract/stabilizer_domain_schema.d.ts +92 -0
- package/build/core/validation/contract/stabilizer_domain_schema.d.ts.map +1 -0
- package/build/core/validation/contract/stabilizer_domain_schema.js +61 -0
- package/build/core/validation/contract/stabilizer_input_schema.d.ts +33 -0
- package/build/core/validation/contract/stabilizer_input_schema.d.ts.map +1 -0
- package/build/core/validation/contract/stabilizer_input_schema.js +11 -0
- package/build/core/validation/contract/stabilizer_output_schema.d.ts +70 -0
- package/build/core/validation/contract/stabilizer_output_schema.d.ts.map +1 -0
- package/build/core/validation/contract/stabilizer_output_schema.js +16 -0
- package/build/core/validation/contract/wire_mapper_record_utils.d.ts +20 -0
- package/build/core/validation/contract/wire_mapper_record_utils.d.ts.map +1 -0
- package/build/core/validation/contract/wire_mapper_record_utils.js +36 -0
- package/build/core/validation/schemas/stabilizer_config_schema.d.ts +4 -1
- package/build/core/validation/schemas/stabilizer_config_schema.d.ts.map +1 -1
- package/build/core/validation/schemas/stabilizer_config_schema.js +4 -1
- package/build/core/waypoint/build_waypoint_zones.d.ts +1 -1
- package/build/core/waypoint/build_waypoint_zones.d.ts.map +1 -1
- package/build/core/waypoint/build_waypoint_zones.js +2 -2
- package/build/core/waypoint/milkrun_wall_reservation.d.ts +24 -0
- package/build/core/waypoint/milkrun_wall_reservation.d.ts.map +1 -0
- package/build/core/waypoint/milkrun_wall_reservation.js +57 -0
- package/build/core/waypoint/milkrun_wall_reservation_helpers.d.ts +15 -0
- package/build/core/waypoint/milkrun_wall_reservation_helpers.d.ts.map +1 -0
- package/build/core/waypoint/milkrun_wall_reservation_helpers.js +48 -0
- package/build/core/waypoint/milkrun_wall_reservation_types.d.ts +16 -0
- package/build/core/waypoint/milkrun_wall_reservation_types.d.ts.map +1 -0
- package/build/core/waypoint/milkrun_wall_reservation_types.js +1 -0
- package/build/core/waypoint/preserves_waypoint_order.d.ts +1 -1
- package/build/core/waypoint/preserves_waypoint_order.d.ts.map +1 -1
- package/build/core/waypoint/validate_waypoint_ids.d.ts +1 -1
- package/build/core/waypoint/validate_waypoint_ids.d.ts.map +1 -1
- package/build/index.d.ts +15 -6
- package/build/index.d.ts.map +1 -1
- package/build/index.js +30 -7
- package/package.json +1 -1
- package/build/core/validation/parse_stabilizer_input.d.ts +0 -8
- package/build/core/validation/parse_stabilizer_input.d.ts.map +0 -1
- package/build/core/validation/parse_stabilizer_input.js +0 -20
- package/build/core/validation/schemas/stabilizer_input_schema.d.ts +0 -110
- package/build/core/validation/schemas/stabilizer_input_schema.d.ts.map +0 -1
- package/build/core/validation/schemas/stabilizer_input_schema.js +0 -34
- package/build/core/validation/schemas/stabilizer_output_schema.d.ts +0 -13
- package/build/core/validation/schemas/stabilizer_output_schema.d.ts.map +0 -1
- package/build/core/validation/schemas/stabilizer_output_schema.js +0 -6
|
@@ -1,8 +1,9 @@
|
|
|
1
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';
|
|
4
6
|
import { clone_containers } from '../move/apply_move.js';
|
|
5
|
-
import { InvalidStabilizerInputError } from '../exceptions/InvalidStabilizerInputError.js';
|
|
6
7
|
/**
|
|
7
8
|
* Builds reorder context from validated stabilizer input.
|
|
8
9
|
* @param input - Validated stabilizer input.
|
|
@@ -10,20 +11,19 @@ import { InvalidStabilizerInputError } from '../exceptions/InvalidStabilizerInpu
|
|
|
10
11
|
* @returns Reorder context for strategy execution.
|
|
11
12
|
*/
|
|
12
13
|
export function build_reorder_context(input, config) {
|
|
13
|
-
const env = input
|
|
14
|
-
if (!env) {
|
|
15
|
-
throw new InvalidStabilizerInputError('cargo_state.envs must contain at least one env');
|
|
16
|
-
}
|
|
14
|
+
const env = read_primary_env(input);
|
|
17
15
|
const all_items = env.containers.flatMap(container => container.items);
|
|
18
16
|
const waypoint_mode = validate_waypoint_ids(all_items);
|
|
19
17
|
const loose_items = collect_loose_items(env.containers);
|
|
18
|
+
const baseline_containers = clone_containers(env.containers);
|
|
20
19
|
return {
|
|
21
20
|
env,
|
|
22
21
|
containers: env.containers,
|
|
23
|
-
baseline_containers
|
|
22
|
+
baseline_containers,
|
|
24
23
|
loose_items,
|
|
25
24
|
config,
|
|
26
25
|
waypoint_mode,
|
|
27
|
-
waypoint_zones: build_waypoint_zones(
|
|
26
|
+
waypoint_zones: build_waypoint_zones(baseline_containers, waypoint_mode),
|
|
27
|
+
milkrun_reserved_z_bands: build_milkrun_bands_from_config(baseline_containers, waypoint_mode, config)
|
|
28
28
|
};
|
|
29
29
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { StabilizerInput } from '../validation/contract/stabilizer_input_schema.js';
|
|
2
|
+
import type { StabilizerEnv } from '../validation/contract/stabilizer_domain_schema.js';
|
|
3
|
+
/**
|
|
4
|
+
* Reads the primary env from stabilizer input.
|
|
5
|
+
* @param input - Validated stabilizer input.
|
|
6
|
+
* @returns First cargo env.
|
|
7
|
+
*/
|
|
8
|
+
export declare function read_primary_env(input: StabilizerInput): StabilizerEnv;
|
|
9
|
+
//# sourceMappingURL=read_primary_env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read_primary_env.d.ts","sourceRoot":"","sources":["../../../src/core/orchestration/read_primary_env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mDAAmD,CAAA;AACxF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oDAAoD,CAAA;AAGvF;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,aAAa,CAQtE"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { InvalidStabilizerInputError } from '../exceptions/InvalidStabilizerInputError.js';
|
|
2
|
+
/**
|
|
3
|
+
* Reads the primary env from stabilizer input.
|
|
4
|
+
* @param input - Validated stabilizer input.
|
|
5
|
+
* @returns First cargo env.
|
|
6
|
+
*/
|
|
7
|
+
export function read_primary_env(input) {
|
|
8
|
+
const env = input.cargo_state.envs[0];
|
|
9
|
+
if (!env) {
|
|
10
|
+
throw new InvalidStabilizerInputError('cargo_state.envs must contain at least one env');
|
|
11
|
+
}
|
|
12
|
+
return env;
|
|
13
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ReorderContext, ReorderStrategy } from './ReorderStrategy.js';
|
|
2
|
-
import type { StabilizerContainer } from '../../validation/
|
|
2
|
+
import type { StabilizerContainer } from '../../validation/contract/stabilizer_domain_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,
|
|
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;AAYhG;;GAEG;AACH,qBAAa,iBAAkB,YAAW,eAAe;IAErD,GAAG,CAAC,OAAO,EAAE,cAAc,GAAG,mBAAmB,EAAE;CAkBtD"}
|
|
@@ -54,14 +54,14 @@ function sort_loose_by_stability(context, eval_context) {
|
|
|
54
54
|
const evaluation = evaluate_trial_layout(context.containers, eval_context);
|
|
55
55
|
return [...context.loose_items].sort((left, right) => {
|
|
56
56
|
const left_index = context.containers[left.container_index].items
|
|
57
|
-
.findIndex(item => item.
|
|
57
|
+
.findIndex(item => item.item_id === left.item_id);
|
|
58
58
|
const right_index = context.containers[right.container_index].items
|
|
59
|
-
.findIndex(item => item.
|
|
59
|
+
.findIndex(item => item.item_id === right.item_id);
|
|
60
60
|
const left_score = read_item_score(evaluation.stability, left.container_index, left_index);
|
|
61
61
|
const right_score = read_item_score(evaluation.stability, right.container_index, right_index);
|
|
62
62
|
return left_score - right_score;
|
|
63
63
|
});
|
|
64
64
|
}
|
|
65
65
|
function find_container_index(containers, item_id) {
|
|
66
|
-
return containers.findIndex(container => container.items.some(item => item.
|
|
66
|
+
return containers.findIndex(container => container.items.some(item => item.item_id === item_id));
|
|
67
67
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ReorderContext, ReorderStrategy } from './ReorderStrategy.js';
|
|
2
|
-
import type { StabilizerContainer } from '../../validation/
|
|
2
|
+
import type { StabilizerContainer } from '../../validation/contract/stabilizer_domain_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,
|
|
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,5 +1,5 @@
|
|
|
1
1
|
import type { ReorderContext, ReorderStrategy } from './ReorderStrategy.js';
|
|
2
|
-
import type { StabilizerContainer } from '../../validation/
|
|
2
|
+
import type { StabilizerContainer } from '../../validation/contract/stabilizer_domain_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,
|
|
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"}
|
|
@@ -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.
|
|
40
|
+
.findIndex(item => 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.
|
|
47
|
+
return containers.findIndex(container => container.items.some(item => 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/
|
|
2
|
+
import type { StabilizerContainer } from '../../validation/contract/stabilizer_domain_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,
|
|
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,7 +1,8 @@
|
|
|
1
1
|
import type { StabilizerConfig } from '../../validation/schemas/stabilizer_config_schema.js';
|
|
2
|
-
import type { StabilizerContainer, StabilizerEnv } from '../../validation/
|
|
2
|
+
import type { StabilizerContainer, StabilizerEnv } from '../../validation/contract/stabilizer_domain_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';
|
|
5
6
|
export interface ReorderContext {
|
|
6
7
|
env: StabilizerEnv;
|
|
7
8
|
containers: StabilizerContainer[];
|
|
@@ -10,6 +11,7 @@ export interface ReorderContext {
|
|
|
10
11
|
config: StabilizerConfig;
|
|
11
12
|
waypoint_mode: WaypointMode;
|
|
12
13
|
waypoint_zones: WaypointZone[];
|
|
14
|
+
milkrun_reserved_z_bands: MilkrunReservedBand[];
|
|
13
15
|
}
|
|
14
16
|
export interface ReorderStrategy {
|
|
15
17
|
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,
|
|
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,5 +1,5 @@
|
|
|
1
1
|
import type { ReorderContext, ReorderStrategy } from './ReorderStrategy.js';
|
|
2
|
-
import type { StabilizerContainer } from '../../validation/
|
|
2
|
+
import type { StabilizerContainer } from '../../validation/contract/stabilizer_domain_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,
|
|
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,5 +1,5 @@
|
|
|
1
1
|
import type { ReorderContext } from './ReorderStrategy.js';
|
|
2
|
-
import type { StabilizerContainer } from '../../validation/
|
|
2
|
+
import type { StabilizerContainer } from '../../validation/contract/stabilizer_domain_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.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anneal_helpers.d.ts","sourceRoot":"","sources":["../../../../src/core/strategies/reorder/anneal_helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"anneal_helpers.d.ts","sourceRoot":"","sources":["../../../../src/core/strategies/reorder/anneal_helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uDAAuD,CAAA;AAChG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAI7D;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC5B,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,mBAAmB,EAAE,GAC/B,aAAa,GAAG,SAAS,CAgB3B;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAWvE"}
|
|
@@ -35,5 +35,5 @@ export function accept_move(delta, temperature) {
|
|
|
35
35
|
return Math.random() < Math.exp(-delta / temperature);
|
|
36
36
|
}
|
|
37
37
|
function find_container_index(containers, item_id) {
|
|
38
|
-
return containers.findIndex(container => container.items.some(item => item.
|
|
38
|
+
return containers.findIndex(container => container.items.some(item => item.item_id === item_id));
|
|
39
39
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { StabilizerContainer } from '../../validation/
|
|
1
|
+
import type { StabilizerContainer } from '../../validation/contract/stabilizer_domain_schema.js';
|
|
2
2
|
import type { ReorderContext } from './ReorderStrategy.js';
|
|
3
3
|
import type { MoveCandidate } from '../../move/apply_move.js';
|
|
4
4
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply_if_gates_pass.d.ts","sourceRoot":"","sources":["../../../../src/core/strategies/reorder/apply_if_gates_pass.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"apply_if_gates_pass.d.ts","sourceRoot":"","sources":["../../../../src/core/strategies/reorder/apply_if_gates_pass.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uDAAuD,CAAA;AAChG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAO7D;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAC/B,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,mBAAmB,EAAE,EAC9B,SAAS,EAAE,aAAa,GACzB,OAAO,CAWT"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ReorderContext } from './ReorderStrategy.js';
|
|
2
|
-
import type { StabilizerContainer } from '../../validation/
|
|
2
|
+
import type { StabilizerContainer } from '../../validation/contract/stabilizer_domain_schema.js';
|
|
3
3
|
import type { LooseItemRef } from '../../filters/loose_item_filter.js';
|
|
4
4
|
import type { StateEvaluationContext } from '../../evaluation/evaluation_context.js';
|
|
5
5
|
export interface BeamExpansionContext {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beam_context.d.ts","sourceRoot":"","sources":["../../../../src/core/strategies/reorder/beam_context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"beam_context.d.ts","sourceRoot":"","sources":["../../../../src/core/strategies/reorder/beam_context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uDAAuD,CAAA;AAChG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAA;AACtE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAA;AAEpF,MAAM,WAAW,oBAAoB;IAEjC,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,EAAE,sBAAsB,CAAA;IAClC,QAAQ,EAAE,SAAS,EAAE,CAAA;IACrB,KAAK,EAAE,SAAS,CAAA;IAChB,KAAK,EAAE,YAAY,CAAA;CACtB;AAED,MAAM,WAAW,SAAS;IAEtB,UAAU,EAAE,mBAAmB,EAAE,CAAA;IACjC,SAAS,EAAE,MAAM,CAAA;CACpB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { MoveCandidate } from '../../../move/apply_move.js';
|
|
2
2
|
import type { ReorderContext } from '../ReorderStrategy.js';
|
|
3
|
-
import type { StabilizerContainer } from '../../../validation/
|
|
3
|
+
import type { StabilizerContainer } from '../../../validation/contract/stabilizer_domain_schema.js';
|
|
4
4
|
export interface ChromosomeGene {
|
|
5
5
|
item_id: string;
|
|
6
6
|
candidate: MoveCandidate;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chromosome.d.ts","sourceRoot":"","sources":["../../../../../src/core/strategies/reorder/genetic/Chromosome.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"Chromosome.d.ts","sourceRoot":"","sources":["../../../../../src/core/strategies/reorder/genetic/Chromosome.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0DAA0D,CAAA;AAEnG,MAAM,WAAW,cAAc;IAE3B,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,aAAa,CAAA;CAC3B;AAED,MAAM,WAAW,eAAe;IAE5B,KAAK,EAAE,cAAc,EAAE,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACpC,OAAO,EAAE,cAAc,EACvB,eAAe,EAAE,MAAM,GACxB,eAAe,EAAE,CAQnB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,GAAG,eAAe,CAMlG;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC3B,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,cAAc,EACvB,aAAa,EAAE,MAAM,GACtB,IAAI,CAeN;AAsBD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAChC,QAAQ,EAAE,mBAAmB,EAAE,EAC/B,QAAQ,EAAE,eAAe,GAC1B,mBAAmB,EAAE,CAgBvB"}
|
|
@@ -61,7 +61,7 @@ function build_identity_candidate(loose) {
|
|
|
61
61
|
export function materialize_organism(baseline, organism) {
|
|
62
62
|
const working = structuredClone(baseline);
|
|
63
63
|
for (const gene of organism.genes) {
|
|
64
|
-
const source_index = working.findIndex(container => container.items.some(item => item.
|
|
64
|
+
const source_index = working.findIndex(container => container.items.some(item => item.item_id === gene.item_id));
|
|
65
65
|
if (source_index < 0) {
|
|
66
66
|
continue;
|
|
67
67
|
}
|
|
@@ -72,7 +72,7 @@ export function materialize_organism(baseline, organism) {
|
|
|
72
72
|
}
|
|
73
73
|
function apply_gene(containers, candidate) {
|
|
74
74
|
const source = containers[candidate.source_container_index];
|
|
75
|
-
const item_index = source.items.findIndex(item => item.
|
|
75
|
+
const item_index = source.items.findIndex(item => item.item_id === candidate.item_id);
|
|
76
76
|
if (item_index < 0) {
|
|
77
77
|
return;
|
|
78
78
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ReorderContext } from './ReorderStrategy.js';
|
|
2
|
-
import type { StabilizerContainer } from '../../validation/
|
|
2
|
+
import type { StabilizerContainer } from '../../validation/contract/stabilizer_domain_schema.js';
|
|
3
3
|
import type { StateEvaluationContext } from '../../evaluation/evaluation_context.js';
|
|
4
4
|
/**
|
|
5
5
|
* Attempts one greedy improvement on the worst loose item.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"greedy_improvement.d.ts","sourceRoot":"","sources":["../../../../src/core/strategies/reorder/greedy_improvement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"greedy_improvement.d.ts","sourceRoot":"","sources":["../../../../src/core/strategies/reorder/greedy_improvement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uDAAuD,CAAA;AAEhG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAA;AAepF;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAC/B,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,mBAAmB,EAAE,EAC9B,YAAY,EAAE,sBAAsB,GACrC,OAAO,CAiBT"}
|
|
@@ -49,7 +49,7 @@ function find_worst_loose(context, containers, item_scores) {
|
|
|
49
49
|
let worst_score = Number.POSITIVE_INFINITY;
|
|
50
50
|
for (const loose of context.loose_items) {
|
|
51
51
|
const item_index = containers[loose.container_index].items
|
|
52
|
-
.findIndex(item => item.
|
|
52
|
+
.findIndex(item => item.item_id === loose.item_id);
|
|
53
53
|
const score = item_scores[loose.container_index]?.[item_index] ?? 0;
|
|
54
54
|
if (score < worst_score) {
|
|
55
55
|
worst_score = score;
|
|
@@ -59,5 +59,5 @@ function find_worst_loose(context, containers, item_scores) {
|
|
|
59
59
|
return worst;
|
|
60
60
|
}
|
|
61
61
|
function find_container_index(containers, item_id) {
|
|
62
|
-
return containers.findIndex(container => container.items.some(item => item.
|
|
62
|
+
return containers.findIndex(container => container.items.some(item => item.item_id === item_id));
|
|
63
63
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare const ITEM_WIRE_TO_CONTRACT: {
|
|
2
|
+
readonly _id: "item_id";
|
|
3
|
+
readonly groupId: "group_id";
|
|
4
|
+
readonly w: "width";
|
|
5
|
+
readonly h: "height";
|
|
6
|
+
readonly d: "depth";
|
|
7
|
+
readonly peso: "weight";
|
|
8
|
+
};
|
|
9
|
+
export declare const CONTAINER_WIRE_TO_CONTRACT: {
|
|
10
|
+
readonly sequencia: "sequence";
|
|
11
|
+
readonly largura: "width";
|
|
12
|
+
readonly altura: "height";
|
|
13
|
+
readonly comprimento: "length";
|
|
14
|
+
};
|
|
15
|
+
export declare const ENV_WIRE_TO_CONTRACT: {
|
|
16
|
+
readonly eixos: "axles";
|
|
17
|
+
};
|
|
18
|
+
export declare const CONTRACT_TO_ITEM_WIRE: Record<string, string>;
|
|
19
|
+
export declare const CONTRACT_TO_CONTAINER_WIRE: Record<string, string>;
|
|
20
|
+
export declare const CONTRACT_TO_ENV_WIRE: Record<string, string>;
|
|
21
|
+
//# sourceMappingURL=cargo_movement_wire_field_map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cargo_movement_wire_field_map.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/contract/cargo_movement_wire_field_map.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB;;;;;;;CAOxB,CAAA;AAEV,eAAO,MAAM,0BAA0B;;;;;CAK7B,CAAA;AAEV,eAAO,MAAM,oBAAoB;;CAEvB,CAAA;AAEV,eAAO,MAAM,qBAAqB,wBAAoC,CAAA;AACtE,eAAO,MAAM,0BAA0B,wBAAyC,CAAA;AAChF,eAAO,MAAM,oBAAoB,wBAAmC,CAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export const ITEM_WIRE_TO_CONTRACT = {
|
|
2
|
+
_id: 'item_id',
|
|
3
|
+
groupId: 'group_id',
|
|
4
|
+
w: 'width',
|
|
5
|
+
h: 'height',
|
|
6
|
+
d: 'depth',
|
|
7
|
+
peso: 'weight'
|
|
8
|
+
};
|
|
9
|
+
export const CONTAINER_WIRE_TO_CONTRACT = {
|
|
10
|
+
sequencia: 'sequence',
|
|
11
|
+
largura: 'width',
|
|
12
|
+
altura: 'height',
|
|
13
|
+
comprimento: 'length'
|
|
14
|
+
};
|
|
15
|
+
export const ENV_WIRE_TO_CONTRACT = {
|
|
16
|
+
eixos: 'axles'
|
|
17
|
+
};
|
|
18
|
+
export const CONTRACT_TO_ITEM_WIRE = invert_map(ITEM_WIRE_TO_CONTRACT);
|
|
19
|
+
export const CONTRACT_TO_CONTAINER_WIRE = invert_map(CONTAINER_WIRE_TO_CONTRACT);
|
|
20
|
+
export const CONTRACT_TO_ENV_WIRE = invert_map(ENV_WIRE_TO_CONTRACT);
|
|
21
|
+
function invert_map(source) {
|
|
22
|
+
const inverted = {};
|
|
23
|
+
for (const [wire_key, contract_key] of Object.entries(source)) {
|
|
24
|
+
inverted[contract_key] = wire_key;
|
|
25
|
+
}
|
|
26
|
+
return inverted;
|
|
27
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { StabilizerCargoState } from './stabilizer_domain_schema.js';
|
|
2
|
+
/**
|
|
3
|
+
* Maps a cargo-movement wire payload to the English contract shape.
|
|
4
|
+
* @param input_data - Unknown CM wire payload.
|
|
5
|
+
* @returns Object ready for strict contract parsing.
|
|
6
|
+
*/
|
|
7
|
+
export declare function map_wire_input_to_contract(input_data: unknown): unknown;
|
|
8
|
+
/**
|
|
9
|
+
* Maps an English contract cargo state back to cargo-movement wire shape.
|
|
10
|
+
* @param cargo_state - English contract cargo state.
|
|
11
|
+
* @returns CM wire cargo state.
|
|
12
|
+
*/
|
|
13
|
+
export declare function map_contract_to_wire_output(cargo_state: StabilizerCargoState): unknown;
|
|
14
|
+
//# sourceMappingURL=cargo_movement_wire_mapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cargo_movement_wire_mapper.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/contract/cargo_movement_wire_mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AAOzE;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAsBvE;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,oBAAoB,GAAG,OAAO,CAGtF"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { map_cargo_state_to_wire } from './map_contract_to_wire_shape.js';
|
|
2
|
+
import { map_cargo_state_to_contract } from './map_wire_input_to_contract_shape.js';
|
|
3
|
+
import { is_record } from './wire_mapper_record_utils.js';
|
|
4
|
+
const INPUT_ENVELOPE_KEYS = new Set(['id', 'company', 'cargo_state', 'config', 'original_input']);
|
|
5
|
+
/**
|
|
6
|
+
* Maps a cargo-movement wire payload to the English contract shape.
|
|
7
|
+
* @param input_data - Unknown CM wire payload.
|
|
8
|
+
* @returns Object ready for strict contract parsing.
|
|
9
|
+
*/
|
|
10
|
+
export function map_wire_input_to_contract(input_data) {
|
|
11
|
+
if (!is_record(input_data)) {
|
|
12
|
+
return input_data;
|
|
13
|
+
}
|
|
14
|
+
const mapped = {};
|
|
15
|
+
for (const [key, value] of Object.entries(input_data)) {
|
|
16
|
+
if (!INPUT_ENVELOPE_KEYS.has(key)) {
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
if (key === 'cargo_state') {
|
|
20
|
+
mapped.cargo_state = map_cargo_state_to_contract(value);
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
mapped[key] = value;
|
|
24
|
+
}
|
|
25
|
+
return mapped;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Maps an English contract cargo state back to cargo-movement wire shape.
|
|
29
|
+
* @param cargo_state - English contract cargo state.
|
|
30
|
+
* @returns CM wire cargo state.
|
|
31
|
+
*/
|
|
32
|
+
export function map_contract_to_wire_output(cargo_state) {
|
|
33
|
+
return map_cargo_state_to_wire(cargo_state);
|
|
34
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ZodError } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Formats Zod validation issues into a single human-readable string.
|
|
4
|
+
* @param error - Zod validation error.
|
|
5
|
+
* @returns Semicolon-separated path messages.
|
|
6
|
+
*/
|
|
7
|
+
export declare function format_zod_error(error: ZodError): string;
|
|
8
|
+
//# sourceMappingURL=format_zod_error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format_zod_error.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/contract/format_zod_error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAA;AAEnC;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAOxD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Formats Zod validation issues into a single human-readable string.
|
|
3
|
+
* @param error - Zod validation error.
|
|
4
|
+
* @returns Semicolon-separated path messages.
|
|
5
|
+
*/
|
|
6
|
+
export function format_zod_error(error) {
|
|
7
|
+
return error.issues.map(issue => {
|
|
8
|
+
const path = issue.path.length > 0 ? issue.path.join('.') : '(root)';
|
|
9
|
+
return `${path}: ${issue.message}`;
|
|
10
|
+
}).join('; ');
|
|
11
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { format_zod_error } from './format_zod_error.js';
|
|
2
|
+
export { ITEM_WIRE_TO_CONTRACT, CONTAINER_WIRE_TO_CONTRACT, ENV_WIRE_TO_CONTRACT, CONTRACT_TO_ITEM_WIRE, CONTRACT_TO_CONTAINER_WIRE, CONTRACT_TO_ENV_WIRE } from './cargo_movement_wire_field_map.js';
|
|
3
|
+
export { map_wire_input_to_contract, map_contract_to_wire_output } from './cargo_movement_wire_mapper.js';
|
|
4
|
+
export { stabilizer_item_schema, stabilizer_container_schema, stabilizer_env_schema, stabilizer_cargo_state_schema, validate_primary_env_waypoints, type StabilizerItem, type StabilizerContainer, type StabilizerEnv, type StabilizerCargoState } from './stabilizer_domain_schema.js';
|
|
5
|
+
export { stabilizer_input_schema, type StabilizerInput } from './stabilizer_input_schema.js';
|
|
6
|
+
export { stabilizer_response_schema, stabilizer_success_response_schema, stabilizer_error_response_schema, type StabilizerResponse, type StabilizerSuccessResponse, type StabilizerErrorResponse } from './stabilizer_output_schema.js';
|
|
7
|
+
export { parse_stabilizer_input, safe_parse_stabilizer_input } from './parse_stabilizer_input.js';
|
|
8
|
+
export { parse_stabilizer_output, safe_parse_stabilizer_output } from './parse_stabilizer_output.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/contract/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EACH,qBAAqB,EACrB,0BAA0B,EAC1B,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAC1B,oBAAoB,EACvB,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EACH,0BAA0B,EAC1B,2BAA2B,EAC9B,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACH,sBAAsB,EACtB,2BAA2B,EAC3B,qBAAqB,EACrB,6BAA6B,EAC7B,8BAA8B,EAC9B,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EAC5B,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,uBAAuB,EAAE,KAAK,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC5F,OAAO,EACH,0BAA0B,EAC1B,kCAAkC,EAClC,gCAAgC,EAChC,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,EAC/B,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACH,sBAAsB,EACtB,2BAA2B,EAC9B,MAAM,6BAA6B,CAAA;AACpC,OAAO,EACH,uBAAuB,EACvB,4BAA4B,EAC/B,MAAM,8BAA8B,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { format_zod_error } from './format_zod_error.js';
|
|
2
|
+
export { ITEM_WIRE_TO_CONTRACT, CONTAINER_WIRE_TO_CONTRACT, ENV_WIRE_TO_CONTRACT, CONTRACT_TO_ITEM_WIRE, CONTRACT_TO_CONTAINER_WIRE, CONTRACT_TO_ENV_WIRE } from './cargo_movement_wire_field_map.js';
|
|
3
|
+
export { map_wire_input_to_contract, map_contract_to_wire_output } from './cargo_movement_wire_mapper.js';
|
|
4
|
+
export { stabilizer_item_schema, stabilizer_container_schema, stabilizer_env_schema, stabilizer_cargo_state_schema, validate_primary_env_waypoints } from './stabilizer_domain_schema.js';
|
|
5
|
+
export { stabilizer_input_schema } from './stabilizer_input_schema.js';
|
|
6
|
+
export { stabilizer_response_schema, stabilizer_success_response_schema, stabilizer_error_response_schema } from './stabilizer_output_schema.js';
|
|
7
|
+
export { parse_stabilizer_input, safe_parse_stabilizer_input } from './parse_stabilizer_input.js';
|
|
8
|
+
export { parse_stabilizer_output, safe_parse_stabilizer_output } from './parse_stabilizer_output.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map_contract_to_wire_shape.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/contract/map_contract_to_wire_shape.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AAGzE,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,oBAAoB,GAAG,OAAO,CAUlF"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { CONTRACT_TO_CONTAINER_WIRE, CONTRACT_TO_ITEM_WIRE } from './cargo_movement_wire_field_map.js';
|
|
2
|
+
import { rename_keys } from './wire_mapper_record_utils.js';
|
|
3
|
+
export function map_cargo_state_to_wire(cargo_state) {
|
|
4
|
+
const wire = {
|
|
5
|
+
envs: cargo_state.envs.map(map_env_to_wire)
|
|
6
|
+
};
|
|
7
|
+
if (cargo_state.config !== undefined) {
|
|
8
|
+
wire.config = cargo_state.config;
|
|
9
|
+
}
|
|
10
|
+
return wire;
|
|
11
|
+
}
|
|
12
|
+
function map_env_to_wire(env) {
|
|
13
|
+
const wire = {
|
|
14
|
+
containers: env.containers.map(map_container_to_wire)
|
|
15
|
+
};
|
|
16
|
+
if (env.axles !== undefined) {
|
|
17
|
+
wire.eixos = env.axles;
|
|
18
|
+
}
|
|
19
|
+
return wire;
|
|
20
|
+
}
|
|
21
|
+
function map_container_to_wire(container) {
|
|
22
|
+
const wire = rename_keys(container, CONTRACT_TO_CONTAINER_WIRE);
|
|
23
|
+
wire.items = container.items.map(map_item_to_wire);
|
|
24
|
+
return wire;
|
|
25
|
+
}
|
|
26
|
+
function map_item_to_wire(item) {
|
|
27
|
+
return rename_keys(item, CONTRACT_TO_ITEM_WIRE);
|
|
28
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map_wire_input_to_contract_shape.d.ts","sourceRoot":"","sources":["../../../../src/core/validation/contract/map_wire_input_to_contract_shape.ts"],"names":[],"mappings":"AAOA,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAiBnE"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { CONTAINER_WIRE_TO_CONTRACT, ENV_WIRE_TO_CONTRACT, ITEM_WIRE_TO_CONTRACT } from './cargo_movement_wire_field_map.js';
|
|
2
|
+
import { is_record, pick_keys, rename_keys } from './wire_mapper_record_utils.js';
|
|
3
|
+
export function map_cargo_state_to_contract(value) {
|
|
4
|
+
if (!is_record(value)) {
|
|
5
|
+
return value;
|
|
6
|
+
}
|
|
7
|
+
const mapped = {};
|
|
8
|
+
if (value.config !== undefined) {
|
|
9
|
+
mapped.config = value.config;
|
|
10
|
+
}
|
|
11
|
+
if (Array.isArray(value.envs)) {
|
|
12
|
+
mapped.envs = value.envs.map(map_env_to_contract);
|
|
13
|
+
}
|
|
14
|
+
return mapped;
|
|
15
|
+
}
|
|
16
|
+
function map_env_to_contract(value) {
|
|
17
|
+
if (!is_record(value)) {
|
|
18
|
+
return value;
|
|
19
|
+
}
|
|
20
|
+
const mapped = rename_keys(value, ENV_WIRE_TO_CONTRACT);
|
|
21
|
+
if (Array.isArray(value.containers)) {
|
|
22
|
+
mapped.containers = value.containers.map(map_container_to_contract);
|
|
23
|
+
}
|
|
24
|
+
return pick_env_contract_keys(mapped);
|
|
25
|
+
}
|
|
26
|
+
function map_container_to_contract(value) {
|
|
27
|
+
if (!is_record(value)) {
|
|
28
|
+
return value;
|
|
29
|
+
}
|
|
30
|
+
const mapped = rename_keys(value, CONTAINER_WIRE_TO_CONTRACT);
|
|
31
|
+
if (Array.isArray(value.items)) {
|
|
32
|
+
mapped.items = value.items.map(map_item_to_contract);
|
|
33
|
+
}
|
|
34
|
+
return pick_container_contract_keys(mapped);
|
|
35
|
+
}
|
|
36
|
+
function map_item_to_contract(value) {
|
|
37
|
+
if (!is_record(value)) {
|
|
38
|
+
return value;
|
|
39
|
+
}
|
|
40
|
+
const mapped = rename_keys(value, ITEM_WIRE_TO_CONTRACT);
|
|
41
|
+
return pick_item_contract_keys(mapped);
|
|
42
|
+
}
|
|
43
|
+
function pick_item_contract_keys(source) {
|
|
44
|
+
return pick_keys(source, [
|
|
45
|
+
'item_id', 'group_id', 'waypoint_id', 'x', 'y', 'z',
|
|
46
|
+
'width', 'height', 'depth', 'weight'
|
|
47
|
+
]);
|
|
48
|
+
}
|
|
49
|
+
function pick_container_contract_keys(source) {
|
|
50
|
+
const picked = pick_keys(source, ['sequence', 'width', 'height', 'length']);
|
|
51
|
+
if (Array.isArray(source.items)) {
|
|
52
|
+
picked.items = source.items;
|
|
53
|
+
}
|
|
54
|
+
return picked;
|
|
55
|
+
}
|
|
56
|
+
function pick_env_contract_keys(source) {
|
|
57
|
+
const picked = pick_keys(source, ['axles']);
|
|
58
|
+
if (Array.isArray(source.containers)) {
|
|
59
|
+
picked.containers = source.containers;
|
|
60
|
+
}
|
|
61
|
+
return picked;
|
|
62
|
+
}
|