dabke 0.82.0 → 0.83.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 +23 -0
- package/README.md +6 -3
- package/dist/cpsat/rules/index.d.ts +3 -0
- package/dist/cpsat/rules/index.d.ts.map +1 -1
- package/dist/cpsat/rules/index.js +3 -0
- package/dist/cpsat/rules/index.js.map +1 -1
- package/dist/cpsat/rules/max-days-week.d.ts +44 -0
- package/dist/cpsat/rules/max-days-week.d.ts.map +1 -0
- package/dist/cpsat/rules/max-days-week.js +95 -0
- package/dist/cpsat/rules/max-days-week.js.map +1 -0
- package/dist/cpsat/rules/min-days-week.d.ts +34 -0
- package/dist/cpsat/rules/min-days-week.d.ts.map +1 -0
- package/dist/cpsat/rules/min-days-week.js +84 -0
- package/dist/cpsat/rules/min-days-week.js.map +1 -0
- package/dist/cpsat/rules/must-assign.d.ts +49 -0
- package/dist/cpsat/rules/must-assign.d.ts.map +1 -0
- package/dist/cpsat/rules/must-assign.js +86 -0
- package/dist/cpsat/rules/must-assign.js.map +1 -0
- package/dist/cpsat/rules/registry.d.ts +4 -1
- package/dist/cpsat/rules/registry.d.ts.map +1 -1
- package/dist/cpsat/rules/registry.js +4 -1
- package/dist/cpsat/rules/registry.js.map +1 -1
- package/dist/cpsat/rules/rules.types.d.ts +3 -0
- package/dist/cpsat/rules/rules.types.d.ts.map +1 -1
- package/dist/cpsat/rules/scope.types.d.ts +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/schedule/cost.d.ts +204 -0
- package/dist/schedule/cost.d.ts.map +1 -0
- package/dist/schedule/cost.js +187 -0
- package/dist/schedule/cost.js.map +1 -0
- package/dist/schedule/coverage.d.ts +85 -0
- package/dist/schedule/coverage.d.ts.map +1 -0
- package/dist/schedule/coverage.js +33 -0
- package/dist/schedule/coverage.js.map +1 -0
- package/dist/schedule/definition.d.ts +227 -0
- package/dist/schedule/definition.d.ts.map +1 -0
- package/dist/{schedule.js → schedule/definition.js} +9 -673
- 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 +353 -0
- package/dist/schedule/rules.d.ts.map +1 -0
- package/dist/schedule/rules.js +352 -0
- package/dist/schedule/rules.js.map +1 -0
- package/dist/schedule/shift-patterns.d.ts +34 -0
- package/dist/schedule/shift-patterns.d.ts.map +1 -0
- package/dist/schedule/shift-patterns.js +41 -0
- package/dist/schedule/shift-patterns.js.map +1 -0
- package/dist/schedule/time-periods.d.ts +69 -0
- package/dist/schedule/time-periods.d.ts.map +1 -0
- package/dist/schedule/time-periods.js +91 -0
- package/dist/schedule/time-periods.js.map +1 -0
- package/package.json +4 -9
- package/src/cpsat/rules/index.ts +3 -0
- package/src/cpsat/rules/max-days-week.ts +143 -0
- package/src/cpsat/rules/min-days-week.ts +120 -0
- package/src/cpsat/rules/must-assign.ts +108 -0
- package/src/cpsat/rules/registry.ts +6 -0
- package/src/cpsat/rules/rules.types.ts +3 -0
- package/src/cpsat/rules/scope.types.ts +1 -1
- package/src/index.ts +8 -3
- package/src/schedule/cost.ts +242 -0
- package/src/schedule/coverage.ts +135 -0
- package/src/schedule/definition.ts +958 -0
- package/src/schedule/index.ts +112 -0
- package/src/schedule/rules.ts +529 -0
- package/src/schedule/shift-patterns.ts +46 -0
- package/src/schedule/time-periods.ts +110 -0
- 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.map +0 -1
- package/llms.txt +0 -758
- package/src/llms.ts +0 -3
- package/src/schedule.ts +0 -1960
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition.js","sourceRoot":"","sources":["../../src/schedule/definition.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* High-level schedule definition API.
|
|
3
|
+
*
|
|
4
|
+
* Small, composable factory functions that produce a complete scheduling
|
|
5
|
+
* configuration. Designed for LLM code generation: each concept is a single
|
|
6
|
+
* function call with per-call type safety.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import {
|
|
11
|
+
* schedule, t, time, cover, shift,
|
|
12
|
+
* maxHoursPerDay, maxHoursPerWeek, minRestBetweenShifts,
|
|
13
|
+
* weekdays, weekend,
|
|
14
|
+
* } from "dabke";
|
|
15
|
+
*
|
|
16
|
+
* const venue = schedule({
|
|
17
|
+
* roleIds: ["cashier", "floor_lead", "stocker"],
|
|
18
|
+
* skillIds: ["keyholder"],
|
|
19
|
+
*
|
|
20
|
+
* times: {
|
|
21
|
+
* opening: time({ startTime: t(8), endTime: t(10) }),
|
|
22
|
+
* peak_hours: time(
|
|
23
|
+
* { startTime: t(11), endTime: t(14) },
|
|
24
|
+
* { startTime: t(10), endTime: t(15), dayOfWeek: weekend },
|
|
25
|
+
* ),
|
|
26
|
+
* closing: time({ startTime: t(20), endTime: t(22) }),
|
|
27
|
+
* },
|
|
28
|
+
*
|
|
29
|
+
* coverage: [
|
|
30
|
+
* cover("opening", "keyholder", 1),
|
|
31
|
+
* cover("peak_hours", "cashier", 3, { dayOfWeek: weekdays }),
|
|
32
|
+
* cover("peak_hours", "cashier", 5, { dayOfWeek: weekend }),
|
|
33
|
+
* cover("closing", "floor_lead", 1),
|
|
34
|
+
* ],
|
|
35
|
+
*
|
|
36
|
+
* shiftPatterns: [
|
|
37
|
+
* shift("morning", t(8), t(14)),
|
|
38
|
+
* shift("afternoon", t(14), t(22)),
|
|
39
|
+
* ],
|
|
40
|
+
*
|
|
41
|
+
* rules: [
|
|
42
|
+
* maxHoursPerDay(10),
|
|
43
|
+
* maxHoursPerWeek(48),
|
|
44
|
+
* minRestBetweenShifts(10),
|
|
45
|
+
* ],
|
|
46
|
+
* });
|
|
47
|
+
*
|
|
48
|
+
* const result = await venue
|
|
49
|
+
* .with([
|
|
50
|
+
* { id: "alice", roleIds: ["cashier"], skillIds: ["keyholder"] },
|
|
51
|
+
* ])
|
|
52
|
+
* .solve(client, { dateRange: { start: "2025-03-03", end: "2025-03-09" } });
|
|
53
|
+
* ```
|
|
54
|
+
*
|
|
55
|
+
* @module
|
|
56
|
+
*/
|
|
57
|
+
export { t, weekdays, weekend, time } from "./time-periods.js";
|
|
58
|
+
export { cover } from "./coverage.js";
|
|
59
|
+
export type { CoverageOptions, CoverageEntry, CoverageVariant } from "./coverage.js";
|
|
60
|
+
export { shift } from "./shift-patterns.js";
|
|
61
|
+
export { defineRule, maxHoursPerDay, maxHoursPerWeek, minHoursPerDay, minHoursPerWeek, maxDaysPerWeek, minDaysPerWeek, maxShiftsPerDay, maxConsecutiveDays, minConsecutiveDays, minRestBetweenShifts, mustAssign, preference, preferLocation, timeOff, assignTogether, } from "./rules.js";
|
|
62
|
+
export type { RuleEntry, RuleResolveContext, RuleOptions, EntityOnlyRuleOptions, TimeOffOptions, AssignTogetherOptions, } from "./rules.js";
|
|
63
|
+
export { minimizeCost, dayMultiplier, daySurcharge, timeSurcharge, overtimeMultiplier, overtimeSurcharge, dailyOvertimeMultiplier, dailyOvertimeSurcharge, tieredOvertimeMultiplier, } from "./cost.js";
|
|
64
|
+
export type { CostRuleOptions } from "./cost.js";
|
|
65
|
+
export { schedule, partialSchedule, Schedule } from "./definition.js";
|
|
66
|
+
export type { ScheduleConfig, SolveResult, SolveStatus, SolveOptions } from "./definition.js";
|
|
67
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schedule/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAGH,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAG/D,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGrF,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAG5C,OAAO,EACL,UAAU,EACV,cAAc,EACd,eAAe,EACf,cAAc,EACd,eAAe,EACf,cAAc,EACd,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,UAAU,EACV,UAAU,EACV,cAAc,EACd,OAAO,EACP,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,SAAS,EACT,kBAAkB,EAClB,WAAW,EACX,qBAAqB,EACrB,cAAc,EACd,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAGjD,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACtE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* High-level schedule definition API.
|
|
3
|
+
*
|
|
4
|
+
* Small, composable factory functions that produce a complete scheduling
|
|
5
|
+
* configuration. Designed for LLM code generation: each concept is a single
|
|
6
|
+
* function call with per-call type safety.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import {
|
|
11
|
+
* schedule, t, time, cover, shift,
|
|
12
|
+
* maxHoursPerDay, maxHoursPerWeek, minRestBetweenShifts,
|
|
13
|
+
* weekdays, weekend,
|
|
14
|
+
* } from "dabke";
|
|
15
|
+
*
|
|
16
|
+
* const venue = schedule({
|
|
17
|
+
* roleIds: ["cashier", "floor_lead", "stocker"],
|
|
18
|
+
* skillIds: ["keyholder"],
|
|
19
|
+
*
|
|
20
|
+
* times: {
|
|
21
|
+
* opening: time({ startTime: t(8), endTime: t(10) }),
|
|
22
|
+
* peak_hours: time(
|
|
23
|
+
* { startTime: t(11), endTime: t(14) },
|
|
24
|
+
* { startTime: t(10), endTime: t(15), dayOfWeek: weekend },
|
|
25
|
+
* ),
|
|
26
|
+
* closing: time({ startTime: t(20), endTime: t(22) }),
|
|
27
|
+
* },
|
|
28
|
+
*
|
|
29
|
+
* coverage: [
|
|
30
|
+
* cover("opening", "keyholder", 1),
|
|
31
|
+
* cover("peak_hours", "cashier", 3, { dayOfWeek: weekdays }),
|
|
32
|
+
* cover("peak_hours", "cashier", 5, { dayOfWeek: weekend }),
|
|
33
|
+
* cover("closing", "floor_lead", 1),
|
|
34
|
+
* ],
|
|
35
|
+
*
|
|
36
|
+
* shiftPatterns: [
|
|
37
|
+
* shift("morning", t(8), t(14)),
|
|
38
|
+
* shift("afternoon", t(14), t(22)),
|
|
39
|
+
* ],
|
|
40
|
+
*
|
|
41
|
+
* rules: [
|
|
42
|
+
* maxHoursPerDay(10),
|
|
43
|
+
* maxHoursPerWeek(48),
|
|
44
|
+
* minRestBetweenShifts(10),
|
|
45
|
+
* ],
|
|
46
|
+
* });
|
|
47
|
+
*
|
|
48
|
+
* const result = await venue
|
|
49
|
+
* .with([
|
|
50
|
+
* { id: "alice", roleIds: ["cashier"], skillIds: ["keyholder"] },
|
|
51
|
+
* ])
|
|
52
|
+
* .solve(client, { dateRange: { start: "2025-03-03", end: "2025-03-09" } });
|
|
53
|
+
* ```
|
|
54
|
+
*
|
|
55
|
+
* @module
|
|
56
|
+
*/
|
|
57
|
+
// Time Periods
|
|
58
|
+
export { t, weekdays, weekend, time } from "./time-periods.js";
|
|
59
|
+
// Coverage
|
|
60
|
+
export { cover } from "./coverage.js";
|
|
61
|
+
// Shift Patterns
|
|
62
|
+
export { shift } from "./shift-patterns.js";
|
|
63
|
+
// Rules
|
|
64
|
+
export { defineRule, maxHoursPerDay, maxHoursPerWeek, minHoursPerDay, minHoursPerWeek, maxDaysPerWeek, minDaysPerWeek, maxShiftsPerDay, maxConsecutiveDays, minConsecutiveDays, minRestBetweenShifts, mustAssign, preference, preferLocation, timeOff, assignTogether, } from "./rules.js";
|
|
65
|
+
// Cost Optimization
|
|
66
|
+
export { minimizeCost, dayMultiplier, daySurcharge, timeSurcharge, overtimeMultiplier, overtimeSurcharge, dailyOvertimeMultiplier, dailyOvertimeSurcharge, tieredOvertimeMultiplier, } from "./cost.js";
|
|
67
|
+
// Schedule Definition
|
|
68
|
+
export { schedule, partialSchedule, Schedule } from "./definition.js";
|
|
69
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schedule/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAEH,eAAe;AACf,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE/D,WAAW;AACX,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGtC,iBAAiB;AACjB,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE5C,QAAQ;AACR,OAAO,EACL,UAAU,EACV,cAAc,EACd,eAAe,EACf,cAAc,EACd,eAAe,EACf,cAAc,EACd,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,UAAU,EACV,UAAU,EACV,cAAc,EACd,OAAO,EACP,cAAc,GACf,MAAM,YAAY,CAAC;AAUpB,oBAAoB;AACpB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,WAAW,CAAC;AAGnB,sBAAsB;AACtB,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scheduling rules: constraints, preferences, and time-off.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import type { DayOfWeek, TimeOfDay } from "../types.js";
|
|
7
|
+
import type { Priority } from "../cpsat/types.js";
|
|
8
|
+
import type { RecurringPeriod } from "../cpsat/rules/scope.types.js";
|
|
9
|
+
/**
|
|
10
|
+
* Scoping options shared by most rule functions.
|
|
11
|
+
*
|
|
12
|
+
* @remarks
|
|
13
|
+
* Default priority is `MANDATORY`. Use `appliesTo` to scope to a
|
|
14
|
+
* role, skill, or member ID. Use time scoping options (`dayOfWeek`,
|
|
15
|
+
* `dateRange`, `dates`) to limit when the rule applies.
|
|
16
|
+
* Not all rules support all scoping options. Entity-only rules
|
|
17
|
+
* (e.g., {@link maxConsecutiveDays}) ignore time scoping.
|
|
18
|
+
*
|
|
19
|
+
* @category Rules
|
|
20
|
+
*/
|
|
21
|
+
export interface RuleOptions {
|
|
22
|
+
/** Who this rule applies to (role name, skill name, or member ID). */
|
|
23
|
+
appliesTo?: string | string[];
|
|
24
|
+
/** Restrict to specific days of the week. */
|
|
25
|
+
dayOfWeek?: readonly [DayOfWeek, ...DayOfWeek[]];
|
|
26
|
+
/** Restrict to a date range. */
|
|
27
|
+
dateRange?: {
|
|
28
|
+
start: string;
|
|
29
|
+
end: string;
|
|
30
|
+
};
|
|
31
|
+
/** Restrict to specific dates (YYYY-MM-DD). */
|
|
32
|
+
dates?: string[];
|
|
33
|
+
/** Restrict to recurring calendar periods. */
|
|
34
|
+
recurringPeriods?: [RecurringPeriod, ...RecurringPeriod[]];
|
|
35
|
+
/** Defaults to `"MANDATORY"`. */
|
|
36
|
+
priority?: Priority;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Options for rules that support entity scoping only (no time scoping).
|
|
40
|
+
*
|
|
41
|
+
* @remarks
|
|
42
|
+
* Used by rules whose semantics are inherently per-day or per-week
|
|
43
|
+
* (e.g., {@link minHoursPerDay}, {@link maxConsecutiveDays}) and cannot
|
|
44
|
+
* be meaningfully restricted to a date range or day of week.
|
|
45
|
+
*
|
|
46
|
+
* @category Rules
|
|
47
|
+
*/
|
|
48
|
+
export interface EntityOnlyRuleOptions {
|
|
49
|
+
/** Who this rule applies to (role name, skill name, or member ID). */
|
|
50
|
+
appliesTo?: string | string[];
|
|
51
|
+
/** Defaults to `"MANDATORY"`. */
|
|
52
|
+
priority?: Priority;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Options for {@link timeOff}.
|
|
56
|
+
*
|
|
57
|
+
* @remarks
|
|
58
|
+
* At least one time scoping field is required (`dayOfWeek`, `dateRange`,
|
|
59
|
+
* `dates`, or `recurringPeriods`). Use `from`/`until` to block only part
|
|
60
|
+
* of a day.
|
|
61
|
+
*
|
|
62
|
+
* @category Rules
|
|
63
|
+
*/
|
|
64
|
+
export interface TimeOffOptions {
|
|
65
|
+
/** Who this rule applies to (role name, skill name, or member ID). */
|
|
66
|
+
appliesTo?: string | string[];
|
|
67
|
+
/** Off from this time until end of day. */
|
|
68
|
+
from?: TimeOfDay;
|
|
69
|
+
/** Off from start of day until this time. */
|
|
70
|
+
until?: TimeOfDay;
|
|
71
|
+
/** Restrict to specific days of the week. */
|
|
72
|
+
dayOfWeek?: readonly [DayOfWeek, ...DayOfWeek[]];
|
|
73
|
+
/** Restrict to a date range. */
|
|
74
|
+
dateRange?: {
|
|
75
|
+
start: string;
|
|
76
|
+
end: string;
|
|
77
|
+
};
|
|
78
|
+
/** Restrict to specific dates (YYYY-MM-DD). */
|
|
79
|
+
dates?: string[];
|
|
80
|
+
/** Restrict to recurring calendar periods. */
|
|
81
|
+
recurringPeriods?: [RecurringPeriod, ...RecurringPeriod[]];
|
|
82
|
+
/** Defaults to `"MANDATORY"`. */
|
|
83
|
+
priority?: Priority;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Options for {@link assignTogether}.
|
|
87
|
+
*
|
|
88
|
+
* @category Rules
|
|
89
|
+
*/
|
|
90
|
+
export interface AssignTogetherOptions {
|
|
91
|
+
/** Defaults to `"MANDATORY"`. */
|
|
92
|
+
priority?: Priority;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Context passed to a rule's resolve function during compilation.
|
|
96
|
+
*
|
|
97
|
+
* Contains the declared roles, skills, and member IDs so the resolver
|
|
98
|
+
* can translate user-facing fields (like `appliesTo`) into internal
|
|
99
|
+
* scoping fields.
|
|
100
|
+
*/
|
|
101
|
+
export interface RuleResolveContext {
|
|
102
|
+
readonly roles: ReadonlySet<string>;
|
|
103
|
+
readonly skills: ReadonlySet<string>;
|
|
104
|
+
readonly memberIds: ReadonlySet<string>;
|
|
105
|
+
}
|
|
106
|
+
interface RuleEntryBase {
|
|
107
|
+
readonly _type: "rule";
|
|
108
|
+
readonly _rule: string;
|
|
109
|
+
/**
|
|
110
|
+
* Optional custom resolver. When present, `resolveRules()` calls this
|
|
111
|
+
* instead of the default translation path. Built-in rules that need
|
|
112
|
+
* special field mapping (e.g., `timeOff`, `assignTogether`) attach one;
|
|
113
|
+
* all other rules use the default resolver.
|
|
114
|
+
*/
|
|
115
|
+
readonly _resolve?: (ctx: RuleResolveContext) => Record<string, unknown> & {
|
|
116
|
+
name: string;
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* An opaque rule entry returned by rule functions.
|
|
121
|
+
*
|
|
122
|
+
* @remarks
|
|
123
|
+
* Pass these directly into the `rules` array of {@link ScheduleConfig}.
|
|
124
|
+
* The internal fields are resolved during compilation.
|
|
125
|
+
*/
|
|
126
|
+
export type RuleEntry = RuleEntryBase & Record<string, unknown>;
|
|
127
|
+
/**
|
|
128
|
+
* Creates a rule entry for use in {@link ScheduleConfig.rules}.
|
|
129
|
+
*
|
|
130
|
+
* Built-in rules use the helpers (`maxHoursPerDay`, `timeOff`, etc.).
|
|
131
|
+
* Custom rules can use `defineRule` to create entries that plug into the
|
|
132
|
+
* same resolution and compilation pipeline.
|
|
133
|
+
*
|
|
134
|
+
* @param name - Rule name. Must match a key in the rule factory registry.
|
|
135
|
+
* @param fields - Rule-specific configuration fields.
|
|
136
|
+
* @param resolve - Optional custom resolver. When omitted, the default
|
|
137
|
+
* resolution applies: `appliesTo` is mapped to `roleIds`/`skillIds`/`memberIds`,
|
|
138
|
+
* `dates` is renamed to `specificDates`, and all other fields pass through.
|
|
139
|
+
*/
|
|
140
|
+
export declare function defineRule(name: string, fields: Record<string, unknown>, resolve?: (ctx: RuleResolveContext) => Record<string, unknown> & {
|
|
141
|
+
name: string;
|
|
142
|
+
}): RuleEntry;
|
|
143
|
+
/**
|
|
144
|
+
* Limits hours per day.
|
|
145
|
+
*
|
|
146
|
+
* @example
|
|
147
|
+
* ```typescript
|
|
148
|
+
* maxHoursPerDay(10)
|
|
149
|
+
* maxHoursPerDay(4, { appliesTo: "student", dayOfWeek: weekdays })
|
|
150
|
+
* ```
|
|
151
|
+
*
|
|
152
|
+
* @category Rules
|
|
153
|
+
*/
|
|
154
|
+
export declare function maxHoursPerDay(hours: number, opts?: RuleOptions): RuleEntry;
|
|
155
|
+
/**
|
|
156
|
+
* Limits hours per scheduling week.
|
|
157
|
+
*
|
|
158
|
+
* @example
|
|
159
|
+
* ```typescript
|
|
160
|
+
* maxHoursPerWeek(48)
|
|
161
|
+
* maxHoursPerWeek(20, { appliesTo: "student" })
|
|
162
|
+
* ```
|
|
163
|
+
*
|
|
164
|
+
* @category Rules
|
|
165
|
+
*/
|
|
166
|
+
export declare function maxHoursPerWeek(hours: number, opts?: RuleOptions): RuleEntry;
|
|
167
|
+
/**
|
|
168
|
+
* Minimum hours when assigned on a day.
|
|
169
|
+
*
|
|
170
|
+
* @example
|
|
171
|
+
* ```typescript
|
|
172
|
+
* minHoursPerDay(4)
|
|
173
|
+
* ```
|
|
174
|
+
*
|
|
175
|
+
* @category Rules
|
|
176
|
+
*/
|
|
177
|
+
export declare function minHoursPerDay(hours: number, opts?: EntityOnlyRuleOptions): RuleEntry;
|
|
178
|
+
/**
|
|
179
|
+
* Minimum hours per scheduling week.
|
|
180
|
+
*
|
|
181
|
+
* @example
|
|
182
|
+
* ```typescript
|
|
183
|
+
* minHoursPerWeek(20, { priority: "HIGH" })
|
|
184
|
+
* ```
|
|
185
|
+
*
|
|
186
|
+
* @category Rules
|
|
187
|
+
*/
|
|
188
|
+
export declare function minHoursPerWeek(hours: number, opts?: EntityOnlyRuleOptions): RuleEntry;
|
|
189
|
+
/**
|
|
190
|
+
* Limits working days per scheduling week.
|
|
191
|
+
*
|
|
192
|
+
* @example
|
|
193
|
+
* ```typescript
|
|
194
|
+
* maxDaysPerWeek(5)
|
|
195
|
+
* maxDaysPerWeek(3, { appliesTo: "part-time" })
|
|
196
|
+
* ```
|
|
197
|
+
*
|
|
198
|
+
* @category Rules
|
|
199
|
+
*/
|
|
200
|
+
export declare function maxDaysPerWeek(days: number, opts?: RuleOptions): RuleEntry;
|
|
201
|
+
/**
|
|
202
|
+
* Minimum working days per scheduling week.
|
|
203
|
+
*
|
|
204
|
+
* @example
|
|
205
|
+
* ```typescript
|
|
206
|
+
* minDaysPerWeek(3, { priority: "HIGH" })
|
|
207
|
+
* minDaysPerWeek(5, { appliesTo: "full-time" })
|
|
208
|
+
* ```
|
|
209
|
+
*
|
|
210
|
+
* @category Rules
|
|
211
|
+
*/
|
|
212
|
+
export declare function minDaysPerWeek(days: number, opts?: EntityOnlyRuleOptions): RuleEntry;
|
|
213
|
+
/**
|
|
214
|
+
* Maximum distinct shifts per day.
|
|
215
|
+
*
|
|
216
|
+
* @example
|
|
217
|
+
* ```typescript
|
|
218
|
+
* maxShiftsPerDay(1)
|
|
219
|
+
* maxShiftsPerDay(2, { appliesTo: "student", dayOfWeek: weekend })
|
|
220
|
+
* ```
|
|
221
|
+
*
|
|
222
|
+
* @category Rules
|
|
223
|
+
*/
|
|
224
|
+
export declare function maxShiftsPerDay(shifts: number, opts?: RuleOptions): RuleEntry;
|
|
225
|
+
/**
|
|
226
|
+
* Maximum consecutive working days.
|
|
227
|
+
*
|
|
228
|
+
* @example
|
|
229
|
+
* ```typescript
|
|
230
|
+
* maxConsecutiveDays(5)
|
|
231
|
+
* ```
|
|
232
|
+
*
|
|
233
|
+
* @category Rules
|
|
234
|
+
*/
|
|
235
|
+
export declare function maxConsecutiveDays(days: number, opts?: EntityOnlyRuleOptions): RuleEntry;
|
|
236
|
+
/**
|
|
237
|
+
* Once working, continue for at least this many consecutive days.
|
|
238
|
+
*
|
|
239
|
+
* @example
|
|
240
|
+
* ```typescript
|
|
241
|
+
* minConsecutiveDays(2, { priority: "HIGH" })
|
|
242
|
+
* ```
|
|
243
|
+
*
|
|
244
|
+
* @category Rules
|
|
245
|
+
*/
|
|
246
|
+
export declare function minConsecutiveDays(days: number, opts?: EntityOnlyRuleOptions): RuleEntry;
|
|
247
|
+
/**
|
|
248
|
+
* Minimum rest hours between shifts.
|
|
249
|
+
*
|
|
250
|
+
* @example
|
|
251
|
+
* ```typescript
|
|
252
|
+
* minRestBetweenShifts(10)
|
|
253
|
+
* ```
|
|
254
|
+
*
|
|
255
|
+
* @category Rules
|
|
256
|
+
*/
|
|
257
|
+
export declare function minRestBetweenShifts(hours: number, opts?: EntityOnlyRuleOptions): RuleEntry;
|
|
258
|
+
/**
|
|
259
|
+
* Prefer (`"high"`) or avoid (`"low"`) assigning. Requires `appliesTo`.
|
|
260
|
+
*
|
|
261
|
+
* @example
|
|
262
|
+
* ```typescript
|
|
263
|
+
* preference("high", { appliesTo: "waiter" })
|
|
264
|
+
* preference("low", { appliesTo: "student", dayOfWeek: weekdays })
|
|
265
|
+
* ```
|
|
266
|
+
*
|
|
267
|
+
* @category Rules
|
|
268
|
+
*/
|
|
269
|
+
export declare function preference(level: "high" | "low", opts?: Omit<RuleOptions, "priority">): RuleEntry;
|
|
270
|
+
/**
|
|
271
|
+
* Prefer assigning to shifts at a specific location. Requires `appliesTo`.
|
|
272
|
+
*
|
|
273
|
+
* @example
|
|
274
|
+
* ```typescript
|
|
275
|
+
* preferLocation("terrace", { appliesTo: "alice" })
|
|
276
|
+
* ```
|
|
277
|
+
*
|
|
278
|
+
* @category Rules
|
|
279
|
+
*/
|
|
280
|
+
export declare function preferLocation(locationId: string, opts?: EntityOnlyRuleOptions): RuleEntry;
|
|
281
|
+
/**
|
|
282
|
+
* Guarantees that targeted members appear on the schedule each week.
|
|
283
|
+
*
|
|
284
|
+
* @remarks
|
|
285
|
+
* Use for staffing obligations: salaried employees who are paid regardless
|
|
286
|
+
* of whether they work, or contracted staff who must be rostered. The solver
|
|
287
|
+
* ensures each targeted member has at least one assignment per scheduling week.
|
|
288
|
+
*
|
|
289
|
+
* Always a soft constraint (HIGH priority internally). The schedule still
|
|
290
|
+
* generates when a member genuinely cannot be placed (e.g., full week of
|
|
291
|
+
* absences). Violations surface as validation warnings with distinct
|
|
292
|
+
* messaging from {@link minDaysPerWeek}. Priority is not configurable;
|
|
293
|
+
* the rule name communicates the intent.
|
|
294
|
+
*
|
|
295
|
+
* @example
|
|
296
|
+
* ```typescript
|
|
297
|
+
* mustAssign({ appliesTo: "diana" })
|
|
298
|
+
* mustAssign({ appliesTo: ["diana", "yavuz"] })
|
|
299
|
+
* ```
|
|
300
|
+
*
|
|
301
|
+
* @category Rules
|
|
302
|
+
*/
|
|
303
|
+
export declare function mustAssign(opts?: {
|
|
304
|
+
appliesTo?: string | string[];
|
|
305
|
+
}): RuleEntry;
|
|
306
|
+
/**
|
|
307
|
+
* Block assignments during specified periods.
|
|
308
|
+
* Requires at least one time scope (`dayOfWeek`, `dateRange`, `dates`, or `from`/`until`).
|
|
309
|
+
*
|
|
310
|
+
* @example
|
|
311
|
+
* ```typescript
|
|
312
|
+
* // Full days off
|
|
313
|
+
* timeOff({ appliesTo: "alice", dateRange: { start: "2024-02-01", end: "2024-02-05" } })
|
|
314
|
+
*
|
|
315
|
+
* // Every weekend off
|
|
316
|
+
* timeOff({ appliesTo: "mauro", dayOfWeek: weekend })
|
|
317
|
+
*
|
|
318
|
+
* // Wednesday afternoons off
|
|
319
|
+
* timeOff({ appliesTo: "student", dayOfWeek: ["wednesday"], from: t(14) })
|
|
320
|
+
* ```
|
|
321
|
+
*
|
|
322
|
+
* @category Rules
|
|
323
|
+
*/
|
|
324
|
+
export declare function timeOff(opts: TimeOffOptions): RuleEntry;
|
|
325
|
+
/**
|
|
326
|
+
* Members work the same shifts on days they are both assigned.
|
|
327
|
+
*
|
|
328
|
+
* @example
|
|
329
|
+
* ```typescript
|
|
330
|
+
* assignTogether(["alice", "bob"])
|
|
331
|
+
* assignTogether(["alice", "bob", "charlie"], { priority: "HIGH" })
|
|
332
|
+
* ```
|
|
333
|
+
*
|
|
334
|
+
* @category Rules
|
|
335
|
+
*/
|
|
336
|
+
export declare function assignTogether(memberIds: [string, string, ...string[]], opts?: AssignTogetherOptions): RuleEntry;
|
|
337
|
+
/**
|
|
338
|
+
* Resolves an `appliesTo` value into entity scope fields.
|
|
339
|
+
*
|
|
340
|
+
* Each target string is checked against roles, skills, then member IDs.
|
|
341
|
+
* If all targets resolve to the same namespace, they are combined into one
|
|
342
|
+
* scope field. If they span namespaces, an error is thrown; the caller
|
|
343
|
+
* should use separate rule entries instead.
|
|
344
|
+
*
|
|
345
|
+
* @internal
|
|
346
|
+
*/
|
|
347
|
+
export declare function resolveAppliesTo(appliesTo: string | string[] | undefined, roles: ReadonlySet<string>, skills: ReadonlySet<string>, memberIds: ReadonlySet<string>): {
|
|
348
|
+
memberIds?: [string, ...string[]];
|
|
349
|
+
roleIds?: [string, ...string[]];
|
|
350
|
+
skillIds?: [string, ...string[]];
|
|
351
|
+
};
|
|
352
|
+
export {};
|
|
353
|
+
//# sourceMappingURL=rules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/schedule/rules.ts"],"names":[],"mappings":"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"}
|