dabke 0.82.0 → 0.84.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.
- package/CHANGELOG.md +44 -0
- package/README.md +22 -24
- package/dist/client.d.ts +39 -3
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js.map +1 -1
- package/dist/client.schemas.d.ts +118 -18
- package/dist/client.schemas.d.ts.map +1 -1
- package/dist/client.schemas.js +110 -6
- package/dist/client.schemas.js.map +1 -1
- package/dist/client.types.d.ts +63 -7
- package/dist/client.types.d.ts.map +1 -1
- package/dist/client.types.js.map +1 -1
- package/dist/cpsat/cost.d.ts +5 -2
- package/dist/cpsat/cost.d.ts.map +1 -1
- package/dist/cpsat/cost.js +13 -6
- package/dist/cpsat/cost.js.map +1 -1
- package/dist/cpsat/model-builder.d.ts +42 -61
- package/dist/cpsat/model-builder.d.ts.map +1 -1
- package/dist/cpsat/model-builder.js +451 -56
- package/dist/cpsat/model-builder.js.map +1 -1
- package/dist/cpsat/response.d.ts +19 -7
- package/dist/cpsat/response.d.ts.map +1 -1
- package/dist/cpsat/response.js +48 -9
- package/dist/cpsat/response.js.map +1 -1
- package/dist/cpsat/rule-descriptor.d.ts +250 -0
- package/dist/cpsat/rule-descriptor.d.ts.map +1 -0
- package/dist/cpsat/rule-descriptor.js +51 -0
- package/dist/cpsat/rule-descriptor.js.map +1 -0
- package/dist/cpsat/rules/artifacts.d.ts +9 -0
- package/dist/cpsat/rules/artifacts.d.ts.map +1 -0
- package/dist/cpsat/rules/artifacts.js +31 -0
- package/dist/cpsat/rules/artifacts.js.map +1 -0
- package/dist/cpsat/rules/assign-together.d.ts +18 -20
- package/dist/cpsat/rules/assign-together.d.ts.map +1 -1
- package/dist/cpsat/rules/assign-together.js +90 -54
- package/dist/cpsat/rules/assign-together.js.map +1 -1
- package/dist/cpsat/rules/assigned-day.d.ts +12 -0
- package/dist/cpsat/rules/assigned-day.d.ts.map +1 -0
- package/dist/cpsat/rules/assigned-day.js +43 -0
- package/dist/cpsat/rules/assigned-day.js.map +1 -0
- package/dist/cpsat/rules/assignment-priority.d.ts +15 -29
- package/dist/cpsat/rules/assignment-priority.d.ts.map +1 -1
- package/dist/cpsat/rules/assignment-priority.js +47 -50
- package/dist/cpsat/rules/assignment-priority.js.map +1 -1
- package/dist/cpsat/rules/assignment-terms.d.ts +6 -0
- package/dist/cpsat/rules/assignment-terms.d.ts.map +1 -0
- package/dist/cpsat/rules/assignment-terms.js +19 -0
- package/dist/cpsat/rules/assignment-terms.js.map +1 -0
- package/dist/cpsat/rules/concurrent-intervals.d.ts +19 -0
- package/dist/cpsat/rules/concurrent-intervals.d.ts.map +1 -0
- package/dist/cpsat/rules/concurrent-intervals.js +57 -0
- package/dist/cpsat/rules/concurrent-intervals.js.map +1 -0
- package/dist/cpsat/rules/cost-utils.d.ts +1 -3
- package/dist/cpsat/rules/cost-utils.d.ts.map +1 -1
- package/dist/cpsat/rules/cost-utils.js +0 -7
- package/dist/cpsat/rules/cost-utils.js.map +1 -1
- package/dist/cpsat/rules/day-cost-multiplier.d.ts +10 -10
- package/dist/cpsat/rules/day-cost-multiplier.d.ts.map +1 -1
- package/dist/cpsat/rules/day-cost-multiplier.js +88 -77
- package/dist/cpsat/rules/day-cost-multiplier.js.map +1 -1
- package/dist/cpsat/rules/day-cost-surcharge.d.ts +10 -10
- package/dist/cpsat/rules/day-cost-surcharge.d.ts.map +1 -1
- package/dist/cpsat/rules/day-cost-surcharge.js +76 -65
- package/dist/cpsat/rules/day-cost-surcharge.js.map +1 -1
- package/dist/cpsat/rules/index.d.ts +30 -21
- package/dist/cpsat/rules/index.d.ts.map +1 -1
- package/dist/cpsat/rules/index.js +30 -21
- package/dist/cpsat/rules/index.js.map +1 -1
- package/dist/cpsat/rules/location-preference.d.ts +14 -21
- package/dist/cpsat/rules/location-preference.d.ts.map +1 -1
- package/dist/cpsat/rules/location-preference.js +45 -45
- package/dist/cpsat/rules/location-preference.js.map +1 -1
- package/dist/cpsat/rules/max-concurrent-assignments.d.ts +46 -0
- package/dist/cpsat/rules/max-concurrent-assignments.d.ts.map +1 -0
- package/dist/cpsat/rules/max-concurrent-assignments.js +121 -0
- package/dist/cpsat/rules/max-concurrent-assignments.js.map +1 -0
- package/dist/cpsat/rules/max-consecutive-days.d.ts +18 -17
- package/dist/cpsat/rules/max-consecutive-days.d.ts.map +1 -1
- package/dist/cpsat/rules/max-consecutive-days.js +67 -66
- package/dist/cpsat/rules/max-consecutive-days.js.map +1 -1
- package/dist/cpsat/rules/max-days-of-week-per-period.d.ts +45 -0
- package/dist/cpsat/rules/max-days-of-week-per-period.d.ts.map +1 -0
- package/dist/cpsat/rules/max-days-of-week-per-period.js +95 -0
- package/dist/cpsat/rules/max-days-of-week-per-period.js.map +1 -0
- package/dist/cpsat/rules/max-days-week.d.ts +30 -0
- package/dist/cpsat/rules/max-days-week.d.ts.map +1 -0
- package/dist/cpsat/rules/max-days-week.js +83 -0
- package/dist/cpsat/rules/max-days-week.js.map +1 -0
- package/dist/cpsat/rules/max-hours-day.d.ts +14 -31
- package/dist/cpsat/rules/max-hours-day.d.ts.map +1 -1
- package/dist/cpsat/rules/max-hours-day.js +56 -72
- package/dist/cpsat/rules/max-hours-day.js.map +1 -1
- package/dist/cpsat/rules/max-hours-week.d.ts +15 -31
- package/dist/cpsat/rules/max-hours-week.d.ts.map +1 -1
- package/dist/cpsat/rules/max-hours-week.js +60 -75
- package/dist/cpsat/rules/max-hours-week.js.map +1 -1
- package/dist/cpsat/rules/max-shifts-day.d.ts +17 -33
- package/dist/cpsat/rules/max-shifts-day.d.ts.map +1 -1
- package/dist/cpsat/rules/max-shifts-day.js +57 -73
- package/dist/cpsat/rules/max-shifts-day.js.map +1 -1
- package/dist/cpsat/rules/min-consecutive-days.d.ts +18 -18
- package/dist/cpsat/rules/min-consecutive-days.d.ts.map +1 -1
- package/dist/cpsat/rules/min-consecutive-days.js +123 -94
- package/dist/cpsat/rules/min-consecutive-days.js.map +1 -1
- package/dist/cpsat/rules/min-days-of-week-per-period.d.ts +35 -0
- package/dist/cpsat/rules/min-days-of-week-per-period.d.ts.map +1 -0
- package/dist/cpsat/rules/min-days-of-week-per-period.js +108 -0
- package/dist/cpsat/rules/min-days-of-week-per-period.js.map +1 -0
- package/dist/cpsat/rules/min-days-week.d.ts +21 -0
- package/dist/cpsat/rules/min-days-week.d.ts.map +1 -0
- package/dist/cpsat/rules/min-days-week.js +95 -0
- package/dist/cpsat/rules/min-days-week.js.map +1 -0
- package/dist/cpsat/rules/min-hours-day.d.ts +14 -17
- package/dist/cpsat/rules/min-hours-day.d.ts.map +1 -1
- package/dist/cpsat/rules/min-hours-day.js +72 -54
- package/dist/cpsat/rules/min-hours-day.js.map +1 -1
- package/dist/cpsat/rules/min-hours-week.d.ts +15 -18
- package/dist/cpsat/rules/min-hours-week.d.ts.map +1 -1
- package/dist/cpsat/rules/min-hours-week.js +75 -57
- package/dist/cpsat/rules/min-hours-week.js.map +1 -1
- package/dist/cpsat/rules/min-rest-between-shifts.d.ts +14 -17
- package/dist/cpsat/rules/min-rest-between-shifts.d.ts.map +1 -1
- package/dist/cpsat/rules/min-rest-between-shifts.js +148 -138
- package/dist/cpsat/rules/min-rest-between-shifts.js.map +1 -1
- package/dist/cpsat/rules/minimize-cost.d.ts +2 -18
- package/dist/cpsat/rules/minimize-cost.d.ts.map +1 -1
- package/dist/cpsat/rules/minimize-cost.js +151 -163
- package/dist/cpsat/rules/minimize-cost.js.map +1 -1
- package/dist/cpsat/rules/must-assign.d.ts +12 -0
- package/dist/cpsat/rules/must-assign.d.ts.map +1 -0
- package/dist/cpsat/rules/must-assign.js +54 -0
- package/dist/cpsat/rules/must-assign.js.map +1 -0
- package/dist/cpsat/rules/overtime-daily-multiplier.d.ts +6 -10
- package/dist/cpsat/rules/overtime-daily-multiplier.d.ts.map +1 -1
- package/dist/cpsat/rules/overtime-daily-multiplier.js +118 -112
- package/dist/cpsat/rules/overtime-daily-multiplier.js.map +1 -1
- package/dist/cpsat/rules/overtime-daily-surcharge.d.ts +6 -11
- package/dist/cpsat/rules/overtime-daily-surcharge.d.ts.map +1 -1
- package/dist/cpsat/rules/overtime-daily-surcharge.js +104 -99
- package/dist/cpsat/rules/overtime-daily-surcharge.js.map +1 -1
- package/dist/cpsat/rules/overtime-tiered-multiplier.d.ts +9 -21
- package/dist/cpsat/rules/overtime-tiered-multiplier.d.ts.map +1 -1
- package/dist/cpsat/rules/overtime-tiered-multiplier.js +181 -199
- package/dist/cpsat/rules/overtime-tiered-multiplier.js.map +1 -1
- package/dist/cpsat/rules/overtime-weekly-multiplier.d.ts +13 -12
- package/dist/cpsat/rules/overtime-weekly-multiplier.d.ts.map +1 -1
- package/dist/cpsat/rules/overtime-weekly-multiplier.js +143 -143
- package/dist/cpsat/rules/overtime-weekly-multiplier.js.map +1 -1
- package/dist/cpsat/rules/overtime-weekly-surcharge.d.ts +7 -11
- package/dist/cpsat/rules/overtime-weekly-surcharge.d.ts.map +1 -1
- package/dist/cpsat/rules/overtime-weekly-surcharge.js +124 -119
- package/dist/cpsat/rules/overtime-weekly-surcharge.js.map +1 -1
- package/dist/cpsat/rules/pattern-eligibility.d.ts +6 -0
- package/dist/cpsat/rules/pattern-eligibility.d.ts.map +1 -0
- package/dist/cpsat/rules/pattern-eligibility.js +16 -0
- package/dist/cpsat/rules/pattern-eligibility.js.map +1 -0
- package/dist/cpsat/rules/pattern-time.d.ts +5 -0
- package/dist/cpsat/rules/pattern-time.d.ts.map +1 -0
- package/dist/cpsat/rules/pattern-time.js +20 -0
- package/dist/cpsat/rules/pattern-time.js.map +1 -0
- package/dist/cpsat/rules/registry.d.ts +217 -27
- package/dist/cpsat/rules/registry.d.ts.map +1 -1
- package/dist/cpsat/rules/registry.js +98 -31
- package/dist/cpsat/rules/registry.js.map +1 -1
- package/dist/cpsat/rules/resolver.d.ts +9 -7
- package/dist/cpsat/rules/resolver.d.ts.map +1 -1
- package/dist/cpsat/rules/resolver.js +19 -18
- package/dist/cpsat/rules/resolver.js.map +1 -1
- package/dist/cpsat/rules/role-preference.d.ts +24 -0
- package/dist/cpsat/rules/role-preference.d.ts.map +1 -0
- package/dist/cpsat/rules/role-preference.js +72 -0
- package/dist/cpsat/rules/role-preference.js.map +1 -0
- package/dist/cpsat/rules/rules.types.d.ts +93 -17
- package/dist/cpsat/rules/rules.types.d.ts.map +1 -1
- package/dist/cpsat/rules/scope.types.d.ts +25 -12
- package/dist/cpsat/rules/scope.types.d.ts.map +1 -1
- package/dist/cpsat/rules/scope.types.js +14 -19
- package/dist/cpsat/rules/scope.types.js.map +1 -1
- package/dist/cpsat/rules/target-days-week.d.ts +31 -0
- package/dist/cpsat/rules/target-days-week.d.ts.map +1 -0
- package/dist/cpsat/rules/target-days-week.js +80 -0
- package/dist/cpsat/rules/target-days-week.js.map +1 -0
- package/dist/cpsat/rules/target-peak-concurrent-assignments.d.ts +33 -0
- package/dist/cpsat/rules/target-peak-concurrent-assignments.d.ts.map +1 -0
- package/dist/cpsat/rules/target-peak-concurrent-assignments.js +146 -0
- package/dist/cpsat/rules/target-peak-concurrent-assignments.js.map +1 -0
- package/dist/cpsat/rules/time-cost-surcharge.d.ts +15 -14
- package/dist/cpsat/rules/time-cost-surcharge.d.ts.map +1 -1
- package/dist/cpsat/rules/time-cost-surcharge.js +82 -96
- package/dist/cpsat/rules/time-cost-surcharge.js.map +1 -1
- package/dist/cpsat/rules/time-off.d.ts +21 -57
- package/dist/cpsat/rules/time-off.d.ts.map +1 -1
- package/dist/cpsat/rules/time-off.js +114 -127
- package/dist/cpsat/rules/time-off.js.map +1 -1
- package/dist/cpsat/rules/variables.d.ts +4 -0
- package/dist/cpsat/rules/variables.d.ts.map +1 -0
- package/dist/cpsat/rules/variables.js +10 -0
- package/dist/cpsat/rules/variables.js.map +1 -0
- package/dist/cpsat/rules.d.ts +20 -3
- package/dist/cpsat/rules.d.ts.map +1 -1
- package/dist/cpsat/rules.js +19 -2
- package/dist/cpsat/rules.js.map +1 -1
- package/dist/cpsat/semantic-time.d.ts +7 -6
- package/dist/cpsat/semantic-time.d.ts.map +1 -1
- package/dist/cpsat/semantic-time.js +15 -28
- package/dist/cpsat/semantic-time.js.map +1 -1
- package/dist/cpsat/types.d.ts +47 -4
- package/dist/cpsat/types.d.ts.map +1 -1
- package/dist/cpsat/types.js +24 -1
- package/dist/cpsat/types.js.map +1 -1
- package/dist/cpsat/utils.d.ts +23 -6
- package/dist/cpsat/utils.d.ts.map +1 -1
- package/dist/cpsat/utils.js +76 -15
- package/dist/cpsat/utils.js.map +1 -1
- package/dist/cpsat/validation-reporter.d.ts +6 -2
- package/dist/cpsat/validation-reporter.d.ts.map +1 -1
- package/dist/cpsat/validation-reporter.js +122 -10
- package/dist/cpsat/validation-reporter.js.map +1 -1
- package/dist/cpsat/validation.types.d.ts +21 -10
- package/dist/cpsat/validation.types.d.ts.map +1 -1
- package/dist/datetime.utils.d.ts +7 -13
- package/dist/datetime.utils.d.ts.map +1 -1
- package/dist/datetime.utils.js +29 -36
- package/dist/datetime.utils.js.map +1 -1
- package/dist/index.d.ts +15 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -4
- package/dist/index.js.map +1 -1
- package/dist/schedule/cost.d.ts +192 -0
- package/dist/schedule/cost.d.ts.map +1 -0
- package/dist/schedule/cost.js +151 -0
- package/dist/schedule/cost.js.map +1 -0
- package/dist/schedule/coverage.d.ts +114 -0
- package/dist/schedule/coverage.d.ts.map +1 -0
- package/dist/schedule/coverage.js +56 -0
- package/dist/schedule/coverage.js.map +1 -0
- package/dist/schedule/definition.d.ts +346 -0
- package/dist/schedule/definition.d.ts.map +1 -0
- package/dist/schedule/definition.js +668 -0
- package/dist/schedule/definition.js.map +1 -0
- package/dist/schedule/index.d.ts +67 -0
- package/dist/schedule/index.d.ts.map +1 -0
- package/dist/schedule/index.js +69 -0
- package/dist/schedule/index.js.map +1 -0
- package/dist/schedule/rules.d.ts +678 -0
- package/dist/schedule/rules.d.ts.map +1 -0
- package/dist/schedule/rules.js +554 -0
- package/dist/schedule/rules.js.map +1 -0
- package/dist/schedule/shift-patterns.d.ts +17 -0
- package/dist/schedule/shift-patterns.d.ts.map +1 -0
- package/dist/schedule/shift-patterns.js +24 -0
- package/dist/schedule/shift-patterns.js.map +1 -0
- package/dist/schedule/time-periods.d.ts +79 -0
- package/dist/schedule/time-periods.d.ts.map +1 -0
- package/dist/schedule/time-periods.js +101 -0
- package/dist/schedule/time-periods.js.map +1 -0
- package/dist/types.d.ts +67 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +64 -0
- package/dist/types.js.map +1 -1
- package/package.json +8 -14
- package/solver/src/solver/models.py +41 -4
- package/solver/src/solver/solver.py +546 -157
- package/solver/tests/test_solver.py +363 -7
- package/src/client.schemas.ts +127 -10
- package/src/client.ts +3 -0
- package/src/client.types.ts +73 -7
- package/src/cpsat/cost.ts +17 -7
- package/src/cpsat/model-builder.ts +614 -129
- package/src/cpsat/response.ts +57 -13
- package/src/cpsat/rule-descriptor.ts +311 -0
- package/src/cpsat/rules/artifacts.ts +56 -0
- package/src/cpsat/rules/assign-together.ts +104 -69
- package/src/cpsat/rules/assigned-day.ts +70 -0
- package/src/cpsat/rules/assignment-priority.ts +54 -58
- package/src/cpsat/rules/assignment-terms.ts +43 -0
- package/src/cpsat/rules/concurrent-intervals.ts +93 -0
- package/src/cpsat/rules/cost-utils.ts +1 -9
- package/src/cpsat/rules/day-cost-multiplier.ts +101 -81
- package/src/cpsat/rules/day-cost-surcharge.ts +91 -70
- package/src/cpsat/rules/index.ts +30 -21
- package/src/cpsat/rules/location-preference.ts +47 -52
- package/src/cpsat/rules/max-concurrent-assignments.ts +170 -0
- package/src/cpsat/rules/max-consecutive-days.ts +74 -91
- package/src/cpsat/rules/max-days-of-week-per-period.ts +127 -0
- package/src/cpsat/rules/max-days-week.ts +117 -0
- package/src/cpsat/rules/max-hours-day.ts +64 -84
- package/src/cpsat/rules/max-hours-week.ts +74 -90
- package/src/cpsat/rules/max-shifts-day.ts +65 -85
- package/src/cpsat/rules/min-consecutive-days.ts +161 -127
- package/src/cpsat/rules/min-days-of-week-per-period.ts +144 -0
- package/src/cpsat/rules/min-days-week.ts +122 -0
- package/src/cpsat/rules/min-hours-day.ts +79 -58
- package/src/cpsat/rules/min-hours-week.ts +87 -62
- package/src/cpsat/rules/min-rest-between-shifts.ts +191 -178
- package/src/cpsat/rules/minimize-cost.ts +175 -188
- package/src/cpsat/rules/must-assign.ts +71 -0
- package/src/cpsat/rules/overtime-daily-multiplier.ts +158 -140
- package/src/cpsat/rules/overtime-daily-surcharge.ts +141 -126
- package/src/cpsat/rules/overtime-tiered-multiplier.ts +234 -253
- package/src/cpsat/rules/overtime-weekly-multiplier.ts +183 -175
- package/src/cpsat/rules/overtime-weekly-surcharge.ts +161 -150
- package/src/cpsat/rules/pattern-eligibility.ts +26 -0
- package/src/cpsat/rules/pattern-time.ts +30 -0
- package/src/cpsat/rules/registry.ts +140 -56
- package/src/cpsat/rules/resolver.ts +58 -30
- package/src/cpsat/rules/role-preference.ts +92 -0
- package/src/cpsat/rules/rules.types.ts +92 -17
- package/src/cpsat/rules/scope.types.ts +32 -27
- package/src/cpsat/rules/target-days-week.ts +105 -0
- package/src/cpsat/rules/target-peak-concurrent-assignments.ts +212 -0
- package/src/cpsat/rules/time-cost-surcharge.ts +116 -122
- package/src/cpsat/rules/time-off.ts +154 -163
- package/src/cpsat/rules/variables.ts +11 -0
- package/src/cpsat/rules.ts +43 -17
- package/src/cpsat/semantic-time.ts +29 -43
- package/src/cpsat/types.ts +53 -4
- package/src/cpsat/utils.ts +92 -20
- package/src/cpsat/validation-reporter.ts +170 -19
- package/src/cpsat/validation.types.ts +22 -11
- package/src/datetime.utils.ts +45 -44
- package/src/index.ts +72 -15
- package/src/schedule/cost.ts +221 -0
- package/src/schedule/coverage.ts +164 -0
- package/src/schedule/definition.ts +1447 -0
- package/src/schedule/index.ts +132 -0
- package/src/schedule/rules.ts +1028 -0
- package/src/schedule/shift-patterns.ts +29 -0
- package/src/schedule/time-periods.ts +120 -0
- package/src/types.ts +114 -2
- package/dist/llms.d.ts +0 -2
- package/dist/llms.d.ts.map +0 -1
- package/dist/llms.js +0 -3
- package/dist/llms.js.map +0 -1
- package/dist/schedule.d.ts +0 -917
- package/dist/schedule.d.ts.map +0 -1
- package/dist/schedule.js +0 -1323
- package/dist/schedule.js.map +0 -1
- package/llms.txt +0 -758
- package/src/llms.ts +0 -3
- package/src/schedule.ts +0 -1960
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,50 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
This changelog was generated from the git history of the project when it was
|
|
6
6
|
named `scheduling-core`, prior to the rename to `dabke` in v0.78.0.
|
|
7
7
|
|
|
8
|
+
## 0.84.0 (2026-06-03)
|
|
9
|
+
|
|
10
|
+
### Breaking Changes
|
|
11
|
+
|
|
12
|
+
- Replace string day representations in compiled model internals with `SchedulingDay` values.
|
|
13
|
+
- Replace the older assignment preference helper shape with `preferAssignment()` and `avoidAssignment()`, and add role-specific preference support with `preferRole()`.
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
- Add `targetPeakConcurrentAssignments()` for soft peak-concurrency targets that can be paired with `maxConcurrentAssignments()` hard caps.
|
|
18
|
+
- Add feasibility-only solve strategy support for finding any hard-feasible schedule while ignoring soft objectives.
|
|
19
|
+
- Report assigned roles in solver assignments when a shift can satisfy multiple roles.
|
|
20
|
+
- Report hard constraint conflicts for infeasible schedules when hard diagnostics are enabled.
|
|
21
|
+
|
|
22
|
+
### Improvements
|
|
23
|
+
|
|
24
|
+
- Compile rules through descriptors and artifacts for more consistent constraint tracking and validation.
|
|
25
|
+
- Add staged objective transport so the solver can optimize objective stages in priority order.
|
|
26
|
+
- Fail fast when staged solve requests return an unexpected solver error.
|
|
27
|
+
- Update devDependencies.
|
|
28
|
+
|
|
29
|
+
## 0.83.0 (2026-03-21)
|
|
30
|
+
|
|
31
|
+
### Breaking Changes
|
|
32
|
+
|
|
33
|
+
- Remove `./llms` export path and `llms.txt` from the package. The LLM reference
|
|
34
|
+
is now generated externally via `generate:reference`.
|
|
35
|
+
|
|
36
|
+
### Features
|
|
37
|
+
|
|
38
|
+
- Add `maxDaysPerWeek(days, opts?)` and `minDaysPerWeek(days, opts?)` rule functions
|
|
39
|
+
to constrain the number of distinct working days per member per scheduling week.
|
|
40
|
+
- Add `mustAssign(opts?)` rule for staffing obligations. Guarantees targeted members
|
|
41
|
+
appear on the schedule each week; defaults to HIGH priority so the schedule still
|
|
42
|
+
generates when a member cannot be placed.
|
|
43
|
+
|
|
44
|
+
### Improvements
|
|
45
|
+
|
|
46
|
+
- Split `schedule.ts` into focused modules under `src/schedule/` (public API unchanged).
|
|
47
|
+
- Add `NoInfer` on coverage entry types so role/skill references are checked against
|
|
48
|
+
declared roles and skills at compile time.
|
|
49
|
+
- Update devDependencies (@types/node ^25.0.0, commander ^14.0.3).
|
|
50
|
+
- Publish workflow now includes changelog text in GitHub releases.
|
|
51
|
+
|
|
8
52
|
## 0.82.0 (2026-02-23)
|
|
9
53
|
|
|
10
54
|
### Breaking Changes
|
package/README.md
CHANGED
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
cover,
|
|
17
17
|
shift,
|
|
18
18
|
maxHoursPerWeek,
|
|
19
|
+
maxConcurrentAssignments,
|
|
19
20
|
minRestBetweenShifts,
|
|
20
21
|
timeOff,
|
|
21
22
|
minimizeCost,
|
|
@@ -55,6 +56,7 @@ const venue = schedule({
|
|
|
55
56
|
|
|
56
57
|
rules: [
|
|
57
58
|
maxHoursPerWeek(40),
|
|
59
|
+
maxConcurrentAssignments(3, { appliesTo: "barista" }),
|
|
58
60
|
minRestBetweenShifts(11),
|
|
59
61
|
timeOff({ appliesTo: "alice", dayOfWeek: weekend }),
|
|
60
62
|
minimizeCost(),
|
|
@@ -145,20 +147,26 @@ const ready = venue.with([
|
|
|
145
147
|
|
|
146
148
|
### Scheduling
|
|
147
149
|
|
|
148
|
-
| Function
|
|
149
|
-
|
|
|
150
|
-
| `maxHoursPerDay(hours)`
|
|
151
|
-
| `maxHoursPerWeek(hours)`
|
|
152
|
-
| `minHoursPerDay(hours)`
|
|
153
|
-
| `minHoursPerWeek(hours)`
|
|
154
|
-
| `maxShiftsPerDay(n)`
|
|
155
|
-
| `
|
|
156
|
-
| `
|
|
157
|
-
| `
|
|
158
|
-
| `
|
|
159
|
-
| `
|
|
160
|
-
| `
|
|
161
|
-
| `
|
|
150
|
+
| Function | Description |
|
|
151
|
+
| ------------------------------------ | -------------------------------------- |
|
|
152
|
+
| `maxHoursPerDay(hours)` | Max hours per person per day |
|
|
153
|
+
| `maxHoursPerWeek(hours)` | Max hours per person per week |
|
|
154
|
+
| `minHoursPerDay(hours)` | Min hours per person per day |
|
|
155
|
+
| `minHoursPerWeek(hours)` | Min hours per person per week |
|
|
156
|
+
| `maxShiftsPerDay(n)` | Max shift assignments per day |
|
|
157
|
+
| `maxConcurrentAssignments(n)` | Max concurrent assignments in a window |
|
|
158
|
+
| `targetPeakConcurrentAssignments(n)` | Preferred peak concurrent assignments |
|
|
159
|
+
| `maxConsecutiveDays(n)` | Max consecutive assigned days |
|
|
160
|
+
| `minConsecutiveDays(n)` | Min consecutive assigned days |
|
|
161
|
+
| `maxDaysOfWeekPerPeriod(n, days, p)` | Max matching weekdays across a period |
|
|
162
|
+
| `minDaysOfWeekPerPeriod(n, days, p)` | Min matching weekdays across a period |
|
|
163
|
+
| `minRestBetweenShifts(h)` | Min rest hours between shifts |
|
|
164
|
+
| `timeOff(opts)` | Block assignments during periods |
|
|
165
|
+
| `preferAssignment(opts)` | Prefer assigning targeted members |
|
|
166
|
+
| `avoidAssignment(opts)` | Avoid assigning targeted members |
|
|
167
|
+
| `preferRole(id, opts)` | Prefer members in a specific role |
|
|
168
|
+
| `preferLocation(id, opts)` | Prefer members at specific locations |
|
|
169
|
+
| `assignTogether(opts)` | Keep members on the same shifts |
|
|
162
170
|
|
|
163
171
|
### Cost
|
|
164
172
|
|
|
@@ -176,16 +184,6 @@ const ready = venue.with([
|
|
|
176
184
|
|
|
177
185
|
---
|
|
178
186
|
|
|
179
|
-
## LLM Integration
|
|
180
|
-
|
|
181
|
-
dabke ships an `llms.txt` with complete API documentation for AI code generation:
|
|
182
|
-
|
|
183
|
-
```typescript
|
|
184
|
-
import { apiDocs } from "dabke/llms";
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
---
|
|
188
|
-
|
|
189
187
|
## Development
|
|
190
188
|
|
|
191
189
|
Unit tests (no dependencies): `npm run test:unit`
|
package/dist/client.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type FetcherLike, type SolverClient, type SolverRequest } from "./client.types.js";
|
|
2
|
-
export type { SolverClient, SolverRequest, SolverResponse, SolverVariable, SolverConstraint, SolverTerm, SolverObjective, FetcherLike, } from "./client.types.js";
|
|
2
|
+
export type { SolverClient, SolverRequest, SolverResponse, SolverVariable, SolverConstraint, SolverTerm, SolverObjective, SolverObjectiveStage, SolverMode, SolverStageResult, FetcherLike, } from "./client.types.js";
|
|
3
3
|
/**
|
|
4
4
|
* Generic HTTP client for the solver service.
|
|
5
5
|
*
|
|
@@ -11,7 +11,33 @@ export declare class HttpSolverClient implements SolverClient {
|
|
|
11
11
|
solve(request: SolverRequest, options?: {
|
|
12
12
|
signal?: AbortSignal;
|
|
13
13
|
}): Promise<{
|
|
14
|
-
status: "OPTIMAL" | "FEASIBLE"
|
|
14
|
+
status: "OPTIMAL" | "FEASIBLE";
|
|
15
|
+
softConstraintViolations: {
|
|
16
|
+
constraintId: string;
|
|
17
|
+
violationAmount: number;
|
|
18
|
+
targetValue: number;
|
|
19
|
+
actualValue: number;
|
|
20
|
+
}[];
|
|
21
|
+
values?: Record<string, number> | undefined;
|
|
22
|
+
statistics?: {
|
|
23
|
+
solveTimeMs?: number | undefined;
|
|
24
|
+
conflicts?: number | undefined;
|
|
25
|
+
branches?: number | undefined;
|
|
26
|
+
} | undefined;
|
|
27
|
+
error?: string | undefined;
|
|
28
|
+
solutionInfo?: string | undefined;
|
|
29
|
+
hardConstraintConflicts?: {
|
|
30
|
+
constraintId: string;
|
|
31
|
+
}[] | undefined;
|
|
32
|
+
stageResults?: {
|
|
33
|
+
id: string;
|
|
34
|
+
status: "OPTIMAL" | "FEASIBLE" | "INFEASIBLE" | "TIMEOUT" | "ERROR";
|
|
35
|
+
solveTimeMs: number;
|
|
36
|
+
objectiveValue?: number | undefined;
|
|
37
|
+
bestObjectiveBound?: number | undefined;
|
|
38
|
+
}[] | undefined;
|
|
39
|
+
} | {
|
|
40
|
+
status: "INFEASIBLE" | "TIMEOUT" | "ERROR";
|
|
15
41
|
values?: Record<string, number> | undefined;
|
|
16
42
|
statistics?: {
|
|
17
43
|
solveTimeMs?: number | undefined;
|
|
@@ -20,7 +46,17 @@ export declare class HttpSolverClient implements SolverClient {
|
|
|
20
46
|
} | undefined;
|
|
21
47
|
error?: string | undefined;
|
|
22
48
|
solutionInfo?: string | undefined;
|
|
23
|
-
|
|
49
|
+
hardConstraintConflicts?: {
|
|
50
|
+
constraintId: string;
|
|
51
|
+
}[] | undefined;
|
|
52
|
+
stageResults?: {
|
|
53
|
+
id: string;
|
|
54
|
+
status: "OPTIMAL" | "FEASIBLE" | "INFEASIBLE" | "TIMEOUT" | "ERROR";
|
|
55
|
+
solveTimeMs: number;
|
|
56
|
+
objectiveValue?: number | undefined;
|
|
57
|
+
bestObjectiveBound?: number | undefined;
|
|
58
|
+
}[] | undefined;
|
|
59
|
+
softConstraintViolations?: {
|
|
24
60
|
constraintId: string;
|
|
25
61
|
violationAmount: number;
|
|
26
62
|
targetValue: number;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAG5F,YAAY,EACV,YAAY,EACZ,aAAa,EACb,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAS3B;;;;GAIG;AACH,qBAAa,gBAAiB,YAAW,YAAY;;gBAIvC,OAAO,EAAE,WAAW,EAAE,OAAO,GAAE,MAAgC;IAKrE,KAAK,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAG5F,YAAY,EACV,YAAY,EACZ,aAAa,EACb,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,oBAAoB,EACpB,UAAU,EACV,iBAAiB,EACjB,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAS3B;;;;GAIG;AACH,qBAAa,gBAAiB,YAAW,YAAY;;gBAIvC,OAAO,EAAE,WAAW,EAAE,OAAO,GAAE,MAAgC;IAKrE,KAAK,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAqBhE,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ9B"}
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAgB3D,MAAM,cAAc,GAAG,CACrB,OAAoB,EAC8C,EAAE;IACpE,IAAI,OAAO,OAAO,KAAK,UAAU;QAAE,OAAO,OAAO,CAAC;IAClD,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,OAAO,gBAAgB;IAC3B,MAAM,CAAiE;IACvE,QAAQ,CAAS;IAEjB,YAAY,OAAoB,EAAE,UAAkB,uBAAuB;QACzE,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAsB,EAAE,OAAkC;QACpE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,QAAQ,EAAE;YACtD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC7B,MAAM,EAAE,OAAO,EAAE,MAAM;SACxB,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAClC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QAED,OAAO,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,SAAS,CAAC,CAAC;QACzD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;CACF"}
|
package/dist/client.schemas.d.ts
CHANGED
|
@@ -53,6 +53,7 @@ export declare const LinearConstraintSchema: z.ZodObject<{
|
|
|
53
53
|
}, z.core.$strip>>;
|
|
54
54
|
op: z.ZodUnion<readonly [z.ZodLiteral<"<=">, z.ZodLiteral<">=">, z.ZodLiteral<"==">]>;
|
|
55
55
|
rhs: z.ZodNumber;
|
|
56
|
+
id: z.ZodOptional<z.ZodString>;
|
|
56
57
|
}, z.core.$strip>;
|
|
57
58
|
export declare const SoftLinearConstraintSchema: z.ZodObject<{
|
|
58
59
|
type: z.ZodLiteral<"soft_linear">;
|
|
@@ -64,6 +65,7 @@ export declare const SoftLinearConstraintSchema: z.ZodObject<{
|
|
|
64
65
|
rhs: z.ZodNumber;
|
|
65
66
|
penalty: z.ZodNumber;
|
|
66
67
|
id: z.ZodOptional<z.ZodString>;
|
|
68
|
+
stage: z.ZodOptional<z.ZodString>;
|
|
67
69
|
}, z.core.$strip>;
|
|
68
70
|
export declare const ExactlyOneConstraintSchema: z.ZodObject<{
|
|
69
71
|
type: z.ZodLiteral<"exactly_one">;
|
|
@@ -98,6 +100,7 @@ export declare const SolverConstraintSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
98
100
|
}, z.core.$strip>>;
|
|
99
101
|
op: z.ZodUnion<readonly [z.ZodLiteral<"<=">, z.ZodLiteral<">=">, z.ZodLiteral<"==">]>;
|
|
100
102
|
rhs: z.ZodNumber;
|
|
103
|
+
id: z.ZodOptional<z.ZodString>;
|
|
101
104
|
}, z.core.$strip>, z.ZodObject<{
|
|
102
105
|
type: z.ZodLiteral<"soft_linear">;
|
|
103
106
|
terms: z.ZodArray<z.ZodObject<{
|
|
@@ -108,6 +111,7 @@ export declare const SolverConstraintSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
108
111
|
rhs: z.ZodNumber;
|
|
109
112
|
penalty: z.ZodNumber;
|
|
110
113
|
id: z.ZodOptional<z.ZodString>;
|
|
114
|
+
stage: z.ZodOptional<z.ZodString>;
|
|
111
115
|
}, z.core.$strip>, z.ZodObject<{
|
|
112
116
|
type: z.ZodLiteral<"exactly_one">;
|
|
113
117
|
vars: z.ZodArray<z.ZodString>;
|
|
@@ -135,9 +139,49 @@ export declare const SolverObjectiveSchema: z.ZodObject<{
|
|
|
135
139
|
coeff: z.ZodNumber;
|
|
136
140
|
}, z.core.$strip>>;
|
|
137
141
|
}, z.core.$strip>;
|
|
142
|
+
export declare const SolverObjectiveStageSchema: z.ZodObject<{
|
|
143
|
+
sense: z.ZodUnion<readonly [z.ZodLiteral<"minimize">, z.ZodLiteral<"maximize">]>;
|
|
144
|
+
terms: z.ZodArray<z.ZodObject<{
|
|
145
|
+
var: z.ZodString;
|
|
146
|
+
coeff: z.ZodNumber;
|
|
147
|
+
}, z.core.$strip>>;
|
|
148
|
+
id: z.ZodString;
|
|
149
|
+
}, z.core.$strip>;
|
|
150
|
+
export declare const SolverModeSchema: z.ZodEnum<{
|
|
151
|
+
optimize: "optimize";
|
|
152
|
+
satisfy: "satisfy";
|
|
153
|
+
}>;
|
|
154
|
+
export declare const SolverDiagnosticModeSchema: z.ZodEnum<{
|
|
155
|
+
none: "none";
|
|
156
|
+
hard: "hard";
|
|
157
|
+
}>;
|
|
138
158
|
export declare const SolverOptionsSchema: z.ZodObject<{
|
|
139
159
|
timeLimitSeconds: z.ZodOptional<z.ZodNumber>;
|
|
140
160
|
solutionLimit: z.ZodOptional<z.ZodNumber>;
|
|
161
|
+
diagnostics: z.ZodOptional<z.ZodEnum<{
|
|
162
|
+
none: "none";
|
|
163
|
+
hard: "hard";
|
|
164
|
+
}>>;
|
|
165
|
+
}, z.core.$strip>;
|
|
166
|
+
export declare const SolverStatusSchema: z.ZodEnum<{
|
|
167
|
+
OPTIMAL: "OPTIMAL";
|
|
168
|
+
FEASIBLE: "FEASIBLE";
|
|
169
|
+
INFEASIBLE: "INFEASIBLE";
|
|
170
|
+
TIMEOUT: "TIMEOUT";
|
|
171
|
+
ERROR: "ERROR";
|
|
172
|
+
}>;
|
|
173
|
+
export declare const SolverStageResultSchema: z.ZodObject<{
|
|
174
|
+
id: z.ZodString;
|
|
175
|
+
status: z.ZodEnum<{
|
|
176
|
+
OPTIMAL: "OPTIMAL";
|
|
177
|
+
FEASIBLE: "FEASIBLE";
|
|
178
|
+
INFEASIBLE: "INFEASIBLE";
|
|
179
|
+
TIMEOUT: "TIMEOUT";
|
|
180
|
+
ERROR: "ERROR";
|
|
181
|
+
}>;
|
|
182
|
+
objectiveValue: z.ZodOptional<z.ZodNumber>;
|
|
183
|
+
bestObjectiveBound: z.ZodOptional<z.ZodNumber>;
|
|
184
|
+
solveTimeMs: z.ZodNumber;
|
|
141
185
|
}, z.core.$strip>;
|
|
142
186
|
export declare const SolverRequestSchema: z.ZodObject<{
|
|
143
187
|
variables: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
@@ -164,6 +208,7 @@ export declare const SolverRequestSchema: z.ZodObject<{
|
|
|
164
208
|
}, z.core.$strip>>;
|
|
165
209
|
op: z.ZodUnion<readonly [z.ZodLiteral<"<=">, z.ZodLiteral<">=">, z.ZodLiteral<"==">]>;
|
|
166
210
|
rhs: z.ZodNumber;
|
|
211
|
+
id: z.ZodOptional<z.ZodString>;
|
|
167
212
|
}, z.core.$strip>, z.ZodObject<{
|
|
168
213
|
type: z.ZodLiteral<"soft_linear">;
|
|
169
214
|
terms: z.ZodArray<z.ZodObject<{
|
|
@@ -174,6 +219,7 @@ export declare const SolverRequestSchema: z.ZodObject<{
|
|
|
174
219
|
rhs: z.ZodNumber;
|
|
175
220
|
penalty: z.ZodNumber;
|
|
176
221
|
id: z.ZodOptional<z.ZodString>;
|
|
222
|
+
stage: z.ZodOptional<z.ZodString>;
|
|
177
223
|
}, z.core.$strip>, z.ZodObject<{
|
|
178
224
|
type: z.ZodLiteral<"exactly_one">;
|
|
179
225
|
vars: z.ZodArray<z.ZodString>;
|
|
@@ -201,37 +247,42 @@ export declare const SolverRequestSchema: z.ZodObject<{
|
|
|
201
247
|
coeff: z.ZodNumber;
|
|
202
248
|
}, z.core.$strip>>;
|
|
203
249
|
}, z.core.$strip>>;
|
|
250
|
+
objectiveStages: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
251
|
+
sense: z.ZodUnion<readonly [z.ZodLiteral<"minimize">, z.ZodLiteral<"maximize">]>;
|
|
252
|
+
terms: z.ZodArray<z.ZodObject<{
|
|
253
|
+
var: z.ZodString;
|
|
254
|
+
coeff: z.ZodNumber;
|
|
255
|
+
}, z.core.$strip>>;
|
|
256
|
+
id: z.ZodString;
|
|
257
|
+
}, z.core.$strip>>>;
|
|
258
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
259
|
+
optimize: "optimize";
|
|
260
|
+
satisfy: "satisfy";
|
|
261
|
+
}>>;
|
|
204
262
|
options: z.ZodOptional<z.ZodObject<{
|
|
205
263
|
timeLimitSeconds: z.ZodOptional<z.ZodNumber>;
|
|
206
264
|
solutionLimit: z.ZodOptional<z.ZodNumber>;
|
|
265
|
+
diagnostics: z.ZodOptional<z.ZodEnum<{
|
|
266
|
+
none: "none";
|
|
267
|
+
hard: "hard";
|
|
268
|
+
}>>;
|
|
207
269
|
}, z.core.$strip>>;
|
|
208
270
|
}, z.core.$strip>;
|
|
209
|
-
export declare const SolverStatusSchema: z.ZodEnum<{
|
|
210
|
-
OPTIMAL: "OPTIMAL";
|
|
211
|
-
FEASIBLE: "FEASIBLE";
|
|
212
|
-
INFEASIBLE: "INFEASIBLE";
|
|
213
|
-
TIMEOUT: "TIMEOUT";
|
|
214
|
-
ERROR: "ERROR";
|
|
215
|
-
}>;
|
|
216
271
|
export declare const SolverStatisticsSchema: z.ZodObject<{
|
|
217
272
|
solveTimeMs: z.ZodOptional<z.ZodNumber>;
|
|
218
273
|
conflicts: z.ZodOptional<z.ZodNumber>;
|
|
219
274
|
branches: z.ZodOptional<z.ZodNumber>;
|
|
220
275
|
}, z.core.$strip>;
|
|
221
|
-
export declare const
|
|
276
|
+
export declare const SolverSoftConstraintViolationSchema: z.ZodObject<{
|
|
222
277
|
constraintId: z.ZodString;
|
|
223
278
|
violationAmount: z.ZodNumber;
|
|
224
279
|
targetValue: z.ZodNumber;
|
|
225
280
|
actualValue: z.ZodNumber;
|
|
226
281
|
}, z.core.$strip>;
|
|
227
|
-
export declare const
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
INFEASIBLE: "INFEASIBLE";
|
|
232
|
-
TIMEOUT: "TIMEOUT";
|
|
233
|
-
ERROR: "ERROR";
|
|
234
|
-
}>;
|
|
282
|
+
export declare const SolverHardConstraintConflictSchema: z.ZodObject<{
|
|
283
|
+
constraintId: z.ZodString;
|
|
284
|
+
}, z.core.$strip>;
|
|
285
|
+
export declare const SolverResponseSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
235
286
|
values: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
|
|
236
287
|
statistics: z.ZodOptional<z.ZodObject<{
|
|
237
288
|
solveTimeMs: z.ZodOptional<z.ZodNumber>;
|
|
@@ -240,11 +291,60 @@ export declare const SolverResponseSchema: z.ZodObject<{
|
|
|
240
291
|
}, z.core.$strip>>;
|
|
241
292
|
error: z.ZodOptional<z.ZodString>;
|
|
242
293
|
solutionInfo: z.ZodOptional<z.ZodString>;
|
|
243
|
-
|
|
294
|
+
hardConstraintConflicts: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
295
|
+
constraintId: z.ZodString;
|
|
296
|
+
}, z.core.$strip>>>;
|
|
297
|
+
stageResults: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
298
|
+
id: z.ZodString;
|
|
299
|
+
status: z.ZodEnum<{
|
|
300
|
+
OPTIMAL: "OPTIMAL";
|
|
301
|
+
FEASIBLE: "FEASIBLE";
|
|
302
|
+
INFEASIBLE: "INFEASIBLE";
|
|
303
|
+
TIMEOUT: "TIMEOUT";
|
|
304
|
+
ERROR: "ERROR";
|
|
305
|
+
}>;
|
|
306
|
+
objectiveValue: z.ZodOptional<z.ZodNumber>;
|
|
307
|
+
bestObjectiveBound: z.ZodOptional<z.ZodNumber>;
|
|
308
|
+
solveTimeMs: z.ZodNumber;
|
|
309
|
+
}, z.core.$strip>>>;
|
|
310
|
+
status: z.ZodUnion<readonly [z.ZodLiteral<"OPTIMAL">, z.ZodLiteral<"FEASIBLE">]>;
|
|
311
|
+
softConstraintViolations: z.ZodArray<z.ZodObject<{
|
|
244
312
|
constraintId: z.ZodString;
|
|
245
313
|
violationAmount: z.ZodNumber;
|
|
246
314
|
targetValue: z.ZodNumber;
|
|
247
315
|
actualValue: z.ZodNumber;
|
|
316
|
+
}, z.core.$strip>>;
|
|
317
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
318
|
+
values: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
|
|
319
|
+
statistics: z.ZodOptional<z.ZodObject<{
|
|
320
|
+
solveTimeMs: z.ZodOptional<z.ZodNumber>;
|
|
321
|
+
conflicts: z.ZodOptional<z.ZodNumber>;
|
|
322
|
+
branches: z.ZodOptional<z.ZodNumber>;
|
|
323
|
+
}, z.core.$strip>>;
|
|
324
|
+
error: z.ZodOptional<z.ZodString>;
|
|
325
|
+
solutionInfo: z.ZodOptional<z.ZodString>;
|
|
326
|
+
hardConstraintConflicts: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
327
|
+
constraintId: z.ZodString;
|
|
248
328
|
}, z.core.$strip>>>;
|
|
249
|
-
|
|
329
|
+
stageResults: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
330
|
+
id: z.ZodString;
|
|
331
|
+
status: z.ZodEnum<{
|
|
332
|
+
OPTIMAL: "OPTIMAL";
|
|
333
|
+
FEASIBLE: "FEASIBLE";
|
|
334
|
+
INFEASIBLE: "INFEASIBLE";
|
|
335
|
+
TIMEOUT: "TIMEOUT";
|
|
336
|
+
ERROR: "ERROR";
|
|
337
|
+
}>;
|
|
338
|
+
objectiveValue: z.ZodOptional<z.ZodNumber>;
|
|
339
|
+
bestObjectiveBound: z.ZodOptional<z.ZodNumber>;
|
|
340
|
+
solveTimeMs: z.ZodNumber;
|
|
341
|
+
}, z.core.$strip>>>;
|
|
342
|
+
status: z.ZodUnion<readonly [z.ZodLiteral<"INFEASIBLE">, z.ZodLiteral<"TIMEOUT">, z.ZodLiteral<"ERROR">]>;
|
|
343
|
+
softConstraintViolations: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
344
|
+
constraintId: z.ZodString;
|
|
345
|
+
violationAmount: z.ZodNumber;
|
|
346
|
+
targetValue: z.ZodNumber;
|
|
347
|
+
actualValue: z.ZodNumber;
|
|
348
|
+
}, z.core.$strip>>>;
|
|
349
|
+
}, z.core.$strip>]>;
|
|
250
350
|
//# sourceMappingURL=client.schemas.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.schemas.d.ts","sourceRoot":"","sources":["../src/client.schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,gBAAgB;;;iBAG3B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;iBAG7B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;iBAK5B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;iBAQjC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;mBAI/B,CAAC;AAMH,eAAO,MAAM,sBAAsB
|
|
1
|
+
{"version":3,"file":"client.schemas.d.ts","sourceRoot":"","sources":["../src/client.schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,gBAAgB;;;iBAG3B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;iBAG7B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;iBAK5B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;iBAQjC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;mBAI/B,CAAC;AAMH,eAAO,MAAM,sBAAsB;;;;;;;;;iBAMjC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;;;;;iBAQrC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;iBAGrC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;iBAGpC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;iBAKtC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;iBAGjC,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;iBAGlC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;iBAGpC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBASjC,CAAC;AAMH,eAAO,MAAM,qBAAqB;;;;;;iBAGhC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;iBAErC,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;EAAkC,CAAC;AAChE,eAAO,MAAM,0BAA0B;;;EAA2B,CAAC;AAMnE,eAAO,MAAM,mBAAmB;;;;;;;iBAI9B,CAAC;AAMH,eAAO,MAAM,kBAAkB;;;;;;EAAoE,CAAC;AAEpG,eAAO,MAAM,uBAAuB;;;;;;;;;;;;iBAMlC,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAqF5B,CAAC;AAEL,eAAO,MAAM,sBAAsB;;;;iBAIjC,CAAC;AAEH,eAAO,MAAM,mCAAmC;;;;;iBAK9C,CAAC;AAEH,eAAO,MAAM,kCAAkC;;iBAE7C,CAAC;AAqBH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAG/B,CAAC"}
|
package/dist/client.schemas.js
CHANGED
|
@@ -46,6 +46,7 @@ export const LinearConstraintSchema = z.object({
|
|
|
46
46
|
terms: z.array(SolverTermSchema),
|
|
47
47
|
op: z.union([z.literal("<="), z.literal(">="), z.literal("==")]),
|
|
48
48
|
rhs: z.number(),
|
|
49
|
+
id: z.string().optional(),
|
|
49
50
|
});
|
|
50
51
|
export const SoftLinearConstraintSchema = z.object({
|
|
51
52
|
type: z.literal("soft_linear"),
|
|
@@ -54,6 +55,7 @@ export const SoftLinearConstraintSchema = z.object({
|
|
|
54
55
|
rhs: z.number(),
|
|
55
56
|
penalty: z.number(),
|
|
56
57
|
id: z.string().optional(),
|
|
58
|
+
stage: z.string().optional(),
|
|
57
59
|
});
|
|
58
60
|
export const ExactlyOneConstraintSchema = z.object({
|
|
59
61
|
type: z.literal("exactly_one"),
|
|
@@ -98,40 +100,142 @@ export const SolverObjectiveSchema = z.object({
|
|
|
98
100
|
sense: z.union([z.literal("minimize"), z.literal("maximize")]),
|
|
99
101
|
terms: z.array(SolverTermSchema),
|
|
100
102
|
});
|
|
103
|
+
export const SolverObjectiveStageSchema = SolverObjectiveSchema.extend({
|
|
104
|
+
id: z.string(),
|
|
105
|
+
});
|
|
106
|
+
export const SolverModeSchema = z.enum(["optimize", "satisfy"]);
|
|
107
|
+
export const SolverDiagnosticModeSchema = z.enum(["none", "hard"]);
|
|
101
108
|
// --------------------------------------------------------------------------
|
|
102
109
|
// Options schema
|
|
103
110
|
// --------------------------------------------------------------------------
|
|
104
111
|
export const SolverOptionsSchema = z.object({
|
|
105
112
|
timeLimitSeconds: z.number().optional(),
|
|
106
113
|
solutionLimit: z.number().optional(),
|
|
114
|
+
diagnostics: SolverDiagnosticModeSchema.optional(),
|
|
107
115
|
});
|
|
108
116
|
// --------------------------------------------------------------------------
|
|
109
117
|
// Request/Response schemas
|
|
110
118
|
// --------------------------------------------------------------------------
|
|
111
|
-
export const
|
|
119
|
+
export const SolverStatusSchema = z.enum(["OPTIMAL", "FEASIBLE", "INFEASIBLE", "TIMEOUT", "ERROR"]);
|
|
120
|
+
export const SolverStageResultSchema = z.object({
|
|
121
|
+
id: z.string(),
|
|
122
|
+
status: SolverStatusSchema,
|
|
123
|
+
objectiveValue: z.number().optional(),
|
|
124
|
+
bestObjectiveBound: z.number().optional(),
|
|
125
|
+
solveTimeMs: z.number(),
|
|
126
|
+
});
|
|
127
|
+
export const SolverRequestSchema = z
|
|
128
|
+
.object({
|
|
112
129
|
variables: z.array(SolverVariableSchema),
|
|
113
130
|
constraints: z.array(SolverConstraintSchema),
|
|
114
131
|
objective: SolverObjectiveSchema.optional(),
|
|
132
|
+
objectiveStages: z.array(SolverObjectiveStageSchema).optional(),
|
|
133
|
+
mode: SolverModeSchema.optional(),
|
|
115
134
|
options: SolverOptionsSchema.optional(),
|
|
135
|
+
})
|
|
136
|
+
.superRefine((request, ctx) => {
|
|
137
|
+
if (request.objective && request.objectiveStages) {
|
|
138
|
+
ctx.addIssue({
|
|
139
|
+
code: "custom",
|
|
140
|
+
path: ["objectiveStages"],
|
|
141
|
+
message: "objective and objectiveStages cannot both be present",
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
if (request.objectiveStages !== undefined) {
|
|
145
|
+
if (request.objectiveStages.length === 0) {
|
|
146
|
+
ctx.addIssue({
|
|
147
|
+
code: "custom",
|
|
148
|
+
path: ["objectiveStages"],
|
|
149
|
+
message: "objectiveStages cannot be empty",
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
const seenStageIds = new Set();
|
|
153
|
+
for (const [index, stage] of request.objectiveStages.entries()) {
|
|
154
|
+
if (seenStageIds.has(stage.id)) {
|
|
155
|
+
ctx.addIssue({
|
|
156
|
+
code: "custom",
|
|
157
|
+
path: ["objectiveStages", index, "id"],
|
|
158
|
+
message: `Duplicate objective stage id ${stage.id}`,
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
seenStageIds.add(stage.id);
|
|
162
|
+
}
|
|
163
|
+
if (request.options?.solutionLimit === 1) {
|
|
164
|
+
ctx.addIssue({
|
|
165
|
+
code: "custom",
|
|
166
|
+
path: ["options", "solutionLimit"],
|
|
167
|
+
message: "objectiveStages cannot be used with solutionLimit=1",
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
for (const [index, constraint] of request.constraints.entries()) {
|
|
171
|
+
if (constraint.type !== "soft_linear")
|
|
172
|
+
continue;
|
|
173
|
+
if (constraint.stage === undefined) {
|
|
174
|
+
ctx.addIssue({
|
|
175
|
+
code: "custom",
|
|
176
|
+
path: ["constraints", index, "stage"],
|
|
177
|
+
message: "Soft linear constraint requires stage when objectiveStages are used",
|
|
178
|
+
});
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
if (!seenStageIds.has(constraint.stage)) {
|
|
182
|
+
ctx.addIssue({
|
|
183
|
+
code: "custom",
|
|
184
|
+
path: ["constraints", index, "stage"],
|
|
185
|
+
message: `Soft linear constraint stage ${constraint.stage} is not declared`,
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
if (request.mode === "satisfy") {
|
|
191
|
+
if (request.objective) {
|
|
192
|
+
ctx.addIssue({
|
|
193
|
+
code: "custom",
|
|
194
|
+
path: ["objective"],
|
|
195
|
+
message: 'mode "satisfy" cannot be used with objective',
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
if (request.objectiveStages) {
|
|
199
|
+
ctx.addIssue({
|
|
200
|
+
code: "custom",
|
|
201
|
+
path: ["objectiveStages"],
|
|
202
|
+
message: 'mode "satisfy" cannot be used with objectiveStages',
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
}
|
|
116
206
|
});
|
|
117
|
-
export const SolverStatusSchema = z.enum(["OPTIMAL", "FEASIBLE", "INFEASIBLE", "TIMEOUT", "ERROR"]);
|
|
118
207
|
export const SolverStatisticsSchema = z.object({
|
|
119
208
|
solveTimeMs: z.number().optional(),
|
|
120
209
|
conflicts: z.number().optional(),
|
|
121
210
|
branches: z.number().optional(),
|
|
122
211
|
});
|
|
123
|
-
export const
|
|
212
|
+
export const SolverSoftConstraintViolationSchema = z.object({
|
|
124
213
|
constraintId: z.string(),
|
|
125
214
|
violationAmount: z.number(),
|
|
126
215
|
targetValue: z.number(),
|
|
127
216
|
actualValue: z.number(),
|
|
128
217
|
});
|
|
129
|
-
export const
|
|
130
|
-
|
|
218
|
+
export const SolverHardConstraintConflictSchema = z.object({
|
|
219
|
+
constraintId: z.string(),
|
|
220
|
+
});
|
|
221
|
+
const SolverResponseBaseSchema = z.object({
|
|
131
222
|
values: z.record(z.string(), z.number()).optional(),
|
|
132
223
|
statistics: SolverStatisticsSchema.optional(),
|
|
133
224
|
error: z.string().optional(),
|
|
134
225
|
solutionInfo: z.string().optional(),
|
|
135
|
-
|
|
226
|
+
hardConstraintConflicts: z.array(SolverHardConstraintConflictSchema).optional(),
|
|
227
|
+
stageResults: z.array(SolverStageResultSchema).optional(),
|
|
136
228
|
});
|
|
229
|
+
const SuccessfulSolverResponseSchema = SolverResponseBaseSchema.extend({
|
|
230
|
+
status: z.union([z.literal("OPTIMAL"), z.literal("FEASIBLE")]),
|
|
231
|
+
softConstraintViolations: z.array(SolverSoftConstraintViolationSchema),
|
|
232
|
+
});
|
|
233
|
+
const NonSuccessfulSolverResponseSchema = SolverResponseBaseSchema.extend({
|
|
234
|
+
status: z.union([z.literal("INFEASIBLE"), z.literal("TIMEOUT"), z.literal("ERROR")]),
|
|
235
|
+
softConstraintViolations: z.array(SolverSoftConstraintViolationSchema).optional(),
|
|
236
|
+
});
|
|
237
|
+
export const SolverResponseSchema = z.union([
|
|
238
|
+
SuccessfulSolverResponseSchema,
|
|
239
|
+
NonSuccessfulSolverResponseSchema,
|
|
240
|
+
]);
|
|
137
241
|
//# sourceMappingURL=client.schemas.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.schemas.js","sourceRoot":"","sources":["../src/client.schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,6EAA6E;AAC7E,mBAAmB;AACnB,6EAA6E;AAE7E,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;CAClB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACvB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;CACjB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACtB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;CAChB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,6EAA6E;IAC7E,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC;IAC1C,kBAAkB;IAClB,iBAAiB;IACjB,sBAAsB;CACvB,CAAC,CAAC;AAEH,6EAA6E;AAC7E,qBAAqB;AACrB,6EAA6E;AAE7E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACzB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;IAChC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"client.schemas.js","sourceRoot":"","sources":["../src/client.schemas.ts"],"names":[],"mappings":"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"}
|