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.
Files changed (341) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +22 -24
  3. package/dist/client.d.ts +39 -3
  4. package/dist/client.d.ts.map +1 -1
  5. package/dist/client.js.map +1 -1
  6. package/dist/client.schemas.d.ts +118 -18
  7. package/dist/client.schemas.d.ts.map +1 -1
  8. package/dist/client.schemas.js +110 -6
  9. package/dist/client.schemas.js.map +1 -1
  10. package/dist/client.types.d.ts +63 -7
  11. package/dist/client.types.d.ts.map +1 -1
  12. package/dist/client.types.js.map +1 -1
  13. package/dist/cpsat/cost.d.ts +5 -2
  14. package/dist/cpsat/cost.d.ts.map +1 -1
  15. package/dist/cpsat/cost.js +13 -6
  16. package/dist/cpsat/cost.js.map +1 -1
  17. package/dist/cpsat/model-builder.d.ts +42 -61
  18. package/dist/cpsat/model-builder.d.ts.map +1 -1
  19. package/dist/cpsat/model-builder.js +451 -56
  20. package/dist/cpsat/model-builder.js.map +1 -1
  21. package/dist/cpsat/response.d.ts +19 -7
  22. package/dist/cpsat/response.d.ts.map +1 -1
  23. package/dist/cpsat/response.js +48 -9
  24. package/dist/cpsat/response.js.map +1 -1
  25. package/dist/cpsat/rule-descriptor.d.ts +250 -0
  26. package/dist/cpsat/rule-descriptor.d.ts.map +1 -0
  27. package/dist/cpsat/rule-descriptor.js +51 -0
  28. package/dist/cpsat/rule-descriptor.js.map +1 -0
  29. package/dist/cpsat/rules/artifacts.d.ts +9 -0
  30. package/dist/cpsat/rules/artifacts.d.ts.map +1 -0
  31. package/dist/cpsat/rules/artifacts.js +31 -0
  32. package/dist/cpsat/rules/artifacts.js.map +1 -0
  33. package/dist/cpsat/rules/assign-together.d.ts +18 -20
  34. package/dist/cpsat/rules/assign-together.d.ts.map +1 -1
  35. package/dist/cpsat/rules/assign-together.js +90 -54
  36. package/dist/cpsat/rules/assign-together.js.map +1 -1
  37. package/dist/cpsat/rules/assigned-day.d.ts +12 -0
  38. package/dist/cpsat/rules/assigned-day.d.ts.map +1 -0
  39. package/dist/cpsat/rules/assigned-day.js +43 -0
  40. package/dist/cpsat/rules/assigned-day.js.map +1 -0
  41. package/dist/cpsat/rules/assignment-priority.d.ts +15 -29
  42. package/dist/cpsat/rules/assignment-priority.d.ts.map +1 -1
  43. package/dist/cpsat/rules/assignment-priority.js +47 -50
  44. package/dist/cpsat/rules/assignment-priority.js.map +1 -1
  45. package/dist/cpsat/rules/assignment-terms.d.ts +6 -0
  46. package/dist/cpsat/rules/assignment-terms.d.ts.map +1 -0
  47. package/dist/cpsat/rules/assignment-terms.js +19 -0
  48. package/dist/cpsat/rules/assignment-terms.js.map +1 -0
  49. package/dist/cpsat/rules/concurrent-intervals.d.ts +19 -0
  50. package/dist/cpsat/rules/concurrent-intervals.d.ts.map +1 -0
  51. package/dist/cpsat/rules/concurrent-intervals.js +57 -0
  52. package/dist/cpsat/rules/concurrent-intervals.js.map +1 -0
  53. package/dist/cpsat/rules/cost-utils.d.ts +1 -3
  54. package/dist/cpsat/rules/cost-utils.d.ts.map +1 -1
  55. package/dist/cpsat/rules/cost-utils.js +0 -7
  56. package/dist/cpsat/rules/cost-utils.js.map +1 -1
  57. package/dist/cpsat/rules/day-cost-multiplier.d.ts +10 -10
  58. package/dist/cpsat/rules/day-cost-multiplier.d.ts.map +1 -1
  59. package/dist/cpsat/rules/day-cost-multiplier.js +88 -77
  60. package/dist/cpsat/rules/day-cost-multiplier.js.map +1 -1
  61. package/dist/cpsat/rules/day-cost-surcharge.d.ts +10 -10
  62. package/dist/cpsat/rules/day-cost-surcharge.d.ts.map +1 -1
  63. package/dist/cpsat/rules/day-cost-surcharge.js +76 -65
  64. package/dist/cpsat/rules/day-cost-surcharge.js.map +1 -1
  65. package/dist/cpsat/rules/index.d.ts +30 -21
  66. package/dist/cpsat/rules/index.d.ts.map +1 -1
  67. package/dist/cpsat/rules/index.js +30 -21
  68. package/dist/cpsat/rules/index.js.map +1 -1
  69. package/dist/cpsat/rules/location-preference.d.ts +14 -21
  70. package/dist/cpsat/rules/location-preference.d.ts.map +1 -1
  71. package/dist/cpsat/rules/location-preference.js +45 -45
  72. package/dist/cpsat/rules/location-preference.js.map +1 -1
  73. package/dist/cpsat/rules/max-concurrent-assignments.d.ts +46 -0
  74. package/dist/cpsat/rules/max-concurrent-assignments.d.ts.map +1 -0
  75. package/dist/cpsat/rules/max-concurrent-assignments.js +121 -0
  76. package/dist/cpsat/rules/max-concurrent-assignments.js.map +1 -0
  77. package/dist/cpsat/rules/max-consecutive-days.d.ts +18 -17
  78. package/dist/cpsat/rules/max-consecutive-days.d.ts.map +1 -1
  79. package/dist/cpsat/rules/max-consecutive-days.js +67 -66
  80. package/dist/cpsat/rules/max-consecutive-days.js.map +1 -1
  81. package/dist/cpsat/rules/max-days-of-week-per-period.d.ts +45 -0
  82. package/dist/cpsat/rules/max-days-of-week-per-period.d.ts.map +1 -0
  83. package/dist/cpsat/rules/max-days-of-week-per-period.js +95 -0
  84. package/dist/cpsat/rules/max-days-of-week-per-period.js.map +1 -0
  85. package/dist/cpsat/rules/max-days-week.d.ts +30 -0
  86. package/dist/cpsat/rules/max-days-week.d.ts.map +1 -0
  87. package/dist/cpsat/rules/max-days-week.js +83 -0
  88. package/dist/cpsat/rules/max-days-week.js.map +1 -0
  89. package/dist/cpsat/rules/max-hours-day.d.ts +14 -31
  90. package/dist/cpsat/rules/max-hours-day.d.ts.map +1 -1
  91. package/dist/cpsat/rules/max-hours-day.js +56 -72
  92. package/dist/cpsat/rules/max-hours-day.js.map +1 -1
  93. package/dist/cpsat/rules/max-hours-week.d.ts +15 -31
  94. package/dist/cpsat/rules/max-hours-week.d.ts.map +1 -1
  95. package/dist/cpsat/rules/max-hours-week.js +60 -75
  96. package/dist/cpsat/rules/max-hours-week.js.map +1 -1
  97. package/dist/cpsat/rules/max-shifts-day.d.ts +17 -33
  98. package/dist/cpsat/rules/max-shifts-day.d.ts.map +1 -1
  99. package/dist/cpsat/rules/max-shifts-day.js +57 -73
  100. package/dist/cpsat/rules/max-shifts-day.js.map +1 -1
  101. package/dist/cpsat/rules/min-consecutive-days.d.ts +18 -18
  102. package/dist/cpsat/rules/min-consecutive-days.d.ts.map +1 -1
  103. package/dist/cpsat/rules/min-consecutive-days.js +123 -94
  104. package/dist/cpsat/rules/min-consecutive-days.js.map +1 -1
  105. package/dist/cpsat/rules/min-days-of-week-per-period.d.ts +35 -0
  106. package/dist/cpsat/rules/min-days-of-week-per-period.d.ts.map +1 -0
  107. package/dist/cpsat/rules/min-days-of-week-per-period.js +108 -0
  108. package/dist/cpsat/rules/min-days-of-week-per-period.js.map +1 -0
  109. package/dist/cpsat/rules/min-days-week.d.ts +21 -0
  110. package/dist/cpsat/rules/min-days-week.d.ts.map +1 -0
  111. package/dist/cpsat/rules/min-days-week.js +95 -0
  112. package/dist/cpsat/rules/min-days-week.js.map +1 -0
  113. package/dist/cpsat/rules/min-hours-day.d.ts +14 -17
  114. package/dist/cpsat/rules/min-hours-day.d.ts.map +1 -1
  115. package/dist/cpsat/rules/min-hours-day.js +72 -54
  116. package/dist/cpsat/rules/min-hours-day.js.map +1 -1
  117. package/dist/cpsat/rules/min-hours-week.d.ts +15 -18
  118. package/dist/cpsat/rules/min-hours-week.d.ts.map +1 -1
  119. package/dist/cpsat/rules/min-hours-week.js +75 -57
  120. package/dist/cpsat/rules/min-hours-week.js.map +1 -1
  121. package/dist/cpsat/rules/min-rest-between-shifts.d.ts +14 -17
  122. package/dist/cpsat/rules/min-rest-between-shifts.d.ts.map +1 -1
  123. package/dist/cpsat/rules/min-rest-between-shifts.js +148 -138
  124. package/dist/cpsat/rules/min-rest-between-shifts.js.map +1 -1
  125. package/dist/cpsat/rules/minimize-cost.d.ts +2 -18
  126. package/dist/cpsat/rules/minimize-cost.d.ts.map +1 -1
  127. package/dist/cpsat/rules/minimize-cost.js +151 -163
  128. package/dist/cpsat/rules/minimize-cost.js.map +1 -1
  129. package/dist/cpsat/rules/must-assign.d.ts +12 -0
  130. package/dist/cpsat/rules/must-assign.d.ts.map +1 -0
  131. package/dist/cpsat/rules/must-assign.js +54 -0
  132. package/dist/cpsat/rules/must-assign.js.map +1 -0
  133. package/dist/cpsat/rules/overtime-daily-multiplier.d.ts +6 -10
  134. package/dist/cpsat/rules/overtime-daily-multiplier.d.ts.map +1 -1
  135. package/dist/cpsat/rules/overtime-daily-multiplier.js +118 -112
  136. package/dist/cpsat/rules/overtime-daily-multiplier.js.map +1 -1
  137. package/dist/cpsat/rules/overtime-daily-surcharge.d.ts +6 -11
  138. package/dist/cpsat/rules/overtime-daily-surcharge.d.ts.map +1 -1
  139. package/dist/cpsat/rules/overtime-daily-surcharge.js +104 -99
  140. package/dist/cpsat/rules/overtime-daily-surcharge.js.map +1 -1
  141. package/dist/cpsat/rules/overtime-tiered-multiplier.d.ts +9 -21
  142. package/dist/cpsat/rules/overtime-tiered-multiplier.d.ts.map +1 -1
  143. package/dist/cpsat/rules/overtime-tiered-multiplier.js +181 -199
  144. package/dist/cpsat/rules/overtime-tiered-multiplier.js.map +1 -1
  145. package/dist/cpsat/rules/overtime-weekly-multiplier.d.ts +13 -12
  146. package/dist/cpsat/rules/overtime-weekly-multiplier.d.ts.map +1 -1
  147. package/dist/cpsat/rules/overtime-weekly-multiplier.js +143 -143
  148. package/dist/cpsat/rules/overtime-weekly-multiplier.js.map +1 -1
  149. package/dist/cpsat/rules/overtime-weekly-surcharge.d.ts +7 -11
  150. package/dist/cpsat/rules/overtime-weekly-surcharge.d.ts.map +1 -1
  151. package/dist/cpsat/rules/overtime-weekly-surcharge.js +124 -119
  152. package/dist/cpsat/rules/overtime-weekly-surcharge.js.map +1 -1
  153. package/dist/cpsat/rules/pattern-eligibility.d.ts +6 -0
  154. package/dist/cpsat/rules/pattern-eligibility.d.ts.map +1 -0
  155. package/dist/cpsat/rules/pattern-eligibility.js +16 -0
  156. package/dist/cpsat/rules/pattern-eligibility.js.map +1 -0
  157. package/dist/cpsat/rules/pattern-time.d.ts +5 -0
  158. package/dist/cpsat/rules/pattern-time.d.ts.map +1 -0
  159. package/dist/cpsat/rules/pattern-time.js +20 -0
  160. package/dist/cpsat/rules/pattern-time.js.map +1 -0
  161. package/dist/cpsat/rules/registry.d.ts +217 -27
  162. package/dist/cpsat/rules/registry.d.ts.map +1 -1
  163. package/dist/cpsat/rules/registry.js +98 -31
  164. package/dist/cpsat/rules/registry.js.map +1 -1
  165. package/dist/cpsat/rules/resolver.d.ts +9 -7
  166. package/dist/cpsat/rules/resolver.d.ts.map +1 -1
  167. package/dist/cpsat/rules/resolver.js +19 -18
  168. package/dist/cpsat/rules/resolver.js.map +1 -1
  169. package/dist/cpsat/rules/role-preference.d.ts +24 -0
  170. package/dist/cpsat/rules/role-preference.d.ts.map +1 -0
  171. package/dist/cpsat/rules/role-preference.js +72 -0
  172. package/dist/cpsat/rules/role-preference.js.map +1 -0
  173. package/dist/cpsat/rules/rules.types.d.ts +93 -17
  174. package/dist/cpsat/rules/rules.types.d.ts.map +1 -1
  175. package/dist/cpsat/rules/scope.types.d.ts +25 -12
  176. package/dist/cpsat/rules/scope.types.d.ts.map +1 -1
  177. package/dist/cpsat/rules/scope.types.js +14 -19
  178. package/dist/cpsat/rules/scope.types.js.map +1 -1
  179. package/dist/cpsat/rules/target-days-week.d.ts +31 -0
  180. package/dist/cpsat/rules/target-days-week.d.ts.map +1 -0
  181. package/dist/cpsat/rules/target-days-week.js +80 -0
  182. package/dist/cpsat/rules/target-days-week.js.map +1 -0
  183. package/dist/cpsat/rules/target-peak-concurrent-assignments.d.ts +33 -0
  184. package/dist/cpsat/rules/target-peak-concurrent-assignments.d.ts.map +1 -0
  185. package/dist/cpsat/rules/target-peak-concurrent-assignments.js +146 -0
  186. package/dist/cpsat/rules/target-peak-concurrent-assignments.js.map +1 -0
  187. package/dist/cpsat/rules/time-cost-surcharge.d.ts +15 -14
  188. package/dist/cpsat/rules/time-cost-surcharge.d.ts.map +1 -1
  189. package/dist/cpsat/rules/time-cost-surcharge.js +82 -96
  190. package/dist/cpsat/rules/time-cost-surcharge.js.map +1 -1
  191. package/dist/cpsat/rules/time-off.d.ts +21 -57
  192. package/dist/cpsat/rules/time-off.d.ts.map +1 -1
  193. package/dist/cpsat/rules/time-off.js +114 -127
  194. package/dist/cpsat/rules/time-off.js.map +1 -1
  195. package/dist/cpsat/rules/variables.d.ts +4 -0
  196. package/dist/cpsat/rules/variables.d.ts.map +1 -0
  197. package/dist/cpsat/rules/variables.js +10 -0
  198. package/dist/cpsat/rules/variables.js.map +1 -0
  199. package/dist/cpsat/rules.d.ts +20 -3
  200. package/dist/cpsat/rules.d.ts.map +1 -1
  201. package/dist/cpsat/rules.js +19 -2
  202. package/dist/cpsat/rules.js.map +1 -1
  203. package/dist/cpsat/semantic-time.d.ts +7 -6
  204. package/dist/cpsat/semantic-time.d.ts.map +1 -1
  205. package/dist/cpsat/semantic-time.js +15 -28
  206. package/dist/cpsat/semantic-time.js.map +1 -1
  207. package/dist/cpsat/types.d.ts +47 -4
  208. package/dist/cpsat/types.d.ts.map +1 -1
  209. package/dist/cpsat/types.js +24 -1
  210. package/dist/cpsat/types.js.map +1 -1
  211. package/dist/cpsat/utils.d.ts +23 -6
  212. package/dist/cpsat/utils.d.ts.map +1 -1
  213. package/dist/cpsat/utils.js +76 -15
  214. package/dist/cpsat/utils.js.map +1 -1
  215. package/dist/cpsat/validation-reporter.d.ts +6 -2
  216. package/dist/cpsat/validation-reporter.d.ts.map +1 -1
  217. package/dist/cpsat/validation-reporter.js +122 -10
  218. package/dist/cpsat/validation-reporter.js.map +1 -1
  219. package/dist/cpsat/validation.types.d.ts +21 -10
  220. package/dist/cpsat/validation.types.d.ts.map +1 -1
  221. package/dist/datetime.utils.d.ts +7 -13
  222. package/dist/datetime.utils.d.ts.map +1 -1
  223. package/dist/datetime.utils.js +29 -36
  224. package/dist/datetime.utils.js.map +1 -1
  225. package/dist/index.d.ts +15 -9
  226. package/dist/index.d.ts.map +1 -1
  227. package/dist/index.js +11 -4
  228. package/dist/index.js.map +1 -1
  229. package/dist/schedule/cost.d.ts +192 -0
  230. package/dist/schedule/cost.d.ts.map +1 -0
  231. package/dist/schedule/cost.js +151 -0
  232. package/dist/schedule/cost.js.map +1 -0
  233. package/dist/schedule/coverage.d.ts +114 -0
  234. package/dist/schedule/coverage.d.ts.map +1 -0
  235. package/dist/schedule/coverage.js +56 -0
  236. package/dist/schedule/coverage.js.map +1 -0
  237. package/dist/schedule/definition.d.ts +346 -0
  238. package/dist/schedule/definition.d.ts.map +1 -0
  239. package/dist/schedule/definition.js +668 -0
  240. package/dist/schedule/definition.js.map +1 -0
  241. package/dist/schedule/index.d.ts +67 -0
  242. package/dist/schedule/index.d.ts.map +1 -0
  243. package/dist/schedule/index.js +69 -0
  244. package/dist/schedule/index.js.map +1 -0
  245. package/dist/schedule/rules.d.ts +678 -0
  246. package/dist/schedule/rules.d.ts.map +1 -0
  247. package/dist/schedule/rules.js +554 -0
  248. package/dist/schedule/rules.js.map +1 -0
  249. package/dist/schedule/shift-patterns.d.ts +17 -0
  250. package/dist/schedule/shift-patterns.d.ts.map +1 -0
  251. package/dist/schedule/shift-patterns.js +24 -0
  252. package/dist/schedule/shift-patterns.js.map +1 -0
  253. package/dist/schedule/time-periods.d.ts +79 -0
  254. package/dist/schedule/time-periods.d.ts.map +1 -0
  255. package/dist/schedule/time-periods.js +101 -0
  256. package/dist/schedule/time-periods.js.map +1 -0
  257. package/dist/types.d.ts +67 -3
  258. package/dist/types.d.ts.map +1 -1
  259. package/dist/types.js +64 -0
  260. package/dist/types.js.map +1 -1
  261. package/package.json +8 -14
  262. package/solver/src/solver/models.py +41 -4
  263. package/solver/src/solver/solver.py +546 -157
  264. package/solver/tests/test_solver.py +363 -7
  265. package/src/client.schemas.ts +127 -10
  266. package/src/client.ts +3 -0
  267. package/src/client.types.ts +73 -7
  268. package/src/cpsat/cost.ts +17 -7
  269. package/src/cpsat/model-builder.ts +614 -129
  270. package/src/cpsat/response.ts +57 -13
  271. package/src/cpsat/rule-descriptor.ts +311 -0
  272. package/src/cpsat/rules/artifacts.ts +56 -0
  273. package/src/cpsat/rules/assign-together.ts +104 -69
  274. package/src/cpsat/rules/assigned-day.ts +70 -0
  275. package/src/cpsat/rules/assignment-priority.ts +54 -58
  276. package/src/cpsat/rules/assignment-terms.ts +43 -0
  277. package/src/cpsat/rules/concurrent-intervals.ts +93 -0
  278. package/src/cpsat/rules/cost-utils.ts +1 -9
  279. package/src/cpsat/rules/day-cost-multiplier.ts +101 -81
  280. package/src/cpsat/rules/day-cost-surcharge.ts +91 -70
  281. package/src/cpsat/rules/index.ts +30 -21
  282. package/src/cpsat/rules/location-preference.ts +47 -52
  283. package/src/cpsat/rules/max-concurrent-assignments.ts +170 -0
  284. package/src/cpsat/rules/max-consecutive-days.ts +74 -91
  285. package/src/cpsat/rules/max-days-of-week-per-period.ts +127 -0
  286. package/src/cpsat/rules/max-days-week.ts +117 -0
  287. package/src/cpsat/rules/max-hours-day.ts +64 -84
  288. package/src/cpsat/rules/max-hours-week.ts +74 -90
  289. package/src/cpsat/rules/max-shifts-day.ts +65 -85
  290. package/src/cpsat/rules/min-consecutive-days.ts +161 -127
  291. package/src/cpsat/rules/min-days-of-week-per-period.ts +144 -0
  292. package/src/cpsat/rules/min-days-week.ts +122 -0
  293. package/src/cpsat/rules/min-hours-day.ts +79 -58
  294. package/src/cpsat/rules/min-hours-week.ts +87 -62
  295. package/src/cpsat/rules/min-rest-between-shifts.ts +191 -178
  296. package/src/cpsat/rules/minimize-cost.ts +175 -188
  297. package/src/cpsat/rules/must-assign.ts +71 -0
  298. package/src/cpsat/rules/overtime-daily-multiplier.ts +158 -140
  299. package/src/cpsat/rules/overtime-daily-surcharge.ts +141 -126
  300. package/src/cpsat/rules/overtime-tiered-multiplier.ts +234 -253
  301. package/src/cpsat/rules/overtime-weekly-multiplier.ts +183 -175
  302. package/src/cpsat/rules/overtime-weekly-surcharge.ts +161 -150
  303. package/src/cpsat/rules/pattern-eligibility.ts +26 -0
  304. package/src/cpsat/rules/pattern-time.ts +30 -0
  305. package/src/cpsat/rules/registry.ts +140 -56
  306. package/src/cpsat/rules/resolver.ts +58 -30
  307. package/src/cpsat/rules/role-preference.ts +92 -0
  308. package/src/cpsat/rules/rules.types.ts +92 -17
  309. package/src/cpsat/rules/scope.types.ts +32 -27
  310. package/src/cpsat/rules/target-days-week.ts +105 -0
  311. package/src/cpsat/rules/target-peak-concurrent-assignments.ts +212 -0
  312. package/src/cpsat/rules/time-cost-surcharge.ts +116 -122
  313. package/src/cpsat/rules/time-off.ts +154 -163
  314. package/src/cpsat/rules/variables.ts +11 -0
  315. package/src/cpsat/rules.ts +43 -17
  316. package/src/cpsat/semantic-time.ts +29 -43
  317. package/src/cpsat/types.ts +53 -4
  318. package/src/cpsat/utils.ts +92 -20
  319. package/src/cpsat/validation-reporter.ts +170 -19
  320. package/src/cpsat/validation.types.ts +22 -11
  321. package/src/datetime.utils.ts +45 -44
  322. package/src/index.ts +72 -15
  323. package/src/schedule/cost.ts +221 -0
  324. package/src/schedule/coverage.ts +164 -0
  325. package/src/schedule/definition.ts +1447 -0
  326. package/src/schedule/index.ts +132 -0
  327. package/src/schedule/rules.ts +1028 -0
  328. package/src/schedule/shift-patterns.ts +29 -0
  329. package/src/schedule/time-periods.ts +120 -0
  330. package/src/types.ts +114 -2
  331. package/dist/llms.d.ts +0 -2
  332. package/dist/llms.d.ts.map +0 -1
  333. package/dist/llms.js +0 -3
  334. package/dist/llms.js.map +0 -1
  335. package/dist/schedule.d.ts +0 -917
  336. package/dist/schedule.d.ts.map +0 -1
  337. package/dist/schedule.js +0 -1323
  338. package/dist/schedule.js.map +0 -1
  339. package/llms.txt +0 -758
  340. package/src/llms.ts +0 -3
  341. 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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"}