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
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schedule definition, compilation, and solving.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import type { DateString, DayOfWeek } from "../types.js";
|
|
7
|
+
import type { SemanticTimeEntry } from "../cpsat/semantic-time.js";
|
|
8
|
+
import type { CompilationResult } from "../cpsat/model-builder.js";
|
|
9
|
+
import { ModelBuilder } from "../cpsat/model-builder.js";
|
|
10
|
+
import type { SchedulingMember, ShiftPattern } from "../cpsat/types.js";
|
|
11
|
+
import type { BuiltInCpsatRuleRegistry, CpsatRuleConfigEntryFor, CpsatRuleRegistry } from "../cpsat/rules/rules.types.js";
|
|
12
|
+
import type { SolverClient } from "../client.types.js";
|
|
13
|
+
import type { ShiftAssignment } from "../cpsat/response.js";
|
|
14
|
+
import type { ScheduleValidation } from "../cpsat/validation.types.js";
|
|
15
|
+
import type { CostBreakdown } from "../cpsat/cost.js";
|
|
16
|
+
import type { CoverageEntry } from "./coverage.js";
|
|
17
|
+
import type { RuleEntry, ScheduleRuleEntry } from "./rules.js";
|
|
18
|
+
/** A value that can be passed to {@link Schedule.with}. */
|
|
19
|
+
type WithArg = Schedule<CpsatRuleRegistry> | SchedulingMember[];
|
|
20
|
+
type EmptyRuleRegistry = Record<never, never>;
|
|
21
|
+
type BuiltInRuleRegistry = BuiltInCpsatRuleRegistry;
|
|
22
|
+
type CustomRuleRegistry<TRuleRegistry extends BuiltInRuleRegistry> = CpsatRuleRegistry & {
|
|
23
|
+
[K in Extract<Exclude<keyof TRuleRegistry, keyof BuiltInRuleRegistry>, string>]: TRuleRegistry[K];
|
|
24
|
+
};
|
|
25
|
+
type RegistryFromWithArg<T> = T extends Schedule<infer Registry> ? Registry : EmptyRuleRegistry;
|
|
26
|
+
type RuleEntryFields<T> = T extends RuleEntry<any, infer Fields> ? Fields : never;
|
|
27
|
+
type BuiltInScheduleRuleAuthoringFields<Name extends keyof BuiltInRuleRegistry> = Name extends "max-hours-day" ? RuleEntryFields<ReturnType<typeof import("./rules.js").maxHoursPerDay>> : Name extends "max-hours-week" ? RuleEntryFields<ReturnType<typeof import("./rules.js").maxHoursPerWeek>> : Name extends "min-hours-day" ? RuleEntryFields<ReturnType<typeof import("./rules.js").minHoursPerDay>> : Name extends "min-hours-week" ? RuleEntryFields<ReturnType<typeof import("./rules.js").minHoursPerWeek>> : Name extends "max-days-week" ? RuleEntryFields<ReturnType<typeof import("./rules.js").maxDaysPerWeek>> : Name extends "min-days-week" ? RuleEntryFields<ReturnType<typeof import("./rules.js").minDaysPerWeek>> : Name extends "target-days-week" ? RuleEntryFields<ReturnType<typeof import("./rules.js").targetDaysPerWeek>> : Name extends "max-shifts-day" ? RuleEntryFields<ReturnType<typeof import("./rules.js").maxShiftsPerDay>> : Name extends "max-concurrent-assignments" ? RuleEntryFields<ReturnType<typeof import("./rules.js").maxConcurrentAssignments>> : Name extends "target-peak-concurrent-assignments" ? RuleEntryFields<ReturnType<typeof import("./rules.js").targetPeakConcurrentAssignments>> : Name extends "max-consecutive-days" ? RuleEntryFields<ReturnType<typeof import("./rules.js").maxConsecutiveDays>> : Name extends "min-consecutive-days" ? RuleEntryFields<ReturnType<typeof import("./rules.js").minConsecutiveDays>> : Name extends "min-rest-between-shifts" ? RuleEntryFields<ReturnType<typeof import("./rules.js").minRestBetweenShifts>> : Name extends "must-assign" ? RuleEntryFields<ReturnType<typeof import("./rules.js").mustAssign>> : Name extends "assignment-priority" ? RuleEntryFields<ReturnType<typeof import("./rules.js").preferAssignment>> : Name extends "role-preference" ? RuleEntryFields<ReturnType<typeof import("./rules.js").preferRole>> : Name extends "location-preference" ? RuleEntryFields<ReturnType<typeof import("./rules.js").preferLocation>> : Name extends "time-off" ? RuleEntryFields<ReturnType<typeof import("./rules.js").timeOff>> : Name extends "assign-together" ? RuleEntryFields<ReturnType<typeof import("./rules.js").assignTogether>> : Name extends "max-days-of-week-per-period" ? RuleEntryFields<ReturnType<typeof import("./rules.js").maxDaysOfWeekPerPeriod>> : Name extends "min-days-of-week-per-period" ? RuleEntryFields<ReturnType<typeof import("./rules.js").minDaysOfWeekPerPeriod>> : Name extends "minimize-cost" ? RuleEntryFields<ReturnType<typeof import("./cost.js").minimizeCost>> : Name extends "day-cost-multiplier" ? RuleEntryFields<ReturnType<typeof import("./cost.js").dayMultiplier>> : Name extends "day-cost-surcharge" ? RuleEntryFields<ReturnType<typeof import("./cost.js").daySurcharge>> : Name extends "time-cost-surcharge" ? RuleEntryFields<ReturnType<typeof import("./cost.js").timeSurcharge>> : Name extends "overtime-weekly-multiplier" ? RuleEntryFields<ReturnType<typeof import("./cost.js").overtimeMultiplier>> : Name extends "overtime-weekly-surcharge" ? RuleEntryFields<ReturnType<typeof import("./cost.js").overtimeSurcharge>> : Name extends "overtime-daily-multiplier" ? RuleEntryFields<ReturnType<typeof import("./cost.js").dailyOvertimeMultiplier>> : Name extends "overtime-daily-surcharge" ? RuleEntryFields<ReturnType<typeof import("./cost.js").dailyOvertimeSurcharge>> : Name extends "overtime-tiered-multiplier" ? RuleEntryFields<ReturnType<typeof import("./cost.js").tieredOvertimeMultiplier>> : never;
|
|
28
|
+
type ValidateScheduleRuleEntry<TRuleRegistry extends CpsatRuleRegistry, Entry> = Entry extends ScheduleRuleEntry<TRuleRegistry> ? Entry : Entry extends RuleEntry<infer Name, infer Fields> ? string extends Name ? Entry : Name extends keyof TRuleRegistry & string ? Name extends keyof BuiltInRuleRegistry ? Fields extends BuiltInScheduleRuleAuthoringFields<Name> ? Entry : never : Fields extends Omit<CpsatRuleConfigEntryFor<Pick<TRuleRegistry, Name>>, "name"> ? Entry : never : never : never;
|
|
29
|
+
type ValidateScheduleRules<TRuleRegistry extends CpsatRuleRegistry, TRules extends readonly unknown[]> = {
|
|
30
|
+
readonly [Index in keyof TRules]: ValidateScheduleRuleEntry<TRuleRegistry, TRules[Index]>;
|
|
31
|
+
};
|
|
32
|
+
type BuiltInScheduleConfigInput<R extends readonly string[], S extends readonly string[], T extends Record<string, SemanticTimeEntry>, TRules extends readonly unknown[]> = Omit<ScheduleConfig<R, S, T, BuiltInRuleRegistry>, "rules" | "ruleRegistry"> & {
|
|
33
|
+
rules?: ValidateScheduleRules<BuiltInRuleRegistry, TRules>;
|
|
34
|
+
ruleRegistry?: undefined;
|
|
35
|
+
};
|
|
36
|
+
type CustomScheduleConfigInput<R extends readonly string[], S extends readonly string[], T extends Record<string, SemanticTimeEntry>, TCustomRuleRegistry extends CpsatRuleRegistry, TRules extends readonly unknown[]> = Omit<ScheduleConfig<R, S, T, BuiltInRuleRegistry & TCustomRuleRegistry>, "rules" | "ruleRegistry"> & {
|
|
37
|
+
ruleRegistry: TCustomRuleRegistry;
|
|
38
|
+
rules?: ValidateScheduleRules<BuiltInRuleRegistry & TCustomRuleRegistry, TRules>;
|
|
39
|
+
};
|
|
40
|
+
type BuiltInPartialScheduleConfigInput<TRules extends readonly unknown[]> = Partial<Omit<ScheduleConfig<readonly string[], readonly string[], Record<string, SemanticTimeEntry>, BuiltInRuleRegistry>, "rules" | "ruleRegistry">> & {
|
|
41
|
+
rules?: ValidateScheduleRules<BuiltInRuleRegistry, TRules>;
|
|
42
|
+
ruleRegistry?: undefined;
|
|
43
|
+
};
|
|
44
|
+
type CustomPartialScheduleConfigInput<TCustomRuleRegistry extends CpsatRuleRegistry, TRules extends readonly unknown[]> = Partial<Omit<ScheduleConfig<readonly string[], readonly string[], Record<string, SemanticTimeEntry>, BuiltInRuleRegistry & TCustomRuleRegistry>, "rules" | "ruleRegistry">> & {
|
|
45
|
+
ruleRegistry: TCustomRuleRegistry;
|
|
46
|
+
rules?: ValidateScheduleRules<BuiltInRuleRegistry & TCustomRuleRegistry, TRules>;
|
|
47
|
+
};
|
|
48
|
+
type UnionToIntersection<T> = (T extends unknown ? (value: T) => void : never) extends (value: infer Result) => void ? Result : never;
|
|
49
|
+
type MergedRegistryFromArgs<Args extends readonly WithArg[]> = UnionToIntersection<RegistryFromWithArg<Args[number]>>;
|
|
50
|
+
/** Status of a solve attempt, using idiomatic lowercase TypeScript literals. */
|
|
51
|
+
export type SolveStatus = "optimal" | "feasible" | "infeasible" | "no_solution";
|
|
52
|
+
/**
|
|
53
|
+
* Strategy for {@link Schedule.solve} and {@link Schedule.compile}.
|
|
54
|
+
*
|
|
55
|
+
* @remarks
|
|
56
|
+
* `{ type: "optimize" }` optimizes objectives and soft constraints.
|
|
57
|
+
* `{ type: "feasibility-only" }` asks the solver for a hard-feasible solution
|
|
58
|
+
* only, ignoring objectives and soft-constraint penalties. Feasibility-only
|
|
59
|
+
* results do not guarantee cost, objective optimality, or soft-constraint
|
|
60
|
+
* diagnostics.
|
|
61
|
+
*
|
|
62
|
+
* @category Schedule Definition
|
|
63
|
+
*/
|
|
64
|
+
export type SolveStrategy = {
|
|
65
|
+
/** Optimize objectives and soft constraints. */
|
|
66
|
+
readonly type: "optimize";
|
|
67
|
+
} | {
|
|
68
|
+
/** Find a hard-feasible solution without optimizing objectives or soft constraints. */
|
|
69
|
+
readonly type: "feasibility-only";
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Result of {@link Schedule.solve}.
|
|
73
|
+
*
|
|
74
|
+
* @remarks
|
|
75
|
+
* Feasibility-only solves return hard-feasible assignments when one is found,
|
|
76
|
+
* but they do not optimize objectives or compute objective-derived metadata.
|
|
77
|
+
* Cost is therefore only produced for optimized solves.
|
|
78
|
+
*
|
|
79
|
+
* @category Schedule Definition
|
|
80
|
+
*/
|
|
81
|
+
export interface SolveResult {
|
|
82
|
+
/** Outcome of the solve attempt. */
|
|
83
|
+
status: SolveStatus;
|
|
84
|
+
/** Shift assignments (empty when infeasible or no solution). */
|
|
85
|
+
assignments: ShiftAssignment[];
|
|
86
|
+
/** Validation results collected during compilation and solving. */
|
|
87
|
+
validation: ScheduleValidation;
|
|
88
|
+
/** Cost breakdown for optimized solves when cost rules are used and a solution is found. */
|
|
89
|
+
cost?: CostBreakdown;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Options for {@link Schedule.solve} and {@link Schedule.compile}.
|
|
93
|
+
*
|
|
94
|
+
* @category Schedule Definition
|
|
95
|
+
*/
|
|
96
|
+
export interface SolveOptions {
|
|
97
|
+
/** The date range to schedule. */
|
|
98
|
+
dateRange: {
|
|
99
|
+
start: DateString;
|
|
100
|
+
end: DateString;
|
|
101
|
+
};
|
|
102
|
+
/** Solver time limit in seconds. */
|
|
103
|
+
timeLimitSeconds?: number;
|
|
104
|
+
/**
|
|
105
|
+
* Strategy used by the solver.
|
|
106
|
+
*
|
|
107
|
+
* `{ type: "optimize" }` optimizes objectives and soft constraints.
|
|
108
|
+
* `{ type: "feasibility-only" }` finds any hard-feasible solution, ignoring
|
|
109
|
+
* objectives, soft-constraint penalties, and objective-derived metadata such
|
|
110
|
+
* as cost.
|
|
111
|
+
*/
|
|
112
|
+
strategy?: SolveStrategy;
|
|
113
|
+
/**
|
|
114
|
+
* Fixed assignments from a prior solve (e.g., rolling schedule).
|
|
115
|
+
* These are injected as fixed variables in the solver.
|
|
116
|
+
*
|
|
117
|
+
* Not yet implemented. Providing pinned assignments throws an error.
|
|
118
|
+
*/
|
|
119
|
+
pinned?: ShiftAssignment[];
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Configuration for {@link schedule}.
|
|
123
|
+
*
|
|
124
|
+
* @remarks
|
|
125
|
+
* Coverage entries for the same semantic time and target stack additively.
|
|
126
|
+
* An unscoped entry applies every day; adding a weekend-only entry on top
|
|
127
|
+
* doubles the count on those days. Use mutually exclusive `dayOfWeek` on
|
|
128
|
+
* both entries to avoid stacking. See {@link cover} for details.
|
|
129
|
+
*
|
|
130
|
+
* `roleIds`, `times`, `coverage`, and `shiftPatterns` are required.
|
|
131
|
+
* These four fields form the minimum solvable schedule.
|
|
132
|
+
*
|
|
133
|
+
* The `TRuleRegistry` generic represents the full active rule registry for the
|
|
134
|
+
* schedule. In `schedule()`, that registry always includes the built-in rules,
|
|
135
|
+
* and `ruleRegistry` adds any custom extensions on top.
|
|
136
|
+
*
|
|
137
|
+
* @category Schedule Definition
|
|
138
|
+
*/
|
|
139
|
+
export interface ScheduleConfig<R extends readonly string[] = readonly string[], S extends readonly string[] = readonly [], T extends Record<string, SemanticTimeEntry> = Record<string, SemanticTimeEntry>, TRuleRegistry extends BuiltInRuleRegistry = BuiltInRuleRegistry> {
|
|
140
|
+
/** Declared role IDs. */
|
|
141
|
+
roleIds: R;
|
|
142
|
+
/** Declared skill IDs. When omitted, coverage targets can only be roles. */
|
|
143
|
+
skillIds?: S;
|
|
144
|
+
/** Named semantic time periods. */
|
|
145
|
+
times: T;
|
|
146
|
+
/** Staffing requirements per time period (entries stack additively). */
|
|
147
|
+
coverage: NoInfer<CoverageEntry<keyof T & string, R[number] | S[number]>>[];
|
|
148
|
+
/** Available shift patterns. */
|
|
149
|
+
shiftPatterns: ShiftPattern[];
|
|
150
|
+
/** Scheduling rules and constraints. */
|
|
151
|
+
rules?: ScheduleRuleEntry<TRuleRegistry>[];
|
|
152
|
+
/**
|
|
153
|
+
* Additional rule descriptors keyed by rule name.
|
|
154
|
+
*
|
|
155
|
+
* @remarks
|
|
156
|
+
* These entries are merged with the built-in rule registry at compile time.
|
|
157
|
+
* Built-in rule names cannot be overridden.
|
|
158
|
+
*/
|
|
159
|
+
ruleRegistry?: CustomRuleRegistry<TRuleRegistry>;
|
|
160
|
+
/** Team members (typically added via `.with()` at runtime). */
|
|
161
|
+
members?: SchedulingMember[];
|
|
162
|
+
/** Days of the week the business operates (inclusion filter). */
|
|
163
|
+
dayOfWeek?: readonly [DayOfWeek, ...DayOfWeek[]];
|
|
164
|
+
/** Which day starts the week for weekly rules. Defaults to `"monday"`. */
|
|
165
|
+
weekStartsOn?: DayOfWeek;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Configuration for {@link scheduleWithRuleRegistry}.
|
|
169
|
+
*
|
|
170
|
+
* @remarks
|
|
171
|
+
* Unlike {@link ScheduleConfig}, this config does not implicitly include the
|
|
172
|
+
* built-in rule registry. The provided registry is the complete active rule
|
|
173
|
+
* registry for the schedule.
|
|
174
|
+
*
|
|
175
|
+
* @category Schedule Definition
|
|
176
|
+
*/
|
|
177
|
+
export interface ScheduleWithRuleRegistryConfig<R extends readonly string[] = readonly string[], S extends readonly string[] = readonly [], T extends Record<string, SemanticTimeEntry> = Record<string, SemanticTimeEntry>, TRuleRegistry extends CpsatRuleRegistry = CpsatRuleRegistry> {
|
|
178
|
+
/** Declared role IDs. */
|
|
179
|
+
roleIds: R;
|
|
180
|
+
/** Declared skill IDs. When omitted, coverage targets can only be roles. */
|
|
181
|
+
skillIds?: S;
|
|
182
|
+
/** Named semantic time periods. */
|
|
183
|
+
times: T;
|
|
184
|
+
/** Staffing requirements per time period (entries stack additively). */
|
|
185
|
+
coverage: NoInfer<CoverageEntry<keyof T & string, R[number] | S[number]>>[];
|
|
186
|
+
/** Available shift patterns. */
|
|
187
|
+
shiftPatterns: ShiftPattern[];
|
|
188
|
+
/** Scheduling rules and constraints. */
|
|
189
|
+
rules?: ScheduleRuleEntry<TRuleRegistry>[];
|
|
190
|
+
/** Team members (typically added via `.with()` at runtime). */
|
|
191
|
+
members?: SchedulingMember[];
|
|
192
|
+
/** Days of the week the business operates (inclusion filter). */
|
|
193
|
+
dayOfWeek?: readonly [DayOfWeek, ...DayOfWeek[]];
|
|
194
|
+
/** Which day starts the week for weekly rules. Defaults to `"monday"`. */
|
|
195
|
+
weekStartsOn?: DayOfWeek;
|
|
196
|
+
}
|
|
197
|
+
/** Internal representation of a fully merged schedule. */
|
|
198
|
+
interface MergedScheduleConfig {
|
|
199
|
+
roleIds: string[];
|
|
200
|
+
skillIds: string[];
|
|
201
|
+
times: Record<string, SemanticTimeEntry>;
|
|
202
|
+
coverage: CoverageEntry[];
|
|
203
|
+
shiftPatterns: ShiftPattern[];
|
|
204
|
+
rules: ScheduleRuleEntry<CpsatRuleRegistry>[];
|
|
205
|
+
ruleRegistry: CpsatRuleRegistry;
|
|
206
|
+
members: SchedulingMember[];
|
|
207
|
+
dayOfWeek?: readonly [DayOfWeek, ...DayOfWeek[]];
|
|
208
|
+
weekStartsOn?: DayOfWeek;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* An immutable schedule definition.
|
|
212
|
+
*
|
|
213
|
+
* Created by {@link schedule}, composed via {@link Schedule.with},
|
|
214
|
+
* and solved via {@link Schedule.solve}.
|
|
215
|
+
*
|
|
216
|
+
* @category Schedule Definition
|
|
217
|
+
*/
|
|
218
|
+
export declare class Schedule<TRuleRegistry extends CpsatRuleRegistry = BuiltInRuleRegistry> {
|
|
219
|
+
#private;
|
|
220
|
+
/** @internal */
|
|
221
|
+
constructor(config: MergedScheduleConfig);
|
|
222
|
+
/** @internal Returns a defensive copy of the config for merging. */
|
|
223
|
+
_getConfig(): MergedScheduleConfig;
|
|
224
|
+
/** Declared role IDs. */
|
|
225
|
+
get roleIds(): readonly string[];
|
|
226
|
+
/** Declared skill IDs. */
|
|
227
|
+
get skillIds(): readonly string[];
|
|
228
|
+
/** Names of declared semantic times. */
|
|
229
|
+
get timeNames(): readonly string[];
|
|
230
|
+
/** Shift pattern IDs. */
|
|
231
|
+
get shiftPatternIds(): readonly string[];
|
|
232
|
+
/** Internal rule identifiers in kebab-case. */
|
|
233
|
+
get ruleNames(): readonly string[];
|
|
234
|
+
/**
|
|
235
|
+
* Merges schedules or members onto this schedule, returning a new
|
|
236
|
+
* immutable `Schedule`. The original is untouched.
|
|
237
|
+
*
|
|
238
|
+
* Accepts any mix of `Schedule` instances and `SchedulingMember[]` arrays.
|
|
239
|
+
*
|
|
240
|
+
* Merge semantics (when merging schedules):
|
|
241
|
+
* - Roles: union (additive)
|
|
242
|
+
* - Skills: union (additive)
|
|
243
|
+
* - Times: additive; error on name collision
|
|
244
|
+
* - Coverage: additive
|
|
245
|
+
* - Shift patterns: additive; error on ID collision
|
|
246
|
+
* - Rules: additive
|
|
247
|
+
* - Members: additive; error on duplicate ID
|
|
248
|
+
*
|
|
249
|
+
* Validation runs eagerly: role/skill disjointness, coverage targets
|
|
250
|
+
* referencing declared roles/skills, member role references, etc.
|
|
251
|
+
*/
|
|
252
|
+
with<const Args extends readonly WithArg[]>(...args: Args): Schedule<TRuleRegistry & MergedRegistryFromArgs<Args>>;
|
|
253
|
+
/**
|
|
254
|
+
* Compiles, validates, solves, and parses in one call.
|
|
255
|
+
*
|
|
256
|
+
* @param client - Solver client (e.g., `new HttpSolverClient(fetch, url)`)
|
|
257
|
+
* @param options - Date range and optional pinned assignments
|
|
258
|
+
*/
|
|
259
|
+
solve(client: SolverClient, options: SolveOptions): Promise<SolveResult>;
|
|
260
|
+
/**
|
|
261
|
+
* Diagnostic escape hatch. Compiles the schedule without solving.
|
|
262
|
+
*
|
|
263
|
+
* @param options - Date range and optional pinned assignments
|
|
264
|
+
*/
|
|
265
|
+
compile(options: SolveOptions): CompilationResult & {
|
|
266
|
+
builder: ModelBuilder;
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Create a schedule definition.
|
|
271
|
+
*
|
|
272
|
+
* Returns an immutable {@link Schedule} that can be composed via `.with()`
|
|
273
|
+
* and solved via `.solve()`.
|
|
274
|
+
*
|
|
275
|
+
* @remarks
|
|
276
|
+
* `schedule()` always uses the built-in rule registry as its default. Passing
|
|
277
|
+
* `ruleRegistry` extends that default with custom rules.
|
|
278
|
+
*
|
|
279
|
+
* @example
|
|
280
|
+
* ```typescript
|
|
281
|
+
* const venue = schedule({
|
|
282
|
+
* roleIds: ["waiter", "runner", "manager"],
|
|
283
|
+
* skillIds: ["senior"],
|
|
284
|
+
* times: {
|
|
285
|
+
* lunch: time({ startTime: t(12), endTime: t(15) }),
|
|
286
|
+
* dinner: time(
|
|
287
|
+
* { startTime: t(17), endTime: t(21) },
|
|
288
|
+
* { startTime: t(18), endTime: t(22), dayOfWeek: weekend },
|
|
289
|
+
* ),
|
|
290
|
+
* },
|
|
291
|
+
* coverage: [
|
|
292
|
+
* cover("lunch", "waiter", 2),
|
|
293
|
+
* cover("dinner", "waiter", 4, { dayOfWeek: weekdays }),
|
|
294
|
+
* cover("dinner", "waiter", 5, { dayOfWeek: weekend }),
|
|
295
|
+
* cover("dinner", "manager", 1),
|
|
296
|
+
* ],
|
|
297
|
+
* shiftPatterns: [
|
|
298
|
+
* shift("lunch_shift", t(11, 30), t(15)),
|
|
299
|
+
* shift("evening", t(17), t(22)),
|
|
300
|
+
* ],
|
|
301
|
+
* rules: [
|
|
302
|
+
* maxHoursPerDay(10),
|
|
303
|
+
* maxHoursPerWeek(48),
|
|
304
|
+
* minRestBetweenShifts(11),
|
|
305
|
+
* ],
|
|
306
|
+
* });
|
|
307
|
+
* ```
|
|
308
|
+
*
|
|
309
|
+
* @category Schedule Definition
|
|
310
|
+
*/
|
|
311
|
+
export declare function schedule<const R extends readonly string[], const S extends readonly string[] = readonly [], const T extends Record<string, SemanticTimeEntry> = Record<string, SemanticTimeEntry>, const TRules extends readonly unknown[] = readonly ScheduleRuleEntry<BuiltInRuleRegistry>[]>(config: BuiltInScheduleConfigInput<R, S, T, TRules>): Schedule<BuiltInRuleRegistry>;
|
|
312
|
+
export declare function schedule<const R extends readonly string[], const S extends readonly string[] = readonly [], const T extends Record<string, SemanticTimeEntry> = Record<string, SemanticTimeEntry>, TCustomRuleRegistry extends CpsatRuleRegistry = CpsatRuleRegistry, const TRules extends readonly unknown[] = readonly ScheduleRuleEntry<BuiltInRuleRegistry & TCustomRuleRegistry>[]>(config: CustomScheduleConfigInput<R, S, T, TCustomRuleRegistry, TRules>): Schedule<BuiltInRuleRegistry & TCustomRuleRegistry>;
|
|
313
|
+
/**
|
|
314
|
+
* Create a schedule definition with an explicit complete rule registry.
|
|
315
|
+
*
|
|
316
|
+
* @remarks
|
|
317
|
+
* Use this when you want full control over the active rule registry, including
|
|
318
|
+
* schedules that do not include the built-in rules.
|
|
319
|
+
*
|
|
320
|
+
* @category Schedule Definition
|
|
321
|
+
*/
|
|
322
|
+
export declare function scheduleWithRuleRegistry<const R extends readonly string[], const S extends readonly string[] = readonly [], const T extends Record<string, SemanticTimeEntry> = Record<string, SemanticTimeEntry>, TRuleRegistry extends CpsatRuleRegistry = CpsatRuleRegistry, const TRules extends readonly unknown[] = readonly ScheduleRuleEntry<TRuleRegistry>[]>(ruleRegistry: TRuleRegistry, config: Omit<ScheduleWithRuleRegistryConfig<R, S, T, TRuleRegistry>, "rules"> & {
|
|
323
|
+
rules?: ValidateScheduleRules<TRuleRegistry, TRules>;
|
|
324
|
+
}): Schedule<TRuleRegistry>;
|
|
325
|
+
/**
|
|
326
|
+
* Create a partial schedule for composition via `.with()`.
|
|
327
|
+
*
|
|
328
|
+
* Unlike {@link schedule}, all fields are optional. Use this for
|
|
329
|
+
* schedules that layer rules, coverage, or other config onto a
|
|
330
|
+
* complete base schedule.
|
|
331
|
+
*
|
|
332
|
+
* @example
|
|
333
|
+
* ```typescript
|
|
334
|
+
* const companyPolicy = partialSchedule({
|
|
335
|
+
* rules: [maxHoursPerWeek(40), minRestBetweenShifts(11)],
|
|
336
|
+
* });
|
|
337
|
+
*
|
|
338
|
+
* const ready = venue.with(companyPolicy, teamMembers);
|
|
339
|
+
* ```
|
|
340
|
+
*
|
|
341
|
+
* @category Schedule Definition
|
|
342
|
+
*/
|
|
343
|
+
export declare function partialSchedule<const TRules extends readonly unknown[] = readonly ScheduleRuleEntry<BuiltInRuleRegistry>[]>(config: BuiltInPartialScheduleConfigInput<TRules>): Schedule<BuiltInRuleRegistry>;
|
|
344
|
+
export declare function partialSchedule<TCustomRuleRegistry extends CpsatRuleRegistry = CpsatRuleRegistry, const TRules extends readonly unknown[] = readonly ScheduleRuleEntry<BuiltInRuleRegistry & TCustomRuleRegistry>[]>(config: CustomPartialScheduleConfigInput<TCustomRuleRegistry, TRules>): Schedule<BuiltInRuleRegistry & TCustomRuleRegistry>;
|
|
345
|
+
export {};
|
|
346
|
+
//# sourceMappingURL=definition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/schedule/definition.ts"],"names":[],"mappings":"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"}
|